Save only existing files automatically, user must use an explicit SAVE for the first...
authorChristian Thaeter <ct@pipapo.org>
Thu, 8 Nov 2007 05:40:37 +0000 (06:40 +0100)
committerChristian Thaeter <ct@pipapo.org>
Thu, 8 Nov 2007 05:40:37 +0000 (06:40 +0100)
src/rxpd.h
src/rxpd_base.c
src/rxpd_connection_cmd.c
src/rxpd_file.c

index e419bf8..07b7bd2 100644 (file)
@@ -194,7 +194,7 @@ int
 rxpd_file_load (struct rxpd_file* self);
 
 int
-rxpd_file_save (struct rxpd_file* self);
+rxpd_file_save (struct rxpd_file* self, int force);
 
 struct rxpd_file*
 rxpd_file_dump (struct rxpd_file* self, struct rxpd_buffer* out);
index d5b77f0..d4545aa 100644 (file)
@@ -179,7 +179,7 @@ loadsave_files (PSplay node, const enum psplay_order_e which, int level, void* d
       if (data)
         rxpd_file_load (file);
       else
-        rxpd_file_save (file);
+        rxpd_file_save (file, 0);
     }
 
   return PSPLAY_CONT;
index b91f8e5..b4d3c62 100644 (file)
@@ -278,7 +278,7 @@ rxpd_connection_cmd_SAVE (struct rxpd_connection* self)
 {
   RXPD_FILENAME_REQUIRED;
 
-  if (rxpd_file_save (self->file))
+  if (rxpd_file_save (self->file, 1))
     rxpd_buffer_printf (&self->out, "#OK:\n");
   else
     rxpd_buffer_printf (&self->out, "#ERROR: saving file '%s'\n", (const char*)self->file->node.key);
index ba0226e..fb10fd4 100644 (file)
@@ -138,10 +138,16 @@ rxpd_file_load (struct rxpd_file* self)
 
 
 int
-rxpd_file_save (struct rxpd_file* self)
+rxpd_file_save (struct rxpd_file* self, int force)
 {
   char* filename = strdupa (self->node.key);
 
+  if (!force && access (filename, F_OK))
+    {
+      rxpd_log (self->base, LOG_NOTICE, "not saving non existent file '%s'\n", filename);
+      return 0;
+    }
+
   char* slash = filename;
 
   while ((slash = strchr (slash+1, '/')))