filter: Make ->open() optional.
[paraslash.git] / command_util.bash
index e33e0769d9cbc2230bf02b70813d5435f2447430..5e9dbcc77e77ac8101e27513d5c0105cf0aa6c33 100755 (executable)
@@ -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()