* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
- * $Id: mfile.h,v 1.11 1999-05-12 13:08:06 adam Exp $
+ * $Id: mfile.h,v 1.17 2002-04-04 14:14:13 adam Exp $
*/
#ifndef MFILE_H
#define MFILE_H
#include <stdio.h>
+#include <yaz/yconfig.h>
+
+#ifdef WIN32
+typedef long off_t;
+#else
+#include <sys/types.h>
+#endif
#ifndef FILENAME_MAX
#include <sys/param.h>
#define FILENAME_MAX MAXPATHLEN
#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
+#include <zebra-lock.h>
+
+YAZ_BEGIN_CDECL
#define MF_MIN_BLOCKS_CREAT 1 /* minimum free blocks in new dir */
#define MF_MAX_PARTS 28 /* max # of part-files per metafile */
#define mf_blocksize(mf) ((mf)->blocksize)
+
typedef struct mf_dir
{
char name[FILENAME_MAX+1];
- int max_bytes; /* allocated bytes in this dir. */
- int avail_bytes; /* bytes left */
+ off_t max_bytes; /* allocated bytes in this dir. */
+ off_t avail_bytes; /* bytes left */
struct mf_dir *next;
} mf_dir;
int number;
int top;
int blocks;
- int bytes;
+ off_t bytes;
mf_dir *dir;
char *path;
int fd;
int no_files;
int cur_file;
int open; /* is this file open? */
- int blocksize;
- int min_bytes_creat; /* minimum bytes required to enter directory */
+ off_t blocksize;
+ off_t min_bytes_creat; /* minimum bytes required to enter directory */
MFile_area ma;
int wr;
+ Zebra_mutex mutex;
struct meta_file *next;
} *MFile, meta_file;
mf_dir *dirs;
struct meta_file *mfiles;
struct MFile_area_struct *next; /* global list of active areas */
+ Zebra_mutex mutex;
} MFile_area_struct;
/*
* Open an area, cotaining metafiles in directories.
*/
-MFile_area mf_init(const char *name, const char *spec);
+MFile_area mf_init(const char *name, const char *spec, const char *base);
/*
* Release an area.
*/
int mf_unlink(MFile mf);
+
+/*
+ * Destroy all metafiles. No files may be opened.
+ */
+void mf_reset(MFile_area ma);
+
/*
* Unlink the file by name, rather than MFile-handle.
*/
int mf_unlink_name(MFile_area, const char *name);
-#ifdef __cplusplus
-}
-#endif
+
+YAZ_END_CDECL
#endif