Explorar el Código

* Fixed/Finished some cmd_set bugs/cosmetics.
-Now 'set +VAR' and 'set -VAR' will work for adding/removing to lists. ('set +/- VAR' still works)


svn: 2240

Bryan Drewery hace 21 años
padre
commit
820800e962
Se han modificado 2 ficheros con 20 adiciones y 10 borrados
  1. 2 0
      doc/UPDATES
  2. 18 10
      src/set.c

+ 2 - 0
doc/UPDATES

@@ -30,6 +30,8 @@ Lines prefixed with '-' were disabled before release and are not finished, or ar
 * Fixed a segfault with 'set +' (#117)
 * List functions now only work on variables marked as list variables.
 * Changed binary data encryption to not be viewable under 'strings'.
+* Fixed/Finished some cmd_set bugs/cosmetics.
+  -Now 'set +VAR' and 'set -VAR' will work for adding/removing to lists. ('set +/- VAR' still works)
 
 1.2.3
 

+ 18 - 10
src/set.c

@@ -633,25 +633,33 @@ void cmd_set_real(const char *botnick, int idx, char *par)
   if (name) {
     if (name[0] == '+')
       list = LIST_ADD; 
-   else if (name[0] == '-')
+    else if (name[0] == '-')
       list = LIST_RM;
     else if (!egg_strcasecmp(name, "list"))
       list = LIST_SHOW;
   }
 
   if (list) {
-    if (!par[0]) {
-      dprintf(idx, "A variable must be specified!\n");
-      return;
+    if (list != LIST_SHOW && name[1] && egg_strcasecmp(&name[1], "list"))
+      name = &name[1];
+    else {
+      if (!par[0]) {
+        dprintf(idx, "A variable must be specified!\n");
+        return;
+      }
+      name = newsplit(&par);
     }
-    name = newsplit(&par);
   }
 
-  if (par[0])
-    data = (const char *) par;
-  else if (list && list != LIST_SHOW) {
-    dprintf(idx, "A value must be specified!\n");
-    return;
+  if (!list || (list && list != LIST_SHOW)) {
+    if (par[0])
+      data = (const char *) par;
+    else {
+      dprintf(idx, "A value must be specified!\n");
+      return;
+    }
+  } else if (par[0] && list && list == LIST_SHOW) {
+    dprintf(idx, "Data value ignored for listing.\n");
   }
 
   if (name && !(var = var_get_var_by_name(name))) {