Changes user includes to <library/header.h> (XCC)
[akaros.git] / tests / get_html.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <unistd.h>
5 #include <assert.h>
6 #include <iplib/iplib.h>
7 #include <parlib/net.h>
8
9 /* simple test, gets a single web page.  no url parsing, no timeout detection,
10  * etc.  pass it the IP addr and page to fetch.
11  *
12  * check out http://www.d.umn.edu/~gshute/net/http-script.html for some info. */
13 int main(int argc, char *argv[])
14 {
15         char *host, *page, *port;
16         int dfd, ret;
17         char buf[256];
18         char addr[256];
19         host = "128.32.37.180";
20         page = "files/test.html";
21         port = "80";
22
23         if (argc > 1)
24                 host = argv[1];
25         if (argc > 2)
26                 port = argv[2];
27         if (argc > 3)
28                 page = argv[3];
29
30         printf("FYI, Usage: %s [HOST [PORT [PAGE]]]\n", argv[0]);
31
32         printf("Trying to access http://%s:%s/%s\n", host, port, page);
33         /* manually making our own addr (no mkaddr, which was racy anyway) */
34         ret = snprintf(addr, sizeof(addr), "tcp!%s!%s", host, port);
35         if (snprintf_overflow(ret, addr, sizeof(addr))) {
36                 perror("Addr string too long");
37                 exit(-1);
38         }
39         dfd = dial(addr, 0, 0, 0);
40         if (dfd < 0) {
41                 perror("Bad Data FD");
42                 exit(-1);
43         }
44         /* short get style */
45         snprintf(buf, sizeof(buf), "GET /%s\r\nConnection: close\r\n\r\n", page);
46         ret = write(dfd, buf, strlen(buf));
47         if (ret < 0) {
48                 perror("Write");
49                 exit(-1);
50         }
51         /* buf - 1, to leave room for a \0 when we print */
52         while ((ret = read(dfd, buf, sizeof(buf) - 1)) > 0) {
53                 assert(ret < sizeof(buf));
54                 /* trim to print only what we received */
55                 buf[ret] = 0;
56                 printf("%s", buf);
57         }
58 }