[macruby-changes] [3626] MacRuby/branches/icu

source_changes at macosforge.org source_changes at macosforge.org
Thu Feb 25 16:29:33 PST 2010


Revision: 3626
          http://trac.macosforge.org/projects/ruby/changeset/3626
Author:   lsansonetti at apple.com
Date:     2010-02-25 16:29:31 -0800 (Thu, 25 Feb 2010)
Log Message:
-----------
make sure File.join and File.expand_path return RubyStrings (for now)

Modified Paths:
--------------
    MacRuby/branches/icu/file.c
    MacRuby/branches/icu/objc.m

Modified: MacRuby/branches/icu/file.c
===================================================================
--- MacRuby/branches/icu/file.c	2010-02-25 23:58:38 UTC (rev 3625)
+++ MacRuby/branches/icu/file.c	2010-02-26 00:29:31 UTC (rev 3626)
@@ -2575,13 +2575,11 @@
 static VALUE
 rb_file_join(VALUE ary, VALUE sep)
 {
-    CFMutableStringRef res = CFStringCreateMutable(NULL, 0);
-    CFStringRef sep_cf = (CFStringRef)sep;
+    VALUE res = rb_str_new(NULL, 0);
 
     const long count = RARRAY_LEN(ary);
     if (count > 0) {
-	long i;
-	for (i = 0; i < count; i++) {
+	for (long i = 0; i < count; i++) {
 	    VALUE tmp = RARRAY_AT(ary, i);
 	    switch (TYPE(tmp)) {
 		case T_STRING:
@@ -2595,9 +2593,9 @@
 		    FilePathStringValue(tmp);
 	    }
 
-	    CFStringRef tmp_cf = (CFStringRef)tmp;
-
-	    if (i > 0) {
+	    if (i > 0 && !NIL_P(sep)) {
+#if 0
+// TODO: we should probably mimic what 1.9 does here instead of this
 		if (CFStringHasSuffix(res, sep_cf)) {
 		    if (CFStringHasPrefix(tmp_cf, sep_cf)) {
 			// Remove trailing slash from res if tmp starts with a
@@ -2609,14 +2607,15 @@
 		else if (!CFStringHasPrefix(tmp_cf, sep_cf)) {
 		    CFStringAppend(res, sep_cf);
 		}
+#endif
+		rb_str_concat(res, sep);
 	    }
 
-	    CFStringAppend(res, tmp_cf);
+	    rb_str_concat(res, tmp);
 	}
     }
 
-    CFMakeCollectable(res);
-    return (VALUE)res;
+    return res;
 }
 
 /*

Modified: MacRuby/branches/icu/objc.m
===================================================================
--- MacRuby/branches/icu/objc.m	2010-02-25 23:58:38 UTC (rev 3625)
+++ MacRuby/branches/icu/objc.m	2010-02-26 00:29:31 UTC (rev 3626)
@@ -197,32 +197,35 @@
     NSString *res = (NSString *)FilePathValue(fname);
 
     if ([res isAbsolutePath]) {
-      NSString *tmp = [res stringByResolvingSymlinksInPath];
-      // Make sure we don't have an invalid user path.
-      if ([res hasPrefix:@"~"] && [tmp isEqualTo:res]) {
-        NSString *user = [[[res pathComponents] objectAtIndex:0] substringFromIndex:1];
-        rb_raise(rb_eArgError, "user %s doesn't exist", [user UTF8String]);
-      }
-      res = tmp;
+	NSString *tmp = [res stringByResolvingSymlinksInPath];
+	// Make sure we don't have an invalid user path.
+	if ([res hasPrefix:@"~"] && [tmp isEqualTo:res]) {
+	    NSString *user = [[[res pathComponents] objectAtIndex:0]
+		substringFromIndex:1];
+	    rb_raise(rb_eArgError, "user %s doesn't exist", [user UTF8String]);
+	}
+	res = tmp;
     }
     else {
-      NSString *dir = dname != Qnil ?
-        (NSString *)FilePathValue(dname) : [[NSFileManager defaultManager] currentDirectoryPath];
+	NSString *dir = dname != Qnil
+	    ? (NSString *)FilePathValue(dname)
+	    : [[NSFileManager defaultManager] currentDirectoryPath];
 
-      if (![dir isAbsolutePath]) {
-        dir = (NSString *)rb_file_expand_path((VALUE)dir, Qnil);
-      }
+	if (![dir isAbsolutePath]) {
+	    dir = (NSString *)rb_file_expand_path((VALUE)dir, Qnil);
+	}
 
-      // stringByStandardizingPath does not expand "/." to "/".
-      if ([res isEqualTo:@"."] && [dir isEqualTo:@"/"]) {
-        res = @"/";
-      }
-      else {
-        res = [[dir stringByAppendingPathComponent:res] stringByStandardizingPath];
-      }
+	// stringByStandardizingPath does not expand "/." to "/".
+	if ([res isEqualTo:@"."] && [dir isEqualTo:@"/"]) {
+	    res = @"/";
+	}
+	else {
+	    res = [[dir stringByAppendingPathComponent:res]
+		stringByStandardizingPath];
+	}
     }
 
-    return (VALUE)[res mutableCopy];
+    return rb_str_new2([res fileSystemRepresentation]);
 }
 
 static VALUE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100225/f12ceba0/attachment-0001.html>


More information about the macruby-changes mailing list