X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=dict%2Fdictext.c;h=06f13e3d4b76b72c843f7258604c5100ad4e91d4;hp=cec18452f8c97a5b698976c7b4763ac2bf06d5bc;hb=896c0427df9d8eff5de6a1735dcd992e067df844;hpb=0035afa7de3e06c18bf2f559649f34913114ab46 diff --git a/dict/dictext.c b/dict/dictext.c index cec1845..06f13e3 100644 --- a/dict/dictext.c +++ b/dict/dictext.c @@ -1,13 +1,26 @@ -/* - * Copyright (C) 1994, Index Data I/S - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: dictext.c,v $ - * Revision 1.1 1994-09-16 15:39:11 adam - * Initial code of lookup - not tested yet. - * - */ +/* $Id: dictext.c,v 1.9 2002-08-02 19:26:55 adam Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 + Index Data Aps + +This file is part of the Zebra server. + +Zebra is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Zebra is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Zebra; see the file LICENSE.zebra. If not, write to the +Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +*/ + + #include #include @@ -15,7 +28,7 @@ #include #include -#include +#include char *prog; @@ -23,12 +36,13 @@ int main (int argc, char **argv) { char *arg; int ret; + int use8 = 0; char *inputfile = NULL; FILE *ipf = stdin; char ipf_buf[1024]; prog = *argv; - while ((ret = options ("vh", argv, argc, &arg)) != -2) + while ((ret = options ("8vh", argv, argc, &arg)) != -2) { if (ret == 0) { @@ -36,23 +50,25 @@ int main (int argc, char **argv) inputfile = arg; else { - log (LOG_FATAL, "too many files specified\n"); + logf (LOG_FATAL, "too many files specified\n"); exit (1); } } else if (ret == 'v') { - log_init (atoi(arg), prog, NULL); + yaz_log_init (yaz_log_mask_str(arg), prog, NULL); } else if (ret == 'h') { fprintf (stderr, "usage:\n" - " %s [-h] [-v n] [file]\n", prog); + " %s [-8] [-h] [-v n] [file]\n", prog); exit (1); } + else if (ret == '8') + use8 = 1; else { - log (LOG_FATAL, "unknown option"); + logf (LOG_FATAL, "Unknown option '-%s'", arg); exit (1); } } @@ -61,7 +77,7 @@ int main (int argc, char **argv) ipf = fopen (inputfile, "r"); if (!ipf) { - log (LOG_FATAL|LOG_ERRNO, "cannot open '%s'", inputfile); + logf (LOG_FATAL|LOG_ERRNO, "cannot open '%s'", inputfile); exit (1); } } @@ -70,11 +86,14 @@ int main (int argc, char **argv) char *ipf_ptr = ipf_buf; for (;*ipf_ptr && *ipf_ptr != '\n';ipf_ptr++) { - if (isalpha(*ipf_ptr) || *ipf_ptr == '_') + if ((use8 && *ipf_ptr<0) + || (*ipf_ptr > 0 && isalpha(*ipf_ptr)) + || *ipf_ptr == '_') { int i = 1; - while (ipf_ptr[i] && (isalnum(ipf_ptr[i]) || - ipf_ptr[i] == '_')) + while (ipf_ptr[i] && ((use8 && ipf_ptr[i] < 0) + || (ipf_ptr[i]>0 && isalnum(ipf_ptr[i])) + || ipf_ptr[i] == '_')) i++; if (ipf_ptr[i]) ipf_ptr[i++] = '\0';