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


From: sylvain cresto
Subject: [Graveman-cvs] Changes to graveman/current/src/tools.c
Date: Thu, 10 Feb 2005 18:12:40 -0500

Index: graveman/current/src/tools.c
diff -u graveman/current/src/tools.c:1.7 graveman/current/src/tools.c:1.8
--- graveman/current/src/tools.c:1.7    Tue Feb  8 02:32:57 2005
+++ graveman/current/src/tools.c        Thu Feb 10 23:12:31 2005
@@ -330,6 +330,42 @@
   }
 }
 
+/* creation de tous les repertoires necessaires */
+gint sc_mkdir(const gchar *Aname, mode_t Amode) {
+  gchar **Llist = g_strsplit(Aname, G_DIR_SEPARATOR_S, 0);
+  gchar *Ldir = NULL, *Ltmp = NULL;
+  gint Lstatus = TRUE;
+  gint i;
+
+  for (i=0; Llist[i]; i++) {
+    if (!*Llist[i]) continue;
+
+    if (Ldir) {
+      Ltmp = g_strconcat(Ldir, "/", Llist[i], NULL);
+      g_free(Ldir);
+    } else {
+      Ltmp = g_strconcat("/", Llist[i], NULL);
+    }
+    Ldir = Ltmp;
+  
+    if (g_file_test(Ldir, G_FILE_TEST_IS_DIR)) continue;
+
+    if (g_file_test(Ldir, G_FILE_TEST_EXISTS)) {
+      Lstatus = FALSE;
+      break;
+    }
+
+    if (mkdir(Ldir, Amode)!=0) {
+      Lstatus = FALSE;
+      break;
+    }
+  }
+  
+  g_free(Ldir);
+  g_strfreev(Llist);
+
+  return Lstatus;
+}
 
 /*
  * vim:et:ts=8:sts=2:sw=2




reply via email to

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