diff options
| author | erdgeist <> | 2003-11-15 19:03:54 +0000 |
|---|---|---|
| committer | erdgeist <> | 2003-11-15 19:03:54 +0000 |
| commit | 3c75b863a628adc020062e773d7edf5bac0649fb (patch) | |
| tree | da4ea52fbb2b6cbedb6cbc3d6988bcb3c1187e15 | |
| parent | b64a6c9bc6241e77e214fa5e43975fb0fa20b336 (diff) | |
UTF-8 autodetection, some gcc warnings
| -rwxr-xr-x | vchat-client.c | 40 | ||||
| -rwxr-xr-x | vchat-config.h | 48 | ||||
| -rwxr-xr-x | vchat-messages.h | 7 | ||||
| -rwxr-xr-x | vchat-protocol.c | 15 | ||||
| -rwxr-xr-x | vchat-ui.c | 6 | ||||
| -rwxr-xr-x | vchat.h | 5 |
6 files changed, 77 insertions, 44 deletions
diff --git a/vchat-client.c b/vchat-client.c index 2fc1ea9..a3e7fd2 100755 --- a/vchat-client.c +++ b/vchat-client.c | |||
| @@ -26,6 +26,10 @@ | |||
| 26 | #include <signal.h> | 26 | #include <signal.h> |
| 27 | #include <readline/readline.h> | 27 | #include <readline/readline.h> |
| 28 | #include <openssl/ssl.h> | 28 | #include <openssl/ssl.h> |
| 29 | #ifndef NO_LOCALE | ||
| 30 | #include <locale.h> | ||
| 31 | #include <langinfo.h> | ||
| 32 | #endif | ||
| 29 | #include "vchat.h" | 33 | #include "vchat.h" |
| 30 | 34 | ||
| 31 | /* version of this module */ | 35 | /* version of this module */ |
| @@ -278,8 +282,8 @@ setstroption (confopt option, unsigned char *string) | |||
| 278 | configoptions[i].value = strdup(string); | 282 | configoptions[i].value = strdup(string); |
| 279 | else | 283 | else |
| 280 | configoptions[i].value = NULL; | 284 | configoptions[i].value = NULL; |
| 281 | if (configoptions[i].localvar) | 285 | if (configoptions[i].localvar.pstr) |
| 282 | *configoptions[i].localvar = configoptions[i].value; | 286 | *configoptions[i].localvar.pstr = configoptions[i].value; |
| 283 | } | 287 | } |
| 284 | } | 288 | } |
| 285 | 289 | ||
| @@ -294,17 +298,19 @@ setnoption (unsigned char *name, unsigned char *string) | |||
| 294 | for (i = 0; configoptions[i].type != CO_NIL; i++) | 298 | for (i = 0; configoptions[i].type != CO_NIL; i++) |
| 295 | if (!strcmp(configoptions[i].varname,name)) { | 299 | if (!strcmp(configoptions[i].varname,name)) { |
| 296 | if (configoptions[i].type == CO_STR) { | 300 | if (configoptions[i].type == CO_STR) { |
| 297 | if (configoptions[i].value) | 301 | if (configoptions[i].value) |
| 298 | free(configoptions[i].value); | 302 | free(configoptions[i].value); |
| 299 | if (string) | 303 | if (string) |
| 300 | configoptions[i].value = strdup(string); | 304 | configoptions[i].value = strdup(string); |
| 301 | else | 305 | else |
| 302 | configoptions[i].value = NULL; | 306 | configoptions[i].value = NULL; |
| 303 | } else if (configoptions[i].type == CO_INT) { | 307 | if (configoptions[i].localvar.pstr) |
| 304 | configoptions[i].value = (char *) atoi(string); | 308 | *configoptions[i].localvar.pstr = configoptions[i].value; |
| 305 | } | 309 | } else if (configoptions[i].type == CO_INT) { |
| 306 | if (configoptions[i].localvar) | 310 | configoptions[i].value = (char *) atoi(string); |
| 307 | *configoptions[i].localvar = configoptions[i].value; | 311 | if (configoptions[i].localvar.pint) |
| 312 | *configoptions[i].localvar.pint = (int)configoptions[i].value; | ||
| 313 | } | ||
| 308 | } | 314 | } |
| 309 | } | 315 | } |
| 310 | 316 | ||
| @@ -337,8 +343,8 @@ setintoption (confopt option, int value) | |||
| 337 | for (i = 0; configoptions[i].type != CO_NIL; i++) | 343 | for (i = 0; configoptions[i].type != CO_NIL; i++) |
| 338 | if ((configoptions[i].id == option) && (configoptions[i].type == CO_INT)) { | 344 | if ((configoptions[i].id == option) && (configoptions[i].type == CO_INT)) { |
| 339 | configoptions[i].value = (char *) value; | 345 | configoptions[i].value = (char *) value; |
| 340 | if (configoptions[i].localvar) | 346 | if (configoptions[i].localvar.pint) |
| 341 | *configoptions[i].localvar = configoptions[i].value; | 347 | *configoptions[i].localvar.pint = (int)configoptions[i].value; |
| 342 | } | 348 | } |
| 343 | } | 349 | } |
| 344 | 350 | ||
| @@ -472,6 +478,10 @@ main (int argc, char **argv) | |||
| 472 | int pchar; | 478 | int pchar; |
| 473 | int cmdsunparsed = 1; | 479 | int cmdsunparsed = 1; |
| 474 | 480 | ||
| 481 | #ifndef NO_LOCALE | ||
| 482 | setlocale(LC_ALL,""); | ||
| 483 | #endif | ||
| 484 | |||
| 475 | loadconfig (GLOBAL_CONFIG_FILE); | 485 | loadconfig (GLOBAL_CONFIG_FILE); |
| 476 | loadconfig (getstroption (CF_CONFIGFILE)); | 486 | loadconfig (getstroption (CF_CONFIGFILE)); |
| 477 | 487 | ||
diff --git a/vchat-config.h b/vchat-config.h index beb4579..856b00c 100755 --- a/vchat-config.h +++ b/vchat-config.h | |||
| @@ -29,30 +29,30 @@ extern unsigned int hscroll; | |||
| 29 | 29 | ||
| 30 | static volatile configoption configoptions[] = { | 30 | static volatile configoption configoptions[] = { |
| 31 | /* config-option type name in file default value value localvar */ | 31 | /* config-option type name in file default value value localvar */ |
| 32 | {CF_NICK, CO_STR, "nick", NULL, NULL, &nick }, | 32 | {CF_NICK, CO_STR, "nick", NULL, NULL, { .pstr = &nick } }, |
| 33 | {CF_FROM, CO_STR, "from", "vc-alpha-0.16", NULL, NULL }, | 33 | {CF_FROM, CO_STR, "from", "vc-alpha-0.16", NULL, { NULL } }, |
| 34 | {CF_SERVERHOST, CO_STR, "host", "pulse.flatline.de",NULL, NULL }, | 34 | {CF_SERVERHOST, CO_STR, "host", "pulse.flatline.de",NULL, { NULL } }, |
| 35 | {CF_SERVERPORT, CO_INT, "port", (char *) 2325, (char *)-1, NULL }, | 35 | {CF_SERVERPORT, CO_INT, "port", (char *) 2325, (char *)-1, { NULL } }, |
| 36 | {CF_CIPHERSUITE, CO_STR, "ciphers", "HIGH:MEDIUM", NULL, NULL }, | 36 | {CF_CIPHERSUITE, CO_STR, "ciphers", "HIGH:MEDIUM", NULL, { NULL } }, |
| 37 | {CF_CONFIGFILE, CO_STR, "conffile", "~/.vchat/config", NULL, NULL }, | 37 | {CF_CONFIGFILE, CO_STR, "conffile", "~/.vchat/config", NULL, { NULL } }, |
| 38 | {CF_CERTFILE, CO_STR, "certfile", "~/.vchat/cert", NULL, NULL }, | 38 | {CF_CERTFILE, CO_STR, "certfile", "~/.vchat/cert", NULL, { NULL } }, |
| 39 | {CF_KEYFILE, CO_STR, "keyfile", "~/.vchat/key", NULL, NULL }, | 39 | {CF_KEYFILE, CO_STR, "keyfile", "~/.vchat/key", NULL, { NULL } }, |
| 40 | {CF_FORMFILE, CO_STR, "formatfile", "~/.vchat/formats", NULL, NULL }, | 40 | {CF_FORMFILE, CO_STR, "formatfile", "~/.vchat/formats", NULL, { NULL } }, |
| 41 | {CF_LOGFILE, CO_STR, "logfile", "~/.vchat/log", NULL, NULL, }, | 41 | {CF_LOGFILE, CO_STR, "logfile", "~/.vchat/log", NULL, { NULL } }, |
| 42 | {CF_ENCODING, CO_STR, "encoding", NULL, NULL, &encoding }, | 42 | {CF_ENCODING, CO_STR, "encoding", NULL, NULL, { .pstr = &encoding }}, |
| 43 | {CF_USESSL, CO_INT, "usessl", (char *) 1, (char *)-1, (unsigned char **)&usessl }, | 43 | {CF_USESSL, CO_INT, "usessl", (char *) 1, (char *)-1, { .pint = &usessl } }, |
| 44 | {CF_USECERT, CO_INT, "usecert", (char *) 1, (char *)-1, NULL }, | 44 | {CF_USECERT, CO_INT, "usecert", (char *) 1, (char *)-1, { NULL } }, |
| 45 | {CF_USETIME, CO_INT, "usetime", (char *) 1, (char *)-1, (unsigned char **)&usetime }, | 45 | {CF_USETIME, CO_INT, "usetime", (char *) 1, (char *)-1, { .pint = &usetime } }, |
| 46 | {CF_USETOPIC, CO_INT, "usetopicbar",(char *) 1, (char *)-1, NULL }, | 46 | {CF_USETOPIC, CO_INT, "usetopicbar",(char *) 1, (char *)-1, { NULL } }, |
| 47 | {CF_PRIVHEIGHT, CO_INT, "messages", (char *) 0, (char *)-1, NULL }, | 47 | {CF_PRIVHEIGHT, CO_INT, "messages", (char *) 0, (char *)-1, { NULL } }, |
| 48 | {CF_HSCROLL, CO_INT, "hscroll", (char *) 5, (char *)-1, (unsigned char **)&hscroll }, | 48 | {CF_HSCROLL, CO_INT, "hscroll", (char *) 5, (char *)-1, { .pint = &hscroll } }, |
| 49 | {CF_CHANNEL, CO_INT, "channel", (char *) 0, (char *)-1, NULL }, | 49 | {CF_CHANNEL, CO_INT, "channel", (char *) 0, (char *)-1, { NULL } }, |
| 50 | {CF_SCROLLBPRIV, CO_INT, "privscrollb",(char *) 2048, (char *)-1, NULL }, | 50 | {CF_SCROLLBPRIV, CO_INT, "privscrollb",(char *) 2048, (char *)-1, { NULL } }, |
| 51 | {CF_SCROLLBACK, CO_INT, "scrollback", (char *) 8192, (char *)-1, NULL }, | 51 | {CF_SCROLLBACK, CO_INT, "scrollback", (char *) 8192, (char *)-1, { NULL } }, |
| 52 | {CF_SCROLLBPRIVT,CO_INT, "privscrollt",(char *) 0, (char *)-1, NULL }, | 52 | {CF_SCROLLBPRIVT,CO_INT, "privscrollt",(char *) 0, (char *)-1, { NULL } }, |
| 53 | {CF_SCROLLBACKT, CO_INT, "scrolltime", (char *) 86400, (char *)-1, NULL }, | 53 | {CF_SCROLLBACKT, CO_INT, "scrolltime", (char *) 86400, (char *)-1, { NULL } }, |
| 54 | {CF_KEEPLOG, CO_INT, "keeplog", (char *) 0, (char *)-1, NULL }, | 54 | {CF_KEEPLOG, CO_INT, "keeplog", (char *) 0, (char *)-1, { NULL } }, |
| 55 | {CF_NIL, CO_NIL, NULL, NULL, NULL, NULL }, | 55 | {CF_NIL, CO_NIL, NULL, NULL, NULL, { NULL } }, |
| 56 | }; | 56 | }; |
| 57 | 57 | ||
| 58 | /* | 58 | /* |
diff --git a/vchat-messages.h b/vchat-messages.h index 477d791..0902e88 100755 --- a/vchat-messages.h +++ b/vchat-messages.h | |||
| @@ -64,7 +64,7 @@ servermessage servermessages[] = { | |||
| 64 | {"169", SM_INFO, NULL, NULL}, | 64 | {"169", SM_INFO, NULL, NULL}, |
| 65 | /* 201 <protocol> <server-name> | 65 | /* 201 <protocol> <server-name> |
| 66 | Server signon */ | 66 | Server signon */ |
| 67 | {"201", SM_IGNORE, NULL, NULL}, | 67 | {"201", SM_IGNORE, serverlogin, NULL}, |
| 68 | /* 211 <nickname> | 68 | /* 211 <nickname> |
| 69 | User signon */ | 69 | User signon */ |
| 70 | {"211", SM_USERINFO, usersignon, NULL}, | 70 | {"211", SM_USERINFO, usersignon, NULL}, |
| @@ -83,6 +83,9 @@ servermessage servermessages[] = { | |||
| 83 | /* 241 <oldnick> <newnick> | 83 | /* 241 <oldnick> <newnick> |
| 84 | Nickname change */ | 84 | Nickname change */ |
| 85 | {"241", SM_USERINFO, usernickchange, NULL}, | 85 | {"241", SM_USERINFO, usernickchange, NULL}, |
| 86 | /* 269 Encoding set to <encoding> | ||
| 87 | answer to .e */ | ||
| 88 | {"269", SM_INFO, NULL, NULL}, | ||
| 86 | /* 120 <registered nick> */ | 89 | /* 120 <registered nick> */ |
| 87 | {"120", SM_INFO, login, NULL}, | 90 | {"120", SM_INFO, login, NULL}, |
| 88 | /* 121 You're not logged in */ | 91 | /* 121 You're not logged in */ |
| @@ -117,6 +120,8 @@ servermessage servermessages[] = { | |||
| 117 | {"414", SM_ERROR, NULL, NULL}, | 120 | {"414", SM_ERROR, NULL, NULL}, |
| 118 | /* 415 Nickname reserved */ | 121 | /* 415 Nickname reserved */ |
| 119 | {"415", SM_ERROR, nickerr, NULL}, | 122 | {"415", SM_ERROR, nickerr, NULL}, |
| 123 | /* 469 I'm very sorry, FNORD is not know to this system, try .E for a * list */ | ||
| 124 | {"469", SM_ERROR, NULL, NULL}, | ||
| 120 | /* 501 Disconnected by own request */ | 125 | /* 501 Disconnected by own request */ |
| 121 | {"501", SM_INFO, NULL, NULL}, | 126 | {"501", SM_INFO, NULL, NULL}, |
| 122 | /* 502 Disconnected by operator */ | 127 | /* 502 Disconnected by operator */ |
diff --git a/vchat-protocol.c b/vchat-protocol.c index 5113365..f1e8b5c 100755 --- a/vchat-protocol.c +++ b/vchat-protocol.c | |||
| @@ -26,6 +26,10 @@ | |||
| 26 | #include <readline/readline.h> | 26 | #include <readline/readline.h> |
| 27 | #include <openssl/ssl.h> | 27 | #include <openssl/ssl.h> |
| 28 | #include <openssl/err.h> | 28 | #include <openssl/err.h> |
| 29 | #ifndef NO_LOCALE | ||
| 30 | #include <locale.h> | ||
| 31 | #include <langinfo.h> | ||
| 32 | #endif | ||
| 29 | 33 | ||
| 30 | /* local includes */ | 34 | /* local includes */ |
| 31 | #include "vchat.h" | 35 | #include "vchat.h" |
| @@ -62,6 +66,7 @@ static void anonlogin (unsigned char *message); | |||
| 62 | static void topicinfo (unsigned char *message); | 66 | static void topicinfo (unsigned char *message); |
| 63 | static void pubaction (unsigned char *message); | 67 | static void pubaction (unsigned char *message); |
| 64 | static void pubthoughts (unsigned char *message); | 68 | static void pubthoughts (unsigned char *message); |
| 69 | static void serverlogin (unsigned char *message); | ||
| 65 | static void idleprompt (unsigned char *message); | 70 | static void idleprompt (unsigned char *message); |
| 66 | static void topicchange (unsigned char *message); | 71 | static void topicchange (unsigned char *message); |
| 67 | static void pmnotsent (unsigned char *message); | 72 | static void pmnotsent (unsigned char *message); |
| @@ -408,6 +413,16 @@ pubthoughts (unsigned char *message) | |||
| 408 | writechan (tmpstr); | 413 | writechan (tmpstr); |
| 409 | } | 414 | } |
| 410 | 415 | ||
| 416 | /* parse and handle server logon */ | ||
| 417 | static void | ||
| 418 | serverlogin (unsigned char *message) | ||
| 419 | { | ||
| 420 | #ifndef NO_LOCALE | ||
| 421 | int utf8=!strcmp(nl_langinfo(CODESET), "UTF-8"); | ||
| 422 | if (utf8) | ||
| 423 | networkoutput(".e utf8"); | ||
| 424 | #endif | ||
| 425 | } | ||
| 411 | /* parse and handle an idle message | 426 | /* parse and handle an idle message |
| 412 | * format: 305 | 427 | * format: 305 |
| 413 | * vars: %s message */ | 428 | * vars: %s message */ |
| @@ -1539,14 +1539,14 @@ clearfilters( char colour ) { | |||
| 1539 | void | 1539 | void |
| 1540 | removefilter( unsigned char *tail ) { | 1540 | removefilter( unsigned char *tail ) { |
| 1541 | int rmv = 0, val; | 1541 | int rmv = 0, val; |
| 1542 | unsigned char* end; | 1542 | char* end; |
| 1543 | 1543 | ||
| 1544 | flushout( ); | 1544 | flushout( ); |
| 1545 | 1545 | ||
| 1546 | rmv = removefromfilterlist( test_simplerm, (void *)tail, 0 ); | 1546 | rmv = removefromfilterlist( test_simplerm, (void *)tail, 0 ); |
| 1547 | if(!rmv) { | 1547 | if(!rmv) { |
| 1548 | val = strtol((char*)tail, (char **)&end, 10); | 1548 | val = strtol((char*)tail, &end, 10); |
| 1549 | if( (tail != end) && (!*end) ) | 1549 | if( (tail != (unsigned char*)end) && (!*end) ) |
| 1550 | rmv = removefromfilterlist( test_numericrm, (void *)val, 0); | 1550 | rmv = removefromfilterlist( test_numericrm, (void *)val, 0); |
| 1551 | } | 1551 | } |
| 1552 | 1552 | ||
| @@ -59,7 +59,10 @@ struct configoption | |||
| 59 | unsigned char *varname; | 59 | unsigned char *varname; |
| 60 | unsigned char *defaultvalue; | 60 | unsigned char *defaultvalue; |
| 61 | unsigned char *value; | 61 | unsigned char *value; |
| 62 | unsigned char **localvar; | 62 | union { |
| 63 | unsigned char **pstr; | ||
| 64 | int *pint; | ||
| 65 | } localvar; | ||
| 63 | }; | 66 | }; |
| 64 | 67 | ||
| 65 | typedef struct configoption configoption; | 68 | typedef struct configoption configoption; |
