You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2001/07/12 09:37:00 UTC

cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs Zip.java

bodewig     01/07/12 00:36:58

  Modified:    .        WHATSNEW
               docs/manual/CoreTasks ear.html jar.html war.html zip.html
               src/main/org/apache/tools/ant/taskdefs Zip.java
  Log:
  New filesonly attribute for <zip> and friends - suppresses directories.
  
  PR: 2053
  Submitted by:	Peter Janes <pe...@liberate.com>
  
  Revision  Changes    Path
  1.126     +3 -0      jakarta-ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- WHATSNEW	2001/07/12 07:09:05	1.125
  +++ WHATSNEW	2001/07/12 07:36:21	1.126
  @@ -102,6 +102,9 @@
   
   * regexp mapper now supports the java.util.regex package of JDK 1.4.
   
  +* New filesonly attribute for <zip> and friends to suppress directory
  +  entries.
  +
   Fixed bugs:
   -----------
   
  
  
  
  1.4       +5 -0      jakarta-ant/docs/manual/CoreTasks/ear.html
  
  Index: ear.html
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/ear.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ear.html	2001/07/05 13:10:24	1.3
  +++ ear.html	2001/07/12 07:36:33	1.4
  @@ -52,6 +52,11 @@
       <td align="center" valign="top">No</td>
     </tr>
     <tr>
  +    <td valign="top">filesonly</td>
  +    <td valign="top">Store only file entries, defaults to false</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
       <td valign="top">includes</td>
       <td valign="top">comma separated list of patterns of files that must be
         included. All files are included when omitted.</td>
  
  
  
  1.5       +5 -0      jakarta-ant/docs/manual/CoreTasks/jar.html
  
  Index: jar.html
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/jar.html,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jar.html	2001/07/05 13:10:24	1.4
  +++ jar.html	2001/07/12 07:36:36	1.5
  @@ -74,6 +74,11 @@
       <td align="center" valign="top">No</td>
     </tr>
     <tr>
  +    <td valign="top">filesonly</td>
  +    <td valign="top">Store only file entries, defaults to false</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
       <td valign="top">includes</td>
       <td valign="top">comma separated list of patterns of files that must be
         included. All files are included when omitted.</td>
  
  
  
  1.5       +5 -0      jakarta-ant/docs/manual/CoreTasks/war.html
  
  Index: war.html
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/war.html,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- war.html	2001/07/05 13:10:24	1.4
  +++ war.html	2001/07/12 07:36:37	1.5
  @@ -54,6 +54,11 @@
       <td align="center" valign="top">No</td>
     </tr>
     <tr>
  +    <td valign="top">filesonly</td>
  +    <td valign="top">Store only file entries, defaults to false</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
       <td valign="top">includes</td>
       <td valign="top">comma separated list of patterns of files that must be
         included. All files are included when omitted.</td>
  
  
  
  1.4       +5 -0      jakarta-ant/docs/manual/CoreTasks/zip.html
  
  Index: zip.html
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/zip.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- zip.html	2001/07/05 13:10:24	1.3
  +++ zip.html	2001/07/12 07:36:39	1.4
  @@ -75,6 +75,11 @@
       <td align="center" valign="top">No</td>
     </tr>
     <tr>
  +    <td valign="top">filesonly</td>
  +    <td valign="top">Store only file entries, defaults to false</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
       <td valign="top">includes</td>
       <td valign="top">comma separated list of patterns of files that must be
         included. All files are included when omitted.</td>
  
  
  
  1.40      +29 -20    jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Zip.java
  
  Index: Zip.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Zip.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- Zip.java	2001/07/05 13:10:26	1.39
  +++ Zip.java	2001/07/12 07:36:50	1.40
  @@ -78,6 +78,7 @@
       private File zipFile;
       private File baseDir;
       private boolean doCompress = true;
  +    private boolean doFilesonly = false;
       protected String archiveType = "zip";
       // For directories:
       private static long emptyCrc = new CRC32 ().getValue ();
  @@ -115,6 +116,13 @@
       }
   
       /**
  +     * Emulate Sun's jar utility by not adding parent dirs
  +     */
  +    public void setFilesonly(boolean f) {
  +        doFilesonly = f;
  +    }
  +
  +    /**
        * Adds a set of files (nested fileset attribute).
        */
       public void addFileset(FileSet set) {
  @@ -529,27 +537,28 @@
       protected void addParentDirs(File baseDir, String entry,
                                    ZipOutputStream zOut, String prefix)
           throws IOException {
  -
  -        Stack directories = new Stack();
  -        int slashPos = entry.length();
  -
  -        while ((slashPos = entry.lastIndexOf((int)'/', slashPos-1)) != -1) {
  -            String dir = entry.substring(0, slashPos+1);
  -            if (addedDirs.get(prefix+dir) != null) {
  -                break;
  -            }
  -            directories.push(dir);
  -        }
  -
  -        while (!directories.isEmpty()) {
  -            String dir = (String) directories.pop();
  -            File f = null;
  -            if (baseDir != null) {
  -                f = new File(baseDir, dir);
  -            } else {
  -                f = new File(dir);
  +        if( !doFilesonly ) {
  +            Stack directories = new Stack();
  +            int slashPos = entry.length();
  +            
  +            while ((slashPos = entry.lastIndexOf((int)'/', slashPos-1)) != -1) {
  +                String dir = entry.substring(0, slashPos+1);
  +                if (addedDirs.get(prefix+dir) != null) {
  +                    break;
  +                }
  +                directories.push(dir);
  +            }
  +            
  +            while (!directories.isEmpty()) {
  +                String dir = (String) directories.pop();
  +                File f = null;
  +                if (baseDir != null) {
  +                    f = new File(baseDir, dir);
  +                } else {
  +                    f = new File(dir);
  +                }
  +                zipDir(f, zOut, prefix+dir);
               }
  -            zipDir(f, zOut, prefix+dir);
           }
       }