On Mon, 16 Mar 1998, Ralf S. Engelschall wrote: > rse 98/03/16 07:23:25 > > Modified: src/test zb.c > Log: > Argl, ZeusBench is such a useful utility, but the author seems to come from > VMS or DOS land: Options after arguments :-( We are in Unix land, so make > ZeusBench interface Unix-like as anyone would expect: options first, then > remaining non-option arguments...
Is that really wise? Not only is it pretending we can make version numbers for a program that someone else puts out, but it makes it completely incompatible with ZeusBench... > > Revision Changes Path > 1.3 +23 -16 apache-1.3/src/test/zb.c > > Index: zb.c > =================================================================== > RCS file: /export/home/cvs/apache-1.3/src/test/zb.c,v > retrieving revision 1.2 > retrieving revision 1.3 > diff -u -r1.2 -r1.3 > --- zb.c 1997/11/10 02:06:02 1.2 > +++ zb.c 1998/03/16 15:23:24 1.3 > @@ -191,9 +191,10 @@ > gettimeofday(&endtime,0); > timetaken = timedif(endtime, start); > > - printf("\n---\n"); > - printf("Server: %s\n", server_name); > - printf("Document Length: %d\n", doclen); > + printf("Server Hostname: %s\n", machine); > + printf("Server Software: %s\n", server_name); > + printf("Document Path: %s\n", file); > + printf("Document Length: %d bytes\n", doclen); > printf("Concurency Level: %d\n", concurrency); > printf("Time taken for tests: %d.%03d seconds\n", > timetaken/1000, timetaken%1000); > @@ -202,8 +203,8 @@ > if(bad) printf(" (Connect: %d, Length: %d, Exceptions: %d)\n", > err_conn, err_length, err_except); > if(keepalive) printf("Keep-Alive requests: %d\n", doneka); > - printf("Bytes transfered: %d\n", totalread); > - printf("HTML transfered: %d\n", totalbread); > + printf("Total transfered: %d bytes\n", totalread); > + printf("HTML transfered: %d bytes\n", totalbread); > > /* avoid divide by zero */ > if(timetaken) { > @@ -232,7 +233,6 @@ > printf(" min avg max\n"); > printf("Connect: %5d %5d %5d\n",mincon, totalcon/requests, maxcon ); > printf("Total: %5d %5d %5d\n", mintot, total/requests, maxtot); > - printf("---\n\n"); > } > > exit(0); > @@ -453,7 +453,7 @@ > FD_ZERO(&writebits); > > /* setup request */ > - sprintf(request,"GET %s HTTP/1.0\r\nUser-Agent: ZeusBench/1.0\r\n" > + sprintf(request,"GET %s HTTP/1.0\r\nUser-Agent: ZeusBench/1.01\r\n" > "%sHost: %s\r\nAccept: */*\r\n\r\n", file, > keepalive?"Connection: Keep-Alive\r\n":"", machine ); > > @@ -509,10 +509,16 @@ > /* display usage information */ > > void usage(char *progname) { > - printf("\nZeusBench v1.0\n\n"); > - printf("Usage: %s <machine> <file> [-k] [-n requests | -t timelimit > (sec)]" > - "\n\t\t[-c concurrency] [-p port] \n",progname); > - printf("Filename should start with a '/' e.g. /index.html\n\n"); > + printf("This is ZeusBench, Version v1.01\n"); > + printf("\n"); > + printf("Usage: %s [options] <machine> <path>\n", progname); > + printf(" -k KeepAlive\n"); > + printf(" -n requests Number of requests to peforms\n"); > + printf(" -t timelimit Seconds to max. wait for responses\n"); > + printf(" -c concurrency Number of multiple requests to make\n"); > + printf(" -p port Port number to use\n"); > + printf("\n"); > + printf("Path should start with a '/' e.g. /index.html\n\n"); > exit(EINVAL); > } > > @@ -522,11 +528,7 @@ > > int main(int argc, char **argv) { > int c; > - if (argc < 3) usage(argv[0]); > - > - machine = argv[1]; > - file = argv[2]; > - optind = 3; > + optind = 1; > while ((c = getopt(argc,argv,"p:n:c:d:t:d:k"))>0) { > switch(c) { > case 'd': > @@ -556,6 +558,11 @@ > break; > } > } > + if (optind != argc-2) > + usage(argv[0]); > + > + machine = argv[optind++]; > + file = argv[optind++]; > test(); > return 0; > } > > > >