Only in /home/pabs/dl/gnut-0.4.14/src/: .gnut_connection.c.swp
Only in /home/pabs/dl/gnut-0.4.14/src/: .protocol.h.swp
Binary files /home/pabs/dl/gnut-0.4.14/src/cache.o and ./cache.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/cgi_parse.o and ./cgi_parse.o differ
diff -ur /home/pabs/dl/gnut-0.4.14/src/cli_input.c ./cli_input.c
--- /home/pabs/dl/gnut-0.4.14/src/cli_input.c	Tue Oct  3 15:18:52 2000
+++ ./cli_input.c	Tue Oct  3 15:45:28 2000
@@ -208,12 +208,13 @@
                               per second.
 "},
   {"lclear",    com_lclear, "Clear search list.", "
-lclear GUID/\"string\" - Clear an active search if multi-searching is
+lclear ID/\"string\" - Clear an active search if multi-searching is
 enabled (eg the \"multi_enable\" configuration flag is set).  lclear
 with no arguments clears all active searches and responses.  
 
 Examples:
-    lclear 4124          # removes the search with GUID 4124
+    lclear 3             # removes the search ID 3.
+    lclear 1-3,5         # removes the searches with IDs 1, 2, 3, and 5.
     lclear \"britney\"   # removes the search for \"britney\"
     lclear \'spears\'    # removes the search for \"spears\"
     lclear               # removes all searches and results
@@ -1275,11 +1276,23 @@
 	return (sum==*((int*)data));
 }
 
+int range_search_clear_cb(int a, void *b)
+{
+	GnutSearch *s = gnut_search_find_by_user_id(a);
+	if (s)	{
+		printf("Removing search \"%s\".\n", s->query);
+		gnut_search_remove(s);
+	} else {
+		printf("debug: Couldn't find id %d", a);
+	}
+	return 0;
+}
+
 int com_lclear(char *arg)
 {
 	GnutSearch *search;
 	char       buf[1024] = "";
-	int        guid_hash = 0;
+	/* int        guid_hash = 0;*/
 	if (conf_get_int("multi_enable"))	{
 		if (!arg)	{
 			gnut_search_foreach(clear_search_cb, NULL);
@@ -1290,13 +1303,15 @@
 				memcpy(buf, arg+1, strlen(arg)-2);
 				buf[strlen(arg)-2] = 0;
 				search = gnut_search_find_by_query(buf);
+				if (search)	{
+					printf("Removing search \"%s\".\n", search->query);
+					gnut_search_remove(search);
+				}
 			} else {
-				guid_hash = atoi(arg);
-				search = gnut_search_find(clear_guid_search_cb, &guid_hash);
-			}
-			if (search)	{
-				printf("Removing search \"%s\".\n", search->query);
-				gnut_search_remove(search);
+				/* guid_hash = atoi(arg);*/
+				/* search = gnut_search_find(clear_guid_search_cb,
+				                          &guid_hash);*/
+				input_parse_range(arg,range_search_clear_cb,NULL);
 			}
 		}
 	} else {
@@ -1307,17 +1322,20 @@
 
 void list_search_cb(GnutSearch *s, void *data)
 {
-	int   t, sum = 0;
-	for (t=0; t<14; t++) sum+=(unsigned char) s->guid[t];
-	printf("%4d, %4d, \"%s\"\n", sum, s->responses, s->query);
+	/*int   t, sum = 0;*/
+	/*for (t=0; t<14; t++) sum+=(unsigned char) s->guid[t];*/
+	int *id = (int*) data;
+	s->user_id = (*id)++;
+	printf("%3d, %4d, \"%s\"\n", s->user_id, s->responses, s->query);
 	return;
 }
 
 int com_list(char *arg)
 {
+	int user_id = 1;
 	if (conf_get_int("multi_enable"))	{
-		printf("GUID,  Num, String\n");
-		gnut_search_foreach(list_search_cb, NULL);
+		printf("ID,  Num, String\n");
+		gnut_search_foreach(list_search_cb, &user_id);
 	} else {
 		printf("Multisearch is disabled.\n");
 	}
@@ -1419,7 +1437,8 @@
   char ipstr[32];
   query_response **disp_qr_list = 0;
   int result_count=0;
-  int multi_enable = 0;
+  int multi_enable = 0,
+      user_id = 1;
 
   /* regcomp is much more full featured than re_comp, so prefer it if both
    * are available. */
@@ -1441,8 +1460,8 @@
 	printf("Current query is '%s'\n",
 		   (((char *) (current_query_packet->data))+2));
   } else if (multi_enable&&current_searches) {
-	printf("Current queries are (GUID, Responses, String): \n");
-	gnut_search_foreach(list_search_cb, NULL);
+	printf("Current queries:\nID, #,    String): \n");
+	gnut_search_foreach(list_search_cb, &user_id);
   }
   pthread_mutex_unlock(&query_packet_mutex);
   
Binary files /home/pabs/dl/gnut-0.4.14/src/cli_input.o and ./cli_input.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/conf.o and ./conf.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut and ./gnut differ
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut.o and ./gnut.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut_connection.o and ./gnut_connection.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut_http.o and ./gnut_http.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut_lib.o and ./gnut_lib.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut_net.o and ./gnut_net.o differ
diff -ur /home/pabs/dl/gnut-0.4.14/src/gnut_threads.c ./gnut_threads.c
--- /home/pabs/dl/gnut-0.4.14/src/gnut_threads.c	Tue Oct  3 15:18:52 2000
+++ ./gnut_threads.c	Tue Oct  3 14:47:37 2000
@@ -78,6 +78,7 @@
 		n->guid[14] = 0;
 		/*n->guid = strdup(guid); <-- dunno if it's null terminated or not*/
 		n->query = strdup(query);
+		n->user_id = -1;
 		n->responses = 0;
 		n->next = NULL;
 	}
@@ -151,10 +152,7 @@
 
 char by_guid_cb(GnutSearch *s, void *data)
 {
-	char r = 0;
-	if (!memcmp(s->guid, data, 14))
-		r = 1;
-	return r;
+	return !memcmp(s->guid, data, 14);
 }
 
 GnutSearch *gnut_search_find_by_guid(char *guid)
@@ -164,15 +162,22 @@
 
 char by_query_cb(GnutSearch *s, void *data)
 {
-	char r = 0;
-	if (!strcasecmp(s->query, data))
-		r = 1;
-	return r;
+	return !strcasecmp(s->query, data);
 }
 
 GnutSearch *gnut_search_find_by_query(char *query)
 {
 	return gnut_search_find(by_query_cb,query);
+}
+
+char by_user_id_cb(GnutSearch *s, void *data)
+{
+	return s->user_id==*((int*)data);
+}
+
+GnutSearch *gnut_search_find_by_user_id(int id)
+{
+	return gnut_search_find(by_user_id_cb,&id);
 }
 
 int gnut_search_count()
diff -ur /home/pabs/dl/gnut-0.4.14/src/gnut_threads.h ./gnut_threads.h
--- /home/pabs/dl/gnut-0.4.14/src/gnut_threads.h	Tue Oct  3 15:18:52 2000
+++ ./gnut_threads.h	Tue Oct  3 14:48:51 2000
@@ -40,6 +40,7 @@
 struct _GnutSearch {
 	char       *guid;
 	char       *query;
+	int         user_id;
 	int         responses;
 	GnutSearch *next;
 };
@@ -58,6 +59,7 @@
                              void  *data);
 GnutSearch *gnut_search_find_by_guid(char *guid);
 GnutSearch *gnut_search_find_by_query(char *query);
+GnutSearch *gnut_search_find_by_user_id(int id);
 int         gnut_search_count();
 
 int gnut_threads_num_incoming();
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut_threads.o and ./gnut_threads.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/gnut_transfer.o and ./gnut_transfer.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/http_core.o and ./http_core.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/http_header.o and ./http_header.o differ
Binary files /home/pabs/dl/gnut-0.4.14/src/prompt.o and ./prompt.o differ

