1 #ifndef XMLSTAR_H
2 #define XMLSTAR_H
3 
4 #include <config.h>
5 #include <stdlib.h>
6 
7 #if HAVE_SETMODE && HAVE_DECL_O_BINARY
8 # include <io.h>
9 # include <fcntl.h>
10 # define set_stdout_binary() setmode(1, O_BINARY)
11 #else
12 # define set_stdout_binary()
13 #endif
14 
15 #include <libxml/xpath.h>
16 #include <libxml/xpathInternals.h>
17 #include <libxml/xmlreader.h>
18 
19 typedef enum { /* EXIT_SUCCESS = 0, EXIT_FAILURE = 1, */
20     EXIT_BAD_ARGS = EXIT_FAILURE+1, EXIT_BAD_FILE,
21     EXIT_LIB_ERROR, EXIT_INTERNAL_ERROR } exit_status;
22 
23 #define COUNT_OF(array) (sizeof(array)/sizeof(*array))
24 
25 typedef enum { QUIET, VERBOSE } Verbosity;
26 typedef enum { CONTINUE, STOP } ErrorStop;
27 
28 typedef struct _errorInfo {
29     const char *filename; /* file error occured in, if any, else NULL */
30     xmlTextReaderPtr xmlReader;
31     Verbosity verbose;
32     ErrorStop stop;
33 } ErrorInfo;
34 
35 void reportError(void *ptr, xmlErrorPtr error);
36 void suppressErrors(void);
37 
38 typedef struct _gOptions {
39     int quiet;            /* no error output */
40     int doc_namespace;   /* extract namespace bindings from input doc */
41 } gOptions;
42 
43 typedef gOptions *gOptionsPtr;
44 
45 extern gOptions globalOptions;
46 
47 void registerXstarVariable(xmlXPathContextPtr ctxt,
48     const char* name, xmlXPathObjectPtr value);
49 void registerXstarNs(xmlXPathContextPtr ctxt);
50 
51 extern const xmlChar *default_ns;
52 
53 int parseNSArr(xmlChar** ns_arr, int* plen, int argc, char **argv);
54 void cleanupNSArr(xmlChar **ns_arr);
55 extern xmlChar *ns_arr[];
56 
57 #endif  /* XMLSTAR_H */
58