#include long *bm; long h, w; long factor; #define OC(x,xi) ((x)*factor+(xi)) #define BM(x,xi,y,yi) bm[OC(y,yi)*w+OC(x,xi)] #define COMP(r,g,b) ((r) | ((g)<<8) | ((b) << 16)) #define R(comp) ((comp) & 0xff) #define G(comp) (((comp)>>8) & 0xff) #define B(comp) (((comp)>>16) & 0xff) main(argc, argv) char **argv; { char lbuf[100]; int nh, nw; int x, y, xi, yi; int num; int r, g, b; long data; long *nbm, *nbmp; int i; if( argc != 2) { fprintf(stderr, "Usage: squash factor\n"); exit(1); } factor = atoi(argv[1]); gets(lbuf); if ( sscanf(lbuf, "(%d,%d)", &w, &h) != 2) { fprintf(stderr, "%s: bad size spec: %s\n", argv[0], lbuf); exit(1); } nh = h / factor; nw = w / factor; printf("(%d,%d)\n", nw, nh); if ( (bm = (long *)malloc(h*w*sizeof(long))) == 0) { fprintf(stderr, "%s: No memory\n", argv[0]); exit(1); } if ( (nbm = (long *)malloc(nh*nw*sizeof(long))) == 0) { fprintf(stderr, "%s: No memory\n", argv[0]); exit(1); } while( !feof(stdin) ) { gets(lbuf); if ( feof(stdin) ) break; puts(lbuf); fprintf(stderr, "Reading %d\n", h*w*sizeof(long)); if ( (i=fread(bm, 1, h*w*sizeof(long), stdin)) != h*w*sizeof(long)) { fprintf(stderr, "%s: short read, %d wanted %d\n", argv[0], i, h*w*sizeof(long)); exit(1); } nbmp = nbm; for( y=0; y