/usr/share/doc/libjzlib-java/examples/test_large_deflate_inflate.java is in libjzlib-java 1.1.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | /* -*-mode:java; c-basic-offset:2; -*- */
import java.io.*;
import com.jcraft.jzlib.*;
// Test deflate() with large buffers and dynamic change of compression level
class test_large_deflate_inflate{
static final byte[] hello="hello, hello! ".getBytes();
static{
hello[hello.length-1]=0;
}
public static void main(String[] arg){
int err;
int comprLen=40000;
int uncomprLen=comprLen;
byte[] compr=new byte[comprLen];
byte[] uncompr=new byte[uncomprLen];
Deflater deflater = null;
try{
deflater = new Deflater(JZlib.Z_BEST_SPEED);
}
catch(GZIPException e){
}
deflater.setInput(uncompr);
deflater.setOutput(compr);
// At this point, uncompr is still mostly zeroes, so it should compress
// very well:
err=deflater.deflate(JZlib.Z_NO_FLUSH);
CHECK_ERR(deflater, err, "deflate");
if(deflater.avail_in!=0){
System.out.println("deflate not greedy");
System.exit(1);
}
// Feed in already compressed data and switch to no compression:
deflater.params(JZlib.Z_NO_COMPRESSION, JZlib.Z_DEFAULT_STRATEGY);
deflater.setInput(compr);
deflater.avail_in=comprLen/2;
err=deflater.deflate(JZlib.Z_NO_FLUSH);
CHECK_ERR(deflater, err, "deflate");
// Switch back to compressing mode:
deflater.params(JZlib.Z_BEST_COMPRESSION, JZlib.Z_FILTERED);
deflater.setInput(uncompr);
err=deflater.deflate(JZlib.Z_NO_FLUSH);
CHECK_ERR(deflater, err, "deflate");
err=deflater.deflate(JZlib.Z_FINISH);
if(err!=JZlib.Z_STREAM_END){
System.out.println("deflate should report Z_STREAM_END");
System.exit(1);
}
err=deflater.end();
CHECK_ERR(deflater, err, "deflateEnd");
Inflater inflater = new Inflater();
inflater.setInput(compr);
while(true){
inflater.setOutput(uncompr);
err=inflater.inflate(JZlib.Z_NO_FLUSH);
if(err==JZlib.Z_STREAM_END) break;
CHECK_ERR(inflater, err, "inflate large");
}
err=inflater.end();
CHECK_ERR(inflater, err, "inflateEnd");
if (inflater.getTotalOut() != 2*uncomprLen + comprLen/2) {
System.out.println("bad large inflate: "+inflater.total_out);
System.exit(1);
}
else {
System.out.println("large_inflate(): OK");
}
}
static void CHECK_ERR(ZStream z, int err, String msg) {
if(err!=JZlib.Z_OK){
if(z.msg!=null) System.out.print(z.msg+" ");
System.out.println(msg+" error: "+err);
System.exit(1);
}
}
}
|