graveman-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Graveman-cvs] Changes to graveman/current/src/cdrdao.c


From: sylvain cresto
Subject: [Graveman-cvs] Changes to graveman/current/src/cdrdao.c
Date: Sun, 27 Feb 2005 20:28:12 -0500

Index: graveman/current/src/cdrdao.c
diff -u graveman/current/src/cdrdao.c:1.3 graveman/current/src/cdrdao.c:1.4
--- graveman/current/src/cdrdao.c:1.3   Sat Feb 26 16:15:40 2005
+++ graveman/current/src/cdrdao.c       Mon Feb 28 01:28:09 2005
@@ -53,6 +53,12 @@
 #define CDRDAO_BUFFERS "Buffers "
 #define CDRDAO_INCOMPATIBLE_MEDIUM "Medium in recorder device is not empty and 
not appendable"
 
+/* detection des media */
+#define CDRDAO_CDRW "CD-RW"
+#define CDRDAO_YES "yes"
+#define CDRDAO_CDR "CD-R medium"
+#define CDRDAO_EMPTY "CD-R empty"
+
 static gchar *get_blank_type(Tgrave *Ag)
 {
   gboolean *Luseautoblank = (gboolean *) sc_grave_get_data(Ag, "useautoblank");
@@ -457,6 +463,51 @@
 }
 
 
+/* retourne les infos sur le media inseré dans le lecteur */
+gint get_cdinfo(gchar *Adevice, GError **Aerror)
+{
+  gchar Lcommandline[_BUF_SIZE];
+  gboolean Lstatus;
+  gint Lexit = 0;
+  gchar *Lout = NULL, *Lerr = NULL;
+  gchar **Larrbuf;
+  gint i;
+  gint Llu = _MEDIA_NONE;
+
+  g_snprintf(Lcommandline, sizeof(Lcommandline)-1, "%s disk-info --device %s", 
conf_get_string("cdrdao"), Adevice);
+
+  Lstatus = g_spawn_command_line_sync(Lcommandline, &Lout, &Lerr, &Lexit, 
Aerror);
+
+  if (Lstatus == FALSE || Lexit != 0) {
+    g_free(Lout); g_free(Lerr);
+    return FALSE;
+  }
+
+  Larrbuf = g_strsplit(Lout, "\n", 0);
+
+  for (i=0; Larrbuf[i]; i++) {
+    if (!*Larrbuf[i]) continue;
+
+    if (!strncmp(Larrbuf[i], CDRDAO_CDRW, strlen(CDRDAO_CDRW))) {
+      if (strstr(Larrbuf[i], CDRDAO_YES)) {
+printf("ok c'est un CDRW ! \n");        
+        Llu |= _MEDIA_CDRW;
+      }
+    } else if (!strncmp(Larrbuf[i], CDRDAO_CDR, strlen(CDRDAO_CDR))) {
+      if (strstr(Larrbuf[i], CDRDAO_YES)) {
+printf("ok c'est un CDR ! \n");        
+        Llu |= _MEDIA_CDR;
+      }
+    } else if (!strncmp(Larrbuf[i], CDRDAO_EMPTY, strlen(CDRDAO_EMPTY))) {
+      if (strstr(Larrbuf[i], CDRDAO_YES)) Llu &= _MEDIA_BLANK;
+    }
+  }
+  
+  g_strfreev(Larrbuf);
+
+  return Llu;
+}
+
 
 /*
  * vim:et:ts=8:sts=2:sw=2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]