X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=command_util.sh;h=abae4ec2b74c84e925c0297900c01c3dfb3c553a;hb=c9df5dfaa915915e0717c1992bc8498f6432dba8;hp=563ab1a25ebe80e6e7bd837fa5e613d8ba3e880c;hpb=a5158610b0a44f7b0d26c603dc1063dec15d5eb5;p=paraslash.git diff --git a/command_util.sh b/command_util.sh index 563ab1a2..abae4ec2 100755 --- a/command_util.sh +++ b/command_util.sh @@ -10,6 +10,9 @@ read_header() ---) break ;; + BN:) + base_name="$value" + ;; OF:) output_file="$value" array_name=${value%command_list}cmds @@ -198,42 +201,39 @@ make_proto() for source_file in $source_files; do match=$(grep "^\(__noreturn \)*int com_$name_txt(" $source_file | head -n 1 | sed -e 's/$/;/1') if test -n "$match"; then - result="$result $match$CR" + result="$result$match$CR" break fi done - echo } make_array_member() { - local TAB=' ' + local TAB=' ' CR=' +' local tmp - result=" - { - .name = \"$name_txt\", - .handler = com_$name_txt, - " + result="{.name = \"$name_txt\", .handler = com_$name_txt, " if test -n "$perms_txt"; then result="$result .perms = $perms_txt," fi - result="$result - .description = \"$desc_txt\", - .usage = \"$usage_txt\", - .help = " + result="$result.description = \"$desc_txt\", .usage = \"$usage_txt\", \\$CR .help = " tmp="$(printf "%s\n" "$help_txt" | sed -e 's/^/\"/g' -e 's/$/\\n\"/g' \ - -e "s/$TAB/\\\t/g")" - result="$result $tmp }," + -e "s/$TAB/\\\t/g" -e's/$/\\/g')" + result="$result$tmp$CR}, \\$CR" } make_completion() { - result=" {.name = \"$name_txt\", .completer = ${name_txt}_completer}, \\" + local CR=' +' + result=" {.name = \"$name_txt\", .completer = ${name_txt}_completer}, \\$CR" } template_loop() { + local loop_result= + local t_name="$name_txt" local t_perms="$perms_txt" local t_desc="$desc_txt" @@ -253,9 +253,16 @@ template_loop() prototype=$(echo "$template_prototype" | $sed_cmd) result= $1 - echo "$result" + loop_result="$loop_result$result" done - + result="$loop_result" + # reset global variables + name_txt="$t_name" + perms_txt="$t_perms" + desc_txt="$t_desc" + usage_txt="$t_usage" + help_txt="$t_help" + source_files="$t_source_files" } com_c_file() @@ -273,16 +280,20 @@ com_c_file() fi if test $template -eq 0; then make_array_member - echo "$result" + printf "%s" "$result" continue fi template_loop make_array_member + printf "%s" "$result" done echo '{.name = NULL}};' } com_header() { + local array_members CR=' +' + echo "extern struct $array_type $array_name[];" while : ; do read_one_command @@ -294,11 +305,18 @@ com_header() fi if test $template -eq 0; then make_proto - echo "$result" + printf "%s" "$result" + make_array_member + array_members="$array_members$result" continue fi template_loop make_proto + printf "%s" "$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" } com_completion() @@ -315,10 +333,11 @@ com_completion() fi if test $template -eq 0; then make_completion - echo "$result" + printf "%s" "$result" continue fi template_loop make_completion + printf "%s" "$result" done echo }