diff --git a/zet.dpi.c b/zet.dpi.c index c3bbdcb..9c7fdbf 100644 --- a/zet.dpi.c +++ b/zet.dpi.c @@ -136,6 +136,16 @@ static int write_html(int fd, const char *buf, size_t len) { return 0; } +static int write_zet_link(int fd, const char *id, const char *title) { + if (title == NULL) { + return dprintf(fd, " §%s", id, id); + } + int rc = dprintf(fd, " [", id); + rc |= write_html(fd, title, strlen(title)); + rc |= dprintf(fd, "](§%s)", id); + return rc; +} + static int write_topbar(int fd, enum page page, const char *id, const char *title) { int rc = write_buf(fd, "
"); @@ -163,13 +173,7 @@ static int write_topbar(int fd, enum page page, const char *id, const char *titl rc |= write_buf(fd, ">"); if (page == PAGE_ZET) { - if (title == NULL) { - rc |= dprintf(fd, " §%s", id, id); - } else { - rc |= dprintf(fd, " [", id); - rc |= write_html(fd, title, strlen(title)); - rc |= dprintf(fd, "](§%s)", id); - } + rc |= write_zet_link(fd, id, title); } rc |= write_buf(fd, "
"); @@ -548,9 +552,9 @@ static int dpi_serve_zet_search(int fd, char *qs) { title[sizeof(title)-1] = '\0'; return 0; } - rc = dprintf(fd, "
  • ", id); - rc |= write_html(fd, title, strlen(title)); - rc |= write_buf(fd, "
  • "); + rc = write_buf(fd, "
  • "); + rc |= write_zet_link(fd, id, title); + rc |= write_buf(fd, "
  • "); if (rc < 0) { warnx("dprintf/write_html/write_buf"); close(fd); return 0; } } rc = dprintf(fd, "");