Changeset 3103

Show
Ignore:
Timestamp:
03/05/10 03:12:44 (6 months ago)
Author:
scdbackup
Message:

Enabled optional use of new signal action 2 with libburn built-in handler

Location:
libburn/trunk/cdrskin
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • libburn/trunk/cdrskin/cdrskin.c

    r3101 r3103  
    149149*/ 
    150150 
    151 /* Do not stay in signal handler but only cancel and set Cdrskin_abort_leveL 
     151/* Do not stay in signal handler but only cancel and set Cdrskin_abort_leveL. 
     152   Make use of burn_is_aborting() to detect pending libburn aborts. 
    152153*/ 
    153154#define Cdrskin_signal_handler_return_2 1 
     
    373374#else 
    374375#include "cleanup.h" 
     376#ifdef Cdrskin_use_libburn_cleanuP 
     377#undef Cdrskin_use_libburn_cleanuP 
     378#endif 
    375379#endif 
    376380 
     
    388392#define Cleanup_handler_funC   NULL 
    389393#define Cleanup_handler_handlE "cdrskin: " 
     394#define Cleanup_handler_flaG 48 
    390395#else 
    391396#define Cleanup_handler_funC   (Cleanup_app_handler_T) Cdrskin_abort_handler 
    392397#define Cleanup_handler_handlE skin 
     398#define Cleanup_handler_flaG 4 
    393399#endif /* ! Cdrskin_use_libburn_cleanuP */ 
    394400 
     
    41144120 if(restore_handler) { 
    41154121   int Cdrskin_abort_handler(struct CdrskiN *, int, int); 
    4116    Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 4); 
     4122   Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 
     4123                        Cleanup_handler_flaG); 
    41174124 } 
    41184125#endif /* Cdrskin_grab_abort_brokeN */ 
     
    41444151 skin->grabbed_drive= NULL; 
    41454152 return(1); 
     4153} 
     4154 
     4155 
     4156int Cdrskin__is_aborting(int flag) 
     4157{ 
     4158 if(Cdrskin_abort_leveL) 
     4159   return(-1); 
     4160#ifdef Cdrskin_signal_handler_return_2 
     4161  return(burn_is_aborting(0)); 
     4162#else 
     4163  return 0; 
     4164#endif 
    41464165} 
    41474166 
     
    60956114 if(skin->drive_is_grabbed) 
    60966115   Cdrskin_release_drive(skin,0); 
    6097  if(Cdrskin_abort_leveL) 
     6116 if(Cdrskin__is_aborting(0)) 
    60986117   Cdrskin_abort(skin, 0); /* Never comes back */ 
    60996118 return(ret); 
     
    61506169 static double last_fifo_in= 0.0,last_fifo_out= 0.0,curr_fifo_in,curr_fifo_out; 
    61516170 
    6152  if(Cdrskin_abort_leveL) 
     6171 if(Cdrskin__is_aborting(0)) 
    61536172   Cdrskin_abort(skin, 0); /* Never comes back */ 
    61546173 
     
    73617380 burn_disc_write(o, disc); 
    73627381 if(skin->preskin->abort_handler==-1) 
    7363    Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 4); 
     7382   Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 
     7383                        Cleanup_handler_flaG); 
    73647384 last_time= start_time= Sfile_microtime(0); 
    73657385 
     
    73807400   /* >>> how do i learn about success or failure ? */ 
    73817401 
    7382    if(loop_counter>0 || Cdrskin_abort_leveL) 
     7402   if(loop_counter>0 || Cdrskin__is_aborting(0)) 
    73837403     Cdrskin_burn_pacifier(skin,drive_status,&p,start_time,&last_time, 
    73847404                           &total_count,&last_count,&min_buffer_fill,0); 
     
    74547474   printf("\n"); 
    74557475 
    7456  if(Cdrskin_abort_leveL) 
     7476 if(Cdrskin__is_aborting(0)) 
    74577477   Cdrskin_abort(skin, 0); /* Never comes back */ 
    74587478 
     
    89558975 if(skin->preskin->abort_handler==1 || skin->preskin->abort_handler==3 ||  
    89568976    skin->preskin->abort_handler==4) 
    8957    Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 4); 
     8977   Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 
     8978                        Cleanup_handler_flaG); 
    89588979 else if(skin->preskin->abort_handler==2) 
    8959    Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 2|8); 
     8980   Cleanup_set_handlers(Cleanup_handler_handlE, Cleanup_handler_funC, 
     8981                        2 | 8); 
    89608982 
    89618983 printf("cdrskin: scanning for devices ...\n"); 
     
    90339055   if(skin->n_drives<=0 && skin->preskin->scan_demands_drive) 
    90349056     {*exit_value= 4; goto no_drive;} 
    9035    if(Cdrskin_abort_leveL) 
     9057   if(Cdrskin__is_aborting(0)) 
    90369058     goto ex; 
    90379059   ret= Cdrskin_scanbus(skin,1); 
     
    90459067   if(skin->n_drives<=0 && skin->preskin->scan_demands_drive) 
    90469068     {*exit_value= 5; goto no_drive;} 
    9047    if(Cdrskin_abort_leveL) 
     9069   if(Cdrskin__is_aborting(0)) 
    90489070     goto ex; 
    90499071   ret= Cdrskin_scanbus(skin,0); 
     
    90539075 } 
    90549076 if(skin->do_load) { 
    9055    if(Cdrskin_abort_leveL) 
     9077   if(Cdrskin__is_aborting(0)) 
    90569078     goto ex; 
    90579079   ret= Cdrskin_grab_drive(skin,8); 
     
    90709092 } 
    90719093 if(skin->do_checkdrive) { 
    9072    if(Cdrskin_abort_leveL) 
     9094   if(Cdrskin__is_aborting(0)) 
    90739095     goto ex; 
    90749096   ret= Cdrskin_checkdrive(skin,"",(skin->do_checkdrive==2)<<1); 
     
    90789100   if(skin->n_drives<=0) 
    90799101     {*exit_value= 12; goto no_drive;} 
    9080    if(Cdrskin_abort_leveL) 
     9102   if(Cdrskin__is_aborting(0)) 
    90819103     goto ex; 
    90829104   ret= Cdrskin_msinfo(skin,0); 
     
    90879109   if(skin->n_drives<=0) 
    90889110     {*exit_value= 7; goto no_drive;} 
    9089    if(Cdrskin_abort_leveL) 
     9111   if(Cdrskin__is_aborting(0)) 
    90909112     goto ex; 
    90919113   ret= Cdrskin_atip(skin, skin->do_atip == 4 ? 4 : 
     
    90979119   if(skin->n_drives<=0) 
    90989120     {*exit_value= 14; goto no_drive;} 
    9099    if(Cdrskin_abort_leveL) 
     9121   if(Cdrskin__is_aborting(0)) 
    91009122     goto ex; 
    91019123   ret= Cdrskin_list_formats(skin, 0); 
     
    91069128   if(skin->n_drives<=0) 
    91079129     {*exit_value= 8; goto no_drive;} 
    9108    if(Cdrskin_abort_leveL) 
     9130   if(Cdrskin__is_aborting(0)) 
    91099131     goto ex; 
    91109132   ret= Cdrskin_blank(skin,0); 
     
    91169138 if(skin->do_direct_write) { 
    91179139   skin->do_burn= 0; 
    9118    if(Cdrskin_abort_leveL) 
     9140   if(Cdrskin__is_aborting(0)) 
    91199141     goto ex; 
    91209142   ret= Cdrskin_direct_write(skin,0); 
     
    91279149   if(skin->n_drives<=0) 
    91289150     {*exit_value= 10; goto no_drive;} 
    9129    if(Cdrskin_abort_leveL) 
     9151   if(Cdrskin__is_aborting(0)) 
    91309152     goto ex; 
    91319153   ret= Cdrskin_burn(skin,0); 
     
    91349156 } 
    91359157ex:; 
    9136  if(Cdrskin_abort_leveL) 
     9158 if(Cdrskin__is_aborting(0)) 
    91379159   Cdrskin_abort(skin, 0); /* Never comes back */ 
    91389160 return((*exit_value)==0); 
     
    92239245 } 
    92249246 
    9225  if(!Cdrskin_abort_leveL) 
     9247 if(!Cdrskin__is_aborting(0)) 
    92269248   Cdrskin_run(skin,&exit_value,0); 
    92279249 
    92289250ex:; 
    9229  if(Cdrskin_abort_leveL) 
     9251 if(Cdrskin__is_aborting(0)) 
    92309252   Cdrskin_abort(skin, 0); /* Never comes back */ 
    92319253 
  • libburn/trunk/cdrskin/cdrskin_timestamp.h

    r3102 r3103  
    1 #define Cdrskin_timestamP "2010.03.05.090948" 
     1#define Cdrskin_timestamP "2010.03.05.091432"