diff options
author | miwi <miwi@FreeBSD.org> | 2010-02-10 22:38:22 +0800 |
---|---|---|
committer | miwi <miwi@FreeBSD.org> | 2010-02-10 22:38:22 +0800 |
commit | 32e3c414c3a5efecfc0880024b539e2f16935677 (patch) | |
tree | 02a7b7e6d006e1f75331be494df7163ba0d1602d | |
parent | 0a8db0322a0e5c26148b69323e435c6e921917f4 (diff) | |
download | freebsd-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@
-rw-r--r-- | sysutils/whowatch/Makefile | 11 | ||||
-rw-r--r-- | sysutils/whowatch/files/utmpx-whowatch.c | 105 | ||||
-rw-r--r-- | sysutils/whowatch/files/utmpx-whowatch.h | 27 |
3 files changed, 141 insertions, 2 deletions
diff --git a/sysutils/whowatch/Makefile b/sysutils/whowatch/Makefile index f23cec84f38a..1371177ea3c8 100644 --- a/sysutils/whowatch/Makefile +++ b/sysutils/whowatch/Makefile @@ -13,7 +13,7 @@ MASTER_SITES= http://wizard.ae.krakow.pl/~mike/download/ \ ${MASTER_SITE_PACKETSTORM} MASTER_SITE_SUBDIR= UNIX/IDS -MAINTAINER= ports@FreeBSD.org +MAINTAINER= rfarmer@predatorlabs.net COMMENT= Displays information in real time about users currently logged on GNU_CONFIGURE= yes @@ -21,8 +21,15 @@ GNU_CONFIGURE= yes MAN1= whowatch.1 PLIST_FILES= bin/whowatch +.include <bsd.port.pre.mk> + +.if ${OSVERSION} > 900006 +EXTRA_PATCHES= ${PATCHDIR}/utmpx-whowatch.h \ + ${PATCHDIR}/utmpx-whowatch.c +.endif + pre-patch: @${FIND} ${WRKSRC} -name 'proc????.c' | ${XARGS} ${REINPLACE_CMD} -E \ -e 's/kp_.?proc\.._/ki_/ ; s/pcred\.p_//' -.include <bsd.port.mk> +.include <bsd.port.post.mk> 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; + }; + |