diff options
author | Adrian Robert <[email protected]> | 2008-07-15 18:15:18 +0000 |
---|---|---|
committer | Adrian Robert <[email protected]> | 2008-07-15 18:15:18 +0000 |
commit | edfda78355c5528eee489fa8a7f9c73bf8e734f2 (patch) | |
tree | 78d2414d9791e1efc17ec9b35b438ae35602340a /lib-src/mac-fix-env.m | |
parent | 1391cd548782097e34d7856ec4f20ca90bdf2c26 (diff) |
merging Emacs.app (NeXTstep port)
Diffstat (limited to 'lib-src/mac-fix-env.m')
-rw-r--r-- | lib-src/mac-fix-env.m | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib-src/mac-fix-env.m b/lib-src/mac-fix-env.m new file mode 100644 index 0000000000..01798e56f4 --- /dev/null +++ b/lib-src/mac-fix-env.m @@ -0,0 +1,71 @@ +/* mac-fix-env: A small utility to pick up the shell environment on MacOS X + and insert it into the file ~/.MacOSX/environment.plist + creating if necessary. + Copyright (C) 1989, 1993, 2005, 2008 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. + + usage: + Run from command line (in Terminal) once or whenever path changes: + + /Applications/Emacs.app/Contents/MacOS/bin/mac-fix-env + + (change initial part to where you installed Emacs). +*/ + +#import <Foundation/Foundation.h> +#include <stdlib.h> + +int main(int argc, char *argv[]) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSMutableDictionary *envPlist; + NSString *file = [[NSHomeDirectory() + stringByAppendingPathComponent:@".MacOSX"] + stringByAppendingPathComponent:@"environment.plist"]; + NSString *path = [NSString stringWithCString: getenv("PATH")]; + + envPlist = [[NSDictionary dictionaryWithContentsOfFile: file] mutableCopy]; + if (envPlist == nil) + { + // create + NSString *dir = [file stringByDeletingLastPathComponent]; + envPlist = [NSMutableDictionary dictionaryWithCapacity: 5]; + + if ([[NSFileManager defaultManager] fileExistsAtPath: dir] == NO) + { + if ([[NSFileManager defaultManager] createDirectoryAtPath:dir + attributes:nil]==NO) + { + NSLog(@":\nCould not create directory at '%@'; aborting.",dir); + return 1; + } + } + } + + [envPlist setObject: path forKey: @"PATH"]; + + if ([envPlist writeToFile: file atomically: YES] == NO) + { + NSLog(@":\nCould not write file at '%@'; aborting.", file); + return 1; + } + + NSLog(@":\nWrote file to '%@'.\nPlease inspect it to make sure PATH is correct.", file); + return 0; +} |