[59820] users/toby/objcports

toby at macports.org toby at macports.org
Thu Oct 22 23:51:49 PDT 2009


Revision: 59820
          http://trac.macports.org/changeset/59820
Author:   toby at macports.org
Date:     2009-10-22 23:51:46 -0700 (Thu, 22 Oct 2009)
Log Message:
-----------
abuse NSString

Modified Paths:
--------------
    users/toby/objcports/MPConfig.h
    users/toby/objcports/objcports.xcodeproj/project.pbxproj

Added Paths:
-----------
    users/toby/objcports/MPConfig.m

Removed Paths:
-------------
    users/toby/objcports/MPConfig.c

Deleted: users/toby/objcports/MPConfig.c
===================================================================
--- users/toby/objcports/MPConfig.c	2009-10-23 06:16:10 UTC (rev 59819)
+++ users/toby/objcports/MPConfig.c	2009-10-23 06:51:46 UTC (rev 59820)
@@ -1,105 +0,0 @@
-#include <CoreFoundation/CoreFoundation.h>
-#include <tcl.h>
-#include <regex.h>
-
-#include "MPConfig.h"
-#include "internal.h"
-
-static void
-load_autoconf(CFMutableDictionaryRef config)
-{
-	Tcl_Interp *interp;
-	int rc;
-	CFStringRef tmp;
-	
-	interp = Tcl_CreateInterp(); 
-	rc = Tcl_EvalFile(interp, "/Library/Tcl/macports1.0/macports_autoconf.tcl");
-	if (rc == 0) {
-		tmp = CFStringCreateWithCString(NULL, Tcl_GetVar(interp, "macports::autoconf::macports_conf_path", 0), kCFStringEncodingUTF8);
-		if (tmp) {
-			CFDictionarySetValue(config, CFSTR("macports_conf_path"), tmp);
-			CFRelease(tmp);
-		}
-
-		tmp = CFStringCreateWithCString(NULL, Tcl_GetVar(interp, "macports::autoconf::macports_user_dir", 0), kCFStringEncodingUTF8);
-		if (tmp) {
-			CFDictionarySetValue(config, CFSTR("macports_user_dir"), tmp);
-			CFRelease(tmp);
-		}
-	}
-	Tcl_DeleteInterp(interp);
-}
-
-CFDictionaryRef
-MPCopyConfig()
-{
-	CFMutableDictionaryRef config = NULL;
-	CFMutableArrayRef configFiles;
-	CFStringRef tmp;
-	CFIndex i, count;
-	char *s;
-	int rc;
-
-	config = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-	
-	load_autoconf(config);
-
-	configFiles = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks);
-
-	// XXX: should probably construct path intelligently
-	tmp = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@/macports.conf"), CFDictionaryGetValue(config, CFSTR("macports_conf_path")));
-	CFArrayAppendValue(configFiles, tmp);
-	CFRelease(tmp);
-
-#if 0
-	// XXX: need to expand macports_user_dir
-	tmp = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@/macports.conf"), CFDictionaryGetValue(config, CFSTR("macports_user_dir")));
-	CFArrayAppendValue(configFiles, tmp);
-	CFRelease(tmp);
-#endif
-
-	if ((s = getenv("PORTSRC"))) {
-		tmp = CFStringCreateWithCString(NULL, s, kCFStringEncodingUTF8);
-		CFArrayAppendValue(configFiles, tmp);
-		CFRelease(tmp);
-	}
-
-	regex_t re;
-	rc = regcomp(&re, "^([A-Za-z_]+)([\\\t ]+(.*))?$", REG_EXTENDED);
-	assert(rc == 0);
-	assert(re.re_nsub == 3);
-	count = CFArrayGetCount(configFiles);
-	for (i = 0; i < count; i++) {
-		char *f;
-		size_t len;
-		char *line;
-		FILE *fp;
-		f = strdup_cf(CFArrayGetValueAtIndex(configFiles, i));
-		fp = fopen(f, "r");
-		free(f);
-		if (fp == NULL) continue;
-		while ((line = fgetln(fp, &len))) {
-			regmatch_t match[4];
-			line[len - 1] = '\0';
-			rc = regexec(&re, line, 4, match, 0);
-			if (rc == 0) {
-				const void *key, *value;
-				key = CFStringCreateWithBytes(NULL, (UInt8 *)&line[match[1].rm_so], match[1].rm_eo - match[1].rm_so, kCFStringEncodingUTF8, FALSE);
-				if (match[3].rm_so >= 0) {
-					value = CFStringCreateWithBytes(NULL, (UInt8 *)&line[match[3].rm_so], match[3].rm_eo - match[3].rm_so, kCFStringEncodingUTF8, FALSE);
-				} else {
-					value = CFSTR("");
-				}
-				CFDictionarySetValue(config, key, value);
-				CFRelease(key);
-				CFRelease(value);
-			}
-		}
-		fclose(fp);
-	}
-	regfree(&re);
-
-	CFRelease(configFiles);
-
-	return config;
-}

