/[graveman]/graveman/current/src/cdrecord.c
ViewVC logotype

Diff of /graveman/current/src/cdrecord.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.25 by scresto, Sun Mar 27 23:51:07 2005 UTC revision 1.26 by scresto, Tue Mar 29 00:10:26 2005 UTC
# Line 322  gchar *burn_data_getextrapara(Tgrave *Ag Line 322  gchar *burn_data_getextrapara(Tgrave *Ag
322    gchar *Lmodburn = get_combo_value(sc_grave_get_widget(Ag, "datamodburn"));    gchar *Lmodburn = get_combo_value(sc_grave_get_widget(Ag, "datamodburn"));
323    gchar *Lreturn;    gchar *Lreturn;
324    
325    Lreturn = g_strdup_printf("-%s -%s", Lformat, Lmodburn);    Lreturn = g_strdup_printf("-%s %s%s", Lformat, Lmodburn && *Lmodburn ? "-" : "", Lmodburn);
326        
327    g_free(Lmodburn); g_free(Lformat);    g_free(Lmodburn); g_free(Lformat);
328    
# Line 341  static gchar *get_blank_type(Tgrave *Ag, Line 341  static gchar *get_blank_type(Tgrave *Ag,
341  /* copie d'une image iso */  /* copie d'une image iso */
342  gboolean burn_from_image(gchar *Aop, Tgrave *Ag, GError **Aerror) {  gboolean burn_from_image(gchar *Aop, Tgrave *Ag, GError **Aerror) {
343    gchar **Lcmd;    gchar **Lcmd;
344    gchar *Lcommandline, *Lbufgrav, *Ltxt;    gchar *Lcommandline, *Ltxt;
345    GIOChannel *Lcom, *Lcomerr;    GIOChannel *Lcom, *Lcomerr;
346    guint Lcomevent, Lcomerrevent;    guint Lcomevent, Lcomerrevent;
347    gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont");    gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont");
# Line 355  gboolean burn_from_image(gchar *Aop, Tgr Line 355  gboolean burn_from_image(gchar *Aop, Tgr
355    gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid");    gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid");
356    gboolean Ldosimul;    gboolean Ldosimul;
357    GtkWidget *Lvitesse = sc_grave_get_widgetv(Ag, "dst%sspeed", Aop);    GtkWidget *Lvitesse = sc_grave_get_widgetv(Ag, "dst%sspeed", Aop);
   GtkWidget *Lgraveur = sc_grave_get_widgetv(Ag, "dst%scombo", Aop);  
