#include <lib/config.h>
+/* Ugly structure handling macros */
+
+#define OFFSETOF(s, i) ((unsigned int)&((s *)0)->i)
+#define SKIP_BACK(s, i, p) ((s *)((char *)p - OFFSETOF(s, i)))
+#define ALIGN(s, a) (((s)+a-1)&~(a-1))
+
/* Temporary Files */
#define TMP_DIR "tmp"
void open_temp(struct tempfile *, byte *);
void delete_temp(struct tempfile *);
-ulg temprand(uns);
+u32 temprand(uns);
#define TF_GENERIC "t"
#define TF_QUEUE_CONTROL "c"
void initlog(byte *);
void open_log_file(byte *);
+#ifdef DEBUG
+#define ASSERT(x) do { if (!(x)) die("Assertion `%s' failed at %s:%d", #x, __FILE__, __LINE__); } while(0)
+#else
+#define ASSERT(x) do { } while(0)
+#endif
+
/* Allocation */
void *xmalloc(uns);
/* Binary log */
-int log2(ulg);
+int log2(u32);
/* obj.c */
#define OID_MIN 0x10000 /* Values less than this have special meaning */
-ulg new_oid(uns);
-void mk_obj_name(byte *, ulg, byte *);
-int dump_obj_to_file(byte *, ulg, struct odes *, int);
+oid_t new_oid(uns);
+void mk_obj_name(byte *, oid_t, byte *);
+int dump_obj_to_file(byte *, oid_t, struct odes *, int);
/* wordsplit.c */
/* objwalk.c */
-void scan_obj_tree(byte *, void (*)(ulg, byte *));
+void scan_obj_tree(byte *, void (*)(oid_t, byte *));
/* random.c */
uns random_max(uns);
+/* mmap.c */
+
+void *mmap_file(byte *name, unsigned *len);
+
#endif