New option -signal_handling

This commit is contained in:
2011-04-23 15:23:35 +00:00
parent f860e24e58
commit fd0b9bb937
15 changed files with 260 additions and 56 deletions

View File

@ -78,22 +78,37 @@ int Xorriso_abort(struct XorrisO *xorriso, int flag)
/* @param flag bit0= asynchronous handling (else catch thread, wait, and exit)
bit1= dealing with MMC drive in critical state
behavior 2 -> behavior 1
*/
int Xorriso_set_signal_handling(struct XorrisO *xorriso, int flag)
{
char *handler_prefix= NULL;
int behavior, mode;
if(Xorriso__get_signal_behavior(0) != 1)
behavior= Xorriso__get_signal_behavior(0);
if(behavior == 0)
return(2);
if(behavior == 2 && !(flag & 2))
mode= 1;
else if(behavior == 3)
mode= 2;
else
mode= (flag & 1) * 0x30;
handler_prefix= calloc(strlen(xorriso->progname)+3+1, 1);
if(handler_prefix==NULL) {
sprintf(xorriso->info_text,
"Cannot allocate memory for for setting signal handler");
"Cannot allocate memory for setting signal handler");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
return(-1);
}
/* <<< */
sprintf(xorriso->info_text, "burn_set_signal_handling(%d)", mode);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
sprintf(handler_prefix, "%s : ", xorriso->progname);
burn_set_signal_handling(handler_prefix, NULL, (flag & 1) * 0x30);
burn_set_signal_handling(handler_prefix, NULL, mode);
free(handler_prefix);
return(1);
}