105 #ifndef UTIL_TYPES_H_READ
106 #define UTIL_TYPES_H_READ 1
115 typedef uint8_t byte;
125 #ifndef PGP_TYPES_H_READ
126 #define PGP_TYPES_H_READ 1
128 #include <sys/select.h>
136 #if XOXA_PRIVATE_INTERFACE
149 #define CHANNEL_FOR_WRITING_P(ch) ((ch)->nwritten >= 0)
152 #define CHANNEL_GET_FD(ch) (CHANNEL_FOR_WRITING_P(ch) ? (ch)->fd[1] : (ch)->fd[0])
155 #define CHANNEL_GET_CHILD_FD(ch) (CHANNEL_FOR_WRITING_P(ch) ? (ch)->fd[0] : (ch)->fd[1])
157 typedef struct process_manager_s {
203 #define XML_EXPAT_H 1
266 #define XOXA_REPORT_ALL 1<<0
268 #define XOXA_QUIET 1<<1
269 #define XOXA_FEEDBACK 2<<1
270 #define XOXA_CHATTER 3<<1
271 #if XOXA_PRIVATE_INTERFACE
272 #define SHOWING_MESSAGES(PS_P) ((PS_P)->flags.verbosity > 0)
273 #define SHOWING_CHATTER(PS_P) ((PS_P)->flags.verbosity > 1)
276 #define INPUT_SOURCE_STRING 0
277 #define INPUT_SOURCE_FILE 1
280 const char* basename;
287 struct callback_frame_s {
290 unsigned int startdepth;
293 struct callback_frame_s* down;
295 typedef struct callback_frame_s callback_frame_t;
296 #define VALID_CALLBACK_FRAME(FRAME) ((FRAME)->f != NULL)
307 callback_frame_t* callback;
310 unsigned int element_depth;
313 char text_skipping_whitespace;
315 unsigned int report_all : 1;
316 unsigned int verbosity : 2;
317 #define XOXA_DIGEST_TYPE_NONE 0
318 #define XOXA_DIGEST_TYPE_MD 1
319 #define XOXA_DIGEST_TYPE_PGP 2
321 unsigned int digest_type : 2;
332 const char* signature_armor;
333 const char* signature_xpath;
334 const char* signature_algorithm;
336 void* signature_callback_data;
337 jmp_buf* error_jmp_buf;
345 XML_StartElementHandler extra_StartElementHandler;
346 XML_EndElementHandler extra_EndElementHandler;
347 XML_CharacterDataHandler extra_CharacterDataHandler;
348 XML_ProcessingInstructionHandler extra_ProcessingInstructionHandler;
349 XML_StartCdataSectionHandler extra_StartCdataSectionHandler;
350 XML_EndCdataSectionHandler extra_EndCdataSectionHandler;
351 XML_StartNamespaceDeclHandler extra_StartNamespaceDeclHandler;
352 XML_EndNamespaceDeclHandler extra_EndNamespaceDeclHandler;
353 XML_XmlDeclHandler extra_XmlDeclHandler;
354 XML_SkippedEntityHandler extra_SkippedEntityHandler;
355 void* extra_UserData;
358 #if XOXA_PRIVATE_INTERFACE
359 ParserState* xoxa_make_new_parserstate_(InputSource* src,
366 #define PARSERSTATE_OK_TEST_(P) \
368 && (P)->parser != NULL \
370 && (P)->text != NULL)
371 #define OK_PARSERSTATE(P) do { \
372 assert(PARSERSTATE_OK_TEST_(P)); \
376 #define MALLOC(var, Type) if ((var = (Type*)malloc(sizeof(Type))) == NULL) { \
377 fatal("Can't allocate space for " # Type); \
405 #define READ_UTIL_H 1
411 const char* xoxa_version_string(
void);
413 #ifdef XOXA_PRIVATE_INTERFACE
417 void fatal(
const char* fmt, ...);
418 void warning(
const char* fmt, ...);
419 void xoxa_set_error_message_(
ParserState*,
int abandon_parse_p,
const char* fmt, ...);
423 int isxmlspace(
const byte* p);
425 byte* copystring(
const byte* s);
428 Buf* bufinit_with(
const byte*);
429 Buf* bufprintf(Buf* B,
const char* fmt, ...);
430 Buf* bufchar(Buf* B, byte c);
431 Buf* bufstrcpy(Buf* dst,
const byte* src);
432 Buf* bufstrncpy(Buf* dst,
const byte* src,
const size_t len);
433 Buf* bufcrop(Buf* B);
434 byte* bufstring(Buf* B);
435 byte* bufstring_copy(Buf* B);
436 void bufreset(Buf* B);
437 size_t buflength(Buf*);
440 int bufstrcmp(
const byte* b1,
const byte* b2);
446 #ifndef READ_DIGEST_H
447 #define READ_DIGEST_H 1
486 const char* digest_name);
507 const char* digest_name);
526 #define PGP_H_LOADED 1
535 #if XOXA_PRIVATE_INTERFACE
537 #define CHANNEL_WRITE 1
538 #define CHANNEL_READ 0
539 Channel* new_channel(
char writing_p);
540 void channel_free(Channel*);
541 int channel_add_buffer(Channel* ch, Buf* b);
542 void subprocess_free(ProcessManager* pm);
543 int subprocess_send(ProcessManager* pm,
const char* buf,
size_t buflen);
544 ProcessManager* new_subprocess(
char** cmd, ...);
545 ProcessManager* pgp_verify_detached(Channel* signature, Channel* status_info);
556 #define PGP_ALGORITHM_NAME "pgp"