Modified: users/toby/objcports/MPConfig.h
===================================================================
--- users/toby/objcports/MPConfig.h	2009-10-23 06:16:10 UTC (rev 59819)
+++ users/toby/objcports/MPConfig.h	2009-10-23 06:51:46 UTC (rev 59820)
@@ -1 +1 @@
-CFDictionaryRef MPCopyConfig(void);
+NSDictionary *MPCopyConfig(void);

Copied: users/toby/objcports/MPConfig.m (from rev 58848, users/toby/objcports/MPConfig.c)
===================================================================
--- users/toby/objcports/MPConfig.m	                        (rev 0)
+++ users/toby/objcports/MPConfig.m	2009-10-23 06:51:46 UTC (rev 59820)
@@ -0,0 +1,76 @@
+#include <Foundation/Foundation.h>
+#include <tcl.h>
+
+#include "MPConfig.h"
+#include "internal.h"
+
+static void
+load_autoconf(NSMutableDictionary *config)
+{
+	Tcl_Interp *interp;
+	int rc;
+	CFStringRef tmp;
+	
+	interp = Tcl_CreateInterp(); 
+	rc = Tcl_EvalFile(interp, "/Library/Tcl/macports1.0/macports_autoconf.tcl");
+	if (rc == 0) {
+		tmp = CFStringCreateWithCString(NULL, Tcl_GetVar(interp, "macports::autoconf::macports_conf_path", 0), kCFStringEncodingUTF8);
+		if (tmp) {
+			[config setObject:(NSString *)tmp forKey:@"macports_conf_path"];
+			CFRelease(tmp);
+		}
+
+		tmp = CFStringCreateWithCString(NULL, Tcl_GetVar(interp, "macports::autoconf::macports_user_dir", 0), kCFStringEncodingUTF8);
+		if (tmp) {
+			[config setObject:(NSString *)tmp forKey:@"macports_user_dir"];
+			CFRelease(tmp);
+		}
+	}
+	Tcl_DeleteInterp(interp);
+}
+
+NSDictionary *
+MPCopyConfig()
+{
+	NSAutoreleasePool *pool;
+	NSMutableDictionary *config;
+	NSMutableArray *configFiles;
+	char *s;
+
+	config = [[NSMutableDictionary alloc] initWithCapacity:0];
+	
+	pool = [NSAutoreleasePool new];
+	
+	load_autoconf(config);
+
+	configFiles = [NSMutableArray arrayWithCapacity:3];
+	[configFiles addObject:[[[config objectForKey:@"macports_conf_path"] stringByAppendingPathComponent:@"macports.conf"] stringByStandardizingPath]];
+	[configFiles addObject:[[[config objectForKey:@"macports_user_dir"] stringByAppendingPathComponent:@"macports.conf"] stringByStandardizingPath]];
+	if ((s = getenv("PORTSRC"))) {
+		[configFiles addObject:[[NSString stringWithUTF8String:s] stringByStandardizingPath]];
+	}
+
+	for (NSString *configFile in configFiles) {
+		NSString *file = [NSString stringWithContentsOfFile:configFile encoding:NSUTF8StringEncoding error:NULL];
+		[file enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
+			if ([line rangeOfCharacterFromSet:[NSCharacterSet lowercaseLetterCharacterSet]].location == 0) {
+				NSString *key, *obj;
+				NSRange ws;
+
+				ws = [line rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]];
+				if (ws.length == 1) {
+					key = [line substringWithRange:NSMakeRange(0, ws.location)];
+					obj = [[line substringWithRange:NSMakeRange(ws.location, [line length] - ws.location)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
+				} else {
+					key = line;
+					obj = @"";
+				}
+				[config setObject:obj forKey:key];
+			}
+		}];
+	}
+
+	[pool drain];
+
+	return config;
+}

