| 29 |
{ |
{ |
| 30 |
gint Ltype, Lparenttype, Lfd; |
gint Ltype, Lparenttype, Lfd; |
| 31 |
Tgrave *Lg = (Tgrave *)Adata; |
Tgrave *Lg = (Tgrave *)Adata; |
| 32 |
|
gchar *Ltmpdir = (gchar *)sc_grave_get_data(Lg, "tmpdir"); |
| 33 |
gchar *Lonlyname = NULL, *Lnom = NULL, *Lnomutf8 = NULL; |
gchar *Lonlyname = NULL, *Lnom = NULL, *Lnomutf8 = NULL; |
| 34 |
gchar *Lonlynameparent = NULL; |
gchar *Lonlynameparent = NULL; |
| 35 |
gchar Lparents[MAXPATHLEN], Ltmp[MAXPATHLEN]; |
gchar Lparents[MAXPATHLEN], Ltmp[MAXPATHLEN]; |
| 46 |
|
|
| 47 |
*Lparents=*Ltmp=0; |
*Lparents=*Ltmp=0; |
| 48 |
Lparentpath = gtk_tree_path_copy(Apath); |
Lparentpath = gtk_tree_path_copy(Apath); |
| 49 |
|
_DEB("debuut avec => [%s] soit => [%s]\n", Lnom, Lonlyname); |
| 50 |
|
|
| 51 |
|
/* if (Ltype == TYPE_DIR) { |
| 52 |
|
_DEB("creation rep => [%s]\n", Lonlyname); |
| 53 |
|
g_snprintf(Ltmp, MAXPATHLEN-1, "%s", Lonlyname); |
| 54 |
|
write(Lfd, Ltmp, strlen(Ltmp)); |
| 55 |
|
}*/ |
| 56 |
|
|
| 57 |
while (gtk_tree_path_up(Lparentpath)) { |
while (gtk_tree_path_up(Lparentpath)) { |
| 58 |
if (gtk_tree_model_get_iter(Amodel, &LparentIter, Lparentpath)==FALSE) { |
if (gtk_tree_model_get_iter(Amodel, &LparentIter, Lparentpath)==FALSE) { |
| 59 |
Lreturn = TRUE; |
Lreturn = TRUE; |
| 66 |
|
|
| 67 |
g_snprintf(Ltmp, sizeof(Ltmp)-1, "%s/%s", Lonlynameparent, Lparents); |
g_snprintf(Ltmp, sizeof(Ltmp)-1, "%s/%s", Lonlynameparent, Lparents); |
| 68 |
strcpy(Lparents, Ltmp); |
strcpy(Lparents, Ltmp); |
| 69 |
|
_DEB("la un rep => [%s]\n", Lparents); |
| 70 |
g_free(Lonlynameparent); |
g_free(Lonlynameparent); |
| 71 |
} |
} |
| 72 |
gtk_tree_path_free(Lparentpath); |
gtk_tree_path_free(Lparentpath); |
|
|
|
| 73 |
if (!Lreturn) { |
if (!Lreturn) { |
| 74 |
|
int lr; |
| 75 |
if (Ltype == TYPE_FILE) { |
if (Ltype == TYPE_FILE) { |
| 76 |
_DEB("creation graft [%s] car [%s]", *Lparents ? Lparents : "/" , Lnom); |
_DEB("creation graft file [%s/%s] car [%s]", *Lparents ? Lparents : "" , Lonlyname, Lnom); |
| 77 |
g_snprintf (Ltmp, MAXPATHLEN, "%s=%s\n", *Lparents ? Lparents : "/", Lnom); |
g_snprintf (Ltmp, MAXPATHLEN-1, "%s/%s=%s\n", *Lparents ? Lparents : "", Lonlyname, Lnom); |
| 78 |
write (Lfd, Ltmp, strlen (Ltmp)); |
lr = write (Lfd, Ltmp, strlen (Ltmp)); |
| 79 |
|
} else { |
| 80 |
|
_DEB("creation graft repertoire [%s/%s]", *Lparents ? Lparents : "" , Lonlyname); |
| 81 |
|
g_snprintf (Ltmp, MAXPATHLEN-1, "%s/%s=%s/tmpdir\n", *Lparents ? Lparents : "", Lonlyname, Ltmpdir); |
| 82 |
|
lr = write (Lfd, Ltmp, strlen (Ltmp)); |
| 83 |
|
|
| 84 |
} |
} |
| 85 |
|
|
| 86 |
} |
} |
| 87 |
|
|
| 88 |
} |
} |
| 94 |
return Lreturn; |
return Lreturn; |
| 95 |
} |
} |
| 96 |
|
|
| 97 |
/* preparation pour la gravure, creation du repertorie |
/* preparation pour la gravure, creation du repertoire |
| 98 |
* temporraire et des liens qui vont servir a creer l'image a graver */ |
* temporraire et des liens qui vont servir a creer l'image a graver */ |
| 99 |
gboolean preparedata(Tgrave *Ag, GError **Aerror) |
gboolean preparedata(Tgrave *Ag, GError **Aerror) |
| 100 |
{ |
{ |
| 101 |
gchar *Ltmpfile = (gchar *)sc_grave_get_data(Ag, "tmpdir"); |
gchar *Ltmpdir = (gchar *)sc_grave_get_data(Ag, "tmpdir"); |
| 102 |
GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle")); |
GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle")); |
| 103 |
GtkTreeModel *LTreeModel = gtk_tree_view_get_model(GTK_TREE_VIEW(sc_grave_get_data(Ag, "_current_list"))); |
GtkTreeModel *LTreeModel = gtk_tree_view_get_model(GTK_TREE_VIEW(sc_grave_get_data(Ag, "_current_list"))); |
| 104 |
gboolean Lstatus = TRUE; |
gboolean Lstatus = TRUE; |
| 105 |
|
gchar Lpathfile[MAXPATHLEN]; |
| 106 |
gint Lfd = -1; |
gint Lfd = -1; |
| 107 |
|
|
| 108 |
g_assert(LTreeModel); |
g_assert(LTreeModel); |
| 109 |
|
|
| 110 |
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"); |
| 111 |
gtk_label_set_text(Ltitle, _("Prepare files...")); |
gtk_label_set_text(Ltitle, _("Prepare files...")); |
| 112 |
|
|
| 113 |
if ((Lfd = g_mkstemp (Ltmpfile)) < 0) { |
if (!mkdtemp(Ltmpdir)) { |
| 114 |
|
g_set_error(Aerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s %s: %s", |
| 115 |
|
_("Cannot create directory"), Ltmpdir, g_strerror(errno)); |
| 116 |
|
*Ltmpdir = 0; |
| 117 |
|
|
| 118 |
|
return FALSE; |
| 119 |
|
} |
| 120 |
|
|
| 121 |
|
/* empty dir */ |
| 122 |
|
g_snprintf(Lpathfile, MAXPATHLEN-1, "%s/tmpdir", Ltmpdir); |
| 123 |
|
mkdir(Lpathfile, S_IRUSR + S_IXUSR + S_IRGRP + S_IXGRP + S_IROTH + S_IXOTH); |
| 124 |
|
|
| 125 |
|
/* patlist */ |
| 126 |
|
g_snprintf(Lpathfile, MAXPATHLEN-1, "%s/pathlist", Ltmpdir); |
| 127 |
|
if ((Lfd = open (Lpathfile,O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR + S_IWUSR)) < 0) { |
| 128 |
g_set_error(Aerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s %s: %s", |
g_set_error(Aerror, G_FILE_ERROR, g_file_error_from_errno(errno), "%s %s: %s", |
| 129 |
_("Cannot create file"), Ltmpfile, g_strerror(errno)); |
_("Cannot create file"), Lpathfile, g_strerror(errno)); |
| 130 |
*Ltmpfile = 0; |
*Ltmpdir = 0; |
| 131 |
|
|
| 132 |
Lstatus = FALSE; |
Lstatus = FALSE; |
| 133 |
} else { |
} else { |
| 134 |
_DEB("repertoire temp [%s]\n", Ltmpfile); |
_DEB("repertoire temp [%s]\n", Ltmpdir); |
| 135 |
/* conversion de chaques fichiers */ |
/* conversion de chaques fichiers */ |
| 136 |
sc_grave_set_data(Ag, GINT_TO_POINTER (Lfd), "graftfd"); |
sc_grave_set_data(Ag, GINT_TO_POINTER (Lfd), "graftfd"); |
| 137 |
gtk_tree_model_foreach(LTreeModel, foreachfiles, Ag); |
gtk_tree_model_foreach(LTreeModel, foreachfiles, Ag); |
|
sc_grave_del_data(Ag, "graftfd"); |
|
| 138 |
close (Lfd); |
close (Lfd); |
| 139 |
|
sc_grave_del_data(Ag, "graftfd"); |
| 140 |
|
|
| 141 |
/* si Aerror n'est plus NULL c'est qu'il y a eu une erreur ! */ |
/* si Aerror n'est plus NULL c'est qu'il y a eu une erreur ! */ |
| 142 |
if ((GError *)*Aerror) Lstatus = FALSE; |
if ((GError *)*Aerror) Lstatus = FALSE; |
| 145 |
return Lstatus; |
return Lstatus; |
| 146 |
} |
} |
| 147 |
|
|
| 148 |
|
/* on efface les données temporraires */ |
| 149 |
|
gboolean cleandata(Tgrave *Ag, GError **Aerror) |
| 150 |
|
{ |
| 151 |
|
gchar *Ltmpdir = (gchar *)sc_grave_get_data(Ag, "tmpdir"); |
| 152 |
|
gchar Lname[MAXPATHLEN]; |
| 153 |
|
|
| 154 |
|
return TRUE; |
| 155 |
|
if (!Ltmpdir || !*Ltmpdir) return FALSE; |
| 156 |
|
|
| 157 |
|
g_snprintf(Lname, MAXPATHLEN-1, "%s/pathlist", Ltmpdir); |
| 158 |
|
if (g_file_test(Lname, G_FILE_TEST_IS_REGULAR)) unlink(Lname); |
| 159 |
|
|
| 160 |
|
g_snprintf(Lname, MAXPATHLEN-1, "%s/tmpdir", Ltmpdir); |
| 161 |
|
if (g_file_test(Lname, G_FILE_TEST_IS_DIR)) rmdir(Lname); |
| 162 |
|
|
| 163 |
|
if (g_file_test(Ltmpdir, G_FILE_TEST_IS_DIR)) rmdir(Ltmpdir); |
| 164 |
|
|
| 165 |
|
return TRUE; |
| 166 |
|
} |
| 167 |
|
|
| 168 |
/* |
/* |
| 169 |
* vim:et:ts=8:sts=2:sw=2 |
* vim:et:ts=8:sts=2:sw=2 |
| 170 |
*/ |
*/ |