aboutsummaryrefslogtreecommitdiffstats
path: root/package/utils/rbextract/src/rle.c
diff options
context:
space:
mode:
Diffstat (limited to 'package/utils/rbextract/src/rle.c')
-rw-r--r--package/utils/rbextract/src/rle.c80
1 files changed, 0 insertions, 80 deletions
diff --git a/package/utils/rbextract/src/rle.c b/package/utils/rbextract/src/rle.c
deleted file mode 100644
index ca198ee9fc..0000000000
--- a/package/utils/rbextract/src/rle.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * RLE decoding routine
- *
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published
- * by the Free Software Foundation.
- */
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <sys/types.h>
-
-#include "rle.h"
-
-int rle_decode(const unsigned char *src, size_t srclen,
- unsigned char *dst, size_t dstlen,
- size_t *src_done, size_t *dst_done)
-{
- size_t srcpos, dstpos;
- int ret;
-
- srcpos = 0;
- dstpos = 0;
- ret = 1;
-
- /* sanity checks */
- if (!src || !srclen || !dst || !dstlen)
- goto out;
-
- while (1) {
- signed char count;
-
- if (srcpos >= srclen)
- break;
-
- count = (signed char) src[srcpos++];
- if (count == 0) {
- ret = 0;
- break;
- }
-
- if (count > 0) {
- unsigned char c;
-
- if (srcpos >= srclen)
- break;
-
- c = src[srcpos++];
-
- while (count--) {
- if (dstpos >= dstlen)
- break;
-
- dst[dstpos++] = c;
- }
- } else {
- count *= -1;
-
- while (count--) {
- if (srcpos >= srclen)
- break;
- if (dstpos >= dstlen)
- break;
- dst[dstpos++] = src[srcpos++];
- }
- }
- }
-
-out:
- if (src_done)
- *src_done = srcpos;
- if (dst_done)
- *dst_done = dstpos;
-
- return ret;
-}