[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] find: doc: Fix -prune SCM example and really make it efficie

From: Bernhard Voelker
Subject: Re: [PATCH] find: doc: Fix -prune SCM example and really make it efficient
Date: Wed, 26 Oct 2022 00:35:34 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3

First of all: thanks for the patch.
A concrete code change is always a good basis for discussion. :-)

On 10/23/22 01:54, raf wrote:
> Subject: [PATCH] find: doc: Fix -prune SCM example and really make it 

IMO we shouldn't call this a "fix", because there was nothing wrong with the 
previous sample code.
See below.

* find/find.1 - Fix explanation of -prune SCM example and make it efficient
* doc/find.texi - Make -prune SCM example efficient
  NEWS          |  5 +++++
  doc/find.texi |  6 +++---
  find/find.1   | 19 ++++++++++++++-----
  3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/NEWS b/NEWS
index dffca5aa..b3f2074c 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,11 @@ GNU findutils NEWS - User visible changes.      -*- outline 
-*- (allout)
    findutils now builds again on systems with musl-libc.
    This requires gettext-0.19.8.
+** Documentation Changes
+  The find.1 manual and the Texinfo manual -prune SCM example has
+  been corrected (manual) and made much more efficient (both) [#62259]

again, the previous version was not incorrect.

* Noteworthy changes in release 4.9.0 (2022-02-22) [stable] diff --git a/doc/find.texi b/doc/find.texi
index 1f295837..8c3972d4 100644
--- a/doc/find.texi
+++ b/doc/find.texi
@@ -5139,9 +5139,9 @@ already found.
  find repo/ \
--exec test -d @{@}/.svn \; -or \
--exec test -d @{@}/.git \; -or \
--exec test -d @{@}/CVS \; -print -prune
+    -type d \
+    -exec test -d @{@}/.svn -o -d @{@}/.git -o -d @{@}/CVS \; \
+    -print -prune
  @end smallexample

The purpose was more to get an idea about how pruning works rather than getting 
the most
efficient way for the example use case.  Of course, we could and should also 
give a direction
about an even more efficient way.
In that example, this works because the 'test' utility - most probably coming 
from coreutils
or a compatible implementation - allows to use the -o operator to do more 
checks in one
process invocation.

What about guiding the user in the documentation by saying that the '-exec ... 
-or -exec ...'
is the basic way in find to run several checks against the current entry, and 
to give a hint
that in this particular case the `test` utility allows to reduce the number of 
execv()s by
using the -o operator of that tool?

BTW: `make syntax-check` complains about the new syntax:

  $ make syntax-check
  doc/find.texi:5143:    -exec test -d @{@}/.svn -o -d @{@}/.git -o -d @{@}/CVS 
\; \
  maint.mk: use "test C1 && test C2", not "test C1 -a C2"; use "test C1 || test C2", not 
"test C1 -o C2"
  make: *** [maint.mk:1099: sc_prohibit_test_minus_ao] Error 1

It seems we have to exempt the texi file from that check.

  In this example, @command{test} is used to tell if we are currently
diff --git a/find/find.1 b/find/find.1
index 429aa2f0..f5fa4eee 100644
--- a/find/find.1
+++ b/find/find.1
@@ -2494,15 +2494,14 @@ projects' roots:
  .in +4m
  .B $ find repo/ \e
  .in +4m
-.B \e( \-exec test \-d \(aq{}/.svn\(aq \e; \e
-.B \-or \-exec test \-d \(aq{}/.git\(aq \e; \e
-.B \-or \-exec test \-d \(aq{}/CVS\(aq \e; \e
-.B \e) \-print \-prune
+.B \-type d \e
+.B \-exec test \-d \(aq{}/.svn\(aq \-o \-d \(aq{}/.git\(aq \-o \-d 
\(aq{}/CVS\(aq \e; \e
+.B \-print \-prune
  .in -4m
  .in -4m
-Sample output:
+Sample directories:

ugg, yes, the output does not contain the SCM directories.  That was wrong.  
Good catch!

  .in +4m
@@ -2513,6 +2512,16 @@ Sample output:
  .B repo/project4/.git
+Sample output:
+.in +4m
+.B repo/project1
+.B repo/gnu/project2
+.B repo/gnu/project3
+.B repo/project4
  In this example,
  .B \-prune

Would you like to propose a v2?

P.S. You've sent more patches already, and they're becoming more non-trivial.
This requires that we have a Copyright assignment of you and your employer in
place.  I think I mentioned this already last time, but this got out of my 
Would you like to proceed with the FSF copyright paperwork, please?
It's just that we can only accept trivial patches without an official Copyright
assignment to the FSF - this one would still be okay because of its size,
but it seems you want to contribute more ... which is great.
Of course, I can and will assist you in that regard - we're always in need of
more official contributors.

Thanks & have a nice day,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]