aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils/whowatch/files
diff options
context:
space:
mode:
authormiwi <miwi@FreeBSD.org>2010-02-10 22:38:22 +0800
committermiwi <miwi@FreeBSD.org>2010-02-10 22:38:22 +0800
commit32e3c414c3a5efecfc0880024b539e2f16935677 (patch)
tree02a7b7e6d006e1f75331be494df7163ba0d1602d /sysutils/whowatch/files
parent0a8db0322a0e5c26148b69323e435c6e921917f4 (diff)
downloadfreebsd-ports-gnome-32e3c414c3a5efecfc0880024b539e2f16935677.tar.gz
freebsd-ports-gnome-32e3c414c3a5efecfc0880024b539e2f16935677.tar.zst
freebsd-ports-gnome-32e3c414c3a5efecfc0880024b539e2f16935677.zip
- Fix build on HEAD
- Pass maintainership to submitter PR: 143509 Submitted by: Rob Farmer <rfarmer@predatorlabs.net> Reviewed by: ed@
Diffstat (limited to 'sysutils/whowatch/files')
-rw-r--r--sysutils/whowatch/files/utmpx-whowatch.c105
-rw-r--r--sysutils/whowatch/files/utmpx-whowatch.h27
2 files changed, 132 insertions, 0 deletions
diff --git a/sysutils/whowatch/files/utmpx-whowatch.c b/sysutils/whowatch/files/utmpx-whowatch.c
new file mode 100644
index 000000000000..9a0b00848f83
--- /dev/null
+++ b/sysutils/whowatch/files/utmpx-whowatch.c
@@ -0,0 +1,105 @@
+--- whowatch.c.orig 2000-06-06 03:21:44.000000000 -0700
++++ whowatch.c 2010-02-02 19:56:37.081269004 -0800
+@@ -119,21 +119,17 @@
+ /*
+ * Create new user structure and fill it
+ */
+-struct user_t *allocate_user(struct utmp *entry)
++struct user_t *allocate_user(struct utmpx *entry)
+ {
+ struct user_t *u;
+ int ppid;
+ u = calloc(1, sizeof *u);
+ if(!u) errx(1, "Cannot allocate memory.");
+- strncpy(u->name, entry->ut_user, UT_NAMESIZE);
+- strncpy(u->tty, entry->ut_line, UT_LINESIZE);
+- strncpy(u->host, entry->ut_host, UT_HOSTSIZE);
++ strncpy(u->name, entry->ut_user, sizeof(entry->ut_user));
++ strncpy(u->tty, entry->ut_line, sizeof(entry->ut_line));
++ strncpy(u->host, entry->ut_host, sizeof(entry->ut_host));
+
+-#ifdef HAVE_UTPID
+ u->pid = entry->ut_pid;
+-#else
+- u->pid = get_login_pid(u->tty);
+-#endif
+
+ if((ppid = get_ppid(u->pid)) == -1)
+ strncpy(u->parent, "can't access", sizeof u->parent);
+@@ -192,34 +188,24 @@
+ */
+ void read_utmp()
+ {
+- int fd, i;
+- static struct utmp entry;
++ static struct utmpx *entry;
+ struct user_t *u;
++
++ while ((entry = getutxent()) != NULL) {
+
+- if ((fd = open(UTMP_FILE ,O_RDONLY)) == -1){
+- curses_end();
+- errx(1, "Cannot open " UTMP_FILE);
+- }
+- while((i = read(fd, &entry,sizeof entry)) > 0) {
+- if(i != sizeof entry) errx(1, "Error reading " UTMP_FILE );
+-#ifdef HAVE_USER_PROCESS
+- if(entry.ut_type != USER_PROCESS) continue;
+-#else
+- if(!entry.ut_name[0]) continue;
+-#endif
+- u = allocate_user(&entry);
++ if(entry->ut_type != USER_PROCESS) continue;
++ u = allocate_user(entry);
+ print_user(u);
+ update_nr_users(u->parent, &u->prot, LOGIN);
+ how_many ++;
+ users_list.d_lines = how_many;
+ addto_list(u, users);
+ }
+- close(fd);
+ wnoutrefresh(users_list.wd);
+ return;
+ }
+
+-struct user_t* new_user(struct utmp *newone)
++struct user_t* new_user(struct utmpx *newone)
+ {
+ struct user_t *u;
+ u = allocate_user(newone);
+@@ -246,7 +232,7 @@
+ void check_wtmp()
+ {
+ struct user_t *u;
+- struct utmp entry;
++ struct utmpx entry;
+ int i;
+
+ while((i = read(wtmp_fd, &entry, sizeof entry)) > 0){
+@@ -256,25 +242,17 @@
+ errx(1, "Error reading " WTMP_FILE );
+ }
+ /* user just logged in */
+-#ifdef HAVE_USER_PROCESS
+ if(entry.ut_type == USER_PROCESS) {
+-#else
+- if(entry.ut_user[0]) {
+-#endif
+ u = new_user(&entry);
+ print_user(u);
+ wrefresh(users_list.wd);
+ print_info();
+ continue;
+ }
+-#ifdef HAVE_DEAD_PROCESS
+ if(entry.ut_type != DEAD_PROCESS) continue;
+-#else
+-// if(entry.ut_line[0]) continue;
+-#endif
+ /* user just logged out */
+ for_each(u, users) {
+- if(strncmp(u->tty, entry.ut_line, UT_LINESIZE))
++ if(strncmp(u->tty, entry.ut_line, sizeof(entry.ut_line)))
+ continue;
+ if (state == USERS_LIST)
+ delete_line(&users_list, u->line);
diff --git a/sysutils/whowatch/files/utmpx-whowatch.h b/sysutils/whowatch/files/utmpx-whowatch.h
new file mode 100644
index 000000000000..b0e051737708
--- /dev/null
+++ b/sysutils/whowatch/files/utmpx-whowatch.h
@@ -0,0 +1,27 @@
+--- whowatch.h.orig 2010-02-02 19:18:34.763514932 -0800
++++ whowatch.h 2010-02-02 19:20:44.905393020 -0800
+@@ -2,7 +2,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <string.h>
+ #include <signal.h>
+ #include <sys/stat.h>
+@@ -75,12 +75,12 @@
+ {
+ struct user_t *next;
+ struct user_t *prev;
+- char name[UT_NAMESIZE + 1]; /* login name */
+- char tty[UT_LINESIZE + 1]; /* tty */
++ char name[sizeof(((struct utmpx *)0)->ut_user)]; /* login name */
++ char tty[sizeof(((struct utmpx *)0)->ut_line)]; /* tty */
+ int prot;
+ int pid; /* pid of login shell */
+ char parent[16];
+- char host[UT_HOSTSIZE + 1];
++ char host[sizeof(((struct utmpx *)0)->ut_host)];
+ int line;
+ };
+