You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2003/02/18 22:15:22 UTC

DO NOT REPLY [Bug 17182] New: - Cab task fails when a file being "cabbed" has spaces in the name.

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17182>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17182

Cab task fails when a file being "cabbed" has spaces in the name.

           Summary: Cab task fails when a file being "cabbed" has spaces in
                    the name.
           Product: Ant
           Version: 1.4.1
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Major
          Priority: Other
         Component: Optional Tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: jpeck@afsimage.com


If a file being put into a Cab file with Cab task has a space in the file 
name, the cab task fails.  Cabarc prints an error message:  FCFileAdd() failed 
to open file.  Workaround:  Don't put spaces in any file names.  This 
workaround is a problem becuase the OSD file in the cab often requires spaces 
in its name because its filename will be display to the user.

For my personal use, I corrected this problem by changing the method, File 
createListFile(Vector files), to put quotation marks around filenames.  The 
new method body looks like this:
{
        File listFile = fileUtils.createTempFile("ant", "", null);

        PrintWriter writer = new PrintWriter(new FileOutputStream(listFile));

        String curFilename;
        
        int filesSize = files.size();
        for (int i = 0; i < filesSize; i++) {
            curFilename = '\"' + files.elementAt(i).toString() + '\"';
            writer.println(curFilename);
        }
        writer.close();

        return listFile;
}

Note: I also corrected a performance issue cause by calling a (synchronized) 
method in a loop (Vector.size()).