358    GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle"));    GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle"));
359    GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%snotfix", Aop));    GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%snotfix", Aop));
360    gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE;    gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE;
# Line 371  gboolean burn_from_image(gchar *Aop, Tgr Line 370  gboolean burn_from_image(gchar *Aop, Tgr
370    gboolean Leject = FALSE;    gboolean Leject = FALSE;
371    GtkToggleButton *Ltbtn = NULL;    GtkToggleButton *Ltbtn = NULL;
372    gint Lmediadetect1 = _MEDIA_CDRW;    gint Lmediadetect1 = _MEDIA_CDRW;
373      Tdriveinfo *Ldevice = NULL;
374      gchar Lgravident[_BUF_SIZE];
375      g_snprintf(Lgravident, sizeof(Lgravident)-1, "dst%scombo", Aop);
376    
377    Lbufgrav = get_combo_value(Lgraveur);    Ldevice = get_drive_info(Ag, Lgravident);
378      
379    Lbufvitesse = get_combo_value(Lvitesse);    Lbufvitesse = get_combo_value(Lvitesse);
380    
381    if ((Ltbtn = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%smulti", Aop))))    if ((Ltbtn = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%smulti", Aop))))
# Line 398  gboolean burn_from_image(gchar *Aop, Tgr Line 401  gboolean burn_from_image(gchar *Aop, Tgr
401        Lrep = gtk_dialog_run(GTK_DIALOG(Lconfirm));        Lrep = gtk_dialog_run(GTK_DIALOG(Lconfirm));
402        gtk_widget_destroy(Lconfirm);        gtk_widget_destroy(Lconfirm);
403        if (Lrep == GTK_RESPONSE_NO) { */        if (Lrep == GTK_RESPONSE_NO) { */
404        Lstatus = waiting_for_user(_MEDIA_BLANKORAPPENDABLE, Ag, Llmediarequis, &Lmediadetect1, Lbufgrav);        Lstatus = waiting_for_user(_MEDIA_BLANKORAPPENDABLE, Ag, Llmediarequis, &Lmediadetect1, Ldevice);
405    
406        g_slist_free(Llmediarequis);        g_slist_free(Llmediarequis);
407                        
# Line 425  gboolean burn_from_image(gchar *Aop, Tgr Line 428  gboolean burn_from_image(gchar *Aop, Tgr
428    
429      Lblank = get_blank_type(Ag, Lmediadetect1);      Lblank = get_blank_type(Ag, Lmediadetect1);
430      Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 %s%s %s %s %s %s %s %s %s %s '%s' driveropts=burnfree",      Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 %s%s %s %s %s %s %s %s %s %s '%s' driveropts=burnfree",
431          conf_get_string("cdrecord"), Lbufgrav, *Lbufvitesse != '0' ? "speed=" : "",          conf_get_string("cdrecord"), DRIVE_DEV(Ldevice),
432          *Lbufvitesse != '0' ? Lbufvitesse : "",            *Lbufvitesse != '0' ? "speed=" : "", *Lbufvitesse != '0' ? Lbufvitesse : "",  
433          Ldosimul ? " -dummy" : "",  /* simulation ? */          Ldosimul ? " -dummy" : "",  /* simulation ? */
434          Ldosimul || Lnotfix ? " -nofix" : "", /* fixer le cd apres ecriture ? */          Ldosimul || Lnotfix ? " -nofix" : "", /* fixer le cd apres ecriture ? */
435          Lmulti ? " -multi" : "",  /* multi-session */          Lmulti ? " -multi" : "",  /* multi-session */
# Line 527  gboolean burn_from_image(gchar *Aop, Tgr Line 530  gboolean burn_from_image(gchar *Aop, Tgr
530    }    }
531    
532    g_free(Lbufvitesse);    g_free(Lbufvitesse);
   g_free(Lbufgrav);  
533        
534    return Lstatus;    return Lstatus;
535  }  }
# Line 735  gboolean gravepiste(Tgrave *Ag, GError * Line 737  gboolean gravepiste(Tgrave *Ag, GError *
737    GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_data(Ag, "window_burn"));    GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_data(Ag, "window_burn"));
738    GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle"));    GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle"));
739    GtkWidget *Lvitesse = sc_grave_get_widget(Ag, "dstaudiospeed");    GtkWidget *Lvitesse = sc_grave_get_widget(Ag, "dstaudiospeed");
   GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstaudiocombo");  
740    gchar *Lrepertoire = (gchar *)sc_grave_get_data(Ag, "tmpdir");    gchar *Lrepertoire = (gchar *)sc_grave_get_data(Ag, "tmpdir");
741    gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag, "operationstatus");    gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag, "operationstatus");
742    gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort");    gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort");
# Line 752  gboolean gravepiste(Tgrave *Ag, GError * Line 753  gboolean gravepiste(Tgrave *Ag, GError *
753        
754    gint g_out, g_err, Lnbrarg;    gint g_out, g_err, Lnbrarg;
755    gboolean Lstatus = FALSE;    gboolean Lstatus = FALSE;
756    gchar *Lbufvitesse, *Lbufgrav;    gchar *Lbufvitesse;
757      Tdriveinfo *Ldevice = get_drive_info(Ag, "dstaudiocombo");
758    gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiosimul")));    gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiosimul")));
759    gboolean Lnotfix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audionotfix")));    gboolean Lnotfix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audionotfix")));
760    gboolean Ldaomode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiodao")));    gboolean Ldaomode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiodao")));
# Line 768  gboolean gravepiste(Tgrave *Ag, GError * Line 770  gboolean gravepiste(Tgrave *Ag, GError *
770    
771    Lfileslist = make_audio_fileslist(*Ltodo);    Lfileslist = make_audio_fileslist(*Ltodo);
772    Lbufvitesse = get_combo_value(Lvitesse);    Lbufvitesse = get_combo_value(Lvitesse);
   Lbufgrav = get_combo_value(Lgraveur);  
