From a36ca5ba61e2b97398a79713922644fee1a263d1 Mon Sep 17 00:00:00 2001 From: Rami Ylimaki Date: Wed, 5 Aug 2009 17:16:16 +0300 Subject: xkbcomp: Remove output file if closing fails. Without the fix xkbcomp may leave a truncated file in the filesystem if there is not enough disk space. Using the truncated file leads to problems. Signed-off-by: Rami Ylimaki Signed-off-by: Peter Hutterer --- xkbcomp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/xkbcomp.c b/xkbcomp.c index 988b5c5..bf3f670 100644 --- a/xkbcomp.c +++ b/xkbcomp.c @@ -1192,11 +1192,19 @@ main(int argc, char *argv[]) } if (outputFormat != WANT_X_SERVER) { - fclose(out); - if (!ok) + if (fclose(out)) + { + ERROR1("Cannot close \"%s\" properly (not enough space?)\n", + outputFile); + ok= False; + } + else if (!ok) { ERROR2("%s in %s\n", _XkbErrMessages[_XkbErrCode], _XkbErrLocation ? _XkbErrLocation : "unknown"); + } + if (!ok) + { ACTION1("Output file \"%s\" removed\n", outputFile); unlink(outputFile); } -- cgit v1.2.1