void man()
{
    list yo;
    list inc;
    string base;
    string yodl;
    int idx;
    int forced;

    special(0, 0);

    md("tmp/man/man1 tmp/man/man3 tmp/man/man7 tmp/manhtml");

    chdir("documentation/man");

    inc = makelist("*.fnc");
    for (idx = sizeof(inc); idx--; )
    {
        if (element(idx, inc) younger "man-stamp")
        {
            forced = 1;
            break;
        }
    }

    yo = makelist("*.yo") - (list)LIBRARY ".yo";

    for (idx = sizeof(yo); idx--; )
    {
        yodl = element(idx, yo);
    
        if (forced || yodl younger "man-stamp")
        {
            base = get_base(yodl);
    
            run("yodl2man  --no-warnings -r 3 -l 3 -o ../../tmp/man/man3/" + 
                                            base + ".3" LIBRARY " " + yodl);
            run("yodl2html --no-warnings -r 3 -l 3 -o ../../tmp/manhtml/" + 
                                            base + ".3.html " + yodl);
        }
    }

    if (forced || LIBRARY ".yo" younger "man-stamp")
    {
        run("yodl2man  --no-warnings  -r 3 -o ../../tmp/man/man7/" 
                                                LIBRARY ".7 " LIBRARY ".yo");
        run("yodl2html --no-warnings  -r 3 "
                        "-o ../../tmp/manhtml/" LIBRARY ".7.html " 
                                                            LIBRARY ".yo");
    }

    run("touch man-stamp");
    exit(0);
}
