/* Public domain */ typedef struct html_notebook_tab { const char *name; const char *descr; TAILQ_ENTRY(html_notebook_tab) tabs; } HTML_NotebookTab; typedef struct html_notebook { const char *name; const char *cur_tab; int ntabs; TAILQ_HEAD(,html_notebook_tab) tabs; } HTML_Notebook; __BEGIN_DECLS void HTML_SetDirectory(CGI_Query *, const char *); int HTML_Output(CGI_Query *, const char *); void HTML_OutputError(CGI_Query *, const char *, ...) FORMAT_ATTRIBUTE(__printf__, 2, 3) NONNULL_ATTRIBUTE(2); void HTML_SetError(const char *, ...) FORMAT_ATTRIBUTE(__printf__, 1, 2) NONNULL_ATTRIBUTE(1); void HTML_SetSuccess(const char *, ...) FORMAT_ATTRIBUTE(__printf__, 1, 2) NONNULL_ATTRIBUTE(1); void HTML_SelectBeginS(VAR *, const char *) NONNULL_ATTRIBUTE(2); void HTML_SelectBegin(VAR *, const char *, ...) FORMAT_ATTRIBUTE(__printf__, 2, 3) NONNULL_ATTRIBUTE(2); void HTML_OptionS(VAR *, const char *, const char *, const char *) NONNULL_ATTRIBUTE(2) NONNULL_ATTRIBUTE(3) NONNULL_ATTRIBUTE(4); void HTML_Option(VAR *, const char *, const char *, const char *, ...) FORMAT_ATTRIBUTE(__printf__, 4, 5) NONNULL_ATTRIBUTE(4); void HTML_SelectEnd(VAR *); void HTML_NotebookInit(HTML_Notebook *, CGI_Query *, const char *, const char *); HTML_NotebookTab *HTML_NotebookAdd(HTML_Notebook *, const char *, const char *); void HTML_NotebookOutput(HTML_Notebook *, const char *); void HTML_NotebookFree(HTML_Notebook *); __END_DECLS