diff options
Diffstat (limited to 'ndb/include/util/File.hpp')
-rw-r--r-- | ndb/include/util/File.hpp | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/ndb/include/util/File.hpp b/ndb/include/util/File.hpp new file mode 100644 index 00000000000..fe3d2642b18 --- /dev/null +++ b/ndb/include/util/File.hpp @@ -0,0 +1,206 @@ +/* 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 <NdbStdio.h> +#include <NdbConstant.hpp> + +/** + * 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 +{ +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(); + + /** + * 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(const char* aFileName, const char* mode = "r"); + + /** + * Destructor. + */ + ~File(); + + /** + * 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(const File& aCopy); + File operator = (const File&); + bool operator == (const File&); +}; +#endif + |