-/* $Id: mfile.c,v 1.71 2006-11-14 08:12:06 adam Exp $
- Copyright (C) 1995-2006
+/* $Id: mfile.c,v 1.75 2007-02-10 18:37:42 adam Exp $
+ Copyright (C) 1995-2007
Index Data ApS
This file is part of the Zebra server.
return 0;
}
-MFile_area mf_init(const char *name, const char *spec, const char *base)
+MFile_area mf_init(const char *name, const char *spec, const char *base,
+ int only_shadow_files)
{
MFile_area ma = (MFile_area) xmalloc(sizeof(*ma));
mf_dir *dirp;
memcpy(metaname, dent->d_name, cp - dent->d_name);
metaname[ cp - dent->d_name] = '\0';
+ /* only files such as file-i-0.mf and file-i-b-0.mf, bug #739 */
+ if (only_shadow_files && cp[-2] != '-')
+ continue;
+ if (!only_shadow_files && cp[-2] == '-')
+ continue;
for (meta_f = ma->mfiles; meta_f; meta_f = meta_f->next)
{
/* known metafile */
mf_destroy(ma);
return 0;
}
-#ifndef WIN32
- fsync(fd);
-#endif
close(fd);
if (dirp->max_bytes >= 0)
dirp->avail_bytes -= part_f->bytes;
yaz_log(YLOG_WARN, "metafile %s already open", name);
return 0;
}
+ break;
}
if (!mnew)
{
if (mf->files[i].fd >= 0)
{
#ifndef WIN32
- fsync(mf->files[i].fd);
+ if (mf->wr)
+ fsync(mf->files[i].fd);
#endif
close(mf->files[i].fd);
mf->files[i].fd = -1;