X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=client%2Fclient.c;h=5791eac898aae2f9f3f5a5c4d2c4f3cb5304cc6f;hb=3e818921e959b654fe072fc7419f1b7f89007b21;hp=50124735b2ebd4ac5babcb1405d947dbf9cd650a;hpb=efcfc53528435f8d6fb3a7d41a22a64e9731a690;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index 5012473..5791eac 100644 --- a/client/client.c +++ b/client/client.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2004, Index Data * See the file LICENSE for details. * - * $Id: client.c,v 1.251 2004-09-22 13:08:31 adam Exp $ + * $Id: client.c,v 1.261 2004-12-13 14:21:54 heikki Exp $ */ #include @@ -51,6 +51,7 @@ #include #include #include +#include #if HAVE_READLINE_READLINE_H #include @@ -116,6 +117,7 @@ static int auto_reconnect = 0; static Odr_bitmask z3950_options; static int z3950_version = 3; static int scan_stepSize = 0; +static int scan_position = 1; static char cur_host[200]; typedef enum { @@ -2801,12 +2803,20 @@ int cmd_sort_newset (const char *arg) return cmd_sort_generic (arg, 1); } -int cmd_stepsize(const char *arg) +int cmd_scanstep(const char *arg) { scan_stepSize = atoi(arg); return 0; } +int cmd_scanpos(const char *arg) +{ + int r = sscanf(arg, "%d", &scan_position); + if (r == 0) + scan_position = 1; + return 0; +} + int cmd_scan(const char *arg) { if (only_z3950()) @@ -2828,7 +2838,7 @@ int cmd_scan(const char *arg) if (*arg) { strcpy (last_scan_query, arg); - if (send_scanrequest(arg, 1, 20, 0) < 0) + if (send_scanrequest(arg, scan_position, 20, 0) < 0) return 0; } else @@ -2977,7 +2987,11 @@ int cmd_marccharset(const char *arg) *l1 = 0; if (sscanf(arg, "%29s", l1) < 1) + { + printf("MARC character set is `%s'\n", + marcCharset ? marcCharset: "none"); return 1; + } xfree (marcCharset); marcCharset = 0; if (strcmp(l1, "-")) @@ -2985,50 +2999,76 @@ int cmd_marccharset(const char *arg) return 1; } -int cmd_charset(const char* arg) +int cmd_displaycharset(const char *arg) { - char l1[30], l2[30]; + char l1[30]; - *l1 = *l2 = 0; - if (sscanf(arg, "%29s %29s", l1, l2) < 1) + *l1 = 0; + if (sscanf(arg, "%29s", l1) < 1) { - printf("Current negotiation character set is `%s'\n", - negotiationCharset ? negotiationCharset: "none"); - printf("Current output character set is `%s'\n", + printf("Display character set is `%s'\n", outputCharset ? outputCharset: "none"); - return 1; - } - xfree (negotiationCharset); - negotiationCharset = NULL; - if (*l1 && strcmp(l1, "-")) - { - negotiationCharset = xstrdup(l1); - printf ("Character set negotiation : %s\n", negotiationCharset); } else - printf ("Character set negotiation disabled\n"); - if (*l2) { xfree (outputCharset); outputCharset = 0; - if (!strcmp(l2, "auto") && codeset) + if (!strcmp(l1, "auto") && codeset) { if (codeset) { - printf ("output charset: %s\n", codeset); + printf ("Display character set: %s\n", codeset); outputCharset = xstrdup(codeset); - - } else printf ("No codeset found on this system\n"); } - else if (strcmp(l2, "-")) - outputCharset = xstrdup(l2); - else - printf ("Output charset conversion disabled\n"); + else if (strcmp(l1, "-") && strcmp(l1, "none")) + outputCharset = xstrdup(l1); } + return 1; +} +int cmd_negcharset(const char *arg) +{ + char l1[30]; + + *l1 = 0; + if (sscanf(arg, "%29s", l1) < 1) + { + printf("Current negotiation character set is `%s'\n", + negotiationCharset ? negotiationCharset: "none"); + return 1; + } + xfree (negotiationCharset); + negotiationCharset = NULL; + if (*l1 && strcmp(l1, "-") && strcmp(l1, "none")) + { + negotiationCharset = xstrdup(l1); + printf ("Character set negotiation : %s\n", negotiationCharset); + } + return 1; +} + +int cmd_charset(const char* arg) +{ + char l1[30], l2[30], l3[30]; + + *l1 = *l2 = *l3 = 0; + if (sscanf(arg, "%29s %29s %29s", l1, l2, l3) < 1) + { + cmd_negcharset(""); + cmd_displaycharset(""); + cmd_marccharset(""); + } + else + { + cmd_negcharset(l1); + if (*l2) + cmd_displaycharset(l2); + if (*l3) + cmd_marccharset(l3); + } return 1; } @@ -3045,7 +3085,7 @@ int cmd_lang(const char* arg) return 1; } -int cmd_source(const char* arg) +int cmd_source(const char* arg, int echo ) { /* first should open the file and read one line at a time.. */ FILE* includeFile; @@ -3072,7 +3112,10 @@ int cmd_source(const char* arg) if ((cp = strrchr (line, '\n'))) *cp = '\0'; - + + if( echo ) { + printf( "processing line: %s\n",line ); + }; process_cmd_line(line); } @@ -3083,6 +3126,19 @@ int cmd_source(const char* arg) return 1; } +int cmd_source_echo(const char* arg) +{ + cmd_source(arg, 1); + return 1; +} + +int cmd_source_noecho(const char* arg) +{ + cmd_source(arg, 0); + return 1; +} + + int cmd_subshell(const char* args) { if(strlen(args)) @@ -3296,17 +3352,19 @@ void source_rcfile() struct stat statbuf; char buffer[1000]; char* homedir=getenv("HOME"); - - if(!homedir) return; - - sprintf(buffer,"%s/.yazclientrc",homedir); - - if(stat(buffer,&statbuf)==0) { - cmd_source(buffer); - } + + if( homedir ) { + + sprintf(buffer,"%s/.yazclientrc",homedir); + + if(stat(buffer,&statbuf)==0) { + cmd_source(buffer, 0 ); + } + + }; if(stat(".yazclientrc",&statbuf)==0) { - cmd_source(".yazclientrc"); + cmd_source(".yazclientrc", 0 ); } } @@ -3701,6 +3759,20 @@ int cmd_set_otherinfo(const char* args) return 0; } +int cmd_sleep(const char* args ) +{ + int sec=atoi(args); + if( sec > 0 ) { +#ifdef WIN32 + Sleep(sec*1000); +#else + sleep(sec); +#endif + printf("Done sleeping %d seconds\n", sec); + } + return 1; +} + int cmd_list_otherinfo(const char* args) { int i; @@ -3851,8 +3923,9 @@ static struct { {"delete", cmd_delete, "",NULL,0,NULL}, {"base", cmd_base, "",NULL,0,NULL}, {"show", cmd_show, "['+'<#recs>['+']]",NULL,0,NULL}, - {"stepsize", cmd_stepsize, "",NULL,0,NULL}, {"scan", cmd_scan, "",NULL,0,NULL}, + {"scanstep", cmd_scanstep, "",NULL,0,NULL}, + {"scanpos", cmd_scanpos, "",NULL,0,NULL}, {"sort", cmd_sort, " ...",NULL,0,NULL}, {"sort+", cmd_sort_newset, " ...",NULL,0,NULL}, {"authentication", cmd_authentication, "",NULL,0,NULL}, @@ -3876,9 +3949,11 @@ static struct { {"packagename", cmd_packagename, "",NULL,0,NULL}, {"proxy", cmd_proxy, "[('tcp'|'ssl')][':']",NULL,0,NULL}, {"charset", cmd_charset, " ",NULL,0,NULL}, + {"negcharset", cmd_negcharset, "",NULL,0,NULL}, + {"displaycharset", cmd_displaycharset, "",NULL,0,NULL}, {"marccharset", cmd_marccharset, "",NULL,0,NULL}, {"lang", cmd_lang, "",NULL,0,NULL}, - {".", cmd_source, "",NULL,1,NULL}, + {".", cmd_source_echo, "",NULL,1,NULL}, {"!", cmd_subshell, "Subshell command",NULL,1,NULL}, {"set_apdufile", cmd_set_apdufile, "",NULL,1,NULL}, {"set_berfile", cmd_set_berfile, "",NULL,1,NULL}, @@ -3886,7 +3961,8 @@ static struct { {"set_cclfile", cmd_set_cclfile," ",NULL,1,NULL}, {"set_cqlfile", cmd_set_cqlfile," ",NULL,1,NULL}, {"set_auto_reconnect", cmd_set_auto_reconnect," on|off",complete_auto_reconnect,1,NULL}, - {"set_otherinfo", cmd_set_otherinfo," ",NULL,0,NULL}, + {"set_otherinfo", cmd_set_otherinfo," ",NULL,0,NULL}, + {"sleep", cmd_sleep,"",NULL,0,NULL}, {"register_oid", cmd_register_oid," ",NULL,0,NULL}, {"push_command", cmd_push_command,"",command_generator,0,NULL}, {"register_tab", cmd_register_tab," ",command_generator,0,NULL},