-/* $Id: mfile.c,v 1.49 2002-08-02 19:26:55 adam Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+/* $Id: mfile.c,v 1.50 2003-02-28 15:28:36 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
This file is part of the Zebra server.
{
const char *ad0 = ad;
int i = 0, fact = 1, multi;
- off_t size = 0;
+ mfile_off_t size = 0;
while (*ad == ' ' || *ad == '\t')
ad++;
return -1;
}
}
- if (lseek(mf->files[c].fd, (ps = pos - off) * mf->blocksize + offset,
+ if (mfile_seek(mf->files[c].fd, (ps = pos - off) * mf->blocksize + offset,
SEEK_SET) < 0)
{
logf (LOG_WARN|LOG_ERRNO, "Failed to seek in %s", mf->files[c].path);
dent->d_name);
return 0;
}
- if ((part_f->bytes = lseek(fd, 0, SEEK_END)) < 0)
+ if ((part_f->bytes = mfile_seek(fd, 0, SEEK_END)) < 0)
{
logf (LOG_FATAL|LOG_ERRNO, "Failed to seek in %s",
dent->d_name);
if (mnew->files[i].bytes % block_size)
mnew->files[i].bytes += block_size - mnew->files[i].bytes %
block_size;
- mnew->files[i].blocks = mnew->files[i].bytes / block_size;
+ mnew->files[i].blocks = (int) (mnew->files[i].bytes / block_size);
}
assert(!mnew->open);
}
for (i = 0; i < mnew->no_files; i++)
{
- mnew->files[i].blocks = mnew->files[i].bytes / mnew->blocksize;
+ mnew->files[i].blocks = (int)(mnew->files[i].bytes / mnew->blocksize);
if (i == mnew->no_files - 1)
mnew->files[i].top = -1;
else
/* file needs to grow */
while (ps >= mf->files[mf->cur_file].blocks)
{
- off_t needed = (ps - mf->files[mf->cur_file].blocks + 1) *
+ mfile_off_t needed = (ps - mf->files[mf->cur_file].blocks + 1) *
mf->blocksize;
/* file overflow - allocate new file */
if (mf->files[mf->cur_file].dir->max_bytes >= 0 &&
needed > mf->files[mf->cur_file].dir->avail_bytes)
{
/* cap off file? */
- if ((nblocks = mf->files[mf->cur_file].dir->avail_bytes /
- mf->blocksize) > 0)
+ if ((nblocks = (int) (mf->files[mf->cur_file].dir->avail_bytes /
+ mf->blocksize)) > 0)
{
logf (LOG_DEBUG, "Capping off file %s at pos %d",
mf->files[mf->cur_file].path, nblocks);
mf->files[mf->cur_file].dir = dp;
mf->files[mf->cur_file].number =
mf->files[mf->cur_file-1].number + 1;
- mf->files[mf->cur_file].blocks =
- mf->files[mf->cur_file].bytes = 0;
+ mf->files[mf->cur_file].blocks = 0;
+ mf->files[mf->cur_file].bytes = 0;
mf->files[mf->cur_file].fd = -1;
sprintf(tmp, "%s/%s-%d.mf", dp->name, mf->name,
mf->files[mf->cur_file].number);
-/* $Id: mfile.h,v 1.18 2002-08-02 19:26:55 adam Exp $
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+/* $Id: mfile.h,v 1.19 2003-02-28 15:28:36 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
This file is part of the Zebra server.
#include <yaz/yconfig.h>
#ifdef WIN32
-typedef long off_t;
+
+/* 32-bit access .. */
+#if 0
+typedef long mfile_off_t;
+#define mfile_seek lseek
+#endif
+
+/* 64-but access .. */
+typedef __int64 mfile_off_t;
+#define mfile_seek _lseeki64
+
#else
#include <sys/types.h>
+typedef off_t mfile_off_t;
+#define mfile_seek lseek
#endif
#ifndef FILENAME_MAX
typedef struct mf_dir
{
char name[FILENAME_MAX+1];
- off_t max_bytes; /* allocated bytes in this dir. */
- off_t avail_bytes; /* bytes left */
+ mfile_off_t max_bytes; /* allocated bytes in this dir. */
+ mfile_off_t avail_bytes; /* bytes left */
struct mf_dir *next;
} mf_dir;
int number;
int top;
int blocks;
- off_t bytes;
+ mfile_off_t bytes;
mf_dir *dir;
char *path;
int fd;
int no_files;
int cur_file;
int open; /* is this file open? */
- off_t blocksize;
- off_t min_bytes_creat; /* minimum bytes required to enter directory */
+ int blocksize;
+ mfile_off_t min_bytes_creat; /* minimum bytes required to enter directory */
MFile_area ma;
int wr;
Zebra_mutex mutex;