svn_opt.h File Reference

Option and argument parsing for Subversion command lines. More...

`#include "svn_opt_impl.h"`
`#include <apr.h>`
`#include <apr_pools.h>`
`#include <apr_getopt.h>`
`#include <apr_tables.h>`
`#include <apr_hash.h>`
`#include <apr_want.h>`
`#include "svn_types.h"`

Go to the source code of this file.

## Data Structures

struct | svn_opt_subcommand_desc3_t
| One element of a subcommand dispatch table. More...
struct | svn_opt_subcommand_desc2_t
| One element of a subcommand dispatch table. More...
struct | svn_opt_subcommand_desc_t
| One element of a subcommand dispatch table. More...
union | svn_opt_revision_value_t
| A revision value, which can be specified as a number or a date. More...
struct | svn_opt_revision_t
| A revision, specified in one of `svn_opt_revision_kind` ways. More...
struct | svn_opt_revision_range_t
| A revision range, specified in one of `svn_opt_revision_kind` ways. More...

## Macros

#define | SVN_OPT_MAX_ALIASES 3
| The maximum number of aliases a subcommand can have.
#define | SVN_OPT_MAX_OPTIONS 50
| The maximum number of options that can be accepted by a subcommand.
#define | SVN_OPT_MAX_PARAGRAPHS 100
| The maximum number of paragraphs of help text a subcommand can have. More...
#define | SVN_OPT_FIRST_LONGOPT_ID 256
| Options that have no short option char should use an identifying integer equal to or greater than this.

## Typedefs

typedef svn_error_t *() | svn_opt_subcommand_t(apr_getopt_t *os, void *baton, apr_pool_t *pool)
| All subcommand procedures in Subversion conform to this prototype. More...
typedef struct svn_opt_subcommand_desc3_t | svn_opt_subcommand_desc3_t
| One element of a subcommand dispatch table. More...
typedef struct svn_opt_subcommand_desc2_t | svn_opt_subcommand_desc2_t
| One element of a subcommand dispatch table. More...
typedef struct svn_opt_subcommand_desc_t | svn_opt_subcommand_desc_t
| One element of a subcommand dispatch table. More...
typedef union svn_opt_revision_value_t | svn_opt_revision_value_t
| A revision value, which can be specified as a number or a date. More...
typedef struct svn_opt_revision_t | svn_opt_revision_t
| A revision, specified in one of `svn_opt_revision_kind` ways.
typedef struct svn_opt_revision_range_t | svn_opt_revision_range_t
| A revision range, specified in one of `svn_opt_revision_kind` ways.

## Functions

