diff options
Diffstat (limited to 'sysutils')
-rw-r--r-- | sysutils/gkrellm/files/patch-src::proc.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/sysutils/gkrellm/files/patch-src::proc.c b/sysutils/gkrellm/files/patch-src::proc.c new file mode 100644 index 000000000000..2881c1bfe776 --- /dev/null +++ b/sysutils/gkrellm/files/patch-src::proc.c @@ -0,0 +1,72 @@ +Index: src/proc.c +diff -u -p src/proc.c.orig src/proc.c +--- src/proc.c.orig 2002-07-01 11:21:19.000000000 +0900 ++++ src/proc.c 2010-01-19 20:51:02.658138473 +0900 +@@ -99,7 +99,11 @@ void (*read_system_proc_info)(); + #include <kvm.h> + #include <limits.h> + #include <paths.h> ++#if !defined(__FreeBSD__) || __FreeBSD_version < 900007 + #include <utmp.h> ++#else ++#include <utmpx.h> ++#endif + + extern kvm_t *kvmd; + +@@ -153,8 +157,14 @@ read_freebsd_proc() + gint r_forks, r_vforks, r_rforks; + gint len; + gint nextpid, nforked; ++#if !defined(__FreeBSD__) || __FreeBSD_version < 900007 + FILE *ut; + struct utmp utmp; ++#define UTMP_FILE _PATH_UTMP ++#else ++ struct utmpx *utmp; ++#define UTMP_FILE "/var/run/utx.active" ++#endif + struct stat sb, s; + static time_t utmp_mtime; + gchar ttybuf[MAXPATHLEN]; +@@ -211,8 +221,9 @@ read_freebsd_proc() + + if (!GK.five_second_tick || !proc.extra_info) + return; +- if (stat(_PATH_UTMP, &s) != 0 || s.st_mtime == utmp_mtime) ++ if (stat(UTMP_FILE, &s) != 0 || s.st_mtime == utmp_mtime) + return; ++#if !defined(__FreeBSD__) || __FreeBSD_version < 900007 + if ((ut = fopen(_PATH_UTMP, "r")) != NULL) + { + proc.n_users = 0; +@@ -222,13 +233,27 @@ read_freebsd_proc() + continue; + (void)snprintf(ttybuf, sizeof(ttybuf), "%s/%s", + _PATH_DEV, utmp.ut_line); +- /* corrupted record */ + if (stat(ttybuf, &sb)) +- continue; ++ continue; /* corrupted record */ + ++proc.n_users; + } + (void)fclose(ut); + } ++#else ++ setutxent(); ++ proc.n_users = 0; ++ while ((utmp = getutxent()) != NULL) ++ { ++ if (utmp->ut_type != USER_PROCESS) ++ continue; ++ (void)snprintf(ttybuf, sizeof(ttybuf), "%s/%s", ++ _PATH_DEV, utmp->ut_line); ++ if (stat(ttybuf, &sb)) ++ continue; /* corrupted record */ ++ ++proc.n_users; ++ } ++ endutxent(); ++#endif + utmp_mtime = s.st_mtime; + } + #endif |