00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "defs.h"
00022 #include "ssi.h"
00023
00024
00025 int main(void)
00026 {
00027 char url[100], s[500], *path = "", *p;
00028 SSI *ssip;
00029 int fd;
00030 ssize_t nread;
00031
00032 while (true) {
00033 printf("URL: ");
00034 if (fgets(url, sizeof(url), stdin) == NULL)
00035 break;
00036 if ((p = strrchr(url, '\n')) != NULL)
00037 *p = '\0';
00038 if ((p = strchr(url, '/')) != NULL) {
00039 path = p + 1;
00040 *p = '\0';
00041 }
00042 snprintf(s, sizeof(s), "//%s:80", url);
00043 ec_null( ssip = ssi_open(s, false) )
00044 ec_neg1( fd = ssi_get_server_fd(ssip) )
00045 snprintf(s, sizeof(s), "GET /%s HTTP/1.0\r\n\r\n", path);
00046 ec_neg1( writeall(fd, s, strlen(s)) )
00047 while (true) {
00048 switch (nread = read(fd, s, sizeof(s))) {
00049 case 0:
00050 printf("EOF\n");
00051 break;
00052 case -1:
00053 EC_FAIL
00054 default:
00055 ec_neg1( writeall(STDOUT_FILENO, s, nread) )
00056 continue;
00057 }
00058 break;
00059 }
00060 ec_false( ssi_close(ssip) )
00061 }
00062 ec_false( !ferror(stdin) )
00063 exit(EXIT_SUCCESS);
00064
00065 EC_CLEANUP_BGN
00066 exit(EXIT_FAILURE);
00067 EC_CLEANUP_END
00068 }
00069