New option -signal_handling
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user