From a3e141e79b209f22926f65bc9831da193b5984f8 Mon Sep 17 00:00:00 2001 From: cathugger Date: Fri, 22 May 2020 22:30:14 +0000 Subject: [PATCH] close filter files, more error handling --- filters_main.inc.h | 10 +++++++++- main.c | 6 ++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/filters_main.inc.h b/filters_main.inc.h index 5196328..f1bd7ed 100644 --- a/filters_main.inc.h +++ b/filters_main.inc.h @@ -500,8 +500,10 @@ static bool loadfilterfile(const char *fname) { char buf[128]; FILE *f = fopen(fname,"r"); - if (!f) + if (!f) { + fprintf(stderr,"failed to load filter file \"%s\": %s\n",fname,strerror(errno)); return false; + } while (fgets(buf,sizeof(buf),f)) { for (char *p = buf;*p;++p) { if (*p == '\n') { @@ -512,5 +514,11 @@ static bool loadfilterfile(const char *fname) if (*buf && *buf != '#' && memcmp(buf,"//",2) != 0) filters_add(buf); } + int fe = ferror(f); + fclose(f); + if (fe != 0) { + fprintf(stderr,"failure while reading filter file \"%s\": %s\n",fname,strerror(fe)); + return false; + } return true; } diff --git a/main.c b/main.c index 387eea8..54169fb 100644 --- a/main.c +++ b/main.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -258,11 +259,8 @@ int main(int argc,char **argv) } else if (*arg == 'f') { if (argc--) { - const char *filename = *argv++; - if (!loadfilterfile(filename)) { - fprintf(stderr,"failed to load filter file %s\n",filename); + if (!loadfilterfile(*argv++)) exit(1); - } } else e_additional();