X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fmain.c;h=eb4533b685f6a4d9d6c7511c43115f0c8ae39e29;hb=00796628a5c7dec56efe81be9cf781bb98afc47d;hp=c8e3a2870962725aa96d1ab12dd679b3d32055ca;hpb=87e6195e30805568aae3d2071047a8ba6ae5b760;p=idzebra-moved-to-github.git diff --git a/index/main.c b/index/main.c index c8e3a28..eb4533b 100644 --- a/index/main.c +++ b/index/main.c @@ -1,10 +1,31 @@ /* - * Copyright (C) 1994-1996, Index Data I/S + * Copyright (C) 1994-1997, Index Data I/S * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: main.c,v $ - * Revision 1.46 1997-02-10 10:20:13 adam + * Revision 1.51 1997-10-27 14:33:05 adam + * Moved towards generic character mapping depending on "structure" + * field in abstract syntax file. Fixed a few memory leaks. Fixed + * bug with negative integers when doing searches with relational + * operators. + * + * Revision 1.50 1997/09/25 14:55:52 adam + * Minor changes. + * + * Revision 1.49 1997/09/17 12:19:15 adam + * Zebra version corresponds to YAZ version 1.4. + * Changed Zebra server so that it doesn't depend on global common_resource. + * + * Revision 1.48 1997/09/09 13:38:08 adam + * Partial port to WIN95/NT. + * + * Revision 1.47 1997/02/12 20:39:46 adam + * Implemented options -f that limits the log to the first + * records. + * Changed some log messages also. + * + * Revision 1.46 1997/02/10 10:20:13 adam * Flag fileVerboseFlag set to 0 (default). * * Revision 1.45 1996/11/08 11:10:26 adam @@ -172,7 +193,11 @@ */ #include #include +#ifdef WINDOWS +#include +#else #include +#endif #include #include "index.h" @@ -180,6 +205,8 @@ char *prog; size_t mem_max = 0; +Res common_resource = 0; + static void abort_func (int level, const char *msg, void *info) { if (level & LOG_FATAL) @@ -205,7 +232,9 @@ int main (int argc, char **argv) rGroupDef.flagStoreData = -1; rGroupDef.flagStoreKeys = -1; rGroupDef.flagShowRecords = 0; - rGroupDef.fileVerboseFlag = 0; + rGroupDef.fileVerboseLimit = 100000; + rGroupDef.zebra_maps = NULL; + rGroupDef.dh = data1_create (); prog = *argv; if (argc < 2) @@ -223,15 +252,15 @@ int main (int argc, char **argv) " -g Index files according to group settings.\n" " -d Records belong to Z39.50 database .\n" " -m Use before flushing keys to disk.\n" - " -n Don't use shadow system\n" - " -s Show analysis on stdout, but do no work\n" - " -v Set logging to \n" - " -V Show version\n" + " -n Don't use shadow system.\n" + " -s Show analysis on stdout, but do no work.\n" + " -v Set logging to .\n" + " -f Display information for the first records.\n" + " -V Show version.\n" ); exit (1); } - log_event_end (abort_func, NULL); - while ((ret = options ("sVt:c:g:d:m:v:n", argv, argc, &arg)) != -2) + while ((ret = options ("sVt:c:g:d:m:v:nf:", argv, argc, &arg)) != -2) { if (ret == 0) { @@ -240,18 +269,26 @@ int main (int argc, char **argv) { if (!common_resource) { + logf (LOG_LOG, "zebra version %s %s", + ZEBRAVER, ZEBRADATE); common_resource = res_open (configName ? configName : FNAME_CONFIG); if (!common_resource) { - logf (LOG_FATAL, "Cannot open resource `%s'", + logf (LOG_FATAL, "cannot open resource `%s'", configName); exit (1); } - data1_set_tabpath (res_get (common_resource, - "profilePath")); - bf_lockDir (res_get (common_resource, "lockDir")); - init_charmap(); + data1_set_tabpath (rGroupDef.dh, res_get (common_resource, + "profilePath")); + + rGroupDef.bfs = + bfs_create (res_get (common_resource, "register")); + + bf_lockDir (rGroupDef.bfs, + res_get (common_resource, "lockDir")); + rGroupDef.zebra_maps = zebra_maps_open (res_get( + common_resource, "profilePath")); } if (!strcmp (arg, "update")) cmd = 'u'; @@ -265,60 +302,63 @@ int main (int argc, char **argv) cmd = 'd'; else if (!strcmp (arg, "commit")) { - zebraIndexLock (1); rval = res_get (common_resource, "shadow"); + zebraIndexLock (rGroupDef.bfs, 1, rval); if (rval && *rval) - bf_cache (1); + bf_cache (rGroupDef.bfs, rval); else { logf (LOG_FATAL, "Cannot perform commit"); logf (LOG_FATAL, "No shadow area defined"); exit (1); } - if (bf_commitExists ()) + if (bf_commitExists (rGroupDef.bfs)) { - logf (LOG_LOG, "Commit start"); + logf (LOG_LOG, "commit start"); zebraIndexLockMsg ("c"); zebraIndexWait (1); - logf (LOG_LOG, "Commit execute"); - bf_commitExec (); + logf (LOG_LOG, "commit execute"); + bf_commitExec (rGroupDef.bfs); +#ifndef WINDOWS sync (); +#endif zebraIndexLockMsg ("d"); zebraIndexWait (0); - logf (LOG_LOG, "Commit clean"); - bf_commitClean (); + logf (LOG_LOG, "commit clean"); + bf_commitClean (rGroupDef.bfs, rval); } else - logf (LOG_LOG, "Nothing to commit"); + logf (LOG_LOG, "cothing to commit"); } else if (!strcmp (arg, "clean")) { - zebraIndexLock (1); - if (bf_commitExists ()) + rval = res_get (common_resource, "shadow"); + zebraIndexLock (rGroupDef.bfs, 1, rval); + if (bf_commitExists (rGroupDef.bfs)) { zebraIndexLockMsg ("d"); zebraIndexWait (0); - logf (LOG_LOG, "Commit clean"); - bf_commitClean (); + logf (LOG_LOG, "commit clean"); + bf_commitClean (rGroupDef.bfs, rval); } else - logf (LOG_LOG, "Nothing to clean"); + logf (LOG_LOG, "nothing to clean"); } else if (!strcmp (arg, "stat") || !strcmp (arg, "status")) { - zebraIndexLock (0); rval = res_get (common_resource, "shadow"); + zebraIndexLock (rGroupDef.bfs, 0, rval); if (rval && *rval) { - bf_cache (1); + bf_cache (rGroupDef.bfs, rval); zebraIndexLockMsg ("r"); } rec_prstat (); - inv_prstat (); + inv_prstat (rGroupDef.bfs); } else { - logf (LOG_FATAL, "Unknown command: %s", arg); + logf (LOG_FATAL, "unknown command: %s", arg); exit (1); } } @@ -326,16 +366,17 @@ int main (int argc, char **argv) { struct recordGroup rGroup; - zebraIndexLock (0); + log_event_end (abort_func, NULL); rval = res_get (common_resource, "shadow"); + zebraIndexLock (rGroupDef.bfs, 0, rval); if (rval && *rval && !disableCommit) { - bf_cache (1); + bf_cache (rGroupDef.bfs, rval); zebraIndexLockMsg ("r"); } else { - bf_cache (0); + bf_cache (rGroupDef.bfs, 0); zebraIndexLockMsg ("w"); } zebraIndexWait (0); @@ -345,26 +386,26 @@ int main (int argc, char **argv) switch (cmd) { case 'u': - key_open (mem_max); - logf (LOG_LOG, "Updating %s", rGroup.path); + key_open (rGroup.bfs, mem_max); + logf (LOG_LOG, "updating %s", rGroup.path); repositoryUpdate (&rGroup); nsections = key_close (); break; case 'U': - key_open (mem_max); - logf (LOG_LOG, "Updating (pass 1) %s", rGroup.path); + key_open (rGroup.bfs,mem_max); + logf (LOG_LOG, "updating (pass 1) %s", rGroup.path); repositoryUpdate (&rGroup); key_close (); nsections = 0; break; case 'd': - key_open (mem_max); - logf (LOG_LOG, "Deleting %s", rGroup.path); + key_open (rGroup.bfs,mem_max); + logf (LOG_LOG, "deleting %s", rGroup.path); repositoryDelete (&rGroup); nsections = key_close (); break; case 's': - logf (LOG_LOG, "Dumping %s", rGroup.path); + logf (LOG_LOG, "dumping %s", rGroup.path); repositoryShow (&rGroup); nsections = 0; break; @@ -377,38 +418,31 @@ int main (int argc, char **argv) cmd = 0; if (nsections) { - logf (LOG_LOG, "Merging with index"); - key_input (nsections, 60); + logf (LOG_LOG, "merging with index"); + key_input (rGroup.bfs, nsections, 60); +#ifndef WINDOWS sync (); +#endif } + log_event_end (NULL, NULL); } } else if (ret == 'V') { - fprintf (stderr, "Zebra %s %s\n", - ZEBRAVER, ZEBRADATE); + fprintf (stderr, "Zebra %s %s\n", ZEBRAVER, ZEBRADATE); } else if (ret == 'v') - { log_init (log_mask_str(arg), prog, NULL); - } else if (ret == 'm') - { mem_max = 1024*1024*atoi(arg); - } else if (ret == 'd') - { rGroupDef.databaseName = arg; - } else if (ret == 's') - { rGroupDef.flagShowRecords = 1; - rGroupDef.fileVerboseFlag = 1; - } else if (ret == 'g') - { rGroupDef.groupName = arg; - } + else if (ret == 'f') + rGroupDef.fileVerboseLimit = atoi(arg); else if (ret == 'c') configName = arg; else if (ret == 't') @@ -417,12 +451,16 @@ int main (int argc, char **argv) disableCommit = 1; else { - logf (LOG_FATAL, "Unknown option '-%s'", arg); + logf (LOG_FATAL, "unknown option '-%s'", arg); exit (1); } } if (common_resource) + { zebraIndexUnlock (); + bfs_destroy (rGroupDef.bfs); + } + data1_destroy (rGroupDef.dh); exit (0); }