=================================================================== RCS file: /home/cvs/OpenXM/src/ox_ntl/oxserv.h,v retrieving revision 1.3 retrieving revision 1.5 diff -u -p -r1.3 -r1.5 --- OpenXM/src/ox_ntl/oxserv.h 2003/11/15 09:06:20 1.3 +++ OpenXM/src/ox_ntl/oxserv.h 2004/07/05 10:08:35 1.5 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/ox_ntl/oxserv.h,v 1.2 2003/11/08 12:34:00 iwane Exp $ */ +/* $OpenXM: OpenXM/src/ox_ntl/oxserv.h,v 1.4 2003/11/17 09:55:52 iwane Exp $ */ #ifndef __OX_SERVE_H__ #define __OX_SERVE_H__ @@ -20,14 +20,18 @@ extern "C" { #endif /* signal */ -extern sigset_t G_oxserv_sigusr1; +extern int G_oxserv_sigusr1cnt; +extern int G_oxserv_sigusr1flag; #define BLOCK_INPUT() do { \ - sigprocmask(SIG_BLOCK, &G_oxserv_sigusr1, NULL); \ + G_oxserv_sigusr1cnt++; \ } while(0) #define UNBLOCK_INPUT() do { \ - sigprocmask(SIG_UNBLOCK, &G_oxserv_sigusr1, NULL); \ + G_oxserv_sigusr1cnt--; \ + if (G_oxserv_sigusr1cnt == 0 && G_oxserv_sigusr1flag) { \ + oxserv_sm_control_reset_connection(0); \ + } \ } while(0) /* c.f. mathcap_init in ox_toolkit */ @@ -36,14 +40,15 @@ void oxserv_dest (void); int oxserv_receive (OXFILE *); -int oxserv_set (int mode, void *, void *); +void oxserv_sm_control_reset_connection(int); +int oxserv_set (int mode, void (*)(), void *); + #define OXSERV_SET_EXECUTE_STRING_PARSER (0x01) #define OXSERV_SET_EXECUTE_FUNCTION (0x02) #define OXSERV_SET_CONVERT_CMO (0x03) #define OXSERV_SET_DELETE_CMO (0x04) #define OXSERV_SET_GET_CMOTAG (0x05) - #ifdef __cplusplus }