summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2021-01-21 21:47:29 +0100
committerDaniel Friesel <derf@finalrewind.org>2021-01-21 21:47:29 +0100
commit9a609dc71b03256860b746fd258e37624c54df71 (patch)
tree1b7ded823d583c69036ce72a2023452723943f13
parenta288a4a4a79d561cb1f52a9fef941a490931ec42 (diff)
this library implements inflate, not deflate
-rw-r--r--README.md43
-rw-r--r--src/inflate.c (renamed from src/deflate.c)8
-rw-r--r--src/inflate.h (renamed from src/deflate.h)4
3 files changed, 30 insertions, 25 deletions
diff --git a/README.md b/README.md
index c7c0fd9..1ecbe90 100644
--- a/README.md
+++ b/README.md
@@ -11,12 +11,17 @@ for speed. Right now, the implementation is naive, but usable. See below for
the current status and TODOs. Be aware that this library has not been
extensively tested yet.
+Note: This library *inflates* (i.e., decompresses) data. The source files and
+API are named as such, as is the corresponding function in the original zlib
+implementation. However, as the algorithm is called *deflate*, the project is
+named zlib-*deflate*-nostdlib even though it does not support compression.
+
## Usage
-Embed `deflate.c` and `deflate.h` into your project. You can rename `deflate.c`
-to `deflate.cc` and/or compile it with g++ instead of gcc, if you like. Use
-`deflate_zlib(input, input_len, output, output_len)` to decompress zlib data,
-and `deflate(input, input_len, output, output_len)` to decompress deflate data
+Embed `inflate.c` and `inflate.h` into your project. You can rename `inflate.c`
+to `inflate.cc` and/or compile it with g++ instead of gcc, if you like. Use
+`inflate_zlib(input, input_len, output, output_len)` to decompress zlib data,
+and `inflate(input, input_len, output, output_len)` to decompress deflate data
without zlib header.
input and output must be `unsigned char *`, input\_len and output\_len are
@@ -26,24 +31,24 @@ bytes written to `output`, or a negative value on error.
Example for zlib decompression (RFC 1950):
```
-#include "deflate.h"
+#include "inflate.h"
-unsigned char deflate_input[] = { /* some compressed data, e.g.: */
+unsigned char inflate_input[] = { /* some compressed data, e.g.: */
120, 156, 243, 72, 205, 201, 201, 215, 81, 8, 207, 47, 202, 73, 177, 87,
240, 64, 226, 41, 2, 0, 128, 125, 9, 17
};
-unsigned char deflate_output[128];
+unsigned char inflate_output[128];
// within some function
{
- int16_t out_bytes = deflate_zlib(deflate_input, sizeof(deflate_input),
- deflate_output, sizeof(deflate_output));
+ int16_t out_bytes = inflate_zlib(inflate_input, sizeof(inflate_input),
+ inflate_output, sizeof(inflate_output));
if (out_bytes < 0) {
// error
} else {
- // success. deflate_output contains "Hello, World? Hello, World!"
- // out_bytes contains the number of bytes written to deflate_output
+ // success. inflate_output contains "Hello, World? Hello, World!"
+ // out_bytes contains the number of bytes written to inflate_output
}
}
@@ -52,24 +57,24 @@ unsigned char deflate_output[128];
Decompressing deflate (RFC 1951) data works as follows:
```
-#include "deflate.h"
+#include "inflate.h"
-unsigned char deflate_input[] = { /* some compressed data, e.g.: */
+unsigned char inflate_input[] = { /* some compressed data, e.g.: */
243, 72, 205, 201, 201, 215, 81, 8, 207, 47, 202, 73, 177, 87,
240, 64, 226, 41, 2, 0
};
-unsigned char deflate_output[128];
+unsigned char inflate_output[128];
// within some function
{
- int16_t out_bytes = deflate(deflate_input, sizeof(deflate_input),
- deflate_output, sizeof(deflate_output));
+ int16_t out_bytes = inflate(inflate_input, sizeof(inflate_input),
+ inflate_output, sizeof(inflate_output));
if (out_bytes < 0) {
// error
} else {
- // success. deflate_output contains "Hello, World? Hello, World!"
- // out_bytes contains the number of bytes written to deflate_output
+ // success. inflate_output contains "Hello, World? Hello, World!"
+ // out_bytes contains the number of bytes written to inflate_output
}
}
@@ -78,7 +83,7 @@ unsigned char deflate_output[128];
## Compilation flags
Compile with `-DDEFLATE_CHECKSUM` to enable verification of the zlib ADLER32
-checksum in `deflate_zlib`.
+checksum in `inflate_zlib`.
## Compliance
diff --git a/src/deflate.c b/src/inflate.c
index 072cc97..8e83453 100644
--- a/src/deflate.c
+++ b/src/inflate.c
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
-#include "lib/deflate.h"
+#include "lib/inflate.h"
/*
* The compressed (inflated) input data.
@@ -370,7 +370,7 @@ static int8_t deflate_dynamic_huffman()
deflate_lld_lengths + hlit, hdist);
}
-int16_t deflate(unsigned char *input_buf, uint16_t input_len,
+int16_t inflate(unsigned char *input_buf, uint16_t input_len,
unsigned char *output_buf, uint16_t output_len)
{
//uint8_t is_final = input_buf[0] & 0x01;
@@ -405,7 +405,7 @@ int16_t deflate(unsigned char *input_buf, uint16_t input_len,
return deflate_output_now - output_buf;
}
-int16_t deflate_zlib(unsigned char *input_buf, uint16_t input_len,
+int16_t inflate_zlib(unsigned char *input_buf, uint16_t input_len,
unsigned char *output_buf, uint16_t output_len)
{
if (input_len < 4) {
@@ -427,7 +427,7 @@ int16_t deflate_zlib(unsigned char *input_buf, uint16_t input_len,
}
int16_t ret =
- deflate(input_buf + 2, input_len - 2, output_buf, output_len);
+ inflate(input_buf + 2, input_len - 2, output_buf, output_len);
#ifdef DEFLATE_CHECKSUM
if (ret >= 0) {
diff --git a/src/deflate.h b/src/inflate.h
index 4ed28a0..575be4a 100644
--- a/src/deflate.h
+++ b/src/inflate.h
@@ -17,7 +17,7 @@
#define DEFLATE_ERR_FCHECK (-7)
#define DEFLATE_ERR_NLEN (-8)
-int16_t deflate(unsigned char *input_buf, uint16_t input_len,
+int16_t inflate(unsigned char *input_buf, uint16_t input_len,
unsigned char *output_buf, uint16_t output_len);
-int16_t deflate_zlib(unsigned char *input_buf, uint16_t input_len,
+int16_t inflate_zlib(unsigned char *input_buf, uint16_t input_len,
unsigned char *output_buf, uint16_t output_len);