--- ray/src/px/pflip.c 1991/11/12 16:04:49 2.1 +++ ray/src/px/pflip.c 2003/02/22 02:07:27 2.5 @@ -1,15 +1,18 @@ -/* Copyright (c) 1991 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: pflip.c,v 2.5 2003/02/22 02:07:27 greg Exp $"; #endif - /* * flip picture file horizontally and/or vertically */ #include +#ifdef MSDOS +#include +#endif + +#include + #include "color.h" #include "resolu.h" @@ -50,8 +53,13 @@ main(argc, argv) int argc; char *argv[]; { - int i; - + static char picfmt[LPICFMT+1] = PICFMT; + int i, rval; +#ifdef MSDOS + extern int _fmode; + _fmode = O_BINARY; + setmode(fileno(stdout), O_BINARY); +#endif progname = argv[0]; for (i = 1; i < argc; i++) @@ -77,14 +85,15 @@ char *argv[]; exit(1); } /* transfer header */ - if (checkheader(fin, COLRFMT, stdout) < 0) { + if ((rval = checkheader(fin, picfmt, stdout)) < 0) { fprintf(stderr, "%s: input not a Radiance picture\n", progname); exit(1); } + if (rval) + fputformat(picfmt, stdout); /* add new header info. */ printargs(i, argv, stdout); - fputformat(COLRFMT, stdout); putchar('\n'); /* get picture size */ if ((order = fgetresolu(&xres, &yres, fin)) < 0) { @@ -118,14 +127,15 @@ scanfile() /* scan to the end of file */ memerr(); if ((scanin = (COLR *)malloc(xres*sizeof(COLR))) == NULL) memerr(); - for (y = yres-1; y >= 0; y--) { + for (y = yres-1; y > 0; y--) { scanpos[y] = ftell(fin); if (freadcolrs(scanin, xres, fin) < 0) { fprintf(stderr, "%s: read error\n", progname); exit(1); } } - free((char *)scanin); + scanpos[0] = ftell(fin); + free((void *)scanin); } @@ -159,6 +169,7 @@ flip() /* flip the picture */ exit(1); } } - free((char *)scanin); - free((char *)scanout); + free((void *)scanin); + if (fhoriz) + free((void *)scanout); }