From ea70a5068fb6df4adcdb43142e77fdb2e9ccac1e Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Sun, 3 Aug 2014 13:47:58 +0200 Subject: [PATCH] util/genprof: improve handling of command line arguments Accept only one command line argument (the input file name); close input stream both on error and on success; print more informative error messages when files could not be opened. Change-Id: Ib2f0622a332317d7a13f33f1e5787381804c43a9 Found-by: missing fclose()'s found by Cppcheck 1.65 Signed-off-by: Daniele Forsi Reviewed-on: http://review.coreboot.org/6573 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- util/genprof/genprof.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/util/genprof/genprof.c b/util/genprof/genprof.c index 9fc39da982..f4dd4cb7c1 100644 --- a/util/genprof/genprof.c +++ b/util/genprof/genprof.c @@ -46,17 +46,21 @@ int main(int argc, char* argv[]) uint8_t tag; uint16_t hit; - if ( argc < 2 ) - { + if (argc != 2) { fprintf(stderr, "Please specify the coreboot trace log as parameter\n"); return 1; } f = fopen(argv[1], "r"); - fo = fopen("gmon.out", "w+"); + if (f == NULL) { + perror("Unable to open the input file"); + return 1; + } - if ((f == NULL) || (fo == NULL)) { - fprintf(stderr, "Unable to manipulate with the input file\n"); + fo = fopen("gmon.out", "w+"); + if (fo == NULL) { + perror("Unable to open the output file"); + fclose(f); return 1; } @@ -104,5 +108,7 @@ int main(int argc, char* argv[]) } fclose(fo); + fclose(f); + return 0; }