X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootsplash;a=blobdiff_plain;f=rle%2Funrle.c;fp=rle%2Funrle.c;h=7f70edd7d005c06bb857265d1b7e116266aa4925;hp=0000000000000000000000000000000000000000;hb=5731d2abe8e8c4b838f8d1b0eefdc25754f6ad78;hpb=2438014abcc5a367e917a8be9210eb393a676ccb diff --git a/rle/unrle.c b/rle/unrle.c new file mode 100644 index 0000000..7f70edd --- /dev/null +++ b/rle/unrle.c @@ -0,0 +1,26 @@ +#include + +int main(void) +{ + int c, count, rawbytes = 0; + + printf("P5\n320 200\n255\n"); + + while((c = getchar()) != -1) { + if(c & 0x80) { + count = c & 0x7f; + if((c = getchar()) == -1) { + fprintf(stderr, "Unexpected EOF while decoding RLE data\n"); + return 1; + } + rawbytes += count; + while(count--) putchar(c); + } else { + rawbytes++; + putchar(c); + } + } + + fprintf(stderr, "decoded (raw) size: %d bytes\n", rawbytes); + return 0; +}