/* BINPRINT.C Displays files in hex-dump format (with ascii subdisplay if desired) v1.2 Optimized and fixed input from terminal bug (pv) v1.1 Added stacksize directive (jb) v1.0 Original version by Derek Taubert */ #pragma optimize -1 #pragma stacksize 1024 #include #include #include #include #include extern FILE *fdopen(int,char *); unsigned int doline(char *dest, char *source, unsigned int actual, unsigned int cols); unsigned char *buffer2; main(argc,argv) int argc; char **argv; { int duh; int a; int c,errflg = 0,columns = 16; size_t pos = 0; unsigned char *buffer; extern char *optarg; extern int optind; extern int getopt(int,char **,char*); while ((c = getopt(argc,argv, "Vc:")) != EOF) switch (c) { case 'c' : columns = atoi(optarg); break; case 'V' : fprintf(stdout, "binprint v1.2 for GNO/ME\n"); exit(0); default : errflg++; } if (errflg) { fprintf(stderr,"usage: binprint [-c] files...\n"); exit(2); } argv += optind; if (columns < 8) columns = 8; if ((buffer2 = (unsigned char *)malloc((size_t)(columns*4)+1)) == NULL) { fprintf(stderr,"Cannot allocate buffer space\n"); exit(1); } buffer = (unsigned char *)(buffer2+(columns*3)); if (optind == argc) { duh = STDIN_FILENO; goto action; } for (;optind