added "access" parameter to wxFile::Create and Open. The default value is
"rw-r--r--" mode. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -27,6 +27,23 @@
|
||||
// error return value for Seek() functions
|
||||
const off_t ofsInvalid = (off_t)-1;
|
||||
|
||||
// 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 wxS_IRGRP 00040
|
||||
#define wxS_IWGRP 00020
|
||||
#define wxS_IXGRP 00010
|
||||
|
||||
#define wxS_IROTH 00004
|
||||
#define wxS_IWOTH 00002
|
||||
#define wxS_IXOTH 00001
|
||||
|
||||
// default mode for the new files: corresponds to umask 022
|
||||
#define wxS_DEFAULT (wxS_IRUSR | wxS_IWUSR | wxS_IRGRP | wxS_IROTH)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// class wxFile: raw file IO
|
||||
//
|
||||
@@ -58,8 +75,12 @@ 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);
|
||||
// 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
|
||||
@@ -116,7 +137,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
|
||||
|
@@ -87,9 +87,6 @@
|
||||
|
||||
#define S_IFDIR _S_IFDIR
|
||||
#define S_IFREG _S_IFREG
|
||||
|
||||
#define S_IREAD _S_IREAD
|
||||
#define S_IWRITE _S_IWRITE
|
||||
#else
|
||||
#define tell(fd) lseek(fd, 0, SEEK_CUR)
|
||||
#endif //_MSC_VER
|
||||
@@ -139,11 +136,11 @@ wxFile::~wxFile()
|
||||
}
|
||||
|
||||
// create the file, fail if it already exists and bOverwrite
|
||||
bool wxFile::Create(const char *szFileName, bool bOverwrite)
|
||||
bool wxFile::Create(const char *szFileName, bool bOverwrite, int access)
|
||||
{
|
||||
// if bOverwrite we create a new file or truncate the existing one,
|
||||
// otherwise we only create the new file and fail if it already exists
|
||||
int fd = open(szFileName, O_CREAT | (bOverwrite ? O_TRUNC : O_EXCL));
|
||||
int fd = open(szFileName, O_CREAT | (bOverwrite ? O_TRUNC : O_EXCL), access);
|
||||
|
||||
if ( fd == -1 ) {
|
||||
wxLogSysError(_("can't create file '%s'"), szFileName);
|
||||
@@ -156,7 +153,7 @@ bool wxFile::Create(const char *szFileName, bool bOverwrite)
|
||||
}
|
||||
|
||||
// open the file
|
||||
bool wxFile::Open(const char *szFileName, OpenMode mode)
|
||||
bool wxFile::Open(const char *szFileName, OpenMode mode, int access)
|
||||
{
|
||||
int flags = O_BINARY;
|
||||
|
||||
@@ -178,7 +175,7 @@ bool wxFile::Open(const char *szFileName, OpenMode mode)
|
||||
break;
|
||||
}
|
||||
|
||||
int fd = open(szFileName, flags, S_IREAD | S_IWRITE);
|
||||
int fd = open(szFileName, flags, access);
|
||||
|
||||
if ( fd == -1 ) {
|
||||
wxLogSysError(_("can't open file '%s'"), szFileName);
|
||||
|
Reference in New Issue
Block a user