Index: graveman/current/src/data.c diff -u graveman/current/src/data.c:1.10 graveman/current/src/data.c:1.11 --- graveman/current/src/data.c:1.10 Thu Mar 31 22:14:12 2005 +++ graveman/current/src/data.c Mon May 2 23:18:32 2005 @@ -29,6 +29,7 @@ { gint Ltype, Lparenttype, Lfd; Tgrave *Lg = (Tgrave *)Adata; + gchar *Ltmpdir = (gchar *)sc_grave_get_data(Lg, "tmpdir"); gchar *Lonlyname = NULL, *Lnom = NULL, *Lnomutf8 = NULL; gchar *Lonlynameparent = NULL; gchar Lparents[MAXPATHLEN], Ltmp[MAXPATHLEN]; @@ -45,6 +46,14 @@ *Lparents=*Ltmp=0; Lparentpath = gtk_tree_path_copy(Apath); +_DEB("debuut avec => [%s] soit => [%s]\n", Lnom, Lonlyname); + +/* if (Ltype == TYPE_DIR) { + _DEB("creation rep => [%s]\n", Lonlyname); + g_snprintf(Ltmp, MAXPATHLEN-1, "%s", Lonlyname); + write(Lfd, Ltmp, strlen(Ltmp)); + }*/ + while (gtk_tree_path_up(Lparentpath)) { if (gtk_tree_model_get_iter(Amodel, &LparentIter, Lparentpath)==FALSE) { Lreturn = TRUE; @@ -57,16 +66,23 @@ g_snprintf(Ltmp, sizeof(Ltmp)-1, "%s/%s", Lonlynameparent, Lparents); strcpy(Lparents, Ltmp); +_DEB("la un rep => [%s]\n", Lparents); g_free(Lonlynameparent); } gtk_tree_path_free(Lparentpath); - if (!Lreturn) { + int lr; if (Ltype == TYPE_FILE) { - _DEB("creation graft [%s] car [%s]", *Lparents ? Lparents : "/" , Lnom); - g_snprintf (Ltmp, MAXPATHLEN, "%s=%s\n", *Lparents ? Lparents : "/", Lnom); - write (Lfd, Ltmp, strlen (Ltmp)); + _DEB("creation graft file [%s/%s] car [%s]", *Lparents ? Lparents : "" , Lonlyname, Lnom); + g_snprintf (Ltmp, MAXPATHLEN-1, "%s/%s=%s\n", *Lparents ? Lparents : "", Lonlyname, Lnom); + lr = write (Lfd, Ltmp, strlen (Ltmp)); + } else { + _DEB("creation graft repertoire [%s/%s]", *Lparents ? Lparents : "" , Lonlyname); + g_snprintf (Ltmp, MAXPATHLEN-1, "%s/%s=%s/tmpdir\n", *Lparents ? Lparents : "", Lonlyname, Ltmpdir); + lr = write (Lfd, Ltmp, strlen (Ltmp)); + } + } } @@ -78,33 +94,49 @@ return Lreturn; } -/* preparation pour la gravure, creation du repertorie +/* preparation pour la gravure, creation du repertoire * temporraire et des liens qui vont servir a creer l'image a graver */ gboolean preparedata(Tgrave *Ag, GError **Aerror) { - gchar *Ltmpfile = (gchar *)sc_grave_get_data(Ag, "tmpdir"); + gchar *Ltmpdir = (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; + gchar Lpathfile[MAXPATHLEN]; gint Lfd = -1; g_assert(LTreeModel); - g_snprintf(Ltmpfile, MAXPATHLEN-1, "%s/%s", conf_get_string_def("tmpdir", "/tmp"), "gravemanXXXXXX"); + g_snprintf(Ltmpdir, MAXPATHLEN-1, "%s/%s", conf_get_string_def("tmpdir", "/tmp"), "gravemanXXXXXX"); gtk_label_set_text(Ltitle, _("Prepare files...")); - if ((Lfd = g_mkstemp (Ltmpfile)) < 0) { + if (!mkdtemp(Ltmpdir)) { + 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; + + return FALSE; + } + + /* empty dir */ + g_snprintf(Lpathfile, MAXPATHLEN-1, "%s/tmpdir", Ltmpdir); + mkdir(Lpathfile, S_IRUSR + S_IXUSR + S_IRGRP + S_IXGRP + S_IROTH + S_IXOTH); + + /* patlist */ + g_snprintf(Lpathfile, MAXPATHLEN-1, "%s/pathlist", Ltmpdir); + if ((Lfd = open (Lpathfile,O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR + S_IWUSR)) < 0) { g_set_error(Aerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s %s: %s", - _("Cannot create file"), Ltmpfile, g_strerror(errno)); - *Ltmpfile = 0; + _("Cannot create file"), Lpathfile, g_strerror(errno)); + *Ltmpdir = 0; + Lstatus = FALSE; } else { - _DEB("repertoire temp [%s]\n", Ltmpfile); + _DEB("repertoire temp [%s]\n", Ltmpdir); /* 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); + sc_grave_del_data(Ag, "graftfd"); /* si Aerror n'est plus NULL c'est qu'il y a eu une erreur ! */ if ((GError *)*Aerror) Lstatus = FALSE; @@ -113,6 +145,26 @@ return Lstatus; } +/* on efface les données temporraires */ +gboolean cleandata(Tgrave *Ag, GError **Aerror) +{ + gchar *Ltmpdir = (gchar *)sc_grave_get_data(Ag, "tmpdir"); + gchar Lname[MAXPATHLEN]; + + return TRUE; + if (!Ltmpdir || !*Ltmpdir) return FALSE; + + g_snprintf(Lname, MAXPATHLEN-1, "%s/pathlist", Ltmpdir); + if (g_file_test(Lname, G_FILE_TEST_IS_REGULAR)) unlink(Lname); + + g_snprintf(Lname, MAXPATHLEN-1, "%s/tmpdir", Ltmpdir); + if (g_file_test(Lname, G_FILE_TEST_IS_DIR)) rmdir(Lname); + + if (g_file_test(Ltmpdir, G_FILE_TEST_IS_DIR)) rmdir(Ltmpdir); + + return TRUE; +} + /* * vim:et:ts=8:sts=2:sw=2 */
_______________________________________________ Graveman-cvs mailing list Graveman-cvs@nongnu.org http://lists.nongnu.org/mailman/listinfo/graveman-cvs