Made use of new message handling facility and removed first bugs
This commit is contained in:
parent
bcaf610800
commit
5038e2afb0
@ -4454,14 +4454,7 @@ int Cdrskin_create(struct CdrskiN **o, struct CdrpreskiN **preskin,
|
|||||||
*exit_value= 0;
|
*exit_value= 0;
|
||||||
*lib_initialized= 0;
|
*lib_initialized= 0;
|
||||||
|
|
||||||
printf("cdrskin: initializing libburn ...");
|
if(!burn_initialize()) {
|
||||||
fflush(stdout);
|
|
||||||
if(burn_initialize()) {
|
|
||||||
printf(" ok\n");
|
|
||||||
fflush(stdout);
|
|
||||||
} else {
|
|
||||||
printf(" failed\n");
|
|
||||||
fflush(stdout);
|
|
||||||
fprintf(stderr,"cdrskin : FATAL : initialization of libburn failed\n");
|
fprintf(stderr,"cdrskin : FATAL : initialization of libburn failed\n");
|
||||||
{*exit_value= 11; goto ex;}
|
{*exit_value= 11; goto ex;}
|
||||||
}
|
}
|
||||||
@ -4496,7 +4489,7 @@ int Cdrskin_create(struct CdrskiN **o, struct CdrpreskiN **preskin,
|
|||||||
else if(skin->preskin->abort_handler==2)
|
else if(skin->preskin->abort_handler==2)
|
||||||
Cleanup_set_handlers(skin,(Cleanup_app_handler_T) Cdrskin_abort_handler,2|8);
|
Cleanup_set_handlers(skin,(Cleanup_app_handler_T) Cdrskin_abort_handler,2|8);
|
||||||
|
|
||||||
printf("cdrskin: scanning for devices ...");
|
printf("cdrskin: scanning for devices ...\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
while (!burn_drive_scan(&(skin->drives), &(skin->n_drives))) {
|
while (!burn_drive_scan(&(skin->drives), &(skin->n_drives))) {
|
||||||
if(skin->verbosity>=Cdrskin_verbose_debuG)
|
if(skin->verbosity>=Cdrskin_verbose_debuG)
|
||||||
@ -4504,7 +4497,7 @@ int Cdrskin_create(struct CdrskiN **o, struct CdrpreskiN **preskin,
|
|||||||
/* >>> ??? wait a while ? */
|
/* >>> ??? wait a while ? */
|
||||||
/* >>> ??? set a timeout ? */
|
/* >>> ??? set a timeout ? */
|
||||||
}
|
}
|
||||||
printf(" done\n");
|
printf("cdrskin: ... scanning for devices done\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
ex:;
|
ex:;
|
||||||
return((*exit_value)==0);
|
return((*exit_value)==0);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2006.09.24.171706"
|
#define Cdrskin_timestamP "2006.09.24.180836"
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
/* ts A60924 : a new message handling facility */
|
/* ts A60924 : a new message handling facility */
|
||||||
#include "libdax_msgs.h"
|
#include "libdax_msgs.h"
|
||||||
static struct libdax_msgs *libdax_messenger= NULL;
|
struct libdax_msgs *libdax_messenger= NULL;
|
||||||
|
|
||||||
|
|
||||||
int burn_running = 0;
|
int burn_running = 0;
|
||||||
|
@ -270,7 +270,7 @@ int libdax_msgs_submit(struct libdax_msgs *m, int driveno, int error_code,
|
|||||||
int os_errno, int flag)
|
int os_errno, int flag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *textpt,*sev_name,sev_text[81];
|
char *textpt,*sev_name,sev_text[81],error_buf[1024];
|
||||||
struct libdax_msgs_item *item= NULL;
|
struct libdax_msgs_item *item= NULL;
|
||||||
|
|
||||||
if(severity >= m->print_severity) {
|
if(severity >= m->print_severity) {
|
||||||
@ -285,7 +285,9 @@ int libdax_msgs_submit(struct libdax_msgs *m, int driveno, int error_code,
|
|||||||
|
|
||||||
fprintf(stderr,"%s%s%s\n",m->print_id,sev_text,textpt);
|
fprintf(stderr,"%s%s%s\n",m->print_id,sev_text,textpt);
|
||||||
if(os_errno!=0)
|
if(os_errno!=0)
|
||||||
perror(m->print_id);
|
fprintf(stderr,"%s( Most recent system error: %d '%s' )\n",
|
||||||
|
m->print_id,os_errno,strerror_r(os_errno, error_buf,1024));
|
||||||
|
|
||||||
}
|
}
|
||||||
if(severity < m->queue_severity)
|
if(severity < m->queue_severity)
|
||||||
return(0);
|
return(0);
|
||||||
|
@ -168,8 +168,8 @@ int libdax_msgs_destroy(struct libdax_msgs **m, int flag);
|
|||||||
occasions but those should be equivalent out of the view
|
occasions but those should be equivalent out of the view
|
||||||
of a libdax application. (E.g. "cannot open ATA drive"
|
of a libdax application. (E.g. "cannot open ATA drive"
|
||||||
versus "cannot open SCSI drive" would be equivalent.)
|
versus "cannot open SCSI drive" would be equivalent.)
|
||||||
@param severity The LIBDAX_MSGS_SEVERITY_* of the event.
|
@param severity The LIBDAX_MSGS_SEV_* of the event.
|
||||||
@param priority The LIBDAX_MSGS_PRIORITY_* number of the event.
|
@param priority The LIBDAX_MSGS_PRIO_* number of the event.
|
||||||
@param msg_text Printable and human readable message text.
|
@param msg_text Printable and human readable message text.
|
||||||
@param os_errno Eventual error code from operating system (0 if none)
|
@param os_errno Eventual error code from operating system (0 if none)
|
||||||
@param flag Bitfield for control purposes (unused yet, submit 0)
|
@param flag Bitfield for control purposes (unused yet, submit 0)
|
||||||
|
44
libburn/sg.c
44
libburn/sg.c
@ -23,6 +23,9 @@
|
|||||||
#include "toc.h"
|
#include "toc.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
#include "libdax_msgs.h"
|
||||||
|
extern struct libdax_msgs *libdax_messenger;
|
||||||
|
|
||||||
static void enumerate_common(char *fname, int host_no, int channel_no,
|
static void enumerate_common(char *fname, int host_no, int channel_no,
|
||||||
int target_no, int lun_no);
|
int target_no, int lun_no);
|
||||||
|
|
||||||
@ -115,6 +118,27 @@ int sg_is_enumerable_adr(char *adr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ts A60924 */
|
||||||
|
int sg_handle_busy_drive(char *fname, int os_errno)
|
||||||
|
{
|
||||||
|
char msg[4096];
|
||||||
|
|
||||||
|
/* ts A60814 : i saw no way to do this more nicely */
|
||||||
|
if (burn_sg_open_abort_busy) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"\nlibburn: FATAL : Application triggered abort on busy drive '%s'\n",
|
||||||
|
fname);
|
||||||
|
assert("drive busy" == "non fatal");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ts A60924 : now reporting to libdax_msgs */
|
||||||
|
sprintf(msg, "Cannot open busy drive '%s'", fname);
|
||||||
|
libdax_msgs_submit(libdax_messenger, -1, 0x00020001,
|
||||||
|
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_LOW,
|
||||||
|
msg, os_errno, 0);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void ata_enumerate(void)
|
void ata_enumerate(void)
|
||||||
{
|
{
|
||||||
struct hd_driveid tm;
|
struct hd_driveid tm;
|
||||||
@ -152,14 +176,8 @@ void ata_enumerate(void)
|
|||||||
"\nlibburn: experimental: fname= %s , errno= %d\n",
|
"\nlibburn: experimental: fname= %s , errno= %d\n",
|
||||||
fname,errno);
|
fname,errno);
|
||||||
*/
|
*/
|
||||||
/* ts A60814 : i see no way to do this more nicely */
|
if (errno == EBUSY)
|
||||||
if (errno == EBUSY && burn_sg_open_abort_busy) {
|
sg_handle_busy_drive(fname, errno);
|
||||||
fprintf(stderr,
|
|
||||||
"\nlibburn: FATAL : Application triggered abort on busy drive '%s'\n",
|
|
||||||
fname);
|
|
||||||
/* <<< maybe one should plainly exit here */
|
|
||||||
assert("drive busy" == "non fatal");
|
|
||||||
}
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* found a drive */
|
/* found a drive */
|
||||||
@ -230,14 +248,8 @@ void sg_enumerate(void)
|
|||||||
"\n cdrskin: experimental: fname= %s , errno= %d\n",
|
"\n cdrskin: experimental: fname= %s , errno= %d\n",
|
||||||
fname,errno);
|
fname,errno);
|
||||||
*/
|
*/
|
||||||
/* ts A60814 : i see no way to do this more nicely */
|
if (errno == EBUSY)
|
||||||
if (errno == EBUSY && burn_sg_open_abort_busy) {
|
sg_handle_busy_drive(fname, errno);
|
||||||
fprintf(stderr,
|
|
||||||
"\nlibburn: FATAL : Application triggered abort on busy drive '%s'\n",
|
|
||||||
fname);
|
|
||||||
/* <<< maybe one should plainly exit here */
|
|
||||||
assert("drive busy" == "non fatal");
|
|
||||||
}
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* found a drive */
|
/* found a drive */
|
||||||
|
Loading…
Reference in New Issue
Block a user