summaryrefslogtreecommitdiff
path: root/storage/ndb/include/util/File.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/include/util/File.hpp')
-rw-r--r--storage/ndb/include/util/File.hpp205
1 files changed, 205 insertions, 0 deletions
diff --git a/storage/ndb/include/util/File.hpp b/storage/ndb/include/util/File.hpp
new file mode 100644
index 00000000000..3ed0ad7a6f9
--- /dev/null
+++ b/storage/ndb/include/util/File.hpp
@@ -0,0 +1,205 @@
+/* Copyright (C) 2003 MySQL AB
+
+ 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; either version 2 of the License, or
+ (at your option) any later version.
+
+ 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+#ifndef FILE_H
+#define FILE_H
+
+#include <ndb_global.h>
+
+/**
+ * This class provides a file abstraction . It has operations
+ * to create, read, write and delete a file.
+ *
+ * @version #@ $Id: File.hpp,v 1.5 2002/04/26 13:15:38 ejonore Exp $
+ */
+class File_class
+{
+public:
+ /**
+ * Returns true if the file exist.
+ *
+ * @param aFileName a filename to check.
+ * @return true if the file exists.
+ */
+ static bool exists(const char* aFileName);
+
+ /**
+ * Returns the size of a file.
+ *
+ * @param f a pointer to a FILE descriptor.
+ * @return the size of the file.
+ */
+ static long size(FILE* f);
+
+ /**
+ * Renames a file.
+ *
+ * @param currFileName the current name of the file.
+ * @param newFileName the new name of the file.
+ * @return true if successful.
+ */
+ static bool rename(const char* currFileName, const char* newFileName);
+
+ /**
+ * Removes/deletes a file.
+ *
+ * @param aFileName the file to remove.
+ * @return true if successful.
+ */
+ static bool remove(const char* aFileName);
+
+ /**
+ * Default constructor.
+ */
+ File_class();
+
+ /**
+ * Creates a new File with the specified filename and file mode.
+ * The real file itself will not be created unless open() is called!
+ *
+ * To see the available file modes use 'man 3 fopen'.
+ *
+ * @param aFileName a filename.
+ * @param mode the mode which the file should be opened/created with, default "r".
+ */
+ File_class(const char* aFileName, const char* mode = "r");
+
+ /**
+ * Destructor.
+ */
+ ~File_class();
+
+ /**
+ * Opens/creates the file. If open() fails then 'errno' and perror()
+ * should be used to determine the exact failure cause.
+ *
+ * @return true if successful. Check errno if unsuccessful.
+ */
+ bool open();
+
+ /**
+ * Opens/creates the file with the specified name and mode.
+ * If open() fails then 'errno' and perror() should be used to
+ * determine the exact failure cause.
+ *
+ * @param aFileName the file to open.
+ * @param mode the file mode to use.
+ * @return true if successful. Check errno if unsuccessful.
+ */
+ bool open(const char* aFileName, const char* mode);
+
+ /**
+ * Removes the file.
+ *
+ * @return true if successful.
+ */
+ bool remove();
+
+ /**
+ * Closes the file, i.e., the FILE descriptor is closed.
+ */
+ bool close();
+
+ /**
+ * Read from the file. See fread() for more info.
+ *
+ * @param buf the buffer to read into.
+ * @param itemSize the size of each item.
+ * @param nitems read max n number of items.
+ * @return 0 if successful.
+ */
+ int read(void* buf, size_t itemSize, size_t nitems) const;
+
+ /**
+ * Read char from the file. See fread() for more info.
+ *
+ * @param buf the buffer to read into.
+ * @param start the start index of the buf.
+ * @param length the length of the buffer.
+ * @return 0 if successful.
+ */
+ int readChar(char* buf, long start, long length) const;
+
+ /**
+ * Read chars from the file. See fread() for more info.
+ *
+ * @param buf the buffer to read into.
+ * @return 0 if successful.
+ */
+ int readChar(char* buf);
+
+ /**
+ * Write to file. See fwrite() for more info.
+ *
+ * @param buf the buffer to read from.
+ * @param itemSize the size of each item.
+ * @param nitems write max n number of items.
+ * @return 0 if successful.
+ */
+ int write(const void* buf, size_t itemSize, size_t nitems);
+
+ /**
+ * Write chars to file. See fwrite() for more info.
+ *
+ * @param buf the buffer to read from.
+ * @param start the start index of the buf.
+ * @param length the length of the buffer.
+ * @return 0 if successful.
+ */
+ int writeChar(const char* buf, long start, long length);
+
+ /**
+ * Write chars to file. See fwrite() for more info.
+ *
+ * @param buf the buffer to read from.
+ * @return 0 if successful.
+ */
+ int writeChar(const char* buf);
+
+ /**
+ * Returns the file size.
+ *
+ * @return the file size.
+ */
+ long size() const;
+
+ /**
+ * Returns the filename.
+ *
+ * @return the filename.
+ */
+ const char* getName() const;
+
+ /**
+ * Flush the buffer.
+ *
+ * @return 0 if successful.
+ */
+ int flush() const;
+
+private:
+ STATIC_CONST( MAX_FILE_NAME_SIZE = 128 );
+
+ FILE* m_file;
+ char m_fileName[MAX_FILE_NAME_SIZE];
+ const char* m_fileMode;
+ /* Prohibit */
+ File_class (const File_class& aCopy);
+ File_class operator = (const File_class&);
+ bool operator == (const File_class&);
+};
+#endif
+