bmepsm.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 680 行 · 第 1/2 页
C
680 行
digstate += 1;
} break;
}
ptr++;
}
}
} break;
case 'e': {
ptr++;
if(!(*ptr)) {
lfdptr++; i++;
if(i < argc) {
ptr = *lfdptr;
}
}
if(*ptr) {
enc_a85 = enc_fl = enc_rl = 0;
while(*ptr) {
switch(*ptr) {
case '8': enc_a85 = 1; break;
case 'f': enc_fl = 1; break;
case 'r': enc_rl = 1; break;
}
ptr++;
}
}
} break;
case 'v': {
show_version = 1;
} break;
case 'h': {
show_usage = 1;
} break;
case 's': {
show_dsc = 1;
} break;
case 'd': {
is_draft = 1;
} break;
case 'b': {
bbonly = 1;
} break;
case 't': {
ptr++;
if(!(*ptr)) {
lfdptr++; i++;
if(i < argc) {
ptr = *lfdptr;
}
}
if(*ptr) {
if(strcmp(ptr, "bmp") == 0) {
dummy_filename = dummy_bmp;
}
#if HAVE_PNG_H
if(strcmp(ptr, "png") == 0) {
dummy_filename = dummy_png;
}
#endif
#if HAVE_JPEGLIB_H
if(strcmp(ptr, "jpg") == 0) {
dummy_filename = dummy_jpg;
}
if(strcmp(ptr, "jpeg") == 0) {
dummy_filename = dummy_jpg;
}
#endif
#if HAVE_PNM_H
if(strcmp(ptr, "pnm") == 0) {
dummy_filename = dummy_pnm;
}
#endif
#if HAVE_TIFF_H
if(strcmp(ptr, "tif") == 0) {
dummy_filename = dummy_tif;
}
if(strcmp(ptr, "tiff") == 0) {
dummy_filename = dummy_tif;
}
#endif
}
} break;
case '-': { /* Long option */
size_t lgt, lgt1;
int done;
char str_version[] = { "version" };
char str_help[] = { "help" };
char str_pslevel[] = { "pslevel=" };
char str_colored[] = { "color" };
char str_grayscale[] = { "grayscale" };
char str_encoding[] = { "encoding=" };
char str_draft[] = { "draft" };
char str_bb[] = { "boundingbox" };
char str_ft[] = { "filetype=" };
char str_alpho[] = { "alpha=" };
char str_alpha[] = { "alpha" };
ptr++; done = 0;
lgt = strlen(ptr);
lgt1 = strlen(str_version);
if(lgt >= lgt1) {
if(strncmp(ptr, str_version, lgt1) == 0) {
done = 1;
show_version = 1;
}
}
if(!done) {
lgt1 = strlen(str_alpho);
if(lgt >= lgt1) {
if(strncmp(ptr, str_alpho, lgt1) == 0) {
alpha = done = 1;
ptr = &(ptr[lgt1]);
while(*ptr) {
switch(*ptr) {
case 'o': trans = 0 ; break;
case 't': trans = 1 ; break;
case 'l': altrig = 1; break;
}
ptr++;
}
}
}
}
if(!done) {
lgt1 = strlen(str_alpha);
if(lgt >= lgt1) {
if(strncmp(ptr, str_alpho, lgt1) == 0) {
alpha = 1; done = 1;
}
}
}
if(!done) {
lgt1 = strlen(str_help);
if(lgt >= lgt1) {
if(strncmp(ptr, str_help, lgt1) == 0) {
done = 1;
show_usage = 1;
}
}
}
if(!done) {
lgt1 = strlen(str_pslevel);
if(lgt >= lgt1) {
if(strncmp(ptr, str_help, lgt1) == 0) {
ptr = &(ptr[lgt1]);
done = 1;
switch(*ptr) {
case '1': pslevel = 1; break;
case '2': pslevel = 2; break;
case '3': pslevel = 3; break;
}
}
}
}
if(!done) {
lgt1 = strlen(str_colored);
if(lgt >= lgt1) {
if(strncmp(ptr, str_colored, lgt1) == 0) {
done = 1;
colored = 1;
}
}
}
if(!done) {
lgt1 = strlen(str_grayscale);
if(lgt >= lgt1) {
if(strncmp(ptr, str_grayscale, lgt1) == 0) {
done = 1; colored = 0;
}
}
}
if(!done) {
lgt1 = strlen(str_encoding);
if(lgt >= lgt1) {
if(strncmp(ptr, str_encoding, lgt1) == 0) {
done = 1;
ptr = &(ptr[lgt1]);
enc_a85 = enc_fl = enc_rl = 0;
while(*ptr) {
switch(*ptr) {
case '8': enc_a85 = 1 ; break;
case 'r': enc_rl = 1 ; break;
case 'f': enc_fl = 1 ; break;
}
ptr++;
}
}
}
}
if(!done) {
lgt1 = strlen(str_draft);
if(lgt >= lgt1) {
if(strncmp(ptr, str_draft, lgt1) == 0) {
done = is_draft = 1;
}
}
}
if(!done) {
lgt1 = strlen(str_bb);
if(lgt >= lgt1) {
if(strncmp(ptr, str_bb, lgt1) == 0) {
done = bbonly = 1;
}
}
}
if(!done) {
lgt1 = strlen(str_ft);
if(lgt >= lgt1) {
if(strncmp(ptr, str_ft, lgt1) == 0) {
done = 1;
ptr = &(ptr[lgt1]);
#if HAVE_PNG_H
if(strcmp(ptr, "png") == 0) {
dummy_filename = dummy_png;
}
#endif
#if HAVE_JPEGLIB_H
if(strcmp(ptr, "jpg") == 0) {
dummy_filename = dummy_jpg;
}
if(strcmp(ptr, "jpeg") == 0) {
dummy_filename = dummy_jpg;
}
#endif
}
}
}
} break;
}
} else {
if(inname) {
if(!outname) {
outname = ptr;
} else {
show_usage = 1;
}
} else {
inname = ptr;
}
}
lfdptr++; i++;
}
}
/*
Configure bmeps module
*/
bmeps_setup(
pslevel, colored, enc_a85, enc_rl, enc_fl,
alpha, trans, altrig,
mix, specbg, bg_red, bg_green, bg_blue, show_dsc
);
bmeps_set_draft(is_draft);
/*
Start work
*/
if(show_version || show_usage) {
if(show_version) {
print_version();
}
if(show_usage) {
print_usage();
}
} else {
if(inname) {
FILE *infile;
infile = fopen(inname, "rb");
if(infile) {
if(outname) {
FILE *outfile;
outfile = fopen(outname, "w");
if(outfile) {
if(bbonly) { exval = bmeps_run_bb(outfile, infile, inname); }
else { exval = bmeps_run(outfile, infile, inname); }
fclose(outfile);
} else {
fprintf(stderr,
"%s ERROR - Failed to write to file %s\n",
progname, outname
);
}
} else {
if(bbonly) { exval = bmeps_run_bb(stdout, infile, inname); }
else { exval = bmeps_run(stdout, infile, inname); }
}
fclose(infile);
} else {
fprintf(stderr,
"%s ERROR - Failed to read from file %s\n",
progname, inname
);
}
} else {
if(dummy_filename) {
int m, f, r;
m = f = 0;
/*
Get the file descriptor number
*/
f = fileno(stdin);
/*
Set the mode type.
*/
m = O_BINARY;
/*
Change mode type for file descriptor.
*/
r = setmode(f,m);
if(r == -1) {
fprintf(stderr, "setmode(): Failed to establish binary mode for stdin!\n");
}
#if DEBUG
else {
fprintf(stderr, "setmode(): Binary mode established.\n");
}
#endif
/*
Now the descriptor is set up if necessary.
*/
if(bbonly) { exval = bmeps_run_bb(stdout, stdin, dummy_filename); }
else { exval = bmeps_run(stdout, stdin, dummy_filename); }
} else {
fprintf(stderr,
"%s ERROR - Need a file type when processing standard input\n",
progname
);
}
}
}
/*
Exit program
*/
exval = (exval ? 0 : 1);
exit(exval); return exval;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?