You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Roy Fielding <fi...@hyperreal.com> on 1996/11/12 06:22:11 UTC
cvs commit: apache/src Configure http_config.h http_config.c http_core.c http_main.c mod_info.c
fielding 96/11/11 21:22:10
Modified: src Configure http_config.h http_config.c http_core.c
http_main.c mod_info.c
Log:
Removed the module_names[] and preloaded_module_names[] arrays.
All functions now get the name from the module structure and either
search the preloaded_modules list (for static info) or the actual
linked list of modules (for active modules).
Docs note: The "httpd -h" and "httpd -l" options print info about all
compiled modules, not just the active (prelinked) ones. mod_info only
prints the prelinked module information [I would have changed that, but
the code in mod_info uses an, ummmm, unusual style]. The <IfModule>
and AddModule directives' use the file name of the module (what you now see
with "httpd -l") as the argument.
Revision Changes Path
1.35 +1 -13 apache/src/Configure
Index: Configure
===================================================================
RCS file: /export/home/cvs/apache/src/Configure,v
retrieving revision 1.34
retrieving revision 1.35
diff -C3 -r1.34 -r1.35
*** Configure 1996/11/04 00:55:16 1.34
--- Configure 1996/11/12 05:22:02 1.35
***************
*** 1,5 ****
#!/bin/sh
! # $Id: Configure,v 1.34 1996/11/04 00:55:16 brian Exp $
trap 'rm -f $tmpfile; exit' 0 1 2 3 15
# Apache configuration script, first cut --- rst.
--- 1,5 ----
#!/bin/sh
! # $Id: Configure,v 1.35 1996/11/12 05:22:02 fielding Exp $
trap 'rm -f $tmpfile; exit' 0 1 2 3 15
# Apache configuration script, first cut --- rst.
***************
*** 74,96 ****
} \
print " NULL"; \
print "};"; \
- print "char *module_names[] = {"; \
- for (i = 0; i < n; ++i) { \
- printf " \"%s\",\n", modules[i]; \
- } \
- print " NULL"; \
- print "};"; \
print "module *preloaded_modules[] = {"; \
for (i = 0; i < pn; ++i) { \
printf " &%s_module,\n", pmodules[i]; \
} \
print " NULL"; \
- print "};"; \
- print "char *preloaded_module_names[] = {"; \
- for (i = 0; i < pn; ++i) { \
- printf " \"%s\",\n", pmodules[i]; \
- } \
- print " NULL"; \
print "};"; \
}'
--- 74,84 ----
1.21 +4 -2 apache/src/http_config.h
Index: http_config.h
===================================================================
RCS file: /export/home/cvs/apache/src/http_config.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -C3 -r1.20 -r1.21
*** http_config.h 1996/11/04 00:55:17 1.20
--- http_config.h 1996/11/12 05:22:03 1.21
***************
*** 249,257 ****
/* Finally, the hook for dynamically loading modules in... */
void add_module (module *m);
! int add_named_module (char *name);
void clear_module_list ();
! char *find_module_name (module *m);
#ifdef CORE_PRIVATE
--- 249,258 ----
/* Finally, the hook for dynamically loading modules in... */
void add_module (module *m);
! int add_named_module (const char *name);
void clear_module_list ();
! const char *find_module_name (module *m);
! module *find_linked_module (const char *name);
#ifdef CORE_PRIVATE
***************
*** 260,265 ****
--- 261,267 ----
server_rec *read_config (pool *conf_pool, pool *temp_pool, char *config_name);
void setup_prelinked_modules();
void show_directives();
+ void show_modules();
/* For http_request.c... */
1.33 +36 -23 apache/src/http_config.c
Index: http_config.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_config.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -C3 -r1.32 -r1.33
*** http_config.c 1996/11/04 18:09:55 1.32
--- http_config.c 1996/11/12 05:22:04 1.33
***************
*** 399,425 ****
}
}
! char *find_module_name (module *m)
{
! extern char *preloaded_module_names[];
! if (m->module_index >= 0 && m->module_index < total_modules)
! return preloaded_module_names[m->module_index];
return NULL;
}
/* Add a named module. Returns 1 if module found, 0 otherwise. */
! int add_named_module (char *name)
{
extern module *preloaded_modules[];
! extern char *preloaded_module_names[];
! int i;
! for (i = 0; preloaded_module_names[i]; ++i) {
! if (strcmp (preloaded_module_names[i], name) == 0) {
/* Only add modules that are not already enabled. */
! if (preloaded_modules[i]->next == NULL) {
! add_module (preloaded_modules[i]);
}
return 1;
}
--- 399,432 ----
}
}
! const char *find_module_name (module *m)
{
! return m->name;
! }
!
! module *find_linked_module (const char *name)
! {
! module *modp;
! for (modp = top_module; modp; modp = modp->next) {
! if (strcmp(modp->name, name) == 0)
! return modp;
! }
return NULL;
}
/* Add a named module. Returns 1 if module found, 0 otherwise. */
! int add_named_module (const char *name)
{
extern module *preloaded_modules[];
! module *modp;
! int i = 0;
! for (modp = preloaded_modules[i]; modp; modp = preloaded_modules[++i]) {
! if (strcmp(modp->name, name) == 0) {
/* Only add modules that are not already enabled. */
! if (modp->next == NULL) {
! add_module(modp);
}
return 1;
}
***************
*** 428,435 ****
return 0;
}
! /* Clear the internal list of modules, in preparation for starting
! over. */
void clear_module_list ()
{
module **m = &top_module;
--- 435,441 ----
return 0;
}
! /* Clear the internal list of modules, in preparation for starting over. */
void clear_module_list ()
{
module **m = &top_module;
***************
*** 1120,1146 ****
printf("\n");
}
! /* Show the prelinked configuration directives, the help string explaining
* the directive arguments, in what module they are handled, and in
* what parts of the configuration they are allowed. Used for httpd -h.
*/
void show_directives()
{
! extern module *prelinked_modules[];
! extern char *module_names[];
command_rec *pc;
int n;
- int t;
! for(t=0 ; prelinked_modules[t] ; ++t)
! ;
! for(n=0 ; prelinked_modules[n] ; ++n)
! for(pc=prelinked_modules[n]->cmds ; pc && pc->name ; ++pc) {
printf("%s\n", pc->name);
if (pc->errmsg)
printf("\t%s\n", pc->errmsg);
! printf("\t%s\n", module_names[t-n-1]);
! show_overrides(pc, prelinked_modules[n]);
}
}
--- 1126,1159 ----
printf("\n");
}
! /* Show the preloaded configuration directives, the help string explaining
* the directive arguments, in what module they are handled, and in
* what parts of the configuration they are allowed. Used for httpd -h.
*/
void show_directives()
{
! extern module *preloaded_modules[];
command_rec *pc;
int n;
! for (n = 0; preloaded_modules[n]; ++n)
! for (pc = preloaded_modules[n]->cmds; pc && pc->name; ++pc) {
printf("%s\n", pc->name);
if (pc->errmsg)
printf("\t%s\n", pc->errmsg);
! printf("\t%s\n", preloaded_modules[n]->name);
! show_overrides(pc, preloaded_modules[n]);
}
+ }
+
+ /* Show the preloaded module names. Used for httpd -l. */
+ void show_modules()
+ {
+ extern module *preloaded_modules[];
+ int n;
+
+ printf ("Compiled-in modules:\n");
+ for (n = 0; preloaded_modules[n]; ++n)
+ printf (" %s\n", preloaded_modules[n]->name);
}
1.45 +3 -7 apache/src/http_core.c
Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_core.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -C3 -r1.44 -r1.45
*** http_core.c 1996/11/04 18:09:58 1.44
--- http_core.c 1996/11/12 05:22:04 1.45
***************
*** 63,70 ****
#include "util_md5.h"
#include "scoreboard.h"
- extern char *module_names[];
-
/* Server core module... This module provides support for really basic
* server operations, including options and commands which control the
* operation of other modules. Consider this the bureaucracy module.
--- 63,68 ----
***************
*** 706,721 ****
{
char *endp = strrchr (arg, '>');
char l[MAX_STRING_LEN];
! int i, not = (arg[0] == '!');
! int found = 0;
int nest = 1;
if (endp) *endp = '\0';
if (not) arg++;
! for (i=0; module_names[i]; i++)
! if (!strcasecmp(arg, module_names[i]))
! found++;
if ((!not && found) || (not && !found))
return NULL;
--- 704,717 ----
{
char *endp = strrchr (arg, '>');
char l[MAX_STRING_LEN];
! int not = (arg[0] == '!');
! module *found;
int nest = 1;
if (endp) *endp = '\0';
if (not) arg++;
! found = find_linked_module(arg);
if ((!not && found) || (not && !found))
return NULL;
1.87 +0 -10 apache/src/http_main.c
Index: http_main.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_main.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -C3 -r1.86 -r1.87
*** http_main.c 1996/11/08 13:50:47 1.86
--- http_main.c 1996/11/12 05:22:05 1.87
***************
*** 1889,1904 ****
} /* standalone_main */
- void show_modules()
- {
- extern char *preloaded_module_names[];
- int t;
-
- printf ("Compiled-in modules:\n");
- for (t = 0; preloaded_module_names[t]; ++t)
- printf (" %s\n", preloaded_module_names[t]);
- }
-
extern char *optarg;
extern int optind;
--- 1889,1894 ----
1.6 +4 -8 apache/src/mod_info.c
Index: mod_info.c
===================================================================
RCS file: /export/home/cvs/apache/src/mod_info.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C3 -r1.5 -r1.6
*** mod_info.c 1996/11/04 00:55:20 1.5
--- mod_info.c 1996/11/12 05:22:06 1.6
***************
*** 235,241 ****
int display_info(request_rec *r) {
module *modp = NULL;
char buf[256];
- char *name;
command_rec *cmd=NULL;
handler_rec *hand=NULL;
server_rec *serv = r->server;
--- 235,240 ----
***************
*** 277,284 ****
if(!r->args) {
rputs("<tt><a href=\"#server\">Server Settings</a>, ",r);
for(modp = top_module; modp; modp = modp->next) {
! name=find_module_name (modp);
! sprintf(buf,"<a href=\"#%s\">%s</a>",name,name);
rputs(buf, r);
if(modp->next) rputs(", ",r);
}
--- 276,282 ----
if(!r->args) {
rputs("<tt><a href=\"#server\">Server Settings</a>, ",r);
for(modp = top_module; modp; modp = modp->next) {
! sprintf(buf,"<a href=\"#%s\">%s</a>",modp->name,modp->name);
rputs(buf, r);
if(modp->next) rputs(", ",r);
}
***************
*** 313,321 ****
}
rputs("<hr><dl>",r);
for(modp = top_module; modp; modp = modp->next) {
! name=find_module_name (modp);
! if(!r->args || !strcasecmp(name,r->args)) {
! sprintf(buf,"<dt><a name=\"%s\"><strong>Module Name:</strong> <font size=+1><tt>%s</tt></a></font>\n",name,name);
rputs(buf,r);
rputs("<dt><strong>Content-types affected:</strong>",r);
hand = modp->handlers;
--- 311,318 ----
}
rputs("<hr><dl>",r);
for(modp = top_module; modp; modp = modp->next) {
! if(!r->args || !strcasecmp(modp->name,r->args)) {
! sprintf(buf,"<dt><a name=\"%s\"><strong>Module Name:</strong> <font size=+1><tt>%s</tt></a></font>\n",modp->name,modp->name);
rputs(buf,r);
rputs("<dt><strong>Content-types affected:</strong>",r);
hand = modp->handlers;
***************
*** 394,401 ****
if(!modp && r->args && strcasecmp(r->args,"server")) rputs("<b>No such module</b>\n",r);
} else {
for(modp = top_module; modp; modp = modp->next) {
! name=find_module_name (modp);
! rputs(name,r);
if(modp->next) rputs("<br>",r);
}
}
--- 391,397 ----
if(!modp && r->args && strcasecmp(r->args,"server")) rputs("<b>No such module</b>\n",r);
} else {
for(modp = top_module; modp; modp = modp->next) {
! rputs(modp->name,r);
if(modp->next) rputs("<br>",r);
}
}
Re: cvs commit: apache/src Configure http_config.h http_config.c http_core.c http_main.c mod_info.c
Posted by ra...@vex.net.
> Docs note: The "httpd -h" and "httpd -l" options print info about all
> compiled modules, not just the active (prelinked) ones. mod_info only
> prints the prelinked module information [I would have changed that, but
> the code in mod_info uses an, ummmm, unusual style]. The <IfModule>
> and AddModule directives' use the file name of the module (what you now
> see with "httpd -l") as the argument.
Yes, I realize that mod_info is a huge hack-job. But, unlike the httpd -l
code, it attempts to also list configuration directives that are associated
with the module in question. There is no real slick way of doing this as far
as I can tell. I'll see if the module needs some rethinking now that
things like IfModule and AddModule are available.
-Rasmus