]> Lady’s Gitweb - Shushe/commitdiff
Update allowed characters; make find more selective
authorLady <redacted>
Tue, 16 Jan 2024 02:41:30 +0000 (21:41 -0500)
committerLady <redacted>
Thu, 18 Jan 2024 02:36:51 +0000 (21:36 -0500)
With percent‐encoding, it seems like the only problematic characters
are :—

- Whitespace (incompatible with make)
- Colons (incompatible with make)
- Pipes (incompatible with make as they introduce order‐only
  prerequisites)
- Bucks (incomaptible with make secondary expansion)
- Percents (incompatible with secondary expansion inside static pattern
  rules, and possibly other things)
- Leading hyphen‐minuses (confusable with a command‐line argument)

This commit updates the `find` rules to not select these files, in
addition to the existing behaviour of not selecting hidden files or
those which start with a period.

`FINDOPTS` is removed as the default is virtually always the correct
behaviour; users can override `FIND` if supplying options is absolutely
necessary.

GNUmakefile
README.markdown

index 0b644c2d2e06ec369e77ba39b618ebeb032340b4..bcba827b8f63519de1c829f6c4c6def96ffdfd7c 100644 (file)
@@ -149,9 +149,7 @@ MAGICDIR := $(patsubst ./%,%,$(THISDIR)/magic)
 # By default, `find´ will not follow symlinks and will use extended
 # regular expressions, ignoring hidden files and those which begin with
 # a period.
-FINDOPTS := -PE
-FINDRULES := -flags -nohidden -and -not -name '.*'
-FINDINCLUDEOPTS := $(FINDOPTS)
+FINDRULES := -flags -nohidden -and ! '(' '(' -name '[.-]*' -or -name '*[:|$$%]*' ')' -and -prune ')'
 FINDINCLUDERULES := $(FINDRULES)
 
 # The list of parsers for plaintext file types.
index dec092a5d7c59905bf4070c1bae96f8fa9febff4..7e9b74bc2069b41b83e97dd8d54512b2364febeb 100644 (file)
@@ -157,17 +157,10 @@ The following additional variables can be used to control the behaviour
 - **`MAGICDIR`:**
   The location of the magic files to use (default: `$(THISDIR)/magic`).
 
-- **`FINDOPTS`:**
-  Options to pass to `find` when searching for source files (default:
-    `-PE`).
-
 - **`FINDRULES`:**
-  Rules to use with `find` when searching for source files (default:
-    `-flags -nohidden -and -not -name '.*'`).
-
-- **`FINDINCLUDEOPTS`:**
-  Options to pass to `find` when searching for includes (default:
-    `$(FINDOPTS)`).
+  Rules to use with `find` when searching for source files.
+  The default ignores hidden files, those that start with a period or
+    hyphen‐minus, and those which contain a pipe, buck, or colon.
 
 - **`FINDINCLUDERULES`:**
   Rules to use with `find` when searching for includes (default:
@@ -213,11 +206,12 @@ Text formats with associated X·S·L·T parsers are wrapped in a H·T·M·L
 Source files whose media type does not have an associated X·S·L·T
   parser are considered “assets” and will not be transformed.
 
-For compatibility with this program, source filenames should not
-  contain Ascii whitespace or any of the following Ascii characters:
-  ``!"#$%&()-:<>?\^`{|}``.
-These characters are either invalid in u·r·i’s or conflict with aspects
-  of the Make or commandline syntax.
+**☡ For compatibility with this program, source filenames must not
+  contain Ascii whitespace, colons (`:`), pipes (`|`), bucks (`$`),
+  percents (`%`) or control characters, and must not begin with a
+  hyphen‐minus (`-`).**
+The former characters have the potential to conflict with make syntax,
+  and a leading hyphen‐minus is confusable for a command‐line argument.
 
 ## Parsers
 
This page took 0.063434 seconds and 4 git commands to generate.