#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, };