| verzia 1.4, 2002/09/07 12:08:02 |
verzia 1.5, 2002/10/03 18:24:26 |
|
|
| #include <string.h> |
#include <string.h> |
| #include <vga.h> |
#include <vga.h> |
| #include <vgagl.h> |
#include <vgagl.h> |
| #include <sys/stat.h> |
|
| #include <unistd.h> |
#include <unistd.h> |
| #include <fcntl.h> |
#include <fcntl.h> |
| #include <getopt.h> |
#include <getopt.h> |
| |
|
| #include "pdf.h" |
#include "parse.h" |
| |
#include "cpdf.h" |
| |
|
| /* $Id$ */ |
/* $Id$ */ |
| static struct option lopt[] = { |
static struct option lopt[] = { |
| |
|
| {"mode", required_argument, 0, 'm'}, |
{"mode", required_argument, 0, 'm'}, |
| {0, 0, 0, 0} |
{0, 0, 0, 0} |
| }; |
}; |
| void usage(char *prg) |
void usage(char *prg) |
| { |
{ |
| printf("Usage: %s <file> [-mode mode]\n", prg); |
printf("Usage: %s <file> [-mode mode]\n", prg); |
| exit(errno); |
exit(errno); |
| } |
} |
| |
|
| int main(int argc, char **argv) |
int main(int argc, char **argv) |
| { |
{ |
| FILE *fp; |
char c; |
| char *buffer, c; |
int mode = G800x600x16M, index = 0; |
| struct stat sbuf; |
if (argc == 1) |
| int mode = G800x600x16M, index = 0; |
|
| if (argc == 1) |
|
| usage(argv[0]); |
|
| while ((c = getopt_long(argc - 1, &argv[1], "m:", lopt, &index)) != -1) { |
|
| switch (c) { |
|
| case 'm': |
|
| if (argv[optind + 1] == NULL) |
|
| usage(argv[0]); |
usage(argv[0]); |
| if ((mode = vga_getmodenumber(argv[optind + 1])) == -1) { |
while ((c = |
| fprintf(stderr, "Unsupported mode %s! Using default.\n", |
getopt_long(argc - 1, &argv[1], "m:", lopt, |
| argv[optind + 1]); |
&index)) != -1) { |
| if ((mode = vga_getdefaultmode()) == -1) { |
switch (c) { |
| fprintf(stderr, |
case 'm': |
| "SVGALIB_DEFAULT_MODE variable is empty!\n"); |
if (argv[optind + 1] == NULL) |
| usage(argv[0]); |
usage(argv[0]); |
| |
if ((mode = |
| |
vga_getmodenumber(argv[optind + 1])) == -1) { |
| |
fprintf(stderr, |
| |
"Unsupported mode %s! Using default.\n", |
| |
argv[optind + 1]); |
| |
if ((mode = vga_getdefaultmode()) == -1) { |
| |
fprintf(stderr, |
| |
"SVGALIB_DEFAULT_MODE variable is empty!\n"); |
| |
usage(argv[0]); |
| |
} |
| |
} |
| |
break; |
| |
default: |
| |
fprintf(stderr, "%s", strerror(errno)); |
| |
exit(errno); |
| |
} |
| |
} |
| |
if ((fp = fopen(argv[1], "r")) == NULL) { |
| |
fprintf(stderr, "Can't open %s: %s\n", argv[1], |
| |
strerror(errno)); |
| |
exit(errno); |
| |
} |
| |
{ |
| |
char ispdf[5]; |
| |
fread((char *) &ispdf, 5, 1, fp); |
| |
if (strncmp((char *) &ispdf, "%PDF-", 5) != 0) { |
| |
fprintf(stderr, "%s is not PDF document!\n", |
| |
argv[1]); |
| |
exit(errno); |
| } |
} |
| } |
|
| break; |
|
| default: |
|
| fprintf(stderr, "%s", strerror(errno)); |
|
| exit(errno); |
|
| } |
} |
| } |
|
| if (stat(argv[1], &sbuf) == -1) { |
|
| fprintf(stderr, "Can't read %s: %s\n", argv[1], strerror(errno)); |
|
| usage(argv[0]); |
|
| } |
|
| buffer = (char *) malloc(sbuf.st_size); |
|
| if (buffer == NULL) { |
|
| fprintf(stderr, "malloc: %s\n", strerror(errno)); |
|
| exit(errno); |
|
| } |
|
| |
|
| fp = fopen(argv[1], "r"); |
|
| if (fread(buffer, sbuf.st_size, 1, fp) < 1) { |
|
| fprintf(stderr, "Can't read %s: %s\n", argv[1], strerror(errno)); |
|
| fclose(fp); |
|
| exit(errno); |
|
| } |
|
| fclose(fp); |
|
| if (strncmp(buffer, "%PDF-", 5) != 0) { |
|
| fprintf(stderr, "%s is not PDF document!\n", argv[1]); |
|
| exit(errno); |
|
| } |
|
| #ifdef DEBUG |
#ifdef DEBUG |
| printf("Using %s mode\n", vga_getmodename(mode)); |
printf("Using %s mode\n", vga_getmodename(mode)); |
| #endif |
#endif |
| vga_init(); |
/* vga_init(); |
| vga_setmode(mode); |
vga_setmode(mode); |
| gl_setcontextvga(mode); |
gl_setcontextvga(mode);*/ |
| gl_clearscreen(2147483647); |
parse_pdf(); |
| /* parse_pdf(buffer); */ |
/* getchar(); |
| getchar(); |
vga_setmode(TEXT);*/ |
| vga_setmode(TEXT); |
fclose(fp); |
| free(buffer); |
exit(0); |
| exit(0); |
|
| } |
} |