Hi.

Robert Schuster schrieb:
> Hi,
> the attached patch removes the dreaded dot - file separator prefixes
>>from files which should be added to zip (jar) archives. This fixes
> 32516[0] for me.
> 
> ChangeLog:
> 
> 2007-12-10  Robert Schuster  <[EMAIL PROTECTED]>
> 
>         PR classpath/32516:
>   * tools/gnu/classpath/tools/jar/Entry.java:
>   (Entry(File, String)): Added loop to remove all dot-file separator
>   prefixes.
>   (Entry(File)): Call Entry(File, String) constructor variant.
> 
> [0] - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32516
> 

Tom Tromey confirmed this on IRC. Committing as attached with a small
fix to the copyright line.

ChangeLog:

2007-12-10  Robert Schuster  <[EMAIL PROTECTED]>

        PR classpath/32516:
  * tools/gnu/classpath/tools/jar/Entry.java:
  (Entry(File, String)): Added loop to remove all dot-file separator
  prefixes.
  (Entry(File)): Call Entry(File, String) constructor variant.

Regards
Robert
Index: tools/gnu/classpath/tools/jar/Entry.java
===================================================================
RCS file: /sources/classpath/classpath/tools/gnu/classpath/tools/jar/Entry.java,v
retrieving revision 1.1
diff -u -r1.1 Entry.java
--- tools/gnu/classpath/tools/jar/Entry.java	8 May 2006 18:38:20 -0000	1.1
+++ tools/gnu/classpath/tools/jar/Entry.java	10 Dec 2007 22:20:05 -0000
@@ -1,5 +1,5 @@
 /* Entry.java - represent a single file to write to a jar
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
 
  This file is part of GNU Classpath.
 
@@ -49,12 +49,22 @@
   public Entry(File file, String name)
   {
     this.file = file;
-    this.name = name;
+
+    /* Removes any './' prefixes automatically. Those caused trouble
+     * in (boot) classpath use-cases. See #32516.
+     */
+    int start = 0;
+    while (name.length() > start + 2
+           && name.codePointAt(start) == '.'
+           && name.codePointAt(start + 1) == File.separatorChar)
+      start += 2;
+
+    this.name = name.substring(start);
   }
 
   public Entry(File file)
   {
-    this.file = file;
-    this.name = file.toString();
+    this(file, file.toString());
   }
+
 }

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to