Hi,
This patch makes the "svnrdump's" help to display the
subcommand-specific documentation.
( similar to "svn", "svnlook", "svnadmin" ...)
Previously, "svnrdump dump --help" does *not* display the
help-documentation corresponding to "dump", but "svnrdump help dump" did
as expected.
Meanwhile, few other observations in the *current* behaviour are :
1. The "svnrdump" does *not* display the generic documentation as
follows...
" Type 'svn --version' to see the program version and RA modules "
eventhough it supports "svnrdump --version".
2. "svnrdump --version --junk" also displays the version documentation,
which it should *not*.
I am working on these observations to make them behave uniformly and
will come up in further patches.
I have attached the patch and the log file with this mail.
Thanks and regards
Prabhu
Index: subversion/svnrdump/svnrdump.c
===================================================================
--- subversion/svnrdump/svnrdump.c (revision 1049536)
+++ subversion/svnrdump/svnrdump.c (working copy)
@@ -158,6 +158,7 @@
typedef struct opt_baton_t {
svn_ra_session_t *session;
const char *url;
+ svn_boolean_t help;
svn_opt_revision_t start_revision;
svn_opt_revision_t end_revision;
svn_boolean_t quiet;
@@ -750,8 +751,7 @@
exit(EXIT_SUCCESS);
break;
case 'h':
- SVNRDUMP_ERR(help_cmd(os, opt_baton, pool));
- exit(EXIT_SUCCESS);
+ opt_baton->help = TRUE;
break;
case opt_auth_username:
SVNRDUMP_ERR(svn_utf_cstring_to_utf8(&username, opt_arg, pool));
@@ -780,34 +780,42 @@
}
}
- if (os->ind >= os->argc)
+ if (opt_baton->help)
+ subcommand = svn_opt_get_canonical_subcommand2(svnrdump__cmd_table,
+ "help");
+
+ if (subcommand == NULL)
{
- svn_error_clear(svn_cmdline_fprintf(stderr, pool,
- _("Subcommand argument required\n")));
- SVNRDUMP_ERR(help_cmd(NULL, NULL, pool));
- svn_pool_destroy(pool);
- exit(EXIT_FAILURE);
- }
+ if (os->ind >= os->argc)
+ {
+ svn_error_clear(svn_cmdline_fprintf(stderr, pool,
+ _("Subcommand argument required\n")));
+ SVNRDUMP_ERR(help_cmd(NULL, NULL, pool));
+ svn_pool_destroy(pool);
+ exit(EXIT_FAILURE);
+ }
- first_arg = os->argv[os->ind++];
+ else
+ {
+ first_arg = os->argv[os->ind++];
+ subcommand = svn_opt_get_canonical_subcommand2(svnrdump__cmd_table,
+ first_arg);
- subcommand = svn_opt_get_canonical_subcommand2(svnrdump__cmd_table,
- first_arg);
-
- if (subcommand == NULL)
- {
- const char *first_arg_utf8;
- err = svn_utf_cstring_to_utf8(&first_arg_utf8, first_arg, pool);
- if (err)
- return svn_cmdline_handle_exit_error(err, pool, "svnrdump: ");
- svn_error_clear(svn_cmdline_fprintf(stderr, pool,
- _("Unknown command: '%s'\n"),
- first_arg_utf8));
- SVNRDUMP_ERR(help_cmd(NULL, NULL, pool));
- svn_pool_destroy(pool);
- exit(EXIT_FAILURE);
+ if (subcommand == NULL)
+ {
+ const char *first_arg_utf8;
+ err = svn_utf_cstring_to_utf8(&first_arg_utf8, first_arg, pool);
+ if (err)
+ return svn_cmdline_handle_exit_error(err, pool, "svnrdump: ");
+ svn_error_clear(svn_cmdline_fprintf(stderr, pool,
+ _("Unknown command: '%s'\n"),
+ first_arg_utf8));
+ SVNRDUMP_ERR(help_cmd(NULL, NULL, pool));
+ svn_pool_destroy(pool);
+ exit(EXIT_FAILURE);
+ }
+ }
}
-
/* Check that the subcommand wasn't passed any inappropriate options. */
for (i = 0; i < received_opts->nelts; i++)
{
[[[
Make svnrdump display the help manual correctly.
* subversion/svnrdump/svnrdump.c
main(): set the option baton and display the help manual for the corresponding
subcommand.
Patch by: Prabhu Gnana Sundar <[email protected]>
Suggested by: Kamesh Jayachandran <[email protected]>
]]]