We have the framework of the curses interface working.
authorEric S. Raymond <esr@thyrsus.com>
Fri, 5 Nov 2004 01:02:46 +0000 (01:02 +0000)
committerEric S. Raymond <esr@thyrsus.com>
Fri, 5 Nov 2004 01:02:46 +0000 (01:02 +0000)
makefile
sst.c
sst.h
sst.xml

index b2ae6162c271ed1b87c4308844a527bc80e01ee1..c9c42b183eeb64acbd106b0a6eb8934854b5dfbb 100644 (file)
--- a/makefile
+++ b/makefile
@@ -23,7 +23,7 @@ sst:  $(OFILES)
 $(OFILES):  $(HFILES)
 
 sst.6: sst.xml
-       xmlto man sst.xml
+       xmlto --skip-validation man sst.xml
 
 sst-doc.txt: sst-doc.xml
        xmlto -m sst-layer.xsl --skip-validation txt sst-doc.xml
diff --git a/sst.c b/sst.c
index c8ac356eda049da1ea740374e472d98172f8773b..77fbeb826ba2b4f273df612835c408f13be1827b 100644 (file)
--- a/sst.c
+++ b/sst.c
@@ -1,6 +1,7 @@
 #define INCLUDED       // Define externs here\r
-#include "sst.h"\r
 #include <ctype.h>\r
+#include <getopt.h>\r
+#include "sst.h"\r
 \r
 #ifndef SSTDOC\r
 #define SSTDOC "sst.doc"\r
@@ -344,20 +345,28 @@ static void makemoves(void) {
 \r
 \r
 int main(int argc, char **argv) {\r
-       int i;\r
+    int i, option, usecurses = TRUE;\r
        int hitme;\r
        char ch;\r
 \r
-       iostart();\r
+       while ((option = getopt(argc, argv, "t")) != -1) {\r
+           switch (option) {\r
+           case 't':\r
+               usecurses = FALSE;\r
+               break;\r
+           default:\r
+               fprintf(stderr, "usage: sst [-t] [startcommand...].\n");\r
+               exit(0);\r
+           }\r
+       }\r
+\r
+       iostart(usecurses);\r
        prelim(); \r
        line[0] = '\0';\r
-       if (argc > 1) {\r
-               while (--argc > 0) {\r
-                       strcat(line, *(++argv));\r
-                       strcat(line, " ");\r
-               }\r
+       for (i = optind; i < argc;  i++) {\r
+               strcat(line, argv[i]);\r
+               strcat(line, " ");\r
        }\r
-\r
        while (TRUE) { /* Play a game */\r
                setup(line[0] == '\0');\r
                if (alldone) {\r
diff --git a/sst.h b/sst.h
index f9eb043c2a73f1718377e0977e0eca5ae81dce75..b0da117e2b880915c6927346f49cacf9e606ded0 100644 (file)
--- a/sst.h
+++ b/sst.h
@@ -423,6 +423,6 @@ void attakreport(void);
 void movetho(void);\r
 void probe(void);\r
 void clearscreen(void);\r
-void iostart(void);\r
+void iostart(int);\r
 void ioend(void);\r
 void getline(char *, int);\r
diff --git a/sst.xml b/sst.xml
index 3cc6e33d6b764a1a168d1405a389eff8acf50d33..f838a1fcf249d3f0415e2aefe508d14323e2c6f8 100644 (file)
--- a/sst.xml
+++ b/sst.xml
 <refsynopsisdiv id='synopsis'>
 
 <cmdsynopsis>
-  <command>sst</command>
+  <command>sst 
+       <arg choice='opt'>-t </arg> 
+       <arg rep='repeat' ><replaceable>command</replaceable></arg>
+  </command>
 </cmdsynopsis>
 
 </refsynopsisdiv>
@@ -36,9 +39,13 @@ url='http://sst.berlios.de/sst-doc.html'>browseable</ulink>.  On
 systems where <filename>/usr/share/doc/sst/</filename> is a legal
 filename, it will probably be installed there as well.</para>
 
-<para>Input tokens for the setup prompts will be read from the command
-line before standard input.  Thus, for example, you can invoke the
-program as</para>
+<para>There is one option -t, which forces the original pure-tty mode.
+Normally sst tries to come up in full-screen mode that assumes it is
+running on a cursor-addressable terminal or terminal emulator.</para>
+
+<para>Input tokens for the setup prompts will be read from the
+remainder of the command line before standard input.  Thus, for
+example, you can invoke the program as</para>
 
 <programlisting>
 sst regular medium good foobar