1 /* $Id: zebraidx.c,v 1.8 2007-10-23 12:39:48 adam Exp $
2 Copyright (C) 1995-2007
5 This file is part of the Zebra server.
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
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
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
35 #include <yaz/icu_I18N.h>
38 #include <yaz/options.h>
39 #include <idzebra/version.h>
40 #include <idzebra/api.h>
44 static void filter_cb(void *cd, const char *name)
49 static void show_filters(ZebraService zs)
51 zebra_filter_info(zs, 0, filter_cb);
54 int main (int argc, char **argv)
61 int enable_commit = 1;
63 Res res = res_open(0, 0);
64 Res default_res = res_open(0, 0);
66 int trans_started = 0;
75 sprintf(nbuf, "%.40s(%ld)", *argv, (long) getpid());
76 yaz_log_init_prefix (nbuf);
81 fprintf (stderr, "%s [options] command <dir> ...\n"
83 " update <dir> Update index with files below <dir>.\n"
84 " If <dir> is empty filenames are read from stdin.\n"
85 " delete <dir> Delete index with files below <dir>.\n"
86 " create <db> Create database <db>\n"
87 " drop <db> Drop database <db>\n"
88 " commit Commit changes\n"
89 " clean Clean shadow files\n"
91 " -t <type> Index files as <type> (grs or text).\n"
92 " -c <config> Read configuration file <config>.\n"
93 " -g <group> Index files according to group settings.\n"
94 " -d <database> Records belong to Z39.50 database <database>.\n"
95 " -m <mbytes> Use <mbytes> before flushing keys to disk.\n"
96 " -n Don't use shadow system.\n"
97 " -s Show analysis on stdout, but do no work.\n"
98 " -v <level> Set logging to <level>.\n"
99 " -l <file> Write log to <file>.\n"
100 " -L Don't follow symbolic links.\n"
101 " -f <n> Display information for the first <n> records.\n"
102 " -V Show version.\n", *argv
106 res_set(default_res, "profilePath", DEFAULT_PROFILE_PATH);
107 res_set(default_res, "modulePath", DEFAULT_MODULE_PATH);
108 while ((ret = options("sVt:c:g:d:m:v:nf:l:L", argv, argc, &arg)) != -2)
112 if(cmd == 0) /* command */
116 const char *config = configName ? configName : "zebra.cfg";
117 zs = zebra_start_res(config, default_res, res);
120 yaz_log (YLOG_FATAL, "Cannot read config %s", config);
123 zh = zebra_open (zs, 0);
124 zebra_shadow_enable (zh, enable_commit);
128 zebra_select_database (zh, database) == ZEBRA_FAIL)
130 yaz_log(YLOG_FATAL, "Could not select database %s "
132 database, zebra_errCode(zh) );
135 if (!strcmp (arg, "update"))
137 else if (!strcmp (arg, "update1"))
139 else if (!strcmp (arg, "update2"))
141 else if (!strcmp (arg, "dump"))
143 else if (!strcmp (arg, "del") || !strcmp(arg, "delete"))
145 else if (!strcmp (arg, "init"))
149 else if (!strcmp(arg, "drop"))
153 else if (!strcmp(arg, "create"))
157 else if (!strcmp (arg, "commit"))
161 else if (!strcmp (arg, "clean"))
165 else if (!strcmp (arg, "stat") || !strcmp (arg, "status"))
167 zebra_register_statistics (zh,0);
169 else if (!strcmp (arg, "dumpdict"))
171 zebra_register_statistics (zh,1);
173 else if (!strcmp (arg, "compact"))
177 else if (!strcmp (arg, "filters"))
183 yaz_log (YLOG_FATAL, "unknown command: %s", arg);
189 ZEBRA_RES res = ZEBRA_OK;
193 if (zebra_begin_trans (zh, 1) != ZEBRA_OK)
199 res = zebra_repository_update (zh, arg);
202 res = zebra_repository_delete (zh, arg);
205 res = zebra_repository_show (zh, arg);
209 res = zebra_create_database(zh, arg);
212 res = zebra_drop_database(zh, arg);
219 const char *add = zebra_errAdd(zh);
220 yaz_log(YLOG_FATAL, "Operation failed: %s %s",
221 zebra_errString(zh), add ? add : "");
224 if (zebra_end_trans (zh) != ZEBRA_OK)
225 yaz_log (YLOG_WARN, "zebra_end_trans failed");
232 log_event_end (NULL, NULL);
237 char version_str[20];
239 zebra_get_version(version_str, sys_str);
241 printf("Zebra %s\n", version_str);
242 printf("(C) 1994-2007, Index Data ApS\n");
243 printf("Zebra is free software, covered by the GNU General Public License, and you are\n");
244 printf("welcome to change it and/or distribute copies of it under certain conditions.\n");
245 printf("Configured as: %s\n", sys_str);
246 if (strcmp(version_str, ZEBRAVER))
247 printf("zebraidx compiled version %s\n", ZEBRAVER);
249 printf("Using ICU\n");
253 yaz_log_init_level (yaz_log_mask_str(arg));
255 yaz_log_init_file (arg);
257 res_set(res, "memMax", arg);
261 res_set(res, "openRW", "0");
263 res_set(res, "group", arg);
265 res_set(res, "fileVerboseLimit", arg);
269 res_set(res, "recordType", arg);
273 res_set(res, "followLinks", "0");
275 yaz_log (YLOG_WARN, "unknown option '-%s'", arg);
279 if (zebra_end_trans (zh) != ZEBRA_OK)
280 yaz_log (YLOG_WARN, "zebra_end_trans failed");
286 res_close(default_res);
294 * indent-tabs-mode: nil
296 * vim: shiftwidth=4 tabstop=8 expandtab