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


From: sylvain cresto
Subject: [Graveman-cvs] Changes to graveman/current/src/data.c
Date: Sun, 20 Mar 2005 19:55:41 -0500

Index: graveman/current/src/data.c
diff -u graveman/current/src/data.c:1.7 graveman/current/src/data.c:1.8
--- graveman/current/src/data.c:1.7     Sun Feb 20 17:45:02 2005
+++ graveman/current/src/data.c Mon Mar 21 00:55:22 2005
@@ -27,18 +27,17 @@
 /* appele pour chaques entres de la liste */
 gboolean foreachfiles(GtkTreeModel *Amodel, GtkTreePath *Apath, GtkTreeIter 
*Aiter, gpointer Adata)
 {
-  gint Ltype, Lparenttype;
+  gint Ltype, Lparenttype, Lfd;
   Tgrave *Lg = (Tgrave *)Adata;
   gchar *Lonlyname = NULL, *Lnom = NULL, *Lnomutf8 = NULL;
   gchar *Lonlynameparent = NULL;
-  gchar *Ltmpdir = (gchar *) sc_grave_get_data(Lg, "tmpdir");  
-  GError **Lerror = (GError **) sc_grave_get_data(Lg, "gerror");
-  gchar Lnewname[MAXPATHLEN];
   gchar Lparents[MAXPATHLEN], Ltmp[MAXPATHLEN];
   GtkTreeIter LparentIter;
   GtkTreePath *Lparentpath;
   gboolean Lreturn = FALSE;
 
+  Lfd = GPOINTER_TO_INT (sc_grave_get_data(Lg, "graftfd"));
+
   gtk_tree_model_get(Amodel, Aiter, 0, &Ltype, 2, &Lonlyname, 4, &Lnomutf8, 5, 
&Lnom, -1);
 
   while(gtk_events_pending()) gtk_main_iteration();
@@ -63,26 +62,10 @@
     gtk_tree_path_free(Lparentpath);
 
     if (!Lreturn) {
-      g_snprintf(Lnewname, sizeof(Lnewname)-1, "%s/%s%s", Ltmpdir, Lparents, 
Lonlyname);
-
-      if (Ltype == TYPE_DIR) {
-        /* si c'est un repertoire alors on le cree */
-      _DEB("creation repertoire [%s] car [%s]", Lnewname, Lnom);
-        if (mkdir(Lnewname, 00750)==-1) {
-          _WARN("Erreur lors de la creation du repertoire [%s]", Lnewname);
-          g_set_error(Lerror, G_FILE_ERROR, g_file_error_from_errno(errno), 
"%s %s: %s",
-            _("Cannot create directory"), Lnewname, g_strerror(errno));
-          Lreturn = TRUE;
-        }
-      } else {
-        /* sinon on fais un liens */
-      _DEB("creation lien [%s] car [%s]", Lnewname, Lnom);       
-        if (symlink(Lnom, Lnewname)==-1) {
-          _WARN("Erreur lors de la creation du lien [%s]", Lnewname);
-          g_set_error(Lerror, G_FILE_ERROR, g_file_error_from_errno(errno), 
"%s %s: %s",
-            _("Cannot create symlink"), Lnewname, g_strerror(errno));
-          Lreturn = TRUE;
-        }
+      if (Ltype == TYPE_FILE) {
+      _DEB("creation graft [%s] car [%s]", Lparents, Lnom);       
+        g_snprintf (Ltmp, MAXPATHLEN, "%s=%s\n", Lparents, Lnom);
+        write (Lfd, Ltmp, strlen (Ltmp));
       }
     }
 
@@ -99,26 +82,29 @@
  * temporraire et des liens qui vont servir a creer l'image a graver */
 gboolean preparedata(Tgrave *Ag, GError **Aerror)
 {
-  gchar *Ltmpdir = (gchar *)sc_grave_get_data(Ag, "tmpdir");
+  gchar *Ltmpfile = (gchar *)sc_grave_get_data(Ag, "tmpdir");
   GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle"));
   GtkTreeModel *LTreeModel = 
gtk_tree_view_get_model(GTK_TREE_VIEW(sc_grave_get_data(Ag, "_current_list")));
   gboolean Lstatus = TRUE;
+  gint Lfd = -1;
   
   g_assert(LTreeModel);
 
-  g_snprintf(Ltmpdir, MAXPATHLEN-1, "%s/%s", conf_get_string_def("tmpdir", 
"/tmp"), "gravemanXXXXXX");
+  g_snprintf(Ltmpfile, MAXPATHLEN-1, "%s/%s", conf_get_string_def("tmpdir", 
"/tmp"), "gravemanXXXXXX");
 
   gtk_label_set_text(Ltitle, _("Prepare files..."));
 
-  if (!mkdtemp(Ltmpdir)) {
+  if ((Lfd = g_mkstemp (Ltmpfile)) < 0) {
     g_set_error(Aerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s %s: 
%s", 
-             _("Cannot create directory"), Ltmpdir, g_strerror(errno));
-    *Ltmpdir = 0;
+             _("Cannot create file"), Ltmpfile, g_strerror(errno));
+    *Ltmpfile = 0;
     Lstatus = FALSE;
   } else {
-    
     /* conversion de chaques fichiers */
+    sc_grave_set_data(Ag, GINT_TO_POINTER (Lfd), "graftfd");
     gtk_tree_model_foreach(LTreeModel, foreachfiles, Ag);
+    sc_grave_del_data(Ag, "graftfd");
+    close (Lfd);
     
     /* si Aerror n'est plus NULL c'est qu'il y a eu une erreur ! */
     if ((GError *)*Aerror) Lstatus = FALSE;




reply via email to

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