- *cmdline = '\0';
- argv = kvm_getargv(kd, (const struct kinfo_proc *) &(procs[i]), 0);
- if (argv) {
- j = 0;
- while (argv[j] && strlen(cmdline) <= ARG_MAX) {
- if (j)
- strncat(cmdline, " ", 1);
- strncat(cmdline, argv[j], strlen(argv[j]));
- j++;
+ cmdline[0] = 0;
+ cmdline_ptr = NULL;
+
+ argv = kvm_getargv (kd, (const struct kinfo_proc *) &(procs[i]), 0);
+ if (argv != NULL)
+ {
+ int status;
+ int argc;
+
+ argc = 0;
+ while (argv[argc] != NULL)
+ argc++;
+
+ status = strjoin (cmdline, sizeof (cmdline),
+ argv, argc, " ");
+
+ if (status < 0)
+ {
+ WARNING ("processes plugin: Command line did "
+ "not fit into buffer.");
+ }
+ else
+ {
+ cmdline_ptr = &cmdline[0];