[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