#include #include #include #include #include #include #ifdef HAVE_LIBGEN_H #include #endif #ifndef HAVE_LIBGEN_H char *basename(char *filename) { char *slash = filename; while (*filename) { if (*filename == '/') { slash = filename; } filename++; } if(*slash == '/'){ slash++; } return slash; } #endif void usage(char *progname){ printf("%s filename...\n", progname); exit(1); } int main(argc, argv) int argc; char *argv[]; { int filecount; int i, j; struct stat fbuf; char *fmem, *stmem; char fname[13]; int fflag; unsigned long int fpnt; int ffp; int i1f = 0x1f; int i8b = 0x8b; int i08 = 0x08; stmem = NULL; if(argc < 2) usage(argv[0]); filecount = argc - 1; for(i=0;i fbuf.st_size - 1){ printf(" "); } else { printf("%02x ",0xff & *(fmem+j)); } j++; } if( (fpnt + 20 < fbuf.st_size) && (8 & (0xff & *(fmem+3))) ){ j = 10; while((0xff & *(fmem+j)) > 0x1f && (0xff & *(fmem+j)) < 0x7f && j < 20){ printf("%c",*(fmem+j)); j++; } } printf("\n"); fflag = 1; } } if(!fflag) printf("can't find gzip header\n"); close(ffp); } }