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


Reply via email to