done
}
-make_proto()
+cmd_handler_name()
{
- local regex='\(__noreturn \)*\(static \)*int com_'
- local source_file match="" all_commands CR='
-'
- if test -n "$prototype"; then
- result="$prototype$CR"
- return
- fi
- all_commands="$(cat $source_files | grep "$regex")"
- result=
- for source_file in $source_files; do
- match=$(grep "$regex$name_txt(" <<< "$all_commands" | head -n 1 | sed -e 's/$/;/1')
- if test -n "$match"; then
- result="$result$match$CR"
- break
- fi
- done
+ result="com_$name_txt,"
}
make_array_member()
com_header()
{
- local array_members CR='
+ local array_members handlers= CR='
'
while : ; do
break
fi
if test $template -eq 0; then
- make_proto
- printf "%s" "$result"
+ cmd_handler_name
+ handlers+="$result"
make_array_member
array_members="$array_members$result"
continue
fi
- template_loop make_proto
- printf "%s" "$result"
+ template_loop cmd_handler_name
+ handlers+="$result"
template_loop make_array_member
array_members="$array_members$result"
done
array_members="$array_members{.name = NULL} \\$CR"
- echo "#define DEFINE_$(tr 'a-z' 'A-Z' <<< "$base_name")_CMD_ARRAY $array_members"
+ echo "#define DEFINE_${base_name^^}_CMD_ARRAY $array_members"
+ echo "#define ${base_name^^}_COMMAND_HANDLERS ${handlers%,}"
}
com_completion()