Index: class-dump/src/CDLCRunPath.m |
=================================================================== |
--- class-dump/src/CDLCRunPath.m (revision 0) |
+++ class-dump/src/CDLCRunPath.m (revision 0) |
@@ -0,0 +1,82 @@ |
+// -*- mode: ObjC -*- |
+ |
+// This file is part of class-dump, a utility for examining the Objective-C segment of Mach-O files. |
+// Copyright (C) 1997-1998, 2000-2001, 2004-2010 Steve Nygard. |
+ |
+#import "CDLCRunPath.h" |
+ |
+#import "CDDataCursor.h" |
+#import "CDMachOFile.h" |
+#import "CDSearchPathState.h" |
+ |
+@implementation CDLCRunPath |
+ |
+- (id)initWithDataCursor:(CDDataCursor *)cursor machOFile:(CDMachOFile *)aMachOFile; |
+{ |
+ NSUInteger length; |
+ |
+ if ([super initWithDataCursor:cursor machOFile:aMachOFile] == nil) |
+ return nil; |
+ |
+ rpathCommand.cmd = [cursor readInt32]; |
+ rpathCommand.cmdsize = [cursor readInt32]; |
+ |
+ rpathCommand.path.offset = [cursor readInt32]; |
+ |
+ length = rpathCommand.cmdsize - sizeof(rpathCommand); |
+ //NSLog(@"expected length: %u", length); |
+ |
+ path = [[cursor readStringOfLength:length encoding:NSASCIIStringEncoding] retain]; |
+ //NSLog(@"path: %@", path); |
+ |
+ return self; |
+} |
+ |
+- (void)dealloc; |
+{ |
+ [path release]; |
+ |
+ [super dealloc]; |
+} |
+ |
+- (uint32_t)cmd; |
+{ |
+ return rpathCommand.cmd; |
+} |
+ |
+- (uint32_t)cmdsize; |
+{ |
+ return rpathCommand.cmdsize; |
+} |
+ |
+- (NSString *)path; |
+{ |
+ return path; |
+} |
+ |
+- (NSString *)resolvedRunPath; |
+{ |
+ NSString *loaderPathPrefix = @"@loader_path"; |
+ NSString *executablePathPrefix = @"@executable_path"; |
+ |
+ if ([path hasPrefix:loaderPathPrefix]) { |
+ NSString *str, *loaderPath; |
+ |
+ loaderPath = [[[self machOFile] filename] stringByDeletingLastPathComponent]; |
+ str = [[path stringByReplacingOccurrencesOfString:loaderPathPrefix withString:loaderPath] stringByStandardizingPath]; |
+ |
+ return str; |
+ } |
+ |
+ if ([path hasPrefix:executablePathPrefix]) { |
+ NSString *str; |
+ |
+ str = [[path stringByReplacingOccurrencesOfString:executablePathPrefix withString:[[[self machOFile] searchPathState] executablePath]] stringByStandardizingPath]; |
+ |
+ return str; |
+ } |
+ |
+ return path; |
+} |
+ |
+@end |
Property changes on: class-dump/src/CDLCRunPath.m |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |