From nobody Thu Dec 7 20:38:40 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4SmR1s1qKvz53ZQb; Thu, 7 Dec 2023 20:38:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SmR1s1HkGz4tCg; Thu, 7 Dec 2023 20:38:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1701981521; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=B5U4hf5772Rx66UuorvgE4Exvlfl35bHOC00fJFenKg=; b=mUATS7BzVQEU0R2MktAy/BuqwD92MC6MLdwI8HVzNyAVo5nVbF+D6XuctlgXcjeVBOKmN2 bEV2OtPL64J4d8G5TCZNHvfmaY2FAWj5XcvX0MPDLlzM4ZJhk1Bh6S3BEocJv9c/2Tj7QS AftbgW8whRGjfwgJv52lAexbyb53kHCglEC/hwJPGuY6zvk/SnrTKfUqAipOydX3r1GCjD 1ASZALCeB2X61VuiQSbA5eJg4E+E6gJMZ6lOajZb7pSRQwHrM/vwVpLvUjwWyQDSkTgW0O vUXLRoFTKkSWqW6Rqd7zNRksf8AxXJtp72PKpoE290WrLAz4pRUyeL+WneAUdA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1701981521; a=rsa-sha256; cv=none; b=i0B889qJxQDxEDwT3RKWMJNgreWdDW1I3mSJQhIFSfUOXJ6Ke93xpWU8JQF2jLqnkAvDKO kUUHECJL4QFv0vrBAtrOeZDs5Cs/PDRl9QmVJxVJ5iRPPerSXSN1sG2aJqw6cuthsm6cYi +p5sUkdzijnNta8/VdabB6/Y0z5Mq2UI4dxoxKDg8zmET0V8ub4+peGrL6FJ4uo7O3x87m rH2IemOLzeBtXkPTesbjIgcJWcSu3WcD7wJCffcrD7LBxze6MjhZKxdz1Ex5XjRe5f+l+7 FeV6iCRJeJIx3tVYu1dm9VOZ/PCRwJmRFf4Qc0s4IXsr+Hl2bGtHEzs6s5JZYQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1701981521; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=B5U4hf5772Rx66UuorvgE4Exvlfl35bHOC00fJFenKg=; b=i0vhEvxsiFavrWnpRrtUo4Iq7Zl+cJr4bK+fXqkGzI9+CAfUlskmckx7QPeQiVjEJtoJDS dSSa0IuOA02bJN/Q6g4F1WP1Pc3uYhjY8OsOajwYzTj7/6vSRb6quYvVldsbm9z4HtbFGP 9pTTWVaKYN2m8dh5ffnzyslvV1jChoggDo8OBACZ3CcUkJ5lSRy0TAxxA/lzjXiVelWGc+ 0ht70o3/PcSN23X4u6CEgJp1KlBo4zwBAW366Sj4TgbIU1X9tLdd4Mn2BjFB8XGmm7KQB0 pFU9eSagDRn0JhtHrCsBj9QkEjDvHlWQNWrFnyltH8Ee9cFJaYxpI4n0OOJ4dQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4SmR1s0LBbzs75; Thu, 7 Dec 2023 20:38:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3B7KcePT057845; Thu, 7 Dec 2023 20:38:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3B7Kceuh057842; Thu, 7 Dec 2023 20:38:40 GMT (envelope-from git) Date: Thu, 7 Dec 2023 20:38:40 GMT Message-Id: <202312072038.3B7Kceuh057842@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 5a52e3d00dd5 - main - cp: Add -N flag, inspired by NetBSD's similar flag List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5a52e3d00dd5e0209f6fcb1e41b5985191e6f4e7 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=5a52e3d00dd5e0209f6fcb1e41b5985191e6f4e7 commit 5a52e3d00dd5e0209f6fcb1e41b5985191e6f4e7 Author: Warner Losh AuthorDate: 2023-12-07 19:32:27 +0000 Commit: Warner Losh CommitDate: 2023-12-07 20:36:44 +0000 cp: Add -N flag, inspired by NetBSD's similar flag Add -N to supress copying of file flags when -p is specified (explicitly or implicitly). Often times we don't care about the flags or wish to be able to copy to NFS, and this comes in handy for that. FreeBSD's and NetBSD's cp are somewhat different, so I had to reimplement all but one of the patch hunks... Obtained from: NetBSD (cp.1 1.25, cp.c 1.37, utils.c 1.28 by elad) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42673 --- bin/cp/cp.1 | 14 +++++++++----- bin/cp/cp.c | 7 +++++-- bin/cp/extern.h | 2 +- bin/cp/utils.c | 2 +- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/bin/cp/cp.1 b/bin/cp/cp.1 index 0bf28937d7fc..32e6fe295b35 100644 --- a/bin/cp/cp.1 +++ b/bin/cp/cp.1 @@ -29,7 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd February 23, 2022 +.Dd December 7, 2023 .Dt CP 1 .Os .Sh NAME @@ -42,7 +42,7 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpsvx +.Op Fl alNpsvx .Ar source_file target_file .Nm .Oo @@ -50,15 +50,15 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpsvx +.Op Fl alNpsvx .Ar source_file ... target_directory .Nm .Op Fl f | i | n -.Op Fl alPpsvx +.Op Fl alNPpsvx .Ar source_file target_file .Nm .Op Fl f | i | n -.Op Fl alPpsvx +.Op Fl alNPpsvx .Ar source_file ... target_directory .Sh DESCRIPTION In the first synopsis form, the @@ -88,6 +88,10 @@ option is specified, symbolic links on the command line are followed. If the .Fl R option is specified, all symbolic links are followed. +.It Fl N +When used with +.Fl p , +suppress copying file flags. .It Fl P No symbolic links are followed. This is the default if the diff --git a/bin/cp/cp.c b/bin/cp/cp.c index 1510943ab5f6..78ded7af3d5a 100644 --- a/bin/cp/cp.c +++ b/bin/cp/cp.c @@ -72,7 +72,7 @@ static char emptystring[] = ""; PATH_T to = { to.p_path, emptystring, "" }; -int fflag, iflag, lflag, nflag, pflag, sflag, vflag; +int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; static int Hflag, Lflag, Rflag, rflag; volatile sig_atomic_t info; @@ -91,7 +91,7 @@ main(int argc, char *argv[]) fts_options = FTS_NOCHDIR | FTS_PHYSICAL; Pflag = 0; - while ((ch = getopt(argc, argv, "HLPRafilnprsvx")) != -1) + while ((ch = getopt(argc, argv, "HLNPRafilnprsvx")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -101,6 +101,9 @@ main(int argc, char *argv[]) Lflag = 1; Hflag = Pflag = 0; break; + case 'N': + Nflag = 1; + break; case 'P': Pflag = 1; Hflag = Lflag = 0; diff --git a/bin/cp/extern.h b/bin/cp/extern.h index 742b5676f1d7..272454bb5871 100644 --- a/bin/cp/extern.h +++ b/bin/cp/extern.h @@ -36,7 +36,7 @@ typedef struct { } PATH_T; extern PATH_T to; -extern int fflag, iflag, lflag, nflag, pflag, sflag, vflag; +extern int Nflag, fflag, iflag, lflag, nflag, pflag, sflag, vflag; extern volatile sig_atomic_t info; __BEGIN_DECLS diff --git a/bin/cp/utils.c b/bin/cp/utils.c index 2e1a50635a15..686db13ef0cf 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -349,7 +349,7 @@ setfile(struct stat *fs, int fd) rval = 1; } - if (!gotstat || fs->st_flags != ts.st_flags) + if (!Nflag && (!gotstat || fs->st_flags != ts.st_flags)) if (fdval ? fchflags(fd, fs->st_flags) : (islink ? lchflags(to.p_path, fs->st_flags) :