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

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
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)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.