jim 96/05/27 14:08:32
Modified: src Configuration.tmpl Makefile.tmpl buff.h
http_protocol.c http_protocol.h mod_status.c
Log:
Add in Ben's rprintf() capability
Revision Changes Path
1.14 +3 -1 apache/src/Configuration.tmpl
Index: Configuration.tmpl
===================================================================
RCS file: /export/home/cvs/apache/src/Configuration.tmpl,v
retrieving revision 1.13
retrieving revision 1.14
diff -C3 -r1.13 -r1.14
*** Configuration.tmpl 1996/04/17 10:29:01 1.13
--- Configuration.tmpl 1996/05/27 21:08:26 1.14
***************
*** 102,108 ****
#AUX_CFLAGS= -DSCO
#AUX_LIBS= -lPW -lsocket -lmalloc -lcrypt_i
# For SCO OpenServer Release 5
! #AUX_CFLAGS= -DSCO5
#AUX_LIBS=-lsocket -lmalloc -lprot
# For SVR4
#AUX_CFLAGS= -DSVR4
--- 102,110 ----
#AUX_CFLAGS= -DSCO
#AUX_LIBS= -lPW -lsocket -lmalloc -lcrypt_i
# For SCO OpenServer Release 5
! # -K noinline is needed to work around an optimiser bug which appears in
! # mod_bprintf.c
! #AUX_CFLAGS= -DSCO5 -K noinline
#AUX_LIBS=-lsocket -lmalloc -lprot
# For SVR4
#AUX_CFLAGS= -DSVR4
1.10 +6 -5 apache/src/Makefile.tmpl
Index: Makefile.tmpl
===================================================================
RCS file: /export/home/cvs/apache/src/Makefile.tmpl,v
retrieving revision 1.9
retrieving revision 1.10
diff -C3 -r1.9 -r1.10
*** Makefile.tmpl 1996/05/07 18:58:08 1.9
--- Makefile.tmpl 1996/05/27 21:08:27 1.10
***************
*** 5,11 ****
OBJS= alloc.o http_main.o http_core.o http_config.o http_request.o \
http_log.o http_protocol.o rfc1413.o util.o util_script.o modules.o
buff.o\
! md5c.o util_md5.o explain.o $(MODULES)
.c.o:
$(CC) -c $(CFLAGS) $(AUX_CFLAGS) $<
--- 5,11 ----
OBJS= alloc.o http_main.o http_core.o http_config.o http_request.o \
http_log.o http_protocol.o rfc1413.o util.o util_script.o modules.o
buff.o\
! md5c.o util_md5.o explain.o http_bprintf.o $(MODULES)
.c.o:
$(CC) -c $(CFLAGS) $(AUX_CFLAGS) $<
***************
*** 51,70 ****
http_core.o rfc1413.o: rfc1413.h
#Modules
! $(MODULES): http_config.h
mod_dld.o: http_conf_globals.h
mod_ai_backcompat.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o:
http_core.h
mod_access.o mod_imap.o mod_include.o mod_negotiation.o: http_core.h
mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o: http_core.h
! mod_cookies.o mod_log_common.o: http_core.h
mod_access.o mod_proxy.o mod_imap.o mod_include.o mod_negotiation.o:
http_log.h
mod_proxy.o mod_asis.o mod_cgi.o mod_dir.o mod_imap.o: http_main.h
! mod_include.o: http_main.h
mod_proxy.o mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o: http_protocol.h
! mod_dir.o: http_protocol.h
mod_imap.o mod_include.o: http_protocol.h
mod_cgi.o mod_dir.o mod_imap.o mod_include.o mod_negotiation.o:
http_request.h
mod_proxy.o: md5.h
mod_asis.o mod_cgi.o mod_dir.o mod_imap.o mod_include.o: util_script.h
mod_digest.o: util_md5.h
mod_status.o: scoreboard.h
--- 51,71 ----
http_core.o rfc1413.o: rfc1413.h
#Modules
! $(MODULES): http_config.h httpd.h
mod_dld.o: http_conf_globals.h
mod_ai_backcompat.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o:
http_core.h
mod_access.o mod_imap.o mod_include.o mod_negotiation.o: http_core.h
mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o: http_core.h
! mod_status.o mod_cookies.o mod_log_common.o: http_core.h
mod_access.o mod_proxy.o mod_imap.o mod_include.o mod_negotiation.o:
http_log.h
mod_proxy.o mod_asis.o mod_cgi.o mod_dir.o mod_imap.o: http_main.h
! mod_status.o mod_include.o: http_main.h
mod_proxy.o mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o: http_protocol.h
! mod_status.o mod_dir.o: http_protocol.h
mod_imap.o mod_include.o: http_protocol.h
mod_cgi.o mod_dir.o mod_imap.o mod_include.o mod_negotiation.o:
http_request.h
mod_proxy.o: md5.h
+ mod_status.o: util_script.h
mod_asis.o mod_cgi.o mod_dir.o mod_imap.o mod_include.o: util_script.h
mod_digest.o: util_md5.h
mod_status.o: scoreboard.h
1.4 +4 -0 apache/src/buff.h
Index: buff.h
===================================================================
RCS file: /export/home/cvs/apache/src/buff.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C3 -r1.3 -r1.4
*** buff.h 1996/05/08 15:28:20 1.3
--- buff.h 1996/05/27 21:08:27 1.4
***************
*** 50,55 ****
--- 50,57 ----
*
*/
+ #include <stdarg.h>
+
/* Reading is buffered */
#define B_RD (1)
/* Writing is buffered */
***************
*** 110,115 ****
--- 112,119 ----
extern int bflush(BUFF *fb);
extern int bputs(const char *x, BUFF *fb);
extern int bvputs(BUFF *fb, ...);
+ extern int bprintf(BUFF *fb,const char *fmt,...);
+ extern int vbprintf(BUFF *fb,const char *fmt,va_list vlist);
/* Internal routines */
extern int bflsbuf(int c, BUFF *fb);
1.20 +12 -0 apache/src/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -C3 -r1.19 -r1.20
*** http_protocol.c 1996/04/29 03:55:32 1.19
--- http_protocol.c 1996/05/27 21:08:28 1.20
***************
*** 747,752 ****
--- 747,764 ----
return bputs(str, r->connection->client);
}
+ int rprintf(request_rec *r,const char *fmt,...)
+ {
+ va_list vlist;
+ int n;
+
+ if(r->connection->aborted) return EOF;
+ va_start(vlist,fmt);
+ n=vbprintf(r->connection->client,fmt,vlist);
+ va_end(vlist);
+ return n;
+ }
+
int
rvputs(request_rec *r, ...)
{
1.6 +3 -2 apache/src/http_protocol.h
Index: http_protocol.h
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C3 -r1.5 -r1.6
*** http_protocol.h 1996/03/21 03:50:15 1.5
--- http_protocol.h 1996/05/27 21:08:28 1.6
***************
*** 108,115 ****
long rprintf (request_rec *r, char *s, ...);
#endif
int rputc (int c, request_rec *r);
! extern int rputs(const char *str, request_rec *r);
! extern int rvputs(request_rec *r, ...);
/*
* Index used in custom_responses array for a specific error code
--- 108,116 ----
long rprintf (request_rec *r, char *s, ...);
#endif
int rputc (int c, request_rec *r);
! int rputs(const char *str, request_rec *r);
! int rvputs(request_rec *r, ...);
! int rprintf(request_rec *r,const char *fmt,...);
/*
* Index used in custom_responses array for a specific error code
1.18 +47 -87 apache/src/mod_status.c
Index: mod_status.c
===================================================================
RCS file: /export/home/cvs/apache/src/mod_status.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -C3 -r1.17 -r1.18
*** mod_status.c 1996/05/22 17:35:39 1.17
--- mod_status.c 1996/05/27 21:08:29 1.18
***************
*** 75,80 ****
--- 75,82 ----
* 09.4.96 Added message for non-STATUS compiled version
* 18.4.96 Added per child and per slot counters [Jim Jagielski]
* 01.5.96 Table format, cleanup, even more spiffy data [Chuck Murcko/Jim
J.]
+ * 18.5.96 Adapted to use new rprintf() routine, incidentally fixing a
missing
+ * piece in short reports [Ben Laurie]
* 21.5.96 Additional Status codes (DNS and LOGGING only enabled if
extended STATUS is enabled) [George Burgyan/Jim J.]
*/
***************
*** 103,116 ****
char ss[20];
if (bytes < (5 * KBYTE))
! sprintf(ss,"%dB",(int)bytes);
else if (bytes < (MBYTE / 2))
! sprintf(ss,"%.1fkB",(float)bytes/KBYTE);
else if (bytes < (GBYTE / 2))
! sprintf(ss,"%.1fMB",(float)bytes/MBYTE);
else
! sprintf(ss,"%.1fGB",(float)bytes/GBYTE);
! rputs(ss,r);
}
void show_time(request_rec *r,time_t tsecs)
--- 105,117 ----
char ss[20];
if (bytes < (5 * KBYTE))
! rprintf(r,"%d B",(int)bytes);
else if (bytes < (MBYTE / 2))
! rprintf(r,"%.1f kB",(float)bytes/KBYTE);
else if (bytes < (GBYTE / 2))
! rprintf(r,"%.1f MB",(float)bytes/MBYTE);
else
! rprintf(r,"%.1f GB",(float)bytes/GBYTE);
}
void show_time(request_rec *r,time_t tsecs)
***************
*** 128,153 ****
s=buf;
*s='\0';
if(days)
! {
! sprintf(s," %ld day%s",days,days==1?"":"s");
! s+=strlen(s);
! }
if(hrs)
! {
! sprintf(s," %ld hour%s",hrs,hrs==1?"":"s");
! s+=strlen(s);
! }
if(mins)
! {
! sprintf(s," %ld minute%s",mins,mins==1?"":"s");
! s+=strlen(s);
! }
if(secs)
! {
! sprintf(s," %ld second%s",secs,secs==1?"":"s");
! s+=strlen(s);
! }
! rputs(buf,r);
}
/* Main handler for x-httpd-status requests */
--- 129,141 ----
s=buf;
*s='\0';
if(days)
! rprintf(r," %ld day%s",days,days==1?"":"s");
if(hrs)
! rprintf(r," %ld hour%s",hrs,hrs==1?"":"s");
if(mins)
! rprintf(r," %ld minute%s",mins,mins==1?"":"s");
if(secs)
! rprintf(r," %ld second%s",secs,secs==1?"":"s");
}
/* Main handler for x-httpd-status requests */
***************
*** 194,200 ****
server_rec *server = r->server;
short_score score_record;
char status[]="??????????";
- char buffer[200];
char stat_buffer[HARD_SERVER_MAX];
clock_t tu,ts,tcu,tcs;
--- 182,187 ----
***************
*** 297,358 ****
#if defined(STATUS)
if (short_report)
{
! sprintf(buffer,"Total Accesses: %lu\nTotal Bytes:
%lu\n",count,bcount);
! rputs(buffer,r);
if(ts || tu || tcu || tcs)
! {
! sprintf(buffer,"CPULoad: %g\n",(tu+ts+tcu+tcs)/tick/up_time*100.);
! rputs(buffer,r);
! }
! sprintf(buffer,"Uptime: %ld\n",(long)(up_time));
! rputs(buffer,r);
if (up_time>0)
! {
! sprintf(buffer,"ReqPerSec: %g\n",
! (float)count/(float)up_time);
! rputs(buffer,r);
! }
if (up_time>0)
! {
! sprintf(buffer,"BytesPerSec: %g\n",
! (float)bcount/(float)up_time);
! rputs(buffer,r);
! }
if (count>0)
! {
! sprintf(buffer,"BytesPerReq: %g\n",
! (float)bcount/(float)count);
! rputs(buffer,r);
! }
} else /* !short_report */
{
! sprintf(buffer,"Total accesses: %lu - Total Traffic: ", count);
! rputs(buffer,r);
format_byte_out(r,bcount);
rputs("<br>\n",r);
! sprintf(buffer,"CPU Usage: u%g s%g cu%g cs%g",
tu/tick,ts/tick,tcu/tick,tcs/tick);
- rputs(buffer,r);
if(ts || tu || tcu || tcs)
! {
! sprintf(buffer," - %.3g%% CPU load",
! (tu+ts+tcu+tcs)/tick/up_time*100.);
! rputs(buffer,r);
! }
rputs("<br>\n",r);
if (up_time>0)
! {
! sprintf(buffer,"%.3g requests/sec - ",
(float)count/(float)up_time);
- rputs(buffer,r);
- }
if (up_time>0)
{
--- 284,319 ----
#if defined(STATUS)
if (short_report)
{
! rprintf(r,"Total Accesses: %lu\nTotal Bytes: %lu\n",count,bcount);
if(ts || tu || tcu || tcs)
! rprintf(r,"CPULoad: %g\n",(tu+ts+tcu+tcs)/tick/up_time*100.);
! rprintf(r,"Uptime: %ld\n",(long)(up_time));
if (up_time>0)
! rprintf(r,"ReqPerSec: %g\n",(float)count/(float)up_time);
if (up_time>0)
! rprintf(r,"BytesPerSec: %g\n",(float)bcount/(float)up_time);
if (count>0)
! rprintf(r,"BytesPerReq: %g\n",(float)bcount/(float)count);
} else /* !short_report */
{
! rprintf(r,"Total accesses: %lu - Total Traffic: ", count);
format_byte_out(r,bcount);
rputs("<br>\n",r);
! rprintf(r,"CPU Usage: u%g s%g cu%g cs%g",
tu/tick,ts/tick,tcu/tick,tcs/tick);
if(ts || tu || tcu || tcs)
! rprintf(r," - %.3g%% CPU load",(tu+ts+tcu+tcs)/tick/up_time*100.);
rputs("<br>\n",r);
if (up_time>0)
! rprintf(r,"%.3g requests/sec - ",
(float)count/(float)up_time);
if (up_time>0)
{
***************
*** 388,394 ****
if (short_report)
{
! sprintf(buffer,"\nBusyServers: %d\nIdleServers: %d\n",busy,ready);
}
else
{
--- 349,355 ----
if (short_report)
{
! rprintf(r,"\nBusyServers: %d\nIdleServers: %d\n",busy,ready);
}
else
{
***************
*** 401,408 ****
--- 362,374 ----
rputs("\"<code>K</code>\" Keepalive (read), \n",r);
rputs("\"<code>D</code>\" DNS Lookup, \n",r);
rputs("\"<code>L</code>\" Logging<p>\n",r);
+ rprintf(r,"\n%d requests currently being processed, %d idle
servers\n"
+ ,busy,ready);
+
+ #if 0
sprintf(buffer,"\n%d requests currently being processed, %d idle
servers\n",busy,ready);
rputs(buffer,r);
+ #endif
}
#if defined(STATUS)
***************
*** 410,416 ****
if(no_table_report)
rputs("<p><hr><h2>Server Details</h2>\n\n",r);
else
! rputs("<p>\n\n<table
border=0><tr><th>Srv<th>PID<th>Acc<th>M<th>CPU\n<th>SS<th>B0<th>B1<th>B2<th>Host<th>Request</tr>\n\n",r);
for (i = 0; i<HARD_SERVER_MAX; ++i)
--- 376,382 ----
if(no_table_report)
rputs("<p><hr><h2>Server Details</h2>\n\n",r);
else
! rputs("<p>\n\n<table
border=0><tr><th>Srv<th>PID<th>Acc<th>M<th>CPU\n<th>SS<th>Conn<th>Child<th>Slot<th>Host<th>Request</tr>\n\n",r);
for (i = 0; i<HARD_SERVER_MAX; ++i)
***************
*** 429,437 ****
{
if (no_table_report)
{
! sprintf(buffer,"<b>Server %d</b> (%d): %d|%lu|%lu [",
i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
- rputs(buffer,r);
switch (score_record.status)
{
--- 395,402 ----
{
if (no_table_report)
{
! rprintf(r,"<b>Server %d</b> (%d): %d|%lu|%lu [",
i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
switch (score_record.status)
{
***************
*** 460,487 ****
rputs("Dead",r);
break;
}
! sprintf(buffer,"] u%g s%g cu%g cs%g\n %s (",
score_record.times.tms_utime/tick,
score_record.times.tms_stime/tick,
score_record.times.tms_cutime/tick,
score_record.times.tms_cstime/tick,
asctime(localtime(&score_record.last_used)));
- rputs(buffer,r);
format_byte_out(r,(unsigned long)conn_bytes);
rputs("|",r);
format_byte_out(r,my_bytes);
rputs("|",r);
format_byte_out(r,bytes);
rputs(")\n",r);
! sprintf(buffer," <i>%s {%s}</i><br>\n\n",
! score_record.client, score_record.request);
! rputs(buffer,r);
}
else /* !no_table_report */
{
! sprintf(buffer,"<tr><td><b>%d</b><td>%d<td>%d/%lu/%lu",
i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
- rputs(buffer,r);
switch (score_record.status)
{
--- 425,449 ----
rputs("Dead",r);
break;
}
! rprintf(r,"] u%g s%g cu%g cs%g\n %s (",
score_record.times.tms_utime/tick,
score_record.times.tms_stime/tick,
score_record.times.tms_cutime/tick,
score_record.times.tms_cstime/tick,
asctime(localtime(&score_record.last_used)));
format_byte_out(r,(unsigned long)conn_bytes);
rputs("|",r);
format_byte_out(r,my_bytes);
rputs("|",r);
format_byte_out(r,bytes);
rputs(")\n",r);
! rprintf(r," <i>%s {%s}</i><br>\n\n",
! score_record.client, score_record.request);
}
else /* !no_table_report */
{
! rprintf(r,"<tr><td><b>%d</b><td>%d<td>%d/%lu/%lu",
i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
switch (score_record.status)
{
***************
*** 510,529 ****
rputs("<td>.",r);
break;
}
! sprintf(buffer,"\n<td>%.2f<td>%.0f",
(score_record.times.tms_utime +
score_record.times.tms_stime +
score_record.times.tms_cutime +
score_record.times.tms_cstime)/tick,
difftime(nowtime, score_record.last_used));
! rputs(buffer,r);
! sprintf(buffer,"<td>%-1.1f<td>%-2.2f<td>%-2.2f\n",
(float)conn_bytes/KBYTE, (float)my_bytes/MBYTE,
(float)bytes/MBYTE);
! rputs(buffer,r);
! sprintf(buffer,"<td>%s<td>%s</tr>\n\n",
score_record.client, score_record.request);
- rputs(buffer,r);
} /* no_table_report */
} /* !short_report */
} /* if (<active child>) */
--- 472,488 ----
rputs("<td>.",r);
break;
}
! rprintf(r,"\n<td>%.2f<td>%.0f",
(score_record.times.tms_utime +
score_record.times.tms_stime +
score_record.times.tms_cutime +
score_record.times.tms_cstime)/tick,
difftime(nowtime, score_record.last_used));
! rprintf(r,"<td>%-1.1f<td>%-2.2f<td>%-2.2f\n",
(float)conn_bytes/KBYTE, (float)my_bytes/MBYTE,
(float)bytes/MBYTE);
! rprintf(r,"<td>%s<td>%s</tr>\n\n",
score_record.client, score_record.request);
} /* no_table_report */
} /* !short_report */
} /* if (<active child>) */
***************
*** 532,548 ****
if (!(short_report || no_table_report))
{
rputs("</table>\n \
! <ul>\n \
! <li>SRV = \"Server number\"\n \
! <li>PID = \"OS process ID\"\n \
! <li>Acc = \"Number of accesses this connection / this child / this
slot\"\n \
! <li>M = \"Mode of operation\"\n \
! <li>CPU = \"CPU usage, number of seconds\"\n \
! <li>SS = \"Seconds since beginning of most recent request\"\n \
! <li>B0 = \"Kilobytes transferred this connection\"\n \
! <li>B1 = \"Megabytes transferred this child\"\n \
! <li>B2 = \"Total megabytes transferred this slot\"\n \
! </ul>\n",r);
}
#else /* !defined(STATUS) */
--- 491,508 ----
if (!(short_report || no_table_report))
{
rputs("</table>\n \
! <hr> \
! <table>\n \
! <tr><th>Srv<td>Server number\n \
! <tr><th>PID<td>OS process ID\n \
! <tr><th>Acc<td>Number of accesses this connection / this child / this
slot\n \
! <tr><th>M<td>Mode of operation\n \
! <tr><th>CPU<td>CPU usage, number of seconds\n \
! <tr><th>SS<td>Seconds since beginning of most recent request\n \
! <tr><th>Conn<td>Kilobytes transferred this connection\n \
! <tr><th>Child<td>Megabytes transferred this child\n \
! <tr><th>Slot<td>Total megabytes transferred this slot\n \
! </table>\n",r);
}
#else /* !defined(STATUS) */