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));


Reply via email to