* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: client.c,v 1.326 2007-01-24 15:14:57 adam Exp $
+ * $Id: client.c,v 1.328 2007-03-14 11:46:37 adam Exp $
*/
/** \file client.c
* \brief yaz-client program
#include <assert.h>
#include <time.h>
#include <ctype.h>
+#ifndef WIN32
+#include <signal.h>
+#endif
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
static int cmd_update_common(const char *arg, int version)
{
- char action[20], recid[20];
+ char action[20], recid_buf[20];
+ const char *recid = 0;
char *rec_buf;
int rec_len;
int action_no;
int noread = 0;
*action = 0;
- *recid = 0;
- sscanf (arg, "%19s %19s%n", action, recid, &noread);
+ *recid_buf = 0;
+ sscanf (arg, "%19s %19s%n", action, recid_buf, &noread);
if (noread == 0)
{
- printf("Update must be followed by action and recid\n");
+ printf("Use: update action recid [fname]\n");
printf(" where action is one of insert,replace,delete.update\n");
- printf(" recid is some record ID (any string)\n");
+ printf(" recid is some record ID. Use none for no ID\n");
+ printf(" fname is file of record to be updated\n");
return 0;
}
return 0;
}
+ if (strcmp(recid_buf, "none")) /* none means no record ID */
+ recid = recid_buf;
+
arg += noread;
if (parse_cmd_doc(&arg, out, &rec_buf, &rec_len, 1) == 0)
return 0;
notToKeep->elements[0] = (Z_IU0SuppliedRecords_elem *)
odr_malloc(out, sizeof(**notToKeep->elements));
notToKeep->elements[0]->which = Z_IUSuppliedRecords_elem_opaque;
- if (*recid && strcmp(recid, "none"))
+ if (recid)
{
notToKeep->elements[0]->u.opaque = (Odr_oct *)
odr_malloc (out, sizeof(Odr_oct));
notToKeep->elements[0] = (Z_IUSuppliedRecords_elem *)
odr_malloc(out, sizeof(**notToKeep->elements));
notToKeep->elements[0]->which = Z_IUSuppliedRecords_elem_opaque;
- if (*recid)
+ if (recid)
{
notToKeep->elements[0]->u.opaque = (Odr_oct *)
odr_malloc (out, sizeof(Odr_oct));
}
#endif
+#ifndef WIN32
+void ctrl_c_handler(int x)
+{
+ exit_client(0);
+}
+#endif
+
static void client(void)
{
char line[10240];
line[10239] = '\0';
+#ifndef WIN32
+ signal(SIGINT, ctrl_c_handler);
+#endif
+
#if HAVE_GETTIMEOFDAY
gettimeofday (&tv_start, 0);
#endif