From 45bffe9e26da51fe29166b80668538d8bdd8d040 Mon Sep 17 00:00:00 2001 From: ceriel Date: Tue, 24 Feb 1987 10:49:54 +0000 Subject: [PATCH] solved a problem with include files --- lang/cem/libcc/gen/getlogin.c | 26 +++++++++++++++++++++++--- lang/cem/libcc/gen/ttyslot.c | 26 ++++++++++++++++++-------- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/lang/cem/libcc/gen/getlogin.c b/lang/cem/libcc/gen/getlogin.c index 5f3f5fb29..5fb25f42d 100644 --- a/lang/cem/libcc/gen/getlogin.c +++ b/lang/cem/libcc/gen/getlogin.c @@ -1,8 +1,28 @@ #define UTMPFILE "/etc/utmp" -/* some systems require inclusion of sys/types.h before utmp.h */ -#include -#include +#ifdef USG +struct utmp { + char ut_name[8]; + char ut_id[4]; + char ut_line[12]; + short ut_pid; + short ut_type; + struct exit_status { + short e_termination; + short e_exit; + } ut_exit; + long ut_time; +}; +#else +struct utmp { + char ut_line[8]; + char ut_name[8]; +#ifdef BSD4_2 + char ut_host[16]; +#endif + long ut_time; +}; +#endif char * getlogin() diff --git a/lang/cem/libcc/gen/ttyslot.c b/lang/cem/libcc/gen/ttyslot.c index b91b12e7e..d9969e073 100644 --- a/lang/cem/libcc/gen/ttyslot.c +++ b/lang/cem/libcc/gen/ttyslot.c @@ -1,11 +1,19 @@ #ifdef USG -/* some systems require inclusion of sys/types.h before utmp.h */ -#include -#include - /* system V, so no /etc/ttys file. In this case, scan the /etc/utmp file */ +struct utmp { + char ut_name[8]; + char ut_id[4]; + char ut_line[12]; + short ut_pid; + short ut_type; + struct exit_status { + short e_termination; + short e_exit; + } ut_exit; + long ut_time; +}; #define FILENAME "/etc/utmp" #else #define FILENAME "/etc/ttys" @@ -34,10 +42,12 @@ ttyslot() if ((fd = open(FILENAME, 0)) < 0) return 0; #ifdef USG while (read(fd, (char *) &buf, sizeof(buf)) == sizeof(buf)) { - if ((buf.ut_type == INIT_PROCESS || - buf.ut_type == LOGIN_PROCESS || - buf.ut_type == USER_PROCESS || - buf.ut_type == DEAD_PROCESS) && + /* processes associated with a terminal ... + unfortunately we cannot use the include file because + some systems have a different one ... + INIT_PROCESS, DEAD_PROCESS, USER_PROCESS, LOGIN_PROCESS + */ + if ((buf.ut_type >= 5 && buf.ut_type <= 8) && ! strncmp(buf.ut_line, p, sizeof(buf.ut_line))) { close(fd); return retval; -- 2.34.1