#include <u.h>
#include <libc.h>
#include <bio.h>
#include <draw.h>
#include <html.h>
#include "dat.h"

char *url = "";
int aflag;
int width = 70;
char *defcharset = "latin1";

int
uhtml(int fd)
{
       int p[2];

       if(pipe(p) < 0)
               return fd;
       switch(fork()){
       case -1:
               break;
       case 0:
               dup(fd, 0);
               dup(p[1], 1);
               close(p[1]);
               close(p[0]);
               execl("/bin/uhtml", "uhtml", "-c", defcharset, nil);
               execl("/bin/cat", "cat", nil);
               exits("exec");
       default:
               dup(p[0], fd);
               break;
       }
       close(p[0]);
       close(p[1]);
       return fd;
}

void
usage(void)
{
       fprint(2, "usage: htmlfmt [-c charset] [-u URL] [-a] [-l length] [file ...]\n");
       exits("usage");
}

void
main(int argc, char *argv[])
{
       int i, fd;
       char *err, *file;
       char errbuf[ERRMAX];

       ARGBEGIN{
       case 'a':
               aflag++;
               break;
       case 'c':
               defcharset = EARGF(usage());
               break;
       case 'l': case 'w':
               err = EARGF(usage());
               width = atoi(err);
               if(width <= 0)
                       usage();
               break;
       case 'u':
               url = EARGF(usage());
               aflag++;
               break;
       default:
               usage();
       }ARGEND

       err = nil;
       file = "<stdin>";
       if(argc == 0)
               err = loadhtml(uhtml(0));
       else
               for(i=0; err==nil && i<argc; i++){
                       file = argv[i];
                       fd = open(file, OREAD);
                       if(fd < 0){
                               errstr(errbuf, sizeof errbuf);
                               err = errbuf;
                               break;
                       }
                       err = loadhtml(uhtml(fd));
                       close(fd);
                       if(err)
                               break;
               }
       if(err)
               fprint(2, "htmlfmt: processing %s: %s\n", file, err);
       exits(err);
}