New CLEAR command, removes all rules from a list
authorChristian Thaeter <ct@pipapo.org>
Thu, 8 Nov 2007 04:11:04 +0000 (05:11 +0100)
committerChristian Thaeter <ct@pipapo.org>
Thu, 8 Nov 2007 04:11:04 +0000 (05:11 +0100)
Protocol change, DELETE now deletes files from disk

src/rxpd.h
src/rxpd_connection_cmd.c
src/rxpd_file.c
tests/20simplecommands.tests
tests/30listmanipulation.tests

index e49a0a0..e419bf8 100644 (file)
@@ -54,7 +54,8 @@
   RXPD_CMD(PREPEND,     "new rules in front of a list")         \
   RXPD_CMD(REMOVE,      "rules from a list")                    \
   RXPD_CMD(REPLACE,     "a rule in a list with new rules")      \
-  RXPD_CMD(DELETE,      "a list from memory")                   \
+  RXPD_CMD(CLEAR,       "list rules in memory")                 \
+  RXPD_CMD(DELETE,      "a list from disk")                     \
   RXPD_CMD(LOAD,        "a list from disk")                     \
   RXPD_CMD(SAVE,        "a list to disk")                       \
   RXPD_CMD(FETCH,       "a list from a remote server")          \
index 620596b..b91f8e5 100644 (file)
@@ -285,6 +285,15 @@ rxpd_connection_cmd_SAVE (struct rxpd_connection* self)
 }
 
 
+void
+rxpd_connection_cmd_CLEAR (struct rxpd_connection* self)
+{
+  RXPD_FILENAME_REQUIRED;
+
+  rxpd_file_rules_delete (self->file);
+  rxpd_buffer_printf (&self->out, "#OK:\n");
+}
+
 void
 rxpd_connection_cmd_DELETE (struct rxpd_connection* self)
 {
index 4d6c278..ba0226e 100644 (file)
@@ -60,6 +60,17 @@ rxpd_file_delete (struct rxpd_file* self)
     {
       rxpd_file_rules_delete (self);
       psplay_remove (&self->base->files, &self->node);
+
+      while (1) 
+        {
+          remove ((char*)self->node.key);
+          char* slash = strrchr ((char*)self->node.key, '/');
+          if (slash)
+            *slash = '\0';
+          else
+            break;
+        }
+
       free ((void*)self->node.key);
       free (self);
     }
index 90317be..b85a373 100644 (file)
@@ -41,7 +41,8 @@ out: # APPEND new rules to a list.
 out: # PREPEND new rules in front of a list.
 out: # REMOVE rules from a list.
 out: # REPLACE a rule in a list with new rules.
-out: # DELETE a list from memory.
+out: # CLEAR list rules in memory.
+out: # DELETE a list from disk.
 out: # LOAD a list from disk.
 out: # SAVE a list to disk.
 out: # FETCH a list from a remote server.
index 54afe6b..f1377d1 100644 (file)
@@ -21,6 +21,10 @@ in: APPEND:dir/../test
 out: #ERROR: illegal filename
 END
 
+TEST "delete testfile" <<END
+in: DELETE:dir/test
+END
+
 TEST "append to list 1" <<END
 in: APPEND:dir/test
 in: # test list line 1
@@ -155,12 +159,12 @@ in: SAVE:dir/test
 out: #OK:
 END
 
-TEST "delete list" <<END
-in: DELETE:dir/test
+TEST "clear list" <<END
+in: CLEAR:dir/test
 out: #OK:
 END
 
-TEST "delete list, check" <<END
+TEST "clear list, check" <<END
 in: DUMP:dir/test
 out: #OK:
 END
@@ -214,6 +218,16 @@ out: #something: # test list line 4
 out: # test list line 5
 END
 
+TEST "delete file" <<END
+in: DELETE:dir/test
+out: #OK:
+END
+
+TEST "delete file, check" <<END
+in: DUMP:dir/test
+out: #OK:
+END
+
 TEST "daemon shutdown" <<END
 in: SHUTDOWN:
 out: #OK: