X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=client%2Fclient.c;h=5791eac898aae2f9f3f5a5c4d2c4f3cb5304cc6f;hb=f4ed92d039e200b903bd7330a9fd58bd11d71825;hp=9378faf37d771c50c9d16939e25466956176ed20;hpb=085ad99f5717a64563effb8d8f1b8b36ec1182f5;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index 9378faf..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.257 2004-12-02 13:55:35 ja7 Exp $ + * $Id: client.c,v 1.261 2004-12-13 14:21:54 heikki Exp $ */ #include @@ -51,7 +51,7 @@ #include #include #include -#include +#include #if HAVE_READLINE_READLINE_H #include @@ -2987,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, "-")) @@ -2995,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; } @@ -3096,12 +3126,16 @@ int cmd_source(const char* arg, int echo ) return 1; } -int cmd_source_echo(const char* arg) { - cmd_source( arg, 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 ); +int cmd_source_noecho(const char* arg) +{ + cmd_source(arg, 0); + return 1; } @@ -3915,6 +3949,8 @@ 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_echo, "",NULL,1,NULL},