]> granicus.if.org Git - apache/commitdiff
apxs: Enhance -q flag to print all known variables and their values
authorSander Temme <sctemme@apache.org>
Thu, 1 Feb 2007 19:31:41 +0000 (19:31 +0000)
committerSander Temme <sctemme@apache.org>
Thu, 1 Feb 2007 19:31:41 +0000 (19:31 +0000)
      when invoked without variable name(s).

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@502323 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
docs/man/apxs.8
docs/manual/programs/apxs.html.en
docs/manual/programs/apxs.xml
support/apxs.in

diff --git a/CHANGES b/CHANGES
index 4be72421b319cf800a33096329f3e88434b9dea7..2e699095640490584a1385d4a400f953c484db1a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,10 @@
 Changes with Apache 2.3.0
   [Remove entries to the current 2.0 and 2.2 section below, when backported]
 
+  *) apxs: Enhance -q flag to print all known variables and their values
+     when invoked without variable name(s). 
+     [William Rowe, Sander Temme]
+
   *) mod_dbd: Create memory sub-pools for each DB connection and close
      DB connections in a pool cleanup function.  Ensure prepared statements
      are destroyed before DB connection is closed.  When using reslists,
index c23439259163161f0d47e3296b975dbe800661ce..37a6a529aa47983bb3c398f3cb7f0117de385366 100644 (file)
@@ -19,7 +19,7 @@
 .el .ne 3
 .IP "\\$1" \\$2
 ..
-.TH "APXS" 8 "2004-10-01" "Apache HTTP Server" "apxs"
+.TH "APXS" 8 "2007-02-01" "Apache HTTP Server" "apxs"
 
 .SH NAME
 apxs \- APache eXtenSion tool
@@ -30,7 +30,7 @@ apxs \- APache eXtenSion tool
 \fBapxs\fR -\fBg\fR [ -\fBS\fR \fIname\fR=\fIvalue\fR ] -\fBn\fR \fImodname\fR
  
 .PP
-\fBapxs\fR -\fBq\fR [ -\fBS\fR \fIname\fR=\fIvalue\fR ] \fIquery\fR \&.\&.\&.
+\fBapxs\fR -\fBq\fR [ -\fBv\fR ] [ -\fBS\fR \fIname\fR=\fIvalue\fR ] \fIquery\fR \&.\&.\&.
  
 .PP
 \fBapxs\fR -\fBc\fR [ -\fBS\fR \fIname\fR=\fIvalue\fR ] [ -\fBo\fR \fIdsofile\fR ] [ -\fBI\fR \fIincdir\fR ] [ -\fBD\fR \fIname\fR=\fIvalue\fR ] [ -\fBL\fR \fIlibdir\fR ] [ -\fBl\fR \fIlibname\fR ] [ -\fBWc,\fR\fIcompiler-flags\fR ] [ -\fBWl,\fR\fIlinker-flags\fR ] \fIfiles\fR \&.\&.\&.
