X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command_util.bash;h=5e9dbcc77e77ac8101e27513d5c0105cf0aa6c33;hp=e33e0769d9cbc2230bf02b70813d5435f2447430;hb=c998e827328c7989986e4fb91048e7f427f722a8;hpb=f76ab46a9216133332cb7e17d38d392caeca22cb diff --git a/command_util.bash b/command_util.bash index e33e0769..5e9dbcc7 100755 --- a/command_util.bash +++ b/command_util.bash @@ -162,24 +162,9 @@ com_man() 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() @@ -239,7 +224,7 @@ template_loop() com_header() { - local array_members CR=' + local array_members handlers= CR=' ' while : ; do @@ -251,19 +236,20 @@ com_header() 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()