const svn_opt_subcommand_desc3_t * | svn_opt_get_canonical_subcommand3 (const svn_opt_subcommand_desc3_t *table, const char *cmd_name)
| Return the entry in table whose name matches cmd_name, or `NULL` if none. More...
const svn_opt_subcommand_desc2_t * | svn_opt_get_canonical_subcommand2 (const svn_opt_subcommand_desc2_t *table, const char *cmd_name)
| Same as svn_opt_get_canonical_subcommand3(), but with a different version of the subcommand description table. More...
const svn_opt_subcommand_desc_t * | svn_opt_get_canonical_subcommand (const svn_opt_subcommand_desc_t *table, const char *cmd_name)
| Return the entry in table whose name matches cmd_name, or `NULL` if none. More...
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)
| Return pointer to an `apr_getopt_option_t` for the option whose option code is code, or `NULL` if no match. More...
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)
| Same as svn_opt_get_option_from_code3(), but with a different version of the subcommand description table. More...
const apr_getopt_option_t * | svn_opt_get_option_from_code (int code, const apr_getopt_option_t *option_table)
| Return the first entry from option_table whose option code is code, or `NULL` if no match. More...
svn_boolean_t | svn_opt_subcommand_takes_option4 (const svn_opt_subcommand_desc3_t *command, int option_code, const int *global_options)
| Return `TRUE` iff subcommand command supports option option_code, else return `FALSE`. More...
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_option4(), but with a different version of the subcommand description table. More...
svn_boolean_t | svn_opt_subcommand_takes_option2 (const svn_opt_subcommand_desc2_t *command, int option_code)
| Same as svn_opt_subcommand_takes_option3(), but with `NULL` for global_options. More...
svn_boolean_t | svn_opt_subcommand_takes_option (const svn_opt_subcommand_desc_t *command, int option_code)
| Return `TRUE` iff subcommand command supports option option_code, else return `FALSE`. More...
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)
| Print a generic (not command-specific) usage message to stream. More...
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_help3(), but with a different version of the subcommand description table. More...
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)
| Same as svn_opt_print_generic_help2(), but acts on svn_opt_subcommand_desc_t. More...
void | svn_opt_format_option (const char **string, const apr_getopt_option_t *opt, svn_boolean_t doc, apr_pool_t *pool)
| Print an option opt nicely into a string allocated in pool. More...
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)
| Get subcommand's usage from table, and print it to `stdout`. More...
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_help4(), but with a different version of the subcommand description table. More...
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_help3(), but with global_options always NULL. More...
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)
| Same as svn_opt_subcommand_help2(), but acts on svn_opt_subcommand_desc_t. More...
int | svn_opt_parse_revision (svn_opt_revision_t *start_revision, svn_opt_revision_t *end_revision, const char *arg, apr_pool_t *pool)
| Set *start_revision and/or *end_revision according to arg, where arg is "N" or "N:M", like so: More...
int | svn_opt_parse_revision_to_range (apr_array_header_t *opt_ranges, const char *arg, apr_pool_t *pool)
| Parse arg, where arg is "N" or "N:M", into a `svn_opt_revision_range_t` and push that onto opt_ranges. More...
svn_error_t * | svn_opt_resolve_revisions (svn_opt_revision_t *peg_rev, svn_opt_revision_t *op_rev, svn_boolean_t is_url, svn_boolean_t notice_local_mods, apr_pool_t *pool)
| Resolve peg revisions and operational revisions in the following way: More...
svn_error_t * | svn_opt_args_to_target_array3 (apr_array_header_t **targets_p, apr_getopt_t *os, const apr_array_header_t *known_targets, apr_pool_t *pool)
| Pull remaining target arguments from os into *targets_p, converting them to UTF-8, followed by targets from known_targets (which might come from, for example, the "--targets" command line option), which are already in UTF-8. More...
svn_error_t * | svn_opt_args_to_target_array2 (apr_array_header_t **targets_p, apr_getopt_t *os, const apr_array_header_t *known_targets, apr_pool_t *pool)
| This is the same as svn_opt_args_to_target_array3() except that it silently ignores paths that have the same name as a working copy administrative directory. More...
svn_error_t * | svn_opt_args_to_target_array (apr_array_header_t **targets_p, apr_getopt_t *os, const apr_array_header_t *known_targets, svn_opt_revision_t *start_revision, svn_opt_revision_t *end_revision, svn_boolean_t extract_revisions, apr_pool_t *pool)
| The same as svn_opt_args_to_target_array2() except that, in addition, if extract_revisions is set, then look for trailing "@rev" syntax on the first two paths. More...
svn_error_t * | svn_opt_parse_revprop (apr_hash_t **revprops, const char *revprop_spec, apr_pool_t *pool)
| Parse revprop key/value pair from revprop_spec (name[=value]) into revprops, making copies of both with pool. More...
void | svn_opt_push_implicit_dot_target (apr_array_header_t *targets, apr_pool_t *pool)
| If no targets exist in *targets, add ‘. More...
svn_error_t * | svn_opt_parse_num_args (apr_array_header_t **args_p, apr_getopt_t *os, int num_args, apr_pool_t *pool)
| Parse num_args non-target arguments from the list of arguments in os->argv, return them as `const char *` in *args_p, without doing any UTF-8 conversion. More...
svn_error_t * | svn_opt_parse_all_args (apr_array_header_t **args_p, apr_getopt_t *os, apr_pool_t *pool)
| Parse all remaining arguments from os->argv, return them as `const char *` in *args_p, without doing any UTF-8 conversion. More...
svn_error_t * | svn_opt_parse_path (svn_opt_revision_t *rev, const char **truepath, const char *path, apr_pool_t *pool)
| Parse a working-copy path or URL in path, extracting any trailing revision specifier of the form "@rev" from the last component of the path. More...
svn_error_t * | svn_opt_print_help5 (apr_getopt_t *os, const char *pgm_name, svn_boolean_t print_version, svn_boolean_t quiet, svn_boolean_t verbose, const char *version_footer, const char *header, const svn_opt_subcommand_desc3_t *cmd_table, const apr_getopt_option_t *option_table, const int *global_options, const char *footer, apr_pool_t *pool)
| Central dispatcher function for various kinds of help message. More...
svn_error_t * | svn_opt_print_help4 (apr_getopt_t *os, const char *pgm_name, svn_boolean_t print_version, svn_boolean_t quiet, svn_boolean_t verbose, const char *version_footer, const char *header, const svn_opt_subcommand_desc2_t *cmd_table, const apr_getopt_option_t *option_table, const int *global_options, const char *footer, apr_pool_t *pool)
| Same as svn_opt_print_help5(), but with a different version of the subcommand description table. More...
svn_error_t * | svn_opt_print_help3 (apr_getopt_t *os, const char *pgm_name, svn_boolean_t print_version, svn_boolean_t quiet, const char *version_footer, const char *header, const svn_opt_subcommand_desc2_t *cmd_table, const apr_getopt_option_t *option_table, const int *global_options, const char *footer, apr_pool_t *pool)
| Same as svn_opt_print_help4(), but with verbose always `FALSE`. More...
svn_error_t * | svn_opt_print_help2 (apr_getopt_t *os, const char *pgm_name, svn_boolean_t print_version, svn_boolean_t quiet, const char *version_footer, const char *header, const svn_opt_subcommand_desc2_t *cmd_table, const apr_getopt_option_t *option_table, const char *footer, apr_pool_t *pool)
| Same as svn_opt_print_help3(), but with global_options always `NULL`. More...
svn_error_t * | svn_opt_print_help (apr_getopt_t *os, const char *pgm_name, svn_boolean_t print_version, svn_boolean_t quiet, const char *version_footer, const char *header, const svn_opt_subcommand_desc_t *cmd_table, const apr_getopt_option_t *option_table, const char *footer, apr_pool_t *pool)
| Same as svn_opt_print_help2(), but acts on svn_opt_subcommand_desc_t. More...

