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


From: sylvain cresto
Subject: [Graveman-cvs] Changes to graveman/current/src/config.c
Date: Thu, 14 Apr 2005 19:23:23 -0400

Index: graveman/current/src/config.c
diff -u graveman/current/src/config.c:1.32 graveman/current/src/config.c:1.33
--- graveman/current/src/config.c:1.32  Thu Apr 14 21:56:32 2005
+++ graveman/current/src/config.c       Thu Apr 14 23:23:17 2005
@@ -167,13 +167,31 @@
   fprintf(Lfic, "manual=%d\n", Ldrive->manual == TRUE ? 1 : 0);
 }
 
+gchar *dump_file_list(char *Abuf, gint Asize)
+{
+  GSList *Llistconfig = get_config_path();
+  GSList *Lcurlist;
+
+  memset(Abuf, 0, Asize);
+
+  for (Lcurlist = Llistconfig; Lcurlist; Lcurlist = g_slist_next(Lcurlist)) {
+    if (*Abuf) strncat(Abuf, "\n", Asize-strlen(Abuf)-5);
+    strncat(Abuf, Lcurlist->data, Asize-strlen(Abuf)-5);
+  }
+
+  g_slist_free(Llistconfig);
+
+  return Abuf;
+}
+
 /* ecriture du fichier de configuration */
 gboolean write_conf(GError **Aerror)
 {
   FILE *Lfic;
   gchar *Ltmp;
+  
   if (!get_config_file(W_OK)) return FALSE;
-g_warning("le conf => %s\n", Gfileconf);
+
   if (!(Lfic=fopen(Gfileconf, "w"))) {
     Ltmp = g_strdup_printf(_("Cannot create %s: %s"), Gfileconf, 
g_strerror(errno));
     g_set_error(Aerror, G_FILE_ERROR, g_file_error_from_errno(errno), Ltmp, 
g_strerror(errno)); 
@@ -470,6 +488,7 @@
 {
   TProgRequis *Lcurprog;
   gchar *Lprog;
+  gboolean Lstatus = TRUE;
   GtkWidget *Lwindow1 = sc_grave_get_widget(Ag, "topwindow");
 
   if (Aop & UPDATE_SAVEONEXIT_VALUE) {
@@ -534,10 +553,24 @@
   }
 
   if (Aop & WRITE_CONFIG) {    
-    return write_conf(Aerror);
+    Lstatus = write_conf(Aerror);
+    if (!Lstatus) {
+      gchar Lbuf[_BUF_SIZE];
+      gchar *Lfullmsg = g_strdup_printf(_("Cannot save configuration file !\nI 
have tried on those files:\n%s"),
+          dump_file_list(Lbuf, sizeof(Lbuf)-1));
+      GtkWidget *Ldialog = gtk_message_dialog_new(GTK_IS_WIDGET(Lwindow1) ? 
GTK_WINDOW(Lwindow1) : NULL,
+         GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+         Lfullmsg);
+      
+      g_warning(Lfullmsg);
+
+      gtk_dialog_run(GTK_DIALOG(Ldialog));
+      gtk_widget_destroy(Ldialog);
+      g_free(Lfullmsg);
+    }
   }
 
-  return TRUE;
+  return Lstatus;
 }
 
 /* renvoi une valeur du fichier de configuration */




reply via email to

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