/[graveman]/graveman/current/src/data.c
ViewVC logotype

Diff of /graveman/current/src/data.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by scresto, Thu Mar 31 22:14:12 2005 UTC revision 1.11 by scresto, Mon May 2 23:18:32 2005 UTC
# Line 29  gboolean foreachfiles(GtkTreeModel *Amod Line 29  gboolean foreachfiles(GtkTreeModel *Amod
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];
# Line 45  gboolean foreachfiles(GtkTreeModel *Amod Line 46  gboolean foreachfiles(GtkTreeModel *Amod
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;
# Line 57  gboolean foreachfiles(GtkTreeModel *Amod Line 66  gboolean foreachfiles(GtkTreeModel *Amod
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    }    }
# Line 78  gboolean foreachfiles(GtkTreeModel *Amod Line 94  gboolean foreachfiles(GtkTreeModel *Amod
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;
# Line 113  gboolean preparedata(Tgrave *Ag, GError Line 145  gboolean preparedata(Tgrave *Ag, GError
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   */   */

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26