54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
-
+
-
+
|
#import "OFChangeFileOwnerFailedException.h"
#import "OFCreateDirectoryFailedException.h"
#import "OFDeleteDirectoryFailedException.h"
#import "OFDeleteFileFailedException.h"
#import "OFInitializationFailedException.h"
#import "OFInvalidArgumentException.h"
#import "OFLinkFailedException.h"
#import "OFMutexLockFailedException.h"
#import "OFLockFailedException.h"
#import "OFMutexUnlockFailedException.h"
#import "OFNotImplementedException.h"
#import "OFOpenFileFailedException.h"
#import "OFOutOfMemoryException.h"
#import "OFReadFailedException.h"
#import "OFRenameFileFailedException.h"
#import "OFSeekFailedException.h"
#import "OFSymlinkFailedException.h"
#import "OFUnlockFailedException.h"
#import "OFWriteFailedException.h"
#import "autorelease.h"
#import "macros.h"
#ifdef _WIN32
# import <windows.h>
|
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
|
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
|
-
+
-
|
if (owner == nil && group == nil)
@throw [OFInvalidArgumentException exceptionWithClass: self
selector: _cmd];
# ifdef OF_THREADS
if (!of_mutex_lock(&mutex))
@throw [OFMutexLockFailedException exceptionWithClass: self
@throw [OFLockFailedException exceptionWithClass: self];
mutex: nil];
@try {
# endif
if (owner != nil) {
struct passwd *passwd;
if ((passwd = getpwnam([owner cStringWithEncoding:
|
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
|
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
|
-
-
+
+
-
|
group: group];
gid = group_->gr_gid;
}
# ifdef OF_THREADS
} @finally {
if (!of_mutex_unlock(&mutex))
@throw [OFMutexUnlockFailedException
exceptionWithClass: self
@throw [OFUnlockFailedException
exceptionWithClass: self];
mutex: nil];
}
# endif
if (chown([path cStringWithEncoding: OF_STRING_ENCODING_NATIVE],
uid, gid))
@throw [OFChangeFileOwnerFailedException
exceptionWithClass: self
|