diff --git a/zet.dpi.c b/zet.dpi.c index c63e94c..af16b35 100644 --- a/zet.dpi.c +++ b/zet.dpi.c @@ -234,6 +234,20 @@ static int dpi_respond_err(int fd, const char *fmt, ...) { return rc; } +static int html_error(int fd, const char *fmt, ...) { + int rc; + va_list ap; + int err = errno; + va_start(ap, fmt); + rc = write_buf(fd, "\nError:\n"); + rc |= vdprintf(fd, fmt, ap); + if (err != 0) rc |= dprintf(fd, ": %s", strerror(err)); + if (rc < 0) warn("dprintf"); + va_end(ap); + if (close(fd) < 0) warn("close"); + return 0; +} + static char *zet_get_title_fd(int fd, char *buf, size_t len) { if (fd < 0) return NULL; int rc = read_some(fd, (unsigned char *)buf, &len); @@ -383,8 +397,6 @@ static int zet_search_close(struct zet_search *sz) { static int dpi_serve_zet_all(int fd) { int rc; struct zet_search zs; - rc = zet_search_start(&zs, NULL, NULL); - if (rc < 0) return dpi_respond_err(fd, "Unable to list"); rc = dpi_send_header(fd, "text/html"); if (rc < 0) { warn("dpi_send_header"); close(fd); return 0; } rc = dprintf(fd, @@ -394,19 +406,15 @@ static int dpi_serve_zet_all(int fd) { "" ""); rc |= write_topbar(fd, PAGE_ALL, NULL, NULL); - rc |= write_buf(fd, "