PPM header parser improved: now able to skip comments.
This commit is contained in:
parent
d7adbd23df
commit
ac3f89b460
@ -1,4 +1,4 @@
|
|||||||
/* $Header: /cvs/maptools/cvsroot/libtiff/tools/ppm2tiff.c,v 1.5 2003-03-12 14:05:06 dron Exp $ */
|
/* $Header: /cvs/maptools/cvsroot/libtiff/tools/ppm2tiff.c,v 1.6 2003-05-05 10:40:04 dron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1991-1997 Sam Leffler
|
* Copyright (c) 1991-1997 Sam Leffler
|
||||||
@ -74,6 +74,10 @@ main(int argc, char* argv[])
|
|||||||
extern int optind;
|
extern int optind;
|
||||||
extern char* optarg;
|
extern char* optarg;
|
||||||
|
|
||||||
|
if ( argc < 2 ) {
|
||||||
|
fprintf(stderr, "%s: Too few arguments\n", argv[0]);
|
||||||
|
usage();
|
||||||
|
}
|
||||||
while ((c = getopt(argc, argv, "c:r:R:")) != -1)
|
while ((c = getopt(argc, argv, "c:r:R:")) != -1)
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'c': /* compression scheme */
|
case 'c': /* compression scheme */
|
||||||
@ -112,9 +116,9 @@ main(int argc, char* argv[])
|
|||||||
in = stdin;
|
in = stdin;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getc(in) != 'P')
|
if (fgetc(in) != 'P')
|
||||||
BadPPM(infile);
|
BadPPM(infile);
|
||||||
switch (getc(in)) {
|
switch (fgetc(in)) {
|
||||||
case '5': /* it's a PGM file */
|
case '5': /* it's a PGM file */
|
||||||
spp = 1;
|
spp = 1;
|
||||||
photometric = PHOTOMETRIC_MINISBLACK;
|
photometric = PHOTOMETRIC_MINISBLACK;
|
||||||
@ -129,9 +133,30 @@ main(int argc, char* argv[])
|
|||||||
default:
|
default:
|
||||||
BadPPM(infile);
|
BadPPM(infile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Parse header */
|
||||||
|
while(1) {
|
||||||
|
if (feof(in))
|
||||||
|
BadPPM(infile);
|
||||||
|
c = fgetc(in);
|
||||||
|
/* Skip whitespaces (blanks, TABs, CRs, LFs) */
|
||||||
|
if (strchr(" \t\r\n", c))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Check fo comment line */
|
||||||
|
if (c == '#') {
|
||||||
|
do {
|
||||||
|
c = fgetc(in);
|
||||||
|
} while(!strchr("\r\n", c) || feof(in));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ungetc(c, in);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (fscanf(in, " %ld %ld %d", &w, &h, &prec) != 3)
|
if (fscanf(in, " %ld %ld %d", &w, &h, &prec) != 3)
|
||||||
BadPPM(infile);
|
BadPPM(infile);
|
||||||
if (getc(in) != '\n' || w <= 0 || h <= 0 || prec != 255)
|
if (fgetc(in) != '\n' || w <= 0 || h <= 0 || prec != 255)
|
||||||
BadPPM(infile);
|
BadPPM(infile);
|
||||||
|
|
||||||
out = TIFFOpen(argv[optind], "w");
|
out = TIFFOpen(argv[optind], "w");
|
||||||
@ -220,9 +245,8 @@ char* stuff[] = {
|
|||||||
"",
|
"",
|
||||||
" -c jpeg[:opts] compress output with JPEG encoding",
|
" -c jpeg[:opts] compress output with JPEG encoding",
|
||||||
" -c lzw[:opts] compress output with Lempel-Ziv & Welch encoding",
|
" -c lzw[:opts] compress output with Lempel-Ziv & Welch encoding",
|
||||||
" (no longer supported by default due to Unisys patent enforcement)",
|
|
||||||
" -c zip[:opts] compress output with deflate encoding",
|
" -c zip[:opts] compress output with deflate encoding",
|
||||||
" -c packbits compress output with packbits encoding",
|
" -c packbits compress output with packbits encoding (the default)",
|
||||||
" -c none use no compression algorithm on output",
|
" -c none use no compression algorithm on output",
|
||||||
"",
|
"",
|
||||||
"JPEG options:",
|
"JPEG options:",
|
||||||
|
Loading…
Reference in New Issue
Block a user