/*By Terje Vernly (terjeve@ifi.uio.no)*/ #include #include #define BUFSIZE 100*1024 SkipBlanks(FILE *f) { int c=0; while (c!=' ' && c!='\t' && c!='\r' && c!='\n') c=fgetc(f); ungetc(c,f); } convert(FILE *f) { int maxX, maxY, maxval; int bytes_read; char *buffer; SkipBlanks(f); fscanf(f,"%d",&maxX); SkipBlanks(f); fscanf(f,"%d",&maxY); SkipBlanks(f); fscanf(f,"%d",&maxval); fgetc(f); printf("%d %d\n",maxX,maxY); if ((buffer=(char *) malloc(BUFSIZE))==NULL) { fprintf(stderr,"Not enough memory.\n"); exit(1); } do { bytes_read=fread(buffer,1,BUFSIZE,f); fwrite(buffer,bytes_read,1,stdout); } while (bytes_read==BUFSIZE); } main(int argc, char **argv) { FILE *fd; int x,y; if (argc!=2) { fd=stdin; } else { if ((fd=fopen(argv[1],"rb"))==NULL) { fprintf(stderr,"%s: File not found\n",argv[0]); exit(1); } } setvbuf(stdout, (char *) NULL, _IOFBF, 100*1024); x=fgetc(fd); y=fgetc(fd); if (!((x=='P') && (y=='6'))) { fprintf(stderr,"Not a RAWBITS ppm-image.\n"); exit(1); } convert(fd); fclose(fd); return 0; }