diff options
author | danglassey <danglassey> | 2002-08-14 09:57:17 +0000 |
---|---|---|
committer | danglassey <danglassey> | 2002-08-14 09:57:17 +0000 |
commit | daa67ff1f728c07f2a116ee9a9f4505479ca6808 (patch) | |
tree | c224a537d30480002ae0560cc9104b543b4d1b5e /include/filemgr.h | |
parent | 6d6973e035aac5ec1676efccd5b8ada70c40b639 (diff) | |
download | sword-sf-cvs-daa67ff1f728c07f2a116ee9a9f4505479ca6808.tar.gz |
Initial import from crosswire CVS for syncingimport-1.1.1
Diffstat (limited to 'include/filemgr.h')
-rw-r--r-- | include/filemgr.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/include/filemgr.h b/include/filemgr.h new file mode 100644 index 0000000..111f916 --- /dev/null +++ b/include/filemgr.h @@ -0,0 +1,82 @@ +/****************************************************************************** + * filemgr.h - definition of class FileMgr used for pooling file handles + * + * $Id: filemgr.h,v 1.14 2002/03/13 06:55:39 scribe Exp $ + * + * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org) + * CrossWire Bible Society + * P. O. Box 2528 + * Tempe, AZ 85280-2528 + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation version 2. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + */ + +#ifndef FILEMGR_H +#define FILEMGR_H + +#include <sys/stat.h> +#include <fcntl.h> + +#include <defs.h> + +class SWDLLEXPORT FileMgr; + +class SWDLLEXPORT FileDesc +{ + + friend class FileMgr; + + long offset; + int fd; // -77 closed; + FileMgr *parent; + FileDesc *next; + +public: + FileDesc (FileMgr * parent, char *path, int mode, int perms, bool tryDowngrade); + virtual ~FileDesc (); + int getFd (); + char *path; + int mode; + int perms; + bool tryDowngrade; +}; + + +class FileMgr +{ + + friend class FileDesc; + + FileDesc *files; + int sysOpen (FileDesc * file); +public: + + FileMgr (int maxFiles = 35); + ~FileMgr (); + FileDesc *open (char *path, int mode, bool tryDowngrade); + FileDesc *open (char *path, int mode, int perms = S_IREAD | S_IWRITE, bool tryDowngrade = false); + void close (FileDesc *); + + static signed char existsFile (const char *ipath, const char *ifileName = 0); + static signed char existsDir (const char *ipath, const char *idirName = 0); + // to truncate a file at its current position + // leaving byte at current possition intact + // deleting everything afterward. + signed char trunc (FileDesc *); + + int maxFiles; + static FileMgr systemFileMgr; +}; + + + + +#endif |