Author: stsp
Date: Thu Dec 20 20:04:03 2012
New Revision: 1424655
URL: http://svn.apache.org/viewvc?rev=1424655&view=rev
Log:
Factor out common code from svn, svnsync, and svnrdump into the cmdline.c file.
No functional change.
* subversion/include/svn_cmdline.h
(svn_cmdline__stdin_isatty): Remove.
(svn_cmdline__be_interactive): Declare.
* subversion/libsvn_subr/cmdline.c
(svn_cmdline__be_interactive): New function, based on the former
svn_cmdline__stdin_isatty() function, which determines whether a
command line tool should be interactive.
* subversion/svn/svn.c
(sub_main): Call svn_cmdline__be_interactive() and remove corresponding
inline logic.
* subversion/svnrdump/svnrdump.c
(main): As previous.
* subversion/svnsync/svnsync.c
(main): As previous.
Modified:
subversion/trunk/subversion/include/svn_cmdline.h
subversion/trunk/subversion/libsvn_subr/cmdline.c
subversion/trunk/subversion/svn/svn.c
subversion/trunk/subversion/svnrdump/svnrdump.c
subversion/trunk/subversion/svnsync/svnsync.c
Modified: subversion/trunk/subversion/include/svn_cmdline.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_cmdline.h?rev=1424655&r1=1424654&r2=1424655&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_cmdline.h (original)
+++ subversion/trunk/subversion/include/svn_cmdline.h Thu Dec 20 20:04:03 2012
@@ -381,10 +381,14 @@ svn_cmdline__getopt_init(apr_getopt_t **
const char *argv[],
apr_pool_t *pool);
-/* Determine whether standard input is associated with a terminal.
+/* 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.
* @since New in 1.8. */
svn_boolean_t
-svn_cmdline__stdin_isatty(void);
+svn_cmdline__be_interactive(svn_boolean_t non_interactive,
+ svn_boolean_t force_interactive);
#ifdef __cplusplus
}
Modified: subversion/trunk/subversion/libsvn_subr/cmdline.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/cmdline.c?rev=1424655&r1=1424654&r2=1424655&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/cmdline.c (original)
+++ subversion/trunk/subversion/libsvn_subr/cmdline.c Thu Dec 20 20:04:03 2012
@@ -927,11 +927,22 @@ svn_cmdline__print_xml_prop_hash(svn_str
}
svn_boolean_t
-svn_cmdline__stdin_isatty(void)
+svn_cmdline__be_interactive(svn_boolean_t non_interactive,
+ svn_boolean_t force_interactive)
{
+ /* 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)
+ {
#ifdef WIN32
- return (_isatty(STDIN_FILENO) != 0);
+ return (_isatty(STDIN_FILENO) != 0);
#else
- return (isatty(STDIN_FILENO) != 0);
+ return (isatty(STDIN_FILENO) != 0);
#endif
+ }
+ else if (force_interactive)
+ return TRUE;
+
+ return !non_interactive;
}
Modified: subversion/trunk/subversion/svn/svn.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/svn.c?rev=1424655&r1=1424654&r2=1424655&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/svn.c (original)
+++ subversion/trunk/subversion/svn/svn.c Thu Dec 20 20:04:03 2012
@@ -2213,12 +2213,10 @@ sub_main(int argc, const char *argv[], a
"are mutually exclusive"));
return EXIT_ERROR(err);
}
- /* If neither --non-interactive nor --force-interactive was passed,
- * and stdin is not a terminal, set --non-interactive. */
- else if (!force_interactive && !opt_state.non_interactive)
- opt_state.non_interactive = !svn_cmdline__stdin_isatty();
- else if (force_interactive)
- opt_state.non_interactive = FALSE;
+ else
+ opt_state.non_interactive = !svn_cmdline__be_interactive(
+ opt_state.non_interactive,
+ force_interactive);
/* Turn our hash of changelists into an array of unique ones. */
SVN_INT_ERR(svn_hash_keys(&(opt_state.changelists), changelists, pool));
Modified: subversion/trunk/subversion/svnrdump/svnrdump.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/svnrdump.c?rev=1424655&r1=1424654&r2=1424655&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/svnrdump.c (original)
+++ subversion/trunk/subversion/svnrdump/svnrdump.c Thu Dec 20 20:04:03 2012
@@ -996,12 +996,9 @@ main(int argc, const char **argv)
"are mutually exclusive"));
return svn_cmdline_handle_exit_error(err, pool, "svnrdump: ");
}
- /* If neither --non-interactive nor --force-interactive was passed,
- * and stdin is not a terminal, set --non-interactive. */
- else if (!force_interactive && !non_interactive)
- non_interactive = !svn_cmdline__stdin_isatty();
- else if (force_interactive)
- non_interactive = FALSE;
+ else
+ non_interactive = !svn_cmdline__be_interactive(non_interactive,
+ force_interactive);
if (opt_baton->help)
{
Modified: subversion/trunk/subversion/svnsync/svnsync.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnsync/svnsync.c?rev=1424655&r1=1424654&r2=1424655&view=diff
==============================================================================
--- subversion/trunk/subversion/svnsync/svnsync.c (original)
+++ subversion/trunk/subversion/svnsync/svnsync.c Thu Dec 20 20:04:03 2012
@@ -2101,12 +2101,10 @@ main(int argc, const char *argv[])
"are mutually exclusive"));
return svn_cmdline_handle_exit_error(err, pool, "svnsync: ");
}
- /* If neither --non-interactive nor --force-interactive was passed,
- * and stdin is not a terminal, set --non-interactive. */
- else if (!force_interactive && !opt_baton.non_interactive)
- opt_baton.non_interactive = !svn_cmdline__stdin_isatty();
- else if (force_interactive)
- opt_baton.non_interactive = FALSE;
+ else
+ opt_baton.non_interactive = !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