int doreq(void) { int zap; char *ptr; zap = AJK_sockwrite(sock, uri, strlen(uri)); if(zap > -1) { sprintf(uri, "User-Agent: %s/%s (AJKstack/%s, %s, %s)\n\n", PROGRAM, VERSION, STACK_IS, OS, CPU); zap = AJK_sockwrite(sock, uri, strlen(uri)); } if(zap > -1) { zap = grabline(); } if(zap > -1) { /* check the result, we must see a 200 here */ ptr = uri; while(*ptr != ' ') ptr++; ptr++; zap = -1; if(*ptr == '2') { ptr++; if(*ptr == '0') { ptr++; if(*ptr == '0') { printf("%s\n", uri); zap = grabfile(); } } } } return(zap); }
struct mimeheader_t parse_chunk_headers(char *chunk){ struct mimeheader_t header = {0,0,0,0}; while(*chunk){ char *line = grabline(&chunk); if (!line){ break; } else if (*line == '\0'){ header.datap = line + strlen("\r\n"); break; } else if (startswithcase(line, "content-disposition:")){ line += strlen("content-disposition:"); if (*line == ' '){ line++; } extract_content_disposition(line, &header); } } return header; }
int grabfile() { int zap; int i; FILE *dl; zap = -1; i = 1; while(strlen(uri)) { zap = grabline(); if(zap < 0) break; } if(zap > -1) { /* read in file and save it */ dl = fopen(local, "wb"); if(!dl) { zap = -1; perror(local); } else { while(i > -1) { i = sockread(sock, uri, 96); if(i > 0) { printf("."); fflush(stdout); zap = fwrite(uri, 1, i, dl); if(zap < 0) break; } } fclose(dl); if(zap > -1) { printf("Done\n"); } } } return(zap); }