| verzia 1.3, 2002/08/11 20:42:54 |
verzia 1.4, 2002/09/07 12:08:02 |
|
|
| #include <stdlib.h> |
#include <stdlib.h> |
| #include <errno.h> |
#include <errno.h> |
| #include <string.h> |
#include <string.h> |
| |
#include <vga.h> |
| |
#include <vgagl.h> |
| #include <sys/stat.h> |
#include <sys/stat.h> |
| #include <unistd.h> |
#include <unistd.h> |
| #include <fcntl.h> |
#include <fcntl.h> |
| #include <vga.h> |
#include <getopt.h> |
| #include <vgagl.h> |
|
| |
|
| #include "pdf.h" |
#include "pdf.h" |
| |
|
| /* $Id$ */ |
/* $Id$ */ |
| |
static struct option lopt[] = { |
| |
|
| |
{"mode", required_argument, 0, 'm'}, |
| |
{0, 0, 0, 0} |
| |
}; |
| void usage(char *prg) |
void usage(char *prg) |
| { |
{ |
| printf("Usage: %s <pdffile>\n", prg); |
printf("Usage: %s <file> [-mode mode]\n", prg); |
| exit(-1); |
exit(errno); |
| } |
} |
| |
|
| int main(int argc, char **argv) |
int main(int argc, char **argv) |
| { |
{ |
| FILE *fp; |
FILE *fp; |
| char *buffer; |
char *buffer, c; |
| struct stat sbuf; |
struct stat sbuf; |
| |
int mode = G800x600x16M, index = 0; |
| if (argc == 1) |
if (argc == 1) |
| usage(argv[0]); |
usage(argv[0]); |
| if (stat(argv[1], &sbuf) == -1) { |
while ((c = getopt_long(argc - 1, &argv[1], "m:", lopt, &index)) != -1) { |
| fprintf(stderr,"Can't read %s: %s\n", argv[1], strerror(errno)); |
switch (c) { |
| |
case 'm': |
| |
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); |
| } |
} |
| |
} |
| buffer = (char *) malloc(sbuf. st_size); |
if (stat(argv[1], &sbuf) == -1) { |
| if (buffer == NULL) { |
fprintf(stderr, "Can't read %s: %s\n", argv[1], strerror(errno)); |
| /* perror() ze vraj neni prenositelne na Sun alebo Solaris, |
usage(argv[0]); |
| * ze vraj treba pouzivat strerror() |
} |
| * po precitani zmazat tento text |
buffer = (char *) malloc(sbuf.st_size); |
| perror("malloc"); |
if (buffer == NULL) { |
| */ |
fprintf(stderr, "malloc: %s\n", strerror(errno)); |
| fprintf(stderr, "malloc: %s\n", strerror(errno)); |
exit(errno); |
| exit(errno); |
} |
| } |
|
| |
fp = fopen(argv[1], "r"); |
| fp = fopen(argv[1], "r"); |
if (fread(buffer, sbuf.st_size, 1, fp) < 1) { |
| if(fread(buffer, sbuf.st_size, 1, fp) < 1) { |
fprintf(stderr, "Can't read %s: %s\n", argv[1], strerror(errno)); |
| fprintf(stderr, "Can't read %s: %s\n", argv[1], strerror(errno)); |
|
| free(buffer); |
|
| exit(errno); |
|
| } |
|
| |
|
| if(strncmp(buffer, "%PDF-",5) != 0) { |
|
| fprintf(stderr, "%s is not PDF document!\n", argv[1]); |
|
| free(buffer); |
|
| exit(errno); |
|
| } |
|
| fclose(fp); |
fclose(fp); |
| |
exit(errno); |
| vga_init(); |
} |
| vga_setmode(10); |
fclose(fp); |
| gl_setcontextvga(10); |
if (strncmp(buffer, "%PDF-", 5) != 0) { |
| gl_clearscreen(15); |
fprintf(stderr, "%s is not PDF document!\n", argv[1]); |
| |
exit(errno); |
| |
} |
| |
#ifdef DEBUG |
| |
printf("Using %s mode\n", vga_getmodename(mode)); |
| |
#endif |
| |
vga_init(); |
| |
vga_setmode(mode); |
| |
gl_setcontextvga(mode); |
| |
gl_clearscreen(2147483647); |
| /* parse_pdf(buffer); */ |
/* parse_pdf(buffer); */ |
| getchar(); |
getchar(); |
| vga_setmode(TEXT); |
vga_setmode(TEXT); |
| free(buffer); |
free(buffer); |
| |
exit(0); |
| return 0; |
|
| } |
} |
| |
|