Author: rinrab
Date: Mon May 26 17:58:39 2025
New Revision: 1925836

URL: http://svn.apache.org/viewvc?rev=1925836&view=rev
Log:
On the 'utf8-cmdline-prototype' branch: Finally, switch 'svn' program to
utf8 arguments.

* subversion/svn/svn.c
  (sub_main): Use svn_cmdline__get_utf8_argv instead of
   svn_cmdline__get_cstring_argv to get normalized arguments.
  (sub_main): Read opt arg directly to utf8_opt_arg and remove conversion.
  (sub_main): For some options which wants cstring, convert utf8_opt_arg back.
  (sub_main): Do not utf8-ize first_arg.
* subversion/svn/util.c
  (svn_cl__args_to_target_array_print_reserved): Use 
svn_client_args_to_target_array_utf8
   instead of svn_client_args_to_target_array2, which doesn't convert result to
   utf8, since we are working with already converted 'os'.

* subversion/svn/auth-cmd.c
* subversion/svn/changelist-cmd.c
* subversion/svn/propdel-cmd.c
* subversion/svn/propedit-cmd.c
* subversion/svn/propget-cmd.c
* subversion/svn/propset-cmd.c
* subversion/svn/shelf-cmd.c
* subversion/svn/shelf2-cmd.c
  (everywhere): Remove unneeded conversions to utf8 using 
svn_utf_cstring_to_utf8(),
   since we are working with already normalized args.

Modified:
    subversion/branches/utf8-cmdline-prototype/subversion/svn/auth-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/changelist-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/propdel-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/propedit-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/propget-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/propset-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf2-cmd.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/svn.c
    subversion/branches/utf8-cmdline-prototype/subversion/svn/util.c

