Changeset 229


Ignore:
Timestamp:
05/19/06 08:12:38 (18 years ago)
Author:
rchin
Message:

Created DSCL framework from DSCL open source code (distributed as a part of Darwin from Apple). This is for programmatically testing and adding entries to directory services, so that I can add the user to the procmod group. The modified DSCL code is in a zip file available for people to use (had to add some methods to provide better read functionality). Also has a binary that does the adding to procmod group with escalated privileges when the user authenticates via the authorization services security framework. Updated the readme to reflect this additional step for building.

Location:
trunk/Cocoa/F-Script Anywhere/Source
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.xcodeproj/project.pbxproj

    r224 r229  
    88
    99/* Begin PBXBuildFile section */
     10                256669AE0A1D8DE30006AC79 /* DSCL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 256669AD0A1D8DE30006AC79 /* DSCL.framework */; };
     11                25666AD30A1D96DE0006AC79 /* DSCL.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 256669AD0A1D8DE30006AC79 /* DSCL.framework */; };
     12                25666ADA0A1D97B50006AC79 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25666AD90A1D97B50006AC79 /* CoreFoundation.framework */; };
     13                25666BE70A1DAA1D0006AC79 /* AddToProcMod in Resources */ = {isa = PBXBuildFile; fileRef = 25666BE10A1DAA050006AC79 /* AddToProcMod */; };
     14                25666BEC0A1DAA410006AC79 /* procmod.m in Sources */ = {isa = PBXBuildFile; fileRef = 25666BEB0A1DAA410006AC79 /* procmod.m */; };
     15                25666C100A1DACEB0006AC79 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25666C0F0A1DACEB0006AC79 /* Foundation.framework */; };
     16                25666C4E0A1DAE4D0006AC79 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25666C4D0A1DAE4D0006AC79 /* Security.framework */; };
     17                25666CA60A1DB1BD0006AC79 /* DSCL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 256669AD0A1D8DE30006AC79 /* DSCL.framework */; };
    1018                25EADA9609CD2D7100BCD8E1 /* bytesex.c in Sources */ = {isa = PBXBuildFile; fileRef = 25EADA9509CD2D7100BCD8E1 /* bytesex.c */; };
    1119                E14C18BD05A4DE25000D4AF3 /* FSAInterpreterPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5680F7A020D0D0401AEEC37 /* FSAInterpreterPanel.nib */; };
     
    113121
    114122/* Begin PBXContainerItemProxy section */
     123                25666BE50A1DAA120006AC79 /* PBXContainerItemProxy */ = {
     124                        isa = PBXContainerItemProxy;
     125                        containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
     126                        proxyType = 1;
     127                        remoteGlobalIDString = 25666BE00A1DAA050006AC79 /* AddToProcMod */;
     128                        remoteInfo = AddToProcMod;
     129                };
    115130                E1D652BB057666690054F5D1 /* PBXContainerItemProxy */ = {
    116131                        isa = PBXContainerItemProxy;
     
    130145
    131146/* Begin PBXCopyFilesBuildPhase section */
     147                25666ACD0A1D96D10006AC79 /* CopyFiles */ = {
     148                        isa = PBXCopyFilesBuildPhase;
     149                        buildActionMask = 2147483647;
     150                        dstPath = "";
     151                        dstSubfolderSpec = 10;
     152                        files = (
     153                                25666AD30A1D96DE0006AC79 /* DSCL.framework in CopyFiles */,
     154                        );
     155                        runOnlyForDeploymentPostprocessing = 0;
     156                };
    132157                E1EE9A2B0575769600F2D92C /* CopyFiles */ = {
    133158                        isa = PBXCopyFilesBuildPhase;
     
    148173                103DFC20016C16E20C000109 /* FSABundle.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FSABundle.mm; sourceTree = SOURCE_ROOT; };
    149174                1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
     175                256669AD0A1D8DE30006AC79 /* DSCL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = DSCL.framework; sourceTree = "<group>"; };
     176                25666AD90A1D97B50006AC79 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
     177                25666BE10A1DAA050006AC79 /* AddToProcMod */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AddToProcMod; sourceTree = BUILT_PRODUCTS_DIR; };
     178                25666BEB0A1DAA410006AC79 /* procmod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = procmod.m; sourceTree = "<group>"; };
     179                25666C0F0A1DACEB0006AC79 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
     180                25666C4D0A1DAE4D0006AC79 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
    150181                25EADA9509CD2D7100BCD8E1 /* bytesex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bytesex.c; path = "../Darwin source/Commands/Apple/cctools/libstuff/bytesex.c"; sourceTree = SOURCE_ROOT; };
    151182                29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
     
    173204                E1EE98BD0575626E00F2D92C /* mach_inject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mach_inject.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 1; };
    174205                E1EE9A2F0575769600F2D92C /* Info-Application.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "Info-Application.plist"; sourceTree = "<group>"; };
    175                 E1EE9A300575769600F2D92C /* F-Script Anywhere.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "F-Script Anywhere.app"; sourceTree = BUILT_PRODUCTS_DIR; };
     206                E1EE9A300575769600F2D92C /* F-Script Anywhere.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "F-Script Anywhere.app"; sourceTree = BUILT_PRODUCTS_DIR; };
    176207                E1EE9A4F057576A700F2D92C /* F-Script Anywhere.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "F-Script Anywhere.bundle"; sourceTree = BUILT_PRODUCTS_DIR; };
    177208                E1F3DF910579172A00E952A5 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/FSA.strings; sourceTree = "<group>"; };
     
    216247
    217248/* Begin PBXFrameworksBuildPhase section */
     249                25666BDF0A1DAA050006AC79 /* Frameworks */ = {
     250                        isa = PBXFrameworksBuildPhase;
     251                        buildActionMask = 2147483647;
     252                        files = (
     253                                25666CA60A1DB1BD0006AC79 /* DSCL.framework in Frameworks */,
     254                                25666C100A1DACEB0006AC79 /* Foundation.framework in Frameworks */,
     255                        );
     256                        runOnlyForDeploymentPostprocessing = 0;
     257                };
    218258                E1D652010575B3D50054F5D1 /* Frameworks */ = {
    219259                        isa = PBXFrameworksBuildPhase;
     
    230270                                E1EE9A270575769600F2D92C /* Cocoa.framework in Frameworks */,
    231271                                E1EE9A280575769600F2D92C /* Carbon.framework in Frameworks */,
     272                                256669AE0A1D8DE30006AC79 /* DSCL.framework in Frameworks */,
     273                                25666ADA0A1D97B50006AC79 /* CoreFoundation.framework in Frameworks */,
     274                                25666C4E0A1DAE4D0006AC79 /* Security.framework in Frameworks */,
    232275                        );
    233276                        runOnlyForDeploymentPostprocessing = 0;
     
    252295                                E1EE9A4F057576A700F2D92C /* F-Script Anywhere.bundle */,
    253296                                E1D652040575B3D50054F5D1 /* SCPatchLoader.bundle */,
     297                                25666BE10A1DAA050006AC79 /* AddToProcMod */,
    254298                        );
    255299                        name = Products;
    256300                        sourceTree = "<group>";
    257301                };
     302                256666B80A1D86D80006AC79 /* procmod */ = {
     303                        isa = PBXGroup;
     304                        children = (
     305                                25666BEB0A1DAA410006AC79 /* procmod.m */,
     306                        );
     307                        name = procmod;
     308                        sourceTree = "<group>";
     309                };
    258310                29B97314FDCFA39411CA2CEA /* PatchTest */ = {
    259311                        isa = PBXGroup;
    260312                        children = (
     313                                25666C0F0A1DACEB0006AC79 /* Foundation.framework */,
    261314                                F523EA31020CF1C701AEEC37 /* Shared sources */,
    262315                                29B97315FDCFA39411CA2CEA /* Bundle sources */,
     
    314367                        isa = PBXGroup;
    315368                        children = (
     369                                25666C4D0A1DAE4D0006AC79 /* Security.framework */,
     370                                25666AD90A1D97B50006AC79 /* CoreFoundation.framework */,
     371                                256669AD0A1D8DE30006AC79 /* DSCL.framework */,
    316372                                F59279FB01FED0C901AEEC37 /* Carbon.framework */,
    317373                                1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
     
    416472                                F574ADD6020AC10F01AEEDB1 /* NJRScrollView.h */,
    417473                                F574ADD5020AC10F01AEEDB1 /* NJRScrollView.m */,
     474                                256666B80A1D86D80006AC79 /* procmod */,
    418475                                F5EFC2E7020A8F7F01AEEDB1 /* libMatch.h */,
    419476                                F5EFC2E8020A8F7F01AEEDB1 /* libMatch.c */,
     
    478535
    479536/* Begin PBXNativeTarget section */
     537                25666BE00A1DAA050006AC79 /* AddToProcMod */ = {
     538                        isa = PBXNativeTarget;
     539                        buildConfigurationList = 25666BED0A1DAA410006AC79 /* Build configuration list for PBXNativeTarget "AddToProcMod" */;
     540                        buildPhases = (
     541                                25666BDE0A1DAA050006AC79 /* Sources */,
     542                                25666BDF0A1DAA050006AC79 /* Frameworks */,
     543                        );
     544                        buildRules = (
     545                        );
     546                        buildSettings = {
     547                                GCC_ENABLE_FIX_AND_CONTINUE = YES;
     548                                GCC_MODEL_TUNING = G5;
     549                                INSTALL_PATH = "$(HOME)/bin";
     550                                PREBINDING = NO;
     551                                PRODUCT_NAME = AddToProcMod;
     552                                ZERO_LINK = YES;
     553                        };
     554                        dependencies = (
     555                        );
     556                        name = AddToProcMod;
     557                        productName = AddToProcMod;
     558                        productReference = 25666BE10A1DAA050006AC79 /* AddToProcMod */;
     559                        productType = "com.apple.product-type.tool";
     560                };
    480561                E1D651FA0575B3D50054F5D1 /* Bundle Loader */ = {
    481562                        isa = PBXNativeTarget;
     
    539620                        buildPhases = (
    540621                                E1EE9A030575769600F2D92C /* Headers */,
     622                                25666ACD0A1D96D10006AC79 /* CopyFiles */,
    541623                                E1EE9A0F0575769600F2D92C /* Resources */,
    542624                                E1EE9A180575769600F2D92C /* Sources */,
     
    573655                                E1EE9AA60575939700F2D92C /* PBXTargetDependency */,
    574656                                E1D652BC057666690054F5D1 /* PBXTargetDependency */,
     657                                25666BE60A1DAA120006AC79 /* PBXTargetDependency */,
    575658                        );
    576659                        name = Application;
     
    656739                                E1EE9A4E057576A700F2D92C /* Bundle */,
    657740                                E1D651FA0575B3D50054F5D1 /* Bundle Loader */,
     741                                25666BE00A1DAA050006AC79 /* AddToProcMod */,
    658742                        );
    659743                };
     
    672756                        buildActionMask = 2147483647;
    673757                        files = (
     758                                25666BE70A1DAA1D0006AC79 /* AddToProcMod in Resources */,
    674759                                E1D652AA0575B5F10054F5D1 /* SCPatchLoader.bundle in Resources */,
    675760                                E1EE9AA90575945300F2D92C /* F-Script Anywhere.bundle in Resources */,
     
    710795
    711796/* Begin PBXSourcesBuildPhase section */
     797                25666BDE0A1DAA050006AC79 /* Sources */ = {
     798                        isa = PBXSourcesBuildPhase;
     799                        buildActionMask = 2147483647;
     800                        files = (
     801                                25666BEC0A1DAA410006AC79 /* procmod.m in Sources */,
     802                        );
     803                        runOnlyForDeploymentPostprocessing = 0;
     804                };
    712805                E1D651FE0575B3D50054F5D1 /* Sources */ = {
    713806                        isa = PBXSourcesBuildPhase;
     
    761854
    762855/* Begin PBXTargetDependency section */
     856                25666BE60A1DAA120006AC79 /* PBXTargetDependency */ = {
     857                        isa = PBXTargetDependency;
     858                        target = 25666BE00A1DAA050006AC79 /* AddToProcMod */;
     859                        targetProxy = 25666BE50A1DAA120006AC79 /* PBXContainerItemProxy */;
     860                };
    763861                E1D652BC057666690054F5D1 /* PBXTargetDependency */ = {
    764862                        isa = PBXTargetDependency;
     
    833931
    834932/* Begin XCBuildConfiguration section */
     933                25666BEE0A1DAA410006AC79 /* Development */ = {
     934                        isa = XCBuildConfiguration;
     935                        buildSettings = {
     936                                COPY_PHASE_STRIP = NO;
     937                                FRAMEWORK_SEARCH_PATHS = (
     938                                        "$(FRAMEWORK_SEARCH_PATHS)",
     939                                        "$(SRCROOT)",
     940                                );
     941                                GCC_DYNAMIC_NO_PIC = NO;
     942                                GCC_ENABLE_FIX_AND_CONTINUE = YES;
     943                                GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
     944                                GCC_MODEL_TUNING = G5;
     945                                GCC_OPTIMIZATION_LEVEL = 0;
     946                                INSTALL_PATH = "$(HOME)/bin";
     947                                PREBINDING = NO;
     948                                PRODUCT_NAME = AddToProcMod;
     949                                ZERO_LINK = YES;
     950                        };
     951                        name = Development;
     952                };
     953                25666BEF0A1DAA410006AC79 /* Deployment */ = {
     954                        isa = XCBuildConfiguration;
     955                        buildSettings = {
     956                                COPY_PHASE_STRIP = YES;
     957                                FRAMEWORK_SEARCH_PATHS = (
     958                                        "$(FRAMEWORK_SEARCH_PATHS)",
     959                                        "$(SRCROOT)",
     960                                );
     961                                GCC_ENABLE_FIX_AND_CONTINUE = NO;
     962                                GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
     963                                GCC_MODEL_TUNING = G5;
     964                                PREBINDING = NO;
     965                                PRODUCT_NAME = AddToProcMod;
     966                                ZERO_LINK = NO;
     967                        };
     968                        name = Deployment;
     969                };
     970                25666BF00A1DAA410006AC79 /* Default */ = {
     971                        isa = XCBuildConfiguration;
     972                        buildSettings = {
     973                                FRAMEWORK_SEARCH_PATHS = (
     974                                        "$(FRAMEWORK_SEARCH_PATHS)",
     975                                        "$(SRCROOT)",
     976                                );
     977                                GCC_ENABLE_FIX_AND_CONTINUE = YES;
     978                                GCC_MODEL_TUNING = G5;
     979                                INSTALL_PATH = "$(HOME)/bin";
     980                                PREBINDING = NO;
     981                                PRODUCT_NAME = AddToProcMod;
     982                                ZERO_LINK = YES;
     983                        };
     984                        name = Default;
     985                };
    835986                25EAD8EC09CD1E3900BCD8E1 /* Development */ = {
    836987                        isa = XCBuildConfiguration;
     
    9521103                        buildSettings = {
    9531104                                COPY_PHASE_STRIP = NO;
    954                                 FRAMEWORK_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks";
     1105                                FRAMEWORK_SEARCH_PATHS = (
     1106                                        "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
     1107                                        "$(SRCROOT)",
     1108                                );
    9551109                                GCC_DYNAMIC_NO_PIC = NO;
    9561110                                GCC_ENABLE_FIX_AND_CONTINUE = YES;
     
    9891143                                );
    9901144                                COPY_PHASE_STRIP = YES;
    991                                 FRAMEWORK_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks";
     1145                                FRAMEWORK_SEARCH_PATHS = (
     1146                                        "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
     1147                                        "$(SRCROOT)",
     1148                                );
    9921149                                GCC_ENABLE_FIX_AND_CONTINUE = NO;
    9931150                                HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../Darwin source/Commands/Apple/cctools/include\"";
     
    10171174                        isa = XCBuildConfiguration;
    10181175                        buildSettings = {
    1019                                 FRAMEWORK_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks";
     1176                                FRAMEWORK_SEARCH_PATHS = (
     1177                                        "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
     1178                                        "$(SRCROOT)",
     1179                                );
    10201180                                HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../Darwin source/Commands/Apple/cctools/include\"";
    10211181                                INFOPLIST_FILE = "Info-Application.plist";
     
    10621222
    10631223/* Begin XCConfigurationList section */
     1224                25666BED0A1DAA410006AC79 /* Build configuration list for PBXNativeTarget "AddToProcMod" */ = {
     1225                        isa = XCConfigurationList;
     1226                        buildConfigurations = (
     1227                                25666BEE0A1DAA410006AC79 /* Development */,
     1228                                25666BEF0A1DAA410006AC79 /* Deployment */,
     1229                                25666BF00A1DAA410006AC79 /* Default */,
     1230                        );
     1231                        defaultConfigurationIsVisible = 0;
     1232                        defaultConfigurationName = Default;
     1233                };
    10641234                25EAD8EB09CD1E3900BCD8E1 /* Build configuration list for PBXNativeTarget "Bundle" */ = {
    10651235                        isa = XCConfigurationList;
  • trunk/Cocoa/F-Script Anywhere/Source/FSAApp.mm

    r222 r229  
    2727#import "FSAApp.h"
    2828#import "FSAnywhere.h"
     29#import <DSCL/PathManager.h>
     30#import <CoreFoundation/CoreFoundation.h>
     31#import <ApplicationServices/ApplicationServices.h>
     32#import <Security/Authorization.h>
     33#import <Security/AuthorizationTags.h>
    2934
    3035NSString * const PatchBundleIdentifier = @"net.sabi.FScriptAnywhere";
     
    130135}
    131136
     137-(tDirStatus)authorizeAndAddToProcMod:(NSString *)username
     138{
     139    OSStatus myStatus;
     140    AuthorizationFlags myFlags = kAuthorizationFlagDefaults;
     141    AuthorizationRef myAuthorizationRef;
     142   
     143    myStatus = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
     144                                   myFlags, &myAuthorizationRef);
     145    if(myStatus != errAuthorizationSuccess)
     146        return eDSAuthFailed;
     147   
     148    AuthorizationItem myItems = {kAuthorizationRightExecute, 0, NULL, 0};
     149    AuthorizationRights myRights = {1, &myItems};
     150   
     151    myFlags = kAuthorizationFlagDefaults
     152        | kAuthorizationFlagInteractionAllowed
     153        | kAuthorizationFlagPreAuthorize
     154        | kAuthorizationFlagExtendRights;
     155    myStatus = AuthorizationCopyRights(myAuthorizationRef, &myRights,
     156                                       NULL, myFlags, NULL);
     157   
     158    if(myStatus != errAuthorizationSuccess)
     159        return eDSAuthFailed;
     160   
     161    myFlags = kAuthorizationFlagDefaults;
     162   
     163    NSString *myToolPath = [[NSBundle mainBundle] pathForResource:@"AddToProcMod" ofType:@""];
     164    char *myArguments[] = { (char *)[username UTF8String], NULL };
     165    FILE *myCommunicationsPipe = NULL;
     166    char myReadBuffer[128];
     167    myStatus = AuthorizationExecuteWithPrivileges(myAuthorizationRef, [myToolPath UTF8String],
     168                                                  myFlags, myArguments,
     169                                                  &myCommunicationsPipe);
     170   
     171    int didRead = 0;
     172    int lastRead;
     173    while((lastRead = read(fileno(myCommunicationsPipe), myReadBuffer, sizeof(myReadBuffer) - didRead - 1)) && (lastRead > 0))
     174        didRead += lastRead;
     175   
     176    myReadBuffer[didRead - 1] = 0;
     177   
     178    AuthorizationFree(myAuthorizationRef, kAuthorizationFlagDefaults);
     179
     180    return (tDirStatus)strtol(myReadBuffer, NULL, 10);
     181}
     182
    132183- (void)finishLaunching
    133184{
     185#ifdef __i386__
     186    if(![[NSUserDefaults standardUserDefaults] objectForKey:@"doPathCheck"])
     187        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"doPathCheck"];
     188   
     189    if([[NSUserDefaults standardUserDefaults] boolForKey:@"doPathCheck"]){
     190top:
     191        PathManager *pm = [[PathManager alloc] initWithLocalNode];
     192        [pm backupStack];
     193        [pm cd:@"/Groups/procmod"];
     194        CFDictionaryRef sessionInfoDict = CGSessionCopyCurrentDictionary();
     195        if(sessionInfoDict){
     196            CFStringRef shortUserName = (CFStringRef)CFDictionaryGetValue(sessionInfoDict, kCGSessionUserNameKey);
     197            if(![[[pm lastObject] readArray:@"GroupMembership"] containsObject:(NSString *)shortUserName]){
     198                switch([[NSAlert alertWithMessageText:[NSString stringWithFormat:@"User %@ not in the procmod group", shortUserName]
     199                                        defaultButton:@"Add me"
     200                                      alternateButton:@"Disable checking"
     201                                          otherButton:@"Ignore message"
     202                            informativeTextWithFormat:@"F-Script Anywhere requires that you add yourself to the procmod "
     203                    "group in order for it to function properly. If you like, F-Script Anywhere can automatically add you "
     204                    "to the procmod group."] runModal]){
     205                    case NSAlertDefaultReturn:
     206                    {
     207                        tDirStatus status = [self authorizeAndAddToProcMod:(NSString *)shortUserName];
     208                        if(status != eDSNoErr){
     209                            [[NSAlert alertWithMessageText:@"Error adding to procmod group"
     210                                             defaultButton:nil
     211                                           alternateButton:nil
     212                                               otherButton:nil
     213                                 informativeTextWithFormat:@"There was an error (%@) adding you to the procmod group. ", [[NSClassFromString(@"DSoStatus") sharedInstance] stringForStatus:status]] runModal];
     214                        }
     215                    }
     216                        [pm restoreStack];
     217                        [pm release];
     218                        goto top;
     219                    case NSAlertAlternateReturn:
     220                        [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"doPathCheck"];
     221                        break;
     222                    default:
     223                        break;
     224                }           
     225            }
     226        }
     227        [pm restoreStack];
     228        [pm release];
     229    }
     230#endif
    134231    patchController = new FSAPatchController(self);
    135232    patchController->AddPatch((CFStringRef)PatchBundleIdentifier, CFSTR("Contents/Resources/"),
  • trunk/Cocoa/F-Script Anywhere/Source/Read Me

    r227 r229  
    8282   jam/pbxbuild).  I _think_ this is all you need.
    8383
    84 3. Open 'F-Script Anywhere.pbproj' in Xcode and build the Application
     843. Unzip DSTools-60.1.zip. Open the folder up and open
     85   DSTools.xcodeproj. Change the active target to the DSCL framework,
     86   change the build configuration to Deployment, and then build the
     87   framework. Copy the resulting framework into the FSA Source/
     88   directory. Alternatively if you're on PPC, you can just remove the
     89   DSCL framework from the dependancies. The DSCL framework is used
     90   to determine if you are in the procmod group on intel machines
     91   (and if not, to prompt you if you want to add yourself) -- something
     92   that is necessary for use of FSA on x86.
     93   
     943. Open 'F-Script Anywhere.xcodeproj' in Xcode and build the Application
    8595   target.  This target depends on the Bundle and Bundle Loader
    8696   targets, so you don't need to build them separately.  You
Note: See TracChangeset for help on using the changeset viewer.