X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fmain.c;h=c2b16c194c981fa18af623cb18236420d9358b0e;hb=087298c5eeb7746a1d0ded9067b1d582bd641a25;hp=e97ae7ce4371e8c7c68c42d3a94fedaf05280c3c;hpb=4415da5dbbba04e50d4524347486d60113ed569c;p=idzebra-moved-to-github.git diff --git a/index/main.c b/index/main.c index e97ae7c..c2b16c1 100644 --- a/index/main.c +++ b/index/main.c @@ -4,7 +4,52 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: main.c,v $ - * Revision 1.65 1999-05-20 12:57:18 adam + * Revision 1.78 2000-10-17 12:37:09 adam + * Fixed notification of live-updates. Fixed minor problem with mf_init + * where it didn't handle shadow area file names correctly. + * + * Revision 1.77 2000/09/05 14:04:05 adam + * Updates for prefix 'yaz_' for YAZ log functions. + * + * Revision 1.76 2000/03/20 19:08:36 adam + * Added remote record import using Z39.50 extended services and Segment + * Requests. + * + * Revision 1.75 1999/12/08 22:44:45 adam + * Zebra/Z'mbol dependencies added. + * + * Revision 1.74 1999/12/08 15:03:11 adam + * Implemented bf_reset. + * + * + * Revision 1.73 1999/11/30 13:48:03 adam + * Improved installation. Updated for inclusion of YAZ header files. + * + * Revision 1.72 1999/10/14 14:33:50 adam + * Added truncation 5=106. + * + * Revision 1.71 1999/09/08 12:12:06 adam + * Fixed bad message. + * + * Revision 1.70 1999/09/07 07:19:21 adam + * Work on character mapping. Implemented replace rules. + * + * Revision 1.69 1999/07/21 08:31:33 adam + * More version info on WIN32. + * + * Revision 1.68 1999/07/14 10:59:26 adam + * Changed functions isc_getmethod, isams_getmethod. + * Improved fatal error handling (such as missing EXPLAIN schema). + * + * Revision 1.67 1999/07/06 12:28:04 adam + * Updated record index structure. Format includes version ID. Compression + * algorithm ID is stored for each record block. + * + * Revision 1.66 1999/06/25 13:48:02 adam + * Updated MSVC project files. + * Added BZIP2 record compression (not very well tested). + * + * Revision 1.65 1999/05/20 12:57:18 adam * Implemented TCL filter. Updated recctrl system. * * Revision 1.64 1999/05/15 14:36:38 adam @@ -246,7 +291,7 @@ #include #endif -#include +#include #include "index.h" #include "recindex.h" @@ -262,13 +307,14 @@ char *prog; Res common_resource = 0; + int main (int argc, char **argv) { int ret; int cmd = 0; char *arg; - char *configName = NULL; - int nsections; + char *configName = FNAME_CONFIG; + int nsections = 0; int disableCommit = 0; size_t mem_max = 0; @@ -299,7 +345,7 @@ int main (int argc, char **argv) prog = *argv; if (argc < 2) { - fprintf (stderr, "zebraidx [options] command ...\n" + fprintf (stderr, "%s [options] command ...\n" "Commands:\n" " update Update index with files below .\n" " If is empty filenames are read from stdin.\n" @@ -320,7 +366,7 @@ int main (int argc, char **argv) #if ZEBRASDR " -S Use SDRKit\n" #endif - " -V Show version.\n" + " -V Show version.\n", *argv ); exit (1); } @@ -337,14 +383,18 @@ int main (int argc, char **argv) { if (!common_resource) { +#if ZMBOL + logf (LOG_LOG, "zmbol version %s %s", + ZEBRAVER, ZEBRADATE); +#else logf (LOG_LOG, "zebra version %s %s", ZEBRAVER, ZEBRADATE); +#endif common_resource = res_open (configName ? configName : FNAME_CONFIG); if (!common_resource) { - logf (LOG_FATAL, "cannot configuration file `%s'", - configName); + logf (LOG_FATAL, "cannot read file `%s'", configName); exit (1); } data1_set_tabpath (rGroupDef.dh, res_get (common_resource, @@ -352,6 +402,11 @@ int main (int argc, char **argv) rGroupDef.bfs = bfs_create (res_get (common_resource, "register")); + if (!rGroupDef.bfs) + { + logf (LOG_FATAL, "Cannot access register"); + exit(1); + } bf_lockDir (rGroupDef.bfs, res_get (common_resource, "lockDir")); @@ -367,6 +422,16 @@ int main (int argc, char **argv) cmd = 's'; else if (!strcmp (arg, "del") || !strcmp(arg, "delete")) cmd = 'd'; + else if (!strcmp (arg, "init")) + { + zebraIndexUnlock(); + rval = res_get (common_resource, "shadow"); + zebraIndexLock (rGroupDef.bfs, 0, rval); + if (rval && *rval) + bf_cache (rGroupDef.bfs, rval); + zebraIndexLockMsg ("w"); + bf_reset (rGroupDef.bfs); + } else if (!strcmp (arg, "commit")) { rval = res_get (common_resource, "shadow"); @@ -395,7 +460,7 @@ int main (int argc, char **argv) bf_commitClean (rGroupDef.bfs, rval); } else - logf (LOG_LOG, "cothing to commit"); + logf (LOG_LOG, "nothing to commit"); } else if (!strcmp (arg, "clean")) { @@ -421,7 +486,7 @@ int main (int argc, char **argv) bf_cache (rGroupDef.bfs, rval); zebraIndexLockMsg ("r"); } - records = rec_open (rGroupDef.bfs, 0); + records = rec_open (rGroupDef.bfs, 0, 0); rec_prstat (records); rec_close (&records); inv_prstat (rGroupDef.bfs); @@ -446,7 +511,15 @@ int main (int argc, char **argv) else { struct recordGroup rGroup; - +#if ZMBOL +#else + /* For zebra, delete lock file and reset register */ + if (rGroupDef.flagRw) + { + zebraIndexUnlock(); + bf_reset (rGroupDef.bfs); + } +#endif rval = res_get (common_resource, "shadow"); zebraIndexLock (rGroupDef.bfs, 0, rval); if (rGroupDef.flagRw) @@ -507,7 +580,7 @@ int main (int argc, char **argv) if (nsections) { logf (LOG_LOG, "merging with index"); - key_input (rGroup.bfs, nsections, 60); + key_input (rGroup.bfs, nsections, 60, common_resource); #ifndef WIN32 sync (); #endif @@ -517,18 +590,28 @@ int main (int argc, char **argv) } else if (ret == 'V') { - fprintf (stderr, "Zebra %s %s\n", -#if ZEBRASDR - "SDR", +#if ZMBOL + fprintf (stderr, "Z'mbol %s %s\n", ZEBRAVER, ZEBRADATE); +#else + fprintf (stderr, "Zebra %s %s\n", ZEBRAVER, ZEBRADATE); +#endif + fprintf (stderr, " (C) 1994-1999, Index Data ApS\n"); +#ifdef WIN32 +#ifdef _DEBUG + fprintf (stderr, " WIN32 Debug\n"); #else - ZEBRAVER, + fprintf (stderr, " WIN32 Release\n"); +#endif +#endif +#if HAVE_BZLIB_H + fprintf (stderr, "libbzip2\n" + " (C) 1996-1999 Julian R Seward. All rights reserved.\n"); #endif - ZEBRADATE); } else if (ret == 'v') - log_init_level (log_mask_str(arg)); + yaz_log_init_level (yaz_log_mask_str(arg)); else if (ret == 'l') - log_init_file (arg); + yaz_log_init_file (arg); else if (ret == 'm') mem_max = 1024*1024*atoi(arg); else if (ret == 'd')