New -lfa_flags mode restore_error=

This commit is contained in:
2024-08-25 16:37:57 +02:00
parent 1a5e356d85
commit a40a8a16e0
9 changed files with 102 additions and 24 deletions

View File

@ -150,8 +150,8 @@ ex:;
/* Command -lfa_flags */
int Xorriso_option_lfa_flags(struct XorrisO *xorriso, char *mode, int flag)
{
int ret, lfa_flags_mem, l;
char *npt, *cpt, *mask= NULL;
int ret, lfa_flags_mem, l, sev, max_sev;
char *npt, *cpt, *mask= NULL, severity[20];
uint64_t mask_flags;
lfa_flags_mem= xorriso->lfa_flags_setting;
@ -208,15 +208,39 @@ int Xorriso_option_lfa_flags(struct XorrisO *xorriso, char *mode, int flag)
xorriso->lfa_restore_mask= mask_flags;
} else {
sprintf(xorriso->info_text,
"Cannot apply -lfa_flags restore_mask='%s'", mask);
"Cannot decode mask string of -lfa_flags restore_mask='%s'", mask);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
}
}
} else if(l >= 14 && strncmp(cpt, "restore_error=", 14) == 0) {
Xorriso__to_upper(cpt + 14, severity, (int) (int) sizeof(severity), 0);
if(strcmp(severity, "SILENT") != 0) {
ret= Xorriso__text_to_sev(severity, &sev, 0);
if(ret<=0) {
sprintf(xorriso->info_text,
"-lfa_flags restore_error=: Not a known severity name : ");
Text_shellsafe(cpt + 14, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(ret);
}
Xorriso__text_to_sev("FATAL", &max_sev, 0);
if(sev > max_sev) {
sprintf(xorriso->info_text,
"-lfa_flags restore_error=: Severity curbed to maximum value 'FATAL': ");
Text_shellsafe(cpt + 14, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
strcpy(severity, "FATAL");
}
}
Xorriso__to_lower(severity, xorriso->lfa_restore_err_sev,
sizeof(xorriso->lfa_restore_err_sev), 0);
} else if(l == 7 && strncmp(cpt, "default", l) == 0) {
xorriso->lfa_flags_setting= xorriso->lfa_flags_default;
xorriso->lfa_restore_mask= ~((uint64_t) 0);
} else {
sprintf(xorriso->info_text, "-lfa_flags: unknown mode in '%s'", mode);
sprintf(xorriso->info_text,
"-lfa_flags: unknown or mistyped mode in '%s'", mode);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
xorriso->lfa_flags_setting= lfa_flags_mem;
{ret= 0; goto ex;}