head 1.2; access; symbols pkgsrc-2026Q1:1.2.0.110 pkgsrc-2026Q1-base:1.2 pkgsrc-2025Q4:1.2.0.108 pkgsrc-2025Q4-base:1.2 pkgsrc-2025Q3:1.2.0.106 pkgsrc-2025Q3-base:1.2 pkgsrc-2025Q2:1.2.0.104 pkgsrc-2025Q2-base:1.2 pkgsrc-2025Q1:1.2.0.102 pkgsrc-2025Q1-base:1.2 pkgsrc-2024Q4:1.2.0.100 pkgsrc-2024Q4-base:1.2 pkgsrc-2024Q3:1.2.0.98 pkgsrc-2024Q3-base:1.2 pkgsrc-2024Q2:1.2.0.96 pkgsrc-2024Q2-base:1.2 pkgsrc-2024Q1:1.2.0.94 pkgsrc-2024Q1-base:1.2 pkgsrc-2023Q4:1.2.0.92 pkgsrc-2023Q4-base:1.2 pkgsrc-2023Q3:1.2.0.90 pkgsrc-2023Q3-base:1.2 pkgsrc-2023Q2:1.2.0.88 pkgsrc-2023Q2-base:1.2 pkgsrc-2023Q1:1.2.0.86 pkgsrc-2023Q1-base:1.2 pkgsrc-2022Q4:1.2.0.84 pkgsrc-2022Q4-base:1.2 pkgsrc-2022Q3:1.2.0.82 pkgsrc-2022Q3-base:1.2 pkgsrc-2022Q2:1.2.0.80 pkgsrc-2022Q2-base:1.2 pkgsrc-2022Q1:1.2.0.78 pkgsrc-2022Q1-base:1.2 pkgsrc-2021Q4:1.2.0.76 pkgsrc-2021Q4-base:1.2 pkgsrc-2021Q3:1.2.0.74 pkgsrc-2021Q3-base:1.2 pkgsrc-2021Q2:1.2.0.72 pkgsrc-2021Q2-base:1.2 pkgsrc-2021Q1:1.2.0.70 pkgsrc-2021Q1-base:1.2 pkgsrc-2020Q4:1.2.0.68 pkgsrc-2020Q4-base:1.2 pkgsrc-2020Q3:1.2.0.66 pkgsrc-2020Q3-base:1.2 pkgsrc-2020Q2:1.2.0.62 pkgsrc-2020Q2-base:1.2 pkgsrc-2020Q1:1.2.0.42 pkgsrc-2020Q1-base:1.2 pkgsrc-2019Q4:1.2.0.64 pkgsrc-2019Q4-base:1.2 pkgsrc-2019Q3:1.2.0.60 pkgsrc-2019Q3-base:1.2 pkgsrc-2019Q2:1.2.0.58 pkgsrc-2019Q2-base:1.2 pkgsrc-2019Q1:1.2.0.56 pkgsrc-2019Q1-base:1.2 pkgsrc-2018Q4:1.2.0.54 pkgsrc-2018Q4-base:1.2 pkgsrc-2018Q3:1.2.0.52 pkgsrc-2018Q3-base:1.2 pkgsrc-2018Q2:1.2.0.50 pkgsrc-2018Q2-base:1.2 pkgsrc-2018Q1:1.2.0.48 pkgsrc-2018Q1-base:1.2 pkgsrc-2017Q4:1.2.0.46 pkgsrc-2017Q4-base:1.2 pkgsrc-2017Q3:1.2.0.44 pkgsrc-2017Q3-base:1.2 pkgsrc-2017Q2:1.2.0.40 pkgsrc-2017Q2-base:1.2 pkgsrc-2017Q1:1.2.0.38 pkgsrc-2017Q1-base:1.2 pkgsrc-2016Q4:1.2.0.36 pkgsrc-2016Q4-base:1.2 pkgsrc-2016Q3:1.2.0.34 pkgsrc-2016Q3-base:1.2 pkgsrc-2016Q2:1.2.0.32 pkgsrc-2016Q2-base:1.2 pkgsrc-2016Q1:1.2.0.30 pkgsrc-2016Q1-base:1.2 pkgsrc-2015Q4:1.2.0.28 pkgsrc-2015Q4-base:1.2 pkgsrc-2015Q3:1.2.0.26 pkgsrc-2015Q3-base:1.2 pkgsrc-2015Q2:1.2.0.24 pkgsrc-2015Q2-base:1.2 pkgsrc-2015Q1:1.2.0.22 pkgsrc-2015Q1-base:1.2 pkgsrc-2014Q4:1.2.0.20 pkgsrc-2014Q4-base:1.2 pkgsrc-2014Q3:1.2.0.18 pkgsrc-2014Q3-base:1.2 pkgsrc-2014Q2:1.2.0.16 pkgsrc-2014Q2-base:1.2 pkgsrc-2014Q1:1.2.0.14 pkgsrc-2014Q1-base:1.2 pkgsrc-2013Q4:1.2.0.12 pkgsrc-2013Q4-base:1.2 pkgsrc-2013Q3:1.2.0.10 pkgsrc-2013Q3-base:1.2 pkgsrc-2013Q2:1.2.0.8 pkgsrc-2013Q2-base:1.2 pkgsrc-2013Q1:1.2.0.6 pkgsrc-2013Q1-base:1.2 pkgsrc-2012Q4:1.2.0.4 pkgsrc-2012Q4-base:1.2 pkgsrc-2012Q3:1.2.0.2 pkgsrc-2012Q3-base:1.2 pkgsrc-2012Q2:1.1.0.54 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.52 pkgsrc-2012Q1-base:1.1 pkgsrc-2011Q4:1.1.0.50 pkgsrc-2011Q4-base:1.1 pkgsrc-2011Q3:1.1.0.48 pkgsrc-2011Q3-base:1.1 pkgsrc-2011Q2:1.1.0.46 pkgsrc-2011Q2-base:1.1 pkgsrc-2011Q1:1.1.0.44 pkgsrc-2011Q1-base:1.1 pkgsrc-2010Q4:1.1.0.42 pkgsrc-2010Q4-base:1.1 pkgsrc-2010Q3:1.1.0.40 pkgsrc-2010Q3-base:1.1 pkgsrc-2010Q2:1.1.0.38 pkgsrc-2010Q2-base:1.1 pkgsrc-2010Q1:1.1.0.36 pkgsrc-2010Q1-base:1.1 pkgsrc-2009Q4:1.1.0.34 pkgsrc-2009Q4-base:1.1 pkgsrc-2009Q3:1.1.0.32 pkgsrc-2009Q3-base:1.1 pkgsrc-2009Q2:1.1.0.30 pkgsrc-2009Q2-base:1.1 pkgsrc-2009Q1:1.1.0.28 pkgsrc-2009Q1-base:1.1 pkgsrc-2008Q4:1.1.0.26 pkgsrc-2008Q4-base:1.1 pkgsrc-2008Q3:1.1.0.24 pkgsrc-2008Q3-base:1.1 cube-native-xorg:1.1.0.22 cube-native-xorg-base:1.1 pkgsrc-2008Q2:1.1.0.20 pkgsrc-2008Q2-base:1.1 cwrapper:1.1.0.18 pkgsrc-2008Q1:1.1.0.16 pkgsrc-2008Q1-base:1.1 pkgsrc-2007Q4:1.1.0.14 pkgsrc-2007Q4-base:1.1 pkgsrc-2007Q3:1.1.0.12 pkgsrc-2007Q3-base:1.1 pkgsrc-2007Q2:1.1.0.10 pkgsrc-2007Q2-base:1.1 pkgsrc-2007Q1:1.1.0.8 pkgsrc-2007Q1-base:1.1 pkgsrc-2006Q4:1.1.0.6 pkgsrc-2006Q4-base:1.1 pkgsrc-2006Q3:1.1.0.4 pkgsrc-2006Q3-base:1.1 pkgsrc-2006Q2:1.1.0.2 pkgsrc-2006Q2-base:1.1; locks; strict; comment @# @; 1.2 date 2012.08.08.18.37.07; author marino; state Exp; branches; next 1.1; 1.1 date 2006.06.12.16.41.30; author joerg; state Exp; branches; next ; desc @@ 1.2 log @sysutils/whowatch: Fix LP64 and DragonFly regression 1) The 4th argument of the sysctl function requires type size_t, not int, which matters for LP64. 2) DragonFly's kinfo structure changed dramatically a few years ago, breaking this package. Repatched. 3) sysctl can return pid of -1 for pure kernel processes which must be skipped to avoid a segfault. @ text @$NetBSD$ Fix LP64 support on FreeBSD/DragonFly (size_t instead of int) Add DragonFly support -- kinfo structure is unique on DragonFly --- procinfo.c.orig 2000-06-06 18:36:47.000000000 +0000 +++ procinfo.c @@@@ -65,7 +65,7 @@@@ void get_info(int pid, struct procinfo * int fill_kinfo(struct kinfo_proc *info, int pid) { int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid }; - int len = sizeof *info; + size_t len = sizeof *info; if(sysctl(mib, 4, info, &len, 0, 0) == -1) return -1; return len?0:-1; @@@@ -83,12 +83,21 @@@@ void get_info(int pid, struct procinfo * if(fill_kinfo(&info, pid) == -1) return; +#ifdef __DragonFly__ + p->ppid = info.kp_ppid; + p->tpgid = info.kp_tpgid; + p->euid = info.kp_svuid; + p->stat = info.kp_stat; + strncpy(p->exec_file, info.kp_comm, EXEC_FILE); + p->cterm = info.kp_tdev; +#else p->ppid = info.kp_eproc.e_ppid; p->tpgid = info.kp_eproc.e_tpgid; p->euid = info.kp_eproc.e_pcred.p_svuid; p->stat = info.kp_proc.p_stat; strncpy(p->exec_file, info.kp_proc.p_comm, EXEC_FILE); p->cterm = info.kp_eproc.e_tdev; +#endif p->exec_file[EXEC_FILE] = '\0'; } #endif @@@@ -124,7 +133,8 @@@@ int get_term(char *tty) int get_login_pid(char *tty) { int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_TTY, 0}; - int len, t, el, i, pid, cndt = -1, l; + size_t len; + int t, el, i, pid, cndt = -1, l; struct kinfo_proc *info; struct procinfo p; @@@@ -142,6 +152,17 @@@@ int get_login_pid(char *tty) if(sysctl(mib, 4, info, &len, 0, 0) == -1) return -1; for(i = 0; i < el; i++) { +#ifdef __DragonFly__ + if(!(pid = info[i].kp_pid)) continue; + get_info(get_ppid(pid), &p); + if(p.cterm == -1 || p.cterm != t) { + cndt = pid; + l = strlen(info[i].kp_comm); + if(l > 1 && !strncmp("sh",info[i].kp_comm+l-2,2)) { + free(info); + return pid; + } +#else if(!(pid = info[i].kp_proc.p_pid)) continue; get_info(get_ppid(pid), &p); if(p.cterm == -1 || p.cterm != t) { @@@@ -157,6 +178,7 @@@@ int get_login_pid(char *tty) free(info); return pid; } +#endif } } free(info); @@@@ -169,7 +191,8 @@@@ int get_login_pid(char *tty) int get_all_info(struct kinfo_proc **info) { int mib[3] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL }; - int len, el; + size_t len; + int el; if(sysctl(mib, 3, 0, &len, 0, 0) == -1) return 0; @@@@ -239,7 +262,11 @@@@ char *get_cmdline(int pid) bzero(buf, sizeof buf); if(fill_kinfo(&info, pid) == -1) return "-"; +#ifdef __DragonFly__ + memcpy(buf, info.kp_comm, sizeof buf - 1); +#else memcpy(buf, info.kp_proc.p_comm, sizeof buf - 1); +#endif if(!full_cmd) return buf; #ifdef HAVE_LIBKVM if(!can_use_kvm) return buf; @ 1.1 log @Add DragonFly support. @ text @d3 4 a6 1 --- procinfo.c.orig 2006-06-12 16:36:48.000000000 +0000 d8 10 a17 1 @@@@ -85,7 +85,11 @@@@ void get_info(int pid, struct procinfo * d19 10 a30 3 +#if defined(__DragonFly__) + p->euid = info.kp_eproc.e_ucred.cr_svuid; +#else a31 1 +#endif d35 62 @