1 | /* |
1 | /* |
2 | * Copyright (c) 2000 Marc Alexander Lehmann <pcg@goof.com> |
2 | * Copyright (c) 2000-2003 Marc Alexander Lehmann <pcg@goof.com> |
3 | * |
3 | * |
4 | * Redistribution and use in source and binary forms, with or without modifica- |
4 | * Redistribution and use in source and binary forms, with or without modifica- |
5 | * tion, are permitted provided that the following conditions are met: |
5 | * tion, are permitted provided that the following conditions are met: |
6 | * |
6 | * |
7 | * 1. Redistributions of source code must retain the above copyright notice, |
7 | * 1. Redistributions of source code must retain the above copyright notice, |
… | |
… | |
32 | /*********************************************************************** |
32 | /*********************************************************************** |
33 | ** |
33 | ** |
34 | ** lzf -- an extremely fast/free compression/decompression-method |
34 | ** lzf -- an extremely fast/free compression/decompression-method |
35 | ** http://liblzf.plan9.de/ |
35 | ** http://liblzf.plan9.de/ |
36 | ** |
36 | ** |
37 | ** Based on ideas by Hermann Vogt, but liblzf is a total |
|
|
38 | ** re-implementation of LZV that is not compatible to the |
|
|
39 | ** original lzv code. |
|
|
40 | ** |
|
|
41 | ** This algorithm is believed to be patent-free. |
37 | ** This algorithm is believed to be patent-free. |
42 | ** |
38 | ** |
43 | ***********************************************************************/ |
39 | ***********************************************************************/ |
44 | |
40 | |
45 | /* |
41 | /* |
… | |
… | |
58 | * architecture-independent and will result in the original data when |
54 | * architecture-independent and will result in the original data when |
59 | * decompressed using lzf_decompress. |
55 | * decompressed using lzf_decompress. |
60 | * |
56 | * |
61 | * The buffers must not be overlapping. |
57 | * The buffers must not be overlapping. |
62 | * |
58 | * |
|
|
59 | * If the option LZF_STATE_ART is enabled, an extra argument must be |
|
|
60 | * supplied which is not reflected in this header file. Refer to lzf_c.c. |
|
|
61 | * |
63 | */ |
62 | */ |
64 | unsigned int |
63 | unsigned int |
65 | lzf_compress (const void *const in_data, unsigned int in_len, |
64 | lzf_compress (const void *const in_data, unsigned int in_len, |
66 | void *out_data, unsigned int out_len); |
65 | void *out_data, unsigned int out_len); |
67 | |
66 | |
68 | /* |
67 | /* |
69 | * Decompress data compressed with some version of the lzf_compress |
68 | * Decompress data compressed with some version of the lzf_compress |
70 | * function and stored at location in_data and length in_len. The result |
69 | * function and stored at location in_data and length in_len. The result |
71 | * will be stored at out_data up to a maximum of out_len characters. |
70 | * will be stored at out_data up to a maximum of out_len characters. |
72 | * |
71 | * |
73 | * If * the output buffer is not large enough to hold the decompressed |
72 | * If the output buffer is not large enough to hold the decompressed |
74 | * data, a 0 is returned and errno is set to E2BIG. Otherwise the number |
73 | * data, a 0 is returned and errno is set to E2BIG. Otherwise the number |
75 | * of decompressed bytes (i.e. the original length of the data) is |
74 | * of decompressed bytes (i.e. the original length of the data) is |
76 | * returned. |
75 | * returned. |
77 | * |
76 | * |
78 | * If an error in the compressed data is detected, a zero is returned and |
77 | * If an error in the compressed data is detected, a zero is returned and |