Guest User

Untitled

a guest
Jul 17th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. size_t
  2. |zle_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n)
  3. |{
  4. | uchar_t *src = s_start;
  5. 40: | uchar_t *dst = d_start;
  6. | uchar_t *s_end = src + s_len;
  7. | uchar_t *d_end = dst + d_len;
  8. |
  9. | while (src < s_end && dst < d_end - 1) {
  10. 45: | uchar_t *first = src;
  11. | uchar_t *len = dst++;
  12. | if (src[0] == 0) {
  13. | uchar_t *last = src + (256 - n);
  14. | while (src < MIN(last, s_end) && src[0] == 0)
  15. 50: | src++;
  16. | *len = src - first - 1 + n;
  17. | } else {
  18. | uchar_t *last = src + n;
  19. | if (d_end - dst < n)
  20. 55: | break;
  21. | while (src < MIN(last, s_end) - 1 && (src[0] | src[1]))
  22. | *dst++ = *src++;
  23. | if (src[0])
  24. | *dst++ = *src++;
  25. 60: | *len = src - first - 1;
  26. | }
  27. | }
  28. | return (src == s_end ? dst - (uchar_t *)d_start : s_len);
  29. |}
Add Comment
Please, Sign In to add comment