X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/961ee75b995cd4a9b9ce31aab6e10ad61d8131dc..8f664e7e91c918cd13248f6b684580c4dd2cdb31:/halibut.h diff --git a/halibut.h b/halibut.h index 26c82f6..11b8ac2 100644 --- a/halibut.h +++ b/halibut.h @@ -62,6 +62,7 @@ struct input_Tag { int nfiles; /* how many in the list */ FILE *currfp; /* the currently open one */ int currindex; /* which one is that in the list */ + int wantclose; /* does the current file want closing */ pushback *pushback; /* pushed-back input characters */ int npushback, pushbacksize; filepos pos; @@ -177,14 +178,15 @@ enum { 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 ) @@ -243,6 +245,23 @@ enum { 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_sfntbadglyph, /* sfnt cmap references bad glyph */ err_whatever /* random error of another type */ }; @@ -264,7 +283,7 @@ void sfree(void *p); 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 snew(type) ( (type *) smalloc (sizeof (type)) ) #define snewn(number, type) ( (type *) smalloc ((number) * sizeof (type)) ) @@ -356,6 +375,7 @@ void rdadds(rdstring *rs, wchar_t const *p); 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); @@ -381,6 +401,22 @@ paragraph *cmdline_cfg_simple(char *string, ...); 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 { @@ -493,6 +529,7 @@ paragraph *info_config_filename(char *filename); * bk_paper.c */ void *paper_pre_backend(paragraph *, keywordlist *, indexdata *); +void listfonts(void); /* * bk_ps.c