18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <errno.h>
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#endif
#include "unistd_wrapper.h"
#import "OFFile.h"
#import "OFString.h"
#import "OFLocalization.h"
#import "OFInitializationFailedException.h"
#import "OFInvalidArgumentException.h"
|
>
>
>
>
|
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <errno.h>
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#endif
#include "unistd_wrapper.h"
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#import "OFFile.h"
#import "OFString.h"
#import "OFLocalization.h"
#import "OFInitializationFailedException.h"
#import "OFInvalidArgumentException.h"
|
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
#ifndef O_EXCL
# define O_EXCL 0
#endif
#ifndef O_EXLOCK
# define O_EXLOCK 0
#endif
#ifndef S_IRGRP
# define S_IRGRP 0
#endif
#ifndef S_IROTH
# define S_IROTH 0
#endif
#ifndef S_IWGRP
# define S_IWGRP 0
#endif
#ifndef S_IWOTH
# define S_IWOTH 0
#endif
#define DEFAULT_MODE S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
#if !defined(OF_MORPHOS) || defined(OF_IXEMUL)
static int
parseMode(const char *mode)
{
if (strcmp(mode, "r") == 0)
return O_RDONLY;
if (strcmp(mode, "w") == 0)
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#ifndef O_EXCL
# define O_EXCL 0
#endif
#ifndef O_EXLOCK
# define O_EXLOCK 0
#endif
#if !defined(OF_MORPHOS) || defined(OF_IXEMUL)
static int
parseMode(const char *mode)
{
if (strcmp(mode, "r") == 0)
return O_RDONLY;
if (strcmp(mode, "w") == 0)
|
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
if ((flags = parseMode([mode UTF8String])) == -1)
@throw [OFInvalidArgumentException exception];
flags |= O_CLOEXEC;
# if defined(OF_WINDOWS)
if ((_fd = _wopen([path UTF16String], flags,
DEFAULT_MODE)) == -1)
# elif defined(OF_HAVE_OFF64_T)
if ((_fd = open64([path cStringWithEncoding:
[OFLocalization encoding]], flags, DEFAULT_MODE)) == -1)
# else
if ((_fd = open([path cStringWithEncoding:
[OFLocalization encoding]], flags, DEFAULT_MODE)) == -1)
# endif
@throw [OFOpenItemFailedException
exceptionWithPath: path
mode: mode
errNo: errno];
#else
if ((flags = parseMode([mode UTF8String], &_append)) == -1)
|
|
|
|
|
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
if ((flags = parseMode([mode UTF8String])) == -1)
@throw [OFInvalidArgumentException exception];
flags |= O_CLOEXEC;
# if defined(OF_WINDOWS)
if ((_fd = _wopen([path UTF16String], flags,
_S_IREAD | _S_IWRITE)) == -1)
# elif defined(OF_HAVE_OFF64_T)
if ((_fd = open64([path cStringWithEncoding:
[OFLocalization encoding]], flags, 0666)) == -1)
# else
if ((_fd = open([path cStringWithEncoding:
[OFLocalization encoding]], flags, 0666)) == -1)
# endif
@throw [OFOpenItemFailedException
exceptionWithPath: path
mode: mode
errNo: errno];
#else
if ((flags = parseMode([mode UTF8String], &_append)) == -1)
|