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