a minor step forwards

This commit is contained in:
Daniel Stenberg 2002-02-19 01:04:46 +00:00
parent a8c3431ae9
commit 485edb777f
2 changed files with 48 additions and 23 deletions

View File

@ -7,6 +7,27 @@
#define EAT_SPACE(ptr) while( ptr && *ptr && isspace(*ptr) ) ptr++
#define EAT_WORD(ptr) while( ptr && *ptr && !isspace(*ptr) && ('>' != *ptr)) ptr++
char *appendstring(char *string, /* original string */
char *buffer, /* to append */
int *stringlen, int *stralloc)
{
int len = strlen(buffer);
if((len + *stringlen) > *stralloc) {
char *newptr= realloc(string, *stralloc*2);
if(newptr) {
string = newptr;
*stralloc *= 2;
}
else
return NULL;
}
strcpy(&string[*stringlen], buffer);
*stringlen += len;
return string;
}
char *spitout(FILE *stream, char *main, char *sub, int *size)
{
char buffer[8192]; /* big enough for anything */
@ -19,6 +40,7 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
char *string;
int stringlen=0;
int stralloc=256;
int len;
enum {
STATE_OUTSIDE,
@ -38,22 +60,9 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
if('<' != *ptr) {
if(display) {
int len;
printf("=> %s", buffer);
len = strlen(buffer);
if((len + stringlen) > stralloc) {
char *newptr= realloc(string, stralloc*2);
if(newptr) {
string = newptr;
stralloc *= 2;
}
else
return NULL;
}
strcpy(&string[stringlen], buffer);
stringlen += len;
string = appendstring(string, buffer, &stringlen, &stralloc);
printf("* %s\n", buffer);
}
continue;
}
@ -75,15 +84,17 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
/* this is the end of the currently read sub section */
state--;
csub[0]=0; /* no sub anymore */
display=0;
}
else if((state == STATE_INMAIN) &&
!strcmp(cmain, ptr)) {
/* this is the end of the currently read main section */
state--;
cmain[0]=0; /* no main anymore */
display=0;
}
}
else {
else if(!display) {
/* this is the beginning of a section */
end = ptr;
EAT_WORD(end);
@ -100,11 +111,15 @@ char *spitout(FILE *stream, char *main, char *sub, int *size)
break;
}
}
if(display) {
string = appendstring(string, buffer, &stringlen, &stralloc);
printf("* %s\n", buffer);
}
if((STATE_INSUB == state) &&
!strcmp(cmain, main) &&
!strcmp(csub, sub)) {
printf("* %s\n", buffer);
printf("* (%d bytes) %s\n", stringlen, buffer);
display = 1; /* start displaying */
}
else {

View File

@ -29,6 +29,7 @@
#define TEST_DATA_PATH "data/test%d"
static char *docfriends = "WE ROOLZ\r\n";
static char *doc404 = "HTTP/1.1 404 Not Found\n"
"Server: " VERSION "\n"
"Connection: close\n"
@ -184,12 +185,18 @@ static int get_request(int sock)
/* get the number after it */
if(ptr) {
if(!strcmp("/verifiedserver", ptr)) {
logmsg("Are-we-friendly question received");
return -2;
}
test_no = strtol(ptr+1, &ptr, 10);
logmsg("Found test number in PATH");
}
else
else {
logmsg("Did not find test number in PATH");
}
return test_no;
}
@ -211,7 +218,11 @@ static int send_doc(int sock, int doc)
char filename[256];
if(doc < 0) {
buffer = doc404;
if(-2 == doc)
/* we got a "friends?" question, reply back that we sure are */
buffer = docfriends;
else
buffer = doc404;
ptr = NULL;
stream=NULL;
}
@ -257,6 +268,8 @@ int main(int argc, char *argv[])
logfile = "logfile";
/* FIX: write our pid to a file name */
logfp = fopen(logfile, "a");
if (!logfp) {
perror(logfile);
@ -317,10 +330,7 @@ int main(int argc, char *argv[])
logmsg("New client connected");
doc = get_request(msgsock);
if (doc > 0)
send_doc(msgsock, doc);
else
send_doc(msgsock, -1);
send_doc(msgsock, doc);
close(msgsock);
}