From b18d9af2aa9be016e963056b89bd0e864c4f95de Mon Sep 17 00:00:00 2001 From: Johannes Gilger Date: Sun, 8 Feb 2009 13:31:16 +0100 Subject: [PATCH] ApplicationController: Make sure gitx installation-path exists When trying to install the gitx symlink into /usr/local/bin, GitX would fail if the directory /usr/local/bin didn't exist yet. We simply call mkdir -p in advance, which only creates the directory if doesn't exist. --- ApplicationController.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ApplicationController.m b/ApplicationController.m index 86252cd..746a148 100644 --- a/ApplicationController.m +++ b/ApplicationController.m @@ -92,12 +92,16 @@ - (IBAction)installCliTool:(id)sender; { BOOL success = NO; - NSString* installationPath = @"/usr/local/bin/gitx"; + NSString* installationPath = @"/usr/local/bin/"; + NSString* installationName = @"gitx"; NSString* toolPath = [[NSBundle mainBundle] pathForResource:@"gitx" ofType:@""]; if (toolPath) { AuthorizationRef auth; if (AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &auth) == errAuthorizationSuccess) { - char const* arguments[] = { "-f", "-s", [toolPath UTF8String], [installationPath UTF8String], NULL }; + char const* mkdir_arg[] = { "-p", [installationPath UTF8String], NULL}; + char const* mkdir = "/bin/mkdir"; + AuthorizationExecuteWithPrivileges(auth, mkdir, kAuthorizationFlagDefaults, (char**)mkdir_arg, NULL); + char const* arguments[] = { "-f", "-s", [toolPath UTF8String], [[installationPath stringByAppendingString: installationName] UTF8String], NULL }; char const* helperTool = "/bin/ln"; if (AuthorizationExecuteWithPrivileges(auth, helperTool, kAuthorizationFlagDefaults, (char**)arguments, NULL) == errAuthorizationSuccess) { int status;