## Detailed Description

Option and argument parsing for Subversion command lines.

# @if copyrights

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations

# under the License.

Definition in file svn_opt.h.

## Macro Definition Documentation

## SVN_OPT_MAX_PARAGRAPHS

#define SVN_OPT_MAX_PARAGRAPHS 100

The maximum number of paragraphs of help text a subcommand can have.

Since
  New in 1.11.

Definition at line 76 of file svn_opt.h.

## Typedef Documentation

## svn_opt_revision_value_t

typedef union svn_opt_revision_value_t svn_opt_revision_value_t

A revision value, which can be specified as a number or a date.

Note
  This union was formerly an anonymous inline type in `svn_opt_revision_t`, and was converted to a named type just to make things easier for SWIG.

Since
  New in 1.3.

## svn_opt_subcommand_desc2_t

typedef struct svn_opt_subcommand_desc2_t svn_opt_subcommand_desc2_t

One element of a subcommand dispatch table.

Since
  New in 1.4.

Deprecated:
  Provided for backward compatibility with the 1.10 API.

## svn_opt_subcommand_desc3_t

typedef struct svn_opt_subcommand_desc3_t svn_opt_subcommand_desc3_t

One element of a subcommand dispatch table.

Since
  New in 1.11.

## svn_opt_subcommand_desc_t

typedef struct svn_opt_subcommand_desc_t svn_opt_subcommand_desc_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 `desc_overrides` member.

## svn_opt_subcommand_t

typedef svn_error_t*() svn_opt_subcommand_t(apr_getopt_t *os, void *baton, apr_pool_t *pool)

All subcommand procedures in Subversion conform to this prototype.

os is the apr option state after getopt processing has been run; in other words, it still contains the non-option arguments following the subcommand. See os->argv and os->ind.

baton is anything you need it to be.

pool is used for allocating errors, and for any other allocation unless the instance is explicitly documented to allocate from a pool in baton.

Definition at line 64 of file svn_opt.h.

## Function Documentation

## svn_opt_args_to_target_array()

svn_error_t* svn_opt_args_to_target_array | ( | apr_array_header_t ** | targets_p,
|  | apr_getopt_t * | os,
|  | const apr_array_header_t * | known_targets,
|  | svn_opt_revision_t * | start_revision,
|  | svn_opt_revision_t * | end_revision,
|  | svn_boolean_t | extract_revisions,
|  | apr_pool_t * | pool
| ) |  |

The same as svn_opt_args_to_target_array2() except that, in addition, if extract_revisions is set, then look for trailing "@rev" syntax on the first two paths.

