You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Randy Terbush <ra...@zyzzyva.com> on 1997/07/09 05:25:09 UTC

Re: Globals and their non-use in Apache-NT

+1

Alexei, could you put [PATCH] in subject so I can stay tuned in to 
the patch activity better? This one slipped by.


> +1
> 
> Alexei Kosut wrote:
> > 
> > Following up on my previous email, where I discovered that if a module
> > makes use of an "API global" variable, it won't work as a DLL in Windows,
> > I examined all the modules in the Apache distribution, and came up with
> > four that use global variables:
> > 
> > 1. mod_usertrack made use of a list of month names in util.c. I just
> >    commited (along with other Windows fixes to mod_usertrack) a patch
> >    that gets rid of it.
> > 
> > 2. mod_status needs restart_time, set in http_main. I've enclosed a patch
> >    below that adds a get_restart_time() function.
> > 
> > 3. mod_cgi checks suexec_enabled, a global variable. We should probably
> >    wrapper this one as well. However, this is not a high priority, as
> >    IMHO mod_cgi is a "standard" module, and will probably be compiled
> >    into the server no matter what.
> > 
> > 4. mod_dld uses server_argv0. I'm even less worried about that, since
> >    mod_dld hardly works with Unix, let alone Windows. The mod_dll I
> >    posted earlier, which works fine, doesn't need to access that
> >    variable.
> > 
> > Here's the patch to make mod_status work. Note that it should be
> > accompanied by a bump to MODULE_MAGIC_NUMBER, as it adds a new API
> > function:
> > 
> > Index: http_main.c
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/http_main.c,v
> > retrieving revision 1.174
> > diff -u -r1.174 http_main.c
> > --- http_main.c	1997/07/07 14:34:26	1.174
> > +++ http_main.c	1997/07/08 22:02:57
> > @@ -1190,6 +1190,14 @@
> >  
> >  }
> >  
> > +/* This is in a global, but we can't always get to it, so we can use
> > + * a function instead.
> > + */
> > +
> > +time_t get_restart_time (void) {
> > +    return restart_time;
> > +}
> > +
> >  static void increment_counts (int child_num, request_rec *r)
> >  {
> >      long int bs=0;
> > Index: mod_status.c
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/mod_status.c,v
> > retrieving revision 1.51
> > diff -u -r1.51 mod_status.c
> > --- mod_status.c	1997/07/07 14:34:28	1.51
> > +++ mod_status.c	1997/07/08 22:02:59
> > @@ -193,7 +193,7 @@
> >      };
> >      char *loc;
> >      time_t nowtime=time(NULL);
> > -    time_t up_time;
> > +    time_t up_time, rs_time;
> >      int i,res;
> >      int ready=0;
> >      int busy=0;
> > @@ -308,7 +308,8 @@
> >  #endif /* STATUS */
> >      }
> >  
> > -    up_time=nowtime-restart_time;
> > +    rs_time = get_restart_time();
> > +    up_time = nowtime-rs_time;
> >  
> >      hard_timeout("send status info", r);
> >  
> > @@ -318,7 +319,7 @@
> >          rputs("<H1>Apache Server Status for ",r);
> >  	rvputs(r,server->server_hostname,"</H1>\n\n",NULL);
> >  	rvputs(r,"Current Time: ",asctime(localtime(&nowtime)),"<br>\n",NULL);
> > -	rvputs(r,"Restart Time: ",asctime(localtime(&restart_time)),"<br>\n",
> > +	rvputs(r,"Restart Time: ",asctime(localtime(&rs_time)),"<br>\n",
> >  	       NULL);
> >  	rputs("Server uptime: ",r);
> >  	show_time(r,up_time);
> > Index: scoreboard.h
> > ===================================================================
> > RCS file: /export/home/cvs/apache/src/scoreboard.h,v
> > retrieving revision 1.24
> > diff -u -r1.24 scoreboard.h
> > --- scoreboard.h	1997/07/07 14:34:28	1.24
> > +++ scoreboard.h	1997/07/08 22:02:59
> > @@ -118,6 +118,8 @@
> >  short_score get_scoreboard_info(int x);
> >  int exists_scoreboard_image ();
> >  
> > +time_t get_restart_time(void);
> > +
> >  /* for time_process_request() in http_main.c */
> >  #define START_PREQUEST 1
> >  #define STOP_PREQUEST  2
> > 
> > 
> > -- Alexei Kosut <ak...@organic.com>
> > 
> > 
> 
> 
> -- 
> ====================================================================
>       Jim Jagielski            |       jaguNET Access Services
>      jim@jaguNET.com           |       http://www.jaguNET.com/
>             "Look at me! I'm wearing a cardboard belt!"