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

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

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

revision 1.4 by scresto, Sun Mar 27 23:51:07 2005 UTC revision 1.5 by scresto, Tue Mar 29 00:10:26 2005 UTC
# Line 35  Line 35 
35  #define DVDRWMEDIAINFO_COMPLETE "complete"  #define DVDRWMEDIAINFO_COMPLETE "complete"
36    
37  /* retourne les infos sur le media inseré dans le lecteur */  /* retourne les infos sur le media inseré dans le lecteur */
38  gint get_dvdinfo(Tgrave *Ag, gchar *Adevice, GError **Aerror)  gint get_dvdinfo(Tgrave *Ag, Tdriveinfo *Adevice, GError **Aerror)
39  {  {
40    gchar Lcommandline[_BUF_SIZE];    gchar Lcommandline[_BUF_SIZE];
41    gboolean Lstatus;    gboolean Lstatus;
42    gint Lexit = 0;    gchar **Lcmd;
   gchar *Lout = NULL, *Lerr = NULL;  
43    gchar **Larrbuf;    gchar **Larrbuf;
44    gint i;    gint i;
45    gint Llu = _MEDIA_NONE;    gint Llu = _MEDIA_NONE;
46      gint g_err, g_out, Lnbrarg;
47      GIOChannel *Lcom;
48      guint Lcomevent;
49      gint Lloccont = 2;
50      gint *Lpid = (gint *)sc_grave_get_data(Ag, "pid");
51      GString *Loutput;
52    
53      g_snprintf(Lcommandline, sizeof(Lcommandline)-1, "%s %s", conf_get_string("dvd+rw-mediainfo"),
54          get_dvdrwtools_bus(Adevice));
55    _DEB("execution de [%s]\n", Lcommandline);
56      if (!g_shell_parse_argv(Lcommandline, &Lnbrarg, &Lcmd, Aerror)) return 0;
57    
58      Lstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, (GSpawnFlags) (G_SPAWN_DO_NOT_REAP_CHILD), NULL, NULL, Lpid,
59          NULL, &g_out, &g_err, Aerror);
60      g_strfreev(Lcmd);
61    
62    g_snprintf(Lcommandline, sizeof(Lcommandline)-1, "%s %s", conf_get_string("dvd+rw-mediainfo"), Adevice);    if (Lstatus == FALSE) {
63        return 0;
64      }
65    
66    Lstatus = g_spawn_command_line_sync(Lcommandline, &Lout, &Lerr, &Lexit, Aerror);    Loutput = g_string_new("");
67      sc_grave_set_data(Ag, Loutput, "buffer");
68      sc_grave_set_data(Ag, &Lloccont, "loccont");
69    
70      Lcom = g_io_channel_unix_new( g_out );
71      g_io_channel_set_encoding (Lcom, NULL, NULL);
72      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
73      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
74                                          read_all_output_callback, Ag);
75    
76    if (Lstatus == FALSE || Lexit != 0) {    while (Lloccont > 0) {
77      g_free(Lout); g_free(Lerr);      gtk_main_iteration();
     return FALSE;  
78    }    }
79      exit_prog(*Lpid, FALSE, Aerror, NULL);
80    
81      g_source_remove(Lcomevent);
82    
83    Larrbuf = g_strsplit(Lout, "\n", 0);    g_io_channel_shutdown(Lcom, FALSE, NULL);
84      g_io_channel_unref(Lcom);
85      g_spawn_close_pid(*Lpid);
86    printf(" LU = >%s\n", Loutput->str);  
87      Larrbuf = g_strsplit(Loutput->str, "\n", 0);
88    
89    for (i=0; Larrbuf[i]; i++) {    for (i=0; Larrbuf[i]; i++) {
90      if (!*Larrbuf[i]) continue;      if (!*Larrbuf[i]) continue;

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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