X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=interpreters%2Fbocfel%2Fglkstart.c;fp=interpreters%2Fbocfel%2Fglkstart.c;h=89cfb2778c2104097ca47e20914d60f9f8d02de7;hb=3c59ba5eef5cb4d39c06eb7f523b9c3b026bdc9b;hp=0000000000000000000000000000000000000000;hpb=ed91d840318ed6ebfe3a5a77fa17114ddbf56640;p=projects%2Fchimara%2Fchimara.git
diff --git a/interpreters/bocfel/glkstart.c b/interpreters/bocfel/glkstart.c
new file mode 100644
index 0000000..89cfb27
--- /dev/null
+++ b/interpreters/bocfel/glkstart.c
@@ -0,0 +1,120 @@
+/*-
+ * Copyright 2010-2012 Chris Spiegel.
+ *
+ * This file is part of Bocfel.
+ *
+ * Bocfel is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version
+ * 2 or 3, as published by the Free Software Foundation.
+ *
+ * Bocfel is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Bocfel. If not, see .
+ */
+
+#include
+#include
+
+/* Even on Win32, Gargoyle provides a glkunix startup. */
+#if defined(ZTERP_UNIX) || defined(GARGLK)
+#include
+
+#include
+
+#include "util.h"
+#include "zterp.h"
+
+zexternally_visible
+glkunix_argumentlist_t glkunix_arguments[] =
+{
+ { "-a", glkunix_arg_NumberValue, "-a N set the size of the evaluation stack" },
+ { "-A", glkunix_arg_NumberValue, "-A N set the size of the call stack" },
+ { "-c", glkunix_arg_NoValue, "-c disable color" },
+ { "-C", glkunix_arg_NoValue, "-C disable the use of a config file" },
+ { "-d", glkunix_arg_NoValue, "-d disable timed input" },
+ { "-D", glkunix_arg_NoValue, "-D disable sound effects" },
+ { "-e", glkunix_arg_NoValue, "-e enable ANSI escapes in the transcript" },
+ { "-E", glkunix_arg_ValueFollows, "-E string set the escape string for -e" },
+ { "-f", glkunix_arg_NoValue, "-f disable fixed-width fonts" },
+ { "-F", glkunix_arg_NoValue, "-F assume font is fixed-width" },
+ { "-g", glkunix_arg_NoValue, "-g disable the character graphics font" },
+ { "-G", glkunix_arg_NoValue, "-G enable alternative box-drawing character graphics" },
+ { "-i", glkunix_arg_NoValue, "-i display the id of the story file and exit" },
+ { "-k", glkunix_arg_NoValue, "-k disable the use of terminating keys (notably used in Beyond Zork)" },
+ { "-l", glkunix_arg_NoValue, "-l disable utf-8 transcripts" },
+ { "-L", glkunix_arg_NoValue, "-L force utf-8 transcrips" },
+ { "-m", glkunix_arg_NoValue, "-m disable meta commands" },
+ { "-n", glkunix_arg_NumberValue, "-n N set the interpreter number (see 11.1.3 in The Z-machine Standards Document 1.0)" },
+ { "-N", glkunix_arg_NumberValue, "-N N set the interpreter version (see 11.1.3.1 in The Z-machine Standards Document 1.0)" },
+ { "-r", glkunix_arg_NoValue, "-r start the story by replaying a command record" },
+ { "-R", glkunix_arg_NoValue, "-R filename set the filename to be used if replaying a command record" },
+ { "-s", glkunix_arg_NoValue, "-s start the story with command recording on" },
+ { "-S", glkunix_arg_NoValue, "-S filename set the filename to be used if command recording is turned on" },
+ { "-t", glkunix_arg_NoValue, "-t start the story with transcripting on" },
+ { "-T", glkunix_arg_ValueFollows, "-T filename set the filename to be used if transcription is turned on" },
+ { "-u", glkunix_arg_NumberValue, "-u N set the maximum number of undo slots" },
+ { "-U", glkunix_arg_NoValue, "-U disable compression in undo slots" },
+ { "-v", glkunix_arg_NoValue, "-v display version information" },
+ { "-x", glkunix_arg_NoValue, "-x disable expansion of abbreviations" },
+ { "-X", glkunix_arg_NoValue, "-X enable tandy censorship" },
+ { "-y", glkunix_arg_NoValue, "-y when opening a transcript, overwrite rather than append to an existing file" },
+ { "-z", glkunix_arg_NumberValue, "-z N set initial random seed" },
+ { "-Z", glkunix_arg_ValueFollows, "-Z device read initial random seed from device" },
+ { "", glkunix_arg_ValueFollows, "filename file to load" },
+
+ { NULL, glkunix_arg_End, NULL }
+};
+
+zexternally_visible
+int glkunix_startup_code(glkunix_startup_t *data)
+{
+ if(!process_arguments(data->argc, data->argv)) return 0;
+
+#ifdef GARGLK
+ garglk_set_program_name("Bocfel");
+ if(game_file != NULL)
+ {
+ char *p = strrchr(game_file, '/');
+ garglk_set_story_name(p == NULL ? game_file : p + 1);
+ }
+#endif
+
+ return 1;
+}
+#elif defined(ZTERP_WIN32)
+#include
+
+#include
+
+#include "util.h"
+
+int InitGlk(unsigned int);
+
+zexternally_visible
+int WINAPI WinMain(HINSTANCE instance, HINSTANCE previnstance, LPSTR cmdline, int cmdshow)
+{
+ /* This works (with a linker message) under MinGW, but I donât
+ * know if itâs supposed to; I am unfamiliar with how Windows
+ * handles command-line arguments.
+ */
+ extern int __argc;
+ extern char **__argv;
+
+ if(!InitGlk(0x00000700)) exit(EXIT_FAILURE);
+
+ if(!process_arguments(__argc, __argv)) exit(EXIT_FAILURE);
+
+ winglk_app_set_name("Bocfel");
+
+ glk_main();
+ glk_exit();
+
+ return 0;
+}
+#else
+#error Glk on this platform is not supported.
+#endif