view lib-src/mac-fix-env.m @ 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents 98ae99a5a007
children a9f7e446141d
line wrap: on
line source

/* 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 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.  */

/*
 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;
}

// arch-tag: 609d5528-5ac1-42c5-859b-24c14341ee3b