OK, how about the attached more-ambitious patch instead? I hope it helps
clarify this confusing area.From 1f5703b46cd8001706c1192a2976c7fc4d86002a Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Tue, 31 Jan 2023 10:39:43 -0800
Subject: [PATCH] cp: improve --preserve usage doc
* src/cp.c (usage): Improve description of --preserve.
---
src/cp.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/cp.c b/src/cp.c
index 016ae8988..ede00cd12 100644
--- a/src/cp.c
+++ b/src/cp.c
@@ -183,11 +183,7 @@ Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n\
"), stdout);
fputs (_("\
-p same as --preserve=mode,ownership,timestamps\n\
- --preserve[=ATTR_LIST] preserve the specified attributes (default:\n\
- mode,ownership,timestamps), if possible\n\
- additional attributes: context, links, xattr,\
-\n\
- all\n\
+ --preserve[=ATTR_LIST] preserve the specified attributes\n\
"), stdout);
fputs (_("\
--no-preserve=ATTR_LIST don't preserve the specified attributes\n\
@@ -227,6 +223,14 @@ Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n\
fputs (VERSION_OPTION_DESCRIPTION, stdout);
fputs (_("\
\n\
+ATTR_LIST is a comma-separated list of attributes. Attributes are 'mode' for\n\
+permissions (including any ACL and xattr permissions), 'ownership' for user\n\
+and group, 'timestamps' for file timestamps, 'links' for hard links, 'context'\n\
+for security context, 'xattr' for extended attributes, and 'all' for all\n\
+attributes.\n\
+"), stdout);
+ fputs (_("\
+\n\
By default, sparse SOURCE files are detected by a crude heuristic and the\n\
corresponding DEST file is made sparse as well. That is the behavior\n\
selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n\
--
2.39.1