home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 4 / CDPD_IV.bin / networking / uucp / amigauucpsrc / lib / unix_comp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-29  |  2.1 KB  |  125 lines

  1.  
  2. /*
  3.  *  UNIX_COMP.C
  4.  *
  5.  *  compress a file source to a destination file pointer, used by
  6.  *  BATCHNEWS.
  7.  *
  8.  *  This differs from COMP.C in that the AmigaUUCP ulog() call is not
  9.  *  used.
  10.  */
  11.  
  12. #define COMPRESS_ONLY
  13. #define DECOMPRESS_ONLY     /*    sneaky shit to avoid repeating core code */
  14.  
  15. #define BITS  16        /*    maximum (dynamically allocate)           */
  16. #define XENIX_16
  17. #define LOGERROR
  18. #define NO_ULOG
  19. #include <stdio.h>
  20.  
  21. #undef stdin
  22. #undef stdout
  23. #define stdin    Fi
  24. #define stdout    Fo
  25.  
  26. #include <stdlib.h>
  27. #include <string.h>
  28. #include "config.h"
  29.  
  30. static FILE *Fi;
  31. static FILE *Fo;
  32.  
  33. #include "/unix/compress.ch"
  34.  
  35. Prototype int unix_compress_from_file(char *, FILE *, short);
  36. Prototype int unix_compress_from_fp(FILE *, FILE *, short);
  37. Prototype int unix_uncompress_to_file(FILE *, char *, short *);
  38. Prototype int unix_uncompress_to_fp(FILE *, FILE *, short *);
  39.  
  40. int
  41. unix_compress_from_file(inName, fo, bits)
  42. char *inName;
  43. FILE *fo;
  44. short bits;
  45. {
  46.     FILE *fi;
  47.     int r = -1;
  48.  
  49.     if (bits < 0)                       /*  block compress */
  50.     bits = -bits | BLOCK_MASK;
  51.  
  52.     if (initcomp(NULL, fo, bits) >= 0) {
  53.     if (fi = fopen(inName, "r")) {
  54.         Fi = fi;
  55.         Fo = fo;
  56.         r = compress();
  57.         fclose(fi);
  58.     }
  59.     }
  60.     deletecomp();
  61.     return(r);
  62. }
  63.  
  64. int
  65. unix_compress_from_fp(fi, fo, bits)
  66. FILE *fi;
  67. FILE *fo;
  68. short bits;
  69. {
  70.     int r = -1;
  71.  
  72.     if (bits < 0)                       /*  block compress */
  73.     bits = -bits | BLOCK_MASK;
  74.  
  75.     if (initcomp(NULL, fo, bits) >= 0) {
  76.     Fi = fi;
  77.     Fo = fo;
  78.     r = compress();
  79.     }
  80.     deletecomp();
  81.     return(r);
  82. }
  83.  
  84. int
  85. unix_uncompress_to_file(fi, outName, pbits)
  86. FILE *fi;
  87. char *outName;
  88. short *pbits;
  89. {
  90.     FILE *fo;
  91.     int r = -1;
  92.  
  93.     if (initcomp(fi, NULL, 0) >= 0) {
  94.     if (fo = fopen(outName, "w")) {
  95.         Fi = fi;
  96.         Fo = fo;
  97.         r = decompress();
  98.         *pbits = maxbits;
  99.         fclose(fo);
  100.     }
  101.     }
  102.     deletecomp();
  103.     return(r);
  104. }
  105.  
  106. int
  107. unix_uncompress_to_fp(fi, fo, pbits)
  108. FILE *fi;
  109. FILE *fo;
  110. short *pbits;
  111. {
  112.     int r = -1;
  113.  
  114.     if (initcomp(fi, NULL, 0) >= 0) {
  115.     Fi = fi;
  116.     Fo = fo;
  117.     r = decompress();
  118.     *pbits = maxbits;
  119.     }
  120.     deletecomp();
  121.     return(r);
  122. }
  123.  
  124.  
  125.