Removed the XCURSES ifdefs from Xinitscr() and delscreen(), which now

also calls XCursesExit().
This commit is contained in:
William McBrine
2006-07-16 19:56:08 +00:00
parent 7c3c6bbccf
commit 14475c9591
7 changed files with 119 additions and 112 deletions

View File

@@ -15,7 +15,7 @@
* See the file maintain.er for details of the current maintainer. *
************************************************************************/
/* $Id: curspriv.h,v 1.91 2006/07/16 18:41:53 wmcbrine Exp $ */
/* $Id: curspriv.h,v 1.92 2006/07/16 19:56:07 wmcbrine Exp $ */
/* CURSPRIV.H
@@ -116,7 +116,7 @@ int PDC_reset_prog_mode(void);
int PDC_reset_shell_mode(void);
int PDC_resize_screen(int, int);
int PDC_scr_close(void);
int PDC_scr_open(SCREEN *);
int PDC_scr_open(int, char **);
int PDC_set_ctrl_break(bool);
int PDC_set_cursor_mode(int, int);
int PDC_set_font(int);
@@ -142,7 +142,9 @@ int PDC_query_adapter_type(void);
#ifdef XCURSES
int XCursesInstructAndWait(int);
int XCursesInitscr(int, char **);
# define PDC_scr_exit() XCursesExit()
#else
# define PDC_scr_exit() if (SP) free(SP)
#endif
#ifdef PDCDEBUG

View File

@@ -24,7 +24,7 @@
# include <sys/movedata.h>
#endif
RCSID("$Id: pdcscrn.c,v 1.32 2006/07/16 18:08:16 wmcbrine Exp $");
RCSID("$Id: pdcscrn.c,v 1.33 2006/07/16 19:56:07 wmcbrine Exp $");
Regs regs; /* used in various other modules */
@@ -109,11 +109,11 @@ int PDC_scr_close(void)
The DOS platform will never fail.
Portability:
PDCurses int PDC_scr_open(SCREEN *internal);
PDCurses int PDC_scr_open(int argc, char **argv);
**man-end****************************************************************/
int PDC_scr_open(SCREEN *internal)
int PDC_scr_open(int argc, char **argv)
{
#if SMALL || MEDIUM
# ifndef __PACIFIC__
@@ -123,44 +123,49 @@ int PDC_scr_open(SCREEN *internal)
#endif
PDC_LOG(("PDC_scr_open() - called\n"));
internal->orig_attr = FALSE;
internal->orig_emulation = getdosmembyte(0x487);
if ((SP = (SCREEN *)calloc(1, sizeof(SCREEN))) == (SCREEN *)NULL)
return ERR;
PDC_get_cursor_pos(&internal->cursrow, &internal->curscol);
SP->orig_attr = FALSE;
SP->orig_emulation = getdosmembyte(0x487);
internal->direct_video = TRUE; /* Assume that we can */
internal->video_seg = 0xb000; /* Base screen segment addr */
internal->video_ofs = 0x0; /* Base screen segment ofs */
internal->video_page = 0; /* Current Video Page */
internal->cursor = PDC_get_cursor_mode();
PDC_get_cursor_pos(&SP->cursrow, &SP->curscol);
internal->adapter = PDC_query_adapter_type();
internal->scrnmode = PDC_get_scrn_mode();
SP->direct_video = TRUE; /* Assume that we can */
SP->video_seg = 0xb000; /* Base screen segment addr */
SP->video_ofs = 0x0; /* Base screen segment ofs */
SP->video_page = 0; /* Current Video Page */
SP->cursor = PDC_get_cursor_mode();
internal->orig_font = internal->font = PDC_get_font();
internal->lines = PDC_get_rows();
internal->cols = PDC_get_columns();
SP->adapter = PDC_query_adapter_type();
SP->scrnmode = PDC_get_scrn_mode();
internal->orig_cursor = internal->cursor;
internal->orgcbr = PDC_get_ctrl_break();
SP->orig_font = SP->font = PDC_get_font();
SP->lines = PDC_get_rows();
SP->cols = PDC_get_columns();
SP->orig_cursor = SP->cursor;
SP->orgcbr = PDC_get_ctrl_break();
/* If the environment variable PDCURSES_BIOS is set, the DOS
int10() BIOS calls are used in place of direct video memory
access. */
if (getenv("PDCURSES_BIOS") != NULL)
internal->direct_video = FALSE;
SP->direct_video = FALSE;
/* This code for preserving the current screen. */
if (getenv("PDC_RESTORE_SCREEN") != NULL)
{
saved_lines = internal->lines;
saved_cols = internal->cols;
saved_lines = SP->lines;
saved_cols = SP->cols;
if ((saved_screen = (unsigned short*)malloc(saved_lines
* saved_cols * sizeof(unsigned short))) == NULL)
return ERR;
{
SP->_preserve = FALSE;
return OK;
}
#ifdef __DJGPP__
dosmemget ((unsigned long)_FAR_POINTER(SP->video_seg,
SP->video_ofs), saved_lines * saved_cols *
@@ -183,7 +188,7 @@ int PDC_scr_open(SCREEN *internal)
#endif
}
internal->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
return OK;
}

View File

@@ -20,7 +20,7 @@
#include <curses.h>
#include <stdlib.h>
RCSID("$Id: pdcscrn.c,v 1.28 2006/07/16 18:08:16 wmcbrine Exp $");
RCSID("$Id: pdcscrn.c,v 1.29 2006/07/16 19:56:07 wmcbrine Exp $");
#ifdef EMXVIDEO
static unsigned char *saved_screen = NULL;
@@ -132,36 +132,38 @@ bool PDC_scrn_modes_equal(int mode1, int mode2)
The DOS platform will never fail.
Portability:
PDCurses int PDC_scr_open(SCREEN *internal);
PDCurses int PDC_scr_open(int argc, char **argv);
**man-end****************************************************************/
int PDC_scr_open(SCREEN *internal)
int PDC_scr_open(int argc, char **argv)
{
char *ptr;
#ifndef EMXVIDEO
USHORT totchars;
#endif
PDC_LOG(("PDC_scr_open() - called\n"));
PDC_LOG(("PDC_scr_open() - called. internal: %x\n", internal));
if ((SP = (SCREEN *)calloc(1, sizeof(SCREEN))) == (SCREEN *)NULL)
return ERR;
#ifdef EMXVIDEO
v_init();
#endif
internal->orig_attr = FALSE;
internal->orig_emulation = 0;
SP->orig_attr = FALSE;
SP->orig_emulation = 0;
PDC_get_cursor_pos(&internal->cursrow, &internal->curscol);
PDC_get_cursor_pos(&SP->cursrow, &SP->curscol);
internal->cursor = PDC_get_cursor_mode();
SP->cursor = PDC_get_cursor_mode();
#ifdef EMXVIDEO
internal->tahead = -1;
SP->tahead = -1;
#endif
#ifndef EMXVIDEO
PDC_query_adapter_type(&internal->adapter);
PDC_get_scrn_mode(&internal->scrnmode);
PDC_get_keyboard_info(&internal->kbdinfo);
PDC_query_adapter_type(&SP->adapter);
PDC_get_scrn_mode(&SP->scrnmode);
PDC_get_keyboard_info(&SP->kbdinfo);
PDC_LOG(("PDC_scr_open() - after PDC_get_keyboard_info(). cb: %x, "
"fsMask: %x, chTurnAround: %x, fsInterim: %x, fsState: %x\n",
@@ -173,16 +175,16 @@ int PDC_scr_open(SCREEN *internal)
PDC_set_keyboard_binary();
#else
internal->adapter = PDC_query_adapter_type();
if (internal->adapter == _UNIX_MONO)
internal->mono = TRUE;
SP->adapter = PDC_query_adapter_type();
if (SP->adapter == _UNIX_MONO)
SP->mono = TRUE;
#endif
internal->orig_font = internal->font = PDC_get_font();
internal->lines = PDC_get_rows();
internal->cols = PDC_get_columns();
internal->orig_cursor = internal->cursor;
internal->orgcbr = PDC_get_ctrl_break();
internal->sizeable = TRUE;
SP->orig_font = SP->font = PDC_get_font();
SP->lines = PDC_get_rows();
SP->cols = PDC_get_columns();
SP->orig_cursor = SP->cursor;
SP->orgcbr = PDC_get_ctrl_break();
SP->sizeable = TRUE;
/* This code for preserving the current screen */
@@ -194,18 +196,24 @@ int PDC_scr_open(SCREEN *internal)
#endif
if (ptr != NULL)
{
saved_lines = internal->lines;
saved_cols = internal->cols;
saved_lines = SP->lines;
saved_cols = SP->cols;
#ifdef EMXVIDEO
if ((saved_screen = (unsigned char *)malloc(2 * saved_lines *
saved_cols * sizeof(unsigned char))) == NULL)
return ERR;
{
SP->_preserve = FALSE;
return OK;
}
v_getline(saved_screen, 0, 0, saved_lines * saved_cols);
#else
if ((saved_screen = (PCH)malloc(2 * saved_lines *
saved_cols * sizeof(unsigned char))) == NULL)
return ERR;
{
SP->_preserve = FALSE;
return OK;
}
totchars = saved_lines * saved_cols * 2;
VioReadCellStr((PCH)saved_screen, &totchars, 0, 0, (HVIO)NULL);
@@ -218,7 +226,7 @@ int PDC_scr_open(SCREEN *internal)
if (DosScanEnv("PDC_PRESERVE_SCREEN", (PSZ *)&ptr))
ptr = NULL;
#endif
internal->_preserve = (ptr != NULL);
SP->_preserve = (ptr != NULL);
return OK;
}

View File

@@ -38,7 +38,7 @@
# undef wnoutrefresh
#endif
RCSID("$Id: initscr.c,v 1.55 2006/07/16 18:41:53 wmcbrine Exp $");
RCSID("$Id: initscr.c,v 1.56 2006/07/16 19:56:07 wmcbrine Exp $");
const char *_curses_notice = "PDCurses 3.0 - Public Domain 2006";
@@ -172,23 +172,12 @@ WINDOW *Xinitscr(int argc, char *argv[])
if (SP != (SCREEN *)NULL && SP->alive)
return NULL;
#ifdef XCURSES
if (XCursesInitscr(argc, argv) == ERR)
exit(7);
#endif
#ifdef XCURSES
if (SP == (SCREEN *)NULL) /* SP already attached in XCursesInitscr() */
#else
if ((SP = (SCREEN *)calloc(1, sizeof(SCREEN))) == (SCREEN *)NULL)
#endif
if (PDC_scr_open(argc, argv) == ERR)
{
fprintf(stderr, "initscr(): Unable to create SP\n");
exit(8);
}
PDC_scr_open(SP);
SP->autocr = TRUE; /* cr -> lf by default */
SP->raw_out = FALSE; /* tty I/O modes */
SP->raw_inp = FALSE; /* tty I/O modes */
@@ -369,13 +358,9 @@ void delscreen(SCREEN *sp)
curscr = (WINDOW *)NULL;
SP->alive = FALSE;
#ifndef XCURSES
if (SP)
{
free(SP);
SP = (SCREEN *)NULL;
}
#endif
PDC_scr_exit();
SP = (SCREEN *)NULL;
}
int resize_term(int nlines, int ncols)

View File

@@ -19,7 +19,7 @@
#define INCLUDE_WINDOWS_H
#include <curses.h>
RCSID("$Id: pdcscrn.c,v 1.38 2006/07/16 18:08:16 wmcbrine Exp $");
RCSID("$Id: pdcscrn.c,v 1.39 2006/07/16 19:56:07 wmcbrine Exp $");
#define PDC_RESTORE_NONE 0
#define PDC_RESTORE_BUFFER 1
@@ -125,11 +125,11 @@ int PDC_scr_close(void)
The DOS platform will never fail.
Portability:
PDCurses int PDC_scr_open(SCREEN *internal);
PDCurses int PDC_scr_open(int argc, char **argv);
**man-end****************************************************************/
int PDC_scr_open(SCREEN *internal)
int PDC_scr_open(int argc, char **argv)
{
COORD bufsize, origin;
SMALL_RECT rect;
@@ -142,6 +142,9 @@ int PDC_scr_open(SCREEN *internal)
#endif
PDC_LOG(("PDC_scr_open() - called\n"));
if ((SP = (SCREEN *)calloc(1, sizeof(SCREEN))) == (SCREEN *)NULL)
return ERR;
hConOut = GetStdHandle(STD_OUTPUT_HANDLE);
hConIn = GetStdHandle(STD_INPUT_HANDLE);
@@ -149,34 +152,34 @@ int PDC_scr_open(SCREEN *internal)
GetConsoleScreenBufferInfo(hConOut, &orig_scr);
GetConsoleMode(hConIn, &dwConsoleMode);
internal->lines = ((str = getenv("LINES")) != NULL) ?
SP->lines = ((str = getenv("LINES")) != NULL) ?
atoi(str) : PDC_get_rows();
internal->cols = ((str = getenv("COLS")) != NULL) ?
SP->cols = ((str = getenv("COLS")) != NULL) ?
atoi(str) : PDC_get_columns();
if (internal->lines < 2 || internal->lines > csbi.dwMaximumWindowSize.Y)
if (SP->lines < 2 || SP->lines > csbi.dwMaximumWindowSize.Y)
{
fprintf(stderr, "LINES value must be >= 2 and <= %d: got %d\n",
csbi.dwMaximumWindowSize.Y, internal->lines);
csbi.dwMaximumWindowSize.Y, SP->lines);
return ERR;
}
if (internal->cols < 2 || internal->cols > csbi.dwMaximumWindowSize.X)
if (SP->cols < 2 || SP->cols > csbi.dwMaximumWindowSize.X)
{
fprintf(stderr, "COLS value must be >= 2 and <= %d: got %d\n",
csbi.dwMaximumWindowSize.X, internal->cols);
csbi.dwMaximumWindowSize.X, SP->cols);
return ERR;
}
internal->orig_fore = csbi.wAttributes & 0x0f;
internal->orig_back = (csbi.wAttributes & 0xf0) >> 4;
SP->orig_fore = csbi.wAttributes & 0x0f;
SP->orig_back = (csbi.wAttributes & 0xf0) >> 4;
internal->orig_attr = TRUE;
SP->orig_attr = TRUE;
internal->_restore = PDC_RESTORE_NONE;
SP->_restore = PDC_RESTORE_NONE;
if (getenv("PDC_RESTORE_SCREEN") != NULL)
{
@@ -246,13 +249,13 @@ int PDC_scr_open(SCREEN *internal)
return ERR;
}
internal->_restore = PDC_RESTORE_WINDOW;
SP->_restore = PDC_RESTORE_WINDOW;
}
else
internal->_restore = PDC_RESTORE_BUFFER;
SP->_restore = PDC_RESTORE_BUFFER;
}
internal->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
bufsize.X = orig_scr.srWindow.Right - orig_scr.srWindow.Left + 1;
bufsize.Y = orig_scr.srWindow.Bottom - orig_scr.srWindow.Top + 1;
@@ -268,14 +271,14 @@ int PDC_scr_open(SCREEN *internal)
PDC_reset_prog_mode();
PDC_get_cursor_pos(&internal->cursrow, &internal->curscol);
PDC_get_cursor_pos(&SP->cursrow, &SP->curscol);
internal->cursor = PDC_get_cursor_mode();
internal->adapter = PDC_query_adapter_type();
SP->cursor = PDC_get_cursor_mode();
SP->adapter = PDC_query_adapter_type();
internal->orig_cursor = internal->cursor;
SP->orig_cursor = SP->cursor;
internal->orgcbr = PDC_get_ctrl_break();
SP->orgcbr = PDC_get_ctrl_break();
#ifdef PDC_THREAD_BUILD

