#include <stdio.h>
#include <wchar.h>
#include <time.h>
+#include <string.h>
#ifdef __GNUC__
#define NORETURN __attribute__((__noreturn__))
para_BiblioCited, /* ... into this paragraph type */
para_Bullet,
para_NumberedList,
+ para_DescribedThing,
+ para_Description,
para_Code,
para_Copyright,
- para_Preamble,
para_NoCite,
para_Title,
para_VersionID,
para_Config, /* configuration directive */
+ para_LcontPush, /* begin continuation of list item */
+ para_LcontPop, /* end continuation of list item */
+ para_QuotePush, /* begin block quote */
+ para_QuotePop, /* end block quote */
para_NotParaType /* placeholder value */
};
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 ... */
err_commenteof, /* EOF inside braced comment */
err_kwexprbr, /* expected `}' after cross-ref */
err_missingrbrace, /* unclosed braces at end of para */
+ err_missingrbrace2, /* unclosed braces at end of file */
err_nestedstyles, /* unable to nest text styles */
err_nestedindex, /* unable to nest `\i' thingys */
err_nosuchkw, /* unresolved cross-reference */
err_sectjump, /* jump a heading level, eg \C -> \S */
err_winhelp_ctxclash, /* WinHelp context ID hash clash */
err_multikw, /* keyword clash in sections */
+ err_misplacedlcont, /* \lcont not after a list item */
+ err_sectmarkerinblock, /* section marker appeared in block */
err_whatever /* random error of another type */
};
*/
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 *);
void stk_free(stack);
void stk_push(stack, void *);
void *stk_pop(stack);
+void *stk_top(stack);
typedef struct tagRdstring rdstring;
struct tagRdstring {
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);
*/
numberstate *number_init(void);
void number_cfg(numberstate *, paragraph *);
-word *number_mktext(numberstate *, paragraph *, wchar_t *, int , int *);
+word *number_mktext(numberstate *, paragraph *, wchar_t *, int *, int *);
void number_free(numberstate *);
/*
* 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