]> code.citadel.org Git - citadel.git/blobdiff - citadel/screen.c
Patches from Matt with slight mod from me to do without strlen. Also modified lprintf...
[citadel.git] / citadel / screen.c
index c25fae949ad9b4c4abd66d375ada7f77432f8940..a1d8abd7546f0c477d62725f061458e36fc40684 100644 (file)
@@ -4,14 +4,14 @@
  * Handle full-screen curses stuff
  */
 
-#include "sysdep.h"
-#include "screen.h"
+#include <stdlib.h>
+#include <unistd.h>
 #include <stdio.h>
 #include <signal.h>
 #include <string.h>
 #include <stdarg.h>
-#include <unistd.h>
 #include <sys/types.h>
+#include "sysdep.h"
 #ifdef HAVE_VW_PRINTW
 #define _vwprintw vw_printw
 #else
@@ -25,6 +25,7 @@
 #include "citadel_ipc.h"
 #include "citadel_decls.h"
 #include "commands.h"
+#include "screen.h"
 
 #if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES)
 static SCREEN *myscreen = NULL;
@@ -32,8 +33,8 @@ static WINDOW *mainwindow = NULL;
 static WINDOW *statuswindow = NULL;
 
 char rc_screen;
-char arg_screen;
 #endif
+char arg_screen;
 
 extern int screenheight;
 extern int screenwidth;
@@ -55,7 +56,7 @@ int is_curses_enabled(void) {
  * status_line() is a convenience function for writing a "typical"
  * status line to the window.
  */
-void status_line(const char *humannode, const char *bbs_city,
+void status_line(const char *humannode, const char *site_location,
                 const char *room_name, int secure, int newmailcount)
 {
 #if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES)
@@ -85,7 +86,7 @@ void status_line(const char *humannode, const char *bbs_city,
 #if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES)
 void wait_indicator(int state) {
 
-       if (!isendwin() && statuswindow) {
+       if (statuswindow && !isendwin()) {
 
                mvwinch(statuswindow, 0, screenwidth - 2);
                switch (state) {
@@ -108,6 +109,8 @@ void wait_indicator(int state) {
                wrefresh(mainwindow);   /* this puts the cursor back */
        }
 }
+#else
+void wait_indicator(int state) {}
 #endif
 
 
@@ -208,7 +211,7 @@ int screen_reset(void)
 {
 #if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES)
        if (myscreen) {
-               endwin();
+               if (!isendwin()) endwin();
                return 1;
        }
 #endif /* HAVE_CURSES_H */
@@ -335,7 +338,8 @@ int scr_getc(int delay)
 #endif
 
        buf = '\0';
-       read (0, &buf, 1);
+       if (!read (0, &buf, 1))
+               logoff(NULL, 3);
        return buf;
 }
 
@@ -370,10 +374,14 @@ int scr_putc(int c)
 #if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES)
        if (mainwindow) {
                if (c == 7) beep();
-               return ((waddch(mainwindow, c) == OK) ? c : EOF);
+               if (waddch(mainwindow, c) != OK)
+                       logoff(NULL, 3);
+               return c;
        }
 #endif
-       return putc(c, stdout);
+       if (putc(c, stdout) == EOF)
+               logoff(NULL, 3);
+       return c;
 }
 
 
@@ -458,7 +466,7 @@ static volatile int caught_sigwinch = 0;
 /*
  * this is not supposed to be called from a signal handler.
  */
-int scr_set_windowsize()
+int scr_set_windowsize(CtdlIPC* ipc)
 {
 #if defined(HAVE_CURSES_H) && !defined(DISABLE_CURSES)
        if (mainwindow && caught_sigwinch) {
@@ -471,8 +479,8 @@ int scr_set_windowsize()
                wresize(statuswindow, 1, screenwidth);
 #endif
                mvwin(statuswindow, screenheight, 0);
-               status_line(serv_info.serv_humannode, serv_info.serv_bbs_city,
-                            room_name, secure, -1);
+               status_line(ipc->ServInfo.humannode, ipc->ServInfo.site_location,
+                               room_name, secure, -1);
                wnoutrefresh(mainwindow);
                wnoutrefresh(statuswindow);
                doupdate();