#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;
typedef struct word_Tag word;
typedef struct keywordlist_Tag keywordlist;
typedef struct keyword_Tag keyword;
-typedef struct userstyle_Tag userstyle;
typedef struct numberstate_Tag numberstate;
typedef struct indexdata_Tag indexdata;
typedef struct indextag_Tag indextag;
attr_First = 0x0001, /* the first of a series */
attr_Last = 0x0002, /* the last of a series */
attr_Always = 0x0003, /* any other part of a series */
- attr_mask = 0x0003,
+ attr_mask = 0x0003
};
/* aux values for quote-type words */
enum {
quote_Open = 0x0010,
quote_Close = 0x0020,
- quote_mask = 0x0030,
+ quote_mask = 0x0030
};
+#define isvis(x) ( ( (x) >= word_Normal && (x) <= word_LowerXref ) )
#define isattr(x) ( ( (x) > word_Normal && (x) < word_WhiteSpace ) || \
( (x) > word_WhiteSpace && (x) < word_internal_endattrs ) )
#define sameattr(x,y) ( (((x)-(y)) & 3) == 0 )
err_nomemory, /* out of memory */
err_optnoarg, /* option `-%s' requires an argument */
err_nosuchopt, /* unrecognised option `-%s' */
+ err_cmdcharset, /* unrecognised charset %s (cmdline) */
+ err_futileopt, /* futile option `-%s'%s */
err_noinput, /* no input files */
err_cantopen, /* unable to open input file `%s' */
err_nodata, /* no data in input files */
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) */
err_multikw, /* keyword clash in sections */
err_misplacedlcont, /* \lcont not after a list item */
err_sectmarkerinblock, /* section marker appeared in block */
- err_infodirentry, /* \cfg{info-dir-entry} missing param */
+ err_cfginsufarg, /* \cfg{%s} insufficient args (<%d) */
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_nofont, /* unrecognised font name */
+ err_afmeof, /* eof in AFM file */
+ err_afmkey, /* missing expected keyword in AFM */
+ err_afmvers, /* unsupported AFM version */
+ err_afmval, /* missing value(s) for AFM key */
+ err_pfeof, /* eof in Type 1 font file */
+ err_pfhead, /* bad Type 1 header line */
+ err_pfbad, /* otherwise invalide Type 1 font */
+ err_pfnoafm, /* Type 1 font but no AFM */
+ err_chmnames, /* need both or neither of hhp+chm */
+ err_sfntnotable, /* required sfnt table missing */
+ err_sfntnopsname, /* sfnt has no PostScript name */
+ err_sfntbadtable, /* sfnt table not valid */
+ err_sfntnounicmap, /* sfnt has no UCS-2 cmap */
+ err_sfnttablevers, /* sfnt table version unknown */
+ err_sfntbadhdr, /* sfnt has bad header */
err_whatever /* random error of another type */
};
void free_word_list(word *w);
void free_para_list(paragraph *p);
word *dup_word_list(word *w);
-char *dupstr(char *s);
+char *dupstr(char const *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)) )
/*
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
void help(void);
void usage(void);
void showversion(void);
+void listcharsets(void);
/*
* licence.c
/*
* version.c
*/
-const char *const version;
+extern const char *const version;
/*
* misc.c
wchar_t *rdtrim(rdstring *rs);
void rdaddc(rdstringc *rs, char c);
void rdaddsc(rdstringc *rs, char const *p);
+void rdaddsn(rdstringc *rc, char const *p, int len);
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 {
paragraph *read_input(input *in, indexdata *idx);
/*
+ * in_afm.c
+ */
+void read_afm_file(input *in);
+
+/*
+ * in_pf.c
+ */
+void read_pfa_file(input *in);
+void read_pfb_file(input *in);
+
+/*
+ * in_sfnt.c
+ */
+void read_sfnt_file(input *in);
+
+/*
* keywords.c
*/
struct keywordlist_Tag {
void gen_citations(paragraph *, keywordlist *);
/*
- * style.c
- */
-struct userstyle_Tag {
-};
-
-/*
* bk_text.c
*/
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
* bk_paper.c
*/
void *paper_pre_backend(paragraph *, keywordlist *, indexdata *);
+void listfonts(void);
/*
* bk_ps.c