/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2012 Index Data
* See the file LICENSE for details.
*/
/** \file zoomsh.c
return 0;
}
+static int cmd_shell(ZOOM_connection *c, ZOOM_resultset *r,
+ ZOOM_options options, const char **args)
+{
+ int ret = system(*args);
+ if (ret)
+ printf("system command returned %d\n", ret);
+ return 0;
+}
+
static int cmd_rget(ZOOM_connection *c, ZOOM_resultset *r,
ZOOM_options options,
const char **args)
return ret;
}
+static int cmd_suggestions(ZOOM_connection *c, ZOOM_resultset *r, ZOOM_options options, const char **args)
+{
+ int i;
+ int ret = 0;
+
+ process_events(c);
+
+ for (i = 0; i < MAX_CON; i++)
+ {
+ int error;
+ const char *errmsg, *addinfo, *dset;
+ /* display errors if any */
+ if (!c[i])
+ continue;
+ if ((error = ZOOM_connection_error_x(c[i], &errmsg, &addinfo, &dset)))
+ {
+ printf("%s error: %s (%s:%d) %s\n",
+ ZOOM_connection_option_get(c[i], "host"), errmsg,
+ dset, error, addinfo);
+ ret = 1;
+ }
+ else if (r[i])
+ {
+ const char *suggestions = ZOOM_resultset_option_get(r[i], "suggestions");
+ if (suggestions) {
+ printf("Suggestions: \n%s\n", suggestions);
+ }
+ }
+ }
+ return ret;
+}
+
+
static int cmd_ext(ZOOM_connection *c, ZOOM_resultset *r,
ZOOM_options options,
const char **args)
int ret = 0;
WRBUF ext_type_str = next_token_new_wrbuf(args);
+ if (!ext_type_str)
+ {
+ printf("es: missing type "
+ "(itemorder, create, drop, commit, update, xmlupdate)\n");
+ return 1;
+ }
for (i = 0; i<MAX_CON; i++)
{
if (c[i])
printf("ext <type>\n");
printf("set <option> [<value>]\n");
printf("get <option>\n");
+ printf("shell cmdline\n");
printf("\n");
printf("options:\n");
printf(" start\n");
printf(" lang\n");
printf(" timeout\n");
printf(" facets\n");
+ printf(" extraArgs\n");
+ printf(" suggestions\n");
return 0;
}
ret = cmd_search(c, r, options, buf);
else if (is_command("show", cmd_str, cmd_len))
ret = cmd_show(c, r, options, buf);
+ else if (is_command("suggestions", cmd_str, cmd_len))
+ ret = cmd_suggestions(c, r, options, buf);
else if (is_command("close", cmd_str, cmd_len))
ret = cmd_close(c, r, options, buf);
else if (is_command("help", cmd_str, cmd_len))
ret = cmd_scan(c, r, options, buf);
else if (is_command("sort", cmd_str, cmd_len))
ret = cmd_sort(c, r, options, buf);
+ else if (is_command("shell", cmd_str, cmd_len))
+ ret = cmd_shell(c, r, options, buf);
else
{
printf("unknown command %.*s\n", cmd_len, cmd_str);
int res = 0;
while (res == 0)
{
- char buf[1000];
+ char buf[100000];
char *cp;
const char *bp = buf;
#if HAVE_READLINE_READLINE_H
if (*line_in)
add_history(line_in);
#endif
- if (strlen(line_in) > 999)
+ if (strlen(line_in) > sizeof(buf)-1)
{
printf("Input line too long\n");
res = 1;
free(line_in);
#else
printf("ZOOM>"); fflush(stdout);
- if (!fgets(buf, 999, stdin))
+ if (!fgets(buf, sizeof(buf)-1, stdin))
{
res = -1;
break;