~mdw
/
sgt
/
halibut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Info backend now takes care to avoid magic characters in node names
[sgt/halibut]
/
halibut.h
diff --git
a/halibut.h
b/halibut.h
index
6ecf3b3
..
24ad3a5
100644
(file)
--- a/
halibut.h
+++ b/
halibut.h
@@
-4,6
+4,7
@@
#include <stdio.h>
#include <wchar.h>
#include <time.h>
#include <stdio.h>
#include <wchar.h>
#include <time.h>
+#include <string.h>
#ifdef __GNUC__
#define NORETURN __attribute__((__noreturn__))
#ifdef __GNUC__
#define NORETURN __attribute__((__noreturn__))
@@
-126,6
+127,8
@@
struct word_Tag {
int breaks; /* can a line break after it? */
wchar_t *text;
filepos fpos;
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 ... */
};
enum {
/* ORDERING CONSTRAINT: these normal-word types ... */
@@
-215,6
+218,9
@@
enum {
err_multikw, /* keyword clash in sections */
err_misplacedlcont, /* \lcont not after a list item */
err_sectmarkerinblock, /* section marker appeared in block */
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_infoindexcolon, /* colon in index term in info */
+ err_infonodechar, /* colon/comma in node name in info */
err_whatever /* random error of another type */
};
err_whatever /* random error of another type */
};
@@
-251,9
+257,9
@@
char *ustrtoa(wchar_t *s, char *outbuf, int size);
wchar_t *ustrfroma(char *s, wchar_t *outbuf, int size);
char *utoa_dup(wchar_t *s);
wchar_t *ufroma_dup(char *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 *s);
+int ustrlen(wchar_t
const
*s);
wchar_t *uadv(wchar_t *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);
wchar_t utolower(wchar_t);
int uisalpha(wchar_t);
int ustrcmp(wchar_t *lhs, wchar_t *rhs);
@@
-304,10
+310,10
@@
struct tagRdstringc {
extern const rdstring empty_rdstring;
extern const rdstringc empty_rdstringc;
void rdadd(rdstring *rs, wchar_t c);
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);
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);
char *rdtrimc(rdstringc *rs);
int compare_wordlists(word *a, word *b);
@@
-369,7
+375,9
@@
struct indexdata_Tag {
struct indextag_Tag {
wchar_t *name;
word *implicit_text;
struct indextag_Tag {
wchar_t *name;
word *implicit_text;
+ filepos implicit_fpos;
word **explicit_texts;
word **explicit_texts;
+ filepos *explicit_fpos;
int nexplicit, explicit_size;
int nrefs;
indexentry **refs; /* array of entries referenced by tag */
int nexplicit, explicit_size;
int nrefs;
indexentry **refs; /* array of entries referenced by tag */
@@
-381,13
+389,14
@@
struct indextag_Tag {
struct indexentry_Tag {
word *text;
void *backend_data; /* private to back end */
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 */
};
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);
void build_index(indexdata *);
void index_debug(indexdata *);
indextag *index_findtag(indexdata *idx, wchar_t *name);
@@
-435,4
+444,10
@@
paragraph *whlp_config_filename(char *filename);
void man_backend(paragraph *, keywordlist *, indexdata *);
paragraph *man_config_filename(char *filename);
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
#endif