X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zoom%2Fzoomsh.c;h=88536d1407c14c891993aebb41d7b215bf619c0b;hb=609ad9573e7ea6450727297bdd36080cf38a9032;hp=c5019aabedd588ae29b4656c5d912dee2a575fdf;hpb=1d373de015fe24656f8fb7e4ff5edb3c2087085d;p=yaz-moved-to-github.git diff --git a/zoom/zoomsh.c b/zoom/zoomsh.c index c5019aa..88536d1 100644 --- a/zoom/zoomsh.c +++ b/zoom/zoomsh.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2012 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ /** \file zoomsh.c @@ -9,6 +9,10 @@ #include #endif +#if HAVE_UNISTD_H +#include +#endif + #include #include #include @@ -17,7 +21,7 @@ #include #if HAVE_READLINE_READLINE_H -#include +#include #endif #if HAVE_READLINE_HISTORY_H #include @@ -175,7 +179,7 @@ static int cmd_rget(ZOOM_connection *c, ZOOM_resultset *r, const char *val; if (!r[i]) continue; - + val = ZOOM_resultset_option_get(r[i], wrbuf_cstr(key)); printf("%s = %s\n", wrbuf_cstr(key), val ? val : ""); } @@ -223,14 +227,14 @@ static void display_records(ZOOM_connection c, size_t pos = i + start; ZOOM_record rec = ZOOM_resultset_record(r, pos); const char *db = ZOOM_record_get(rec, "database", 0); - + if (ZOOM_record_error(rec, 0, 0, 0)) { const char *msg; const char *addinfo; const char *diagset; int error = ZOOM_record_error(rec, &msg, &addinfo, &diagset); - + printf("%lld %s: %s (%s:%d) %s\n", (long long) pos, (db ? db : "unknown"), msg, diagset, error, addinfo ? addinfo : "none"); @@ -409,7 +413,7 @@ static int cmd_ext(ZOOM_connection *c, ZOOM_resultset *r, int i; int ret = 0; WRBUF ext_type_str = next_token_new_wrbuf(args); - + if (!ext_type_str) { printf("es: missing type " @@ -477,7 +481,7 @@ static int cmd_search(ZOOM_connection *c, ZOOM_resultset *r, const char *query_str = *args; int i; int ret = 0; - + s = ZOOM_query_create(); while (*query_str == ' ') query_str++; @@ -529,7 +533,7 @@ static int cmd_search(ZOOM_connection *c, ZOOM_resultset *r, printf("%s: %lld hits\n", ZOOM_connection_option_get(c[i], "host"), (long long int) ZOOM_resultset_size(r[i])); - + facet_num = ZOOM_resultset_facets_size(r[i]); if (facet_num) { @@ -566,7 +570,7 @@ static int cmd_scan(ZOOM_connection *c, ZOOM_resultset *r, int i; int ret = 0; ZOOM_scanset s[MAX_CON]; - + while (*query_str == ' ') query_str++; @@ -616,7 +620,7 @@ static int cmd_scan(ZOOM_connection *c, ZOOM_resultset *r, const char *term = ZOOM_scanset_display_term(s[i], p, &occ, &len); printf("%.*s %lld\n", (int) len, term, (long long int) occ); - } + } ZOOM_scanset_destroy(s[i]); } } @@ -630,10 +634,10 @@ static int cmd_sort(ZOOM_connection *c, ZOOM_resultset *r, const char *sort_spec = *args; int i; int ret = 0; - + while (*sort_spec == ' ') sort_spec++; - + for (i = 0; i"); - if (!line_in) + if (isatty(0)) { - res = -1; - break; - } + line_in = readline("ZOOM>"); + if (!line_in) + { + putchar('\n'); + res = -1; + break; + } #if HAVE_READLINE_HISTORY_H - if (*line_in) - add_history(line_in); + if (*line_in) + add_history(line_in); #endif - if (strlen(line_in) > sizeof(buf)-1) - { - printf("Input line too long\n"); - res = 1; - break; + if (strlen(line_in) > sizeof(buf)-1) + { + printf("Input line too long\n"); + res = 1; + break; + } + strcpy(buf,line_in); + free(line_in); } - strcpy(buf,line_in); - free(line_in); -#else - printf("ZOOM>"); fflush(stdout); - if (!fgets(buf, sizeof(buf)-1, stdin)) +#endif + if (!line_in) /* no line buffer via readline or not enabled at all */ { - res = -1; - break; + printf("ZOOM>"); fflush(stdout); + if (!fgets(buf, sizeof(buf)-1, stdin)) + { + res = -1; + break; + } } -#endif if ((cp = strchr(buf, '\n'))) *cp = '\0'; res = cmd_parse(c, r, options, &bp);