773    
774    *Ltodo = (*Ltodo) * ((Lnbrgravure) + (Lsimul ? 1 : 0));    *Ltodo = (*Ltodo) * ((Lnbrgravure) + (Lsimul ? 1 : 0));
775    
# Line 791  gboolean gravepiste(Tgrave *Ag, GError * Line 792  gboolean gravepiste(Tgrave *Ag, GError *
792        Lrep = gtk_dialog_run(GTK_DIALOG(Lconfirm));        Lrep = gtk_dialog_run(GTK_DIALOG(Lconfirm));
793        gtk_widget_destroy(Lconfirm);        gtk_widget_destroy(Lconfirm);
794        if (Lrep == GTK_RESPONSE_NO) {*/        if (Lrep == GTK_RESPONSE_NO) {*/
795        Lstatus = waiting_for_user(_MEDIA_BLANKORAPPENDABLE, Ag, Llmediarequis , &Lmediadetect1, Lbufgrav);        Lstatus = waiting_for_user(_MEDIA_BLANKORAPPENDABLE, Ag, Llmediarequis , &Lmediadetect1, Ldevice);
796    
797        g_slist_free(Llmediarequis);        g_slist_free(Llmediarequis);
798                        
# Line 814  gboolean gravepiste(Tgrave *Ag, GError * Line 815  gboolean gravepiste(Tgrave *Ag, GError *
815    
816      Lblank = get_blank_type(Ag, Lmediadetect1);      Lblank = get_blank_type(Ag, Lmediadetect1);
817      Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 %s%s %s%s %s %s %s %s %s -pad -audio %s driveropts=burnfree",      Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 %s%s %s%s %s %s %s %s %s -pad -audio %s driveropts=burnfree",
818          conf_get_string("cdrecord"), Lbufgrav, *Lbufvitesse == '0' ? "" : "speed=", *Lbufvitesse == '0' ? "" : Lbufvitesse,          conf_get_string("cdrecord"), DRIVE_DEV(Ldevice),
819            *Lbufvitesse == '0' ? "" : "speed=", *Lbufvitesse == '0' ? "" : Lbufvitesse,
820          Ldosimul ? " -dummy" : "",  /* simulation ? */          Ldosimul ? " -dummy" : "",  /* simulation ? */
821          Ldosimul || Lnotfix ? " -nofix" : "", /* fixer le cd apres ecriture ? */          Ldosimul || Lnotfix ? " -nofix" : "", /* fixer le cd apres ecriture ? */
822          Ldaomode ? " -dao" : "",  /* ecriture en mode DAO, pas de pause entre les pistes */          Ldaomode ? " -dao" : "",  /* ecriture en mode DAO, pas de pause entre les pistes */
# Line 910  _DEB("execution [%s]\n", Lcommandline); Line 912  _DEB("execution [%s]\n", Lcommandline);
912      strcpy(Llasttrack, "00");      strcpy(Llasttrack, "00");
913    }    }
914    
   g_free(Lbufgrav);  
