Mercurial > emacs
diff lib-src/mac-fix-env.m @ 96675:d45acf0c8d23
merging Emacs.app (NeXTstep port)
| author | Adrian Robert <Adrian.B.Robert@gmail.com> |
|---|---|
| date | Tue, 15 Jul 2008 18:15:18 +0000 |
| parents | |
| children | e869d0172660 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib-src/mac-fix-env.m Tue Jul 15 18:15:18 2008 +0000 @@ -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; +}
