结论:新增 OPFS source-map 文档和同步守卫,绑定 interp_internal.hh 默认参数文件、rs274ngc_pre.cc restore/save 语义与浏览器 OPFS 边界;未扩展 smoke 功能。
52 lines
2.9 KiB
Bash
Executable File
52 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
# LinuxCNC source basis: this guard ties browser OPFS parameter persistence to
|
|
# interp_internal.hh defaults and rs274ngc_pre.cc restore_parameters() /
|
|
# save_parameters() file semantics. It validates bridge policy only; it does not
|
|
# add CNC behavior or expand smoke parsing.
|
|
linuxcnc_root=${LINUXCNC_ROOT:-../linuxcnc}
|
|
linuxcnc_root=$(cd "$linuxcnc_root" && pwd)
|
|
|
|
grep -F '#define RS274NGC_PARAMETER_FILE_NAME_DEFAULT "rs274ngc.var"' \
|
|
"$linuxcnc_root/src/emc/rs274ngc/interp_internal.hh" >/dev/null
|
|
grep -F '#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX ".bak"' \
|
|
"$linuxcnc_root/src/emc/rs274ngc/interp_internal.hh" >/dev/null
|
|
grep -F 'int Interp::restore_parameters(const char *filename)' \
|
|
"$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
|
|
grep -F 'int Interp::save_parameters(const char *filename,' \
|
|
"$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
|
|
grep -F 'std::string tempfile = std::string(filename) + ".new";' \
|
|
"$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
|
|
grep -F '+ RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX;' \
|
|
"$linuxcnc_root/src/emc/rs274ngc/rs274ngc_pre.cc" >/dev/null
|
|
|
|
grep -F 'RS274NGC_PARAMETER_FILE_NAME_DEFAULT` as `rs274ngc.var`' \
|
|
docs/linuxcnc-opfs-source-map.md >/dev/null
|
|
grep -F 'RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX` as `.bak`' \
|
|
docs/linuxcnc-opfs-source-map.md >/dev/null
|
|
grep -F '`Interp::restore_parameters()` for parameter-file reads' \
|
|
docs/linuxcnc-opfs-source-map.md >/dev/null
|
|
grep -F '`Interp::save_parameters()` for `filename + ".new"`' \
|
|
docs/linuxcnc-opfs-source-map.md >/dev/null
|
|
grep -F 'must not add independent filesystem behavior or expand the temporary smoke parser' \
|
|
docs/linuxcnc-opfs-source-map.md >/dev/null
|
|
grep -F 'parseFileWithParameterFile()' docs/linuxcnc-opfs-source-map.md >/dev/null
|
|
|
|
grep -F 'const LINUXCNC_DEFAULT_PARAMETER_FILE = "rs274ngc.var";' web/src/wasm-core.js >/dev/null
|
|
grep -F '`${LINUXCNC_DEFAULT_PARAMETER_FILE}.new`' web/src/wasm-core.js >/dev/null
|
|
grep -F '`${LINUXCNC_DEFAULT_PARAMETER_FILE}.bak`' web/src/wasm-core.js >/dev/null
|
|
grep -F 'LinuxCNC source basis: rs274ngc_pre.cc restore_parameters() reads the' web/src/wasm-core.js >/dev/null
|
|
grep -F 'before replacing the main file and managing filename + ".bak".' web/src/wasm-core.js >/dev/null
|
|
grep -F 'OPFS cannot be disabled in browser contexts with OPFS support' web/src/wasm-core.js >/dev/null
|
|
grep -F 'const events = await simulator.parseFileWithParameterFile(programPath, parameterPath, "linuxcnc", parseOptions);' \
|
|
web/src/app.js >/dev/null
|
|
grep -F 'OPFS workspace is required for browser program parsing' web/src/app.js >/dev/null
|
|
|
|
if grep -R -n -E 'localStorage|sessionStorage|indexedDB|showOpenFilePicker|showSaveFilePicker|showDirectoryPicker|webkitRequestFileSystem|FileReader' web/src; then
|
|
echo "browser app/wasm code must not add filesystem persistence outside OPFS" >&2
|
|
exit 1
|
|
fi
|