elp; /** A list of options accepted by this command. Each value in the * array is a unique enum (the 2nd field in apr_getopt_option_t) */ int valid_options[SVN_OPT_MAX_OPTIONS]; /** A list of option help descriptions, keyed by the option unique enum * (the 2nd field in apr_getopt_option_t), which override the generic * descriptions given in an apr_getopt_option_t on a per-subcommand basis. */ struct { int optch; const char *desc; } desc_overrides[SVN_OPT_MAX_OPTIONS]; } svn_opt_subcommand_desc2_t; /** One element of a subcommand dispatch table. * * @deprecated Provided for backward compatibility with the 1.3 API. * * Like #svn_opt_subcommand_desc2_t but lacking the @c desc_overrides * member. */ typedef struct svn_opt_subcommand_desc_t { /** The full name of this command. */ const char *name; /** The function this command invokes. */ svn_opt_subcommand_t *cmd_func; /** A list of alias names for this command (e.g., 'up' for 'update'). */ const char *aliases[SVN_OPT_MAX_ALIASES]; /** A brief string describing this command, for usage messages. */ const char *help; /** A list of options accepted by this command. Each value in the * array is a unique enum (the 2nd field in apr_getopt_option_t) */ int valid_options[SVN_OPT_MAX_OPTIONS]; } svn_opt_subcommand_desc_t; /** * Return the entry in @a table whose name matches @a cmd_name, or @c NULL if * none. @a cmd_name may be an alias. * * @since New in 1.11. */ const svn_opt_subcommand_desc3_t * svn_opt_get_canonical_subcommand3(const svn_opt_subcommand_desc3_t *table, const char *cmd_name); /** * Same as svn_opt_get_canonical_subcommand3(), but with a different * version of the subcommand description table. * * @since New in 1.4. * @deprecated Provided for backward compatibility with the 1.10 API. */ SVN_DEPRECATED const svn_opt_subcommand_desc2_t * svn_opt_get_canonical_subcommand2(const svn_opt_subcommand_desc2_t *table, const char *cmd_name); /** * Return the entry in @a table whose name matches @a cmd_name, or @c NULL if * none. @a cmd_name may be an alias. * * Same as svn_opt_get_canonical_subcommand2(), but acts on * #svn_opt_subcommand_desc_t. * * @deprecated Provided for backward compatibility with the 1.3 API. */ SVN_DEPRECATED const svn_opt_subcommand_desc_t * svn_opt_get_canonical_subcommand(const svn_opt_subcommand_desc_t *table, const char *cmd_name); /** * Return pointer to an @c apr_getopt_option_t for the option whose * option code is @a code, or @c NULL if no match. @a option_table must end * with an element whose every field is zero. If @a command is non-NULL, * then return the subcommand-specific option description instead of the * generic one, if a specific description is defined. * * The returned value may be statically allocated, or allocated in @a pool. * * @since New in 1.11. */ const apr_getopt_option_t * svn_opt_get_option_from_code3(int code, const apr_getopt_option_t *option_table, const svn_opt_subcommand_desc3_t *command, apr_pool_t *pool); /** * Same as svn_opt_get_option_from_code3(), but with a different * version of the subcommand description table. * * @since New in 1.4. * @deprecated Provided for backward compatibility with the 1.10 API. */ SVN_DEPRECATED const apr_getopt_option_t * svn_opt_get_option_from_code2(int code, const apr_getopt_option_t *option_table, const svn_opt_subcommand_desc2_t *command, apr_pool_t *pool); /** * Return the first entry from @a option_table whose option code is @a code, * or @c NULL if no match. @a option_table must end with an element whose * every field is zero. * * @deprecated Provided for backward compatibility with the 1.3 API. */ SVN_DEPRECATED const apr_getopt_option_t * svn_opt_get_option_from_code(int code, const apr_getopt_option_t *option_table); /** * Return @c TRUE iff subcommand @a command supports option @a * option_code, else return @c FALSE. If @a global_options is * non-NULL, it is a zero-terminated array, and all subcommands take * the options listed in it. * * @since New in 1.11. */ svn_boolean_t svn_opt_subcommand_takes_option4(const svn_opt_subcommand_desc3_t *command, int option_code, const int *global_options); /** * Same as svn_opt_subcommand_takes_option4(), but with a different * version of the subcommand description table. * * @since New in 1.5. * @deprecated Provided for backward compatibility with the 1.10 API. */ SVN_DEPRECATED svn_boolean_t svn_opt_subcommand_takes_option3(const svn_opt_subcommand_desc2_t *command, int option_code, const int *global_options); /** * Same as svn_opt_subcommand_takes_option3(), but with @c NULL for @a * global_options. * * @deprecated Provided for backward compatibility with the 1.4 API. */ SVN_DEPRECATED svn_boolean_t svn_opt_subcommand_takes_option2(const svn_opt_subcommand_desc2_t *command, int option_code); /** * Return @c TRUE iff subcommand @a command supports option @a option_code, * else return @c FALSE. * * Same as svn_opt_subcommand_takes_option2(), but acts on * #svn_opt_subcommand_desc_t. * * @deprecated Provided for backward compatibility with the 1.3 API. */ SVN_DEPRECATED svn_boolean_t svn_opt_subcommand_takes_option(const svn_opt_subcommand_desc_t *command, int option_code); /** * Print a generic (not command-specific) usage message to @a stream. * * @todo Why is @a stream a stdio file instead of an svn stream? * * If @a header is non-NULL, print @a header followed by a newline. Then * loop over @a cmd_table printing the usage for each command (getting * option usages from @a opt_table). Then if @a footer is non-NULL, print * @a footer followed by a newline. * * Use @a pool for temporary allocation. * * @since New in 1.11. */ void svn_opt_print_generic_help3(const char *header, const svn_opt_subcommand_desc3_t *cmd_table, const apr_getopt_option_t *opt_table, const char *footer, apr_pool_t *pool, FILE *stream); /** * Same as svn_opt_print_generic_help3(), but with a different * version of the subcommand description table. * * @since New in 1.4. * @deprecated Provided for backward compatibility with the 1.10 API. */ SVN_DEPRECATED void svn_opt_print_generic_help2(const char *header, const svn_opt_subcommand_desc2_t *cmd_table, const apr_getopt_option_t *opt_table, const char *footer, apr_pool_t *pool, FILE *stream); /** * Same as svn_opt_print_generic_help2(), but acts on * #svn_opt_subcommand_desc_t. * * @deprecated Provided for backward compatibility with the 1.3 API. */ SVN_DEPRECATED void svn_opt_print_generic_help(const char *header, const svn_opt_subcommand_desc_t *cmd_table, const apr_getopt_option_t *opt_table, const char *footer, apr_pool_t *pool, FILE *stream); /** * Print an option @a opt nicely into a @a string allocated in @a pool. * If @a doc is set, include the generic documentation string of @a opt, * localized to the current locale if a translation is available. */ void svn_opt_format_option(const char **string, const apr_getopt_option_t *opt, svn_boolean_t doc, apr_pool_t *pool); /** * Get @a subcommand's usage from @a table, and print it to @c stdout. * Obtain option usage from @a options_table. If not @c NULL, @a * global_options is a zero-terminated list of global options. Use @a * pool for temporary allocation. @a subcommand may be a canonical * command name or an alias. ### @todo Why does this only print to * @c stdout, whereas svn_opt_print_generic_help() gives us a choice? * * When printing the description of an option, if the same option code * appears a second time in @a options_table with a different name, then * use that second name as an alias for the first name. This additional * behaviour is new in 1.7. * * @since New in 1.11. */ void svn_opt_subcommand_help4(const char *subcommand, const svn_opt_subcommand_desc3_t *table, const apr_getopt_option_t *options_table, const int *global_options, apr_pool_t *pool); /** * Same as svn_opt_subcommand_help4(), but with a different * version of the subcommand description table. * * @since New in 1.5. * @deprecated Provided for backward compatibility with the 1.10 API. */ SVN_DEPRECATED void svn_opt_subcommand_help3(const char *subcommand, const svn_opt_subcommand_desc2_t *table, const apr_getopt_option_t *options_table, const int *global_options, apr_pool_t *pool); /** * Same as svn_opt_subcommand_help3(), but with @a global_options * always NULL. * * @deprecated Provided for backward compatibility with the 1.4 API. */ SVN_DEPRECATED void svn_opt_subcommand_help2(const char *subcommand, const svn_opt_subcommand_desc2_t *table, const apr_getopt_option_t *options_table, apr_pool_t *pool); /** * Same as svn_opt_subcommand_help2(), but acts on * #svn_opt_subcommand_desc_t. * * @deprecated Provided for backward compatibility with the 1.3 API. */ SVN_DEPRECATED void svn_opt_subcommand_help(const char *subcommand, const svn_opt_subcommand_desc_t *table, const apr_getopt_option_t *options_table, apr_pool_t *pool);