X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=babel%2Fmagscrolls.c;fp=babel%2Fmagscrolls.c;h=c21c9224c1682b5fc71aa85380744e61a1ee4c3e;hb=6fd0347f330cb24ef6145662023053a1c0f81a64;hp=0000000000000000000000000000000000000000;hpb=7d14a66ee234db0898de6fabb8f850ebc4bb733a;p=projects%2Fchimara%2Fchimara.git diff --git a/babel/magscrolls.c b/babel/magscrolls.c new file mode 100644 index 0000000..c21c922 --- /dev/null +++ b/babel/magscrolls.c @@ -0,0 +1,124 @@ +/* magscrolls.c Treaty of Babel module for Z-code files + * 2006 By L. Ross Raszewski + * + * This file depends on treaty_builder.h + * + * This file is public domain, but note that any changes to this file + * may render it noncompliant with the Treaty of Babel + */ + +#define FORMAT magscrolls +#define HOME_PAGE "http://www.if-legends.org/~msmemorial/memorial.htm" +#define FORMAT_EXT ".mag" +#define NO_COVER +#define NO_METADATA + +#include "treaty_builder.h" +#include +#include + +struct maginfo +{ + int gv; + char header[21]; + char *title; + int bafn; + int year; + char *ifid; + char *author; + char *meta; +}; + + +static struct maginfo manifest[] = { + { 0, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", + "The Pawn", + 0, + 1985, + "MAGNETIC-1", + "Rob Steggles", + }, + { 1, "\000\004\000\001\007\370\000\000\340\000\000\000\041\064\000\000\040\160\000\000", + "Guild of Thieves", + 0, + 1987, + "MAGNETIC-2", + "Rob Steggles", + }, + { 2, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", + "Jinxter", + 0, + 1987, + "MAGNETIC-3", + "Georgina Sinclair and Michael Bywater", + }, + { 4, "\000\004\000\001\045\140\000\001\000\000\000\000\161\017\000\000\035\210\000\001", + "Corruption", + 0, + 1988, + "MAGNETIC-4", + "Rob Steggles and Hugh Steers", + }, + { 4, "\000\004\000\001\044\304\000\001\000\000\000\000\134\137\000\000\040\230\000\001", + "Fish!", + 0, + 1988, + "MAGNETIC-5", + "John Molloy, Pete Kemp, Phil South, Rob Steggles", + }, + { 4, "\000\003\000\000\377\000\000\000\340\000\000\000\221\000\000\000\036\000\000\001", + "Corruption", + 0, + 1988, + "MAGNETIC-4", + "Rob Steggles and Hugh Steers", + }, + { 4, "\000\003\000\001\000\000\000\000\340\000\000\000\175\000\000\000\037\000\000\001", + "Fish!", + 0, + 1988, + "MAGNETIC-5", + "John Molloy, Pete Kemp, Phil South, Rob Steggles", + }, + { 4, "\000\003\000\000\335\000\000\000\140\000\000\000\064\000\000\000\023\000\000\000", + "Myth", + 0, + 1989, + "MAGNETIC-6", + "Paul Findley", + }, + { 4, "\000\004\000\001\122\074\000\001\000\000\000\000\114\146\000\000\057\240\000\001", + "Wonderland", + 0, + 1990, + "MAGNETIC-7", + "David Bishop", + }, + { 0, "0", NULL, 0, 0, NULL, NULL } + }; + +static int32 get_story_file_IFID(void *story_file, int32 extent, char *output, int32 output_extent) +{ + int i; + unsigned char *sf=(unsigned char *)story_file; + if (extent < 42) return INVALID_STORY_FILE_RV; + + for(i=0;manifest[i].title;i++) + if ((sf[13]<3 && manifest[i].gv==sf[13]) || memcmp(manifest[i].header,sf+12,20)==0) + { + ASSERT_OUTPUT_SIZE(((int32) strlen(manifest[i].ifid)+1)); + strcpy(output,manifest[i].ifid); + return 1; + } + strcpy(output,"MAGNETIC-"); + return INCOMPLETE_REPLY_RV; +} + +static int32 claim_story_file(void *story_file, int32 extent) +{ + if (extent<42 || + memcmp(story_file,"MaSc",4) + ) return INVALID_STORY_FILE_RV; + return VALID_STORY_FILE_RV; +} +