From: Lady Date: Tue, 16 Jan 2024 02:41:30 +0000 (-0500) Subject: Update allowed characters; make find more selective X-Git-Tag: 0.3.0~3 X-Git-Url: https://git.ladys.computer/Shushe/commitdiff_plain/e0c0562b79020c115373957d9c2d92a575758dda?ds=inline;hp=a9dfb3cd8b5a2a8a3c6b8ce90212638166a15fd3 Update allowed characters; make find more selective 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. --- diff --git a/GNUmakefile b/GNUmakefile index 0b644c2..bcba827 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -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. diff --git a/README.markdown b/README.markdown index dec092a..7e9b74b 100644 --- a/README.markdown +++ b/README.markdown @@ -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