Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- size_t
- |zle_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n)
- |{
- | uchar_t *src = s_start;
- 40: | uchar_t *dst = d_start;
- | uchar_t *s_end = src + s_len;
- | uchar_t *d_end = dst + d_len;
- |
- | while (src < s_end && dst < d_end - 1) {
- 45: | uchar_t *first = src;
- | uchar_t *len = dst++;
- | if (src[0] == 0) {
- | uchar_t *last = src + (256 - n);
- | while (src < MIN(last, s_end) && src[0] == 0)
- 50: | src++;
- | *len = src - first - 1 + n;
- | } else {
- | uchar_t *last = src + n;
- | if (d_end - dst < n)
- 55: | break;
- | while (src < MIN(last, s_end) - 1 && (src[0] | src[1]))
- | *dst++ = *src++;
- | if (src[0])
- | *dst++ = *src++;
- 60: | *len = src - first - 1;
- | }
- | }
- | return (src == s_end ? dst - (uchar_t *)d_start : s_len);
- |}
Add Comment
Please, Sign In to add comment