summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMakefile4
-rwxr-xr-xsample-count.fmt2
-rwxr-xr-xsample-devlog.fmt2
-rwxr-xr-xsample-erdgeist.fmt3
-rwxr-xr-xsample-mAsq.fmt2
-rwxr-xr-xvchat-client.c36
-rwxr-xr-xvchat-config.h4
-rwxr-xr-xvchat-messages.h3
-rwxr-xr-xvchat-protocol.c1
-rwxr-xr-xvchat-ui.c41
-rwxr-xr-xvchat.h12
11 files changed, 85 insertions, 25 deletions
diff --git a/Makefile b/Makefile
index 0342b47..6c737cb 100755
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,8 @@
6# configuration # 6# configuration #
7############################################## 7##############################################
8 8
9CFLAGS = -Wall -Os 9#CFLAGS = -Wall -Os
10#CFLAGS = -Wall -g -ggdb 10CFLAGS = -Wall -g -ggdb
11 11
12## use this line when you've got an readline before 4.(x|2) 12## use this line when you've got an readline before 4.(x|2)
13#CFLAGS += -DOLDREADLINE 13#CFLAGS += -DOLDREADLINE
diff --git a/sample-count.fmt b/sample-count.fmt
index 019c46e..d008991 100755
--- a/sample-count.fmt
+++ b/sample-count.fmt
@@ -42,7 +42,7 @@ FS_IDLE = "^8%s"
42FS_TIME = "^5[%H:%M]-- ^0" 42FS_TIME = "^5[%H:%M]-- ^0"
43FS_TOPICW = "[ Channel %d: %s" 43FS_TOPICW = "[ Channel %d: %s"
44FS_NOTOPICW = "[ Channel %d has no topic" 44FS_NOTOPICW = "[ Channel %d has no topic"
45FS_CONSOLE = "[ %s@%s:%d, use .h to get help, send bugs reports and feature requests to vchat@pulse.flatline.de ..." 45FS_CONSOLE = "%s@%s:%d, use .h to get help"
46FS_CONNECTED = "^2# Connected to '^6%s^2', port ^6%d^2 ..." 46FS_CONNECTED = "^2# Connected to '^6%s^2', port ^6%d^2 ..."
47FS_TOPIC = "^2# Channel ^6%d^2 topic is: '^0%s^2'" 47FS_TOPIC = "^2# Channel ^6%d^2 topic is: '^0%s^2'"
48FS_NOTOPIC = "^2# Channel ^6%d^2 has no topic" 48FS_NOTOPIC = "^2# Channel ^6%d^2 has no topic"
diff --git a/sample-devlog.fmt b/sample-devlog.fmt
index 56d67f7..e70364d 100755
--- a/sample-devlog.fmt
+++ b/sample-devlog.fmt
@@ -47,7 +47,7 @@ FS_IDLE = "^8%s"
47FS_TIME = "^2[%H:%M]^0 " 47FS_TIME = "^2[%H:%M]^0 "
48FS_TOPICW = "[ Channel %d: %s" 48FS_TOPICW = "[ Channel %d: %s"
49FS_NOTOPICW = "[ Channel %d has no topic" 49FS_NOTOPICW = "[ Channel %d has no topic"
50FS_CONSOLE = "[ %s@%s:%d, use .h to get help" 50FS_CONSOLE = "%s@%s:%d, use .h to get help"
51FS_CONNECTED = "^2# Connected to '^0%s^2', port ^0%d^2 ..." 51FS_CONNECTED = "^2# Connected to '^0%s^2', port ^0%d^2 ..."
52FS_TOPIC = "^1# Channel ^6%d^2 topic is: '^0%s^2'" 52FS_TOPIC = "^1# Channel ^6%d^2 topic is: '^0%s^2'"
53FS_NOTOPIC = "^1# Channel ^6%d^2 has no topic" 53FS_NOTOPIC = "^1# Channel ^6%d^2 has no topic"
diff --git a/sample-erdgeist.fmt b/sample-erdgeist.fmt
index cce9ef2..5fc87e1 100755
--- a/sample-erdgeist.fmt
+++ b/sample-erdgeist.fmt
@@ -39,9 +39,10 @@ FS_DBG = "^3%s"
39FS_ERR = "^1%s" 39FS_ERR = "^1%s"
40FS_IDLE = "^8%s" 40FS_IDLE = "^8%s"
41FS_TIME = "^9[%H:%M]^0 " 41FS_TIME = "^9[%H:%M]^0 "
42FS_CONSOLETIME = "[%H:%M] "
42FS_TOPICW = "[ Channel %d: %s" 43FS_TOPICW = "[ Channel %d: %s"
43FS_NOTOPICW = "[ Channel %d has no topic" 44FS_NOTOPICW = "[ Channel %d has no topic"
44FS_CONSOLE = "[ %s@%s:%d, use .h to get help" 45FS_CONSOLE = "%s@%s:%d, use .h to get help"
45FS_CONNECTED = "^2# Connected to '^0%s^2', port ^0%d^2 ..." 46FS_CONNECTED = "^2# Connected to '^0%s^2', port ^0%d^2 ..."
46FS_TOPIC = "^1# Channel ^6%d^2 topic is: '^0%s^2'" 47FS_TOPIC = "^1# Channel ^6%d^2 topic is: '^0%s^2'"
47FS_NOTOPIC = "^1# Channel ^6%d^2 has no topic" 48FS_NOTOPIC = "^1# Channel ^6%d^2 has no topic"
diff --git a/sample-mAsq.fmt b/sample-mAsq.fmt
index 02908b0..9bed139 100755
--- a/sample-mAsq.fmt
+++ b/sample-mAsq.fmt
@@ -42,7 +42,7 @@ FS_IDLE = "^8%s"
42FS_TIME = "^5%H:%M^0 " 42FS_TIME = "^5%H:%M^0 "
43FS_TOPICW = "[ Channel %d: %s" 43FS_TOPICW = "[ Channel %d: %s"
44FS_NOTOPICW = "[ Channel %d has no topic" 44FS_NOTOPICW = "[ Channel %d has no topic"
45FS_CONSOLE = "[ %s@%s:%d, use .h to get help, send bugs reports and feature requests to vchat@pulse.flatline.de ..." 45FS_CONSOLE = "%s@%s:%d, use .h to get help"
46FS_CONNECTED = "^2*^0C^2* Connected to '^6%s^2', port ^6%d^2 ..." 46FS_CONNECTED = "^2*^0C^2* Connected to '^6%s^2', port ^6%d^2 ..."
47FS_TOPIC = "^2*^0T^2* Channel ^6%d^2 topic is: '^0%s^2'" 47FS_TOPIC = "^2*^0T^2* Channel ^6%d^2 topic is: '^0%s^2'"
48FS_NOTOPIC = "^2*^0T^2* Channel ^6%d^2 has no topic" 48FS_NOTOPIC = "^2*^0T^2* Channel ^6%d^2 has no topic"
diff --git a/vchat-client.c b/vchat-client.c
index 039301e..2fc1ea9 100755
--- a/vchat-client.c
+++ b/vchat-client.c
@@ -386,15 +386,24 @@ cleanup (int signal)
386 exit (0); 386 exit (0);
387} 387}
388 388
389static int oldseconds = 0;
390
389void calleverysecond( void ) { 391void calleverysecond( void ) {
390 /* timetriggered execution, don't rely on being called every 1000us */ 392 /* timetriggered execution, don't rely on being called every 1000us */
391 /* rather see it as a chance for being called 9 times in 10 seconds */ 393 /* rather see it as a chance for being called 9 times in 10 seconds */
392 /* so check time() */ 394 /* so check time() */
395 time_t now = time( NULL );
396 struct tm *mytime = localtime( &now );
397 if( mytime->tm_sec < oldseconds ) {
398 consoleline( NULL );
399 }
400 oldseconds = mytime->tm_sec;
393 401
394 if(quitrequest) 402 if(quitrequest)
395 quitrequest--; 403 quitrequest--;
396 if(outputcountdown && !--outputcountdown) 404 if(outputcountdown && !--outputcountdown)
397 hideout( ); 405 hideout( );
406
398} 407}
399 408
400/* this function is called in the master loop */ 409/* this function is called in the master loop */
@@ -437,19 +446,23 @@ eventloop (void)
437} 446}
438 447
439void usage(unsigned char *name) { 448void usage(unsigned char *name) {
440 printf ("usage: %s [-C config-file] [-l] [-z] [-s host] [-p port] [-c channel] [-n nickname]\n",name); 449 printf ("usage: %s [-C config-file] [-F formats] [-l] [-z] [-s host] [-p port] [-c channel] [-n nickname] [-k] [-K] [-L logfile]\n",name);
441 puts (" -C load a second config-file, overriding the first one\n"); 450 puts (" -C load a second config-file, overriding the first one");
442 puts (" -l local connect (no SSL + connects localhost:2323)\n"); 451 puts (" -F load format strings (skins) from this file");
443 puts (" -z don't use certificate files\n"); 452 puts (" -l local connect (no SSL + connects localhost:2323)");
453 puts (" -z don't use certificate files");
444 printf (" -s set server (default \"%s\")\n",getstroption(CF_SERVERHOST)); 454 printf (" -s set server (default \"%s\")\n",getstroption(CF_SERVERHOST));
445 printf (" -p set port (default %d)\n",getintoption(CF_SERVERPORT)); 455 printf (" -p set port (default %d)\n",getintoption(CF_SERVERPORT));
446 printf (" -c set channel (default %d)\n",getintoption(CF_CHANNEL)); 456 printf (" -c set channel (default %d)\n",getintoption(CF_CHANNEL));
447 if (nick) 457 if (nick)
448 printf(" -n set nickname (default \"%s\")\n",nick); 458 printf(" -n set nickname (default \"%s\")\n",nick);
449 else 459 else
450 puts (" -n set nickname\n"); 460 puts (" -n set nickname");
451 printf (" -f set from (default \"%s\")\n",getstroption(CF_FROM)); 461 printf (" -f set from (default \"%s\")\n",getstroption(CF_FROM));
452 puts (" -h gives this help\n"); 462 puts (" -k keep autolog");
463 puts (" -K don't keep autolog");
464 printf (" -L use this file as logfile (default \"%s\")\n",getstroption(CF_LOGFILE));
465 puts (" -h gives this help");
453} 466}
454 467
455/* main - d'oh */ 468/* main - d'oh */
@@ -461,12 +474,10 @@ main (int argc, char **argv)
461 474
462 loadconfig (GLOBAL_CONFIG_FILE); 475 loadconfig (GLOBAL_CONFIG_FILE);
463 loadconfig (getstroption (CF_CONFIGFILE)); 476 loadconfig (getstroption (CF_CONFIGFILE));
464 loadformats(GLOBAL_FORMAT_FILE);
465 loadformats(getstroption (CF_FORMFILE));
466 477
467 /* parse commandline */ 478 /* parse commandline */
468 while (cmdsunparsed) { 479 while (cmdsunparsed) {
469 pchar = getopt(argc,argv,"C:lzs:p:c:n:f:h"); 480 pchar = getopt(argc,argv,"C:F:lzs:p:c:n:f:kKL:h");
470#ifdef DEBUG 481#ifdef DEBUG
471 fprintf(stderr,"parse commandline: %d ('%c'): %s\n",pchar,pchar,optarg); 482 fprintf(stderr,"parse commandline: %d ('%c'): %s\n",pchar,pchar,optarg);
472#endif 483#endif
@@ -474,6 +485,7 @@ main (int argc, char **argv)
474 switch (pchar) { 485 switch (pchar) {
475 case -1 : cmdsunparsed = 0; break; 486 case -1 : cmdsunparsed = 0; break;
476 case 'C': loadconfig(optarg); break; 487 case 'C': loadconfig(optarg); break;
488 case 'F': setstroption(CF_FORMFILE,optarg); break;
477 case 'l': setintoption(CF_USESSL,0); break; 489 case 'l': setintoption(CF_USESSL,0); break;
478 case 'z': setintoption(CF_USECERT,0); break; 490 case 'z': setintoption(CF_USECERT,0); break;
479 case 's': setstroption(CF_SERVERHOST,optarg); break; 491 case 's': setstroption(CF_SERVERHOST,optarg); break;
@@ -481,6 +493,9 @@ main (int argc, char **argv)
481 case 'c': setintoption(CF_CHANNEL,strtol(optarg,NULL,10)); break; 493 case 'c': setintoption(CF_CHANNEL,strtol(optarg,NULL,10)); break;
482 case 'n': setstroption(CF_NICK,optarg); break; 494 case 'n': setstroption(CF_NICK,optarg); break;
483 case 'f': setstroption(CF_FROM,optarg); break; 495 case 'f': setstroption(CF_FROM,optarg); break;
496 case 'k': setintoption(CF_KEEPLOG,1); break;
497 case 'K': setintoption(CF_KEEPLOG,0); break;
498 case 'L': setstroption(CF_LOGFILE,optarg); break;
484 case 'h': usage(argv[0]); exit(0); break; 499 case 'h': usage(argv[0]); exit(0); break;
485 default : usage(argv[0]); exit(1); 500 default : usage(argv[0]); exit(1);
486 } 501 }
@@ -488,6 +503,9 @@ main (int argc, char **argv)
488 503
489 if (optind < argc) { usage(argv[0]); exit(1); } 504 if (optind < argc) { usage(argv[0]); exit(1); }
490 505
506 loadformats(GLOBAL_FORMAT_FILE);
507 loadformats(getstroption (CF_FORMFILE));
508
491 if (!getintoption(CF_USESSL)) { 509 if (!getintoption(CF_USESSL)) {
492 setstroption(CF_SERVERHOST,"localhost"); 510 setstroption(CF_SERVERHOST,"localhost");
493 setintoption(CF_SERVERPORT,2323); 511 setintoption(CF_SERVERPORT,2323);
diff --git a/vchat-config.h b/vchat-config.h
index 85db619..ca938b7 100755
--- a/vchat-config.h
+++ b/vchat-config.h
@@ -39,6 +39,7 @@ static volatile configoption configoptions[] = {
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_USESSL, CO_INT, "usessl", (char *) 1, (char *)-1, (unsigned char **)&usessl }, 43 {CF_USESSL, CO_INT, "usessl", (char *) 1, (char *)-1, (unsigned char **)&usessl },
43 {CF_USECERT, CO_INT, "usecert", (char *) 1, (char *)-1, NULL }, 44 {CF_USECERT, CO_INT, "usecert", (char *) 1, (char *)-1, NULL },
44 {CF_USETIME, CO_INT, "usetime", (char *) 1, (char *)-1, (unsigned char **)&usetime }, 45 {CF_USETIME, CO_INT, "usetime", (char *) 1, (char *)-1, (unsigned char **)&usetime },
@@ -91,9 +92,10 @@ static formatstring formatstrings[] = {
91 FE( FS_ERR_STRING, "\0011%s %s"), 92 FE( FS_ERR_STRING, "\0011%s %s"),
92 FE( FS_IDLE, "\0018%s"), 93 FE( FS_IDLE, "\0018%s"),
93 FE( FS_TIME, "\0015[%H:%M]\0010 "), 94 FE( FS_TIME, "\0015[%H:%M]\0010 "),
95 FE( FS_CONSOLETIME, "[%H:%M] "),
94 FE( FS_TOPICW, "[ Channel %d: %s"), 96 FE( FS_TOPICW, "[ Channel %d: %s"),
95 FE( FS_NOTOPICW, "[ Channel %d has no topic"), 97 FE( FS_NOTOPICW, "[ Channel %d has no topic"),
96 FE( FS_CONSOLE, "[ %s@%s:%d, use .h to get help, send bugs reports and feature requests to vchat@pulse.flatline.de ..."), 98 FE( FS_CONSOLE, "%s@%s:%d, use .h to get help "),
97 FE( FS_CONNECTED, "\0012# Connected to '\0016%s\0012', port \0016%d\0012 ..."), 99 FE( FS_CONNECTED, "\0012# Connected to '\0016%s\0012', port \0016%d\0012 ..."),
98 FE( FS_TOPIC, "\0012# Channel \0016%d\0012 topic is: '\0010%s\0012'"), 100 FE( FS_TOPIC, "\0012# Channel \0016%d\0012 topic is: '\0010%s\0012'"),
99 FE( FS_NOTOPIC, "\0012# Channel \0016%d\0012 has no topic"), 101 FE( FS_NOTOPIC, "\0012# Channel \0016%d\0012 has no topic"),
diff --git a/vchat-messages.h b/vchat-messages.h
index 08114d5..e73e567 100755
--- a/vchat-messages.h
+++ b/vchat-messages.h
@@ -56,6 +56,9 @@ servermessage servermessages[] = {
56/* 123 <user login [user logout]> 56/* 123 <user login [user logout]>
57 User Login / Logout Information */ 57 User Login / Logout Information */
58 {"123", SM_USERINFO, NULL, NULL}, 58 {"123", SM_USERINFO, NULL, NULL},
59/* 169 <encoding>
60 List of known encodings */
61 {"169", SM_INFO, NULL, NULL},
59/* 201 <protocol> <server-name> 62/* 201 <protocol> <server-name>
60 Server signon */ 63 Server signon */
61 {"201", SM_IGNORE, NULL, NULL}, 64 {"201", SM_IGNORE, NULL, NULL},
diff --git a/vchat-protocol.c b/vchat-protocol.c
index 05abc26..d04d9b0 100755
--- a/vchat-protocol.c
+++ b/vchat-protocol.c
@@ -73,6 +73,7 @@ static void pmnotsent (unsigned char *message);
73extern int status; 73extern int status;
74 74
75int usessl = 1; 75int usessl = 1;
76unsigned char *encoding;
76 77
77/* connects to server */ 78/* connects to server */
78int 79int
diff --git a/vchat-ui.c b/vchat-ui.c
index 15623e2..4eb625e 100755
--- a/vchat-ui.c
+++ b/vchat-ui.c
@@ -317,7 +317,7 @@ int writecf (formtstr id,unsigned char *str) {
317 if( getintoption( CF_KEEPLOG ) && vchat_logfile ) { 317 if( getintoption( CF_KEEPLOG ) && vchat_logfile ) {
318 char date[16]; 318 char date[16];
319 strftime( date, sizeof(date), "%Y%m%d%H%M%S", localtime(&now)); 319 strftime( date, sizeof(date), "%Y%m%d%H%M%S", localtime(&now));
320 fprintf( vchat_logfile, "%s0%s\n", date, str); 320 fprintf( vchat_logfile, "%s0%s\n", date, tmpstr);
321 } 321 }
322 322
323 if ( (sb_pub->scroll == sb_pub->count) && 323 if ( (sb_pub->scroll == sb_pub->count) &&
@@ -1185,16 +1185,38 @@ initui (void)
1185 writeout (vchat_cm_version); 1185 writeout (vchat_cm_version);
1186 showout( ); 1186 showout( );
1187*/ 1187*/
1188 resize(0);
1189 1188
1190 if( getintoption( CF_KEEPLOG ) ) { 1189 if( getintoption( CF_KEEPLOG ) ) {
1191 unsigned char *logfile = getstroption( CF_LOGFILE ); 1190 unsigned char *logfile = getstroption( CF_LOGFILE );
1192 if( logfile && *logfile ) { 1191 if( logfile && *logfile ) {
1193 if( *logfile == '~' ) 1192 if( *logfile == '~' )
1194 logfile = tilde_expand( logfile ); 1193 logfile = tilde_expand( logfile );
1195 vchat_logfile = fopen( logfile, "a+" ); 1194 vchat_logfile = fopen( logfile, "r+" );
1195 if( vchat_logfile ) {
1196 char date[16];
1197 time_t now; struct tm now_tm;
1198 int dst, lenstr;
1199 char *str;
1200 while( !feof( vchat_logfile)) {
1201 if( (fread( date, 14, 1, vchat_logfile) == 1) &&
1202 (strptime( date, "%Y%m%d%H%M%S", &now_tm)) &&
1203 (((dst = fgetc( vchat_logfile )) == '0') || (dst == '1')) &&
1204 (str = fgetln(vchat_logfile, &lenstr))&&
1205 (str[lenstr-1] == '\n'))
1206 {
1207 str[lenstr-1] = 0;
1208 now = mktime( &now_tm );
1209 sb_add( dst == '0' ? sb_pub : sb_priv, str, now);
1210 } else {
1211 fseek( vchat_logfile, 0, SEEK_END);
1212 fgetc( vchat_logfile );
1213 }
1214 }
1215 }
1196 } 1216 }
1197 } 1217 }
1218
1219 resize(0);
1198} 1220}
1199 1221
1200/* render colorized line to window */ 1222/* render colorized line to window */
@@ -1236,7 +1258,18 @@ consoleline (unsigned char *message)
1236 1258
1237 for (i = 0; i < console->_maxx; i++) 1259 for (i = 0; i < console->_maxx; i++)
1238 waddch (console, ' '); 1260 waddch (console, ' ');
1239 mvwaddnstr (console, 0, 0, message ? message : consolestr, console->_maxx); 1261
1262 if( !message && usetime )
1263 {
1264 char date[10];
1265 time_t now = time(NULL);
1266 strftime( date, sizeof(date), getformatstr(FS_CONSOLETIME), localtime(&now));
1267 snprintf( tmpstr, TMPSTRSIZE, "%s%s", date, consolestr);
1268 mvwaddnstr (console, 0, 0, tmpstr, console->_maxx);
1269 } else {
1270 mvwaddnstr (console, 0, 0, message ? message : consolestr, console->_maxx);
1271 }
1272
1240 snprintf(tmpstr,TMPSTRSIZE,getformatstr(FS_SBINF),sb_pub->scroll,sb_pub->count); 1273 snprintf(tmpstr,TMPSTRSIZE,getformatstr(FS_SBINF),sb_pub->scroll,sb_pub->count);
1241 mvwaddstr (console, 0, console->_maxx - (strlen(tmpstr)-1),tmpstr); 1274 mvwaddstr (console, 0, console->_maxx - (strlen(tmpstr)-1),tmpstr);
1242 if (sb_win == 0) mvwaddch (console, 0, console->_maxx,'*'); 1275 if (sb_win == 0) mvwaddch (console, 0, console->_maxx,'*');
diff --git a/vchat.h b/vchat.h
index 4dca1a1..c2821a2 100755
--- a/vchat.h
+++ b/vchat.h
@@ -38,14 +38,15 @@ typedef enum { CO_NIL, CO_STR, CO_INT } conftype;
38typedef enum { CF_NIL, CF_NICK, CF_FROM, CF_SERVERHOST, CF_SERVERPORT, 38typedef enum { CF_NIL, CF_NICK, CF_FROM, CF_SERVERHOST, CF_SERVERPORT,
39CF_CIPHERSUITE, CF_CONFIGFILE, CF_CERTFILE, CF_KEYFILE, CF_FORMFILE, CF_LOGFILE, 39CF_CIPHERSUITE, CF_CONFIGFILE, CF_CERTFILE, CF_KEYFILE, CF_FORMFILE, CF_LOGFILE,
40CF_USESSL, CF_USECERT, CF_PRIVHEIGHT, CF_HSCROLL, CF_CHANNEL, CF_USETIME, 40CF_USESSL, CF_USECERT, CF_PRIVHEIGHT, CF_HSCROLL, CF_CHANNEL, CF_USETIME,
41CF_SCROLLBPRIV, CF_SCROLLBACK, CF_SCROLLBPRIVT, CF_SCROLLBACKT, CF_KEEPLOG } confopt; 41CF_SCROLLBPRIV, CF_SCROLLBACK, CF_SCROLLBPRIVT, CF_SCROLLBACKT, CF_KEEPLOG,
42CF_ENCODING } confopt;
42 43
43/* format strings */ 44/* format strings */
44typedef enum { FS_PLAIN, FS_CHAN, FS_PRIV, FS_SERV, FS_GLOB, FS_DBG, FS_ERR, 45typedef enum { FS_PLAIN, FS_CHAN, FS_PRIV, FS_SERV, FS_GLOB, FS_DBG, FS_ERR,
45FS_IDLE, FS_TIME, FS_TOPICW, FS_NOTOPICW, FS_CONSOLE, FS_CONNECTED, FS_TOPIC, 46FS_IDLE, FS_TIME, FS_CONSOLETIME, FS_TOPICW, FS_NOTOPICW, FS_CONSOLE, FS_CONNECTED,
46FS_NOTOPIC, FS_CHGTOPIC, FS_USONLINE, FS_USMATCH, FS_SIGNON, FS_SIGNOFF, FS_JOIN, 47FS_TOPIC, FS_NOTOPIC, FS_CHGTOPIC, FS_USONLINE, FS_USMATCH, FS_SIGNON, FS_SIGNOFF,
47FS_LEAVE, FS_NICKCHANGE, FS_UNKNOWNMSG, FS_BOGUSMSG, FS_RXPUBURL, FS_MYPUBURL, 48FS_JOIN, FS_LEAVE, FS_NICKCHANGE, FS_UNKNOWNMSG, FS_BOGUSMSG, FS_RXPUBURL,
48FS_RXPUBMSG, FS_MYPUBMSG, FS_TXPUBMSG, FS_RXPRIVMSG, FS_TXPRIVMSG, 49FS_MYPUBURL, FS_RXPUBMSG, FS_MYPUBMSG, FS_TXPUBMSG, FS_RXPRIVMSG, FS_TXPRIVMSG,
49FS_BGPRIVMSG, FS_PUBACTION, FS_TXPUBACTION, FS_BGTXPUBACTION, FS_COMMAND, 50FS_BGPRIVMSG, FS_PUBACTION, FS_TXPUBACTION, FS_BGTXPUBACTION, FS_COMMAND,
50FS_LOCALCOMMAND, FS_BOGUSCOMMAND, FS_SBINF, FS_MISSTYPED, FS_UNKNCMD, FS_BADREGEX, 51FS_LOCALCOMMAND, FS_BOGUSCOMMAND, FS_SBINF, FS_MISSTYPED, FS_UNKNCMD, FS_BADREGEX,
51FS_ERR_STRING } formtstr; 52FS_ERR_STRING } formtstr;
@@ -134,6 +135,7 @@ extern unsigned char *vchat_ui_version;
134#define CONSOLESTRSIZE 1024 135#define CONSOLESTRSIZE 1024
135extern unsigned char topicstr[]; 136extern unsigned char topicstr[];
136extern unsigned char consolestr[]; 137extern unsigned char consolestr[];
138extern unsigned char *encoding;
137 139
138/* init / exit functions */ 140/* init / exit functions */
139void initui (void); 141void initui (void);