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;


Reply via email to