Implement INCLUDE_ONCE directive (#1481)

Identify files by (device, inode), not by path, so that symlinks,
relative paths, case-insensitive paths, or other edge cases
do not result in double includes.
This commit is contained in:
sukus
2024-09-08 06:02:02 +02:00
committed by GitHub
parent 11f0e88b30
commit 5f07095f6d
8 changed files with 62 additions and 8 deletions

View File

@@ -0,0 +1,3 @@
INCLUDE_ONCE "include-once.inc"
INCLUDE_ONCE "include-once.inc"
INCLUDE_ONCE "include-link.inc"

View File

@@ -0,0 +1 @@
DEF HELLO EQU 1

View File

@@ -11,9 +11,12 @@ input="$(mktemp)"
output="$(mktemp)"
errput="$(mktemp)"
# Create a symbolic link for the `include-once.asm` test case.
ln include-once.inc include-link.inc
# Immediate expansion is the desired behavior.
# shellcheck disable=SC2064
trap "rm -f ${o@Q} ${gb@Q} ${input@Q} ${output@Q} ${errput@Q}" EXIT
trap "rm -f ${o@Q} ${gb@Q} ${input@Q} ${output@Q} ${errput@Q} include-link.inc" EXIT
tests=0
failed=0