
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago 
Here are two new ant tasks - BZip2 and BUnzip2. �These
two tasks use the BZip2 compression algorithm (Visit:
http://sourceware.cygnus.com/bzip2/�for more info.) for
packing and unpacking.
These tasks resemble GZip and GUnzip tasks in input,
input validation, etc. �Hence, I refactored GZip and
GUnzip tasks as well so that the tasks GZip and BZip2
extend from a common base class named Pack, and
GUnzip and BUnzip2 extend from a common base class named
Unpack. �This lays the foundation for creating more Pack
tasks based on different algorithms like lzop, etc. in
the future.
The BZip2 and BUnzip2 tasks depend upon 4 classes:
BZip2Constants.java
CBZip2InputStream.java
CBZip2OutputStream.java
CRC.java
Keiron Liddle (keiron@aftexsw.com) has graciously
accepted to contribute the above code files he has
authored, under ASF license - many thanks to him. �I
have packaged them under org.apache.tools.bzip2,
mimicking the package naming style that has been used
for zip and tar tools we already have. �I have also
given proper credits to him in the code. �Perhaps, this
needs to exist under jakarta-commons, as Stefan had
suggested, but till then...
Submitted by: "Magesh Umasankar" <umagesh@rediffmail.com>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269919 13f79535-47bb-0310-9956-ffa450edef68
24 years ago |
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- /*
- * 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.
- *
- */
-
- package org.apache.tools.ant.taskdefs;
-
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import org.apache.tools.ant.BuildException;
- import org.apache.tools.ant.Task;
- import org.apache.tools.ant.types.Resource;
- import org.apache.tools.ant.types.ResourceCollection;
- import org.apache.tools.ant.types.resources.FileResource;
-
- /**
- * Abstract Base class for pack tasks.
- *
- * @since Ant 1.5
- */
-
- public abstract class Pack extends Task {
-
- protected File zipFile;
- protected File source;
- private Resource src;
-
- /**
- * the required destination file.
- * @param zipFile the destination file
- */
- public void setZipfile(File zipFile) {
- this.zipFile = zipFile;
- }
-
- /**
- * the required destination file.
- * @param zipFile the destination file
- */
- public void setDestfile(File zipFile) {
- setZipfile(zipFile);
- }
-
- /**
- * the file to compress; required.
- * @param src the source file
- */
- public void setSrc(File src) {
- setSrcResource(new FileResource(src));
- }
-
- /**
- * The resource to pack; required.
- * @param src resource to expand
- */
- public void setSrcResource(Resource src) {
- if (src.isDirectory()) {
- throw new BuildException("the source can't be a directory");
- }
- if (src instanceof FileResource) {
- source = ((FileResource) src).getFile();
- } else if (!supportsNonFileResources()) {
- throw new BuildException("Only FileSystem resources are"
- + " supported.");
- }
- this.src = src;
- }
-
- /**
- * Set the source resource.
- * @param a the resource to pack as a single element Resource collection.
- */
- public void addConfigured(ResourceCollection a) {
- if (a.size() != 1) {
- throw new BuildException("only single argument resource collections"
- + " are supported as archives");
- }
- setSrcResource((Resource) a.iterator().next());
- }
-
- /**
- * validation routine
- * @throws BuildException if anything is invalid
- */
- private void validate() throws BuildException {
- if (zipFile == null) {
- throw new BuildException("zipfile attribute is required", getLocation());
- }
-
- if (zipFile.isDirectory()) {
- throw new BuildException("zipfile attribute must not "
- + "represent a directory!", getLocation());
- }
-
- if (getSrcResource() == null) {
- throw new BuildException("src attribute or nested resource is"
- + " required", getLocation());
- }
- }
-
- /**
- * validate, then hand off to the subclass
- * @throws BuildException on error
- */
- public void execute() throws BuildException {
- validate();
-
- Resource s = getSrcResource();
- if (!s.isExists()) {
- log("Nothing to do: " + s.toString()
- + " doesn't exist.");
- } else if (zipFile.lastModified() < s.getLastModified()) {
- log("Building: " + zipFile.getAbsolutePath());
- pack();
- } else {
- log("Nothing to do: " + zipFile.getAbsolutePath()
- + " is up to date.");
- }
- }
-
- /**
- * zip a stream to an output stream
- * @param in the stream to zip
- * @param zOut the output stream
- * @throws IOException
- */
- private void zipFile(InputStream in, OutputStream zOut)
- throws IOException {
- byte[] buffer = new byte[8 * 1024];
- int count = 0;
- do {
- zOut.write(buffer, 0, count);
- count = in.read(buffer, 0, buffer.length);
- } while (count != -1);
- }
-
- /**
- * zip a file to an output stream
- * @param file the file to zip
- * @param zOut the output stream
- * @throws IOException on error
- */
- protected void zipFile(File file, OutputStream zOut)
- throws IOException {
- zipResource(new FileResource(file), zOut);
- }
-
- /**
- * zip a resource to an output stream
- * @param resource the resource to zip
- * @param zOut the output stream
- * @throws IOException on error
- */
- protected void zipResource(Resource resource, OutputStream zOut)
- throws IOException {
- InputStream rIn = resource.getInputStream();
- try {
- zipFile(rIn, zOut);
- } finally {
- rIn.close();
- }
- }
-
- /**
- * subclasses must implement this method to do their compression
- */
- protected abstract void pack();
-
- /**
- * The source resource.
- * @return the source.
- * @since Ant 1.7
- */
- public Resource getSrcResource() {
- return src;
- }
-
- /**
- * Whether this task can deal with non-file resources.
- *
- * <p>This implementation returns false.</p>
- * @return false.
- * @since Ant 1.7
- */
- protected boolean supportsNonFileResources() {
- return false;
- }
- }
|