#define ASSERT(x) do { if (!(x)) { fatal("assertion failed line %d file " \
__FILE__,__LINE__); } } while(0)
+/* from version.c */
+
+extern char version[];
+
/* from logmsg.c */
extern uint32_t message_level;
extern bool_t secnet_is_daemon;
extern uint32_t dict_read_number(dict_t *dict, cstring_t key, bool_t required,
cstring_t desc, struct cloc loc,
uint32_t def);
+ /* return value can safely be assigned to int32_t */
extern bool_t dict_read_bool(dict_t *dict, cstring_t key, bool_t required,
cstring_t desc, struct cloc loc, bool_t def);
struct flagstr {
extern char *safe_strdup(const char *string, const char *message);
extern void *safe_malloc(size_t size, const char *message);
+extern void *safe_malloc_ary(size_t size, size_t count, const char *message);
extern int sys_cmd(const char *file, const char *argc, ...);
log_msg_fn *log;
log_vmsg_fn *vlog;
};
-/* (convenience function, defined in util.c) */
+/* (convenience functions, defined in util.c) */
extern void slilog(struct log_if *lf, int class, const char *message, ...)
FORMAT(printf,3,4);
+extern void vslilog(struct log_if *lf, int class, const char *message, va_list)
+FORMAT(printf,3,0);
/* SITE interface */