[ 
https://issues.apache.org/jira/browse/IVY-1522?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16018590#comment-16018590
 ] 

ASF GitHub Bot commented on IVY-1522:
-------------------------------------

Github user twogee commented on the issue:

    https://github.com/apache/ant-ivy/pull/20
  
    I can assure you that colon in version has NEVER have worked on Windows. 
Test case
    
    ```
    import java.io.*;
    
    public class TestColonNTFS {
       public static void main(String[] args) throws IOException {
          try (Writer writer = new BufferedWriter(new OutputStreamWriter(new 
FileOutputStream("file:name.txt"), "utf-8"))) {
             writer.write("something");
          }
       }
    }
    ```
    produces
    
    ```
    >dir
    ...
    2017-05-20  20:39                 0 file
    ...
    >dir /r file
    ...
    2017-05-20  20:39                 0 file
                                      9 file:name.txt:$DATA
    ```
    And that is the correct behaviour of NTFS: create an [alternate data 
stream](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364404). You 
can use that for versioning, for sure ;-) But this is not portable.
    
    Now, should we introduce a special treatment for reserved and unsafe URL 
characters, we will create a lock-in unless all other tools accept the same 
conventions, which is unlikely. And that defeats the very idea of flexibility.


> Ivy 2.4.0 improperly handles modules with colon (:) in version
> --------------------------------------------------------------
>
>                 Key: IVY-1522
>                 URL: https://issues.apache.org/jira/browse/IVY-1522
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.4.0
>            Reporter: Daniel Holmes
>            Priority: Critical
>
> This was not an issue in 2.2.0.
> I have some modules in my project which produce debian .deb files and those 
> modules versions include a colon ':' in the version because the version 
> scheme was reset, so an epoch is set.
> Also for this module the ivy.xml declaration uses extends tag, and in 
> processing the parent location, this code in FileUtil which is called during 
> a FileUtil.normalize() is causing the : in the resolve parent file name to 
> have the ':' replaced with a ':/'.
> The comment on the it seems to explain that it is trying to handle a 
> Windows/NetWare case, but the assumption to process any colon in the path is 
> too broad and is negatively affecting my case which is executing on a linux 
> system.  Even on windows, this would only be attempting to address a drive 
> letter case, right, where colon would occur only after a single letter in the 
> path?
>    private static String[] dissect(String path) {
>         char sep = File.separatorChar;
>         path = path.replace('/', sep).replace('\\', sep);
>         // // make sure we are dealing with an absolute path
>         // if (!isAbsolutePath(path)) {
>         // throw new BuildException(path + " is not an absolute path");
>         // }
>         String root = null;
>         int colon = path.indexOf(':');
>         if (colon > 0) { // && (ON_DOS || ON_NETWARE)) {
>             int next = colon + 1;
>             root = path.substring(0, next);
>             char[] ca = path.toCharArray();
>             root += sep;
>             // remove the initial separator; the root has it.
>             next = (ca[next] == sep) ? next + 1 : next;
>             StringBuffer sbPath = new StringBuffer();
>             // Eliminate consecutive slashes after the drive spec:
>             for (int i = next; i < ca.length; i++) {
>                 if (ca[i] != sep || ca[i - 1] != sep) {
>                     sbPath.append(ca[i]);
>                 }
>             }
>             path = sbPath.toString();



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to