svn commit: r1925934 - in /subversion/branches/utf8-cmdline-prototype/subversion: libsvn_client/cmdline.c libsvn_client/deprecated.c libsvn_subr/deprecated.c libsvn_subr/opt.c

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
Author: rinrab
Date: Thu May 29 14:09:34 2025
New Revision: 1925934

URL: http://svn.apache.org/viewvc?rev=1925934&view=rev
Log:
On the 'utf8-cmdline-prototype' branch: use svn_opt_parse_all_args() in
args_to_target_array() functions and convert encoding later if needed.
This function will properly read arguments from parser and handle errors.

* subversion/libsvn_client/cmdline.c
* subversion/libsvn_client/deprecated.c
* subversion/libsvn_subr/deprecated.c
* subversion/libsvn_subr/opt.c
  (svn_client_args_to_target_array3,
   svn_client_args_to_target_array2,
   svn_opt_args_to_target_array4,
   svn_opt_args_to_target_array3,
   svn_opt__args_to_target_array): ditto.

Modified:
    subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c
    subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/deprecated.c
    subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/deprecated.c
    subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/opt.c

Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c
URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c?rev=1925934&r1=1925933&r2=1925934&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c Thu May 29 14:09:34 2025
@@ -372,13 +372,9 @@ svn_client_args_to_target_array3(apr_arr
                                  svn_boolean_t keep_last_origpath_on_truepath_collision,
                                  apr_pool_t *pool)
 {
-  apr_array_header_t *utf8_input_targets = apr_array_make(
-    pool, os->argc - os->ind, sizeof(const char *));
+  apr_array_header_t *utf8_input_targets;
 
-  for (; os->ind < os->argc; os->ind++)
-    {
-      APR_ARRAY_PUSH(utf8_input_targets, const char *) = os->argv[os->ind];
-    }
+  SVN_ERR(svn_opt_parse_all_args(&utf8_input_targets, os, pool));
 
   return svn_error_trace(svn_client__process_target_array(
       targets_p, utf8_input_targets, known_targets, ctx,

Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/deprecated.c?rev=1925934&r1=1925933&r2=1925934&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/deprecated.c Thu May 29 14:09:34 2025
@@ -450,17 +450,21 @@ svn_client_args_to_target_array2(apr_arr
                                  svn_boolean_t keep_last_origpath_on_truepath_collision,
                                  apr_pool_t *pool)
 {
-  apr_array_header_t *utf8_input_targets = apr_array_make(
-    pool, os->argc - os->ind, sizeof(const char *));
+  apr_array_header_t *input_targets;
+  apr_array_header_t *utf8_input_targets;
+  int i;
 
-  for (; os->ind < os->argc; os->ind++)
+  SVN_ERR(svn_opt_parse_all_args(&input_targets, os, pool));
+
+  utf8_input_targets = apr_array_make(pool, input_targets->nelts,
+                                      sizeof(const char *));
+
+  for (i = 0; i < input_targets->nelts; i++)
     {
-      /* The apr_getopt targets are still in native encoding. */
-      const char *raw_target = os->argv[os->ind];
+      const char *raw_target = APR_ARRAY_IDX(input_targets, i, const char *);
       const char *utf8_target;
 
-      SVN_ERR(svn_utf_cstring_to_utf8(&utf8_target,
-                                      raw_target, pool));
+      SVN_ERR(svn_utf_cstring_to_utf8(&utf8_target, raw_target, pool));
 
       APR_ARRAY_PUSH(utf8_input_targets, const char *) = utf8_target;
     }

Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/deprecated.c?rev=1925934&r1=1925933&r2=1925934&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/deprecated.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/deprecated.c Thu May 29 14:09:34 2025
@@ -814,13 +814,9 @@ svn_opt_args_to_target_array4(apr_array_
                               const apr_array_header_t *known_targets,
                               apr_pool_t *pool)
 {
-  apr_array_header_t *utf8_input_targets =
-      apr_array_make(pool, os->argc - os->ind, sizeof(const char *));
+  apr_array_header_t *utf8_input_targets;
 
-  for (; os->ind < os->argc; os->ind++)
-    {
-      APR_ARRAY_PUSH(utf8_input_targets, const char *) = os->argv[os->ind];
-    }
+  SVN_ERR(svn_opt_parse_all_args(&utf8_input_targets, os, pool));
 
   return svn_error_trace(svn_opt__process_target_array(
       targets_p, utf8_input_targets, known_targets, pool));
@@ -832,13 +828,18 @@ svn_opt_args_to_target_array3(apr_array_
                               const apr_array_header_t *known_targets,
                               apr_pool_t *pool)
 {
-  apr_array_header_t *utf8_input_targets =
-      apr_array_make(pool, os->argc - os->ind, sizeof(const char *));
+  apr_array_header_t *input_targets;
+  apr_array_header_t *utf8_input_targets;
+  int i;
+
+  SVN_ERR(svn_opt_parse_all_args(&input_targets, os, pool));
+
+  utf8_input_targets = apr_array_make(pool, input_targets->nelts,
+                                      sizeof(const char *));
 
-  for (; os->ind < os->argc; os->ind++)
+  for (i = 0; i < input_targets->nelts; i++)
     {
-      /* The apr_getopt targets are still in native encoding. */
-      const char *raw_target = os->argv[os->ind];
+      const char *raw_target = APR_ARRAY_IDX(input_targets, i, const char *);
       const char *utf8_target;
 
       SVN_ERR(svn_utf_cstring_to_utf8(&utf8_target, raw_target, pool));

Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/opt.c
URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/opt.c?rev=1925934&r1=1925933&r2=1925934&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/opt.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/opt.c Thu May 29 14:09:34 2025
@@ -224,13 +224,18 @@ svn_opt__args_to_target_array(apr_array_
                               const apr_array_header_t *known_targets,
                               apr_pool_t *pool)
 {
-  apr_array_header_t *utf8_input_targets =
-      apr_array_make(pool, os->argc - os->ind, sizeof(const char *));
+  apr_array_header_t *input_targets;
+  apr_array_header_t *utf8_input_targets;
+  int i;
 
-  for (; os->ind < os->argc; os->ind++)
+  SVN_ERR(svn_opt_parse_all_args(&input_targets, os, pool));
+
+  utf8_input_targets = apr_array_make(pool, input_targets->nelts,
+                                      sizeof(const char *));
+
+  for (i = 0; i < input_targets->nelts; i++)
     {
-      /* The apr_getopt targets are still in native encoding. */
-      const char *raw_target = os->argv[os->ind];
+      const char *raw_target = APR_ARRAY_IDX(input_targets, i, const char *);
       const char *utf8_target;
 
       SVN_ERR(svn_utf_cstring_to_utf8(&utf8_target, raw_target, pool));
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.