@@ -96,7 +96,7 @@ This explicitly sets the module name for the -i (install) and -g (template gener
  
 .TP
 -q
-Performs a query for apxs's knowledge about certain settings\&. The \fIquery\fR parameters can be one or more of the following strings: CC, CFLAGS, CFLAGS_SHLIB, INCLUDEDIR, LD_SHLIB, LDFLAGS_SHLIB, LIBEXECDIR, LIBS_SHLIB, SBINDIR, SYSCONFDIR, TARGET\&. .PP Use this for manually determining settings\&. For instance use INC=-I`apxs -q INCLUDEDIR` .PP inside your own Makefiles if you need manual access to Apache's C header files\&.  
+Performs a query for variables and environment settings used to build httpd\&. When invoked without \fIquery\fR parameters, it prints all known variables and their values\&. The optional -v parameter formats the list output\&. .PP Use this to manually determine settings used to build the httpd that will load your module\&. For instance use INC=-I`apxs -q INCLUDEDIR` .PP inside your own Makefiles if you need manual access to Apache's C header files\&.  
   
 .SS "Configuration Options"
  
index d59660184ea28eb66a7c9855585e83479207969a..630024e8ec65817b3edd8fc9c3b11c518c0703ea 100644 (file)
@@ -85,6 +85,7 @@
     -<strong>n</strong> <var>modname</var></code></p>
 
     <p><code><strong>apxs</strong> -<strong>q</strong>
+    [ -<strong>v</strong> ]
     [ -<strong>S</strong> <var>name</var>=<var>value</var> ]
     <var>query</var> ...</code></p>
 
     <h3><a name="options.query" id="options.query">Query Options</a></h3>
       <dl>
       <dt><code>-q</code></dt>
-      <dd>Performs a query for <code>apxs</code>'s knowledge about certain
-      settings. The <var>query</var> parameters can be one or more of the
-      following strings: <code>CC</code>, <code>CFLAGS</code>,
-      <code>CFLAGS_SHLIB</code>, <code>INCLUDEDIR</code>, <code>LD_SHLIB</code>,
-      <code>LDFLAGS_SHLIB</code>, <code>LIBEXECDIR</code>,
-      <code>LIBS_SHLIB</code>, <code>SBINDIR</code>, <code>SYSCONFDIR</code>,
-      <code>TARGET</code>.
-
-      <p>Use this for manually determining settings. For instance use</p>
+      <dd>Performs a query for variables and environment settings used to 
+      build <code>httpd</code>.  When invoked without <var>query</var> parameters, 
+      it prints all known variables and their values.  The optional <code>-v</code> 
+      parameter formats the list output.
+
+      <p>Use this to manually determine settings used to build the 
+      <code>httpd</code> that will load your module.  For instance use</p>
       <div class="example"><p><code>
         INC=-I`apxs -q INCLUDEDIR`
       </code></p></div>
index 997c7f1707a8e4b21ce11b1447801254a4e68814..b136e9abb9b1ebcb97a359f2194fefd2a0a76001 100644 (file)
@@ -86,6 +86,7 @@
     -<strong>n</strong> <var>modname</var></code></p>
 
     <p><code><strong>apxs</strong> -<strong>q</strong>
+    [ -<strong>v</strong> ]
     [ -<strong>S</strong> <var>name</var>=<var>value</var> ]
     <var>query</var> ...</code></p>
 
     <section id="options.query"><title>Query Options</title>
       <dl>
       <dt><code>-q</code></dt>
-      <dd>Performs a query for <code>apxs</code>'s knowledge about certain
-      settings. The <var>query</var> parameters can be one or more of the
-      following strings: <code>CC</code>, <code>CFLAGS</code>,
-      <code>CFLAGS_SHLIB</code>, <code>INCLUDEDIR</code>, <code>LD_SHLIB</code>,
-      <code>LDFLAGS_SHLIB</code>, <code>LIBEXECDIR</code>,
-      <code>LIBS_SHLIB</code>, <code>SBINDIR</code>, <code>SYSCONFDIR</code>,
-      <code>TARGET</code>.
-
-      <p>Use this for manually determining settings. For instance use</p>
+      <dd>Performs a query for variables and environment settings used to 
+      build <code>httpd</code>.  When invoked without <var>query</var> parameters, 
+      it prints all known variables and their values.  The optional <code>-v</code> 
+      parameter formats the list output.
+
+      <p>Use this to manually determine settings used to build the 
+      <code>httpd</code> that will load your module.  For instance use</p>
       <example>
         INC=-I`apxs -q INCLUDEDIR`
       </example>
index 385d71e5ca660f2659ccef795de3d689c2c8a22d..08638c01630ad3278e27d29a2a1daa6f7bc7ebc9 100644 (file)
@@ -75,6 +75,7 @@ my $opt_A = 0;
 my $opt_q = 0;
 my $opt_h = 0;
 my $opt_p = 0;
+my $opt_v = 0;
 
 #   this subroutine is derived from Perl's getopts.pl with the enhancement of
 #   the "+" metacharacter at the format string to allow a list to be built by
@@ -142,7 +143,7 @@ sub Getopts {
 
 sub usage {
     print STDERR "Usage: apxs -g [-S <var>=<val>] -n <modname>\n";
-    print STDERR "       apxs -q [-S <var>=<val>] <query> ...\n";
+    print STDERR "       apxs -q [-v] [-S <var>=<val>] [<query> ...]\n";
     print STDERR "       apxs -c [-S <var>=<val>] [-o <dsofile>] [-D <name>[=<value>]]\n";
     print STDERR "               [-I <incdir>] [-L <libdir>] [-l <libname>] [-Wc,<flags>]\n";
     print STDERR "               [-Wl,<flags>] [-p] <files> ...\n";
@@ -153,9 +154,9 @@ sub usage {
 
 #   option handling
 my $rc;
-($rc, @ARGV) = &Getopts("qn:gco:I+D+L+l+W+S+eiaAp", @ARGV);
+($rc, @ARGV) = &Getopts("qn:gco:I+D+L+l+W+S+eiaApv", @ARGV);
 &usage if ($rc == 0);
-&usage if ($#ARGV == -1 and not $opt_g);
+&usage if ($#ARGV == -1 and not $opt_g and not $opt_q);
 &usage if (not $opt_q and not ($opt_g and $opt_n) and not $opt_i and not $opt_c and not $opt_e);
 
 #   argument handling
@@ -303,8 +304,35 @@ if ($opt_q) {
     ##
     ##  QUERY INFORMATION 
     ##
-    my $result = get_vars(@args);
-    print "$result\n";
+    my $result;
+    if ($#args >= 0) { 
+        $result = get_vars(@args);
+        print "$result\n";
+    } else {
+        # -q without var name prints all variables and their values
+        
+        # Additional -v pretty-prints output
+        if ($opt_v) {
+            # Variable names in alphabetic order
+            my @vars = sort {uc($a) cmp uc($b)} keys %config_vars;
+            
+            # Make the left column as wide as the longest variable name
+            my $width = 0;
+            foreach (@vars) {
+                my $l = length $_; 
+                $width = $l unless ($l <= $width);
+            }
+    
+            foreach (@vars) {
+                printf "%-${width}s = %s\n", $_, $config_vars{$_};
+            }
+        } else {
+            # Unprettified name=value list
+            foreach (keys %config_vars) {
+                print "$_=$config_vars{$_}\n";
+            }
+        }
+    }
 }
 
 my $apr_config = get_vars("APR_CONFIG");