295
295
current_file = file_lookup(name);
296
296
current_file->lineno = 1;
297
current_file->flags = FILE_BUSY;
300
299
void zconf_nextfile(const char *name)
302
302
struct file *file = file_lookup(name);
303
303
struct buffer *buf = malloc(sizeof(*buf));
304
304
memset(buf, 0, sizeof(*buf));
314
314
buf->parent = current_buf;
315
315
current_buf = buf;
317
if (file->flags & FILE_BUSY) {
318
printf("%s:%d: do not source '%s' from itself\n",
319
zconf_curname(), zconf_lineno(), name);
322
if (file->flags & FILE_SCANNED) {
323
printf("%s:%d: file '%s' is already sourced from '%s'\n",
324
zconf_curname(), zconf_lineno(), name,
328
file->flags |= FILE_BUSY;
317
for (iter = current_file->parent; iter; iter = iter->parent ) {
318
if (!strcmp(current_file->name,iter->name) ) {
319
printf("%s:%d: recursive inclusion detected. "
320
"Inclusion path:\n current file : '%s'\n",
321
zconf_curname(), zconf_lineno(),
323
iter = current_file->parent;
325
strcmp(iter->name,current_file->name)) {
326
printf(" included from: '%s:%d'\n",
327
iter->name, iter->lineno-1);
331
printf(" included from: '%s:%d'\n",
332
iter->name, iter->lineno+1);
329
336
file->lineno = 1;
330
337
file->parent = current_file;
331
338
current_file = file;