b2bda3afe15bd100001d255d4ead206d57b4273c
[idzebra-moved-to-github.git] / dict / dictext.c
1 /* $Id: dictext.c,v 1.13 2005-04-15 10:47:48 adam Exp $
2    Copyright (C) 1995-2005
3    Index Data ApS
4
5 This file is part of the Zebra server.
6
7 Zebra is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
10 version.
11
12 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Zebra; see the file LICENSE.zebra.  If not, write to the
19 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA.
21 */
22
23
24
25 #include <string.h>
26 #include <stdlib.h>
27 #include <stdio.h>
28 #include <assert.h>
29 #include <ctype.h>
30
31 #include <idzebra/util.h>
32 #include <yaz/yaz-util.h>
33
34 char *prog;
35
36 int main (int argc, char **argv)
37 {
38     char *arg;
39     int ret;
40     int use8 = 0;
41     char *inputfile = NULL;
42     FILE *ipf = stdin;
43     char ipf_buf[1024];
44
45     prog = *argv;
46     while ((ret = options("8vh", argv, argc, &arg)) != -2)
47     {
48         if (ret == 0)
49         {
50             if (!inputfile)
51                 inputfile = arg;
52             else
53             {
54                 yaz_log (YLOG_FATAL, "too many files specified\n");
55                 exit (1);
56             }
57         }
58         else if (ret == 'v')
59         {
60             yaz_log_init (yaz_log_mask_str(arg), prog, NULL);
61         }
62         else if (ret == 'h')
63         {
64             fprintf (stderr, "usage:\n"
65                      "  %s [-8] [-h] [-v n] [file]\n", prog);
66             exit (1);
67         }
68         else if (ret == '8')
69             use8 = 1;
70         else
71         {
72             yaz_log (YLOG_FATAL, "Unknown option '-%s'", arg);
73             exit (1);
74         }
75     }
76     if (inputfile)
77     {
78         ipf = fopen (inputfile, "r");
79         if (!ipf)
80         {
81             yaz_log (YLOG_FATAL|YLOG_ERRNO, "cannot open '%s'", inputfile);
82             exit (1);
83         }
84     }
85     while (fgets (ipf_buf, 1023, ipf))
86     {
87         char *ipf_ptr = ipf_buf;
88         for (;*ipf_ptr && *ipf_ptr != '\n';ipf_ptr++)
89         {
90             if ((use8 && *ipf_ptr<0)
91                 || (*ipf_ptr > 0 && isalpha(*ipf_ptr))
92                 || *ipf_ptr == '_')
93             {
94                 int i = 1;
95                 while (ipf_ptr[i] && ((use8 && ipf_ptr[i] < 0)
96                                       || (ipf_ptr[i]>0 && isalnum(ipf_ptr[i]))
97                                       || ipf_ptr[i] == '_'))
98                     i++;
99                 if (ipf_ptr[i])
100                     ipf_ptr[i++] = '\0';
101                 printf ("%s\n", ipf_ptr);
102                 ipf_ptr += (i-1);
103             }
104         }
105     }
106     return 0;
107 }
108
109
110