projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Testing: Return failure from OK1() and other fixes.
[collectd.git]
/
src
/
processes.c
diff --git
a/src/processes.c
b/src/processes.c
index
a6c5096
..
24dbf49
100644
(file)
--- a/
src/processes.c
+++ b/
src/processes.c
@@
-1031,9
+1031,9
@@
int ps_read_process (int pid, procstat_t *ps, char *state)
char *fields[64];
char fields_len;
char *fields[64];
char fields_len;
-
int
buffer_len;
+
size_t
buffer_len;
- char *buffer_ptr;
+ char
*buffer_ptr;
size_t name_start_pos;
size_t name_end_pos;
size_t name_len;
size_t name_start_pos;
size_t name_end_pos;
size_t name_len;
@@
-1044,14
+1044,16
@@
int ps_read_process (int pid, procstat_t *ps, char *state)
long long unsigned vmem_rss;
long long unsigned stack_size;
long long unsigned vmem_rss;
long long unsigned stack_size;
+ ssize_t status;
+
memset (ps, 0, sizeof (procstat_t));
ssnprintf (filename, sizeof (filename), "/proc/%i/stat", pid);
memset (ps, 0, sizeof (procstat_t));
ssnprintf (filename, sizeof (filename), "/proc/%i/stat", pid);
- buffer_len = read_file_contents (filename,
- buffer, sizeof(buffer) - 1);
- if (buffer_len <= 0)
+ status = read_file_contents (filename, buffer, sizeof(buffer) - 1);
+ if (status <= 0)
return (-1);
return (-1);
+ buffer_len = (size_t) status;
buffer[buffer_len] = 0;
/* The name of the process is enclosed in parens. Since the name can
buffer[buffer_len] = 0;
/* The name of the process is enclosed in parens. Since the name can
@@
-1328,16
+1330,16
@@
static const char *ps_get_cmdline (long pid, /* {{{ */
{
char path[PATH_MAX];
psinfo_t info;
{
char path[PATH_MAX];
psinfo_t info;
-
in
t status;
+
ssize_
t status;
snprintf(path, sizeof (path), "/proc/%li/psinfo", pid);
status = read_file_contents (path, (void *) &info, sizeof (info));
snprintf(path, sizeof (path), "/proc/%li/psinfo", pid);
status = read_file_contents (path, (void *) &info, sizeof (info));
- if (
status != sizeof (info
))
+ if (
(status < 0) || (((size_t) status) != sizeof (info)
))
{
ERROR ("processes plugin: Unexpected return value "
"while reading \"%s\": "
{
ERROR ("processes plugin: Unexpected return value "
"while reading \"%s\": "
- "Returned %
i
but expected %zu.",
+ "Returned %
zd
but expected %zu.",
path, status, buffer_size);
return (NULL);
}
path, status, buffer_size);
return (NULL);
}
@@
-1849,6
+1851,7
@@
static int ps_read (void)
continue;
}
continue;
}
+ memset (&pse, 0, sizeof (pse));
pse.id = pid;
pse.age = 0;
pse.id = pid;
pse.age = 0;
@@
-2126,6
+2129,7
@@
static int ps_read (void)
}
} /* if (process has argument list) */
}
} /* if (process has argument list) */
+ memset (&pse, 0, sizeof (pse));
pse.id = procs[i].p_pid;
pse.age = 0;
pse.id = procs[i].p_pid;
pse.age = 0;
@@
-2155,6
+2159,9
@@
static int ps_read (void)
pse.io_syscr = -1;
pse.io_syscw = -1;
pse.io_syscr = -1;
pse.io_syscw = -1;
+ pse.cswitch_vol = -1;
+ pse.cswitch_invol = -1;
+
ps_list_add (procs[i].p_comm, have_cmdline ? cmdline : NULL, &pse);
} /* if ((proc_ptr == NULL) || (proc_ptr->p_pid != procs[i].p_pid)) */
ps_list_add (procs[i].p_comm, have_cmdline ? cmdline : NULL, &pse);
} /* if ((proc_ptr == NULL) || (proc_ptr->p_pid != procs[i].p_pid)) */
@@
-2370,6
+2377,7
@@
static int ps_read (void)
continue;
}
continue;
}
+ memset (&pse, 0, sizeof (pse));
pse.id = pid;
pse.age = 0;
pse.id = pid;
pse.age = 0;
@@
-2396,6
+2404,9
@@
static int ps_read (void)
pse.io_syscr = ps.io_syscr;
pse.io_syscw = ps.io_syscw;
pse.io_syscr = ps.io_syscr;
pse.io_syscw = ps.io_syscw;
+ pse.cswitch_vol = -1;
+ pse.cswitch_invol = -1;
+
switch (state)
{
case 'R': running++; break;
switch (state)
{
case 'R': running++; break;