Author: rinrab
Date: Thu May 29 15:54:14 2025
New Revision: 1925937
URL: http://svn.apache.org/viewvc?rev=1925937&view=rev
Log:
Let svn_cmdline__be_interactive() to handle the whole --non-interactive and
--force-interactive logic and handle errors.
* subversion/include/private/svn_cmdline_private.h
(svn_cmdline__be_interactive): Adjust definition to return an SVN error
and set non_interactive with result value.
* subversion/libsvn_subr/cmdline.c
(svn_cmdline__be_interactive): Update implementation to include error
handling and set non_interactive with result value.
* subversion/svn/svn.c,
subversion/svnmucc/svnmucc.c,
subversion/svnrdump/svnrdump.c,
subversion/svnsync/svnsync.c,
tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c:
Update usages.
This also fixes potential issues with incomplete logic.
Modified:
subversion/trunk/subversion/include/private/svn_cmdline_private.h
subversion/trunk/subversion/libsvn_subr/cmdline.c
subversion/trunk/subversion/svn/svn.c
subversion/trunk/subversion/svnmucc/svnmucc.c
subversion/trunk/subversion/svnrdump/svnrdump.c
subversion/trunk/subversion/svnsync/svnsync.c
subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
Modified: subversion/trunk/subversion/include/private/svn_cmdline_private.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_cmdline_private.h?rev=1925937&r1=1925936&r2=1925937&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_cmdline_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_cmdline_private.h Thu May 29 15:54:14 2025
@@ -226,15 +226,18 @@ svn_cmdline__stdout_is_a_terminal(void);
svn_boolean_t
svn_cmdline__stderr_is_a_terminal(void);
-/* Determine whether interactive mode should be enabled, based on whether
- * the user passed the --non-interactive or --force-interactive options.
- * If neither option was passed, interactivity is enabled if standard
- * input is connected to a terminal device.
+/* Adjusts boolean described by @a non_interactive to whether interactive
+ * mode should be disabled, based on whether the user passed the
+ * --non-interactive or --force-interactive options. If neither option
+ * was passed, interactivity is enabled if standard input is connected to a terminal device.
+ *
+ * If both, @a non_interactive and @a force_interactive are @c TRUE, an
+ * @c SVN_ERR_CL_ARG_PARSING_ERROR error will be returned.
*
* @since New in 1.8.
*/
-svn_boolean_t
-svn_cmdline__be_interactive(svn_boolean_t non_interactive,
+svn_error_t *
+svn_cmdline__be_interactive(svn_boolean_t *non_interactive,
svn_boolean_t force_interactive);
/* Parses the argument value of '--trust-server-cert-failures' OPT_ARG into
Modified: subversion/trunk/subversion/libsvn_subr/cmdline.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/cmdline.c?rev=1925937&r1=1925936&r2=1925937&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/cmdline.c (original)
+++ subversion/trunk/subversion/libsvn_subr/cmdline.c Thu May 29 15:54:14 2025
@@ -1222,21 +1222,29 @@ svn_cmdline__stderr_is_a_terminal(void)
#endif
}
-svn_boolean_t
-svn_cmdline__be_interactive(svn_boolean_t non_interactive,
+svn_error_t *
+svn_cmdline__be_interactive(svn_boolean_t *non_interactive,
svn_boolean_t force_interactive)
{
+ /* The --non-interactive and --force-interactive options are mutually
+ * exclusive. */
+ if (*non_interactive && force_interactive)
+ {
+ return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("--non-interactive and --force-interactive "
+ "are mutually exclusive"));
+ }
+
/* If neither --non-interactive nor --force-interactive was passed,
* be interactive if stdin is a terminal.
* If --force-interactive was passed, always be interactive. */
- if (!force_interactive && !non_interactive)
- {
- return svn_cmdline__stdin_is_a_terminal();
- }
- else if (force_interactive)
- return TRUE;
+ if (!force_interactive && !*non_interactive)
+ *non_interactive = svn_cmdline__stdin_is_a_terminal();
+
+ if (force_interactive)
+ *non_interactive = FALSE;
- return !non_interactive;
+ return SVN_NO_ERROR;
}
Modified: subversion/trunk/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/svn.c?rev=1925937&r1=1925936&r2=1925937&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/svn.c (original)
+++ subversion/trunk/subversion/svn/svn.c Thu May 29 15:54:14 2025
@@ -2779,18 +2779,8 @@ sub_main(int *exit_code,
}
}
- /* The --non-interactive and --force-interactive options are mutually
- * exclusive. */
- if (opt_state.non_interactive && force_interactive)
- {
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--non-interactive and --force-interactive "
- "are mutually exclusive"));
- }
- else
- opt_state.non_interactive = !svn_cmdline__be_interactive(
- opt_state.non_interactive,
- force_interactive);
+ SVN_ERR(svn_cmdline__be_interactive(&opt_state.non_interactive,
+ force_interactive));
/* Turn our hash of changelists into an array of unique ones. */
SVN_ERR(svn_hash_keys(&(opt_state.changelists), changelists, pool));
Modified: subversion/trunk/subversion/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnmucc/svnmucc.c?rev=1925937&r1=1925936&r2=1925937&view=diff
==============================================================================
--- subversion/trunk/subversion/svnmucc/svnmucc.c (original)
+++ subversion/trunk/subversion/svnmucc/svnmucc.c Thu May 29 15:54:14 2025
@@ -657,15 +657,7 @@ sub_main(int *exit_code,
return SVN_NO_ERROR;
}
- if (non_interactive && force_interactive)
- {
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--non-interactive and --force-interactive "
- "are mutually exclusive"));
- }
- else
- non_interactive = !svn_cmdline__be_interactive(non_interactive,
- force_interactive);
+ SVN_ERR(svn_cmdline__be_interactive(&non_interactive, force_interactive));
if (!non_interactive)
{
Modified: subversion/trunk/subversion/svnrdump/svnrdump.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/svnrdump.c?rev=1925937&r1=1925936&r2=1925937&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/svnrdump.c (original)
+++ subversion/trunk/subversion/svnrdump/svnrdump.c Thu May 29 15:54:14 2025
@@ -1112,8 +1112,7 @@ sub_main(int *exit_code,
SVN_ERR(svn_cmdline__stdin_readline(&password, pool, pool));
}
- non_interactive = !svn_cmdline__be_interactive(non_interactive,
- force_interactive);
+ SVN_ERR(svn_cmdline__be_interactive(&non_interactive, force_interactive));
SVN_ERR(init_client_context(&(opt_baton->ctx),
non_interactive,
Modified: subversion/trunk/subversion/svnsync/svnsync.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnsync/svnsync.c?rev=1925937&r1=1925936&r2=1925937&view=diff
==============================================================================
--- subversion/trunk/subversion/svnsync/svnsync.c (original)
+++ subversion/trunk/subversion/svnsync/svnsync.c Thu May 29 15:54:14 2025
@@ -2202,18 +2202,8 @@ sub_main(int *exit_code,
if (opt_baton.help)
subcommand = svn_opt_get_canonical_subcommand3(svnsync_cmd_table, "help");
- /* The --non-interactive and --force-interactive options are mutually
- * exclusive. */
- if (opt_baton.non_interactive && force_interactive)
- {
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--non-interactive and --force-interactive "
- "are mutually exclusive"));
- }
- else
- opt_baton.non_interactive = !svn_cmdline__be_interactive(
- opt_baton.non_interactive,
- force_interactive);
+ SVN_ERR(svn_cmdline__be_interactive(&opt_baton.non_interactive,
+ force_interactive));
/* Disallow the mixing --username/password with their --source- and
--sync- variants. Treat "--username FOO" as "--source-username
Modified: subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c?rev=1925937&r1=1925936&r2=1925937&view=diff
==============================================================================
--- subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c (original)
+++ subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c Thu May 29 15:54:14 2025
@@ -607,18 +607,8 @@ sub_main(int *exit_code,
}
}
- /* The --non-interactive and --force-interactive options are mutually
- * exclusive. */
- if (opt_state.non_interactive && force_interactive)
- {
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--non-interactive and --force-interactive "
- "are mutually exclusive"));
- }
- else
- opt_state.non_interactive = !svn_cmdline__be_interactive(
- opt_state.non_interactive,
- force_interactive);
+ SVN_ERR(svn_cmdline__be_interactive(&opt_state.non_interactive,
+ force_interactive));
/* --password-from-stdin can only be used with --non-interactive */
if (read_pass_from_stdin && !opt_state.non_interactive)
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.