--- /dev/null
+/* treaty.h Header file for Treaty of Babel compliant format modules\r
+ * By L. Ross Raszewski\r
+ * Version 3b\r
+ *\r
+ * This file is public domain, but please note that derived versions\r
+ * may not not be compliant with the Treaty of Babel.\r
+ *\r
+ * It would be wise for derived works to change the value of\r
+ * TREATY_COMPLIANCE to reflect deviations\r
+ */\r
+\r
+#ifndef TREATY_H\r
+\r
+#define TREATY_H\r
+\r
+#define TREATY_COMPLIANCE "Treaty of Babel revision 7"\r
+#define TREATY_VERSION "r7"\r
+\r
+/* return codes */\r
+#define NO_REPLY_RV 0\r
+#define INVALID_STORY_FILE_RV -1\r
+#define UNAVAILABLE_RV -2\r
+#define INVALID_USAGE_RV -3\r
+#define INCOMPLETE_REPLY_RV -4\r
+#define VALID_STORY_FILE_RV 1\r
+\r
+#define PNG_COVER_FORMAT 1\r
+#define JPEG_COVER_FORMAT 2\r
+\r
+/* Treaty bitmasks. These are not required by the treaty, but are here\r
+ as a convenience.\r
+*/\r
+#define TREATY_SELECTOR_INPUT 0x100\r
+#define TREATY_SELECTOR_OUTPUT 0x200\r
+#define TREATY_SELECTOR_NUMBER 0xFF\r
+\r
+#define TREATY_CONTAINER_SELECTOR 0x400\r
+\r
+/* Treaty selectors */\r
+#define GET_HOME_PAGE_SEL 0x201\r
+#define GET_FORMAT_NAME_SEL 0x202\r
+#define GET_FILE_EXTENSIONS_SEL 0x203\r
+#define CLAIM_STORY_FILE_SEL 0x104\r
+#define GET_STORY_FILE_METADATA_EXTENT_SEL 0x105\r
+#define GET_STORY_FILE_COVER_EXTENT_SEL 0x106\r
+#define GET_STORY_FILE_COVER_FORMAT_SEL 0x107\r
+#define GET_STORY_FILE_IFID_SEL 0x308\r
+#define GET_STORY_FILE_METADATA_SEL 0x309\r
+#define GET_STORY_FILE_COVER_SEL 0x30A\r
+#define GET_STORY_FILE_EXTENSION_SEL 0x30B\r
+\r
+/* Container selectors */\r
+#define CONTAINER_GET_STORY_FORMAT_SEL 0x710\r
+#define CONTAINER_GET_STORY_EXTENT_SEL 0x511\r
+#define CONTAINER_GET_STORY_FILE_SEL 0x711\r
+\r
+\r
+\r
+\r
+/* Other magic size limits */\r
+#define TREATY_MINIMUM_EXTENT 512\r
+\r
+\r
+#include <limits.h>\r
+\r
+/* 32-bit integer types */\r
+#ifndef VAX\r
+#if SCHAR_MAX >= 0x7FFFFFFFL && SCHAR_MIN <= -0x7FFFFFFFL\r
+ typedef signed char int32;\r
+#elif SHRT_MAX >= 0x7FFFFFFFL && SHRT_MIN <= -0x7FFFFFFFL\r
+ typedef signed short int int32;\r
+#elif INT_MAX >= 0x7FFFFFFFL && INT_MIN <= -0x7FFFFFFFL\r
+ typedef signed int int32;\r
+#elif LONG_MAX >= 0x7FFFFFFFL && LONG_MIN <= -0x7FFFFFFFL\r
+ typedef signed long int int32;\r
+#else\r
+#error No type large enough to support 32-bit integers.\r
+#endif\r
+#else\r
+ /* VAX C does not provide these limit constants, contrary to ANSI */\r
+ typedef int int32;\r
+#endif\r
+\r
+\r
+\r
+/* Pointer to treaty function. Treaty functions must follow this prototype */\r
+\r
+typedef int32 (*TREATY)(int32 selector, void *, int32, void *, int32);\r
+\r
+#endif\r
+\r