#endif
+void usage();
/* Write one row of pixel values */
inline void write_one_line(pixel* line, int cols, FILE* outfile)
{
-
int i, index;
unsigned int* maptable;
line8 = (unsigned char*)safealloc(cols);
for (i=0; i< cols; i++)
- *(line8+i)=ENDIAN8(*(line+i));
+ *(line8+i)=(unsigned char)ENDIAN8(*(line+i));
fwrite(line8, sizeof(unsigned char), cols, outfile);
-void initbuffers(int multi, int comp) {
+void initbuffers(int multi, int comp)
+{
int i;
}
-swaplines()
+void swaplines()
{
pixel *temp;
temp = pscanl0;
cscanline = cscanl0 + components*(LEFTMARGIN-1);
}
-c_swaplines(int i)
+void c_swaplines(int i)
{
pixel *temp;
temp = c_pscanl0[i];
c_cscanline[i] = c_cscanl0[i] + (LEFTMARGIN-1);
}
-void closebuffers(int multi) {
+void closebuffers(int multi)
+{
- int i;
+ int i;
fclose(in);
if (multi==0)
- fclose(out);
- else
- for (i=0;i<components;i++)
- fclose(c_out[i]);
+ fclose(out);
+ else
+ for (i=0;i<components;i++)
+ fclose(c_out[i]);
- free(pscanl0);
- free(cscanl0);
+ free(pscanl0);
+ free(cscanl0);
}
-
-
-int initialize(int argc, char *argv[]) {
- char line[256],tmp_char[1],
- *infilename = NULL,
+/* command line argument parsing */
+int initialize(int argc, char *argv[])
+{
+ char *infilename = NULL,
*outfilename = OUTFILE ".out",
*c_outfilename[MAX_COMPONENTS],
*color_mode_string;
int pos; /* position in the file, after the header */
for (i=0;i<MAX_COMPONENTS;i++) {
- c_outfilename[i]=malloc(strlen(OUTFILE)+20);
+ c_outfilename[i]=(char*)malloc(strlen(OUTFILE)+20);
sprintf(c_outfilename[i],"%s%d.out",OUTFILE,i+1);
}
}
if ((!multi) && (color_mode==PLANE_INT))
+ {
if (components>1) {
fprintf(stderr,"\nERROR: Cannot use -P (PPM output) with plane intereleaved mode\n");
exit(10);
+ }
}
else multi=1;
}
if ((multi) && (out_files) && (out_files!=components)) {
- fprintf(stderr,"ERROR: Number of files, %d%, for output must be equal to number of image components, %d\n",out_files,components);
+ fprintf(stderr,"ERROR: Number of files, %d, for output must be equal to number of image components, %d\n",out_files,components);
exit(10);
}
}
+ /* msgfile seems to start being used here, let's initialize it here */
+ if ( !msgfile ) msgfile = stdout;
/* Open out file */
if ( outfilename == NULL ) {
usage();
int main (int argc, char *argv[]) {
int n,n_c,n_r,my_i,n_s,mk,seek_return;
int found_EOF = 0;
- double t0, t1, get_utime();
+ double t0, t1; /*, get_utime();*/
long pos0, pos1,
tot_in = 0,
tot_out = 0;
pixel *local_scanl0,*local_scanl1,*local_pscanline,*local_cscanline;
int MCUs_counted;
+ local_cscanline = local_pscanline = NULL;
/* Parse the parameters, initialize */
/* Not yet fully implemented */
- bufiinit();
+ bufiinit(NULL);
pos0 = initialize(argc, argv);
t1 = get_utime();
- fprintf(msgfile,"Total bits in: %ld Symbols out: %ld %5.3lf bps\n",
+ fprintf(msgfile,"Total bits in: %ld Symbols out: %ld %5.3f bps\n",
tot_in,tot_out,tot_in/(double)tot_out);
- fprintf(msgfile,"Time = %1.3lf secs : %1.0lf KSymbols/sec\n",t1-t0,
+ fprintf(msgfile,"Time = %1.3f secs : %1.0f KSymbols/sec\n",t1-t0,
(tot_out)/(1024*(t1-t0)));
if ( found_EOF )
-usage()
+void usage()
{
fprintf(stderr,"Usage: %s [flags] [infile] [outfile1 [outfile2, ...]]\n\
-DEFAULTS:\n\
-infile = %s.\n\
-outfile1 = %s for color image in a single (PPM) output file.\n\
-outfile1 = %s for monochrome image in a single (PGM) output file.\n\
-outfile[1,2,...] = %s for multiple (PGM) output files \n\
- in plane or line interleaved modes.\n",
+ DEFAULTS:\n\
+ infile = %s.\n\
+ outfile1 = %s for color image in a single (PPM) output file.\n\
+ outfile1 = %s for monochrome image in a single (PGM) output file.\n\
+ outfile[1,2,...] = %s for multiple (PGM) output files \n\
+ in plane or line interleaved modes.\n",
"locod", "specified JLS file", OUTFILE ".out",
OUTFILE "1.out",
OUTFILE "[1,2,...].out");
-fprintf(stderr,"FLAGS:\n\
-outfile2, ... : Multiple output specification for plane or line int. mode.\n\
--i<infile> : Alternate input specification, use -i- for stdin.\n\
--o<outfile> : Alternate output specification, use -o- for stdout.\n\
--P : Generate single (.ppm) output file for sample/line int. mode.\n\
-");
- fprintf(stderr,"\
--h : Print this help.\n\
-*** No spaces allowed between a flag and its argument.\n\
-");
+ fprintf(stderr,"FLAGS:\n\
+ outfile2, ... : Multiple output specification for plane or line int. mode.\n\
+ -i<infile> : Alternate input specification, use -i- for stdin.\n\
+ -o<outfile> : Alternate output specification, use -o- for stdout.\n\
+ -P : Generate single (.ppm) output file for sample/line int. mode.\n\
+ ");
+ fprintf(stderr,"\
+ -h : Print this help.\n\
+ *** No spaces allowed between a flag and its argument.\n\
+ ");
}
-bad_flag(char *s)
+void bad_flag(char *s)
{
- fprintf(stderr,"Bad flag %s\n",s);
- usage();
- exit(10);
+ fprintf(stderr,"Bad flag %s\n",s);
+ usage();
+ exit(10);
}