37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#ifndef S_IRGRP
# define S_IRGRP 0
#endif
#ifndef S_IROTH
# define S_IROTH 0
#endif
#define DEFAULT_MODE S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
#define DIR_MODE DEFAULT_MODE | S_IXUSR | S_IXGRP | S_IXOTH
OFFile *of_stdin = nil;
OFFile *of_stdout = nil;
OFFile *of_stderr = nil;
|
>
>
>
>
>
>
|
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#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
#define DIR_MODE DEFAULT_MODE | S_IXUSR | S_IXGRP | S_IXOTH
OFFile *of_stdin = nil;
OFFile *of_stdout = nil;
OFFile *of_stderr = nil;
|
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
const char *path_c = [path cString];
size_t path_len = [path cStringLength];
ssize_t i;
if (path_len == 0)
return @"";
if (path_c[path_len - 1] == OF_PATH_DELIM)
path_len--;
for (i = path_len - 1; i >= 0; i--) {
if (path_c[i] == OF_PATH_DELIM) {
i++;
break;
}
}
/*
* Only one component, but the trailing delimiter might have been
|
>
>
>
>
>
>
>
>
|
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
const char *path_c = [path cString];
size_t path_len = [path cStringLength];
ssize_t i;
if (path_len == 0)
return @"";
#ifndef _WIN32
if (path_c[path_len - 1] == OF_PATH_DELIM)
#else
if (path_c[path_len - 1] == '/' || path_c[path_len - 1] == '\\')
#endif
path_len--;
for (i = path_len - 1; i >= 0; i--) {
#ifndef _WIN32
if (path_c[i] == OF_PATH_DELIM) {
#else
if (path_c[i] == '/' || path_c[i] == '\\') {
#endif
i++;
break;
}
}
/*
* Only one component, but the trailing delimiter might have been
|
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
|
while (![src atEndOfStream]) {
size_t len = [src readNBytes: 4096
intoBuffer: buf];
[dest writeNBytes: len
fromBuffer: buf];
}
if (!override) {
struct stat s;
if (fstat(src->fd, &s) == 0)
fchmod(dest->fd, s.st_mode);
}
} @finally {
[src close];
[dest close];
}
[pool release];
}
|
>
>
|
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
|
while (![src atEndOfStream]) {
size_t len = [src readNBytes: 4096
intoBuffer: buf];
[dest writeNBytes: len
fromBuffer: buf];
}
#ifndef _WIN32
if (!override) {
struct stat s;
if (fstat(src->fd, &s) == 0)
fchmod(dest->fd, s.st_mode);
}
#endif
} @finally {
[src close];
[dest close];
}
[pool release];
}
|