Modified: subversion/branches/utf8-cmdline-prototype/subversion/svn/auth-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/auth-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/auth-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/auth-cmd.c Mon 
May 26 17:58:39 2025
@@ -419,13 +419,7 @@ svn_cl__auth(apr_getopt_t *os, void *bat
   b.patterns = apr_array_make(pool, 1, sizeof(const char *));
   for (; os->ind < os->argc; os->ind++)
     {
-      /* The apr_getopt targets are still in native encoding. */
-      const char *raw_target = os->argv[os->ind];
-      const char *utf8_target;
-
-      SVN_ERR(svn_utf_cstring_to_utf8(&utf8_target,
-                                      raw_target, pool));
-      APR_ARRAY_PUSH(b.patterns, const char *) = utf8_target;
+      APR_ARRAY_PUSH(b.patterns, const char *) = os->argv[os->ind];
     }
 
   SVN_ERR(svn_config_get_user_config_path(&config_path,

Modified: 
subversion/branches/utf8-cmdline-prototype/subversion/svn/changelist-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/changelist-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/changelist-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/changelist-cmd.c 
Mon May 26 17:58:39 2025
@@ -55,8 +55,6 @@ svn_cl__changelist(apr_getopt_t *os,
       apr_array_header_t *args;
       SVN_ERR(svn_opt_parse_num_args(&args, os, 1, pool));
       changelist_name = APR_ARRAY_IDX(args, 0, const char *);
-      SVN_ERR(svn_utf_cstring_to_utf8(&changelist_name,
-                                      changelist_name, pool));
     }
 
   /* Parse the remaining arguments as paths. */

Modified: 
subversion/branches/utf8-cmdline-prototype/subversion/svn/propdel-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/propdel-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/propdel-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/propdel-cmd.c Mon 
May 26 17:58:39 2025
@@ -52,10 +52,9 @@ svn_cl__propdel(apr_getopt_t *os,
   const char *pname;
   apr_array_header_t *args, *targets;
 
-  /* Get the property's name (and a UTF-8 version of that name). */
+  /* Get the property's name. */
   SVN_ERR(svn_opt_parse_num_args(&args, os, 1, pool));
   pname = APR_ARRAY_IDX(args, 0, const char *);
-  SVN_ERR(svn_utf_cstring_to_utf8(&pname, pname, pool));
   /* No need to check svn_prop_name_is_valid for *deleting*
      properties, and it may even be useful to allow, in case invalid
      properties sneaked through somehow. */

Modified: 
subversion/branches/utf8-cmdline-prototype/subversion/svn/propedit-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/propedit-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/propedit-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/propedit-cmd.c 
Mon May 26 17:58:39 2025
@@ -77,11 +77,9 @@ svn_cl__propedit(apr_getopt_t *os,
   const char *pname;
   apr_array_header_t *args, *targets;
 
-  /* Validate the input and get the property's name (and a UTF-8
-     version of that name). */
+  /* Validate the input and get the property's name. */
   SVN_ERR(svn_opt_parse_num_args(&args, os, 1, pool));
   pname = APR_ARRAY_IDX(args, 0, const char *);
-  SVN_ERR(svn_utf_cstring_to_utf8(&pname, pname, pool));
   if (! svn_prop_name_is_valid(pname))
     return svn_error_createf(SVN_ERR_CLIENT_PROPERTY_NAME, NULL,
                              _("'%s' is not a valid Subversion property name"),

Modified: 
subversion/branches/utf8-cmdline-prototype/subversion/svn/propget-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/propget-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/propget-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/propget-cmd.c Mon 
May 26 17:58:39 2025
@@ -335,7 +335,6 @@ svn_cl__propget(apr_getopt_t *os,
   /* PNAME is first argument */
   SVN_ERR(svn_opt_parse_num_args(&args, os, 1, pool));
   pname = APR_ARRAY_IDX(args, 0, const char *);
-  SVN_ERR(svn_utf_cstring_to_utf8(&pname, pname, pool));
   if (! svn_prop_name_is_valid(pname))
     return svn_error_createf(SVN_ERR_CLIENT_PROPERTY_NAME, NULL,
                              _("'%s' is not a valid Subversion property name"),

Modified: 
subversion/branches/utf8-cmdline-prototype/subversion/svn/propset-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/propset-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/propset-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/propset-cmd.c Mon 
May 26 17:58:39 2025
@@ -57,12 +57,10 @@ svn_cl__propset(apr_getopt_t *os,
   apr_array_header_t *args, *targets;
 
   /* PNAME and PROPVAL expected as first 2 arguments if filedata was
-     NULL, else PNAME alone will precede the targets.  Get a UTF-8
-     version of the name, too. */
+     NULL, else PNAME alone will precede the targets. */
   SVN_ERR(svn_opt_parse_num_args(&args, os,
                                  opt_state->filedata ? 1 : 2, scratch_pool));
   pname = APR_ARRAY_IDX(args, 0, const char *);
-  SVN_ERR(svn_utf_cstring_to_utf8(&pname, pname, scratch_pool));
   if (! svn_prop_name_is_valid(pname))
     return svn_error_createf(SVN_ERR_CLIENT_PROPERTY_NAME, NULL,
                              _("'%s' is not a valid Subversion property name"),

Modified: subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf-cmd.c Mon 
May 26 17:58:39 2025
@@ -72,9 +72,8 @@ get_next_argument(const char **arg,
   apr_array_header_t *args;
 
   SVN_ERR(svn_opt_parse_num_args(&args, os, 1, scratch_pool));
-  SVN_ERR(svn_utf_cstring_to_utf8(arg,
-                                  APR_ARRAY_IDX(args, 0, const char *),
-                                  result_pool));
+  *arg = APR_ARRAY_IDX(args, 0, const char *);
+
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf2-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf2-cmd.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf2-cmd.c 
(original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/shelf2-cmd.c Mon 
May 26 17:58:39 2025
@@ -72,9 +72,8 @@ get_next_argument(const char **arg,
   apr_array_header_t *args;
 
   SVN_ERR(svn_opt_parse_num_args(&args, os, 1, scratch_pool));
-  SVN_ERR(svn_utf_cstring_to_utf8(arg,
-                                  APR_ARRAY_IDX(args, 0, const char *),
-                                  result_pool));
+  *arg = APR_ARRAY_IDX(args, 0, const char *);
+
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/utf8-cmdline-prototype/subversion/svn/svn.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/svn.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/svn.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/svn.c Mon May 26 
17:58:39 2025
@@ -2234,7 +2234,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));
 
 #if defined(WIN32) || defined(__CYGWIN__)
   /* Set the working copy administrative directory name. */
@@ -2295,8 +2295,8 @@ sub_main(int *exit_code,
       const char *utf8_opt_arg;
 
       /* Parse the next option. */
-      apr_status_t apr_err = apr_getopt_long(os, svn_cl__options, &opt_id,
-                                             &opt_arg);
+      apr_status_t apr_err = apr_getopt_long(os, svn_cl__options,
+                                             &opt_id, &utf8_opt_arg);
       if (APR_STATUS_IS_EOF(apr_err))
         break;
       else if (apr_err)
@@ -2306,11 +2306,6 @@ sub_main(int *exit_code,
           return SVN_NO_ERROR;
         }
 
-      if (opt_arg != NULL)
-        SVN_ERR(svn_utf_cstring_to_utf8(&utf8_opt_arg, opt_arg, pool));
-      else
-        utf8_opt_arg = NULL;
-
       /* Stash the option code in an array before parsing it. */
       APR_ARRAY_PUSH(received_opts, int) = opt_id;
 
@@ -2526,15 +2521,18 @@ sub_main(int *exit_code,
         opt_state.extensions = apr_pstrdup(pool, utf8_opt_arg);
         break;
       case opt_diff_cmd:
+        SVN_ERR(svn_utf_cstring_from_utf8(&opt_arg, utf8_opt_arg, pool));
         opt_state.diff.diff_cmd = apr_pstrdup(pool, opt_arg);
         break;
       case opt_merge_cmd:
+        SVN_ERR(svn_utf_cstring_from_utf8(&opt_arg, utf8_opt_arg, pool));
         opt_state.merge_cmd = apr_pstrdup(pool, opt_arg);
         break;
       case opt_record_only:
         opt_state.record_only = TRUE;
         break;
       case opt_editor_cmd:
+        SVN_ERR(svn_utf_cstring_from_utf8(&opt_arg, utf8_opt_arg, pool));
         opt_state.editor_cmd = apr_pstrdup(pool, opt_arg);
         break;
       case opt_old_cmd:
@@ -2823,8 +2821,7 @@ sub_main(int *exit_code,
         {
           const char *first_arg;
 
-          SVN_ERR(svn_utf_cstring_to_utf8(&first_arg, os->argv[os->ind++],
-                                          pool));
+          first_arg = os->argv[os->ind++];
           subcommand = svn_opt_get_canonical_subcommand3(svn_cl__cmd_table,
                                                          first_arg);
           if (subcommand == NULL)

Modified: subversion/branches/utf8-cmdline-prototype/subversion/svn/util.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svn/util.c?rev=1925836&r1=1925835&r2=1925836&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/util.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/util.c Mon May 26 
17:58:39 2025
@@ -803,12 +803,10 @@ svn_cl__args_to_target_array_print_reser
                                             svn_boolean_t 
keep_last_origpath_on_truepath_collision,
                                             apr_pool_t *pool)
 {
-  svn_error_t *err = svn_client_args_to_target_array2(targets,
-                                                      os,
-                                                      known_targets,
-                                                      ctx,
-                                                      
keep_last_origpath_on_truepath_collision,
-                                                      pool);
+  svn_error_t *err = svn_client_args_to_target_array_utf8(
+      targets, os, known_targets, ctx,
+      keep_last_origpath_on_truepath_collision, pool);
+
   if (err)
     {
       if (err->apr_err ==  SVN_ERR_RESERVED_FILENAME_SPECIFIED)


Reply via email to