X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=kernel%2Fmain.c;fp=kernel%2Fmain.c;h=5ed778e088cedcb33f78aa36079ad97caec4bc68;hb=aa975e8f85af258357639e3407ce40090f4a4998;hp=0f511c73f127317c22bd4e644e0fee43f7e65038;hpb=9947d10a48f64d03d1d022c1c6291eb6e9f67bcf;p=egate.git diff --git a/kernel/main.c b/kernel/main.c index 0f511c7..5ed778e 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -45,7 +45,10 @@ * Europagate, 1995 * * $Log: main.c,v $ - * Revision 1.26 1995/05/18 12:03:08 adam + * Revision 1.27 1995/05/19 13:25:59 adam + * Bug fixes. Better command line options. + * + * Revision 1.26 1995/05/18 12:03:08 adam * Bug fixes and minor improvements. * * Revision 1.25 1995/05/16 09:40:42 adam @@ -164,6 +167,7 @@ static void kernel_events (struct str_queue *queue) int continuation = 0; int extra_fd; int persist_flag; + int stop_flag = 0; persist_flag = gw_res_bool (info.kernel_res, "gw.persist", 0); timeout = gw_res_int (info.kernel_res, "gw.timeout", 600); @@ -173,7 +177,7 @@ static void kernel_events (struct str_queue *queue) sprintf (fifo_server_name, "fifo.s.%d", info.userid); gip = gips_initialize (fifo_server_name); - gips_open (gip, fifo_client_name); + gips_open (gip, fifo_client_name, 1); gip_fd = gip_infileno (gip); extra_fd = open (fifo_server_name, O_WRONLY); @@ -181,7 +185,10 @@ static void kernel_events (struct str_queue *queue) { FD_ZERO (&set_r); FD_SET (gip_fd, &set_r); - tv.tv_sec = timeout; + if (stop_flag) + tv.tv_sec = 1; + else + tv.tv_sec = timeout; tv.tv_usec = 0; gw_log (GW_LOG_DEBUG, KERNEL_LOG, "IPC select"); @@ -193,8 +200,11 @@ static void kernel_events (struct str_queue *queue) } if (r == 0) { - gw_log (GW_LOG_STAT, KERNEL_LOG, "Timeout after %d seconds", - timeout); + if (stop_flag) + gw_log (GW_LOG_STAT, KERNEL_LOG, "Stopping"); + else + gw_log (GW_LOG_STAT, KERNEL_LOG, "Timeout after %d seconds", + timeout); if (info.zass && persist_flag) save_p_state (info.userid); break; @@ -235,21 +245,18 @@ static void kernel_events (struct str_queue *queue) else if (!strcmp (command, "stop")) { gw_log (GW_LOG_DEBUG, KERNEL_LOG, "stop"); - break; + while (lgets (line_buf, sizeof(line_buf)-1, gip_fd)) + ; + break; } else - { gw_log (GW_LOG_WARN, KERNEL_LOG, "Unknown IPC: %s", command); - } continuation = 1; } } close (extra_fd); gips_close (gip); gips_destroy (gip); - - unlink (fifo_client_name); - unlink (fifo_server_name); } int main (int argc, char **argv) @@ -284,8 +291,8 @@ int main (int argc, char **argv) switch (argv[0][1]) { case 'H': - fprintf (stderr, "kernel [option..] [resource]\n"); - fprintf (stderr, "If no resource file is given"); + fprintf (stderr, "kernel [options] [resourceFile]\n"); + fprintf (stderr, "If no resource file is specified"); fprintf (stderr, " default.res is used\n"); fprintf (stderr, "Options:\n"); fprintf (stderr, " -d Enable debugging log\n"); @@ -403,7 +410,8 @@ int main (int argc, char **argv) gw_log_session (info.userid); break; default: - gw_log (GW_LOG_FATAL, KERNEL_LOG, "unknown option %s", *argv); + gw_log (GW_LOG_FATAL, KERNEL_LOG, "unknown option %s;" + " use -H for help", *argv); exit (1); } }