\n");
out("Parent directory\n");
} else {
if (include_fd(ifd)==-1) err("read " INC_HEADER);
close(ifd);
}
out("mode size last-change name
\n");
for (now=time(0),tmp=root; tmp; tmp=tmp->next) {
flaglink= (tmp->mode[0] == 'l');
flagdir = (tmp->mode[0] == 'd');
outb(tmp->mode,4);
memset(x,' ',sizeof x);
if (!flaglink && !flagdir) {
i = fmt_humank(0, tmp->size);
fmt_humank(x+7-i, tmp->size);
}
outb(x,9);
tm = gmtime_r((time_t*)&tmp->time, &tm_);
memset(x,' ',sizeof x);
p = x+1;
outb(months +3*tm->tm_mon, 3);
if (tm->tm_mday<10) p++;
p += fmt_ulong(p, tm->tm_mday) + 1;
if (now - tmp->time >= 330*86400)
p += 1 + fmt_ulong(p+1, 1900+tm->tm_year);
else
p += fmt_hour(p, tm->tm_hour, tm->tm_min);
outb(x,11);
p = (char*)tmp + sizeof(struct d);
out("");
outh(p);
if (flagdir) out("/");
out("");
if (flaglink) print_link(p);
out("\n");
}
ifd = open(INC_TAILER,O_RDONLY);
if (ifd != -1) {
if (include_fd(ifd)==-1) err("read " INC_TAILER);
close(ifd);
} else {
char date[32];
out("\nindex genereted on ");
tm = gmtime_r(&now, &tm_);
outb(months +3*tm->tm_mon,3);
p=date+1;
memset(date,' ',32);
if (tm->tm_mday <10) ++p;
p += 1+fmt_ulong(p, tm->tm_mday);
p += 1+fmt_ulong(p, 1900+tm->tm_year);
p += fmt_hour(p, tm->tm_hour, tm->tm_min);
outb(date,p-date+1);
out("GMT by mkhtmlindex");
out("
\n\n");
}
buffer_flush(&out_buf);
if (close(fd)) err("close\n");
if (fd!=1) {
if (chmod(IDX_TMP,0644)) err("chmod\n");
if (open(IDX_DENY, O_RDONLY)==-1)
if (rename(IDX_TMP, "index.html")) err("rename\n");
}
return(0);
}