FDISTR/FENSLV/FREPRO sequence looks like it's working.
[super-star-trek.git] / src / io.c
index 5c5ac644526dc4c91ba5f9db6be3e20b04fab22f..dc4ce744fee5cf1350af13c2c991a2096ba46441 100644 (file)
--- a/src/io.c
+++ b/src/io.c
@@ -1,10 +1,7 @@
 #include <stdio.h>
 #include <unistd.h>
-#include <curses.h>
-#include <signal.h>
-#include <ctype.h>
-#include <stdarg.h>
 
+#include "config.h"
 #include "sst.h"
 #include "sstlinux.h"
 
@@ -30,17 +27,24 @@ static void outro(void)
        (void)endwin();
        putchar('\n');
     }
+    if (logfp)
+       fclose(logfp);
 }
 
 void iostart(void) 
 {
+    setlocale(LC_ALL, "");
+    bindtextdomain(PACKAGE, LOCALEDIR);
+    textdomain(PACKAGE);
+    gettext("");
+
+    if (atexit(outro)){
+       fprintf(stderr,"Unable to register outro(), exiting...\n");
+       exit(1);
+    }
     if (!(game.options & OPTION_CURSES)) {
        rows = atoi(getenv("LINES"));
     } else {
-       if (atexit(outro)){
-           fprintf(stderr,"Unable to register outro(), exiting...\n");
-           exit(1);
-       }
        (void)initscr();
 #ifdef KEY_MIN
        keypad(stdscr, TRUE);
@@ -199,8 +203,13 @@ void cgetline(char *line, int max)
        strcat(line, "\n");
        wrefresh(curwnd);
     } else {
-       fgets(line, max, stdin);
+       if (replayfp && !feof(replayfp))
+           fgets(line, max, replayfp);
+       else
+           fgets(line, max, stdin);
     }
+    if (logfp)
+       fputs(line, logfp);
     line[strlen(line)-1] = '\0';
 }
 
@@ -301,7 +310,7 @@ void highvideo (void)
     }
 }
  
-void commandhook(char *cmd, int before) {
+void commandhook(char *cmd, bool before) {
 }
 
 /*
@@ -428,7 +437,7 @@ void makechart(void)
 void setpassword(void) 
 {
     if (!(game.options & OPTION_CURSES)) {
-       while (TRUE) {
+       for (;;) {
            scan();
            strcpy(game.passwd, citem);
            chew();