(rmail-summary-disable): Fix declaration.
[emacs.git] / lib-src / mac-fix-env.m
blob9770fb866da0874bb9de69c94ee9e0129b0c335d
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.
4    Copyright (C) 1989, 1993, 2005, 2008, 2009 Free Software Foundation, Inc.
6 This file is part of GNU Emacs.
8 GNU Emacs is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
13 GNU Emacs is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
22  usage:
23         Run from command line (in Terminal) once or whenever path changes:
25  /Applications/Emacs.app/Contents/MacOS/bin/mac-fix-env
27  (change initial part to where you installed Emacs).
30 #import <Foundation/Foundation.h>
31 #include <stdlib.h>
33 int main(int argc, char *argv[])
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")];
42     envPlist = [[NSDictionary dictionaryWithContentsOfFile: file] mutableCopy];
43     if (envPlist == nil)
44       {
45         // create
46         NSString *dir = [file stringByDeletingLastPathComponent];
47         envPlist = [NSMutableDictionary dictionaryWithCapacity: 5];
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       }
60     [envPlist setObject: path forKey: @"PATH"];
62     if ([envPlist writeToFile: file atomically: YES] == NO)
63       {
64         NSLog(@":\nCould not write file at '%@'; aborting.", file);
65         return 1;
66       }
68     NSLog(@":\nWrote file to '%@'.\nPlease inspect it to make sure PATH is correct.", file);
69     return 0;
72 // arch-tag: 609d5528-5ac1-42c5-859b-24c14341ee3b