Changeset 40301 for contrib/MacPorts_Framework
- Timestamp:
- Sep 28, 2008, 10:58:42 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
contrib/MacPorts_Framework/MPInterpreter.m
r40216 r40301 170 170 } 171 171 172 //Internal method for initializing Tcl interpreter 173 //Should I be using a double pointer like is done for NSError ? 174 -(BOOL) initTclInterpreter:(Tcl_Interp * *)interp withPath:(NSString *)path { 175 BOOL result = NO; 176 177 *interp = Tcl_CreateInterp(); 178 179 if(*interp == NULL) { 180 NSLog(@"Error in Tcl_CreateInterp, aborting."); 181 return result; 182 } 183 184 if(Tcl_Init(*interp) == TCL_ERROR) { 185 NSLog(@"Error in Tcl_Init: %s", Tcl_GetStringResult(*interp)); 186 Tcl_DeleteInterp(*interp); 187 return result; 188 } 189 190 191 NSString * mport_fastload = [[@"source [file join \"" stringByAppendingString:path] 192 stringByAppendingString:@"\" macports1.0 macports_fastload.tcl]"]; 193 if(Tcl_Eval(*interp, [mport_fastload UTF8String]) != TCL_OK) { 194 NSLog(@"Error in Tcl_EvalFile macports_fastload.tcl: %s", Tcl_GetStringResult(*interp)); 195 Tcl_DeleteInterp(*interp); 196 return result; 197 } 198 199 200 Tcl_CreateObjCommand(*interp, "notifications", Notifications_Command, NULL, NULL); 201 if (Tcl_PkgProvide(*interp, "notifications", "1.0") != TCL_OK) { 202 NSLog(@"Error in Tcl_PkgProvide: %s", Tcl_GetStringResult(*interp)); 203 Tcl_DeleteInterp(*interp); 204 return result; 205 } 206 207 if( Tcl_EvalFile(*interp, [[[NSBundle bundleWithIdentifier:@"org.macports.frameworks.macports"] 208 pathForResource:@"init" 209 ofType:@"tcl"] UTF8String]) != TCL_OK) { 210 NSLog(@"Error in Tcl_EvalFile init.tcl: %s", Tcl_GetStringResult(*interp)); 211 Tcl_DeleteInterp(*interp); 212 return result; 213 } 214 215 result = YES; 216 return result; 217 } 218 219 //Internal method for setting port Tcl_interpreter options 220 -(BOOL) setOptions:(NSArray *)options forTclInterpreter:(Tcl_Interp * *)interp { 221 BOOL result = NO; 222 223 //I wish I could use fast enumeration 224 if (options != nil) { 225 if ([options count] > 0 ) { 226 NSEnumerator * optionsEnum = [options objectEnumerator]; 227 id opt; 228 229 while ((opt = [optionsEnum nextObject])) { 230 if (Tcl_Eval(*interp , [[NSString stringWithFormat:@"set ui_options(%@) \"yes\"", opt] UTF8String]) != TCL_OK) 231 return result; 232 } 233 result = YES; 234 return result; 235 } 236 } 237 238 return result; 239 } 172 240 173 241 - (id) initWithPkgPath:(NSString *)path { 174 242 if (self = [super init]) { 175 _interpreter = Tcl_CreateInterp(); 176 if(_interpreter == NULL) { 177 NSLog(@"Error in Tcl_CreateInterp, aborting."); 178 } 179 if(Tcl_Init(_interpreter) == TCL_ERROR) { 180 NSLog(@"Error in Tcl_Init: %s", Tcl_GetStringResult(_interpreter)); 181 Tcl_DeleteInterp(_interpreter); 182 } 183 184 185 NSString * mport_fastload = [[@"source [file join \"" stringByAppendingString:path] 186 stringByAppendingString:@"\" macports1.0 macports_fastload.tcl]"]; 187 if(Tcl_Eval(_interpreter, [mport_fastload UTF8String]) != TCL_OK) { 188 NSLog(@"Error in Tcl_EvalFile macports_fastload.tcl: %s", Tcl_GetStringResult(_interpreter)); 189 Tcl_DeleteInterp(_interpreter); 190 } 191 192 193 Tcl_CreateObjCommand(_interpreter, "notifications", Notifications_Command, NULL, NULL); 194 if (Tcl_PkgProvide(_interpreter, "notifications", "1.0") != TCL_OK) { 195 NSLog(@"Error in Tcl_PkgProvide: %s", Tcl_GetStringResult(_interpreter)); 196 Tcl_DeleteInterp(_interpreter); 197 } 198 199 if( Tcl_EvalFile(_interpreter, [[[NSBundle bundleWithIdentifier:@"org.macports.frameworks.macports"] 200 pathForResource:@"init" 201 ofType:@"tcl"] UTF8String]) != TCL_OK) { 202 NSLog(@"Error in Tcl_EvalFile init.tcl: %s", Tcl_GetStringResult(_interpreter)); 203 Tcl_DeleteInterp(_interpreter); 204 } 243 244 [self initTclInterpreter:&_interpreter withPath:path]; 205 245 206 246 //Initialize helperToolInterpCommand
Note: See TracChangeset
for help on using the changeset viewer.