annotate netinstall/iniparse.y @ 2951:b694dfd2f40e

[xemacs-hg @ 2005-09-26 08:13:00 by ben] Compile Windows with gmp, ldap, postgresql, db, etc. README: Major rewrite. Document how to compile various optional libs. config.inc.samp: Update to recent versions of optional libs. Add support for gmp, db, postgresql, ldap. Turn on optimization when not debug. minitar.c: Include config.h. xemacs.mak: Figure out VC++ version and use it to set debug and browser flags appropriately. Add support for building gmp, db, postgresql, ldap. Rewrite handling of optional stuff so it is all added to single variables OPT_* rather than to various FOO_* variables. Pass -I$(SRC) to minitar.c so it compiles. Pass module sources, not objects, to make-docfile. Delete more stuff in `make clean'.
author ben
date Mon, 26 Sep 2005 08:13:00 +0000
parents 3078fd1074e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 %{
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 /*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3 * Copyright (c) 2000, Red Hat, Inc.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or modify
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6 * it under the terms of the GNU General Public License as published by
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 * the Free Software Foundation; either version 2 of the License, or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 * (at your option) any later version.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 * A copy of the GNU General Public License can be found at
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 * http://www.gnu.org/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13 * Written by DJ Delorie <dj@cygnus.com>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 /* Parse the setup.ini files. inilex.l provides the tokens for this. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 #include <stdio.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20 #include <stdlib.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21 #include <string.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22 #include "win32.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24 #include "ini.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 #include "iniparse.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27 #include "port.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
28
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 #define YYERROR_VERBOSE 1
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30 /*#define YYDEBUG 1*/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 static Package *cp;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33 static int trust;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34 extern unsigned int setup_timestamp;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35 extern char *setup_version;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36 extern int yylineno;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37 extern int CDECL yyerror (char *s, ...);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39 #define cpt (cp->info+trust)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41 %}
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43 %token STRING
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44 %token SETUP_TIMESTAMP SETUP_VERSION VERSION INSTALL SOURCE SDESC LDESC TYPE
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45 %token T_PREV T_CURR T_TEST T_UNKNOWN
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47 %%
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49 whole_file
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 : setup_headers packages
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 ;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53 setup_headers
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
54 : setup_header setup_headers
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
55 | /* empty */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
56 ;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
57
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
58 setup_header
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
59 : SETUP_TIMESTAMP STRING '\n' { setup_timestamp = strtoul ($2, 0, 0); }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
60 | SETUP_VERSION STRING '\n' { setup_version = strdup ($2); }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
61 | '\n'
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
62 | error { yyerror ("unrecognized line in setup.ini headers (do you have the latest setup?)"); } '\n'
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
63 ;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
64
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
65 packages
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
66 : package packages
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
67 | /* empty */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68 ;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
69
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70 package
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 : '@' STRING '\n' { new_package($2); }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72 lines
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73 ;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75 lines
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
76 : simple_line '\n' lines
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
77 | simple_line
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78 ;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 simple_line
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81 : VERSION STRING { cpt->version = $2; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 | SDESC STRING { cp->sdesc = $2; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 | LDESC STRING { cp->ldesc = $2; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84 | INSTALL STRING STRING { cpt->install = $2;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85 cpt->install_size = atoi($3); }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86 | SOURCE STRING STRING { cpt->source = $2;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87 cpt->source_size = atoi($3); }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
88 | TYPE STRING { if (!strcmp ($2, "cygwin"))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
89 cp->type = TY_CYGWIN;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
90 else if (!strcmp ($2, "native"))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
91 cp->type = TY_NATIVE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
92 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
93 cp->type = TY_GENERIC; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
94 | T_PREV { trust = TRUST_PREV; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
95 | T_CURR { trust = TRUST_CURR; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
96 | T_TEST { trust = TRUST_TEST; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
97 | T_UNKNOWN { trust = TRUST_UNKNOWN; }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
98 | /* empty */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
99 | error '\n' { yylineno --;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
100 yyerror ("unrecognized line in package %s (do you have the latest setup?)", cp->name);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
101 yylineno ++;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
102 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
103 ;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
104
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
105 %%
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
106
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
107 Package *package = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
108 Package *xemacs_package = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
109 int npackages = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
110 static int maxpackages = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
111
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
112 Package *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
113 new_package (char *name)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
114 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
115 if (package == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
116 maxpackages = npackages = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
117 if (npackages >= maxpackages)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
118 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
119 maxpackages += 10;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
120 if (package)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
121 package = (Package *) realloc (package, maxpackages * sizeof (Package));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
122 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
123 package = (Package *) malloc (maxpackages * sizeof (Package));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
124 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
125 cp = package + npackages;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
126 npackages ++;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
127
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
128 memset (cp, 0, sizeof (Package));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
129 cp->name = name;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
130
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
131 trust = TRUST_CURR;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
132
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
133 return cp;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
134 }