aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-05-12 00:03:51 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-05-12 00:03:51 +0300
commitf8ca129aaf4876dfa9778c34ed5bd8a669ca22e8 (patch)
tree9364824e2bc04d62c14a9f539e6b258131e437ad /src
parent3e5d6e9683d5d3efa3a82556d0f73892d674ed71 (diff)
downloadgrecs-f8ca129aaf4876dfa9778c34ed5bd8a669ca22e8.tar.gz
grecs-f8ca129aaf4876dfa9778c34ed5bd8a669ca22e8.tar.bz2
Bugfixes.
Diffstat (limited to 'src')
-rw-r--r--src/grecs.h2
-rw-r--r--src/preproc.c9
2 files changed, 7 insertions, 4 deletions
diff --git a/src/grecs.h b/src/grecs.h
index 40ade87..b2ef734 100644
--- a/src/grecs.h
+++ b/src/grecs.h
@@ -274,24 +274,26 @@ void grecs_format_value(struct grecs_value *val, int flags, FILE *fp);
#define GRECS_NODE_FLAG_DEFAULT \
(GRECS_NODE_FLAG_PATH|GRECS_NODE_FLAG_VALUE|GRECS_NODE_FLAG_QUOTE)
void grecs_format_node(struct grecs_node *node, int flags, FILE *fp);
struct grecs_list *grecs_list_create(void);
size_t grecs_list_size(struct grecs_list *lp);
void grecs_list_append(struct grecs_list *lp, void *val);
void grecs_list_push(struct grecs_list *lp, void *val);
void *grecs_list_pop(struct grecs_list *lp);
void *grecs_list_locate(struct grecs_list *lp, void *data);
void *grecs_list_index(struct grecs_list *lp, size_t idx);
void *grecs_list_remove_tail(struct grecs_list *lp);
+void grecs_list_remove_entry(struct grecs_list *lp,
+ struct grecs_list_entry *ent);
void grecs_list_clear(struct grecs_list *lp);
void grecs_list_free(struct grecs_list *lp);
void grecs_list_add(struct grecs_list *dst, struct grecs_list *src);
int grecs_vasprintf(char **pbuf, size_t *psize, const char *fmt, va_list ap);
int grecs_asprintf(char **pbuf, size_t *psize, const char *fmt, ...);
struct grecs_symtab;
struct grecs_syment {
char *name;
};
diff --git a/src/preproc.c b/src/preproc.c
index cff8224..cd83e2f 100644
--- a/src/preproc.c
+++ b/src/preproc.c
@@ -407,25 +407,26 @@ push_source(const char *name, int once)
return 1;
}
} else if (rc) {
grecs_error(NULL, errno, _("Cannot stat `%s'"), name);
return 1;
}
if (once && source_lookup(&st))
return -1;
fp = fopen(name, "r");
if (!fp) {
- grecs_error(&LOCUS, errno, _("Cannot open `%s'"), name);
+ grecs_error(context_stack ? &LOCUS : NULL, errno,
+ _("Cannot open `%s'"), name);
return 1;
}
/* Push current context */
ctx = grecs_malloc(sizeof(*ctx));
ctx->locus.file = grecs_install_text(name);
ctx->locus.line = 1;
ctx->xlines = 0;
ctx->namelen = strlen(ctx->locus.file);
ctx->id.i_node = st.st_ino;
ctx->id.device = st.st_dev;
ctx->infile = fp;
@@ -448,33 +449,33 @@ pop_source()
if (!context_stack)
return 1;
fclose(INFILE);
/* Restore previous context */
ctx = context_stack->prev;
grecs_free(context_stack);
context_stack = ctx;
if (!context_stack) {
if (grecs_yy_flex_debug)
- fprintf (stderr, "End of input\n");
+ fprintf(stderr, "End of input\n");
return 1;
}
LOCUS.line++;
if (grecs_yy_flex_debug)
- fprintf (stderr, "Resuming file `%s' at line %lu\n",
- LOCUS.file, (unsigned long) LOCUS.line);
+ fprintf(stderr, "Resuming file `%s' at line %lu\n",
+ LOCUS.file, (unsigned long) LOCUS.line);
pp_line_stmt();
return 0;
}
static int
try_file(const char *name, int allow_cwd, int err_not_found, char **newp)
{
static char *cwd = ".";
struct file_data fd;

Return to:

Send suggestions and report system problems to the System administrator.