diff options
Diffstat (limited to 'x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c')
-rw-r--r-- | x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c b/x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c new file mode 100644 index 0000000..4f57a70 --- /dev/null +++ b/x11/kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-ProcessList.c @@ -0,0 +1,33 @@ +--- ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed May 7 07:44:17 2003 ++++ ksysguard/ksysguardd/FreeBSD/ProcessList.c Wed Aug 27 18:51:18 2003 +@@ -168,6 +168,8 @@ + int mib[4]; + struct kinfo_proc p; + size_t len; ++ size_t buflen = 256; ++ char buf[256]; + + if ((ps = findProcessInList(pid)) == 0) + { +@@ -239,10 +241,17 @@ + #endif + + /* process command line */ +- /* the following line causes segfaults on some FreeBSD systems... why? +- strncpy(ps->cmdline, p.kp_proc.p_args->ar_args, sizeof(ps->cmdline) - 1); +- */ +- strcpy(ps->cmdline, "????"); ++ /* do a sysctl to get the command line args. */ ++ ++ mib[0] = CTL_KERN; ++ mib[1] = KERN_PROC; ++ mib[2] = KERN_PROC_ARGS; ++ mib[3] = pid; ++ ++ if ((sysctl(mib, 4, buf, &buflen, 0, 0) == -1) || !buflen) ++ strcpy(ps->cmdline, "????"); ++ else ++ strncpy(ps->cmdline, buf, buflen - 1); + + return (0); + } |