extern int demand_check(void);
extern int demandupdatecheck(void);
/* xundump.c */
-extern int xundump(FILE *, char *, int);
+extern int xundump(FILE *, char *, int *, int);
/*
* src/lib/gen/ *.c
{
struct empfile *ep;
FILE *fp;
- int res;
+ int lineno, res;
/*
* Need to read config files for tables referenced through
ep->file, strerror(errno));
return -1;
}
- res = xundump(fp, ep->file, ep->uid);
+ lineno = 1;
+ res = xundump(fp, ep->file, &lineno, ep->uid);
if (res >= 0 && getc(fp) != EOF) {
fprintf(stderr, "%s: Junk after the table\n",
ep->file);
static int
read_custom_table_file(char *fname)
{
- int res, n;
+ int lineno, res, n;
FILE *fp;
if (!(fp = fopen(fname, "r"))) {
return -1;
}
- for (n = 0; (res = xundump(fp, fname, EF_BAD)) >= 0; n++)
+ lineno = 1;
+ for (n = 0; (res = xundump(fp, fname, &lineno, EF_BAD)) >= 0; n++)
empfile[res].flags |= EFF_CUSTOM;
if (res != EF_BAD && n == 0)
fprintf(stderr, "Warning: configuration file %s is empty\n", fname);
*
* Known contributors to this file:
* Ron Koenderink, 2005
- * Markus Armbruster, 2005-2006
+ * Markus Armbruster, 2005-2007
*/
/*
}
int
-xundump(FILE *fp, char *file, int expected_table)
+xundump(FILE *fp, char *file, int *plno, int expected_table)
{
struct castr *ca;
int type, nca, nf, i, ch;
- if (fname != file) {
- fname = file;
- lineno = 1;
- }
+ fname = file;
+ lineno = *plno;
if ((type = xuheader(fp, expected_table)) < 0)
return type;
lineno++;
ungetc(ch, fp);
+ *plno = lineno;
return type;
}