summaryrefslogtreecommitdiff
path: root/halibut.h
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2004-04-10 08:59:19 +0000
committerSimon Tatham <anakin@pobox.com>2004-04-10 08:59:19 +0000
commitcb859ab83ed22a1b0dc9fd017cb0d68e0037d750 (patch)
tree1218ea2baf44c3ec3b312c3a6b2606e78fcce06c /halibut.h
parent221e2fcc83aa527bf515d40a754d69dc5793bb4f (diff)
downloadhalibut-cb859ab83ed22a1b0dc9fd017cb0d68e0037d750.zip
halibut-cb859ab83ed22a1b0dc9fd017cb0d68e0037d750.tar.gz
halibut-cb859ab83ed22a1b0dc9fd017cb0d68e0037d750.tar.bz2
halibut-cb859ab83ed22a1b0dc9fd017cb0d68e0037d750.tar.xz
Info backend now takes care to avoid magic characters in node names
and index terms (the Info format doesn't like them). In the course of this I've had to introduce some infrastructure for carrying a filepos forward from the definition of every RHS index term so that a particular backend can provide a usefully localised report of which index term had a problem. [originally from svn r4051]
Diffstat (limited to 'halibut.h')
-rw-r--r--halibut.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/halibut.h b/halibut.h
index 66bb333..24ad3a5 100644
--- a/halibut.h
+++ b/halibut.h
@@ -219,6 +219,8 @@ enum {
err_misplacedlcont, /* \lcont not after a list item */
err_sectmarkerinblock, /* section marker appeared in block */
err_infodirentry, /* \cfg{info-dir-entry} missing param */
+ err_infoindexcolon, /* colon in index term in info */
+ err_infonodechar, /* colon/comma in node name in info */
err_whatever /* random error of another type */
};
@@ -373,7 +375,9 @@ struct indexdata_Tag {
struct indextag_Tag {
wchar_t *name;
word *implicit_text;
+ filepos implicit_fpos;
word **explicit_texts;
+ filepos *explicit_fpos;
int nexplicit, explicit_size;
int nrefs;
indexentry **refs; /* array of entries referenced by tag */
@@ -385,13 +389,14 @@ struct indextag_Tag {
struct indexentry_Tag {
word *text;
void *backend_data; /* private to back end */
+ filepos fpos;
};
indexdata *make_index(void);
void cleanup_index(indexdata *);
/* index_merge takes responsibility for freeing arg 3 iff implicit; never
* takes responsibility for arg 2 */
-void index_merge(indexdata *, int is_explicit, wchar_t *, word *);
+void index_merge(indexdata *, int is_explicit, wchar_t *, word *, filepos *);
void build_index(indexdata *);
void index_debug(indexdata *);
indextag *index_findtag(indexdata *idx, wchar_t *name);