X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/61b027446e3ec6ffa2e49d25fd72f22e3cb0a880..2108f33a68772013d4e1c9dc2e476bb8ae77ad8f:/include/wx/file.h diff --git a/include/wx/file.h b/include/wx/file.h index 8f0f734bed..11d935dacc 100644 --- a/include/wx/file.h +++ b/include/wx/file.h @@ -7,7 +7,7 @@ // Created: 29/01/98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifndef __FILEH__ @@ -17,25 +17,30 @@ #pragma interface "file.h" #endif +#include "wx/string.h" +#include "wx/filefn.h" + // ---------------------------------------------------------------------------- -// simple types +// constants // ---------------------------------------------------------------------------- -#include +// we redefine these constants here because S_IREAD &c are _not_ standard +// however, we do assume that the values correspond to the Unix umask bits +#define wxS_IRUSR 00400 +#define wxS_IWUSR 00200 +#define wxS_IXUSR 00100 -// define off_t -#include +#define wxS_IRGRP 00040 +#define wxS_IWGRP 00020 +#define wxS_IXGRP 00010 -#ifdef _MSC_VER - #define off_t _off_t -#endif +#define wxS_IROTH 00004 +#define wxS_IWOTH 00002 +#define wxS_IXOTH 00001 -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// error return value for Seek() functions -const off_t ofsInvalid = (off_t)-1; +// default mode for the new files: corresponds to umask 022 +#define wxS_DEFAULT (wxS_IRUSR | wxS_IWUSR | wxS_IRGRP | wxS_IWGRP |\ + wxS_IROTH | wxS_IWOTH) // ---------------------------------------------------------------------------- // class wxFile: raw file IO @@ -48,13 +53,11 @@ class WXDLLEXPORT wxFile public: // more file constants // ------------------- - + // opening mode enum OpenMode { read, write, read_write, write_append }; // standard values for file descriptor enum { fd_invalid = -1, fd_stdin, fd_stdout, fd_stderr }; - // seek type - enum SeekMode { FromStart, FromEnd, FromCurrent }; // static functions // ---------------- @@ -70,9 +73,13 @@ public: wxFile(int fd) { m_fd = fd; } // open/close - bool Create(const char *szFileName, bool bOverwrite = FALSE); - bool Open(const char *szFileName, OpenMode mode = read); - inline bool Close(); // Close is a NOP if not opened + // create a new file (with the default value of bOverwrite, it will fail if + // the file already exists, otherwise it will overwrite it and succeed) + bool Create(const char *szFileName, bool bOverwrite = FALSE, + int access = wxS_DEFAULT); + bool Open(const char *szFileName, OpenMode mode = read, + int access = wxS_DEFAULT); + bool Close(); // Close is a NOP if not opened // assign an existing file descriptor and get it back from wxFile object void Attach(int fd) { Close(); m_fd = fd; } @@ -83,17 +90,17 @@ public: // returns number of bytes read or ofsInvalid on error off_t Read(void *pBuf, off_t nCount); // returns true on success - bool Write(const void *pBuf, uint nCount); + uint Write(const void *pBuf, uint nCount); // returns true on success - bool Write(const wxString& str) { return Write(str.c_str(), str.Len()); } + bool Write(const wxString& s) { return Write(s.c_str(), s.Len()) != 0; } // flush data not yet written bool Flush(); // file pointer operations (return ofsInvalid on failure) // move ptr ofs bytes related to start/current off_t/end of file - off_t Seek(off_t ofs, SeekMode mode = FromStart); + off_t Seek(off_t ofs, wxSeekMode mode = wxFromStart); // move ptr to ofs bytes before the end - off_t SeekEnd(off_t ofs = 0) { return Seek(ofs, FromEnd); } + off_t SeekEnd(off_t ofs = 0) { return Seek(ofs, wxFromEnd); } // get current off_t off_t Tell() const; // get current file length @@ -104,9 +111,11 @@ public: bool IsOpened() const { return m_fd != fd_invalid; } // is end of file reached? bool Eof() const; - + // is an error occured? + bool Error() const { return m_error; } + // dtor closes the file if opened - ~wxFile(); + virtual ~wxFile(); // Temporally virtual because of wxFileStream: I'll change back in a near future. private: // copy ctor and assignment operator are private because @@ -116,6 +125,7 @@ private: wxFile& operator=(const wxFile&); int m_fd; // file descriptor or INVALID_FD if not opened + bool m_error; // error memory }; // ---------------------------------------------------------------------------- @@ -125,7 +135,7 @@ private: // file (and close this one) or call Discard() to cancel the modification. If // you call neither of them, dtor will call Discard(). // ---------------------------------------------------------------------------- -class wxTempFile +class WXDLLEXPORT wxTempFile { public: // ctors @@ -141,8 +151,8 @@ public: bool IsOpened() const { return m_file.IsOpened(); } // I/O (both functions return true on success, false on failure) - bool Write(const void *p, uint n) { return m_file.Write(p, n); } - bool Write(const wxString& str) { return m_file.Write(str); } + bool Write(const void *p, uint n) { return m_file.Write(p, n) != 0; } + bool Write(const wxString& str) { return m_file.Write(str); } // different ways to close the file // validate changes and delete the old file of name m_strName @@ -160,4 +170,4 @@ private: }; #endif - // __FILEH__ + // __FILEH__