Compare commits
2 Commits
81c7b061a8
...
decc008609
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
decc008609 | ||
|
|
3c2df90872 |
@@ -124,6 +124,13 @@ Efficiency rules:
|
|||||||
entries as source coverage only. Resolvable tool tables referenced by
|
entries as source coverage only. Resolvable tool tables referenced by
|
||||||
M428/M429/M430 INI files must be present as `tooldata` manifest entries and
|
M428/M429/M430 INI files must be present as `tooldata` manifest entries and
|
||||||
must not become new generated API aliases or browser cases.
|
must not become new generated API aliases or browser cases.
|
||||||
|
- LinuxCNC `halcmd loadusr` parsing must stay source-tied to
|
||||||
|
`src/hal/utils/halcmd_commands.cc` `do_loadusr_cmd()` and its
|
||||||
|
`getopt("+wWin:")` option model. Generator/checker code that extracts
|
||||||
|
user-space component programs from INI/HAL `loadusr` lines must also preserve
|
||||||
|
the common `-W/-Wn/-w/-iw` forms listed by
|
||||||
|
`src/hal/utils/halcmd_completion.c`, and must skip wait component names such
|
||||||
|
as `-Wn NAME` or `-n NAME` before recording the actual program source.
|
||||||
- The kinematics manifest lister must preserve every allowed manifest group
|
- The kinematics manifest lister must preserve every allowed manifest group
|
||||||
used by switchkins and RTCP coverage, including `asset`, `tooldata`, and
|
used by switchkins and RTCP coverage, including `asset`, `tooldata`, and
|
||||||
`generated`, and must reject unknown filters or output modes for those groups.
|
`generated`, and must reject unknown filters or output modes for those groups.
|
||||||
|
|||||||
@@ -71,6 +71,9 @@ fi
|
|||||||
|
|
||||||
linuxcnc_root=$(cd "$linuxcnc_root" && pwd)
|
linuxcnc_root=$(cd "$linuxcnc_root" && pwd)
|
||||||
|
|
||||||
|
# LinuxCNC source basis: src/hal/utils/halcmd_commands.cc do_loadusr_cmd()
|
||||||
|
# parses loadusr options with getopt("+wWin:"), and
|
||||||
|
# src/hal/utils/halcmd_completion.c lists the common -W/-Wn/-w/-iw forms.
|
||||||
read_ini_switchkins_config() {
|
read_ini_switchkins_config() {
|
||||||
local file=$1
|
local file=$1
|
||||||
awk '
|
awk '
|
||||||
@@ -79,6 +82,31 @@ read_ini_switchkins_config() {
|
|||||||
sub(/[[:space:]]*$/, "", value)
|
sub(/[[:space:]]*$/, "", value)
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
function loadusr_program(value, fields, field_count, i, token) {
|
||||||
|
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", value)
|
||||||
|
field_count = split(value, fields, /[[:space:]]+/)
|
||||||
|
for (i = 1; i <= field_count; i++) {
|
||||||
|
token = fields[i]
|
||||||
|
if (token == "-W" || token == "-w" || token == "-i") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token == "-Wn" || token == "-n") {
|
||||||
|
i++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token ~ /^-Wn.+/ || token ~ /^-n.+/) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token ~ /^-[wWi]+$/) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token ~ /^-/) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return token
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
{
|
{
|
||||||
line = $0
|
line = $0
|
||||||
sub(/[[:space:]]*[#;].*$/, "", line)
|
sub(/[[:space:]]*[#;].*$/, "", line)
|
||||||
@@ -108,12 +136,7 @@ read_ini_switchkins_config() {
|
|||||||
} else if (section == "hal" && key == "halcmd") {
|
} else if (section == "hal" && key == "halcmd") {
|
||||||
lower = tolower(value)
|
lower = tolower(value)
|
||||||
if (lower ~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
if (lower ~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
||||||
command = value
|
command = loadusr_program(value)
|
||||||
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", command)
|
|
||||||
while (command ~ /^-[^[:space:]]+[[:space:]]+/) {
|
|
||||||
sub(/^-[^[:space:]]+[[:space:]]+/, "", command)
|
|
||||||
}
|
|
||||||
sub(/[[:space:]].*$/, "", command)
|
|
||||||
if (command != "") {
|
if (command != "") {
|
||||||
print "halcmd_loadusr\t" command
|
print "halcmd_loadusr\t" command
|
||||||
}
|
}
|
||||||
@@ -167,6 +190,31 @@ read_loadusr_commands() {
|
|||||||
sub(/[[:space:]]*$/, "", value)
|
sub(/[[:space:]]*$/, "", value)
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
function loadusr_program(value, fields, field_count, i, token) {
|
||||||
|
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", value)
|
||||||
|
field_count = split(value, fields, /[[:space:]]+/)
|
||||||
|
for (i = 1; i <= field_count; i++) {
|
||||||
|
token = fields[i]
|
||||||
|
if (token == "-W" || token == "-w" || token == "-i") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token == "-Wn" || token == "-n") {
|
||||||
|
i++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token ~ /^-Wn.+/ || token ~ /^-n.+/) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token ~ /^-[wWi]+$/) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (token ~ /^-/) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return token
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
{
|
{
|
||||||
line = $0
|
line = $0
|
||||||
sub(/[[:space:]]*#.*/, "", line)
|
sub(/[[:space:]]*#.*/, "", line)
|
||||||
@@ -175,13 +223,9 @@ read_loadusr_commands() {
|
|||||||
if (lower !~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
if (lower !~ /(^|[[:space:]])loadusr([[:space:]]|$)/) {
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
sub(/^.*(^|[[:space:]])loadusr[[:space:]]+/, "", line)
|
command = loadusr_program(line)
|
||||||
while (line ~ /^-[^[:space:]]+[[:space:]]+/) {
|
if (command != "") {
|
||||||
sub(/^-[^[:space:]]+[[:space:]]+/, "", line)
|
print command
|
||||||
}
|
|
||||||
sub(/[[:space:]].*$/, "", line)
|
|
||||||
if (line != "") {
|
|
||||||
print line
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
' "$file"
|
' "$file"
|
||||||
|
|||||||
@@ -149,6 +149,12 @@ grep -F 'missing LinuxCNC switchkins remap source in manifest:' check-linuxcnc-s
|
|||||||
grep -F 'LinuxCNC source basis: cached switchkins/remap validation hashes the LinuxCNC' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
|
grep -F 'LinuxCNC source basis: cached switchkins/remap validation hashes the LinuxCNC' check-linuxcnc-switchkins-remap-table-cached.sh >/dev/null
|
||||||
grep -F 'LinuxCNC source basis: generated switchkins/remap tables are extracted from' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
grep -F 'LinuxCNC source basis: generated switchkins/remap tables are extracted from' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
grep -F 'LINUXCNC_ROOT="$linuxcnc_root" ./check-linuxcnc-inputs-cached.sh "$manifest"' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
grep -F 'LINUXCNC_ROOT="$linuxcnc_root" ./check-linuxcnc-inputs-cached.sh "$manifest"' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
|
grep -F 'src/hal/utils/halcmd_commands.cc do_loadusr_cmd()' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
|
grep -F 'getopt("+wWin:")' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
|
grep -F 'src/hal/utils/halcmd_completion.c lists the common -W/-Wn/-w/-iw forms' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
|
grep -F 'function loadusr_program(value, fields, field_count, i, token)' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
|
grep -F 'if (token == "-Wn" || token == "-n")' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
|
grep -F 'i++' generate-linuxcnc-switchkins-remap-table.sh >/dev/null
|
||||||
grep -F 'LinuxCNC source basis: Puma560 DH parameter output is generated from' generate-linuxcnc-puma560-dh-parameters.sh >/dev/null
|
grep -F 'LinuxCNC source basis: Puma560 DH parameter output is generated from' generate-linuxcnc-puma560-dh-parameters.sh >/dev/null
|
||||||
test -x generate-linuxcnc-puma560-dh-parameters.sh
|
test -x generate-linuxcnc-puma560-dh-parameters.sh
|
||||||
grep -F 'usage: $0 [linuxcnc-root-relative-puma560-dh-hal]' generate-linuxcnc-puma560-dh-parameters.sh >/dev/null
|
grep -F 'usage: $0 [linuxcnc-root-relative-puma560-dh-hal]' generate-linuxcnc-puma560-dh-parameters.sh >/dev/null
|
||||||
@@ -190,6 +196,10 @@ grep -F 'the cached wrapper script, checker script, generator script' docs/linux
|
|||||||
grep -F 'generated table/case outputs, and the thin API/web bridge files that pass' docs/linuxcnc-source-policy.md >/dev/null
|
grep -F 'generated table/case outputs, and the thin API/web bridge files that pass' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
grep -F 'switchkins config aliases.' docs/linuxcnc-source-policy.md >/dev/null
|
grep -F 'switchkins config aliases.' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
grep -F 'The switchkins/remap generator must treat LinuxCNC `[EMCIO] TOOL_TABLE`' docs/linuxcnc-source-policy.md >/dev/null
|
grep -F 'The switchkins/remap generator must treat LinuxCNC `[EMCIO] TOOL_TABLE`' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
|
grep -F 'LinuxCNC `halcmd loadusr` parsing must stay source-tied to' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
|
grep -F '`src/hal/utils/halcmd_commands.cc` `do_loadusr_cmd()`' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
|
grep -F '`getopt("+wWin:")` option model' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
|
grep -F '`src/hal/utils/halcmd_completion.c`' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
grep -F 'must not become new generated API aliases or browser cases.' docs/linuxcnc-source-policy.md >/dev/null
|
grep -F 'must not become new generated API aliases or browser cases.' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
grep -F 'The kinematics manifest lister must preserve every allowed manifest group' docs/linuxcnc-source-policy.md >/dev/null
|
grep -F 'The kinematics manifest lister must preserve every allowed manifest group' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
grep -F 'including `asset`, `tooldata`, and' docs/linuxcnc-source-policy.md >/dev/null
|
grep -F 'including `asset`, `tooldata`, and' docs/linuxcnc-source-policy.md >/dev/null
|
||||||
|
|||||||
Reference in New Issue
Block a user