diff options
| author | Atsushi Murai <amurai@FreeBSD.org> | 1998-06-01 08:47:04 +0000 | 
|---|---|---|
| committer | Atsushi Murai <amurai@FreeBSD.org> | 1998-06-01 08:47:04 +0000 | 
| commit | 89caae2932adde71022cb5691ee1b73cd26a8286 (patch) | |
| tree | e8ef228b9354b10f24452d07fdbc488518363e82 /lib/libutil | |
| parent | f66ca81068480d66f3ff8fd4735b0978bec37695 (diff) | |
Notes
Diffstat (limited to 'lib/libutil')
| -rw-r--r-- | lib/libutil/libutil.h | 4 | ||||
| -rw-r--r-- | lib/libutil/logwtmp.c | 41 | 
2 files changed, 42 insertions, 3 deletions
diff --git a/lib/libutil/libutil.h b/lib/libutil/libutil.h index 513acee9ca37..4cacbee6400f 100644 --- a/lib/libutil/libutil.h +++ b/lib/libutil/libutil.h @@ -18,7 +18,7 @@   * 5. Modifications may be freely made to this file providing the above   *    conditions are met.   * - * $Id: libutil.h,v 1.13 1997/09/04 22:38:58 pst Exp $ + * $Id: libutil.h,v 1.14 1998/05/28 23:17:07 brian Exp $   */  #ifndef _LIBUTIL_H_ @@ -37,13 +37,13 @@ void	login __P((struct utmp *_ut));  int	login_tty __P((int _fd));  int	logout __P((char *_line));  void	logwtmp __P((const char *_line, const char *_name, const char *_host)); +void	trimdomain __P((char *_fullhost, int _hostsize));  int	openpty __P((int *_amaster, int *_aslave, char *_name,  		     struct termios *_termp, struct winsize *_winp));  int	forkpty __P((int *_amaster, char *_name,  		     struct termios *_termp, struct winsize *_winp));  const char *uu_lockerr __P((int _uu_lockresult));  int	uu_lock __P((const char *_ttyname)); -int	uu_lock_txfr __P((const char *_ttyname, pid_t _pid));  int	uu_unlock __P((const char *_ttyname));  int	_secure_path __P((const char *_path, uid_t _uid, gid_t _gid));  __END_DECLS diff --git a/lib/libutil/logwtmp.c b/lib/libutil/logwtmp.c index de3c5d69d0c5..531b715486c2 100644 --- a/lib/libutil/logwtmp.c +++ b/lib/libutil/logwtmp.c @@ -36,10 +36,11 @@  static char sccsid[] = "@(#)logwtmp.c	8.1 (Berkeley) 6/4/93";  #else  static const char rcsid[] = -	"$Id: logwtmp.c,v 1.4 1997/08/13 20:42:18 steve Exp $"; +	"$Id: logwtmp.c,v 1.5 1997/09/04 22:38:59 pst Exp $";  #endif  #endif /* LIBC_SCCS and not lint */ +#include <sys/param.h>  #include <sys/types.h>  #include <sys/file.h>  #include <sys/stat.h> @@ -54,6 +55,37 @@ static const char rcsid[] =  #include <utmp.h>  void +trimdomain( char * fullhost, int hostsize ) +{ +    static char domain[MAXHOSTNAMELEN + 1]; +    static int first = 1; +    char *s; + +    if (first) { +        first = 0; +        if (gethostname(domain, MAXHOSTNAMELEN) == 0 && +            (s = strchr(domain, '.'))) +            (void) strcpy(domain, s + 1); +        else +            domain[0] = 0; +    } + +    if (domain[0]) { +		s = fullhost; +        while ((fullhost = strchr(fullhost, '.'))) { +            if (!strcasecmp(fullhost + 1, domain)) { +		if ( fullhost - s  < hostsize ) { +               		*fullhost = '\0';    /* hit it and acceptable size*/ +		} +                break; +            } else { +                fullhost++; +            } +        } +    } +} + +void  logwtmp(line, name, host)  	const char *line;  	const char *name; @@ -61,7 +93,14 @@ logwtmp(line, name, host)  {  	struct utmp ut;  	struct stat buf; +	char   fullhost[MAXHOSTNAMELEN + 1]; +	char   *whost = fullhost;  	int fd; +	 +	strncpy( whost, host, MAXHOSTNAMELEN );	 +fullhost[MAXHOSTNAMELEN] = '\0'; +	trimdomain( whost, UT_HOSTSIZE ); +	host = whost;  	if (strlen(host) > UT_HOSTSIZE) {  		struct hostent *hp = gethostbyname(host);  | 
