55 lines
1.3 KiB
Diff
55 lines
1.3 KiB
Diff
diff -Naur collectd-5.6.0/src/vserver.c collectd-5.6.0/src/vserver.c
|
|
--- collectd-5.6.0/src/vserver.c 2016-09-11 01:10:25.279038699 -0700
|
|
+++ collectd-5.6.0/src/vserver.c 2016-09-25 07:44:40.771177458 -0700
|
|
@@ -132,15 +132,8 @@
|
|
|
|
static int vserver_read (void)
|
|
{
|
|
-#if NAME_MAX < 1024
|
|
-# define DIRENT_BUFFER_SIZE (sizeof (struct dirent) + 1024 + 1)
|
|
-#else
|
|
-# define DIRENT_BUFFER_SIZE (sizeof (struct dirent) + NAME_MAX + 1)
|
|
-#endif
|
|
-
|
|
DIR *proc;
|
|
struct dirent *dent; /* 42 */
|
|
- char dirent_buffer[DIRENT_BUFFER_SIZE];
|
|
|
|
errno = 0;
|
|
proc = opendir (PROCDIR);
|
|
@@ -165,19 +158,23 @@
|
|
|
|
int status;
|
|
|
|
- status = readdir_r (proc, (struct dirent *) dirent_buffer, &dent);
|
|
- if (status != 0)
|
|
- {
|
|
- char errbuf[4096];
|
|
- ERROR ("vserver plugin: readdir_r failed: %s",
|
|
- sstrerror (errno, errbuf, sizeof (errbuf)));
|
|
- closedir (proc);
|
|
- return (-1);
|
|
- }
|
|
- else if (dent == NULL)
|
|
+ errno = 0;
|
|
+ dent = readdir (proc);
|
|
+ if (dent == NULL)
|
|
{
|
|
- /* end of directory */
|
|
- break;
|
|
+ if (errno != 0)
|
|
+ {
|
|
+ char errbuf[4096];
|
|
+ ERROR ("vserver plugin: readdir failed: %s",
|
|
+ sstrerror (errno, errbuf, sizeof (errbuf)));
|
|
+ closedir (proc);
|
|
+ return (-1);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* end of directory */
|
|
+ break;
|
|
+ }
|
|
}
|
|
|
|
if (dent->d_name[0] == '.')
|