/* 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)
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");
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;