diff options
Diffstat (limited to 'vchat-client.c')
-rwxr-xr-x | vchat-client.c | 36 |
1 files changed, 27 insertions, 9 deletions
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 | ||
389 | static int oldseconds = 0; | ||
390 | |||
389 | void calleverysecond( void ) { | 391 | void 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 | ||
439 | void usage(unsigned char *name) { | 448 | void 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); |