Author: rinrab
Date: Mon May 26 22:05:14 2025
New Revision: 1925845
URL: http://svn.apache.org/viewvc?rev=1925845&view=rev
Log:
On the 'utf8-cmdline-prototype' branch: deprecate svn_client_args_to_target_array2
and rename svn_client_args_to_target_array_utf8 to svn_client_args_to_target_array3.
It also required to factor out something like svn_client__process_target_array()
from libsvn_client/cmdline.c. Yeah, it starts being messy due to all this backward
compat. I hate it, but it's life. Life is hard. I did my best to avoid as much
code duplication as I could.
* subversion/include/svn_client.h
(svn_client_args_to_target_array_utf8): rename to svn_client_args_to_target_array3.
(svn_client_args_to_target_array2): deprecate.
* subversion/libsvn_client/client.h
(SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE): add define.
(svn_client__process_target_array): declare func.
* subversion/libsvn_client/cmdline.c
(DEFAULT_ARRAY_SIZE): moved to header.
(args_to_target_array): rename to svn_client__process_target_array.
(svn_client__process_target_array): Use SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE
instead of DEFAULT_ARRAY_SIZE
(svn_client_args_to_target_array2): moved to deprecated.c
* subversion/libsvn_client/deprecated.c
(svn_client_args_to_target_array2): implement it here.
* subversion/svn/util.c
(svn_cl__args_to_target_array_print_reserved): adjust to use renamed function.
Modified:
subversion/branches/utf8-cmdline-prototype/subversion/include/svn_client.h
subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/client.h
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/svn/util.c
Modified: subversion/branches/utf8-cmdline-prototype/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/include/svn_client.h?rev=1925845&r1=1925844&r2=1925845&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/include/svn_client.h (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/include/svn_client.h Mon May 26 22:05:14 2025
@@ -1138,9 +1138,9 @@ svn_client_create_context(svn_client_ctx
*/
/**
- * Pull remaining target arguments from @a os into @a *targets_p,
- * converting them to UTF-8, followed by targets from @a known_targets
- * (which might come from, for example, the "--targets" command line option).
+ * Pull remaining target arguments from @a os into @a *targets_p, followed by
+ * targets from @a known_targets (which might come from, for example, the
+ * "--targets" command line option).
*
* Process each target in one of the following ways. For a repository-
* relative URL: resolve to a full URL, contacting the repository if
@@ -1170,8 +1170,25 @@ svn_client_create_context(svn_client_ctx
* literal path "@abc" with no peg revision, or the form ".@abc" to refer to
* the empty path with peg revision "abc".
*
+ * @since New in 1.15
+ */
+svn_error_t *
+svn_client_args_to_target_array3(apr_array_header_t **targets_p,
+ apr_getopt_t *os,
+ const apr_array_header_t *known_targets,
+ svn_client_ctx_t *ctx,
+ svn_boolean_t keep_last_origpath_on_truepath_collision,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_args_to_target_array3() but also converts the
+ * targets to UTF-8.
+ *
* @since New in 1.7
+ *
+ * @deprecated Provided for backward compatibility with the 1.14 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_client_args_to_target_array2(apr_array_header_t **targets_p,
apr_getopt_t *os,
@@ -1197,20 +1214,6 @@ svn_client_args_to_target_array(apr_arra
svn_client_ctx_t *ctx,
apr_pool_t *pool);
-/**
- * Similar to svn_client_args_to_target_array2() but assuming that the targets
- * in @a os are already UTF-8 encoded.
- *
- * @since New in 1.15.0
- */
-svn_error_t *
-svn_client_args_to_target_array_utf8(apr_array_header_t **targets_p,
- apr_getopt_t *os,
- const apr_array_header_t *known_targets,
- svn_client_ctx_t *ctx,
- svn_boolean_t keep_last_origpath_on_truepath_collision,
- apr_pool_t *pool);
-
/** @} group end: Client command-line processing */
/** @} */
Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/client.h?rev=1925845&r1=1925844&r2=1925845&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/client.h (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/client.h Mon May 26 22:05:14 2025
@@ -1280,6 +1280,20 @@ svn_client__textbase_sync(svn_ra_session
const svn_version_t *
svn_client__compatible_wc_version_optional_pristine(apr_pool_t *result_pool);
+#define SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE 5
+
+/* Helper for svn_client_args_to_target_array2 and
+ * svn_client_args_to_target_array3.
+ */
+svn_error_t *
+svn_client__process_target_array(apr_array_header_t **targets_p,
+ apr_array_header_t *utf8_targets,
+ const apr_array_header_t *known_targets,
+ svn_client_ctx_t *ctx,
+ svn_boolean_t keep_last_origpath_on_truepath_collision,
+ apr_pool_t *pool);
+
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
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=1925845&r1=1925844&r2=1925845&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c Mon May 26 22:05:14 2025
@@ -41,8 +41,6 @@
/*** Code. ***/
-#define DEFAULT_ARRAY_SIZE 5
-
/* Attempt to find the repository root url for TARGET, possibly using CTX for
* authentication. If one is found and *ROOT_URL is not NULL, then just check
@@ -110,26 +108,23 @@ check_root_url_of_target(const char **ro
return SVN_NO_ERROR;
}
-/* Internal helper for public interfaces svn_client_args_to_target_array2
- * and svn_client_args_to_target_array_utf8.
- *
- * Note: This is substantially copied from svn_opt__args_to_target_array() in
+/* Note: This is substantially copied from svn_opt__args_to_target_array() in
* order to move to libsvn_client while maintaining backward compatibility. */
-static svn_error_t *
-args_to_target_array(apr_array_header_t **targets_p,
- apr_array_header_t *utf8_targets,
- const apr_array_header_t *known_targets,
- svn_client_ctx_t *ctx,
- svn_boolean_t keep_last_origpath_on_truepath_collision,
- apr_pool_t *pool)
+svn_error_t *
+svn_client__process_target_array(apr_array_header_t **targets_p,
+ apr_array_header_t *utf8_targets,
+ const apr_array_header_t *known_targets,
+ svn_client_ctx_t *ctx,
+ svn_boolean_t keep_last_origpath_on_truepath_collision,
+ apr_pool_t *pool)
{
int i;
svn_boolean_t rel_url_found = FALSE;
const char *root_url = NULL;
- apr_array_header_t *input_targets =
- apr_array_make(pool, DEFAULT_ARRAY_SIZE, sizeof(const char *));
- apr_array_header_t *output_targets =
- apr_array_make(pool, DEFAULT_ARRAY_SIZE, sizeof(const char *));
+ apr_array_header_t *input_targets = apr_array_make(
+ pool, SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE, sizeof(const char *));
+ apr_array_header_t *output_targets = apr_array_make(
+ pool, SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE, sizeof(const char *));
apr_array_header_t *reserved_names = NULL;
/* Step 1: create a master array of targets that are in UTF-8
@@ -276,8 +271,9 @@ args_to_target_array(apr_array_header_t
if (svn_wc_is_adm_dir(base_name, pool))
{
if (!reserved_names)
- reserved_names = apr_array_make(pool, DEFAULT_ARRAY_SIZE,
- sizeof(const char *));
+ reserved_names = apr_array_make(
+ pool, SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE,
+ sizeof(const char *));
APR_ARRAY_PUSH(reserved_names, const char *) = utf8_target;
@@ -368,44 +364,17 @@ args_to_target_array(apr_array_header_t
return SVN_NO_ERROR;
}
+
svn_error_t *
-svn_client_args_to_target_array2(apr_array_header_t **targets_p,
+svn_client_args_to_target_array3(apr_array_header_t **targets_p,
apr_getopt_t *os,
const apr_array_header_t *known_targets,
svn_client_ctx_t *ctx,
svn_boolean_t keep_last_origpath_on_truepath_collision,
apr_pool_t *pool)
{
- apr_array_header_t *utf8_input_targets =
- apr_array_make(pool, DEFAULT_ARRAY_SIZE, 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(utf8_input_targets, const char *) = utf8_target;
- }
-
- return svn_error_trace(
- args_to_target_array(targets_p, utf8_input_targets, known_targets, ctx,
- keep_last_origpath_on_truepath_collision, pool));
-}
-
-svn_error_t *
-svn_client_args_to_target_array_utf8(apr_array_header_t **targets_p,
- apr_getopt_t *os,
- const apr_array_header_t *known_targets,
- svn_client_ctx_t *ctx,
- svn_boolean_t keep_last_origpath_on_truepath_collision,
- apr_pool_t *pool)
-{
- apr_array_header_t *utf8_input_targets =
- apr_array_make(pool, DEFAULT_ARRAY_SIZE, sizeof(const char *));
+ apr_array_header_t *utf8_input_targets = apr_array_make(
+ pool, SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE, sizeof(const char *));
for (; os->ind < os->argc; os->ind++)
{
@@ -413,6 +382,6 @@ svn_client_args_to_target_array_utf8(apr
}
return svn_error_trace(
- args_to_target_array(targets_p, utf8_input_targets, known_targets, ctx,
+ svn_client__process_target_array(targets_p, utf8_input_targets, known_targets, ctx,
keep_last_origpath_on_truepath_collision, pool));
}
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=1925845&r1=1925844&r2=1925845&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/deprecated.c Mon May 26 22:05:14 2025
@@ -443,6 +443,34 @@ svn_client_blame(const char *target,
/*** From cmdline.c ***/
svn_error_t *
+svn_client_args_to_target_array2(apr_array_header_t **targets_p,
+ apr_getopt_t *os,
+ const apr_array_header_t *known_targets,
+ svn_client_ctx_t *ctx,
+ svn_boolean_t keep_last_origpath_on_truepath_collision,
+ apr_pool_t *pool)
+{
+ apr_array_header_t *utf8_input_targets = apr_array_make(
+ pool, SVN_CLIENT__CMDLINE_DEFAULT_ARRAY_SIZE, 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(utf8_input_targets, const char *) = utf8_target;
+ }
+
+ return svn_error_trace(svn_client__process_target_array(
+ targets_p, utf8_input_targets, known_targets, ctx,
+ keep_last_origpath_on_truepath_collision, pool));
+}
+
+svn_error_t *
svn_client_args_to_target_array(apr_array_header_t **targets_p,
apr_getopt_t *os,
const apr_array_header_t *known_targets,
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=1925845&r1=1925844&r2=1925845&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svn/util.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svn/util.c Mon May 26 22:05:14 2025
@@ -803,7 +803,7 @@ 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_array_utf8(
+ svn_error_t *err = svn_client_args_to_target_array3(
targets, os, known_targets, ctx,
keep_last_origpath_on_truepath_collision, 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.