summaryrefslogtreecommitdiff
path: root/libc/tests/ucomp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/tests/ucomp.c')
-rw-r--r--libc/tests/ucomp.c108
1 files changed, 0 insertions, 108 deletions
diff --git a/libc/tests/ucomp.c b/libc/tests/ucomp.c
deleted file mode 100644
index cc3eef8..0000000
--- a/libc/tests/ucomp.c
+++ /dev/null
@@ -1,108 +0,0 @@
-
-/*
- * Uncompress program this is very very fast
- *
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <malloc.h>
-
-#define MAXLEN 255
-
-#define maxno 61000U
-#define USE_BSS
-
-#ifdef USE_BSS
-unsigned char fptr[maxno];
-#else
-unsigned char *fptr;
-#endif
-FILE * fd;
-int key;
-
-main(argc, argv)
-int argc;
-char ** argv;
-{
-#ifndef USE_BSS
- fptr = (unsigned char * ) malloc(maxno);
-
- if( fptr == 0 )
- {
- perror("Cannot allocate memory");
- exit(1);
- }
-#endif
-
- if( argc < 2 )
- {
- fd = stdin;
- key = getc(fd);
- uncompress();
- }
- else
- {
- fd = fopen(argv[1], "r" );
- if( fd == 0 ) { perror("Open failed"); exit(1); }
-
- key = getc(fd);
- uncompress();
- }
-}
-
-/*
-
- Uncompression routine -- v.v.fast
-*/
-
-uncompress()
-{
- register unsigned char * mainscan;
- register unsigned char * secondscan;
- register unsigned char * ptr = (unsigned char * ) fptr;
- register unsigned char * eptr = ptr+maxno;
- register unsigned int len;
- register int ch;
-
- mainscan = ptr;
-
- for(;;)
- {
- ch = getc(fd);
- if(ch == EOF) break;
- ch &= 0xFF;
- if(ch == key)
- {
- ch = getc(fd);
- if( ch == 0 )
- *mainscan++ = key;
- else
- {
- len = (unsigned char) getc(fd);
- if( ch & 0x80 )
- len += ((unsigned char) getc(fd)) << 8;
- secondscan = mainscan - len;
- if(len > mainscan - ptr) secondscan += maxno;
- len = (unsigned char) ch & 0x7F;
- for( ; len>0; len-- )
- {
- *mainscan++ = *secondscan++;
- if( secondscan == eptr ) secondscan = ptr;
- if( mainscan == eptr )
- { write(1, ptr, (int)(mainscan-ptr)); mainscan = ptr; }
- }
- }
- }
- else
- *mainscan++ = ch;
-
- if( mainscan == eptr )
- { write(1, ptr, (int)(mainscan-ptr)); mainscan = ptr; }
- }
- if( mainscan != ptr )
- { write(1, ptr, (int)(mainscan-ptr)); mainscan = ptr; }
-}
-