From owner-svn-src-projects@FreeBSD.ORG Fri Sep 21 22:07:47 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 80F35106564A; Fri, 21 Sep 2012 22:07:47 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 536258FC0C; Fri, 21 Sep 2012 22:07:47 +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 q8LM7lPP018830; Fri, 21 Sep 2012 22:07:47 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8LM7luF018825; Fri, 21 Sep 2012 22:07:47 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201209212207.q8LM7luF018825@svn.freebsd.org> From: Brooks Davis Date: Fri, 21 Sep 2012 22:07:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r240796 - projects/mtree/contrib/mtree X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Sep 2012 22:07:47 -0000 Author: brooks Date: Fri Sep 21 22:07:46 2012 New Revision: 240796 URL: http://svn.freebsd.org/changeset/base/240796 Log: Implement FreeBSD's nochange keyword. Modified: projects/mtree/contrib/mtree/misc.c projects/mtree/contrib/mtree/mtree.8 projects/mtree/contrib/mtree/mtree.h projects/mtree/contrib/mtree/verify.c Modified: projects/mtree/contrib/mtree/misc.c ============================================================================== --- projects/mtree/contrib/mtree/misc.c Fri Sep 21 21:52:14 2012 (r240795) +++ projects/mtree/contrib/mtree/misc.c Fri Sep 21 22:07:46 2012 (r240796) @@ -71,6 +71,7 @@ static KEY keylist[] = { {"md5digest", F_MD5, NEEDVALUE}, {"mode", F_MODE, NEEDVALUE}, {"nlink", F_NLINK, NEEDVALUE}, + {"nochange", F_NOCHANGE, 0}, {"optional", F_OPT, 0}, {"ripemd160digest", F_RMD160, NEEDVALUE}, {"rmd160", F_RMD160, NEEDVALUE}, Modified: projects/mtree/contrib/mtree/mtree.8 ============================================================================== --- projects/mtree/contrib/mtree/mtree.8 Fri Sep 21 21:52:14 2012 (r240795) +++ projects/mtree/contrib/mtree/mtree.8 Fri Sep 21 22:07:46 2012 (r240796) @@ -463,6 +463,8 @@ The current file's permissions as a nume value. .It Sy nlink The number of hard links the file is expected to have. +.It Sy nochange +Make sure this file or directory exists but otherwise ignore all attributes. .It Sy optional The file is optional; don't complain about the file if it's not in the file hierarchy. Modified: projects/mtree/contrib/mtree/mtree.h ============================================================================== --- projects/mtree/contrib/mtree/mtree.h Fri Sep 21 21:52:14 2012 (r240795) +++ projects/mtree/contrib/mtree/mtree.h Fri Sep 21 22:07:46 2012 (r240796) @@ -86,6 +86,8 @@ typedef struct _node { #define F_UID 0x00080000 /* uid */ #define F_UNAME 0x00100000 /* user name */ #define F_VISIT 0x00200000 /* file visited */ +#define F_NOCHANGE 0x00400000 /* check existance, but not */ + /* other properties */ #define F_SHA256 0x00800000 /* SHA256 digest */ #define F_SHA384 0x01000000 /* SHA384 digest */ #define F_SHA512 0x02000000 /* SHA512 digest */ Modified: projects/mtree/contrib/mtree/verify.c ============================================================================== --- projects/mtree/contrib/mtree/verify.c Fri Sep 21 21:52:14 2012 (r240795) +++ projects/mtree/contrib/mtree/verify.c Fri Sep 21 22:07:46 2012 (r240796) @@ -124,7 +124,8 @@ vwalk(void) !fnmatch(ep->name, p->fts_name, FNM_PATHNAME)) || !strcmp(ep->name, p->fts_name)) { ep->flags |= F_VISIT; - if (compare(ep, p)) + if ((ep->flags & F_NOCHANGE) == 0 && + compare(ep, p)) rval = MISMATCHEXIT; if (!(ep->flags & F_IGN) && ep->type == F_DIR &&