X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=client%2Fclient.c;h=b2d50c451bd94da5543a52b9e3d39d29bec261f2;hp=71f1a9b5837a75e3cadc43ff54a1ef38b9245690;hb=95d8bd04e10519a635972a24176270ef4dbe8d2c;hpb=df8e6c1a312cfc928aede6fc5eb0efa39364cfa6 diff --git a/client/client.c b/client/client.c index 71f1a9b..b2d50c4 100644 --- a/client/client.c +++ b/client/client.c @@ -2,7 +2,10 @@ * Copyright (C) 1995-2006, Index Data ApS * See the file LICENSE for details. * - * $Id: client.c,v 1.305 2006-05-07 19:07:10 adam Exp $ + * $Id: client.c,v 1.309 2006-05-07 20:57:26 adam Exp $ + */ +/** \file client.c + * \brief yaz-client program */ #include @@ -173,7 +176,6 @@ void process_cmd_line(char* line); char **readline_completer(char *text, int start, int end); #endif static char *command_generator(const char *text, int state); -char** curret_global_list=NULL; int cmd_register_tab(const char* arg); static void close_session (void); @@ -4434,8 +4436,9 @@ static int cmd_help (const char *line) return 1; } -int cmd_register_tab(const char* arg) { - +int cmd_register_tab(const char* arg) +{ +#if HAVE_READLINE_READLINE_H char command[101], tabargument[101]; int i; int num_of_tabs; @@ -4452,27 +4455,29 @@ int cmd_register_tab(const char* arg) { } } - if(!cmd_array[i].cmd) { + if (!cmd_array[i].cmd) { fprintf(stderr,"Unknown command %s\n",command); return 1; } - if(!cmd_array[i].local_tabcompletes) + if (!cmd_array[i].local_tabcompletes) cmd_array[i].local_tabcompletes = (char **) calloc(1,sizeof(char**)); num_of_tabs=0; tabslist = cmd_array[i].local_tabcompletes; - for(;tabslist && *tabslist;tabslist++) { + for(; tabslist && *tabslist; tabslist++) { num_of_tabs++; } - cmd_array[i].local_tabcompletes = (char **) - realloc(cmd_array[i].local_tabcompletes,(num_of_tabs+2)*sizeof(char**)); - tabslist=cmd_array[i].local_tabcompletes; - tabslist[num_of_tabs]=strdup(tabargument); - tabslist[num_of_tabs+1]=NULL; + cmd_array[i].local_tabcompletes = (char **) + realloc(cmd_array[i].local_tabcompletes, + (num_of_tabs+2)*sizeof(char**)); + tabslist = cmd_array[i].local_tabcompletes; + tabslist[num_of_tabs] = strdup(tabargument); + tabslist[num_of_tabs+1] = NULL; +#endif return 1; } @@ -4536,6 +4541,7 @@ void process_cmd_line(char* line) static char *command_generator(const char *text, int state) { +#if HAVE_READLINE_READLINE_H static int idx; if (state==0) { idx = 0; @@ -4546,10 +4552,20 @@ static char *command_generator(const char *text, int state) return strdup(cmd_array[idx-1].cmd); } } +#endif return NULL; } #if HAVE_READLINE_READLINE_H +static char** default_completer_list = NULL; + +static char* default_completer(const char* text, int state) +{ + return complete_from_list(default_completer_list, text, state); +} +#endif + +#if HAVE_READLINE_READLINE_H /* This function only known how to complete on the first word @@ -4575,18 +4591,17 @@ char **readline_completer(char *text, int start, int end) return NULL; } - for (i = 0; cmd_array[i].cmd; i++) { - if (!strncmp(cmd_array[i].cmd, word, strlen(word))) { + for (i = 0; cmd_array[i].cmd; i++) + if (!strncmp(cmd_array[i].cmd, word, strlen(word))) break; - } - } - if(!cmd_array[i].cmd) return NULL; + if(!cmd_array[i].cmd) + return NULL; - curret_global_list = cmd_array[i].local_tabcompletes; + default_completer_list = cmd_array[i].local_tabcompletes; completerToUse = cmd_array[i].rl_completerfunction; - if (completerToUse==NULL) + if (!completerToUse) { /* if command completer is not defined use the default completer */ completerToUse = default_completer; }