|
| 1 | +/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.47 2001/08/24 22:37:36 petere Exp $ */ |
| 2 | + |
1 | 3 | /* New main for ecpg, the PostgreSQL embedded SQL precompiler. */ |
2 | 4 | /* (C) Michael Meskes <meskes@postgresql.org> Feb 5th, 1998 */ |
3 | | -/* Placed under the samecopyright as PostgresSQL */ |
| 5 | +/* Placed under the samelicense as PostgresSQL */ |
4 | 6 |
|
5 | 7 | #include"postgres_fe.h" |
6 | 8 |
|
|
10 | 12 | #include"getopt.h" |
11 | 13 | #endif |
12 | 14 |
|
| 15 | +externintoptind; |
| 16 | +externchar*optarg; |
| 17 | + |
13 | 18 | #include"extern.h" |
14 | 19 |
|
15 | | -intret_value=OK, |
| 20 | +intret_value=0, |
16 | 21 | autocommit=0; |
17 | 22 | struct_include_path*include_paths=NULL; |
18 | 23 | structcursor*cur=NULL; |
19 | 24 | structtypedefs*types=NULL; |
20 | 25 | struct_defines*defines=NULL; |
21 | 26 |
|
22 | 27 | staticvoid |
23 | | -usage(char*progname) |
| 28 | +help(constchar*progname) |
24 | 29 | { |
25 | | -fprintf(stderr,"ecpg - the postgresql preprocessor, version: %d.%d.%d\n",MAJOR_VERSION,MINOR_VERSION,PATCHLEVEL); |
26 | | -fprintf(stderr,"Usage: %s: " |
| 30 | +printf("%s is the PostgreSQL embedded SQL preprocessor for C programs.\n\n", |
| 31 | +progname); |
| 32 | +printf("Usage:\n" |
| 33 | +" %s %s[-I DIRECTORY] [-o OUTFILE] [-t] file1 [file2...]\n\n", |
| 34 | +progname, |
| 35 | +#ifdefYYDEBUG |
| 36 | +"[-d] " |
| 37 | +#else |
| 38 | +"" |
| 39 | +#endif |
| 40 | +); |
| 41 | +printf("Options:\n"); |
27 | 42 | #ifdefYYDEBUG |
28 | | -"[-d]" |
| 43 | +printf(" -d generate parser debug output\n"); |
29 | 44 | #endif |
30 | | -" [-v] [-t] [-I include path] [ -o output file name] [-D define name] file1 [file2] ...\n",progname); |
| 45 | +printf(" -I DIRECTORY search DIRECTORY for include files\n"); |
| 46 | +printf(" -o OUTFILE write result to OUTFILE\n"); |
| 47 | +printf(" -t turn on autocommit of transactions\n"); |
| 48 | +printf("\nIf no output file is specified, the name is formed by adding .c\n" |
| 49 | +"to the input file name, after stripping off .pgc if present.\n"); |
| 50 | +printf("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"); |
31 | 51 | } |
32 | 52 |
|
33 | 53 | staticvoid |
@@ -60,9 +80,27 @@ main(int argc, char *const argv[]) |
60 | 80 | verbose= false, |
61 | 81 | out_option=0; |
62 | 82 | struct_include_path*ip; |
| 83 | +char*progname; |
63 | 84 |
|
64 | | -externintoptind; |
65 | | -externchar*optarg; |
| 85 | +if (!strrchr(argv[0],'/')) |
| 86 | +progname=argv[0]; |
| 87 | +else |
| 88 | +progname=strrchr(argv[0],'/')+1; |
| 89 | + |
| 90 | +if (argc>1) |
| 91 | +{ |
| 92 | +if (strcmp(argv[1],"--help")==0||strcmp(argv[1],"-?")==0) |
| 93 | +{ |
| 94 | +help(progname); |
| 95 | +exit(0); |
| 96 | +} |
| 97 | +elseif (strcmp(argv[1],"--version")==0) |
| 98 | +{ |
| 99 | +printf("ecpg (PostgreSQL %s) %d.%d.%d\n",PG_VERSION, |
| 100 | +MAJOR_VERSION,MINOR_VERSION,PATCHLEVEL); |
| 101 | +exit(0); |
| 102 | +} |
| 103 | +} |
66 | 104 |
|
67 | 105 | add_include_path("/usr/include"); |
68 | 106 | add_include_path(INCLUDE_PATH); |
@@ -90,32 +128,38 @@ main(int argc, char *const argv[]) |
90 | 128 | verbose= true; |
91 | 129 | break; |
92 | 130 | case'D': |
| 131 | +/* XXX not documented */ |
93 | 132 | add_preprocessor_define(optarg); |
94 | 133 | break; |
95 | | -#ifdefYYDEBUG |
96 | 134 | case'd': |
| 135 | +#ifdefYYDEBUG |
97 | 136 | yydebug=1; |
98 | | -break; |
| 137 | +#else |
| 138 | +fprintf(stderr,"%s: parser debug support (-d) not available\n", |
| 139 | +progname); |
99 | 140 | #endif |
| 141 | +break; |
100 | 142 | default: |
101 | | -usage(argv[0]); |
| 143 | +fprintf(stderr,"Try '%s --help' for more information.\n",argv[0]); |
102 | 144 | returnILLEGAL_OPTION; |
103 | 145 | } |
104 | 146 | } |
105 | 147 |
|
106 | 148 | if (verbose) |
107 | 149 | { |
108 | | -fprintf(stderr,"ecpg - the postgresql preprocessor, version: %d.%d.%d\n",MAJOR_VERSION,MINOR_VERSION,PATCHLEVEL); |
| 150 | +fprintf(stderr,"%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n", |
| 151 | +progname,MAJOR_VERSION,MINOR_VERSION,PATCHLEVEL); |
109 | 152 | fprintf(stderr,"exec sql include ... search starts here:\n"); |
110 | 153 | for (ip=include_paths;ip!=NULL;ip=ip->next) |
111 | 154 | fprintf(stderr," %s\n",ip->path); |
112 | | -fprintf(stderr,"End of search list.\n"); |
113 | | -returnOK; |
| 155 | +fprintf(stderr,"end of search list\n"); |
| 156 | +return0; |
114 | 157 | } |
115 | 158 |
|
116 | 159 | if (optind >=argc)/* no files specified */ |
117 | 160 | { |
118 | | -usage(argv[0]); |
| 161 | +fprintf(stderr,"%s: no input files specified\n",progname); |
| 162 | +fprintf(stderr,"Try '%s --help' for more information.\n",argv[0]); |
119 | 163 | return (ILLEGAL_OPTION); |
120 | 164 | } |
121 | 165 | else |
|