915    g_free(Lbufvitesse);    g_free(Lbufvitesse);
916    g_free(Lfileslist);    g_free(Lfileslist);
917    
# Line 1160  gboolean cdrecord_mediainfo_callback(GIO Line 1161  gboolean cdrecord_mediainfo_callback(GIO
1161    return TRUE;    return TRUE;
1162  }  }
1163    
1164    /* retourne les informations sur le disque courant pour par exemple
1165     * continuer une gravure multi session */
1166  gchar *cdrecord_get_mediainfo(Tgrave *Ag, gchar *Adevice, GError **Aerror)  gchar *cdrecord_get_mediainfo(Tgrave *Ag, gchar *Adevice, GError **Aerror)
1167  {  {
1168    gchar **Lcmd;    gchar **Lcmd;
# Line 1171  gchar *cdrecord_get_mediainfo(Tgrave *Ag Line 1174  gchar *cdrecord_get_mediainfo(Tgrave *Ag
1174    gchar Lmsinfo[_BUF_SIZE] = "";    gchar Lmsinfo[_BUF_SIZE] = "";
1175    GIOChannel *Lcom;    GIOChannel *Lcom;
1176    guint Lcomevent;    guint Lcomevent;
1177    gint Lnbrarg, g_out;    gint Lnbrarg, g_out, g_err;
1178    guint Ltimeout;    guint Ltimeout;
1179    
1180    (*Lcont) = 2;    (*Lcont) = 2;
# Line 1180  gchar *cdrecord_get_mediainfo(Tgrave *Ag Line 1183  gchar *cdrecord_get_mediainfo(Tgrave *Ag
1183    sc_grave_set_data(Ag, &Lmsinfo, "msinfo");    sc_grave_set_data(Ag, &Lmsinfo, "msinfo");
1184        
1185    Lcommandline = g_strdup_printf("%s dev=%s -msinfo", conf_get_string("cdrecord"), Adevice);    Lcommandline = g_strdup_printf("%s dev=%s -msinfo", conf_get_string("cdrecord"), Adevice);
1186  _DEB("execution [%s]", Lcommandline);  printf("???\n");
1187    _DEB("1execution [%s]", Lcommandline);
1188    printf("???\n");
1189    Lstatus = g_shell_parse_argv(Lcommandline, &Lnbrarg, &Lcmd, Aerror);    Lstatus = g_shell_parse_argv(Lcommandline, &Lnbrarg, &Lcmd, Aerror);
1190      printf("youpi c'est la teuf !\n");
1191    g_free(Lcommandline);    g_free(Lcommandline);
1192    if (Lstatus != FALSE) {    if (Lstatus != FALSE) {
1193      *Lcont = 2;      *Lcont = 2;
1194    
1195      printf("youpi c'est la teuf 2!\n");
1196      Lstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, (GSpawnFlags) (G_SPAWN_DO_NOT_REAP_CHILD),      Lstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, (GSpawnFlags) (G_SPAWN_DO_NOT_REAP_CHILD),
1197          NULL, NULL, Lpid, NULL, &g_out, NULL, Aerror);          NULL, NULL, Lpid, NULL, &g_out, &g_err, Aerror);
1198    
1199      Lcom = g_io_channel_unix_new( g_out );      Lcom = g_io_channel_unix_new( g_out );
1200      g_io_channel_set_encoding (Lcom, NULL, NULL);      g_io_channel_set_encoding (Lcom, NULL, NULL);
# Line 1198  _DEB("execution [%s]", Lcommandline); Line 1205  _DEB("execution [%s]", Lcommandline);
1205      while (*Lcont > 0 && *Labort == FALSE) {      while (*Lcont > 0 && *Labort == FALSE) {
1206       gtk_main_iteration();       gtk_main_iteration();
1207      }      }
1208        exit_prog(*Lpid, FALSE, Aerror, NULL);
1209    
1210        g_source_remove(Lcomevent);
1211        g_io_channel_shutdown(Lcom, FALSE, NULL);
1212        g_io_channel_unref(Lcom);
1213        g_spawn_close_pid(*Lpid);
1214    }    }
1215    g_strfreev(Lcmd);    g_strfreev(Lcmd);
1216    
1217    sc_grave_del_data(Ag, "msinfo");    sc_grave_del_data(Ag, "msinfo");
1218    
1219      printf("youpi c'est la teuf 3!\n");
1220    /* attente de la fin du timeout */    /* attente de la fin du timeout */
1221    g_source_remove(Ltimeout);    g_source_remove(Ltimeout);
1222        sc_chomp(Lmsinfo);
1223      _DEB("msinfo = [%s]\n", Lmsinfo);
1224      printf("msinfo = [%s]\n", Lmsinfo);
1225    
1226    return *Lmsinfo ? g_strdup(Lmsinfo) : NULL;    return *Lmsinfo ? g_strdup(Lmsinfo) : NULL;
1227  }  }
1228    

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26