From 31d2bf6598c4b1fc815c37575bae23df472d7fa7 Mon Sep 17 00:00:00 2001 From: CaS Date: Wed, 1 Aug 2001 10:59:58 +0000 Subject: [PATCH] Allow listing of tools git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@10624 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 3 +++ Headers/gnustep/base/NSPathUtilities.h | 1 + Source/NSUser.m | 16 ++++++++++++---- Source/NSUserDefaults.m | 24 ++++++++++++++++-------- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 48e8f196c..97c8bd664 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ * Documentation/gsdoc/Base.gsdoc: Documented all the uses of environment variables I could find. + * Source/NSUserDefaults.m: __createArgumentDictionary ... handle + property lists as arguments correctly. + * Source/NSUser.m: Added GSTooldDirectory to listable paths. 2001-07-31 Richard Frith-Macdonald diff --git a/Headers/gnustep/base/NSPathUtilities.h b/Headers/gnustep/base/NSPathUtilities.h index b38f19290..4c1e8cf76 100644 --- a/Headers/gnustep/base/NSPathUtilities.h +++ b/Headers/gnustep/base/NSPathUtilities.h @@ -57,6 +57,7 @@ typedef enum NSAllApplicationsDirectory, NSAllLibrariesDirectory, GSLibrariesDirectory, + GSToolsDirectory, } NSSearchPathDirectory; typedef unsigned int NSSearchPathDomainMask; diff --git a/Source/NSUser.m b/Source/NSUser.m index 9f739604e..a83b13c16 100644 --- a/Source/NSUser.m +++ b/Source/NSUser.m @@ -512,6 +512,7 @@ NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directoryKey, NSString *devDir = @"Developer"; NSString *libraryDir = @"Library"; NSString *libsDir = @"Libraries"; + NSString *toolsDir = @"Tools"; NSString *docDir = @"Documentation"; NSMutableArray *paths = [NSMutableArray new]; NSString *path; @@ -563,7 +564,7 @@ if (domainMask & mask) \ { NSString *devAppsDir = [devDir stringByAppendingPathComponent: appsDir]; - /* FIXME - why not NSUserDomainMask ? */ + ADD_PATH (NSUserDomainMask, gnustep_local_root, devAppsDir); ADD_PATH (NSLocalDomainMask, gnustep_local_root, devAppsDir); ADD_PATH (NSNetworkDomainMask, gnustep_network_root, devAppsDir); ADD_PATH (NSSystemDomainMask, gnustep_system_root, devAppsDir); @@ -571,8 +572,8 @@ if (domainMask & mask) \ if (directoryKey == NSAdminApplicationDirectory || directoryKey == NSAllApplicationsDirectory) { - NSString *devAdminDir = [devDir stringByAppendingPathComponent: - adminDir]; + NSString *devAdminDir = [devDir stringByAppendingPathComponent: adminDir]; + /* FIXME - NSUserDomainMask ? - users have no Administrator directory */ ADD_PATH (NSLocalDomainMask, gnustep_local_root, devAdminDir); ADD_PATH (NSNetworkDomainMask, gnustep_network_root, devAdminDir); @@ -588,7 +589,7 @@ if (domainMask & mask) \ } if (directoryKey == NSDeveloperDirectory) { - /* FIXME - why not NSUserDomainMask ? */ + ADD_PATH (NSUserDomainMask, gnustep_local_root, devDir); ADD_PATH (NSLocalDomainMask, gnustep_local_root, devDir); ADD_PATH (NSNetworkDomainMask, gnustep_network_root, devDir); ADD_PATH (NSSystemDomainMask, gnustep_system_root, devDir); @@ -616,6 +617,13 @@ if (domainMask & mask) \ ADD_PATH (NSNetworkDomainMask, gnustep_network_root, libsDir); ADD_PATH (NSSystemDomainMask, gnustep_system_root, libsDir); } + if (directoryKey == GSToolsDirectory) + { + ADD_PATH (NSUserDomainMask, gnustep_user_root, toolsDir); + ADD_PATH (NSLocalDomainMask, gnustep_local_root, toolsDir); + ADD_PATH (NSNetworkDomainMask, gnustep_network_root, toolsDir); + ADD_PATH (NSSystemDomainMask, gnustep_system_root, toolsDir); + } #undef ADD_PATH fm = [NSFileManager defaultManager]; diff --git a/Source/NSUserDefaults.m b/Source/NSUserDefaults.m index ec7ea9f24..a3af0bdb9 100644 --- a/Source/NSUserDefaults.m +++ b/Source/NSUserDefaults.m @@ -1123,6 +1123,7 @@ static NSString *pathForUser(NSString *user) if ([key hasPrefix: @"-"]) { NSString *old = nil; + /* anything beginning with a '-' is a defaults key and we must strip the '-' from it. As a special case, we leave the '- in place for '-GS...' and '--GS...' for backward compatibility. */ @@ -1132,27 +1133,34 @@ static NSString *pathForUser(NSString *user) } key = [key substringFromIndex: 1]; val = [enumerator nextObject]; - if (!val) + if (val == nil) { // No more args [argDict setObject: @"" forKey: key]; // arg is empty. - if (old) - [argDict setObject: @"" forKey: old]; + if (old != nil) + { + [argDict setObject: @"" forKey: old]; + } done = YES; continue; } - else if ([val hasPrefix: @"-"]) + else if ([val hasPrefix: @"-"] == YES) { // Yet another argument [argDict setObject: @"" forKey: key]; // arg is empty. - if (old) - [argDict setObject: @"" forKey: old]; + if (old != nil) + { + [argDict setObject: @"" forKey: old]; + } key = val; continue; } else { // Real parameter + val = [val propertyList]; [argDict setObject: val forKey: key]; - if (old) - [argDict setObject: val forKey: old]; + if (old != nil) + { + [argDict setObject: val forKey: old]; + } } } done = ((key = [enumerator nextObject]) == nil);