If the first target in *targets_p ends in "@rev", replace it with a canonicalized version of the part before "@rev" and replace *start_revision with the value of "rev". If the second target in *targets_p ends in "@rev", replace it with a canonicalized version of the part before "@rev" and replace *end_revision with the value of "rev". Ignore revision specifiers on any further paths. "rev" can be any form of single revision specifier, as accepted by svn_opt_parse_revision().

Deprecated:
  Provided for backward compatibility with the 1.1 API.

## svn_opt_args_to_target_array2()

svn_error_t* svn_opt_args_to_target_array2 | ( | apr_array_header_t ** | targets_p,
|  | apr_getopt_t * | os,
|  | const apr_array_header_t * | known_targets,
|  | apr_pool_t * | pool
| ) |  |

This is the same as svn_opt_args_to_target_array3() except that it silently ignores paths that have the same name as a working copy administrative directory.

Since
  New in 1.2.

Deprecated:
  Provided for backward compatibility with the 1.4 API.

## svn_opt_args_to_target_array3()

svn_error_t* svn_opt_args_to_target_array3 | ( | apr_array_header_t ** | targets_p,
|  | apr_getopt_t * | os,
|  | const apr_array_header_t * | known_targets,
|  | apr_pool_t * | pool
| ) |  |

Pull remaining target arguments from os into *targets_p, converting them to UTF-8, followed by targets from known_targets (which might come from, for example, the "--targets" command line option), which are already in UTF-8.

On each URL target, do some IRI-to-URI encoding and some auto-escaping. On each local path, canonicalize case and path separators.

Allocate *targets_p and its elements in pool.

If a path has the same name as a Subversion working copy administrative directory, return SVN_ERR_RESERVED_FILENAME_SPECIFIED; if multiple reserved paths are encountered, return a chain of errors, all of which are SVN_ERR_RESERVED_FILENAME_SPECIFIED. Do not return this type of error in a chain with any other type of error, and if this is the only type of error encountered, complete the operation before returning the error(s).

Deprecated:
  Provided for backward compatibility with the 1.5 API.

See also
  svn_client_args_to_target_array()

## svn_opt_format_option()

void svn_opt_format_option | ( | const char ** | string,
|  | const apr_getopt_option_t * | opt,
|  | svn_boolean_t | doc,
|  | apr_pool_t * | pool
| ) |  |

Print an option opt nicely into a string allocated in pool.

If doc is set, include the generic documentation string of opt, localized to the current locale if a translation is available.

## svn_opt_get_canonical_subcommand()

const svn_opt_subcommand_desc_t* svn_opt_get_canonical_subcommand | ( | const svn_opt_subcommand_desc_t * | table,
|  | const char * | cmd_name
| ) |  |

Return the entry in table whose name matches cmd_name, or `NULL` if none.

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_opt_get_canonical_subcommand2()

const svn_opt_subcommand_desc2_t* svn_opt_get_canonical_subcommand2 | ( | const svn_opt_subcommand_desc2_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_opt_get_canonical_subcommand3()

const svn_opt_subcommand_desc3_t* svn_opt_get_canonical_subcommand3 | ( | const svn_opt_subcommand_desc3_t * | table,
|  | const char * | cmd_name
| ) |  |

Return the entry in table whose name matches cmd_name, or `NULL` if none.

cmd_name may be an alias.

Since
  New in 1.11.

## svn_opt_get_option_from_code()

const apr_getopt_option_t* svn_opt_get_option_from_code | ( | int | code,
|  | const apr_getopt_option_t * | option_table
| ) |  |

Return the first entry from option_table whose option code is code, or `NULL` if no match.

option_table must end with an element whose every field is zero.

Deprecated:
  Provided for backward compatibility with the 1.3 API.

## svn_opt_get_option_from_code2()

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
| ) |  |

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_opt_get_option_from_code3()

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
| ) |  |

Return pointer to an `apr_getopt_option_t` for the option whose option code is code, or `NULL` if no match.

option_table must end with an element whose every field is zero. If 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 pool.

Since
  New in 1.11.

## svn_opt_parse_all_args()

svn_error_t* svn_opt_parse_all_args | ( | apr_array_header_t ** | args_p,
|  | apr_getopt_t * | os,
|  | apr_pool_t * | pool
| ) |  |

Parse all remaining arguments from os->argv, return them as `const char *` in *args_p, without doing any UTF-8 conversion.

Allocate *args_p and its values in pool.

## svn_opt_parse_num_args()