View File

@@ -17,7 +17,7 @@
#include "pdcx11.h"
RCSID("$Id: pdcscrn.c,v 1.26 2006/07/16 18:08:16 wmcbrine Exp $");
RCSID("$Id: pdcscrn.c,v 1.27 2006/07/16 19:56:07 wmcbrine Exp $");
bool GLOBAL_sb_on = FALSE;
bool GLOBAL_slk_on = FALSE;
@@ -63,30 +63,33 @@ int PDC_scr_close(void)
The DOS platform will never fail.
Portability:
PDCurses int PDC_scr_open(SCREEN *internal);
PDCurses int PDC_scr_open(int argc, char **argv);
**man-end****************************************************************/
int PDC_scr_open(SCREEN *internal)
int PDC_scr_open(int argc, char **argv)
{
extern bool sb_started;
PDC_LOG(("PDC_scr_open() - called\n"));
internal->cursrow = internal->curscol = 0;
internal->cursor = 0;
internal->adapter = 0;
internal->orig_cursor = internal->cursor;
internal->orig_attr = FALSE;
internal->orgcbr = 0;
internal->sb_on = sb_started;
internal->sb_total_y = 0;
internal->sb_viewport_y = 0;
internal->sb_cur_y = 0;
internal->sb_total_x = 0;
internal->sb_viewport_x = 0;
internal->sb_cur_x = 0;
internal->line_color = COLOR_WHITE;
if ((XCursesInitscr(argc, argv) == ERR) || (SP == (SCREEN *)NULL))
return ERR;
SP->cursrow = SP->curscol = 0;
SP->cursor = 0;
SP->adapter = 0;
SP->orig_cursor = SP->cursor;
SP->orig_attr = FALSE;
SP->orgcbr = 0;
SP->sb_on = sb_started;
SP->sb_total_y = 0;
SP->sb_viewport_y = 0;
SP->sb_cur_y = 0;
SP->sb_total_x = 0;
SP->sb_viewport_x = 0;
SP->sb_cur_x = 0;
SP->line_color = COLOR_WHITE;
return OK;
}

View File

@@ -15,7 +15,7 @@
* See the file maintain.er for details of the current maintainer. *
************************************************************************/
/* $Id: pdcx11.h,v 1.36 2006/07/16 18:41:53 wmcbrine Exp $ */
/* $Id: pdcx11.h,v 1.37 2006/07/16 19:56:08 wmcbrine Exp $ */
#define CURSES_LIBRARY 1
#ifdef HAVE_CONFIG_H
@@ -295,6 +295,7 @@ void XCursesEndwin(void);
void XCursesExitCursesProcess(int, char *);
void XCursesExitXCursesProcess(int, int, char *);
int XCursesInstruct(int);
int XCursesInitscr(int, char **);
void SelectionOff(void);