aboutsummaryrefslogtreecommitdiffstats
path: root/include/filemgr.h
diff options
context:
space:
mode:
authordanglassey <danglassey>2002-08-14 09:57:17 +0000
committerdanglassey <danglassey>2002-08-14 09:57:17 +0000
commitdaa67ff1f728c07f2a116ee9a9f4505479ca6808 (patch)
treec224a537d30480002ae0560cc9104b543b4d1b5e /include/filemgr.h
parent6d6973e035aac5ec1676efccd5b8ada70c40b639 (diff)
downloadsword-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.h82
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