1 | /* |
1 | /* |
2 | rewrite.c - Part of psiconv, a PSION 5 file formats converter |
2 | rewrite.c - Part of psiconv, a PSION 5 file formats converter |
3 | Copyright (c) 1999 Frodo Looijaard <frodol@dds.nl> |
3 | Copyright (c) 1999-2014 Frodo Looijaard <frodo@frodo.looijaard.name> |
4 | |
4 | |
5 | This program is free software; you can redistribute it and/or modify |
5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by |
6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or |
7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. |
8 | (at your option) any later version. |
… | |
… | |
17 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
17 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
18 | */ |
18 | */ |
19 | |
19 | |
20 | #include <psiconv/parse.h> |
20 | #include <psiconv/parse.h> |
21 | #include <psiconv/generate.h> |
21 | #include <psiconv/generate.h> |
|
|
22 | #include <psiconv/configuration.h> |
22 | |
23 | |
|
|
24 | #include <stdlib.h> |
23 | #include <stdio.h> |
25 | #include <stdio.h> |
24 | |
26 | |
25 | int main(int argc, char *argv[]) |
27 | int main(int argc, char *argv[]) |
26 | { |
28 | { |
27 | FILE *fp; |
29 | FILE *fp; |
28 | psiconv_buffer buf; |
30 | psiconv_buffer buf; |
29 | psiconv_file psionfile; |
31 | psiconv_file psionfile; |
|
|
32 | psiconv_config config; |
30 | |
33 | |
31 | /* psiconv_verbosity = PSICONV_VERB_DEBUG; */ |
34 | /* psiconv_verbosity = PSICONV_VERB_DEBUG; */ |
32 | |
35 | |
33 | if (argc < 3) { |
36 | if (argc < 3) { |
34 | fprintf(stderr,"Not enough arguments\n"); |
37 | fprintf(stderr,"Not enough arguments\n"); |
|
|
38 | fprintf(stderr,"Syntax: INFILE OUTFILE\n"); |
35 | exit(1); |
39 | exit(1); |
36 | } |
40 | } |
|
|
41 | |
|
|
42 | config = psiconv_config_default(); |
|
|
43 | psiconv_config_read(NULL,&config); |
|
|
44 | |
37 | if (!(fp = fopen(argv[1],"r"))) { |
45 | if (!(fp = fopen(argv[1],"r"))) { |
38 | perror("Can't open file"); |
46 | perror("Can't open file"); |
39 | exit(1); |
47 | exit(1); |
40 | } |
48 | } |
41 | if (!(buf=psiconv_buffer_new())) { |
49 | if (!(buf=psiconv_buffer_new())) { |
… | |
… | |
45 | if ((psiconv_buffer_fread_all(buf,fp))) { |
53 | if ((psiconv_buffer_fread_all(buf,fp))) { |
46 | perror("Can't fread file"); |
54 | perror("Can't fread file"); |
47 | exit(1); |
55 | exit(1); |
48 | } |
56 | } |
49 | fclose(fp); |
57 | fclose(fp); |
50 | if ((psiconv_parse(buf,&psionfile))) { |
58 | if ((psiconv_parse(config,buf,&psionfile))) { |
51 | fprintf(stderr,"Parse error\n"); |
59 | fprintf(stderr,"Parse error\n"); |
52 | exit(1); |
60 | exit(1); |
53 | } |
61 | } |
54 | |
62 | |
55 | psiconv_buffer_free(buf); |
63 | psiconv_buffer_free(buf); |
56 | buf = NULL; |
64 | buf = NULL; |
57 | if (psiconv_write(&buf,psionfile)) { |
65 | if (psiconv_write(config,&buf,psionfile)) { |
58 | fprintf(stderr,"Generate error\n"); |
66 | fprintf(stderr,"Generate error\n"); |
59 | exit(1); |
67 | exit(1); |
60 | } |
68 | } |
61 | psiconv_free_file(psionfile); |
69 | psiconv_free_file(psionfile); |
62 | if (!(fp = fopen(argv[2],"w"))) { |
70 | if (!(fp = fopen(argv[2],"w"))) { |
… | |
… | |
67 | perror("Can't fwrite file"); |
75 | perror("Can't fwrite file"); |
68 | exit(1); |
76 | exit(1); |
69 | } |
77 | } |
70 | fclose(fp); |
78 | fclose(fp); |
71 | psiconv_buffer_free(buf); |
79 | psiconv_buffer_free(buf); |
|
|
80 | psiconv_config_free(config); |
72 | exit(0); |
81 | exit(0); |
73 | } |
82 | } |