svn_error_t* svn_opt_parse_num_args | ( | apr_array_header_t ** | args_p,
|  | apr_getopt_t * | os,
|  | int | num_args,
|  | apr_pool_t * | pool
| ) |  |

Parse num_args non-target arguments from the list of arguments in os->argv, return them as `const char *` in *args_p, without doing any UTF-8 conversion.

Allocate *args_p and its values in pool.

## svn_opt_parse_path()

svn_error_t* svn_opt_parse_path | ( | svn_opt_revision_t * | rev,
|  | const char ** | truepath,
|  | const char * | path,
|  | apr_pool_t * | pool
| ) |  |

Parse a working-copy path or URL in path, extracting any trailing revision specifier of the form "@rev" from the last component of the path.

Some examples would be:

- "foo/bar" -> "foo/bar", (unspecified)
- "foo/bar@13" -> "foo/bar", (number, 13)
- "foo/bar@HEAD" -> "foo/bar", (head)
- "foo/bar@{1999-12-31}" -> "foo/bar", (date, 1999-12-31)
- "http://a/b@27" -> "http://a/b", (number, 27)
- "http://a/b@COMMITTED" -> "http://a/b", (committed) [*]
- "http://a/b@{1999-12-31}" -> "http://a/b", (date, 1999-12-31)
- "http://a/b@%7B1999-12-31%7D" -> "http://a/b", (date, 1999-12-31)
- "foo/bar@1:2" -> error
- "foo/bar@baz" -> error
- "foo/bar@" -> "foo/bar", (unspecified)
- "foo/@bar@" -> "foo/@bar", (unspecified)
- "foo/bar/@13" -> "foo/bar/", (number, 13)
- "foo/bar@@13" -> "foo/bar@", (number, 13)
- "foo/@bar@HEAD" -> "foo/@bar", (head)
- "foo@/bar" -> "foo@/bar", (unspecified)
- "foo@HEAD/bar" -> "foo@HEAD/bar", (unspecified)
- "@foo/bar" -> "@foo/bar", (unspecified)
- "@foo/bar@" -> "@foo/bar", (unspecified)

[*] Syntactically valid but probably not semantically useful.

If a trailing revision specifier is found, parse it into *rev and put the rest of the path into *truepath, allocating from pool; or return an `SVN_ERR_CL_ARG_PARSING_ERROR` (with the effect on *truepath undefined) if the revision specifier is invalid. If no trailing revision specifier is found, set *truepath to path and rev->kind to `svn_opt_revision_unspecified`.

This function does not require that path be in canonical form. No canonicalization is done and *truepath will only be in canonical form if path is in canonical form.

Since
  New in 1.1.
  Since 1.6.5, this returns an error if path contains a peg specifier with no path before it, such as "@abc".
  Since 1.9.0, this no longer returns an error if path contains a peg specifier with no path before it, such as "@abc".

## svn_opt_parse_revision()

int svn_opt_parse_revision | ( | svn_opt_revision_t * | start_revision,
|  | svn_opt_revision_t * | end_revision,
|  | const char * | arg,
|  | apr_pool_t * | pool
| ) |  |

Set *start_revision and/or *end_revision according to arg, where arg is "N" or "N:M", like so:

- If arg is "N", set *start_revision to represent N, and leave *end_revision untouched.
- If arg is "N:M", set *start_revision and *end_revision to represent N and M respectively.

N and/or M may be one of the special revision descriptors recognized by revision_from_word(), or a date in curly braces.

If arg is invalid, return -1; else return 0. It is invalid to omit a revision (as in, ":", "N:" or ":M").

Note
  It is typical, though not required, for *start_revision and *end_revision to be `svn_opt_revision_unspecified` kind on entry.

Use pool for temporary allocations.

## svn_opt_parse_revision_to_range()

int svn_opt_parse_revision_to_range | ( | apr_array_header_t * | opt_ranges,
|  | const char * | arg,
|  | apr_pool_t * | pool
| ) |  |

Parse arg, where arg is "N" or "N:M", into a `svn_opt_revision_range_t` and push that onto opt_ranges.

- If arg is "N", set the `start` field of the `svn_opt_revision_range_t` to represent N and the `end` field to `svn_opt_revision_unspecified`.
- If arg is "N:M", set the `start` field of the `svn_opt_revision_range_t` to represent N and the `end` field to represent M.

