Made first use of queued messages and fixed several bugs with that

This commit is contained in:
2006-09-26 11:44:07 +00:00
parent bbcf7c269c
commit facd49dc4e
5 changed files with 125 additions and 29 deletions

View File

@ -1136,6 +1136,8 @@ struct CdrpreskiN {
/* to be transfered into skin */
int verbosity;
char queue_severity[81];
char print_severity[81];
/** Stores eventually given absolute device address before translation */
char raw_device_adr[Cdrskin_adrleN];
@ -1225,6 +1227,8 @@ int Cdrpreskin_new(struct CdrpreskiN **preskin, int flag)
return(-1);
o->verbosity= 0;
strcpy(o->queue_severity,"NEVER");
strcpy(o->print_severity,"SORRY");
o->raw_device_adr[0]= 0;
o->device_adr[0]= 0;
o->adr_trn= NULL;
@ -1282,15 +1286,32 @@ int Cdrpreskin_destroy(struct CdrpreskiN **preskin, int flag)
}
int Cdrpreskin_set_severities(struct CdrpreskiN *preskin, char *queue_severity,
char *print_severity, int flag)
{
if(queue_severity!=NULL)
strcpy(preskin->queue_severity,queue_severity);
if(print_severity!=NULL)
strcpy(preskin->print_severity,print_severity);
#ifdef Cdrskin_libburn_has_burn_msgS
burn_msgs_set_severities(preskin->queue_severity, preskin->print_severity,
"cdrskin: ");
#endif
return(1);
}
int Cdrpreskin_initialize_lib(struct CdrpreskiN *preskin, int flag)
{
if(!burn_initialize()) {
int ret;
ret= burn_initialize();
if(ret==0) {
fprintf(stderr,"cdrskin : FATAL : Initialization of libburn failed\n");
return(0);
}
#ifdef Cdrskin_libburn_has_burn_msgS
burn_msgs_set_severities("NEVER","SORRY","cdrskin: ");
#endif
Cdrpreskin_set_severities(preskin,NULL,NULL,0);
return(1);
}
@ -1761,12 +1782,8 @@ see_cdrskin_eng_html:;
} else if(strcmp(argv[i],"-v")==0 || strcmp(argv[i],"-verbose")==0) {
(o->verbosity)++;
printf("cdrskin: verbosity level : %d\n",o->verbosity);
#ifdef Cdrskin_libburn_has_burn_msgS
if(o->verbosity>=Cdrskin_verbose_debuG)
burn_msgs_set_severities("NEVER","DEBUG","cdrskin: ");
#endif
Cdrpreskin_set_severities(o,"DEBUG","DEBUG",0);
} else if(strcmp(argv[i],"-version")==0) {
printf(
@ -1852,7 +1869,7 @@ dev_too_long:;
fprintf(stderr,
"cdrskin: NOTE : Please inform libburn-hackers@pykix.org about:\n");
fprintf(stderr,
" burn_drive_convert_fs_adr() returned %d\n",lret);
"cdrskin: burn_drive_convert_fs_adr() returned %d\n",lret);
}
}
@ -4471,6 +4488,7 @@ int Cdrskin_create(struct CdrskiN **o, struct CdrpreskiN **preskin,
int *exit_value, int flag)
{
int ret;
char queue_severity[81],print_severity[81];
struct CdrskiN *skin;
*o= NULL;
@ -4503,16 +4521,71 @@ int Cdrskin_create(struct CdrskiN **o, struct CdrpreskiN **preskin,
printf("cdrskin: scanning for devices ...\n");
fflush(stdout);
while (!burn_drive_scan(&(skin->drives), &(skin->n_drives))) {
#define Cdrskin_debug_libdax_msgS
/*
if(skin->verbosity>=Cdrskin_verbose_debuG)
ClN(fprintf(stderr,"cdrskin_debug: ... still scanning ...\n"));
*/
/* <<< In cdrskin there is not much sense in queueing library messages.
It is done here only for debugging */
#ifdef Cdrskin_debug_libdax_msgS
strcpy(queue_severity,skin->preskin->queue_severity);
strcpy(print_severity,skin->preskin->print_severity);
Cdrpreskin_set_severities(skin->preskin,"NOTE","NEVER",0);
#endif /* Cdrskin_debug_libdax_msgS */
while (!burn_drive_scan(&(skin->drives), &(skin->n_drives))) {
usleep(20000);
/* >>> ??? set a timeout ? */
}
#ifdef Cdrskin_debug_libdax_msgS
Cdrpreskin_set_severities(skin->preskin,queue_severity,print_severity,0);
#endif /* Cdrskin_debug_libdax_msgS */
printf("cdrskin: ... scanning for devices done\n");
fflush(stdout);
#ifdef Cdrskin_debug_libdax_msgS
#ifdef Cdrskin_libburn_has_burn_msgS
{
char msg[BURN_MSGS_MESSAGE_LEN],msg_severity[81],filler[81];
int error_code,os_errno,first,i;
for(first= 1; ; first= 0) {
ret= burn_msgs_obtain("ALL",&error_code,msg,&os_errno,msg_severity);
if(ret==0)
break;
if(ret<0) {
fprintf(stderr,
"cdrskin: NOTE : Please inform libburn-hackers@pykix.org about:\n");
fprintf(stderr,
"cdrskin: burn_msgs_obtain() returns %d\n",ret);
break;
}
for(i=0;msg_severity[i]!=0;i++)
filler[i]= ' ';
filler[i]= 0;
if(first)
fprintf(stderr,
"cdrskin: -------------------- Messages from scanning --------------------\n");
fprintf(stderr,"cdrskin: %s : %s\n",msg_severity,msg);
fprintf(stderr,"cdrskin: %s ( code=%X , os_errno=%d )\n",
filler,error_code,os_errno);
}
if(first==0)
fprintf(stderr,
"cdrskin: ----------------------------------------------------------------\n");
}
#endif /* Cdrskin_libburn_has_burn_msgS */
#endif /* Cdrskin_debug_libdax_msgS */
ex:;
return((*exit_value)==0);
}