| #include "a.h" | 
 |  | 
 | struct Pfd | 
 | { | 
 | 	int fd; | 
 | }; | 
 |  | 
 | static Pfd* | 
 | httpconnect(char *host) | 
 | { | 
 | 	char buf[1024]; | 
 | 	Pfd *pfd; | 
 | 	int fd; | 
 |  | 
 | 	snprint(buf, sizeof buf, "tcp!%s!http", host); | 
 | 	if((fd = dial(buf, nil, nil, nil)) < 0) | 
 | 		return nil; | 
 | 	pfd = emalloc(sizeof *pfd); | 
 | 	pfd->fd = fd; | 
 | 	return pfd; | 
 | } | 
 |  | 
 | static void | 
 | httpclose(Pfd *pfd) | 
 | { | 
 | 	if(pfd == nil) | 
 | 		return; | 
 | 	close(pfd->fd); | 
 | 	free(pfd); | 
 | } | 
 |  | 
 | static int | 
 | httpwrite(Pfd *pfd, void *v, int n) | 
 | { | 
 | 	return writen(pfd->fd, v, n); | 
 | } | 
 |  | 
 | static int | 
 | httpread(Pfd *pfd, void *v, int n) | 
 | { | 
 | 	return read(pfd->fd, v, n); | 
 | } | 
 |  | 
 | Protocol http = { | 
 | 	httpconnect, | 
 | 	httpread, | 
 | 	httpwrite, | 
 | 	httpclose, | 
 | }; | 
 |  |