<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<document>
  <properties>
    <title>commons-compress</title>
  </properties>
  <body>
    <release version="1.1" date="as in SVN" description="Release 1.1">
      <action type="fix" issue="COMPRESS-86" date="2009-10-08">
        Tar archive entries holding the file name for names longer
        than 100 characters in GNU longfile mode didn't properly
        specify they'd be using the "oldgnu" extension.
      </action>
      <action type="add" date="2009-08-25">
        A new constructor of TarArchiveEntry can create entries with
        names that start with slashes - the default is to strip
        leading slashes in order to create relative path names.
      </action>
      <action issue="COMPRESS-83" type="fix" date="2009-08-01">
        Delegate all read and write methods in GZip stream in order to
        speed up operations.
      </action>
      <action type="add" date="2009-08-01">
        ArchiveEntry now has a getLastModifiedDate method.
      </action>
      <action type="fix" date="2009-08-01">
        The ar and cpio streams now properly read and write last
        modified times.
      </action>
      <action issue="COMPRESS-81" type="fix" date="2009-06-30">
        TarOutputStream can leave garbage at the end of the archive
      </action>
      <action issue="COMPRESS-78" type="add" date="2009-06-30"
              due-to="Jukka Zitting">
        Add a BZip2Utils class modelled after GZipUtils
      </action>
    </release>
    <release version="1.0" date="2009-05-21" description="First Public Release">
      <action dev="all" type="add" date="2009-05-21">
        Initial release
      </action>
      <action dev="sgoeschl" type="fix">
        Updating the pom.xml for preparing a move to commons-proper
      </action>
    </release>
  </body>
</document>
