From b7b51cb22c56cb7304a9d6c9c9b12eaaa470db49 Mon Sep 17 00:00:00 2001 From: Claudio Bisegni Date: Mon, 1 Mar 2010 20:41:48 +0100 Subject: [PATCH] OSXPreferencePane checkAfsStatusForStartup method modification for search /afs volume for determinate if afs is on has been transfered into checkAfsStatus. checkAfsStatusForStartup method is used to check when afs start axitn system startup. Anyway these are only workaround we must use osx api or afs api to make this job. Change-Id: If9be5a91418eccc0c58a69b566af140d619d3057 Reviewed-on: http://gerrit.openafs.org/1492 Reviewed-by: Claudio Bisegni Tested-by: Claudio Bisegni Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- .../DARWIN/AFSPreference/AFSCommanderPref.m | 19 ++++++++++++++++++- .../DARWIN/AFSPreference/AFSPropertyManager.h | 4 ++-- .../DARWIN/AFSPreference/AFSPropertyManager.m | 8 ++++---- src/platform/DARWIN/AFSPreference/afshlp.m | 4 ++++ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/platform/DARWIN/AFSPreference/AFSCommanderPref.m b/src/platform/DARWIN/AFSPreference/AFSCommanderPref.m index ecaacfbd2..687d5be61 100644 --- a/src/platform/DARWIN/AFSPreference/AFSCommanderPref.m +++ b/src/platform/DARWIN/AFSPreference/AFSCommanderPref.m @@ -900,8 +900,25 @@ // ------------------------------------------------------------------------------- -(void) setAfsStatus { + BOOL afsIsUp = [afsProperty checkAfsStatus]; - BOOL afsEnabledAtStartup = [afsProperty checkAfsStatusForStartup]; + BOOL afsEnabledAtStartup = NO; + + NSMutableString *commandOutput = [NSMutableString stringWithCapacity:20]; + NSString *rootHelperApp = [[self bundle] pathForResource:@"afshlp" ofType:@""]; + + // make the parameter to call the root helper app + const char *checkAFSDaemonParam[] = {"check_afs_daemon", 0L}; + if([[AuthUtil shared] autorize] == noErr) { + //now disable the launchd configuration + [[AuthUtil shared] execUnixCommand:[rootHelperApp UTF8String] + args:checkAFSDaemonParam + output:commandOutput]; + afsEnabledAtStartup = [commandOutput rangeOfString:@"afshlp:afs daemon registration result:1"].location!=NSNotFound; + } + + + [((NSButton *)startStopButton) setTitle: (afsIsUp?kAfsButtonShutdown:kAfsButtonStartup)]; diff --git a/src/platform/DARWIN/AFSPreference/AFSPropertyManager.h b/src/platform/DARWIN/AFSPreference/AFSPropertyManager.h index 000938704..63306456d 100644 --- a/src/platform/DARWIN/AFSPreference/AFSPropertyManager.h +++ b/src/platform/DARWIN/AFSPreference/AFSPropertyManager.h @@ -13,8 +13,8 @@ #define AFS_DAEMON_STARTUPSCRIPT "/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.rc" #define AFS_DAEMON_PATH "/Library/LaunchDaemons/org.openafs.filesystems.afs.plist" -#define AFS_FS_MOUNT "AFS" -#define AFS_DAEMON_LAUNCH_PATH "/private/var/db/openafs/etc/launchafs.sh" +#define AFS_FS_MOUNT "AFS" +#define AFS_LAUNCHCTL_GREP_STR "org.openafs.filesystems.afs" /*! @class AFSPropertyManager @abstract AFS Manage Class diff --git a/src/platform/DARWIN/AFSPreference/AFSPropertyManager.m b/src/platform/DARWIN/AFSPreference/AFSPropertyManager.m index a5fb45e3d..5a5c54039 100644 --- a/src/platform/DARWIN/AFSPreference/AFSPropertyManager.m +++ b/src/platform/DARWIN/AFSPreference/AFSPropertyManager.m @@ -1360,8 +1360,8 @@ -(BOOL) checkAfsStatus { BOOL result = NO; - NSString *fsResult = [TaskUtil executeTaskSearchingPath:@"fs" args:[NSArray arrayWithObjects:@"checkserver", nil]]; - result = (fsResult?([fsResult rangeOfString:@"All servers are running."].location != NSNotFound):NO); + NSString *dfResult = [TaskUtil executeTaskSearchingPath:@"/bin/df" args:[NSArray arrayWithObjects:nil]]; + result = (dfResult?([dfResult rangeOfString:@AFS_FS_MOUNT].location != NSNotFound):NO); return result; } @@ -1370,8 +1370,8 @@ // ------------------------------------------------------------------------------- -(BOOL) checkAfsStatusForStartup { BOOL result = NO; - NSString *dfResult = [TaskUtil executeTaskSearchingPath:@"/bin/df" args:[NSArray arrayWithObjects:nil]]; - result = (dfResult?([dfResult rangeOfString:@AFS_FS_MOUNT].location != NSNotFound):NO); + //NSString *fsResult = [TaskUtil executeTaskSearchingPath:@"launchctl" args:[NSArray arrayWithObjects: @"list", nil]]; + //result = (fsResult?([fsResult rangeOfString:@AFS_LAUNCHCTL_GREP_STR].location != NSNotFound):NO); return result; } diff --git a/src/platform/DARWIN/AFSPreference/afshlp.m b/src/platform/DARWIN/AFSPreference/afshlp.m index fe382b7b7..f3617d978 100644 --- a/src/platform/DARWIN/AFSPreference/afshlp.m +++ b/src/platform/DARWIN/AFSPreference/afshlp.m @@ -89,6 +89,10 @@ void runCommand(int argc, char *argv[]) [PListManager launchctlStringCommand:enable?@"load":@"unload" option:[NSArray arrayWithObjects:@"-w", nil] plistName:@AFS_DAEMON_PATH]; + } else if(argc == 2 && [cmdString rangeOfString:@"check_afs_daemon"].location!=NSNotFound) { + NSString *fsResult = [TaskUtil executeTaskSearchingPath:@"launchctl" args:[NSArray arrayWithObjects: @"list", nil]]; + BOOL checkAfsDaemon = (fsResult?([fsResult rangeOfString:@"org.openafs.filesystems.afs"].location != NSNotFound):NO); + printf("afshlp:afs daemon registration result:%d",checkAfsDaemon); } } -- 2.39.5