X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=bfile%2Fmfile.c;h=794d529c2e43fb2482a4b885ea2beae24b81326d;hb=2b1851bd5565e3d21f9cf9a37661a584c063b75f;hp=0d37fdec2efe85aad2805bfe0b420cd7bd4d72bb;hpb=289af445bf7c8042b46200f9f2af18049ae049fb;p=idzebra-moved-to-github.git diff --git a/bfile/mfile.c b/bfile/mfile.c index 0d37fde..794d529 100644 --- a/bfile/mfile.c +++ b/bfile/mfile.c @@ -4,7 +4,14 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: mfile.c,v $ - * Revision 1.40 2000-10-17 12:37:09 adam + * Revision 1.42 2002-04-04 14:14:13 adam + * Multiple registers (alpha early) + * + * Revision 1.41 2000/11/29 14:24:01 adam + * Script configure uses yaz pthreads options. Added locking for + * zebra_register_{lock,unlock}. + * + * Revision 1.40 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. * @@ -155,7 +162,7 @@ #include #include -static int scan_areadef(MFile_area ma, const char *name, const char *ad) +static int scan_areadef(MFile_area ma, const char *ad, const char *base) { /* * If no definition is given, use current directory, unlimited. @@ -164,7 +171,7 @@ static int scan_areadef(MFile_area ma, const char *name, const char *ad) mf_dir **dp = &ma->dirs, *dir = *dp; if (!ad) - ad = ".:-1b"; + ad = ".:-1b"; for (;;) { const char *ad0 = ad; @@ -175,6 +182,12 @@ static int scan_areadef(MFile_area ma, const char *name, const char *ad) ad++; if (!*ad) break; + if (!zebra_is_abspath(ad) && base) + { + strcpy (dirname, base); + i = strlen(dirname); + dirname[i++] = '/'; + } while (*ad) { if (*ad == ':' && strchr ("+-0123456789", ad[1])) @@ -279,7 +292,7 @@ static int cmp_part_file(const void *p1, const void *p2) * Create a new area, cotaining metafiles in directories. * Find the part-files in each directory, and inventory the existing metafiles. */ -MFile_area mf_init(const char *name, const char *spec) +MFile_area mf_init(const char *name, const char *spec, const char *base) { MFile_area ma = (MFile_area) xmalloc(sizeof(*ma)); mf_dir *dirp; @@ -294,7 +307,7 @@ MFile_area mf_init(const char *name, const char *spec) strcpy(ma->name, name); ma->mfiles = 0; ma->dirs = 0; - if (scan_areadef(ma, name, spec) < 0) + if (scan_areadef(ma, spec, base) < 0) { logf (LOG_WARN, "Failed to access description of '%s'", name); return 0; @@ -316,10 +329,7 @@ MFile_area mf_init(const char *name, const char *spec) if (strchr (".-", *dent->d_name)) continue; if (len < 5 || !cp || strcmp (dent->d_name + len - 3, ".mf")) - { - logf (LOG_WARN, "bf: %s is not a part-file.", dent->d_name); continue; - } number = atoi(cp+1); memcpy (metaname, dent->d_name, cp - dent->d_name); metaname[ cp - dent->d_name] = '\0';