Add 2009 to copyright years.
[bpt/emacs.git] / lib-src / mac-fix-env.m
CommitLineData
edfda783
AR
1/* mac-fix-env: A small utility to pick up the shell environment on MacOS X
2 and insert it into the file ~/.MacOSX/environment.plist
3 creating if necessary.
f5d0ac07 4 Copyright (C) 1989, 1993, 2005, 2008, 2009 Free Software Foundation, Inc.
edfda783
AR
5
6This file is part of GNU Emacs.
7
19280104 8GNU Emacs is free software: you can redistribute it and/or modify
edfda783 9it under the terms of the GNU General Public License as published by
19280104
GM
10the Free Software Foundation, either version 3 of the License, or
11(at your option) any later version.
edfda783
AR
12
13GNU Emacs is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19280104 19along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
edfda783 20
19280104 21/*
edfda783
AR
22 usage:
23 Run from command line (in Terminal) once or whenever path changes:
24
25 /Applications/Emacs.app/Contents/MacOS/bin/mac-fix-env
26
27 (change initial part to where you installed Emacs).
28*/
29
30#import <Foundation/Foundation.h>
31#include <stdlib.h>
32
33int main(int argc, char *argv[])
34{
35 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
36 NSMutableDictionary *envPlist;
37 NSString *file = [[NSHomeDirectory()
38 stringByAppendingPathComponent:@".MacOSX"]
39 stringByAppendingPathComponent:@"environment.plist"];
40 NSString *path = [NSString stringWithCString: getenv("PATH")];
41
42 envPlist = [[NSDictionary dictionaryWithContentsOfFile: file] mutableCopy];
43 if (envPlist == nil)
44 {
45 // create
46 NSString *dir = [file stringByDeletingLastPathComponent];
47 envPlist = [NSMutableDictionary dictionaryWithCapacity: 5];
48
49 if ([[NSFileManager defaultManager] fileExistsAtPath: dir] == NO)
50 {
51 if ([[NSFileManager defaultManager] createDirectoryAtPath:dir
52 attributes:nil]==NO)
53 {
54 NSLog(@":\nCould not create directory at '%@'; aborting.",dir);
55 return 1;
56 }
57 }
58 }
59
60 [envPlist setObject: path forKey: @"PATH"];
61
62 if ([envPlist writeToFile: file atomically: YES] == NO)
63 {
64 NSLog(@":\nCould not write file at '%@'; aborting.", file);
65 return 1;
66 }
67
68 NSLog(@":\nWrote file to '%@'.\nPlease inspect it to make sure PATH is correct.", file);
69 return 0;
70}
0ae1e5e5 71
2f8e74bb 72// arch-tag: 609d5528-5ac1-42c5-859b-24c14341ee3b