Changeset 7c96c03 in git for Singular/cntrlc.cc
- Timestamp:
- Apr 25, 2005, 3:25:46 PM (18 years ago)
- Branches:
- (u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
- Children:
- 3c7701bf86d90dc75b730f71518108d3a6a41f4b
- Parents:
- 911a7a2aa353c94925a929b40ffab0ee13722bc4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/cntrlc.cc
r911a7a r7c96c03 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: cntrlc.cc,v 1.4 4 2005-04-24 08:43:16 krueger Exp $ */4 /* $Id: cntrlc.cc,v 1.45 2005-04-25 13:25:46 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT - interupt handling … … 87 87 typedef void (*si_hdl_typ)(int); 88 88 89 89 90 /*0 implementation*/ 90 91 /*---------------------------------------------------------------------* … … 94 95 #ifndef MSDOS 95 96 /* signals are not implemented in DJGCC */ 96 # ifndef macintosh97 /* signals are not right implemented in macintosh */98 97 void sigint_handler(int sig); 99 # endif /* !macintosh */100 98 #endif /* MSDOS */ 101 99 102 extern sighandler_t set_signal ( int sig, sighandler_tsignal_handler);100 si_hdl_typ si_set_signal ( int sig, si_hdl_typ signal_handler); 103 101 104 102 /*---------------------------------------------------------------------*/ … … 112 110 **/ 113 111 /*---------------------------------------------------------------------*/ 114 si ghandler_tset_signal (112 si_hdl_typ si_set_signal ( 115 113 int sig, 116 si ghandler_tsignal_handler114 si_hdl_typ signal_handler 117 115 ) 118 116 { 119 sighandler_t retval; 120 if ((retval=signal (sig, (si_hdl_typ)signal_handler)) == SIG_ERR) { 117 si_hdl_typ retval=signal (sig, (si_hdl_typ)signal_handler); 118 if (retval == SIG_ERR) 119 { 121 120 fprintf(stderr, "Unable to init signal %d ... exiting...\n", sig); 122 121 } 123 122 siginterrupt(sig, 1); 124 123 return retval; 125 } /* s et_signal */124 } /* si_set_signal */ 126 125 127 126 … … 231 230 mmPage_tab_acc++; 232 231 mmPage_AllowAccess((void *)base); 233 s et_signal(SIGSEGV,(si_hdl_typ)sig11_handler);232 si_set_signal(SIGSEGV,(si_hdl_typ)sig11_handler); 234 233 } 235 234 … … 257 256 o.it_value.tv_usec =(unsigned)PAGE_INTERRUPT_TIME; 258 257 setitimer(ITIMER_VIRTUAL,&t,&o); 259 s et_signal(SIGVTALRM,(si_hdl_typ)sigalarm_handler);258 si_set_signal(SIGVTALRM,(si_hdl_typ)sigalarm_handler); 260 259 } 261 260 # endif /* PAGE_TEST */ … … 268 267 /*4 signal handler: linux*/ 269 268 # ifdef PAGE_TEST 270 s et_signal(SIGSEGV,(si_hdl_typ)sig11_handler);269 si_set_signal(SIGSEGV,(si_hdl_typ)sig11_handler); 271 270 struct itimerval t,o; 272 271 memset(&t,0,sizeof(t)); … … 276 275 o.it_value.tv_usec =(unsigned)PAGE_INTERRUPT_TIME; 277 276 setitimer(ITIMER_VIRTUAL,&t,&o); 278 s et_signal(SIGVTALRM,(si_hdl_typ)sigalarm_handler);277 si_set_signal(SIGVTALRM,(si_hdl_typ)sigalarm_handler); 279 278 # else /* PAGE_TEST */ 280 if (SIG_ERR==s et_signal(SIGSEGV,(si_hdl_typ)sigsegv_handler))279 if (SIG_ERR==si_set_signal(SIGSEGV,(si_hdl_typ)sigsegv_handler)) 281 280 { 282 281 PrintS("cannot set signal handler for SEGV\n"); 283 282 } 284 283 # endif /* PAGE_TEST */ 285 if (SIG_ERR==s et_signal(SIGFPE, (si_hdl_typ)sigsegv_handler))284 if (SIG_ERR==si_set_signal(SIGFPE, (si_hdl_typ)sigsegv_handler)) 286 285 { 287 286 PrintS("cannot set signal handler for FPE\n"); 288 287 } 289 if (SIG_ERR==s et_signal(SIGILL, (si_hdl_typ)sigsegv_handler))288 if (SIG_ERR==si_set_signal(SIGILL, (si_hdl_typ)sigsegv_handler)) 290 289 { 291 290 PrintS("cannot set signal handler for ILL\n"); 292 291 } 293 if (SIG_ERR==s et_signal(SIGIOT, (si_hdl_typ)sigsegv_handler))292 if (SIG_ERR==si_set_signal(SIGIOT, (si_hdl_typ)sigsegv_handler)) 294 293 { 295 294 PrintS("cannot set signal handler for IOT\n"); 296 295 } 297 if (SIG_ERR==s et_signal(SIGINT ,(si_hdl_typ)sigint_handler))296 if (SIG_ERR==si_set_signal(SIGINT ,(si_hdl_typ)sigint_handler)) 298 297 { 299 298 PrintS("cannot set signal handler for INT\n"); 300 299 } 301 //s et_signal(SIGCHLD, (void (*)(int))SIG_IGN);302 s et_signal(SIGCHLD, (si_hdl_typ)sig_ign_hdl);300 //si_set_signal(SIGCHLD, (void (*)(int))SIG_IGN); 301 si_set_signal(SIGCHLD, (si_hdl_typ)sig_ign_hdl); 303 302 } 304 303 … … 341 340 { 342 341 /*4 signal handler:*/ 343 s et_signal(SIGSEGV,sigsegv_handler);344 s et_signal(SIGBUS, sigsegv_handler);345 s et_signal(SIGFPE, sigsegv_handler);346 s et_signal(SIGILL, sigsegv_handler);347 s et_signal(SIGIOT, sigsegv_handler);348 s et_signal(SIGINT ,sigint_handler);349 s et_signal(SIGCHLD, (void (*)(int))SIG_IGN);342 si_set_signal(SIGSEGV,sigsegv_handler); 343 si_set_signal(SIGBUS, sigsegv_handler); 344 si_set_signal(SIGFPE, sigsegv_handler); 345 si_set_signal(SIGILL, sigsegv_handler); 346 si_set_signal(SIGIOT, sigsegv_handler); 347 si_set_signal(SIGINT ,sigint_handler); 348 si_set_signal(SIGCHLD, (void (*)(int))SIG_IGN); 350 349 } 351 350 # else /* SPARC_SUNOS_4 */ … … 355 354 * signal handler for run time errors, general version 356 355 */ 357 # ifndef macintosh358 356 void sigsegv_handler(int sig) 359 357 { … … 387 385 exit(0); 388 386 } 389 # endif /* !macintosh */390 387 391 388 /*2 … … 396 393 # ifndef MSDOS 397 394 /* signals are not implemented in DJGCC */ 398 # ifndef macintosh399 /* signals are temporaliy removed for macs. */400 395 /*4 signal handler:*/ 401 s et_signal(SIGSEGV,(void (*) (int))sigsegv_handler);396 si_set_signal(SIGSEGV,(void (*) (int))sigsegv_handler); 402 397 # ifdef SIGBUS 403 s et_signal(SIGBUS, sigsegv_handler);398 si_set_signal(SIGBUS, sigsegv_handler); 404 399 # endif /* SIGBUS */ 405 400 # ifdef SIGFPE 406 s et_signal(SIGFPE, sigsegv_handler);401 si_set_signal(SIGFPE, sigsegv_handler); 407 402 # endif /* SIGFPE */ 408 403 # ifdef SIGILL 409 s et_signal(SIGILL, sigsegv_handler);404 si_set_signal(SIGILL, sigsegv_handler); 410 405 # endif /* SIGILL */ 411 406 # ifdef SIGIOT 412 s et_signal(SIGIOT, sigsegv_handler);407 si_set_signal(SIGIOT, sigsegv_handler); 413 408 # endif /* SIGIOT */ 414 409 # ifdef SIGXCPU 415 s et_signal(SIGXCPU, (void (*)(int))SIG_IGN);410 si_set_signal(SIGXCPU, (void (*)(int))SIG_IGN); 416 411 # endif /* SIGIOT */ 417 set_signal(SIGINT ,sigint_handler); 418 set_signal(SIGCHLD, (void (*)(int))SIG_IGN); 419 # endif /* !macintosh */ 412 si_set_signal(SIGINT ,sigint_handler); 413 si_set_signal(SIGCHLD, (void (*)(int))SIG_IGN); 420 414 # endif /* !MSDOS */ 421 415 } … … 425 419 426 420 #ifndef MSDOS 427 # ifndef macintosh428 421 /*2 429 422 * signal handler for SIGINT … … 486 479 case 'c': 487 480 if (feGetOptValue(FE_OPT_EMACS) == NULL) fgetc(stdin); 488 s et_signal(SIGINT ,(si_hdl_typ)sigint_handler);481 si_set_signal(SIGINT ,(si_hdl_typ)sigint_handler); 489 482 return; 490 483 //siCntrlc ++; 491 //if (siCntrlc>2) s et_signal(SIGINT,(si_hdl_typ) sigsegv_handler);492 //else s et_signal(SIGINT,(si_hdl_typ) sigint_handler);484 //if (siCntrlc>2) si_set_signal(SIGINT,(si_hdl_typ) sigsegv_handler); 485 //else si_set_signal(SIGINT,(si_hdl_typ) sigint_handler); 493 486 } 494 487 cnt++; … … 496 489 } 497 490 } 498 # endif /* !macintosh */499 491 #endif /* !MSDOS */ 500 492 … … 538 530 // int saveecho = si_echo; 539 531 // siCntrlc = FALSE; 540 // s et_signal(SIGINT ,sigint_handler);532 // si_set_signal(SIGINT ,sigint_handler); 541 533 ////#ifdef macintosh 542 534 //// flush_intr(); … … 735 727 { 736 728 int ret; 737 s et_signal(SIGCHLD, (void (*)(int))SIG_DFL);729 si_set_signal(SIGCHLD, (void (*)(int))SIG_DFL); 738 730 ret = system(call); 739 s et_signal(SIGCHLD, (void (*)(int))SIG_IGN);731 si_set_signal(SIGCHLD, (void (*)(int))SIG_IGN); 740 732 return ret; 741 733 }
Note: See TracChangeset
for help on using the changeset viewer.