If arg is invalid, return -1; else return 0. It is invalid to omit a revision (as in, ":", "N:" or ":M").

Use pool to allocate `svn_opt_revision_range_t` pushed to the array.

Since
  New in 1.5.

## svn_opt_parse_revprop()

svn_error_t* svn_opt_parse_revprop | ( | apr_hash_t ** | revprops,
|  | const char * | revprop_spec,
|  | apr_pool_t * | pool
| ) |  |

Parse revprop key/value pair from revprop_spec (name[=value]) into revprops, making copies of both with pool.

If revprops is `NULL`, allocate a new apr_hash_t in it. revprops maps const char * revprop names to svn_string_t * revprop values for use with svn_repos_get_commit_editor5 and other get_commit_editor APIs.

Since
  New in 1.6.

## svn_opt_print_generic_help()

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
| ) |  |

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_opt_print_generic_help2()

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_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_opt_print_generic_help3()

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
| ) |  |

Print a generic (not command-specific) usage message to stream.

Todo:
  Why is stream a stdio file instead of an svn stream?

If header is non-NULL, print header followed by a newline. Then loop over cmd_table printing the usage for each command (getting option usages from opt_table). Then if footer is non-NULL, print footer followed by a newline.

Use pool for temporary allocation.

Since
  New in 1.11.

## svn_opt_print_help()

svn_error_t* svn_opt_print_help | ( | apr_getopt_t * | os,
|  | const char * | pgm_name,
|  | svn_boolean_t | print_version,
|  | svn_boolean_t | quiet,
|  | const char * | version_footer,
|  | const char * | header,
|  | const svn_opt_subcommand_desc_t * | cmd_table,
|  | const apr_getopt_option_t * | option_table,
|  | const char * | footer,
|  | apr_pool_t * | pool
| ) |  |

Same as svn_opt_print_help2(), but acts on svn_opt_subcommand_desc_t.

Deprecated:
  Provided for backward compatibility with the 1.3 API.

## svn_opt_print_help2()

svn_error_t* svn_opt_print_help2 | ( | apr_getopt_t * | os,
|  | const char * | pgm_name,
|  | svn_boolean_t | print_version,
|  | svn_boolean_t | quiet,
|  | const char * | version_footer,
|  | const char * | header,
|  | const svn_opt_subcommand_desc2_t * | cmd_table,
|  | const apr_getopt_option_t * | option_table,
|  | const char * | footer,
|  | apr_pool_t * | pool
| ) |  |

Same as svn_opt_print_help3(), but with global_options always `NULL`.

Deprecated:
  Provided for backward compatibility with the 1.4 API.

## svn_opt_print_help3()

svn_error_t* svn_opt_print_help3 | ( | apr_getopt_t * | os,
|  | const char * | pgm_name,
|  | svn_boolean_t | print_version,
|  | svn_boolean_t | quiet,
|  | const char * | version_footer,
|  | const char * | header,
|  | const svn_opt_subcommand_desc2_t * | cmd_table,
|  | const apr_getopt_option_t * | option_table,
|  | const int * | global_options,
|  | const char * | footer,
|  | apr_pool_t * | pool
| ) |  |

Same as svn_opt_print_help4(), but with verbose always `FALSE`.

Deprecated:
  Provided for backward compatibility with the 1.7 API.

## svn_opt_print_help4()

svn_error_t* svn_opt_print_help4 | ( | apr_getopt_t * | os,
|  | const char * | pgm_name,
|  | svn_boolean_t | print_version,
|  | svn_boolean_t | quiet,
|  | svn_boolean_t | verbose,
|  | const char * | version_footer,
|  | const char * | header,
|  | const svn_opt_subcommand_desc2_t * | cmd_table,
|  | const apr_getopt_option_t * | option_table,
|  | const int * | global_options,
|  | const char * | footer,
|  | apr_pool_t * | pool
| ) |  |

Same as svn_opt_print_help5(), but with a different version of the subcommand description table.

Since
  New in 1.8.

Deprecated:
  Provided for backward compatibility with the 1.10 API.

## svn_opt_print_help5()

svn_error_t* svn_opt_print_help5 | ( | apr_getopt_t * | os,
|  | const char * | pgm_name,
|  | svn_boolean_t | print_version,
|  | svn_boolean_t | quiet,
|  | svn_boolean_t | verbose,
|  | const char * | version_footer,
|  | const char * | header,
|  | const svn_opt_subcommand_desc3_t * | cmd_table,
|  | const apr_getopt_option_t * | option_table,
|  | const int * | global_options,
|  | const char * | footer,
|  | apr_pool_t * | pool
| ) |  |

