X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=interpreters%2Fgit.patch;fp=interpreters%2Fgit.patch;h=eb87fc567fe0d86132b1c8a804b0da81f3325750;hb=7637a8d2987f253973b1f1e0eac52e49490254db;hp=0000000000000000000000000000000000000000;hpb=53af2af2a35b5a560d0e5c6a18b3d26e8748729b;p=rodin%2Fchimara.git diff --git a/interpreters/git.patch b/interpreters/git.patch new file mode 100644 index 0000000..eb87fc5 --- /dev/null +++ b/interpreters/git.patch @@ -0,0 +1,193 @@ +diff -P'aurx.*' git-1.2.4/gestalt.c git-chimara/gestalt.c +--- git-1.2.4/gestalt.c 2009-04-03 00:54:50.000000000 +0200 ++++ git-chimara/gestalt.c 2009-10-07 23:43:28.000000000 +0200 +@@ -5,7 +5,7 @@ + switch (sel) + { + case GESTALT_SPEC_VERSION: +- return 0x00030100; ++ return 0x00030101; + + case GESTALT_TERP_VERSION: + return GIT_VERSION_NUM; +Only in git-1.2.4: git_mac.c +diff -P'aurx.*' git-1.2.4/git_unix.c git-chimara/git_unix.c +--- git-1.2.4/git_unix.c 2009-04-03 00:54:50.000000000 +0200 ++++ git-chimara/git_unix.c 2009-10-07 23:59:58.000000000 +0200 +@@ -25,23 +25,47 @@ + #define CACHE_SIZE (256 * 1024L) + #define UNDO_SIZE (512 * 1024L) + ++int gHasInited = 0; ++ ++#ifdef CHIMARA_EXTENSIONS ++ ++void fatalError (const char * s) ++{ ++ winid_t win; ++ if (!gHasInited) ++ { ++ win = glk_window_open(0, 0, 0, wintype_TextBuffer, 0); ++ glk_set_window(win); ++ } ++ /* pray that this goes somewhere reasonable... */ ++ glk_put_string("\n*** fatal error: "); ++ glk_put_string((char*)s); ++ glk_put_string(" ***\n"); ++ glk_exit(); ++} ++ ++#else ++ + void fatalError (const char * s) + { + fprintf (stderr, "*** fatal error: %s ***\n", s); + exit (1); + } + ++#endif /* CHIMARA_EXTENSIONS */ ++ + #ifdef USE_MMAP + // Fast loader that uses some fancy Unix features. + + const char * gFilename = 0; ++char * gStartupError = 0; + + int glkunix_startup_code(glkunix_startup_t *data) + { + if (data->argc <= 1) + { +- printf ("usage: git gamefile.ulx\n"); +- return 0; ++ gStartupError = "No file given"; ++ return 1; + } + gFilename = data->argv[1]; + return 1; +@@ -52,7 +76,10 @@ + int file; + struct stat info; + const char * ptr; +- ++ ++ if (gStartupError) ++ fatalError(gStartupError); ++ + file = open (gFilename, O_RDONLY); + if (file < 0) + goto error; +@@ -61,35 +88,35 @@ + goto error; + + if (info.st_size < 256) +- { +- fprintf (stderr, "This is too small to be a glulx file.\n"); +- exit (1); +- } ++ fatalError("This is too small to be a glulx file."); + + ptr = mmap (NULL, info.st_size, PROT_READ, MAP_PRIVATE, file, 0); + if (ptr == MAP_FAILED) + goto error; ++ ++ gHasInited = 1; + + git (ptr, info.st_size, CACHE_SIZE, UNDO_SIZE); + munmap ((void*) ptr, info.st_size); + return; + + error: +- perror ("git"); +- exit (errno); ++ sprintf(errmsg, "git: %s", strerror(errno)); ++ fatalError(errmsg); + } + + #else + // Generic loader that should work anywhere. + + strid_t gStream = 0; ++char * gStartupError = 0; + + int glkunix_startup_code(glkunix_startup_t *data) + { + if (data->argc <= 1) + { +- printf ("usage: git gamefile.ulx\n"); +- return 0; ++ gStartupError = "No file given"; ++ return 1; + } + gStream = glkunix_stream_open_pathname ((char*) data->argv[1], 0, 0); + return 1; +@@ -97,9 +124,14 @@ + + void glk_main () + { ++ if (gStartupError) ++ fatalError(gStartupError); ++ + if (gStream == NULL) + fatalError ("could not open game file"); + ++ gHasInited = 1; ++ + gitWithStream (gStream, CACHE_SIZE, UNDO_SIZE); + } + +Only in git-1.2.4: git_windows.c +Only in git-1.2.4: Makefile +diff -P'aurx.*' git-1.2.4/Makefile.am git-chimara/Makefile.am +--- git-1.2.4/Makefile.am 1970-01-01 01:00:00.000000000 +0100 ++++ git-chimara/Makefile.am 2009-10-07 23:59:34.000000000 +0200 +@@ -0,0 +1,48 @@ ++PLUGIN_LIBTOOL_FLAGS=-module -avoid-version -export-symbols-regex "^glk" ++ ++# Automatically generate version.h ++MAJOR = 1 ++MINOR = 2 ++PATCH = 4 ++version.h: Makefile ++ echo "// Automatically generated file -- do not edit!" > version.h ++ echo "#define GIT_MAJOR" $(MAJOR) >> version.h ++ echo "#define GIT_MINOR" $(MINOR) >> version.h ++ echo "#define GIT_PATCH" $(PATCH) >> version.h ++ ++pkglib_LTLIBRARIES = git.la ++BUILT_SOURCES = version.h ++git_la_SOURCES = version.h git.h config.h compiler.h memory.h opcodes.h \ ++ labels.inc compiler.c gestalt.c git.c git_unix.c glkop.c heap.c memory.c \ ++ opcodes.c operands.c peephole.c savefile.c saveundo.c search.c terp.c \ ++ accel.c ++git_la_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/libchimara ++git_la_CFLAGS = -DCHIMARA_EXTENSIONS -DUSE_INLINE $(AM_CFLAGS) ++git_la_LDFLAGS = $(PLUGIN_LIBTOOL_FLAGS) ++ ++gitdocdir = $(datadir)/doc/$(PACKAGE)/git ++dist_gitdoc_DATA = README.txt ++ ++CLEANFILES = test/*.tmp ++ ++#TESTS = test/test.sh \ ++# test/Alabaster.gblorb test/Alabaster.walk test/Alabaster.golden ++# ++#test: git ++# sh test/test.sh ++ ++# Memory mapping (-DUSE_MMAP) doesn't seem to work... FIXME ++ ++# Best settings for GCC 2.95. This generates faster code than ++# GCC 3, so you should use this setup if possible. ++#CC = gcc -Wall -O3 ++#OPTIONS = -DUSE_DIRECT_THREADING -DUSE_MMAP -DUSE_INLINE ++# ++# Best settings for GCC 3. The optimiser in this version of GCC ++# is somewhat broken, so we can't use USE_DIRECT_THREADING. ++#CC = gcc -Wall -O3 ++#OPTIONS = -DUSE_MMAP -DUSE_INLINE ++# ++# Mac OS X (PowerPC) settings. ++#CC = gcc2 -Wall -O3 -no-cpp-precomp ++#OPTIONS = -DUSE_DIRECT_THREADING -DUSE_BIG_ENDIAN_UNALIGNED -DUSE_MMAP -DUSE_INLINE +Only in git-1.2.4: Makefile.win +Only in git-1.2.4: win