Annotation of coherent/g/usr/bin/gzip/zread.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: 
                      3: /* Trivial example of reading a gzip'ed file or gzip'ed standard input
                      4:  * using stdio functions fread(), getc(), etc... fseek() is not supported.
                      5:  * Modify according to your needs. You can easily construct the symmetric
                      6:  * zwrite program.
                      7:  *
                      8:  * Usage: zread [file[.z]]
                      9:  * This programs assumes that gzip is somewhere in your path.
                     10:  */
                     11: int main(argc, argv)
                     12:     int argc;
                     13:     char **argv;
                     14: {
                     15:     FILE *infile;
                     16:     char cmd[256];
                     17:     char buf[BUFSIZ];
                     18:     int n;
                     19: 
                     20:     if (argc < 1 || argc > 2) {
                     21:        fprintf(stderr, "usage: %s [file[.z]]\n", argv[0]);
                     22:        exit(1);
                     23:     }
                     24:     strcpy(cmd, "gzip -dc ");  /* use "gzip -c" for zwrite */
                     25:     if (argc == 2) {
                     26:        strncat(cmd, argv[1], sizeof(cmd)-strlen(cmd));
                     27:     }
                     28:     infile = popen(cmd, "r");  /* use "w" for zwrite */
                     29:     if (infile == NULL) {
                     30:        fprintf(stderr, "%s: popen('%s', 'r') failed\n", argv[0], cmd);
                     31:        exit(1);
                     32:     }
                     33:     /* Read one byte using getc: */
                     34:     n = getc(infile);
                     35:     if (n == EOF) {
                     36:        pclose(infile);
                     37:        exit(0);
                     38:     }
                     39:     putchar(n);
                     40: 
                     41:     /* Read the rest using fread: */
                     42:     for (;;) {
                     43:        n = fread(buf, 1, BUFSIZ, infile);
                     44:        if (n <= 0) break;
                     45:        fwrite(buf, 1, n, stdout);
                     46:     }
                     47:     if (pclose(infile) != 0) {
                     48:        fprintf(stderr, "%s: pclose failed\n", argv[0]);
                     49:        exit(1);
                     50:     }
                     51:     exit(0);
                     52:     return 0; /* just to make compiler happy */
                     53: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.