Central dispatcher function for various kinds of help message.

Prints one of:

- subcommand-specific help (svn_opt_subcommand_help)
- generic help (svn_opt_print_generic_help)
- version info
- simple usage complaint: "Type '@a pgm_name help' for usage."

If os is not `NULL` and it contains arguments, then try printing help for them as though they are subcommands, using cmd_table and option_table for option information. If not `NULL`, global_options is a zero-terminated array of options taken by all subcommands.

Else, if print_version is TRUE, then print version info, in brief form if quiet is also TRUE; if quiet is FALSE, then if version_footer is non-NULL, print it following the version information. If verbose is TRUE, also print information about the running system and loaded shared libraries, where available.

Else, if os is not `NULL` and does not contain arguments, print generic help, via svn_opt_print_generic_help2() with the header, cmd_table, option_table, and footer arguments.

Else, when os is `NULL`, print the simple usage complaint.

Use pool for temporary allocations.

Notes: The reason this function handles both version printing and general usage help is that a confused user might put both the –version flag and subcommand arguments on a help command line. The logic for handling such a situation should be in one place.

Since
  New in 1.11.

## svn_opt_push_implicit_dot_target()

void svn_opt_push_implicit_dot_target | ( | apr_array_header_t * | targets,
|  | apr_pool_t * | pool
| ) |  |

If no targets exist in *targets, add ‘.

’ as the lone target.

(Some commands take an implicit "." string argument when invoked with no arguments. Those commands make use of this function to add "." to the target array if the user passes no args.)

## svn_opt_resolve_revisions()

svn_error_t* svn_opt_resolve_revisions | ( | svn_opt_revision_t * | peg_rev,
|  | svn_opt_revision_t * | op_rev,
|  | svn_boolean_t | is_url,
|  | svn_boolean_t | notice_local_mods,
|  | apr_pool_t * | pool
| ) |  |

Resolve peg revisions and operational revisions in the following way:

- If is_url is set and peg_rev->kind is `svn_opt_revision_unspecified`, peg_rev->kind defaults to `svn_opt_revision_head`.
- If is_url is not set, and peg_rev->kind is `svn_opt_revision_unspecified`, peg_rev->kind defaults to `svn_opt_revision_base`.
- If op_rev->kind is `svn_opt_revision_unspecified`, op_rev defaults to peg_rev.

Both peg_rev and op_rev may be modified as a result of this function. is_url should be set if the path the revisions refer to is a url, and unset otherwise.

If notice_local_mods is set, `svn_opt_revision_working` is used, instead of `svn_opt_revision_base`.

Use pool for allocations.

Since
  New in 1.5.

## svn_opt_subcommand_help()

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
| ) |  |

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_opt_subcommand_help2()

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_help3(), but with global_options always NULL.

Deprecated:
  Provided for backward compatibility with the 1.4 API.

## svn_opt_subcommand_help3()

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_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_opt_subcommand_help4()

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
| ) |  |

Get subcommand's usage from table, and print it to `stdout`.

Obtain option usage from options_table. If not `NULL`, global_options is a zero-terminated list of global options. Use pool for temporary allocation. subcommand may be a canonical command name or an alias. ###

Todo:
  Why does this only print to `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 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.

## svn_opt_subcommand_takes_option()

svn_boolean_t svn_opt_subcommand_takes_option | ( | const svn_opt_subcommand_desc_t * | command,
|  | int | option_code
| ) |  |

Return `TRUE` iff subcommand command supports option option_code, else return `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_opt_subcommand_takes_option2()

svn_boolean_t svn_opt_subcommand_takes_option2 | ( | const svn_opt_subcommand_desc2_t * | command,
|  | int | option_code
| ) |  |

Same as svn_opt_subcommand_takes_option3(), but with `NULL` for global_options.

Deprecated:
  Provided for backward compatibility with the 1.4 API.

## svn_opt_subcommand_takes_option3()

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_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_opt_subcommand_takes_option4()

svn_boolean_t svn_opt_subcommand_takes_option4 | ( | const svn_opt_subcommand_desc3_t * | command,
|  | int | option_code,
|  | const int * | global_options
| ) |  |

Return `TRUE` iff subcommand command supports option option_code, else return `FALSE`.

If 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.