Modified: users/toby/objcports/objcports.xcodeproj/project.pbxproj
===================================================================
--- users/toby/objcports/objcports.xcodeproj/project.pbxproj	2009-10-23 06:16:10 UTC (rev 59819)
+++ users/toby/objcports/objcports.xcodeproj/project.pbxproj	2009-10-23 06:51:46 UTC (rev 59820)
@@ -7,7 +7,7 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		DA13887B101AED7000F73A82 /* MPConfig.c in Sources */ = {isa = PBXBuildFile; fileRef = DA13887A101AED7000F73A82 /* MPConfig.c */; };
+		DA13887B101AED7000F73A82 /* MPConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DA13887A101AED7000F73A82 /* MPConfig.m */; };
 		DA382DE5105A284E00D9B600 /* cftcl.c in Sources */ = {isa = PBXBuildFile; fileRef = DA382DE4105A284E00D9B600 /* cftcl.c */; };
 		DA382EF0105A2B4900D9B600 /* Tcl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA382EEF105A2B4900D9B600 /* Tcl.framework */; };
 		DA7AF1BC1058D1E200CF2187 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = DA7AF1BB1058D1E200CF2187 /* internal.c */; };
@@ -33,7 +33,7 @@
 		08FB779EFE84155DC02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
 		8DD76FA10486AA7600D96B5E /* port */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = port; sourceTree = BUILT_PRODUCTS_DIR; };
 		DA138879101AED7000F73A82 /* MPConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPConfig.h; sourceTree = "<group>"; };
-		DA13887A101AED7000F73A82 /* MPConfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MPConfig.c; sourceTree = "<group>"; };
+		DA13887A101AED7000F73A82 /* MPConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPConfig.m; sourceTree = "<group>"; };
 		DA382DE3105A284E00D9B600 /* cftcl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cftcl.h; sourceTree = "<group>"; };
 		DA382DE4105A284E00D9B600 /* cftcl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cftcl.c; sourceTree = "<group>"; };
 		DA382EEF105A2B4900D9B600 /* Tcl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Tcl.framework; path = /System/Library/Frameworks/Tcl.framework; sourceTree = "<absolute>"; };
@@ -81,7 +81,7 @@
 				DAD3716D0F0280EF0064AFF4 /* MPPort.h */,
 				DAD3716E0F0280EF0064AFF4 /* MPPort.c */,
 				DA138879101AED7000F73A82 /* MPConfig.h */,
-				DA13887A101AED7000F73A82 /* MPConfig.c */,
+				DA13887A101AED7000F73A82 /* MPConfig.m */,
 				DA7AF1BA1058D1E200CF2187 /* internal.h */,
 				DA7AF1BB1058D1E200CF2187 /* internal.c */,
 				DA382DE3105A284E00D9B600 /* cftcl.h */,
@@ -162,7 +162,7 @@
 				DAD371710F0280EF0064AFF4 /* port.m in Sources */,
 				DA96BED00F7C9C2500362779 /* MPIndex.c in Sources */,
 				DAD371740F0280EF0064AFF4 /* MPPort.c in Sources */,
-				DA13887B101AED7000F73A82 /* MPConfig.c in Sources */,
+				DA13887B101AED7000F73A82 /* MPConfig.m in Sources */,
 				DA7AF1BC1058D1E200CF2187 /* internal.c in Sources */,
 				DA382DE5105A284E00D9B600 /* cftcl.c in Sources */,
 			);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20091022/2caacae0/attachment.html>


More information about the macports-changes mailing list