From owner-svn-src-user@FreeBSD.ORG Tue Jan 5 23:01:46 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 A8AA81065696; Tue, 5 Jan 2010 23:01:46 +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 9877E8FC1A; Tue, 5 Jan 2010 23:01:46 +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 o05N1krH039542; Tue, 5 Jan 2010 23:01:46 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o05N1kIT039540; Tue, 5 Jan 2010 23:01:46 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201001052301.o05N1kIT039540@svn.freebsd.org> From: Ed Schouten Date: Tue, 5 Jan 2010 23:01:46 +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: r201621 - user/ed/utmpx/lib/libc/gen 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: Tue, 05 Jan 2010 23:01:46 -0000 Author: ed Date: Tue Jan 5 23:01:46 2010 New Revision: 201621 URL: http://svn.freebsd.org/changeset/base/201621 Log: Also implement utx_active_add() for now. This means we at least write to all three the database files, which means I can implement and test the reading functions. Modified: user/ed/utmpx/lib/libc/gen/pututxline.c Modified: user/ed/utmpx/lib/libc/gen/pututxline.c ============================================================================== --- user/ed/utmpx/lib/libc/gen/pututxline.c Tue Jan 5 22:59:59 2010 (r201620) +++ user/ed/utmpx/lib/libc/gen/pututxline.c Tue Jan 5 23:01:46 2010 (r201621) @@ -84,6 +84,33 @@ utx_to_futx(const struct utmpx *ut, stru static void utx_active_add(const struct futx *fu) { + int fd; + struct futx fe; + + /* + * Register user login sessions. Overwrite entries of sessions + * that have already been terminated. + */ + fd = open(_PATH_UTX_ACTIVE, O_CREAT|O_RDWR, 0644); + if (fd < 0) + return; + if (lockf(fd, F_LOCK, 0) == -1) { + close(fd); + return; + } + while (read(fd, &fe, sizeof fe) == sizeof fe) { + /* + * XXX: This check is invalid. We should perform a + * similar comparison as getutxid(). + */ + if (fe.fu_type != USER_PROCESS) { + lseek(fd, -sizeof fe, SEEK_CUR); + break; + } + } + write(fd, fu, sizeof *fu); + lockf(fd, F_ULOCK, 0); + close(fd); } static int