From owner-svn-doc-svnadmin@FreeBSD.ORG Thu Sep 13 18:03:13 2012 Return-Path: Delivered-To: svn-doc-svnadmin@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BB4921065670; Thu, 13 Sep 2012 18:03:13 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 61A5F8FC0C; Thu, 13 Sep 2012 18:03:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8DI3DBJ047725; Thu, 13 Sep 2012 18:03:13 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8DI3DVO047722; Thu, 13 Sep 2012 18:03:13 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201209131803.q8DI3DVO047722@svn.freebsd.org> From: Gabor Kovesdan Date: Thu, 13 Sep 2012 18:03:13 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-svnadmin@freebsd.org X-SVN-Group: doc-svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r39527 - svnadmin/conf X-BeenThere: svn-doc-svnadmin@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for svnadmin of the doc trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Sep 2012 18:03:13 -0000 Author: gabor Date: Thu Sep 13 18:03:11 2012 New Revision: 39527 URL: http://svn.freebsd.org/changeset/doc/39527 Log: Please welcome Edson Brandi (ebrandi@) as a new pt_BR doc committer! He has been working on getting the Brazilian Portuguese subtree up to date and contributing some valuable new translations. I'll be his mentor. Approved by: doceng (implicit) Modified: svnadmin/conf/access svnadmin/conf/mentors Modified: svnadmin/conf/access ============================================================================== --- svnadmin/conf/access Thu Sep 13 17:01:50 2012 (r39526) +++ svnadmin/conf/access Thu Sep 13 18:03:11 2012 (r39527) @@ -29,6 +29,7 @@ danger delphij des dougb +ebrandi gabor ganbold gavin Modified: svnadmin/conf/mentors ============================================================================== --- svnadmin/conf/mentors Thu Sep 13 17:01:50 2012 (r39526) +++ svnadmin/conf/mentors Thu Sep 13 18:03:11 2012 (r39527) @@ -11,6 +11,7 @@ # Mentee Mentor Optional comment des gjb backup mentor: gabor +ebrandi gabor gavin bcr co-mentor: jkois, since 2011-07-18 issyl0 gabor backup mentor: gjb zeising joel From owner-svn-doc-svnadmin@FreeBSD.ORG Fri Sep 14 10:00:58 2012 Return-Path: Delivered-To: svn-doc-svnadmin@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 90A6D106564A; Fri, 14 Sep 2012 10:00:58 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 627D98FC14; Fri, 14 Sep 2012 10:00:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8EA0wUX092931; Fri, 14 Sep 2012 10:00:58 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8EA0wJI092929; Fri, 14 Sep 2012 10:00:58 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201209141000.q8EA0wJI092929@svn.freebsd.org> From: Gabor Kovesdan Date: Fri, 14 Sep 2012 10:00:58 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-svnadmin@freebsd.org X-SVN-Group: doc-svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r39532 - svnadmin/conf X-BeenThere: svn-doc-svnadmin@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for svnadmin of the doc trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Sep 2012 10:00:58 -0000 Author: gabor Date: Fri Sep 14 10:00:57 2012 New Revision: 39532 URL: http://svn.freebsd.org/changeset/doc/39532 Log: - Temporarily lock the doc tree for the XML migration Approved by: doceng (implicit) Modified: svnadmin/conf/approvers Modified: svnadmin/conf/approvers ============================================================================== --- svnadmin/conf/approvers Fri Sep 14 09:58:59 2012 (r39531) +++ svnadmin/conf/approvers Fri Sep 14 10:00:57 2012 (r39532) @@ -16,7 +16,7 @@ # # $FreeBSD$ # -#^head/ doceng +^head/ doceng ^projects/ doceng ^user/ doceng ^translations/ doceng From owner-svn-doc-svnadmin@FreeBSD.ORG Fri Sep 14 12:12:58 2012 Return-Path: Delivered-To: svn-doc-svnadmin@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8FE211065695; Fri, 14 Sep 2012 12:12:58 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6265B8FC0A; Fri, 14 Sep 2012 12:12:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8ECCwSJ018364; Fri, 14 Sep 2012 12:12:58 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8ECCwu5018362; Fri, 14 Sep 2012 12:12:58 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201209141212.q8ECCwu5018362@svn.freebsd.org> From: Gabor Kovesdan Date: Fri, 14 Sep 2012 12:12:58 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-svnadmin@freebsd.org X-SVN-Group: doc-svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r39535 - svnadmin/conf X-BeenThere: svn-doc-svnadmin@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for svnadmin of the doc trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Sep 2012 12:12:58 -0000 Author: gabor Date: Fri Sep 14 12:12:57 2012 New Revision: 39535 URL: http://svn.freebsd.org/changeset/doc/39535 Log: - The XML migration is finished, open the repository again Approved by: doceng (implicit) Modified: svnadmin/conf/approvers Modified: svnadmin/conf/approvers ============================================================================== --- svnadmin/conf/approvers Fri Sep 14 12:11:19 2012 (r39534) +++ svnadmin/conf/approvers Fri Sep 14 12:12:57 2012 (r39535) @@ -16,7 +16,7 @@ # # $FreeBSD$ # -^head/ doceng +#^head/ doceng ^projects/ doceng ^user/ doceng ^translations/ doceng From owner-svn-doc-svnadmin@FreeBSD.ORG Fri Sep 14 14:55:49 2012 Return-Path: Delivered-To: svn-doc-svnadmin@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 74E9D106564A; Fri, 14 Sep 2012 14:55:49 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 616C58FC0A; Fri, 14 Sep 2012 14:55:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8EEtnXn045250; Fri, 14 Sep 2012 14:55:49 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8EEtndu045248; Fri, 14 Sep 2012 14:55:49 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201209141455.q8EEtndu045248@svn.freebsd.org> From: Glen Barber Date: Fri, 14 Sep 2012 14:55:49 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-svnadmin@freebsd.org X-SVN-Group: doc-svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r39536 - svnadmin/conf X-BeenThere: svn-doc-svnadmin@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for svnadmin of the doc trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Sep 2012 14:55:49 -0000 Author: gjb Date: Fri Sep 14 14:55:48 2012 New Revision: 39536 URL: http://svn.freebsd.org/changeset/doc/39536 Log: Note bjk is mentored by hrs. Approved by: doceng (implicit) Modified: svnadmin/conf/mentors Modified: svnadmin/conf/mentors ============================================================================== --- svnadmin/conf/mentors Fri Sep 14 12:12:57 2012 (r39535) +++ svnadmin/conf/mentors Fri Sep 14 14:55:48 2012 (r39536) @@ -10,6 +10,7 @@ # Sort by mentee login name. # Mentee Mentor Optional comment +bjk hrs des gjb backup mentor: gabor ebrandi gabor gavin bcr co-mentor: jkois, since 2011-07-18 From owner-svn-doc-svnadmin@FreeBSD.ORG Sat Sep 15 18:43:28 2012 Return-Path: Delivered-To: svn-doc-svnadmin@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76A4A106566B; Sat, 15 Sep 2012 18:43:28 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 619EA8FC14; Sat, 15 Sep 2012 18:43:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8FIhS4p008029; Sat, 15 Sep 2012 18:43:28 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8FIhSGx008026; Sat, 15 Sep 2012 18:43:28 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201209151843.q8FIhSGx008026@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 15 Sep 2012 18:43:28 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-svnadmin@freebsd.org X-SVN-Group: doc-svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r39556 - svnadmin/hooks/scripts X-BeenThere: svn-doc-svnadmin@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for svnadmin of the doc trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Sep 2012 18:43:28 -0000 Author: bz (src committer) Date: Sat Sep 15 18:43:26 2012 New Revision: 39556 URL: http://svn.freebsd.org/changeset/doc/39556 Log: Harmonize env.sh with base r240535 passing the repo name as argument, checking for checkacl-doc before checkacl allowing us to harmonize things while retaining the current status quo. Approved by: doceng (gabor, implicit) Modified: svnadmin/hooks/scripts/env.sh Modified: svnadmin/hooks/scripts/env.sh ============================================================================== --- svnadmin/hooks/scripts/env.sh Sat Sep 15 15:39:39 2012 (r39555) +++ svnadmin/hooks/scripts/env.sh Sat Sep 15 18:43:26 2012 (r39556) @@ -5,5 +5,7 @@ export PATH cd /s/svn/doc umask 002 if [ -x /usr/local/bin/checkacl-doc ]; then - eval `/usr/local/bin/checkacl-doc` + eval `/usr/local/bin/checkacl-doc doc` +elif [ -x /usr/local/bin/checkacl ]; then + eval `/usr/local/bin/checkacl doc` fi From owner-svn-doc-svnadmin@FreeBSD.ORG Sat Sep 15 19:24:10 2012 Return-Path: Delivered-To: svn-doc-svnadmin@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3F0B6106566B; Sat, 15 Sep 2012 19:24:10 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1FF808FC0C; Sat, 15 Sep 2012 19:24:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8FJO9Pu015501; Sat, 15 Sep 2012 19:24:09 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8FJO9wY015498; Sat, 15 Sep 2012 19:24:09 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201209151924.q8FJO9wY015498@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 15 Sep 2012 19:24:09 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-svnadmin@freebsd.org X-SVN-Group: doc-svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r39558 - svnadmin/tools/checkacl X-BeenThere: svn-doc-svnadmin@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for svnadmin of the doc trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Sep 2012 19:24:10 -0000 Author: bz (src committer) Date: Sat Sep 15 19:24:09 2012 New Revision: 39558 URL: http://svn.freebsd.org/changeset/doc/39558 Log: In preparation of synching this file between repos, rename it to a common source file name. We still install as checkacl-doc. Approved by: doceng (gabor, implicit) Added: svnadmin/tools/checkacl/checkacl.c - copied unchanged from r39546, svnadmin/tools/checkacl/checkacl-doc.c Deleted: svnadmin/tools/checkacl/checkacl-doc.c Modified: svnadmin/tools/checkacl/Makefile Modified: svnadmin/tools/checkacl/Makefile ============================================================================== --- svnadmin/tools/checkacl/Makefile Sat Sep 15 18:52:16 2012 (r39557) +++ svnadmin/tools/checkacl/Makefile Sat Sep 15 19:24:09 2012 (r39558) @@ -1,6 +1,7 @@ # $FreeBSD$ PROG= checkacl-doc +SRCS= checkacl.c NO_MAN= too bad NO_SHARED=yes DESTDIR=/usr/local/bin Copied: svnadmin/tools/checkacl/checkacl.c (from r39546, svnadmin/tools/checkacl/checkacl-doc.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ svnadmin/tools/checkacl/checkacl.c Sat Sep 15 19:24:09 2012 (r39558, copy of r39546, svnadmin/tools/checkacl/checkacl-doc.c) @@ -0,0 +1,184 @@ +/* + * Ok, so this isn't exactly pretty, so sue me. + * + * FreeBSD Subversion tree ACL check helper. The program looks in + * relevant access files to find out if the committer may commit. + * + * From: Id: cvssh.c,v 1.38 2008/05/31 02:54:58 peter Exp + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SRCACCESS "/s/svn/base/conf/access" +#define DOCACCESS "/s/svn/doc/conf/access" +#define PORTSACCESS "/home/pcvs/CVSROOT/access" + + +static char username[32]; +static char committag[256]; + +static void +msg(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + +static int +karmacheck(FILE *fp, char *name) +{ + char buf[1024]; + char *p, *s; + int karma; + + karma = 0; + while ((p = fgets(buf, sizeof(buf) - 1, fp)) != NULL) { + while ((s = strsep(&p, " \t\n")) != NULL) { + if (*s == '\0') + continue; /* whitespace */ + if (*s == '#' || *s == '/' || *s == ';') + break; /* comment */ + if (strcmp(s, "*") == 0) { /* all */ + karma++; + break; + } + if (strcmp(s, name) == 0) { + karma++; + break; + } + break; /* ignore further tokens on line */ + } + } + return karma; +} + +/* ARGUSED */ +int +main(void) +{ + struct passwd *pw; + struct stat st; + FILE *fp; + int i; + gid_t repogid; + gid_t mygroups[NGROUPS_MAX]; + int ngroups; + int writeable; + int dockarma; +#ifdef PORTSACCESS + int portskarma; +#endif +#ifdef SRCACCESS + int srckarma; +#endif + const char *comma; + +#ifdef PORTSACCESS + portskarma = 0; +#endif +#ifdef SRCACCESS + srckarma = 0; +#endif + dockarma = 0; + writeable = 0; + pw = getpwuid(getuid()); + if (pw == NULL) { + msg("no user for uid %d", getuid()); + exit(1); + } + if (pw->pw_dir == NULL) { + msg("no home directory"); + exit(1); + } + + /* save in a static buffer */ + strlcpy(username, pw->pw_name, sizeof(username)); + + if (stat("/s/svn", &st) < 0) { + msg("Cannot stat %s", "/s/svn"); + exit(1); + } + repogid = st.st_gid; + if (repogid < 10) { + msg("unsafe repo gid %d\n", repogid); + exit(1); + } + ngroups = getgroups(NGROUPS_MAX, mygroups); + if (ngroups > 0) { + for (i = 0; i < ngroups; i++) + if (mygroups[i] == repogid) + writeable = 1; + } + if (!writeable) + printf("export SVN_READONLY=y\n"); + + fp = fopen(DOCACCESS, "r"); + if (fp == NULL) { + msg("Cannot open %s", DOCACCESS); + exit(1); + } else { + dockarma += karmacheck(fp, pw->pw_name); + fclose(fp); + } +#ifdef SRCACCESS + if (dockarma == 0 && (fp = fopen(SRCACCESS, "r")) != NULL) { + srckarma += karmacheck(fp, pw->pw_name); + fclose(fp); + } +#endif +#ifdef PORTSACCESS + if (dockarma == 0 && (fp = fopen(PORTSACCESS, "r")) != NULL) { + portskarma += karmacheck(fp, pw->pw_name); + fclose(fp); + } +#endif + + if (dockarma == 0) { + strcpy(committag, "SVN_COMMIT_ATTRIB="); + comma = ""; +#ifdef SRCACCESS + if (srckarma > 0) { + strcat(committag, comma); + strcat(committag, "src"); + comma = ","; + dockarma += srckarma; + } +#endif +#ifdef PORTSACCESS + if (portskarma > 0) { + strcat(committag, comma); + strcat(committag, "ports"); + comma = ","; + dockarma += portskarma; + } +#endif + if (dockarma != 0) { + printf("export %s\n", committag); + } + } + + if (dockarma == 0) { + /* If still zero, its a readonly access */ + printf("export SVN_READONLY=y\n"); + } + return (0); +} From owner-svn-doc-svnadmin@FreeBSD.ORG Sat Sep 15 19:29:07 2012 Return-Path: Delivered-To: svn-doc-svnadmin@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F1AE1065680; Sat, 15 Sep 2012 19:29:07 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3980F8FC08; Sat, 15 Sep 2012 19:29:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8FJT7V8016396; Sat, 15 Sep 2012 19:29:07 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8FJT7Hd016394; Sat, 15 Sep 2012 19:29:07 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201209151929.q8FJT7Hd016394@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 15 Sep 2012 19:29:07 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-svnadmin@freebsd.org X-SVN-Group: doc-svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r39559 - svnadmin/tools/checkacl X-BeenThere: svn-doc-svnadmin@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for svnadmin of the doc trees List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Sep 2012 19:29:07 -0000 Author: bz (src committer) Date: Sat Sep 15 19:29:06 2012 New Revision: 39559 URL: http://svn.freebsd.org/changeset/doc/39559 Log: Copy over the version from base r240538. This copy is provided to allow the doc repository to be self-hosted. All changes should be synchronized with the other repositories. The "base" version should be seen as master copy. Approved by: doceng (gabor, implicit) Modified: svnadmin/tools/checkacl/checkacl.c Modified: svnadmin/tools/checkacl/checkacl.c ============================================================================== --- svnadmin/tools/checkacl/checkacl.c Sat Sep 15 19:24:09 2012 (r39558) +++ svnadmin/tools/checkacl/checkacl.c Sat Sep 15 19:29:06 2012 (r39559) @@ -4,6 +4,8 @@ * FreeBSD Subversion tree ACL check helper. The program looks in * relevant access files to find out if the committer may commit. * + * !!! Please keep in sync between various SVN repositories. !!! + * * From: Id: cvssh.c,v 1.38 2008/05/31 02:54:58 peter Exp * $FreeBSD$ */ @@ -24,13 +26,16 @@ #include #include -#define SRCACCESS "/s/svn/base/conf/access" -#define DOCACCESS "/s/svn/doc/conf/access" -#define PORTSACCESS "/home/pcvs/CVSROOT/access" - +#define BASE 0x01 +#define DOC 0x02 +#define PORTS 0x04 + +#define SVNROOT "/s/svn" +#define BASEACCESS SVNROOT "/base/conf/access" +#define DOCACCESS SVNROOT "/doc/conf/access" +#define PORTSACCESS SVNROOT "/ports/conf/access" -static char username[32]; -static char committag[256]; +static char username[_SC_LOGIN_NAME_MAX + 1]; static void msg(const char *fmt, ...) @@ -43,12 +48,12 @@ msg(const char *fmt, ...) va_end(ap); } -static int -karmacheck(FILE *fp, char *name) +static u_int +karmacheck(FILE *fp, const char *name, u_int k) { char buf[1024]; char *p, *s; - int karma; + u_int karma; karma = 0; while ((p = fgets(buf, sizeof(buf) - 1, fp)) != NULL) { @@ -58,11 +63,11 @@ karmacheck(FILE *fp, char *name) if (*s == '#' || *s == '/' || *s == ';') break; /* comment */ if (strcmp(s, "*") == 0) { /* all */ - karma++; + karma |= k; break; } if (strcmp(s, name) == 0) { - karma++; + karma |= k; break; } break; /* ignore further tokens on line */ @@ -71,35 +76,49 @@ karmacheck(FILE *fp, char *name) return karma; } -/* ARGUSED */ +static u_int +read_access(const char *accessf, const u_int repo, u_int k, + const char *name) +{ + FILE *fp; + u_int karma; + + karma = 0; + fp = fopen(accessf, "r"); + if (fp == NULL && (repo & k) == k) { + msg("Cannot open %s", accessf); + exit(1); + } else if (fp != NULL) { + karma |= karmacheck(fp, name, k); + fclose(fp); + } + + return (karma); +} + +static void +catcommittag(char *committag, const char **comma, const u_int karma, + const u_int k, const char *s) +{ + + if ((karma & k) == 0) + return; + + strcat(committag, *comma); + strcat(committag, s); + *comma = ","; +} + int -main(void) +main(int argc, char *argv[]) { struct passwd *pw; struct stat st; - FILE *fp; - int i; gid_t repogid; gid_t mygroups[NGROUPS_MAX]; - int ngroups; - int writeable; - int dockarma; -#ifdef PORTSACCESS - int portskarma; -#endif -#ifdef SRCACCESS - int srckarma; -#endif - const char *comma; + int i, ngroups, writeable; + u_int karma, repo; -#ifdef PORTSACCESS - portskarma = 0; -#endif -#ifdef SRCACCESS - srckarma = 0; -#endif - dockarma = 0; - writeable = 0; pw = getpwuid(getuid()); if (pw == NULL) { msg("no user for uid %d", getuid()); @@ -110,11 +129,12 @@ main(void) exit(1); } - /* save in a static buffer */ + /* Save in a static buffer. */ strlcpy(username, pw->pw_name, sizeof(username)); + endpwent(); - if (stat("/s/svn", &st) < 0) { - msg("Cannot stat %s", "/s/svn"); + if (stat(SVNROOT, &st) < 0) { + msg("Cannot stat %s", SVNROOT); exit(1); } repogid = st.st_gid; @@ -122,6 +142,7 @@ main(void) msg("unsafe repo gid %d\n", repogid); exit(1); } + writeable = 0; ngroups = getgroups(NGROUPS_MAX, mygroups); if (ngroups > 0) { for (i = 0; i < ngroups; i++) @@ -131,54 +152,48 @@ main(void) if (!writeable) printf("export SVN_READONLY=y\n"); - fp = fopen(DOCACCESS, "r"); - if (fp == NULL) { - msg("Cannot open %s", DOCACCESS); + if (argc != 2) { + msg("No repository given"); exit(1); - } else { - dockarma += karmacheck(fp, pw->pw_name); - fclose(fp); - } -#ifdef SRCACCESS - if (dockarma == 0 && (fp = fopen(SRCACCESS, "r")) != NULL) { - srckarma += karmacheck(fp, pw->pw_name); - fclose(fp); } -#endif -#ifdef PORTSACCESS - if (dockarma == 0 && (fp = fopen(PORTSACCESS, "r")) != NULL) { - portskarma += karmacheck(fp, pw->pw_name); - fclose(fp); + repo = 0; + /* Forward compat for base. */ + if (strcmp(argv[1], "base") == 0 || strcmp(argv[1], "src") == 0) + repo |= BASE; + else if (strcmp(argv[1], "doc") == 0) + repo |= DOC; + else if (strcmp(argv[1], "ports") == 0) + repo |= PORTS; + else { + msg("Invalid repository given: %s", argv[1]); + exit(1); } -#endif - if (dockarma == 0) { - strcpy(committag, "SVN_COMMIT_ATTRIB="); - comma = ""; -#ifdef SRCACCESS - if (srckarma > 0) { - strcat(committag, comma); - strcat(committag, "src"); - comma = ","; - dockarma += srckarma; - } + karma = 0; +#ifdef BASEACCESS + karma |= read_access(BASEACCESS, repo, BASE, username); +#endif +#ifdef DOCACCESS + karma |= read_access(DOCACCESS, repo, DOC, username); #endif #ifdef PORTSACCESS - if (portskarma > 0) { - strcat(committag, comma); - strcat(committag, "ports"); - comma = ","; - dockarma += portskarma; - } + karma |= read_access(PORTSACCESS, repo, PORTS, username); #endif - if (dockarma != 0) { - printf("export %s\n", committag); - } - } - - if (dockarma == 0) { + if (karma == 0) { /* If still zero, its a readonly access */ printf("export SVN_READONLY=y\n"); + + } else if ((repo & karma) == 0) { + char committag[sizeof("src,doc,ports") + 1]; + const char *comma; + + committag[0] = '\0'; + comma = ""; + catcommittag(committag, &comma, karma, BASE, "src"); + catcommittag(committag, &comma, karma, DOC, "doc"); + catcommittag(committag, &comma, karma, PORTS, "ports"); + printf("export SVN_COMMIT_ATTRIB=\"%s\"\n", committag); } + return (0); }