X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fzone.c;h=b8cc9197c2de5eea70990a1e4209b7f284a8d292;hb=2d4ef8aa6e7c9e2139b2bd2e22d790948980d62b;hp=6a01b298bcced48ada82f0e08ae8f257c2eef005;hpb=c9adea50e71c3a73989b658d82712f02cea3c901;p=collectd.git diff --git a/src/zone.c b/src/zone.c index 6a01b298..b8cc9197 100644 --- a/src/zone.c +++ b/src/zone.c @@ -17,6 +17,7 @@ * * Authors: * Mathijs Mohlmann + * Dagobert Michelsen (forward-porting) **/ #define _BSD_SOURCE @@ -64,11 +65,9 @@ zone_read_procfile(char *pidstr, char *file, void *buf, size_t bufsize) int fd; char procfile[MAX_PROCFS_PATH]; - (void)snprintf(procfile, MAX_PROCFS_PATH, "/proc/%s/%s", pidstr, file); - while ((fd = open(procfile, O_RDONLY)) == -1) { - if ((errno != EMFILE) || (errno != ENFILE)) { - return(1); - } + (void)snprintf(procfile, sizeof(procfile), "/proc/%s/%s", pidstr, file); + if ((fd = open(procfile, O_RDONLY)) == -1) { + return (1); } if (pread(fd, buf, bufsize, 0) != bufsize) { @@ -183,11 +182,14 @@ static int zone_read (void) if ((procdir = opendir("/proc")) == NULL) { ERROR("zone plugin: cannot open /proc directory\n"); - exit(1); + return (-1); } tree=zone_scandir(procdir); closedir(procdir); + if (tree == NULL) { + return (-1); + } zone_submit_values(tree); /* this also frees tree */ return (0); }