s.file[s.httpheaderlineptr - i] = 0;
parse_headers(u16_t len){  char *cptr;  static char c, i;    while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {    s.httpheaderline[s.httpheaderlineptr] = *uip_appdata;    ++uip_appdata;    --len;    if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {      /* We have an entire HTTP header line in s.httpheaderline, so	 we parse it. */      if(s.httpheaderline[0] == ISO_cr) {	/* This was the last header line (i.e., and empty "\r\n"), so	   we are done with the headers and proceed with the actual	   data. */	s.state = WEBCLIENT_STATE_DATA;	return len;      }      s.httpheaderline[s.httpheaderlineptr - 1] = 0;      /* Check for specific HTTP header fields. */            if(casecmp(s.httpheaderline, http_content_type,		     sizeof(http_content_type) - 1) == 0) {	/* Found Content-type field. */	cptr = strchr(s.httpheaderline, ';');	if(cptr != NULL) {	  *cptr = 0;	}	strncpy(s.mimetype, s.httpheaderline +		sizeof(http_content_type) - 1, sizeof(s.mimetype));      } else if(casecmp(s.httpheaderline, http_location,			    sizeof(http_location) - 1) == 0) {	cptr = s.httpheaderline +	  sizeof(http_location) - 1;		if(strncmp(cptr, http_http, 7) == 0) {	  cptr += 7; 	  for(i = 0; i < s.httpheaderlineptr - 7; ++i) {	    if(*cptr == 0 ||	       *cptr == '/' ||	       *cptr == ' ' ||	       *cptr == ':') {	      s.host[i] = 0;	      break;	    }	    s.host[i] = *cptr;	    ++cptr;	  }	}	strncpy(s.file, cptr, sizeof(s.file));	s.file[s.httpheaderlineptr - i] = 0;      }      /* We're done parsing, so we reset the pointer and start the	 next line. */      s.httpheaderlineptr = 0;          } else {      ++s.httpheaderlineptr;    }  }  return len;}