/** This utility provides path/directory layout information for GNUstep. Copyright (C) 2005 Free Software Foundation, Inc. Written by: Richard Frith-Macdonald Created: July 2005 This file is part of the GNUstep Project This program 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. You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" #import "Foundation/NSArray.h" #import "Foundation/NSAutoreleasePool.h" #import "Foundation/NSPathUtilities.h" #import "Foundation/NSProcessInfo.h" #import "Foundation/NSUserDefaults.h" /**

The 'gspath' utility prints out various items of path/directory information (one item at a time).
The program always takes a single argument ... selecting the information to be printed.

The arguments and their meanings are -
defaults The GNUstep defaults directory of the current user devpath A path specification which may be used to add the root(s) of the GNUstep development environment on the current system. libpath A path specification which may be used to add all the standard GNUstep directories where dynamic libraries are normally stored.
you might do 'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`gspath libpath`' to make use of this.
path A path specification which may be used to add all the standard GNUstep directories where command-line programs are normally stored.
you might do 'PATH=$PATH:`gspath path`' to make use of this.
user The GNUstep home directory of the current user
*/ int main(int argc, char** argv, char **env) { NSAutoreleasePool *pool; NSProcessInfo *proc; NSArray *args; #ifdef GS_PASS_ARGUMENTS GSInitializeProcess(argc, argv, env); #endif pool = [NSAutoreleasePool new]; proc = [NSProcessInfo processInfo]; if (proc == nil) { GSPrintf(stderr, @"gspath: unable to get process information!\n"); [pool drain]; return 1; } args = [proc arguments]; if ([args count] == 2) { BOOL ok = YES; NSString *name = [[args objectAtIndex: 1] lowercaseString]; NSString *sep; #ifdef __MINGW__ sep = @";"; #else sep = @":"; #endif if ([name isEqualToString: @"defaults"] == YES) { GSPrintf(stdout, @"%@", GSDefaultsRootForUser(nil)); } else if ([name isEqualToString: @"path"] == YES) { NSArray *directories; NSString *path; directories = NSSearchPathForDirectoriesInDomains (GSToolsDirectory, NSAllDomainsMask, YES); path = [directories componentsJoinedByString: sep]; GSPrintf(stdout, @"%@", path); } else if ([name isEqualToString: @"devpath"] == YES) { NSArray *directories; NSString *path; directories = NSSearchPathForDirectoriesInDomains (NSDeveloperDirectory, NSAllDomainsMask, YES); path = [directories componentsJoinedByString: sep]; GSPrintf(stdout, @"%@", path); } else if ([name isEqualToString: @"libpath"] == YES) { NSArray *directories; NSString *path; directories = NSSearchPathForDirectoriesInDomains (GSLibrariesDirectory, NSAllDomainsMask, YES); path = [directories componentsJoinedByString: sep]; GSPrintf(stdout, @"%@", path); } else if ([name isEqualToString: @"user"] == YES) { GSPrintf(stdout, @"%@", NSHomeDirectory()); } else { ok = NO; // Unrecognised option } if (ok == YES) { [pool drain]; return 0; } } GSPrintf(stderr, @"The 'gspath' utility prints out various items of path/directory\n" @"information (one item at a time).\n" @"The program always takes a single argument ... selecting the information\n" @"to be printed.\n\n" @"The arguments and their meanings are -\n\n" @"defaults\n" @" The GNUstep defaults directory of the current user.\n\n" @"devpath\n" @" A path specification which may be used to add the root(s) of\n" @" the GNUstep development environment on the current system.\n\n" @"libpath\n" @" A path specification which may be used to add all the standard GNUstep\n" @" directories where dynamic libraries are normally stored.\n\n" @" you might do 'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`gspath libpath`' to make\n" @" use of this.\n\n" @"path\n" @" A path specification which may be used to add all the standard GNUstep\n" @" directories where command-line programs are normally stored.\n" @" you might do 'PATH=$PATH:`gspath path`' to make use of this.\n\n" @"user\n" @" The GNUstep home directory of the current user\n\n" ); [pool drain]; return 1; }