Author: rinrab
Date: Sun Jun 1 12:13:59 2025
New Revision: 1926038
URL: http://svn.apache.org/viewvc?rev=1926038&view=rev
Log:
On the 'utf8-cmdline-prototype' branch: utf8-ize svnmucc program.
* subversion/svnmucc/svnmucc.c
(sub_main): Convert all args straight to utf8 and remove later conversion.
Modified:
subversion/branches/utf8-cmdline-prototype/subversion/svnmucc/svnmucc.c
Modified:
subversion/branches/utf8-cmdline-prototype/subversion/svnmucc/svnmucc.c
URL:
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svnmucc/svnmucc.c?rev=1926038&r1=1926037&r2=1926038&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svnmucc/svnmucc.c
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svnmucc/svnmucc.c Sun
Jun 1 12:13:59 2025
@@ -575,7 +575,7 @@ sub_main(int *exit_code,
/* Check library versions */
SVN_ERR(check_lib_versions());
- SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+ SVN_ERR(svn_cmdline__get_utf8_argv(&argv, argc, cmdline_argv, pool));
/* Initialize the RA library. */
SVN_ERR(svn_ra_initialize(pool));
@@ -588,10 +588,9 @@ sub_main(int *exit_code,
while (1)
{
int opt;
- const char *arg;
const char *opt_arg;
- apr_status_t status = apr_getopt_long(opts, options, &opt, &arg);
+ apr_status_t status = apr_getopt_long(opts, options, &opt, &opt_arg);
if (APR_STATUS_IS_EOF(status))
break;
if (status != APR_SUCCESS)
@@ -603,41 +602,35 @@ sub_main(int *exit_code,
switch(opt)
{
case 'm':
- SVN_ERR(svn_utf_cstring_to_utf8(&message, arg, pool));
+ message = apr_pstrdup(pool, opt_arg);
break;
case 'F':
- {
- const char *filename;
- SVN_ERR(svn_utf_cstring_to_utf8(&filename, arg, pool));
- SVN_ERR(svn_stringbuf_from_file2(&filedata, filename, pool));
- SVN_ERR(svn_utf_stringbuf_to_utf8(&filedata, filedata, pool));
- }
+ SVN_ERR(svn_stringbuf_from_file2(&filedata, opt_arg, pool));
+ SVN_ERR(svn_utf_stringbuf_to_utf8(&filedata, filedata, pool));
break;
case 'u':
- username = apr_pstrdup(pool, arg);
+ username = apr_pstrdup(pool, opt_arg);
break;
case 'p':
- password = apr_pstrdup(pool, arg);
+ password = apr_pstrdup(pool, opt_arg);
break;
case password_from_stdin_opt:
read_pass_from_stdin = TRUE;
break;
case 'U':
- SVN_ERR(svn_utf_cstring_to_utf8(&root_url, arg, pool));
- if (! svn_path_is_url(root_url))
+ if (! svn_path_is_url(opt_arg))
return svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
- "'%s' is not a URL\n", root_url);
- root_url = sanitize_url(root_url, pool);
+ "'%s' is not a URL\n", opt_arg);
+ root_url = sanitize_url(opt_arg, pool);
break;
case 'r':
- SVN_ERR(svn_opt_parse_revnum(&base_revision, arg));
+ SVN_ERR(svn_opt_parse_revnum(&base_revision, opt_arg));
break;
case with_revprop_opt:
- SVN_ERR(svn_utf_cstring_to_utf8(&opt_arg, arg, pool));
SVN_ERR(svn_opt_parse_revprop2(&revprops, opt_arg, pool));
break;
case 'X':
- SVN_ERR(svn_utf_cstring_to_utf8(&extra_args_file, arg, pool));
+ extra_args_file = apr_pstrdup(pool, opt_arg);
break;
case non_interactive_opt:
non_interactive = TRUE;
@@ -649,7 +642,6 @@ sub_main(int *exit_code,
trust_unknown_ca = TRUE;
break;
case trust_server_cert_failures_opt:
- SVN_ERR(svn_utf_cstring_to_utf8(&opt_arg, arg, pool));
SVN_ERR(svn_cmdline__parse_trust_options(
&trust_unknown_ca,
&trust_cn_mismatch,
@@ -659,10 +651,9 @@ sub_main(int *exit_code,
opt_arg, pool));
break;
case config_dir_opt:
- SVN_ERR(svn_utf_cstring_to_utf8(&config_dir, arg, pool));
+ config_dir = apr_pstrdup(pool, opt_arg);
break;
case config_inline_opt:
- SVN_ERR(svn_utf_cstring_to_utf8(&opt_arg, arg, pool));
SVN_ERR(svn_cmdline__parse_config_option(config_options, opt_arg,
"svnmucc: ",
pool));
@@ -712,19 +703,12 @@ sub_main(int *exit_code,
}
- /* Copy the rest of our command-line arguments to an array,
- UTF-8-ing them along the way. */
- action_args = apr_array_make(pool, opts->argc, sizeof(const char *));
- while (opts->ind < opts->argc)
- {
- const char *arg;
-
- SVN_ERR(svn_utf_cstring_to_utf8(&arg, opts->argv[opts->ind++], pool));
- APR_ARRAY_PUSH(action_args, const char *) = arg;
- }
+ /* Copy the rest of our command-line arguments to an array. */
+ SVN_ERR(svn_opt_parse_all_args(&action_args, opts, pool));
/* If there are extra arguments in a supplementary file, tack those
- on, too (again, in UTF8 form). */
+ on, too (also converting them to UTF8 form, since files could be
+ encoded unproperly). */
if (extra_args_file)
{
svn_stringbuf_t *contents, *contents_utf8;