From c21b4dfa41fcfac68da13d9133d3cb1d2b1c3dd5 Mon Sep 17 00:00:00 2001 From: Sebastian Hammer Date: Tue, 23 Aug 1994 14:41:46 +0000 Subject: [PATCH] First functional version of mfile. --- include/mfile.h | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 include/mfile.h diff --git a/include/mfile.h b/include/mfile.h new file mode 100644 index 0000000..cb1889f --- /dev/null +++ b/include/mfile.h @@ -0,0 +1,108 @@ +/* + * Copyright (C) 1994, Index Data I/S + * All rights reserved. + * Sebastian Hammer, Adam Dickmeiss + * + * $Log: mfile.h,v $ + * Revision 1.1 1994-08-23 14:41:46 quinn + * First functional version of mfile. + * + */ + +#ifndef MFILE_H +#define MFILE_H + +#include + +#include + +#define MF_MIN_BLOCKS_CREAT 1 /* minimum free blocks in new dir */ +#define MF_DEFAULT_AREA "register" /* Use if no mf_init */ +#define MF_MAX_PARTS 28 /* max # of part-files per metafile */ + +typedef struct mf_dir +{ + char name[FILENAME_MAX+1]; + int max_bytes; /* allocated bytes in this dir. */ + int avail_bytes; /* bytes left */ + struct mf_dir *next; +} mf_dir; + +typedef struct part_file +{ + int number; + int top; + int blocks; + int bytes; + mf_dir *dir; + char *path; + int fd; +} part_file; + +struct MFile_area_struct; +typedef struct MFile_area_struct *MFile_area; + +typedef struct meta_file +{ + char name[FILENAME_MAX+1]; + part_file files[MF_MAX_PARTS]; + int no_files; + int cur_file; + int open; /* is this file open? */ + int blocksize; + int min_bytes_creat; /* minimum bytes required to enter directory */ + MFile_area ma; + int wr; + + struct meta_file *next; +} *MFile, meta_file; + +typedef struct MFile_area_struct +{ + char name[FILENAME_MAX+1]; + mf_dir *dirs; + struct meta_file *mfiles; + struct MFile_area_struct *next; /* global list of active areas */ +} MFile_area_struct; + +/* + * Open an area, cotaining metafiles in directories. + */ +MFile_area mf_init(const char *name); + +/* + * Release an area. + */ +int mf_dispose(MFile_area ma); + +/* + * Open a metafile. + */ +MFile mf_open(MFile_area ma, const char *name, int block_size, int wflag); + +/* + * Close a metafile. + */ +int mf_close(MFile mf); + +/* + * Read one block from a metafile. Interface mirrors bfile. + */ +int mf_read(MFile mf, int no, int offset, int num, void *buf); + +/* + * Same. + */ +int mf_write(MFile mf, int no, int offset, int num, const void *buf); + +/* + * Destroy a metafile, unlinking component files. File must be open. + */ +int mf_unlink(MFile mf); + +/* + * Unlink the file by name, rather than MFile-handle. + */ +int mf_unlink_name(MFile_area, const char *name); + +#endif -- 1.7.10.4