1 /* $Id: zebraidx.c,v 1.6 2007-08-27 17:22:22 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/options.h>
36 #include <idzebra/version.h>
37 #include <idzebra/api.h>
41 static void filter_cb(void *cd, const char *name)
46 static void show_filters(ZebraService zs)
48 zebra_filter_info(zs, 0, filter_cb);
51 int main (int argc, char **argv)
58 int enable_commit = 1;
60 Res res = res_open(0, 0);
61 Res default_res = res_open(0, 0);
63 int trans_started = 0;
72 sprintf(nbuf, "%.40s(%ld)", *argv, (long) getpid());
73 yaz_log_init_prefix (nbuf);
78 fprintf (stderr, "%s [options] command <dir> ...\n"
80 " update <dir> Update index with files below <dir>.\n"
81 " If <dir> is empty filenames are read from stdin.\n"
82 " delete <dir> Delete index with files below <dir>.\n"
83 " create <db> Create database <db>\n"
84 " drop <db> Drop database <db>\n"
85 " commit Commit changes\n"
86 " clean Clean shadow files\n"
88 " -t <type> Index files as <type> (grs or text).\n"
89 " -c <config> Read configuration file <config>.\n"
90 " -g <group> Index files according to group settings.\n"
91 " -d <database> Records belong to Z39.50 database <database>.\n"
92 " -m <mbytes> Use <mbytes> before flushing keys to disk.\n"
93 " -n Don't use shadow system.\n"
94 " -s Show analysis on stdout, but do no work.\n"
95 " -v <level> Set logging to <level>.\n"
96 " -l <file> Write log to <file>.\n"
97 " -L Don't follow symbolic links.\n"
98 " -f <n> Display information for the first <n> records.\n"
99 " -V Show version.\n", *argv
103 res_set(default_res, "profilePath", DEFAULT_PROFILE_PATH);
104 res_set(default_res, "modulePath", DEFAULT_MODULE_PATH);
105 while ((ret = options("sVt:c:g:d:m:v:nf:l:L", argv, argc, &arg)) != -2)
109 if(cmd == 0) /* command */
113 const char *config = configName ? configName : "zebra.cfg";
114 zs = zebra_start_res(config, default_res, res);
117 yaz_log (YLOG_FATAL, "Cannot read config %s", config);
120 zh = zebra_open (zs, 0);
121 zebra_shadow_enable (zh, enable_commit);
125 zebra_select_database (zh, database) == ZEBRA_FAIL)
127 yaz_log(YLOG_FATAL, "Could not select database %s "
129 database, zebra_errCode(zh) );
132 if (!strcmp (arg, "update"))
134 else if (!strcmp (arg, "update1"))
136 else if (!strcmp (arg, "update2"))
138 else if (!strcmp (arg, "dump"))
140 else if (!strcmp (arg, "del") || !strcmp(arg, "delete"))
142 else if (!strcmp (arg, "init"))
146 else if (!strcmp(arg, "drop"))
150 else if (!strcmp(arg, "create"))
154 else if (!strcmp (arg, "commit"))
158 else if (!strcmp (arg, "clean"))
162 else if (!strcmp (arg, "stat") || !strcmp (arg, "status"))
164 zebra_register_statistics (zh,0);
166 else if (!strcmp (arg, "dumpdict"))
168 zebra_register_statistics (zh,1);
170 else if (!strcmp (arg, "compact"))
174 else if (!strcmp (arg, "filters"))
180 yaz_log (YLOG_FATAL, "unknown command: %s", arg);
186 ZEBRA_RES res = ZEBRA_OK;
190 if (zebra_begin_trans (zh, 1) != ZEBRA_OK)
196 res = zebra_repository_update (zh, arg);
199 res = zebra_repository_delete (zh, arg);
202 res = zebra_repository_show (zh, arg);
206 res = zebra_create_database(zh, arg);
209 res = zebra_drop_database(zh, arg);
216 const char *add = zebra_errAdd(zh);
217 yaz_log(YLOG_FATAL, "Operation failed: %s %s",
218 zebra_errString(zh), add ? add : "");
221 if (zebra_end_trans (zh) != ZEBRA_OK)
222 yaz_log (YLOG_WARN, "zebra_end_trans failed");
229 log_event_end (NULL, NULL);
234 char version_str[20];
236 zebra_get_version(version_str, sys_str);
238 printf("Zebra %s\n", version_str);
239 printf("(C) 1994-2007, Index Data ApS\n");
240 printf("Zebra is free software, covered by the GNU General Public License, and you are\n");
241 printf("welcome to change it and/or distribute copies of it under certain conditions.\n");
242 printf("Configured as: %s\n", sys_str);
243 if (strcmp(version_str, ZEBRAVER))
244 printf("zebraidx compiled version %s\n", ZEBRAVER);
247 yaz_log_init_level (yaz_log_mask_str(arg));
249 yaz_log_init_file (arg);
251 res_set(res, "memMax", arg);
255 res_set(res, "openRW", "0");
257 res_set(res, "group", arg);
259 res_set(res, "fileVerboseLimit", arg);
263 res_set(res, "recordType", arg);
267 res_set(res, "followLinks", "0");
269 yaz_log (YLOG_WARN, "unknown option '-%s'", arg);
273 if (zebra_end_trans (zh) != ZEBRA_OK)
274 yaz_log (YLOG_WARN, "zebra_end_trans failed");
280 res_close(default_res);
288 * indent-tabs-mode: nil
290 * vim: shiftwidth=4 tabstop=8 expandtab