1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
-
-
+
+
+
|
/*
* Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
* 2018, 2019, 2020
* Jonathan Schleifer <js@nil.im>
* Copyright (c) 2008-2021 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#define _LARGEFILE64_SOURCE
#include <errno.h>
#include <math.h>
#ifdef HAVE_DIRENT_H
# include <dirent.h>
#endif
|
︙ | | |
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
|
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
|
-
+
-
|
errNo: errno];
destination = [OFString stringWithCString: destinationC
encoding: encoding
length: length];
key = of_file_attribute_key_symbolic_link_destination;
[attributes setObject: destination
[attributes setObject: destination forKey: key];
forKey: key];
# else
HANDLE handle;
OFString *destination;
if (func_CreateSymbolicLinkW == NULL)
return;
|
︙ | | |
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
|
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
|
-
+
-
|
stringWithUTF16String: tmp
length: slrb.SubstituteNameLength /
sizeof(wchar_t)];
[attributes setObject: of_file_type_symbolic_link
forKey: of_file_attribute_key_type];
key = of_file_attribute_key_symbolic_link_destination;
[attributes setObject: destination
[attributes setObject: destination forKey: key];
forKey: key];
# undef slrb
} @finally {
CloseHandle(handle);
}
# endif
}
#endif
|
︙ | | |
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
|
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
|
-
+
-
|
if (of_stat(path, &s) != 0)
return false;
return S_ISDIR(s.st_mode);
}
- (OFStream *)openItemAtURL: (OFURL *)URL
- (OFStream *)openItemAtURL: (OFURL *)URL mode: (OFString *)mode
mode: (OFString *)mode
{
void *pool = objc_autoreleasePoolPush();
OFFile *file = [[OFFile alloc]
initWithPath: URL.fileSystemRepresentation
mode: mode];
objc_autoreleasePoolPop(pool);
|
︙ | | |
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
|
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
|
-
-
|
mode: nil
errNo: retrieveError()];
while (ExNext(lock, &fib)) {
OFString *file = [[OFString alloc]
initWithCString: fib.fib_FileName
encoding: encoding];
@try {
[files addObject: file];
} @finally {
[file release];
}
}
# endif
if (IoErr() != ERROR_NO_MORE_ENTRIES)
@throw [OFReadFailedException
exceptionWithObject: self
requestedLength: 0
errNo: retrieveError()];
} @finally {
UnLock(lock);
}
#else
of_string_encoding_t encoding = [OFLocale encoding];
DIR *dir;
if ((dir = opendir([path cStringWithEncoding: encoding])) == NULL)
@throw [OFOpenItemFailedException exceptionWithURL: URL
mode: nil
errNo: errno];
# if !defined(HAVE_READDIR_R) && defined(OF_HAVE_THREADS)
@try {
|
︙ | | |
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
|
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
|
-
+
-
|
errNo: retrieveError()];
#endif
objc_autoreleasePoolPop(pool);
}
#ifdef OF_FILE_MANAGER_SUPPORTS_LINKS
- (void)linkItemAtURL: (OFURL *)source
- (void)linkItemAtURL: (OFURL *)source toURL: (OFURL *)destination
toURL: (OFURL *)destination
{
void *pool = objc_autoreleasePoolPush();
OFString *sourcePath, *destinationPath;
if (source == nil || destination == nil)
@throw [OFInvalidArgumentException exception];
|
︙ | | |
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
|
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
|
-
+
-
|
errNo: retrieveError()];
# endif
objc_autoreleasePoolPop(pool);
}
#endif
- (bool)moveItemAtURL: (OFURL *)source
- (bool)moveItemAtURL: (OFURL *)source toURL: (OFURL *)destination
toURL: (OFURL *)destination
{
void *pool;
if (![source.scheme isEqual: _scheme] ||
![destination.scheme isEqual: _scheme])
return false;
|
︙ | | |