From 9d03dd7fb83371b01997fe8e6bc000ce6d56f8d4 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 3 Aug 2009 09:06:35 +0000 Subject: [PATCH] respect error code from ftruncate(), mentioned by Peter Sylvester --- src/main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index c7669ad11..ddca73322 100644 --- a/src/main.c +++ b/src/main.c @@ -4991,7 +4991,14 @@ operate(struct Configurable *config, int argc, argv_item_t argv[]) fflush(outs.stream); /* truncate file at the position where we started appending */ #ifdef HAVE_FTRUNCATE - ftruncate( fileno(outs.stream), outs.init); + if(ftruncate( fileno(outs.stream), outs.init)) { + /* when truncate fails, we can't just append as then we'll + create something strange, bail out */ + if(!config->mute) + fprintf(config->errors, + "failed to truncate, exiting\n"); + break; + } /* now seek to the end of the file, the position where we just truncated the file in a large file-safe way */ fseek(outs.stream, 0, SEEK_END);