FROM : thomas bauer
DATE : Sun Nov 18 22:29:23 2007
dear list,
sorry. in my confustion i forgot the question (although obvious):
what is going on? why cannot i use a modified copy of attributes
on the target symlink file?
how am i supposed to modify a symlinks attributes?
is writing of attributes to symlinks not supported by nsfilemanager?
any hint is appreciated....
regards
thomas bauer
Begin forwarded message:
> From: thomas bauer <<email_removed>>
> Date: 18. November 2007 20:39:29 GMT+01:00
> To: <email_removed>
> Subject: NSFileManager destroying target of symlink at
> changefileattributes
>
> dear list,
>
> following code is executed as root in a test foundation tool.
> it simply copies the localtime symlink (/etc/localtime) to another
> partition and then tries to clone
> its fileattributes. if a copy of the source fileattributes
> dictionary is used
> instead of the original one, the changefileattributes call damages
> the target
> of the symlink replacing it with a broken symlink.
>
> (ie /usr/share/zoneinfo/yourzone will be damaged, destroying your
> timezone setting.
> make a copy before testing this!)
>
> if the original dict is used, everything is fine.
> i nslogged both dicts and both are identical.
>
> (only in this example code i use a trivial copy of the attributes
> dict. the original code has to use
> a mutable copy to alter the permission flags between source and
> target. since this modification
> is not related to the issue i have altered the testcode to just use
> a trivial copy)
>
> thanks and regards
> thomas bauer - freeridecoding
>
>
> #import <Foundation/Foundation.h>
>
> int main (int argc, const char * argv[]) {
> NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
>
> NSFileManager *fm = [NSFileManager defaultManager];
> [fm copyPath:@"/private/etc/localtime" toPath:@"/Volumes/tigerclone/
> localtime" handler:nil];
>
> NSDictionary *sourceAttributes = [fm fileAttributesAtPath:@"/
> private/etc/localtime" traverseLink:NO];
> NSDictionary *copyattrs= [NSDictionary
> dictionaryWithDictionary:sourceAttributes];
>
> // [fm changeFileAttributes:copyattrs atPath:@"/Volumes/tigerclone/
> localtime"]; // THIS BREAKS TARGET OF SOURCE SYMLINK
> [fm changeFileAttributes:sourceAttributes atPath:@"/Volumes/
> tigerclone/localtime"]; //THIS IS OK
>
> [pool release];
> return 0;
> }
>
> d
> _______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>
> This email sent to <email_removed>
DATE : Sun Nov 18 22:29:23 2007
dear list,
sorry. in my confustion i forgot the question (although obvious):
what is going on? why cannot i use a modified copy of attributes
on the target symlink file?
how am i supposed to modify a symlinks attributes?
is writing of attributes to symlinks not supported by nsfilemanager?
any hint is appreciated....
regards
thomas bauer
Begin forwarded message:
> From: thomas bauer <<email_removed>>
> Date: 18. November 2007 20:39:29 GMT+01:00
> To: <email_removed>
> Subject: NSFileManager destroying target of symlink at
> changefileattributes
>
> dear list,
>
> following code is executed as root in a test foundation tool.
> it simply copies the localtime symlink (/etc/localtime) to another
> partition and then tries to clone
> its fileattributes. if a copy of the source fileattributes
> dictionary is used
> instead of the original one, the changefileattributes call damages
> the target
> of the symlink replacing it with a broken symlink.
>
> (ie /usr/share/zoneinfo/yourzone will be damaged, destroying your
> timezone setting.
> make a copy before testing this!)
>
> if the original dict is used, everything is fine.
> i nslogged both dicts and both are identical.
>
> (only in this example code i use a trivial copy of the attributes
> dict. the original code has to use
> a mutable copy to alter the permission flags between source and
> target. since this modification
> is not related to the issue i have altered the testcode to just use
> a trivial copy)
>
> thanks and regards
> thomas bauer - freeridecoding
>
>
> #import <Foundation/Foundation.h>
>
> int main (int argc, const char * argv[]) {
> NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
>
> NSFileManager *fm = [NSFileManager defaultManager];
> [fm copyPath:@"/private/etc/localtime" toPath:@"/Volumes/tigerclone/
> localtime" handler:nil];
>
> NSDictionary *sourceAttributes = [fm fileAttributesAtPath:@"/
> private/etc/localtime" traverseLink:NO];
> NSDictionary *copyattrs= [NSDictionary
> dictionaryWithDictionary:sourceAttributes];
>
> // [fm changeFileAttributes:copyattrs atPath:@"/Volumes/tigerclone/
> localtime"]; // THIS BREAKS TARGET OF SOURCE SYMLINK
> [fm changeFileAttributes:sourceAttributes atPath:@"/Volumes/
> tigerclone/localtime"]; //THIS IS OK
>
> [pool release];
> return 0;
> }
>
> d
> _______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>
> This email sent to <email_removed>
| Related mails | Author | Date |
|---|---|---|
| thomas bauer | Nov 18, 20:39 | |
| thomas bauer | Nov 18, 22:29 |






Cocoa mail archive

