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

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

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

revision 1.8 by scresto, Tue Mar 22 00:27:13 2005 UTC revision 1.9 by scresto, Sun Mar 27 23:51:07 2005 UTC
# Line 106  gboolean cdrdao_grave_callback(GIOChanne Line 106  gboolean cdrdao_grave_callback(GIOChanne
106    *Lbuffer = 0;    *Lbuffer = 0;
107    Lstatus = g_io_channel_read_chars(Astd, Lbuffer, _BUF_SIZE-1, &Llu, NULL);      Lstatus = g_io_channel_read_chars(Astd, Lbuffer, _BUF_SIZE-1, &Llu, NULL);  
108    if (!*Lbuffer || Lstatus == G_IO_STATUS_ERROR || Lstatus == G_IO_STATUS_AGAIN) {    if (!*Lbuffer || Lstatus == G_IO_STATUS_ERROR || Lstatus == G_IO_STATUS_AGAIN) {
109      return FALSE;      return TRUE;
110    }    }
111    Lbuffer[Llu]=0;    Lbuffer[Llu]=0;
112  _DEB("===>%s", Lbuffer);  _DEB("===>%s", Lbuffer);
# Line 329  gboolean copycd(Tgrave *Ag, GError **Aer Line 329  gboolean copycd(Tgrave *Ag, GError **Aer
329      if (Lcurcd > 1 && !Ldosimul) {      if (Lcurcd > 1 && !Ldosimul) {
330        /* copie sur un nouveau cd, on demande a l'utilisateur d'inserer le        /* copie sur un nouveau cd, on demande a l'utilisateur d'inserer le
331         * nouveau cd vierge */         * nouveau cd vierge */
332          GSList *Llmediarequis = g_slist_append(NULL, GINT_TO_POINTER(_MEDIA_CDR + _MEDIA_APPENDABLE));
333          gboolean Lstatus;
334          Llmediarequis = g_slist_append(Llmediarequis, GINT_TO_POINTER(_MEDIA_CDRW + _MEDIA_APPENDABLE));
335    
336  /*      gint Lrep;  /*      gint Lrep;
337        GtkWidget *Lconfirm = gtk_message_dialog_new(Lwindow,        GtkWidget *Lconfirm = gtk_message_dialog_new(Lwindow,
338                                                GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,                                                GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,
# Line 337  gboolean copycd(Tgrave *Ag, GError **Aer Line 341  gboolean copycd(Tgrave *Ag, GError **Aer
341        Lrep = gtk_dialog_run(GTK_DIALOG(Lconfirm));        Lrep = gtk_dialog_run(GTK_DIALOG(Lconfirm));
342        gtk_widget_destroy(Lconfirm);        gtk_widget_destroy(Lconfirm);
343        if (Lrep == GTK_RESPONSE_NO) {*/        if (Lrep == GTK_RESPONSE_NO) {*/
344        if (waiting_for_user("", Ag, _MEDIA_CDR + _MEDIA_APPENDABLE , &Lmediadetect1, Lbufgrav)==FALSE) {        Lstatus = waiting_for_user(_MEDIA_BLANKORAPPENDABLE, Ag, Llmediarequis, &Lmediadetect1, Lbufgrav);
345          g_slist_free(Llmediarequis);
346    
347          if (Lstatus==FALSE) {
348          /* si c'est non alors on arrete */          /* si c'est non alors on arrete */
349          *Labort = TRUE;          *Labort = TRUE;
350          Lstatus = TRUE;          Lstatus = TRUE;
351        }        }
   
352      }      }
353    
354  /*    Lbuftitle = get_title(Lnbrgravure, Lcurcd, Ldosimul);  /*    Lbuftitle = get_title(Lnbrgravure, Lcurcd, Ldosimul);
# Line 465  _DEB("execution [%s]\n", Lcommandline); Line 471  _DEB("execution [%s]\n", Lcommandline);
471    
472    
473  /* retourne les infos sur le media inseré dans le lecteur */  /* retourne les infos sur le media inseré dans le lecteur */
474  gint get_cdinfo(gchar *Adevice, GError **Aerror)  gint get_cdinfo(Tgrave *Ag, gchar *Adevice, GError **Aerror)
475  {  {
476    gchar Lcommandline[_BUF_SIZE];    gchar Lcommandline[_BUF_SIZE];
477    gboolean Lstatus;    gboolean Lstatus;
   gint Lexit = 0;  
   gchar *Lout = NULL, *Lerr = NULL;  
478    gchar **Larrbuf;    gchar **Larrbuf;
479      gchar **Lcmd;
480    gint i;    gint i;
481    gint Llu = _MEDIA_NONE;    gint Llu = _MEDIA_NONE;
482      gint g_err, g_out, Lnbrarg;
483      GIOChannel *Lcom;
484      guint Lcomevent;
485      gint Lloccont = 2;
486      gint *Lpid = (gint *)sc_grave_get_data(Ag, "pid");
487      GString *Loutput;
488    
489    g_snprintf(Lcommandline, sizeof(Lcommandline)-1, "%s disk-info --device %s", conf_get_string("cdrdao"), Adevice);    g_snprintf(Lcommandline, sizeof(Lcommandline)-1, "%s disk-info --device %s", conf_get_string("cdrdao"), Adevice);
490      if (!g_shell_parse_argv(Lcommandline, &Lnbrarg, &Lcmd, Aerror)) return 0;
491    
492    
493    Lstatus = g_spawn_command_line_sync(Lcommandline, &Lout, &Lerr, &Lexit, Aerror);    Lstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, (GSpawnFlags) (G_SPAWN_DO_NOT_REAP_CHILD), NULL, NULL,
494          Lpid, NULL, &g_out, &g_err, Aerror);
495      g_strfreev(Lcmd);
496    
497    if (Lstatus == FALSE || Lexit != 0) {    if (Lstatus == FALSE) {
     g_free(Lout); g_free(Lerr);  
498      return 0;      return 0;
499    }    }
500  printf("lout = %s\n", Lout);  
501    Larrbuf = g_strsplit(Lout, "\n", 0);    Loutput = g_string_new("");
502      sc_grave_set_data(Ag, Loutput, "buffer");
503      sc_grave_set_data(Ag, &Lloccont, "loccont");
504      
505      Lcom = g_io_channel_unix_new( g_out );
506      g_io_channel_set_encoding (Lcom, NULL, NULL);
507      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
508      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
509                                          read_all_output_callback, Ag);
510    
511      while (Lloccont > 0) {
512        gtk_main_iteration();
513      }
514    
515      g_source_remove(Lcomevent);
516    
517      g_io_channel_shutdown(Lcom, FALSE, NULL);
518      g_io_channel_unref(Lcom);
519      g_spawn_close_pid(*Lpid);
520    printf(" LU = >%s\n", Loutput->str);  
521      Larrbuf = g_strsplit(Loutput->str, "\n", 0);
522    
523      g_string_free(Loutput, TRUE);
524    
525      sc_grave_del_data(Ag, "loccount");
526      sc_grave_del_data(Ag, "buffer");
527    
528    
529    for (i=0; Larrbuf[i]; i++) {    for (i=0; Larrbuf[i]; i++) {
530      if (!*Larrbuf[i]) continue;      if (!*Larrbuf[i]) continue;
# Line 496  printf("lout = %s\n", Lout); Line 536  printf("lout = %s\n", Lout);
536      } else if (!strncmp(Larrbuf[i], CDRDAO_TOCTYPE, strlen(CDRDAO_TOCTYPE))) {      } else if (!strncmp(Larrbuf[i], CDRDAO_TOCTYPE, strlen(CDRDAO_TOCTYPE))) {
537        if (strstr(Larrbuf[i], CDRDAO_CD)) {        if (strstr(Larrbuf[i], CDRDAO_CD)) {
538          Llu += _MEDIA_CD;          Llu += _MEDIA_CD;
539            printf("oui cd !\n");
540        }        }
541      } else if (!strncmp(Larrbuf[i], CDRDAO_CDR, strlen(CDRDAO_CDR))) {      } else if (!strncmp(Larrbuf[i], CDRDAO_CDR, strlen(CDRDAO_CDR))) {
542        if (!strstr(Larrbuf[i], CDRDAO_NA)) {        if (!strstr(Larrbuf[i], CDRDAO_NA)) {
543          Llu += _MEDIA_CDR;          Llu += _MEDIA_CDR;
544            printf("oui cdr !\n");
545        }        }
546      } else if (!strncmp(Larrbuf[i], CDRDAO_EMPTY, strlen(CDRDAO_EMPTY))) {      } else if (!strncmp(Larrbuf[i], CDRDAO_EMPTY, strlen(CDRDAO_EMPTY))) {
547        if (strstr(Larrbuf[i], CDRDAO_YES)) {        if (strstr(Larrbuf[i], CDRDAO_YES)) {
# Line 512  printf("lout = %s\n", Lout); Line 554  printf("lout = %s\n", Lout);
554      } else if (!strncmp(Larrbuf[i], CDRDAO_APPENDABLE, strlen(CDRDAO_APPENDABLE))) {      } else if (!strncmp(Larrbuf[i], CDRDAO_APPENDABLE, strlen(CDRDAO_APPENDABLE))) {
555        if (!strstr(Larrbuf[i], CDRDAO_NO)) {        if (!strstr(Larrbuf[i], CDRDAO_NO)) {
556          Llu += _MEDIA_APPENDABLE;          Llu += _MEDIA_APPENDABLE;
557            printf("oui appednable !\n");
558        }        }
559      }      }
560    }    }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

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