return retval;
 }
 
-void command_set_output_handler(command_context_t* context, int (*output_handler)(struct command_context_s *context, const char* line), void *priv)
+void command_set_output_handler(command_context_t* context,
+               command_output_handler_t output_handler, void *priv)
 {
        context->output_handler = output_handler;
        context->output_handler_priv = priv;
 
        COMMAND_ANY,
 };
 
+struct command_context_s;
+
+/// The type signature for command context's output handler.
+typedef int (*command_output_handler_t)(struct command_context_s *context,
+                               const char* line);
+
 typedef struct command_context_s
 {
        enum command_mode mode;
         * Returning ERROR_COMMAND_SYNTAX_ERROR will have the effect of
         * printing out the syntax of the command.
         */
-       int (*output_handler)(struct command_context_s *context, const char* line);
+       command_output_handler_t output_handler;
        void *output_handler_priv;
 } command_context_t;
 
 int unregister_all_commands(command_context_t *context);
 
 void command_set_output_handler(command_context_t* context,
-               int (*output_handler)(struct command_context_s *context,
-               const char* line), void *priv);
+               command_output_handler_t output_handler, void *priv);
 
 command_context_t* copy_command_context(command_context_t* context);