summaryrefslogtreecommitdiffstats
path: root/osdep-freebsd.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2009-01-27 23:10:18 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2009-01-27 23:10:18 +0000
commit167178aba461be50db58f5bfa02b2a4eb73a9c06 (patch)
tree816e0e5e24eef5e3e35ba10a07f989f6299e6d05 /osdep-freebsd.c
parentfbbf46ef71c940c4ab9b9c8f8d08f533fab8ef5e (diff)
Tweak selection slightly.
Diffstat (limited to 'osdep-freebsd.c')
-rw-r--r--osdep-freebsd.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/osdep-freebsd.c b/osdep-freebsd.c
index 3a495d4a..1795058a 100644
--- a/osdep-freebsd.c
+++ b/osdep-freebsd.c
@@ -1,4 +1,4 @@
-/* $Id: osdep-freebsd.c,v 1.3 2009-01-26 22:57:19 nicm Exp $ */
+/* $Id: osdep-freebsd.c,v 1.4 2009-01-27 23:10:18 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -72,6 +72,8 @@ retry:
bestp = NULL;
for (i = 0; i < len / sizeof (struct kinfo_proc); i++) {
+ if (buf[i].ki_tdev != sb.st_rdev)
+ continue;
p = &buf[i];
if (bestp == NULL)
bestp = p;
@@ -84,12 +86,15 @@ retry:
continue;
bestp = p;
}
-
- procname = get_proc_argv0(bestp->ki_pid);
- if (procname == NULL || *procname == '\0') {
- free(procname);
- procname = strdup(bestp->ki_comm);
- }
+ if (bestp != NULL) {
+ procname = get_proc_argv0(bestp->ki_pid);
+ if (procname == NULL || *procname == '\0') {
+ free(procname);
+ procname = strdup(bestp->ki_comm);
+ }
+ } else
+ procname = NULL;
+
free(buf);
return (procname);