=================================================================== --- netmist.c (revision 1158) +++ netmist.c (working copy) @@ -659,6 +659,7 @@ int fpd_flag = 0; int max_open; int max_proc; +int signal_flag; int rot; int report_name; int cached_open_count = 0; @@ -1597,11 +1598,13 @@ #if defined(HAVE_ANSIC_C) double gettime(void); void clean_exit(int); +void sig_clean_exit(int); void pipe_elog(int); void R_exit(int); #else double gettime(); void clean_exit(); +void sig_clean_exit(); void pipe_elog(); void R_exit(); #endif @@ -1873,7 +1876,7 @@ /* * Handy signal handler used to cleanup when things go wrong. */ - signal(SIGINT,clean_exit); + signal(SIGINT,sig_clean_exit); strcpy(workdir,HOME); if(argc==1) { @@ -12592,6 +12595,19 @@ #ifdef HAVE_ANSIC_C void +sig_clean_exit(int val) +#else +void +sig_clean_exit(val) +int val; +#endif +{ + signal_flag=1; + (void)clean_exit(val); +} + +#ifdef HAVE_ANSIC_C +void clean_exit(int val) #else void @@ -12641,7 +12657,8 @@ } */ remove_kill_file(); - if(c_eflag) + /* Don't send messages if currently inside signal handler */ + if(c_eflag && (!signal_flag) ) tell_master_error(client_id,c_eval); } exit(val);