File.dirname got different results between jruby-1.0.3 and ruby-1.8.5
---------------------------------------------------------------------

                 Key: JRUBY-2176
                 URL: http://jira.codehaus.org/browse/JRUBY-2176
             Project: JRuby
          Issue Type: Bug
    Affects Versions: JRuby 1.0.3
            Reporter: Dove Cradle
            Assignee: Thomas E Enebo
         Attachments: File_dirname.diff

On Jan 21, 2008 10:03 PM, Spring Dove <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I found File.dirname got the different results when run it on jruby-1.0.3
> and on ruby-1.8.5.
>
> jruby -e 'p File.dirname("C://a")'
> C:/
> ruby -e 'p File.dirname("C://a")'
> C:
>
> also:
> jruby -e 'p File.dirname("//a/b")'
> //a
> ruby -e 'p File.dirname("//a/b")'
> /a
>

I try to give the solution for the two problems, FYI. Do you have the better 
way?

diff -u src/org/jruby/RubyFile.java.old src/org/jruby/RubyFile.java
--- src/org/jruby/RubyFile.java.old     2008-01-21 16:08:07.000000000 +0800
+++ src/org/jruby/RubyFile.java 2008-02-26 11:18:04.000000000 +0800
@@ -646,6 +646,22 @@
             }
         } else {
             //TODO deal with UNC names
+            int lindex = name.indexOf('/');
+            if (lindex != -1) {
+                int rindex = name.lastIndexOf('/');
+                String temp_name = name.substring(0, lindex);
+                while (lindex < rindex) {
+                    if (name.charAt(lindex+1) == '/') {
+                        lindex++;
+                    } else {
+                        int tmp_lindex = name.indexOf('/', lindex+1);
+                        temp_name += name.substring(lindex, tmp_lindex);
+                        lindex = tmp_lindex;
+                    }
+                }
+                temp_name += name.substring(rindex);
+                name = temp_name;
+            }
             int index = name.lastIndexOf('/');
             if (index == -1) return recv.getRuntime().newString(".");
             if (index == 0) return recv.getRuntime().newString("/");
@@ -656,7 +672,8 @@
                 index++;
             }

-            result = jfilename.substring(0, index);
+            result = name.substring(0, index);
+            //result = jfilename.substring(0, index);
          }

          return recv.getRuntime().newString(result).infectBy(filename);

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to