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.
# By default, `find´ will not follow symlinks and will use extended
# regular expressions, ignoring hidden files and those which begin with
# a period.
# 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.
FINDINCLUDERULES := $(FINDRULES)
# The list of parsers for plaintext file types.
- **`MAGICDIR`:**
The location of the magic files to use (default: `$(THISDIR)/magic`).
- **`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`).
-
- 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:
- **`FINDINCLUDERULES`:**
Rules to use with `find` when searching for includes (default:
Source files whose media type does not have an associated X·S·L·T
parser are considered “assets” and will not be transformed.
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.