add support for writing Snappy without framing
diff --git a/docs/pack.html b/docs/pack.html
index 0a8700d..39e9b10 100644
--- a/docs/pack.html
+++ b/docs/pack.html
@@ -236,8 +236,11 @@
     <tr>
       <td valign="top">framed</td>
       <td valign="top">Whether to use
-      the <a href="https://github.com/google/snappy/blob/master/framing_format.txt">framing
-     format</a>.</td>
+        the <a href="https://github.com/google/snappy/blob/master/framing_format.txt">framing
+        format</a>.<br/>  When setting this to false only resources of
+        known (uncompressed) size can be compressed (for example
+        files).
+      </td>
       <td align="center" valign="top">No, defaults to true.</td>
     </tr>
   </table>
diff --git a/src/main/org/apache/ant/compress/taskdefs/PackBase.java b/src/main/org/apache/ant/compress/taskdefs/PackBase.java
index 9c5d6de..4f63b91 100644
--- a/src/main/org/apache/ant/compress/taskdefs/PackBase.java
+++ b/src/main/org/apache/ant/compress/taskdefs/PackBase.java
@@ -232,6 +232,13 @@
         }
     }
 
+    /**
+     * @since Apache Compress Antlib 1.5
+     */
+    protected final Resource getSrc() {
+        return src;
+    }
+
     public static interface ResourceWrapper {
         CommonsCompressCompressorResource wrap(Resource dest);
     }
diff --git a/src/main/org/apache/ant/compress/taskdefs/Snappy.java b/src/main/org/apache/ant/compress/taskdefs/Snappy.java
index 76528e4..f41e2e8 100644
--- a/src/main/org/apache/ant/compress/taskdefs/Snappy.java
+++ b/src/main/org/apache/ant/compress/taskdefs/Snappy.java
@@ -18,9 +18,14 @@
 
 package org.apache.ant.compress.taskdefs;
 
+import java.io.IOException;
+import java.io.OutputStream;
+
 import org.apache.ant.compress.resources.SnappyResource;
 import org.apache.ant.compress.resources.CommonsCompressCompressorResource;
 import org.apache.ant.compress.util.SnappyStreamFactory;
+import org.apache.commons.compress.compressors.CompressorOutputStream;
+import org.apache.commons.compress.compressors.snappy.SnappyCompressorOutputStream;
 import org.apache.tools.ant.types.Resource;
 
 /**
@@ -51,5 +56,13 @@
     }
 
     private class InnerSnappyStreamFactory extends SnappyStreamFactory {
+        @Override
+        public CompressorOutputStream getCompressorStream(OutputStream stream)
+            throws IOException {
+            if (isFramed() || getSrc() == null || getSrc().getSize() < 0) {
+                return super.getCompressorStream(stream);
+            }
+            return new SnappyCompressorOutputStream(stream, getSrc().getSize());
+        }
     }
 }
diff --git a/src/tests/antunit/unsnappy-test.xml b/src/tests/antunit/unsnappy-test.xml
index d8970a8..c8b0ff0 100644
--- a/src/tests/antunit/unsnappy-test.xml
+++ b/src/tests/antunit/unsnappy-test.xml
@@ -47,6 +47,17 @@
                          actual="${output}/asf-logo.gif"/>
   </target>
 
+  <target name="testSnappyTaskWithoutFraming" depends="setUp">
+    <cmp:snappy src="../resources/asf-logo.gif"
+                destfile="${output}/asf-logo.gif.sz"
+                framed="false"/>
+    <cmp:unsnappy src="${output}/asf-logo.gif.sz"
+                  dest="${output}/asf-logo.gif"
+                  framed="false"/>
+    <au:assertFilesMatch expected="../resources/asf-logo.gif"
+                         actual="${output}/asf-logo.gif"/>
+  </target>
+
   <target name="testNativeSnappy" depends="setUp">
     <cmp:unsnappy src="../resources/asf-logo.gif.sz"
                 dest="${output}/asf-logo.gif" />