-/* $Id: command.c,v 1.1 2006-11-14 20:44:37 quinn Exp $ */
+/* $Id: command.c,v 1.3 2006-11-20 19:46:40 quinn Exp $ */
#include <stdio.h>
#include <sys/socket.h>
return 1;
}
+static int cmd_show(struct command_session *s, char **argv, int argc)
+{
+ struct record **recs;
+ int num = 10;
+ int i;
+
+ if (argc == 2)
+ num = atoi(argv[1]);
+
+ recs = show(s->psession, 0, &num);
+
+ for (i = 0; i < num; i++)
+ {
+ int rc;
+ struct record *cnode;
+ struct record *r = recs[i];
+
+ command_puts(s, r->merge_key);
+ for (rc = 1, cnode = r->next_cluster; cnode; cnode = cnode->next_cluster, rc++)
+ ;
+ if (rc > 1)
+ {
+ char buf[256];
+ sprintf(buf, " (%d records)", rc);
+ command_puts(s, buf);
+ }
+ command_puts(s, "\n");
+ }
+ return 1;
+}
+
static int cmd_stat(struct command_session *s, char **argv, int argc)
{
char buf[1024];
} cmd_array[] = {
{"quit", cmd_quit},
{"load", cmd_load},
- {"search", cmd_search},
+ {"find", cmd_search},
{"ht", cmd_hitsbytarget},
{"stat", cmd_stat},
+ {"show", cmd_show},
{0,0}
};
int l;
struct protoent *p;
struct sockaddr_in myaddr;
+ int one = 1;
yaz_log(YLOG_LOG, "Command port is %d", port);
if (!(p = getprotobyname("tcp"))) {
}
if ((l = socket(PF_INET, SOCK_STREAM, p->p_proto)) < 0)
yaz_log(YLOG_FATAL|YLOG_ERRNO, "socket");
+ if (setsockopt(l, SOL_SOCKET, SO_REUSEADDR, (char*)
+ &one, sizeof(one)) < 0)
+ abort();
+
bzero(&myaddr, sizeof myaddr);
myaddr.sin_family = AF_INET;
myaddr.sin_addr.s_addr = INADDR_ANY;
- myaddr.sin_port = port;
+ myaddr.sin_port = htons(port);
if (bind(l, (struct sockaddr *) &myaddr, sizeof myaddr) < 0)
yaz_log(YLOG_FATAL|YLOG_ERRNO, "bind");
- if (listen(l, 5) < 0)
+ if (listen(l, SOMAXCONN) < 0)
yaz_log(YLOG_FATAL|YLOG_ERRNO, "listen");
c = iochan_create(l, command_accept, EVENT_INPUT | EVENT_EXCEPT);