From: Felix Fietkau Date: Mon, 23 Feb 2009 14:57:12 +0000 (+0100) Subject: fix compilation on later glibc/gcc versions with stricter checks X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=commitdiff_plain;h=c60702b55cf8efe9dcd359fc9aa8e9c7cd421ada;hp=cfdea3894f809aada2cf10ba2914aebe8b92316d fix compilation on later glibc/gcc versions with stricter checks --- diff --git a/file.c b/file.c index 1abe8ff..a58e392 100644 --- a/file.c +++ b/file.c @@ -454,7 +454,8 @@ void uci_file_commit(struct uci_context *ctx, struct uci_package **package, bool } rewind(f); - ftruncate(fileno(f), 0); + if (ftruncate(fileno(f), 0) < 0) + UCI_THROW(ctx, UCI_ERR_IO); uci_export(ctx, f, p, false); UCI_TRAP_RESTORE(ctx); diff --git a/history.c b/history.c index a31dbfa..e3e19de 100644 --- a/history.c +++ b/history.c @@ -250,7 +250,10 @@ static int uci_load_history(struct uci_context *ctx, struct uci_package *p, bool changes = uci_load_history_file(ctx, p, filename, &f, flush); if (flush && f && (changes > 0)) { rewind(f); - ftruncate(fileno(f), 0); + if (ftruncate(fileno(f), 0) < 0) { + uci_close_stream(f); + UCI_THROW(ctx, UCI_ERR_IO); + } } if (filename) free(filename); @@ -308,7 +311,8 @@ static void uci_filter_history(struct uci_context *ctx, const char *name, const /* rebuild the history file */ rewind(f); - ftruncate(fileno(f), 0); + if (ftruncate(fileno(f), 0) < 0) + UCI_THROW(ctx, UCI_ERR_IO); uci_foreach_element_safe(&list, tmp, e) { fprintf(f, "%s\n", e->name); uci_free_element(e); diff --git a/libuci.c b/libuci.c index bc68462..947b029 100644 --- a/libuci.c +++ b/libuci.c @@ -167,13 +167,15 @@ uci_get_errorstr(struct uci_context *ctx, char **dest, const char *prefix) default: break; } - if (dest) - asprintf(dest, format, + if (dest) { + err = asprintf(dest, format, (prefix ? prefix : ""), (prefix ? ": " : ""), (ctx->func ? ctx->func : ""), (ctx->func ? ": " : ""), uci_errstr[err], error_info); - else { + if (err < 0) + *dest = NULL; + } else { strcat(error_info, "\n"); fprintf(stderr, format, (prefix ? prefix : ""), (prefix ? ": " : ""),