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 |
*/ |
*/ |