]> granicus.if.org Git - curl/commitdiff
a minor step forwards
authorDaniel Stenberg <daniel@haxx.se>
Tue, 19 Feb 2002 01:04:46 +0000 (01:04 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 19 Feb 2002 01:04:46 +0000 (01:04 +0000)
tests/server/getpart.c
tests/server/sws.c

index b5355e69e37b61bfb9e4b5558d6ae3ed66623ab9..e044f5b5d12b841034d6044b270c45b608df37ce 100644 (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 {
index e2a4561cba654b6f2c1a3ca23cea51162ea8e597..183a5b9353fff0bb0da36cceef05456a8becc1de 100644 (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);
     }