X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=apps%2Fsympathy.c;h=a8dba28e16512e46bbe93e69b680bc8d95a6a852;hb=8a3aac5f5287422699c9c7c5ee8969561da7317f;hp=94105a3437bd9ffc0c5a75e449e63d508f18e3a8;hpb=1d00929f790c7e65eac1bc90ba9d7e520a1b7462;p=sympathy.git diff --git a/apps/sympathy.c b/apps/sympathy.c index 94105a3..a8dba28 100644 --- a/apps/sympathy.c +++ b/apps/sympathy.c @@ -6,10 +6,32 @@ * */ -static char rcsid[] = "$Id$"; +static char rcsid[] = + "$Id$"; /* * $Log$ + * Revision 1.16 2008/02/27 01:31:38 james + * *** empty log message *** + * + * Revision 1.15 2008/02/27 01:31:14 james + * *** empty log message *** + * + * Revision 1.14 2008/02/24 00:43:55 james + * *** empty log message *** + * + * Revision 1.13 2008/02/24 00:42:53 james + * *** empty log message *** + * + * Revision 1.12 2008/02/23 11:48:52 james + * *** empty log message *** + * + * Revision 1.11 2008/02/20 20:16:07 james + * *** empty log message *** + * + * Revision 1.10 2008/02/20 19:44:37 james + * @@ + * * Revision 1.9 2008/02/20 18:49:11 staffcvs * *** empty log message *** * @@ -223,6 +245,7 @@ main (int argc, char *argv[]) int c; extern char *optarg; extern int optind, opterr, optopt; + int width = VT102_COLS_80; int oflags[128]; char *oargs[128]; @@ -239,16 +262,7 @@ main (int argc, char *argv[]) memset (oflags, 0, sizeof (oflags)); memset (oargs, 0, sizeof (oargs)); -#if 0 - "sympathy -t [-K] [-d serialdev|-p] [-b baud] [-f] [-L log]\n" - "sympathy -s [-K] [-d serialdev|-p] [-b baud] [-f] [-L log] [-F] [-k skt]\n" - " [-n hlines]\n" - "sympathy [-s -c] [-K] [-d serialdev|-p] [-b baud] [-f] [-L log] [-k skt]\n" - " [-n hlines]\n" - "sympathy -c [-H] -k skt\n" - "sympathy -r id [-H]\n" "sympathy {-l|-ls}\n" -#endif - while ((c = getopt (argc, argv, "tscr:lKHd:pb:fL:Fk:n:")) != EOF) + while ((c = getopt (argc, argv, "w:utscr:lKHd:pb:fL:Fk:n:")) != EOF) { switch (c) { @@ -381,6 +395,7 @@ main (int argc, char *argv[]) oflags['f'] = 0; oflags['L'] = 0; oflags['n'] = 0; + oflags['w'] = 0; if (server_socket) { socket_free_parent (server_socket); @@ -389,6 +404,7 @@ main (int argc, char *argv[]) } } + if (oflags['c'] && !oflags['k']) fatal_moan ("-c requires a socket to be specified with -s or -k"); @@ -402,6 +418,13 @@ main (int argc, char *argv[]) oflags['p']++; } + if (oflags['w']) + { + width = safe_atoi (oargs['w']); + if ((width > VT102_MAX_COLS) || (width < 1)) + fatal_moan ("-w requires a width between 1 and %d\n", VT102_MAX_COLS); + } + if (oflags['s'] && !oflags['F']) { daemon (1, 0); /*incase socket is relative path, unlink then will fail */ @@ -420,7 +443,7 @@ main (int argc, char *argv[]) if (oflags['p']) { - tty = ptty_open (NULL, NULL); + tty = ptty_open (NULL, NULL, width); if (!tty) fatal_moan ("unable to open a ptty"); } @@ -465,24 +488,23 @@ main (int argc, char *argv[]) if (oflags['H']) { - fatal_moan ("fix a bug in HTML dispatcher before this works"); + ansi = ansi_new_html (stdout); } else { - ansi = (ANSI *) malloc (sizeof (ANSI)); - memset (ansi, 0, sizeof (ANSI)); - terminal_register_handlers (); - ansi->terminal = terminal_open (0, 1); - ansi_reset (ansi, NULL); + ansi = + ansi_new_from_terminal (terminal_open (0, 1), + oflags['u'] ? 0 : 1); + ansi->reset (ansi, NULL); } } - mainloop (tty, server_socket, client_socket, ansi, log, history); + mainloop (tty, server_socket, client_socket, ansi, log, history, width); if (ansi) { - ansi_terminal_reset (ansi); + ansi->close (ansi); terminal_atexit (); } @@ -496,6 +518,7 @@ main (int argc, char *argv[]) if (client_socket) socket_free (client_socket); - printf ("you have now exited sympathy\n"); + if (!oflags['H']) + printf ("you have now exited sympathy\n"); return 0; }