1 | /* |
1 | /* |
2 | * Copyright (c) 2000-2007 Marc Alexander Lehmann <schmorp@schmorp.de> |
2 | * Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp@schmorp.de> |
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, |
… | |
… | |
44 | ** |
44 | ** |
45 | ** This algorithm is believed to be patent-free. |
45 | ** This algorithm is believed to be patent-free. |
46 | ** |
46 | ** |
47 | ***********************************************************************/ |
47 | ***********************************************************************/ |
48 | |
48 | |
49 | #define LZF_VERSION 0x0105 /* 1.5 */ |
49 | #define LZF_VERSION 0x0105 /* 1.5, API version */ |
50 | |
50 | |
51 | /* |
51 | /* |
52 | * Compress in_len bytes stored at the memory block starting at |
52 | * Compress in_len bytes stored at the memory block starting at |
53 | * in_data and write the result to out_data, up to a maximum length |
53 | * in_data and write the result to out_data, up to a maximum length |
54 | * of out_len bytes. |
54 | * of out_len bytes. |
55 | * |
55 | * |
56 | * If the output buffer is not large enough or any error occurs |
56 | * If the output buffer is not large enough or any error occurs return 0, |
57 | * return 0, otherwise return the number of bytes used (which might |
57 | * otherwise return the number of bytes used, which might be considerably |
58 | * be considerably larger than in_len, so it makes sense to always |
58 | * more than in_len (but less than 104% of the original size), so it |
59 | * use out_len == in_len - 1), to ensure _some_ compression, and store |
59 | * makes sense to always use out_len == in_len - 1), to ensure _some_ |
60 | * the data uncompressed otherwise. |
60 | * compression, and store the data uncompressed otherwise (with a flag, of |
|
|
61 | * course. |
61 | * |
62 | * |
62 | * lzf_compress might use different algorithms on different systems and |
63 | * lzf_compress might use different algorithms on different systems and |
63 | * even diferent runs, thus might result in different compressed strings |
64 | * even different runs, thus might result in different compressed strings |
64 | * depending on the phase of the moon or similar factors. However, all |
65 | * depending on the phase of the moon or similar factors. However, all |
65 | * these strings are architecture-independent and will result in the |
66 | * these strings are architecture-independent and will result in the |
66 | * original data when decompressed using lzf_decompress. |
67 | * original data when decompressed using lzf_decompress. |
67 | * |
68 | * |
68 | * The buffers must not be overlapping. |
69 | * The buffers must not be overlapping. |