From b4aaa589afc3810b9ed703c9c01411ec960ed592 Mon Sep 17 00:00:00 2001
From: Sander Temme
Date: Thu, 1 Feb 2007 19:31:41 +0000
Subject: [PATCH] apxs: Enhance -q flag to print all known variables and their
values 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 | 4 ++++
docs/man/apxs.8 | 6 ++---
docs/manual/programs/apxs.html.en | 17 +++++++-------
docs/manual/programs/apxs.xml | 17 +++++++-------
support/apxs.in | 38 +++++++++++++++++++++++++++----
5 files changed, 56 insertions(+), 26 deletions(-)
diff --git a/CHANGES b/CHANGES
index 4be72421b3..2e69909564 100644
--- 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,
diff --git a/docs/man/apxs.8 b/docs/man/apxs.8
index c234392591..37a6a529aa 100644
--- a/docs/man/apxs.8
+++ b/docs/man/apxs.8
@@ -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"
diff --git a/docs/manual/programs/apxs.html.en b/docs/manual/programs/apxs.html.en
index d59660184e..630024e8ec 100644
--- a/docs/manual/programs/apxs.html.en
+++ b/docs/manual/programs/apxs.html.en
@@ -85,6 +85,7 @@
-n modname
apxs -q
+ [ -v ]
[ -S name=value ]
query ...
@@ -130,15 +131,13 @@
-q
- - Performs a query for
apxs
's knowledge about certain
- settings. The query 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
.
-
- Use this for manually determining settings. For instance use
+ - Performs a query for variables and environment settings used to
+ build
httpd
. When invoked without query parameters,
+ it prints all known variables and their values. The optional -v
+ parameter formats the list output.
+
+ Use this to manually determine settings used to build the
+ httpd
that will load your module. For instance use
INC=-I`apxs -q INCLUDEDIR`
diff --git a/docs/manual/programs/apxs.xml b/docs/manual/programs/apxs.xml
index 997c7f1707..b136e9abb9 100644
--- a/docs/manual/programs/apxs.xml
+++ b/docs/manual/programs/apxs.xml
@@ -86,6 +86,7 @@
-n modname
apxs -q
+ [ -v ]
[ -S name=value ]
query ...
@@ -131,15 +132,13 @@
Query Options
-q
- - Performs a query for
apxs
's knowledge about certain
- settings. The query 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
.
-
- Use this for manually determining settings. For instance use
+ - Performs a query for variables and environment settings used to
+ build
httpd
. When invoked without query parameters,
+ it prints all known variables and their values. The optional -v
+ parameter formats the list output.
+
+ Use this to manually determine settings used to build the
+ httpd
that will load your module. For instance use
INC=-I`apxs -q INCLUDEDIR`
diff --git a/support/apxs.in b/support/apxs.in
index 385d71e5ca..08638c0163 100644
--- a/support/apxs.in
+++ b/support/apxs.in
@@ -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 =] -n \n";
- print STDERR " apxs -q [-S =] ...\n";
+ print STDERR " apxs -q [-v] [-S =] [ ...]\n";
print STDERR " apxs -c [-S =] [-o ] [-D [=]]\n";
print STDERR " [-I ] [-L ] [-l ] [-Wc,]\n";
print STDERR " [-Wl,] [-p] ...\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");
--
2.40.0