--- ray/src/px/ra_avs.c 1993/06/02 09:41:28 2.2 +++ ray/src/px/ra_avs.c 2003/06/05 19:29:34 2.10 @@ -1,24 +1,20 @@ -/* Copyright (c) 1993 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: ra_avs.c,v 2.10 2003/06/05 19:29:34 schorsch Exp $"; #endif - /* * Convert Radiance file to/from AVS file. */ #include -#ifdef MSDOS -#include -#endif +#include +#include + +#include "platform.h" #include "color.h" #include "resolu.h" -extern char *malloc(); +double gamcor = 2.2; /* gamma correction */ -double gamma = 2.2; /* gamma correction */ - int bradj = 0; /* brightness adjustment */ char *progname; @@ -40,7 +36,7 @@ char *argv[]; if (argv[i][0] == '-') switch (argv[i][1]) { case 'g': /* gamma correction */ - gamma = atof(argv[++i]); + gamcor = atof(argv[++i]); break; case 'e': /* exposure adjustment */ if (argv[i+1][0] != '+' && argv[i+1][0] != '-') @@ -64,20 +60,21 @@ char *argv[]; exit(1); } if (i == argc-2 && freopen(argv[i+1], "w", stdout) == NULL) { - fprintf(stderr, "can't open output \"%s\"\n", + fprintf(stderr, "%s: can't open output \"%s\"\n", progname, argv[i+1]); exit(1); } -#ifdef MSDOS - setmode(fileno(stdin), O_BINARY); - setmode(fileno(stdout), O_BINARY); -#endif - setcolrgam(gamma); /* set up gamma correction */ + SET_FILE_BINARY(stdin); + SET_FILE_BINARY(stdout); + setcolrgam(gamcor); /* set up gamma correction */ if (reverse) { /* get their image resolution */ xmax = getint(4, stdin); ymax = getint(4, stdin); + if (feof(stdin)) + quiterr("empty input file"); /* put our header */ + newheader("RADIANCE", stdout); printargs(i, argv, stdout); fputformat(COLRFMT, stdout); putchar('\n'); @@ -126,11 +123,13 @@ avs2ra() /* convert 24-bit scanlines to Radiance pict quiterr("out of memory in avs2ra"); /* convert image */ for (y = ymax-1; y >= 0; y--) { - (void)getc(stdin); /* toss alpha */ - scanout[x][RED] = getc(stdin); - scanout[x][GRN] = getc(stdin); - scanout[x][BLU] = getc(stdin); - if (feof(stdin) || ferror(stdin)) + for (x = 0; x < xmax; x++) { + (void)getc(stdin); /* toss alpha */ + scanout[x][RED] = getc(stdin); + scanout[x][GRN] = getc(stdin); + scanout[x][BLU] = getc(stdin); + } + if (feof(stdin) | ferror(stdin)) quiterr("error reading AVS image"); /* undo gamma */ gambs_colrs(scanout, xmax); @@ -140,7 +139,7 @@ avs2ra() /* convert 24-bit scanlines to Radiance pict quiterr("error writing Radiance picture"); } /* free scanline */ - free((char *)scanout); + free((void *)scanout); } @@ -170,5 +169,5 @@ ra2avs() /* convert Radiance scanlines to 24-bit */ quiterr("error writing AVS file"); } /* free scanline */ - free((char *)scanin); + free((void *)scanin); }