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/matos.c


From: sylvain cresto
Subject: [Graveman-cvs] Changes to graveman/current/src/matos.c
Date: Mon, 16 May 2005 21:16:42 -0400

Index: graveman/current/src/matos.c
diff -u graveman/current/src/matos.c:1.34 graveman/current/src/matos.c:1.35
--- graveman/current/src/matos.c:1.34   Sun May 15 17:37:21 2005
+++ graveman/current/src/matos.c        Tue May 17 01:16:34 2005
@@ -118,7 +118,7 @@
   }
 }
 
-void insert_or_update_drive(gchar *Adev, gchar *Amarque, gchar *Amodel, gchar 
*Aquoi, Tsearchdrive *Adrivedesc)
+void matos_insert_or_update_drive(gchar *Adev, gchar *Amarque, gchar *Amodel, 
gchar *Aquoi, Tsearchdrive *Adrivedesc)
 {
   /* on commence par construire l'identifiant */
   gchar *Lident = g_strdup_printf("%s %s %s", Amarque, Amodel, Aquoi);
@@ -764,9 +764,62 @@
 
 /* try to umount device when it's mounted
  * scan /etc/ftab file to do this */
-gboolean umount_device(Tdriveinfo *Adevice, Tgrave *Ag)
+gboolean matos_umount_device(Tdriveinfo *Adrive, GError **Aerror)
 {
-  
+  gchar *Lcontent = NULL;
+  gint i;
+  gchar **Larrbuf, *Lcur, *s, *Lcurdev = NULL;
+  gchar Lcommand[_BUF_SIZE];
+  GSList *Llistdev;
+  gboolean Lfind = FALSE, Lstatus = FALSE;
+
+  if (!g_file_get_contents("/etc/mtab", &Lcontent, NULL, Aerror) || !Lcontent) 
return FALSE;
+  Larrbuf = g_strsplit(Lcontent, "\n", 0);
+
+  for (i=0; Larrbuf[i] && !Lfind; i++) {
+    s = Lcur = Larrbuf[i];
+    if (!*Lcur) continue;
+
+  _DEB("deb => [%s]", Lcur);
+
+    while (g_ascii_isalnum(*s) || *s=='/') s++;
+    *s=0;
+    if ((s=strchr(Lcur, '='))) Lcur=s+1;
+
+    for (Llistdev = Adrive->dev; Llistdev; Llistdev = g_slist_next(Llistdev)) {
+      Lcurdev = (gchar *) Llistdev->data;
+_DEB("comp de [%s] et [%s]", Lcurdev,Lcur);
+      if (!strcmp(Lcurdev, Lcur)) {
+        Lfind = TRUE;
+        break;
+      }
+    }
+  }
+
+  if (Lfind && Lcurdev) {
+    g_snprintf(Lcommand, sizeof(Lcommand)-1, "/sbin/umount %s", Lcurdev);
+
+    _DEB("try to umount [%s]", Lcommand);
+
+    Lstatus = g_spawn_command_line_async(Lcommand, Aerror);
+  }
+
+  g_strfreev(Larrbuf);
+  g_free(Lcontent);
+
+  return Lstatus;
+}
+
+gboolean matos_maj_drive_info(Tdriveinfo *Adrive, gchar *Adev, GError **Aerror)
+{
+  Adrive->type = 0;
+
+  cdrecord_maj_drive_info(Adrive, Adev, Aerror);
+
+  /* use /proc/sys/dev/cdrom/info with linux to find DVD capability */
+  proc_maj_drive_info(Adrive, Aerror);
+
+  return TRUE;
 }
 
 /*




reply via email to

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