X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/e4ea58f8cb4dccaa8e99306a3497de1e37600480..6f0bdcdebc3e74ad0e8694d4f7d0888f7eb7a404:/halibut.h diff --git a/halibut.h b/halibut.h index 94493d4..f76d059 100644 --- a/halibut.h +++ b/halibut.h @@ -27,12 +27,6 @@ #include "tree234.h" /* - * FIXME: Charset temporary workarounds - */ -#define CS_FIXME CS_ISO8859_1 -#define CS_LOCAL CS_ISO8859_1 - -/* * Structure tags */ typedef struct input_Tag input; @@ -227,10 +221,12 @@ enum { err_explbr, /* expected `{' after command */ err_commenteof, /* EOF inside braced comment */ err_kwexprbr, /* expected `}' after cross-ref */ + err_codequote, /* \q within \c is not supported */ 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_indexcase, /* two \i differing only in case */ err_nosuchkw, /* unresolved cross-reference */ err_multiBR, /* multiple \BRs on same keyword */ err_nosuchidxtag, /* \IM on unknown index tag (warning) */ @@ -243,6 +239,9 @@ enum { err_sectmarkerinblock, /* section marker appeared in block */ err_infodirentry, /* \cfg{info-dir-entry} missing param */ err_infonodechar, /* colon/comma in node name in info */ + err_text_codeline, /* \c line too long in text backend */ + err_htmlver, /* unrecognised HTML version keyword */ + err_charset, /* unrecognised character set name */ err_whatever /* random error of another type */ }; @@ -266,9 +265,10 @@ void free_para_list(paragraph *p); word *dup_word_list(word *w); char *dupstr(char *s); -#define mknew(type) ( (type *) smalloc (sizeof (type)) ) -#define mknewa(type, number) ( (type *) smalloc ((number) * sizeof (type)) ) -#define resize(array, len) ( srealloc ((array), (len) * sizeof (*(array))) ) +#define snew(type) ( (type *) smalloc (sizeof (type)) ) +#define snewn(number, type) ( (type *) smalloc ((number) * sizeof (type)) ) +#define sresize(array, number, type) \ + ( (type *) srealloc ((array), (number) * sizeof (type)) ) #define lenof(array) ( sizeof(array) / sizeof(*(array)) ) /* @@ -282,18 +282,31 @@ char *utoa_dup(wchar_t const *s, int charset); char *utoa_dup_len(wchar_t const *s, int charset, int *len); char *utoa_careful_dup(wchar_t const *s, int charset); wchar_t *ufroma_dup(char const *s, int charset); +char *utoa_locale_dup(wchar_t const *s); +wchar_t *ufroma_locale_dup(char const *s); int ustrlen(wchar_t const *s); wchar_t *uadv(wchar_t *s); wchar_t *ustrcpy(wchar_t *dest, wchar_t const *source); +wchar_t *ustrncpy(wchar_t *dest, wchar_t const *source, int n); 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 *); -int utob(wchar_t *); +int ustricmp(wchar_t const *lhs, wchar_t const *rhs); +int ustrnicmp(wchar_t const *lhs, wchar_t const *rhs, int maxlen); +int utoi(wchar_t const *); +double utof(wchar_t const *); +int utob(wchar_t const *); int uisdigit(wchar_t); wchar_t *ustrlow(wchar_t *s); -wchar_t *ustrftime(wchar_t *fmt, struct tm *timespec); +wchar_t *ustrftime(const wchar_t *wfmt, const struct tm *timespec); +int cvt_ok(int charset, const wchar_t *s); +int charset_from_ustr(filepos *fpos, const wchar_t *name); + +/* + * wcwidth.c + */ +int strwid(char const *s, int charset); +int ustrwid(wchar_t const *s, int charset); /* * help.c @@ -345,7 +358,7 @@ char *rdtrimc(rdstringc *rs); int compare_wordlists(word *a, word *b); -void mark_attr_ends(paragraph *sourceform); +void mark_attr_ends(word *words); typedef struct tagWrappedLine wrappedline; struct tagWrappedLine { @@ -457,10 +470,10 @@ void text_backend(paragraph *, keywordlist *, indexdata *, void *); paragraph *text_config_filename(char *filename); /* - * bk_xhtml.c + * bk_html.c */ -void xhtml_backend(paragraph *, keywordlist *, indexdata *, void *); -paragraph *xhtml_config_filename(char *filename); +void html_backend(paragraph *, keywordlist *, indexdata *, void *); +paragraph *html_config_filename(char *filename); /* * bk_whlp.c