1 diff -ur bsd-finger-0.17/finger/util.c bsd-finger-0.17-iconv/finger/util.c
2 --- bsd-finger-0.17/finger/util.c 2008-10-04 00:48:15.000000000 +0200
3 +++ bsd-finger-0.17-iconv/finger/util.c 2008-10-04 00:47:47.000000000 +0200
8 +#define HAVE_LANGINFO_H 1
11 +#if defined(HAVE_LANGINFO_H) && defined(HAVE_ICONV)
12 +#include <langinfo.h>
16 #define HBITS 8 /* number of bits in hash code */
17 #define HSIZE (1 << 8) /* hash table size */
18 #define HMASK (HSIZE - 1) /* hash code mask */
24 + char *rname, *irname = NULL;
26 strncpy(tbuf, pw->pw_gecos, TBUFLEN);
27 tbuf[TBUFLEN-1] = 0; /* guarantee null termination */
32 +#if defined(HAVE_LANGINFO_H) && defined(HAVE_ICONV)
33 + irname = malloc(2*strlen(rname) + 1);
35 + strcpy(irname, rname);
38 for (p = strtok(rname, "\t "); p && !rv; p = strtok(NULL, "\t ")) {
39 if (!strcasecmp(p, user))
43 +#if defined(HAVE_LANGINFO_H) && defined(HAVE_ICONV)
44 + if (!rv && has_locale && irname) {
45 + char *iuser, *inbuf, *outbuf;
49 + iuser = malloc(2*strlen(user) + 1);
52 + strcpy(rname, irname);
53 + memset(iuser, 0, 2*strlen(user) + 1);
54 + memset(irname, 0, 2*strlen(rname) + 1);
56 + cd = iconv_open("ascii//translit", nl_langinfo(CODESET));
57 + if (cd == (iconv_t)-1)
61 + ol = 2*strlen(rname);
64 + i = iconv(cd, &inbuf, &il, &outbuf, &ol);
67 + ol = 2*strlen(user);
68 + inbuf = (char *)user;
70 + j = iconv(cd, &inbuf, &il, &outbuf, &ol);
72 + if (i < 0 || j < 0 )
75 + for (p = strtok(irname, "\t "); p && !rv; p = strtok(NULL, "\t ")) {
76 + if (!strcasecmp(p, iuser))