/*
- * $Id: zoomsh.c,v 1.7 2001-11-18 21:14:23 adam Exp $
+ * $Id: zoomsh.c,v 1.11 2002-06-05 21:09:20 adam Exp $
*
* ZOOM-C Shell
*/
return ;
}
if (!next_token_copy (args, val, sizeof(val)))
+ ZOOM_options_set(options, key, 0);
+ else
+ ZOOM_options_set(options, key, val);
+}
+
+static void cmd_get (ZOOM_connection *c, ZOOM_resultset *r,
+ ZOOM_options options,
+ const char **args)
+{
+ char key[40];
+ if (!next_token_copy (args, key, sizeof(key)))
{
- const char *val = ZOOM_options_get(options, key);
- printf ("%s = %s\n", key, val ? val : "<null>");
+ printf ("missing argument for get\n");
}
else
- ZOOM_options_set(options, key, val);
+ {
+ const char *val = ZOOM_options_get(options, key);
+ printf ("%s = %s\n", key, val ? val : "<null>");
+ }
}
static void cmd_close (ZOOM_connection *c, ZOOM_resultset *r,
printf ("%d %s %s\n", pos+1, (db ? db : "unknown"), syntax);
if (render)
fwrite (render, 1, len, stdout);
- putchar ('\n');
+ printf ("\n");
}
}
}
}
}
+static void cmd_ext (ZOOM_connection *c, ZOOM_resultset *r,
+ ZOOM_options options,
+ const char **args)
+{
+ ZOOM_package p[MAX_CON];
+
+ int i;
+
+ for (i = 0; i<MAX_CON; i++)
+ {
+ if (c[i])
+ {
+ p[i] = ZOOM_connection_package (c[i], 0);
+ ZOOM_package_send(p[i], "itemorder");
+ }
+ else
+ p[i] = 0;
+ }
+
+ while (ZOOM_event (MAX_CON, c))
+ ;
+
+ for (i = 0; i<MAX_CON; i++)
+ {
+ int error;
+ const char *errmsg, *addinfo;
+ /* display errors if any */
+ if (!p[i])
+ continue;
+ if ((error = ZOOM_connection_error(c[i], &errmsg, &addinfo)))
+ fprintf (stderr, "%s error: %s (%d) %s\n",
+ ZOOM_connection_option_get(c[i], "host"), errmsg,
+ error, addinfo);
+ else if (p[i])
+ {
+ printf ("ok\n");
+ }
+ ZOOM_package_destroy (p[i]);
+ }
+}
+
static void cmd_search (ZOOM_connection *c, ZOOM_resultset *r,
ZOOM_options options,
const char **args)
printf ("show [<start> [<count>]\n");
printf ("quit\n");
printf ("close <zurl>\n");
- printf ("set <option> [<value>]]\n");
+ printf ("set <option> [<value>]\n");
+ printf ("get <option>\n");
printf ("\n");
printf ("options:\n");
printf (" start\n");
printf (" user\n");
printf (" pass\n");
printf (" implementationName\n");
+ printf (" charset\n");
+ printf (" lang\n");
}
static void cmd_connect (ZOOM_connection *c, ZOOM_resultset *r,
return 0;
else if (is_command ("set", cmd_str, cmd_len))
cmd_set (c, r, options, buf);
+ else if (is_command ("get", cmd_str, cmd_len))
+ cmd_get (c, r, options, buf);
else if (is_command ("connect", cmd_str, cmd_len))
cmd_connect (c, r, options, buf);
+ else if (is_command ("open", cmd_str, cmd_len))
+ cmd_connect (c, r, options, buf);
else if (is_command ("search", cmd_str, cmd_len))
cmd_search (c, r, options, buf);
+ else if (is_command ("find", cmd_str, cmd_len))
+ cmd_search (c, r, options, buf);
else if (is_command ("show", cmd_str, cmd_len))
cmd_show (c, r, options, buf);
else if (is_command ("close", cmd_str, cmd_len))
cmd_close (c, r, options, buf);
else if (is_command ("help", cmd_str, cmd_len))
cmd_help(c, r, options, buf);
+ else if (is_command ("ext", cmd_str, cmd_len))
+ cmd_ext(c, r, options, buf);
else
printf ("unknown command %.*s\n", cmd_len, cmd_str);
return 2;
}
-void shell(ZOOM_connection *c, ZOOM_resultset *r, ZOOM_options options)
+void shell(ZOOM_connection *c, ZOOM_resultset *r,
+ ZOOM_options options)
{
while (1)
{