640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
|
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
|
-
+
-
+
|
#endif
#if !defined(HAVE_READDIR_R) && !defined(OF_WINDOWS) && defined(OF_HAVE_THREADS)
readdirMutex = [[OFMutex alloc] init];
atexit(releaseReaddirMutex);
#endif
#ifdef OF_WINDOWS
if ((module = LoadLibrary("msvcrt.dll")) != NULL)
if ((module = GetModuleHandle("msvcrt.dll")) != NULL)
_wutime64FuncPtr = (int (*)(const wchar_t *,
struct __utimbuf64 *))GetProcAddress(module, "_wutime64");
if ((module = LoadLibrary("kernel32.dll")) != NULL) {
if ((module = GetModuleHandleA("kernel32.dll")) != NULL) {
createSymbolicLinkWFuncPtr =
(WINAPI BOOLEAN (*)(LPCWSTR, LPCWSTR, DWORD))
GetProcAddress(module, "CreateSymbolicLinkW");
createHardLinkWFuncPtr =
(WINAPI BOOLEAN (*)(LPCWSTR, LPCWSTR,
LPSECURITY_ATTRIBUTES))
GetProcAddress(module, "CreateHardLinkW");
|
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
|
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
|
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
|
return S_ISDIR(s.st_mode);
}
- (OFStream *)openItemAtIRI: (OFIRI *)IRI mode: (OFString *)mode
{
void *pool = objc_autoreleasePoolPush();
OFFile *file = [[OFFile alloc]
initWithPath: IRI.fileSystemRepresentation
mode: mode];
OFFile *file;
@try {
file = [OFFile fileWithPath: IRI.fileSystemRepresentation
mode: mode];
} @catch (OFOpenItemFailedException *e) {
/* The thrown one has a path instead of an IRI set. */
@throw [OFOpenItemFailedException exceptionWithIRI: IRI
mode: mode
errNo: e.errNo];
}
[file retain];
objc_autoreleasePoolPop(pool);
return [file autorelease];
}
- (OFFileAttributes)attributesOfItemAtIRI: (OFIRI *)IRI
|