>>>>> "Nirmal" == Nirmal Govind <[EMAIL PROTECTED]> writes:

Hello lyx-devel, I continue this private discussion with Nirmal and
Bennett here, since I am sure somebody will come up with the one true
find syntax we need.

The problem is that compilation hangs in po, and the reason is the
following find invokation in po/Makefile.in.in:

  find src -regex ".*\\.\\(C\\|c\\|h\\|C\\.in\\)" -print

Nirmal> My bad.. the correct syntax should be:

Nirmal> find src \( -regex ".*\\.\\C" -or -regex ".*\\.\\c" -or -regex
Nirmal> ".*\\.\\h" -or -regex ".*\\C\\.in" \) -print

Nirmal> This works well and from man find on OS X, there does not seem
Nirmal> to be support for the | syntax for the logical OR (I'm pasting
Nirmal> some of the relevant parts of man find below)..

I took a look at the find man page which reads:
[http://developer.apple.com/documentation/Darwin/Reference/ManPages/html/find.1.html]

 -regex pattern

  True if the whole path of the file matches pattern using regular
  expression. To match a file named ``./foo/xyzzy'', you can use the
  regular expression ``.*/[xyz]*'' or ``.*/foo/.*'', but not ``xyzzy''
  or ``/foo/''.

This is OK. However, there is also this option about the type of
regular expressions:

 -E 
  Interpret regular expressions followed by -regex and -iregex
  options as extended (modern) regular expressions rather than basic
  regular expressions (BRE's). The re_format(7) manual page fully
  describes both formats.

So, what is a basic RE according to apple? The man page re_format
says:
[http://developer.apple.com/documentation/Darwin/Reference/ManPages/html/re_format.7.html]

  Obsolete (``basic'') regular expressions differ in several respects.
  `|' is an ordinary character and there is no equivalent for its
  functionality. [...]


So it seems that Darwin's find cannot handle our find regular
expression, because BRE cannot do `or'. OTOH, it seems that we cannot
use EREs with GNU find.

Except for the .C.in case, it seems that we could use 
  find src -name '*.[Cch]' -print
(this is basically what we did in 1.3.x)

So what is the truly portable way to do a ``or'' in find-world? Shall
we use "\( foo -or bar \)"?

JMarc

Reply via email to