… | |
… | |
173 | */ |
173 | */ |
174 | void |
174 | void |
175 | init_formulae () |
175 | init_formulae () |
176 | { |
176 | { |
177 | static int has_been_done = 0; |
177 | static int has_been_done = 0; |
178 | FILE *fp; |
178 | char *next; |
179 | char filename[MAX_BUF], buf[MAX_BUF], *cp, *next; |
|
|
180 | recipelist *fl = init_recipelist (); |
179 | recipelist *fl = init_recipelist (); |
181 | linked_char *tmp; |
180 | linked_char *tmp; |
182 | int value, comp; |
|
|
183 | |
181 | |
184 | if (!formulalist) |
182 | if (!formulalist) |
185 | formulalist = fl; |
183 | formulalist = fl; |
186 | |
184 | |
187 | if (has_been_done) |
185 | if (has_been_done) |
188 | return; |
186 | return; |
189 | else |
187 | else |
190 | has_been_done = 1; |
188 | has_been_done = 1; |
191 | |
189 | |
192 | sprintf (filename, "%s/formulae", settings.datadir); |
190 | object_thawer thawer (settings.datadir, "formulae"); |
193 | LOG (llevDebug, "Reading alchemical formulae from %s...\n", filename); |
|
|
194 | |
|
|
195 | object_thawer thawer (filename); |
|
|
196 | |
191 | |
197 | if (!thawer) |
192 | if (!thawer) |
198 | { |
193 | { |
199 | LOG (llevError, "Can't open %s.\n", filename); |
194 | LOG (llevError, "Can't open %s.\n", thawer.name); |
200 | return; |
195 | return; |
201 | } |
196 | } |
202 | |
197 | |
203 | while (thawer.kw) |
198 | while (thawer.kw) |
204 | { |
199 | { |
… | |
… | |
276 | } |
271 | } |
277 | break; |
272 | break; |
278 | |
273 | |
279 | default: |
274 | default: |
280 | delete formula; |
275 | delete formula; |
|
|
276 | case KW_EOF: |
281 | case KW_object: |
277 | case KW_object: |
282 | goto next_object; |
278 | goto next_object; |
283 | } |
279 | } |
284 | } |
280 | } |
285 | |
281 | |
286 | next_object: ; |
282 | next_object: ; |
287 | } |
283 | } |
288 | |
284 | |
289 | LOG (llevDebug, "done.\n"); |
|
|
290 | /* Lastly, lets check for problems in formula we got */ |
285 | /* Lastly, lets check for problems in formula we got */ |
291 | check_formulae (); |
286 | check_formulae (); |
292 | } |
287 | } |
293 | |
288 | |
294 | /* Find a treasure with a matching name. The 'depth' parameter is |
289 | /* Find a treasure with a matching name. The 'depth' parameter is |