Added an info(1) backend, which constructs .info files directly
[sgt/halibut] / halibut.h
index c771459..3e600c7 100644 (file)
--- a/halibut.h
+++ b/halibut.h
@@ -4,6 +4,7 @@
 #include <stdio.h>
 #include <wchar.h>
 #include <time.h>
+#include <string.h>
 
 #ifdef __GNUC__
 #define NORETURN __attribute__((__noreturn__))
@@ -105,7 +106,6 @@ enum {
     para_Description,
     para_Code,
     para_Copyright,
-    para_Preamble,
     para_NoCite,
     para_Title,
     para_VersionID,
@@ -127,6 +127,8 @@ struct word_Tag {
     int breaks;                               /* can a line break after it? */
     wchar_t *text;
     filepos fpos;
+
+    void *private_data;               /* for temp use in backends */
 };
 enum {
     /* ORDERING CONSTRAINT: these normal-word types ... */
@@ -249,10 +251,14 @@ char *dupstr(char *s);
  */
 wchar_t *ustrdup(wchar_t *s);
 char *ustrtoa(wchar_t *s, char *outbuf, int size);
-int ustrlen(wchar_t *s);
+wchar_t *ustrfroma(char *s, wchar_t *outbuf, int size);
+char *utoa_dup(wchar_t *s);
+wchar_t *ufroma_dup(char *s);
+int ustrlen(wchar_t const *s);
 wchar_t *uadv(wchar_t *s);
-wchar_t *ustrcpy(wchar_t *dest, wchar_t *source);
+wchar_t *ustrcpy(wchar_t *dest, wchar_t const *source);
 wchar_t utolower(wchar_t);
+int uisalpha(wchar_t);
 int ustrcmp(wchar_t *lhs, wchar_t *rhs);
 int ustricmp(wchar_t *lhs, wchar_t *rhs);
 int utoi(wchar_t *);
@@ -301,10 +307,10 @@ struct tagRdstringc {
 extern const rdstring empty_rdstring;
 extern const rdstringc empty_rdstringc;
 void rdadd(rdstring *rs, wchar_t c);
-void rdadds(rdstring *rs, wchar_t *p);
+void rdadds(rdstring *rs, wchar_t const *p);
 wchar_t *rdtrim(rdstring *rs);
 void rdaddc(rdstringc *rs, char c);
-void rdaddsc(rdstringc *rs, char *p);
+void rdaddsc(rdstringc *rs, char const *p);
 char *rdtrimc(rdstringc *rs);
 
 int compare_wordlists(word *a, word *b);
@@ -412,20 +418,30 @@ struct userstyle_Tag {
  * bk_text.c
  */
 void text_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *text_config_filename(char *filename);
 
 /*
  * bk_xhtml.c
  */
 void xhtml_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *xhtml_config_filename(char *filename);
 
 /*
  * bk_whlp.c
  */
 void whlp_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *whlp_config_filename(char *filename);
 
 /*
  * bk_man.c
  */
 void man_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *man_config_filename(char *filename);
+
+/*
+ * bk_info.c
+ */
+void info_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *info_config_filename(char *filename);
 
 #endif