]> git.ipfire.org Git - ipfire-2.x.git/blame - src/hwinfo/src/isdn/cdb/isdn_cdb.c
Signierten GPG-Schluessel importiert.
[ipfire-2.x.git] / src / hwinfo / src / isdn / cdb / isdn_cdb.c
CommitLineData
93afd047
MT
1#include <stdio.h>
2#include <stdlib.h>
3#include <malloc.h>
4#include <string.h>
5#include <time.h>
6#include "lex.yy.c"
7#include "hd.h"
8#include "cdb_read.h"
9
10int yywrap(void) {
11 return(1);
12}
13
14static int WriteVendors(FILE *f) {
15 int i;
16
17 fprintf(f, "/* vendor database */\n");
18 fprintf(f,"static cdb_isdn_vendor cdb_isdnvendor_info_init[] = {\n");
19 for (i=0; i < ivendor_idx; i++) {
20 fprintf(f," {");
21 if (vendors[i].name)
22 fprintf(f,"\"%s\",", vendors[i].name);
23 else
24 fprintf(f,"\"\",");
25 if (vendors[i].shortname)
26 fprintf(f,"\"%s\",", vendors[i].shortname);
27 else
28 fprintf(f,"\"\",");
29 fprintf(f,"%d,",vendors[i].vnr);
30 fprintf(f,"%d",vendors[i].refcnt);
31 fprintf(f,"},\n");
32 }
33 fprintf(f,"};\n");
34 return(0);
35}
36
37static int WriteCards(FILE *f) {
38 int i;
39
40 fprintf(f, "/* card database */\n");
41 fprintf(f,"static cdb_isdn_card cdb_isdncard_info_init[] = {\n");
42 for (i=0; i <= ce_idx; i++) {
43 fprintf(f," {");
44 fprintf(f,"%d,",cards[i].handle);
45 fprintf(f,"%d,",cards[i].vhandle);
46 if (cards[i].name)
47 fprintf(f,"\"%s\",", cards[i].name);
48 else
49 fprintf(f,"\"\",");
50 if (cards[i].lname)
51 fprintf(f,"\"%s\",", cards[i].lname);
52 else
53 fprintf(f,"\"\",");
54 if (cards[i].Class)
55 fprintf(f,"\"%s\",",cards[i].Class);
56 else
57 fprintf(f,"NULL,");
58 if (cards[i].bus)
59 fprintf(f,"\"%s\",",cards[i].bus);
60 else
61 fprintf(f,"NULL,");
62 fprintf(f,"%d,",cards[i].revision);
63 fprintf(f,"%d,",cards[i].vendor);
64 fprintf(f,"%d,",cards[i].device);
65 fprintf(f,"%d,",cards[i].subvendor);
66 fprintf(f,"%d,",cards[i].subdevice);
67 fprintf(f,"%d,",cards[i].features);
68 fprintf(f,"%d,",cards[i].line_cnt);
69 fprintf(f,"%d,",cards[i].vario_cnt);
70 fprintf(f,"%d",cards[i].vario);
71 fprintf(f,"},\n");
72 }
73 fprintf(f,"};\n");
74 fprintf(f,"static int cdb_isdncard_idsorted_init[] = {");
75 for (i=0; i < ce_idx; i++) {
76 if (!(i%8))
77 fprintf(f,"\n ");
78 fprintf(f,"%d,",isdncard_id[i]);
79 }
80 fprintf(f,"\n};\n");
81 return(0);
82}
83
84static int WriteVarios(FILE *f) {
85 int i;
86
87 fprintf(f, "/* driver database */\n");
88 fprintf(f,"static cdb_isdn_vario cdb_isdnvario_info_init[] = {\n");
89 for (i=0; i <= vario_idx; i++) {
90 fprintf(f," {");
91 fprintf(f,"%d,",varios[i].handle);
92 fprintf(f,"%d,",varios[i].next_vario);
93 fprintf(f,"%d,",varios[i].drvid);
94 fprintf(f,"%d,",varios[i].typ);
95 fprintf(f,"%d,",varios[i].subtyp);
96 fprintf(f,"%d,",varios[i].smp);
97 if (varios[i].mod_name)
98 fprintf(f,"\"%s\",", varios[i].mod_name);
99 else
100 fprintf(f,"\"\",");
101 if (varios[i].para_str)
102 fprintf(f,"\"%s\",", varios[i].para_str);
103 else
104 fprintf(f,"\"\",");
105 if (varios[i].mod_preload)
106 fprintf(f,"\"%s\",", varios[i].mod_preload);
107 else
108 fprintf(f,"\"\",");
109 if (varios[i].cfg_prog)
110 fprintf(f,"\"%s\",", varios[i].cfg_prog);
111 else
112 fprintf(f,"\"\",");
113 if (varios[i].firmware)
114 fprintf(f,"\"%s\",", varios[i].firmware);
115 else
116 fprintf(f,"\"\",");
117 if (varios[i].description)
118 fprintf(f,"\"%s\",", varios[i].description);
119 else
120 fprintf(f,"\"\",");
121 if (varios[i].need_pkg)
122 fprintf(f,"\"%s\",", varios[i].need_pkg);
123 else
124 fprintf(f,"\"\",");
125 if (varios[i].info)
126 fprintf(f,"\"%s\",", varios[i].info);
127 else
128 fprintf(f,"\"\",");
129 if (varios[i].protocol)
130 fprintf(f,"\"%s\",", varios[i].protocol);
131 else
132 fprintf(f,"\"\",");
133 if (varios[i].interface)
134 fprintf(f,"\"%s\",", varios[i].interface);
135 else
136 fprintf(f,"\"\",");
137 if (varios[i].io)
138 fprintf(f,"\"%s\",", varios[i].io);
139 else
140 fprintf(f,"\"\",");
141 if (varios[i].irq)
142 fprintf(f,"\"%s\",", varios[i].irq);
143 else
144 fprintf(f,"\"\",");
145 if (varios[i].membase)
146 fprintf(f,"\"%s\",", varios[i].membase);
147 else
148 fprintf(f,"\"\",");
149 if (varios[i].features)
150 fprintf(f,"\"%s\",", varios[i].features);
151 else
152 fprintf(f,"\"\",");
153 fprintf(f,"%d,",varios[i].card_ref);
154 if (varios[i].name)
155 fprintf(f,"\"%s\"", varios[i].name);
156 else
157 fprintf(f,"\"\"");
158 fprintf(f,"},\n");
159 }
160 fprintf(f,"};\n");
161 return(0);
162}
163
164int main(argc,argv)
165int argc;
166char **argv;
167{
168 char line[256];
169 int l;
170 time_t tim;
171 if (argc<2) {
172 fprintf(stderr, "Error no filename\n");
173 exit(1);
174 }
175 if (!(stdin=freopen(argv[1],"rb", stdin))) {
176 fprintf(stderr, "Cannot open %s as stdin\n", argv[1]);
177 exit(2);
178 }
179 if (argc >2) {
180 if (!(stdout=freopen(argv[2],"w", stdout))) {
181 fprintf(stderr, "Cannot open %s as stdout\n", argv[2]);
182 exit(3);
183 }
184 }
185 cards = calloc(max_ce, sizeof(cdb_isdn_card));
186 if (!cards) {
187 fprintf(stderr, "cannot alloc card\n");
188 fclose(stdin);
189 exit(4);
190 }
191 varios = calloc(max_vario, sizeof(cdb_isdn_vario));
192 if (!varios) {
193 fprintf(stderr, "cannot alloc vario\n");
194 fclose(stdin);
195 free(cards);
196 exit(5);
197 }
198 name_str = calloc(max_name_str_cnt, 1);
199 if (!name_str) {
200 fprintf(stderr, "cannot alloc name_str\n");
201 fclose(stdin);
202 free(cards);
203 free(varios);
204 exit(6);
205 }
206 vendors = calloc(max_ivendor, sizeof(cdb_isdn_vendor));
207 if (!vendors) {
208 fprintf(stderr, "cannot alloc vendors\n");
209 fclose(stdin);
210 free(cards);
211 free(varios);
212 free(name_str);
213 exit(7);
214 }
215 BEGIN Main;
216 yylex();
217
218 SortVendors();
219 SortCards();
220 SortVarios();
221
222 fprintf(stdout, "/* CDBISDN database */\n");
223 fprintf(stdout,"const int CDBISDN_DBVERSION = 0x%x;\n", CDB_DATAVERSION);
224 time(&tim);
225 strcpy(line,ctime(&tim));
226 l = strlen(line);
227 if (l)
228 line[l-1] = 0;
229 fprintf(stdout,"const char CDBISDN_DATE[] = \"%s\";\n", line);
230 WriteVendors(stdout);
231 WriteCards(stdout);
232 WriteVarios(stdout);
233
234 fclose(stdin);
235 free(cards);
236 free(name_str);
237 free(vendors);
238 free(varios);
239 fprintf(stderr, "used cards(%d/%d)\n", ce_idx, max_ce);
240 fprintf(stderr, "used varios(%d/%d)\n", vario_idx, max_vario);
241 fprintf(stderr, "used vendors(%d/%d)\n", ivendor_idx, max_ivendor);
242 fprintf(stderr, "used name_str(%d/%d)\n",name_str_cnt, max_name_str_cnt);
243 return(0);
244}