projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
making 'dox' target phony
[idzebra-moved-to-github.git]
/
bfile
/
mfile.c
diff --git
a/bfile/mfile.c
b/bfile/mfile.c
index
b55dc2e
..
2295d11
100644
(file)
--- a/
bfile/mfile.c
+++ b/
bfile/mfile.c
@@
-1,5
+1,5
@@
-/* $Id: mfile.c,v 1.71 2006-11-14 08:12:06 adam Exp $
- Copyright (C) 1995-2006
+/* $Id: mfile.c,v 1.74 2007-01-15 15:10:14 adam Exp $
+ Copyright (C) 1995-2007
Index Data ApS
This file is part of the Zebra server.
Index Data ApS
This file is part of the Zebra server.
@@
-192,7
+192,8
@@
static int cmp_part_file(const void *p1, const void *p2)
return 0;
}
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;
{
MFile_area ma = (MFile_area) xmalloc(sizeof(*ma));
mf_dir *dirp;
@@
-236,6
+237,11
@@
MFile_area mf_init(const char *name, const char *spec, const char *base)
memcpy(metaname, dent->d_name, cp - dent->d_name);
metaname[ cp - dent->d_name] = '\0';
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 */
for (meta_f = ma->mfiles; meta_f; meta_f = meta_f->next)
{
/* known metafile */
@@
-282,9
+288,6
@@
MFile_area mf_init(const char *name, const char *spec, const char *base)
mf_destroy(ma);
return 0;
}
mf_destroy(ma);
return 0;
}
-#ifndef WIN32
- fsync(fd);
-#endif
close(fd);
if (dirp->max_bytes >= 0)
dirp->avail_bytes -= part_f->bytes;
close(fd);
if (dirp->max_bytes >= 0)
dirp->avail_bytes -= part_f->bytes;
@@
-433,7
+436,8
@@
int mf_close(MFile mf)
if (mf->files[i].fd >= 0)
{
#ifndef WIN32
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;
#endif
close(mf->files[i].fd);
mf->files[i].fd = -1;