--- webalizer.c.orig 2006-02-22 17:45:16.000000000 +0900 +++ webalizer.c 2006-02-22 17:46:00.000000000 +0900 @@ -86,6 +86,7 @@ void clear_month(); /* clear monthly stuff */ char *unescape(char *); /* unescape URL's */ +void unutf8(char *); /* convert UTF-8 */ char from_hex(char); /* convert hex to dec */ void print_opts(char *); /* print options */ void print_version(); /* duhh... */ @@ -751,6 +752,7 @@ { /* Save query portion in log.rec.srchstr */ strncpy(log_rec.srchstr,cp1,MAXSRCH); + unutf8(log_rec.srchstr); *cp1++='\0'; break; } @@ -1793,6 +1795,32 @@ return str; /* return the string */ } +#include + +void unutf8(char *str) +{ + iconv_t cd; + char inbuf[MAXSRCH]; + char outbuf[MAXSRCH]; + char *inp; + char *outp; + size_t in; + size_t out; + size_t result; + + inp = (char *)inbuf; + outp = (char *)outbuf; + in = MAXSRCH; + out = MAXSRCH; + + cd = iconv_open("euc-kr", "utf-8"); + strncpy(inbuf, str, MAXSRCH); + result = iconv(cd, &inp, &in, &outp, &out); + if (result != (size_t)(-1)) + strncpy(str, outbuf, MAXSRCH); + iconv_close(cd); +} + /*********************************************/ /* SRCH_STRING - get search strings from ref */ /*********************************************/