diff options
Diffstat (limited to 'src/modules/comments/zcom/rawtxt2z.cpp')
-rw-r--r-- | src/modules/comments/zcom/rawtxt2z.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/modules/comments/zcom/rawtxt2z.cpp b/src/modules/comments/zcom/rawtxt2z.cpp new file mode 100644 index 0000000..f8c18d0 --- /dev/null +++ b/src/modules/comments/zcom/rawtxt2z.cpp @@ -0,0 +1,83 @@ +#include <ctype.h> +#include <stdio.h> +#include <fcntl.h> +#include <errno.h> +#include <stdlib.h> + +#ifndef __GNUC__ +#include <io.h> +#else +#include <unistd.h> +#endif + +#include <swcomprs.h> + + +main(int argc, char **argv) +{ + SWCompress *zobj; + int ifd, ofd, ixfd, oxfd; + long offset, loffset, lzoffset; + short size, lsize, lzsize; + char *tmpbuf; + + if (argc != 2) { + fprintf(stderr, "usage: %s <datafilename>\n", argv[0]); + exit(1); + } + + zobj = new SWCompress(); + +#ifndef O_BINARY +#define O_BINARY 0 +#endif + + tmpbuf = new char [ strlen(argv[1]) + 9 ]; + ifd = open(argv[1], O_RDONLY|O_BINARY); + sprintf(tmpbuf, "%s.vss", argv[1]); + ixfd = open(tmpbuf, O_RDONLY|O_BINARY); + sprintf(tmpbuf, "%s.zzz", argv[1]); + ofd = open(tmpbuf, O_WRONLY|O_BINARY|O_CREAT); + sprintf(tmpbuf, "%s.zzz.vss", argv[1]); + oxfd = open(tmpbuf, O_WRONLY|O_BINARY|O_CREAT); + + delete [] tmpbuf; + + printf("\n"); + + while (1) { + if (read(ixfd, &offset, 4) != 4) + break; + if (read(ixfd, &size, 2) != 2) + break; + + if ((offset == loffset) && (size == lsize)) { + printf("using previous offset,size\n", size); + write(oxfd, &lzoffset, 4); + write(oxfd, &lzsize, 2); + } + else { + printf("%d -> ", size); + lsize = size; + loffset = offset; + + if (size) { + tmpbuf = (char *) calloc(size + 1, 1); + lseek(ifd, offset, SEEK_SET); + read(ifd, tmpbuf, size); + zobj->Buf(tmpbuf); + zobj->zBuf(&size); + free(tmpbuf); + } + offset = lseek(ofd, 0, SEEK_END); + write(oxfd, &offset, 4); + if (size) + write(ofd, zobj->zBuf(&size), size); + lzoffset = offset; + write(oxfd, &size, 2); + lzsize = size; + printf("%d \n", size); + } + } + delete zobj; +} |