6 function startswith() {
8 declare -l prelude="${2}"
9 declare -l line=$(head -n1 "$file")
10 if [ "$line" != "$prelude" ]; then
11 echo "$prelude" | cat - "$file" > "$file.tmp" && mv "$file.tmp" "$file"
16 declare -l base="${1}"
17 find "$base" -type f -name '*.qc' -print0 | sort -z | while read -r -d '' file; do
19 declare -l file_h="${file%.qc}.qh"
20 if [ ! -f "$file_h" ]; then echo "#pragma once" > "$file_h"; fi
22 include=$(basename "$file")
23 include="${include%.qc}.qh"
24 include="#include \"${include}\""
25 startswith "$file" "$include"
27 find "$base" -type f -name '*.qh' -a \! -name '_mod.qh' -print0 | sort -z | while read -r -d '' file; do
29 startswith "$file" "#pragma once"
31 find "$base" -type f -name '_mod.inc' -print0 | sort -z | while read -r -d '' file; do
33 declare -l file_inc="${file%_mod.inc}_all.inc"
34 if [ ! -f "$file_inc" ]; then
35 echo '#include "_all.qh"' > "$file_inc"
36 echo '#include "_mod.inc"' >> "$file_inc"
38 declare -l file_qh="${file%_mod.inc}_all.qh"
39 if [ ! -f "$file_qh" ]; then
40 echo '#pragma once' > "$file_qh"
41 echo '#include "_mod.qh"' >> "$file_qh"
50 # TODO: check that "_mod.(qc|inc)" is not included except by "_all.(qc|inc)"