From owner-svn-src-user@FreeBSD.ORG Wed Jan 6 20:39:57 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 87C9D10656A5; Wed, 6 Jan 2010 20:39:57 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7646E8FC0A; Wed, 6 Jan 2010 20:39:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o06Kdv2g033351; Wed, 6 Jan 2010 20:39:57 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o06KdvA5033349; Wed, 6 Jan 2010 20:39:57 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201001062039.o06KdvA5033349@svn.freebsd.org> From: Ed Schouten Date: Wed, 6 Jan 2010 20:39:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r201666 - user/ed/utmpx/lib/libulog X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jan 2010 20:39:57 -0000 Author: ed Date: Wed Jan 6 20:39:57 2010 New Revision: 201666 URL: http://svn.freebsd.org/changeset/base/201666 Log: Let libulog use ut_id properly, now we have it. Modified: user/ed/utmpx/lib/libulog/ulog_login.c Modified: user/ed/utmpx/lib/libulog/ulog_login.c ============================================================================== --- user/ed/utmpx/lib/libulog/ulog_login.c Wed Jan 6 20:28:47 2010 (r201665) +++ user/ed/utmpx/lib/libulog/ulog_login.c Wed Jan 6 20:39:57 2010 (r201666) @@ -30,9 +30,27 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include "ulog.h" +static void +ulog_genid(struct utmpx *utx, const char *line) +{ + size_t s, d; + + /* + * Generate an ut_id based on the TTY name. Use a reverse order + * to prevent the limited space we have to be wasted on prefixes + * like "tty" and "pts/". It also makes sure aliasing because + * of cropping of "pts/1000" and "pts/1001" is less likely. + * Prepend an 'u' to indicate it was done by libulog. + */ + utx->ut_id[0] = 'u'; + for (s = strlen(line), d = 1; s > 0 && d <= sizeof utx->ut_id; s--, d++) + utx->ut_id[d] = line[s - 1]; +} + void ulog_login(const char *line, const char *user, const char *host) { @@ -44,8 +62,9 @@ ulog_login(const char *line, const char memset(&utx, 0, sizeof utx); - /* XXX: ut_id, ut_pid missing. */ utx.ut_type = USER_PROCESS; + utx.ut_pid = getpid(); + ulog_genid(&utx, line); strncpy(utx.ut_line, line, sizeof utx.ut_line); strncpy(utx.ut_user, user, sizeof utx.ut_user); if (host != NULL) @@ -66,9 +85,8 @@ ulog_logout(const char *line) memset(&utx, 0, sizeof utx); - /* XXX: ut_id, ut_pid missing. ut_line not needed */ utx.ut_type = DEAD_PROCESS; - strncpy(utx.ut_line, line, sizeof utx.ut_line); + ulog_genid(&utx, line); gettimeofday(&utx.ut_tv, NULL); pututxline(&utx);