From 75f38d4ff3ff095a822136df8508f28f0802dca3 Mon Sep 17 00:00:00 2001 From: William McBrine Date: Sun, 2 Jul 2006 19:03:59 +0000 Subject: [PATCH] Minor reorganization of X11 port -- since there are no longer differing copyright terms on the files, there's less reason to keep the "PDCurses" and "XCurses" stuff separated that way; and since the thread port is dead, there's less need for the separation embodied in the "process" directory, which isn't clean anyway. Of course, the various ports and the "portable" stuff still need to be separated, but that's actually easier now -- because, for example, many of the XCurses* defines from curspriv.h are gone. To Do: Much more. --- curspriv.h | 14 +--- x11/pdcclip.c | 71 +++++++++++++++-- x11/pdcdisp.c | 21 ++++- x11/pdcgetsc.c | 9 +-- x11/pdckbd.c | 9 +-- x11/pdcscrn.c | 30 ++++++- x11/pdcsetsc.c | 19 ++++- x11/pdcx11.c | 17 +--- x11/pdcx11.h | 74 ++++++++++++++++- x11/process/x11.c | 4 +- x11/process/x11.h | 66 ---------------- x11/process/x11curses.c | 171 +--------------------------------------- 12 files changed, 208 insertions(+), 297 deletions(-) delete mode 100644 x11/process/x11.h diff --git a/curspriv.h b/curspriv.h index 14a3e6e6..a52d6f6b 100644 --- a/curspriv.h +++ b/curspriv.h @@ -15,7 +15,7 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -/* $Id: curspriv.h,v 1.68 2006/04/25 22:43:12 wmcbrine Exp $ */ +/* $Id: curspriv.h,v 1.69 2006/07/02 19:03:59 wmcbrine Exp $ */ /* CURSPRIV.H @@ -265,25 +265,13 @@ int PDC_query_adapter_type(void); #endif #ifdef XCURSES -int XCurses_display_cursor(int, int, int, int, int); int XCurses_rawgetch(void); bool XCurses_kbhit(void); -int XCurses_get_input_fd(void); int XCursesInstruct(int); int XCursesInstructAndWait(int); -int XCurses_transform_line(const chtype *, int, int, int); int XCursesInitscr(const char *, int, char **); int XCursesEndwin(void); -void XCursesCleanupCursesProcess(int); -int XCursesResizeScreen(int, int); -int XCurses_get_cols(void); -int XCurses_get_rows(void); int XCurses_refresh_scrollbar(void); -void XCurses_set_title(const char *); -int XCurses_getclipboard(char **, long *); -int XCurses_setclipboard(const char *, long); -int XCurses_clearclipboard(void); -unsigned long XCurses_get_key_modifiers(void); #endif #ifdef __PACIFIC__ diff --git a/x11/pdcclip.c b/x11/pdcclip.c index b9e7ed5f..78a9014c 100644 --- a/x11/pdcclip.c +++ b/x11/pdcclip.c @@ -15,11 +15,11 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -#define CURSES_LIBRARY 1 -#include +#include "pdcx11.h" + #include -RCSID("$Id: pdcclip.c,v 1.17 2006/03/29 20:06:41 wmcbrine Exp $"); +RCSID("$Id: pdcclip.c,v 1.18 2006/07/02 19:03:59 wmcbrine Exp $"); /*man-start************************************************************** @@ -50,9 +50,40 @@ RCSID("$Id: pdcclip.c,v 1.17 2006/03/29 20:06:41 wmcbrine Exp $"); int PDC_getclipboard(char **contents, long *length) { + int result = 0; + int len; + PDC_LOG(("PDC_getclipboard() - called\n")); - return XCurses_getclipboard(contents, length); + XCursesInstructAndWait(CURSES_GET_SELECTION); + + if (read_socket(display_sock, (char *)&result, sizeof(int)) < 0) + XCursesExitCursesProcess(5, + "exiting from XCurses_getclipboard"); + + if (result == PDC_CLIP_SUCCESS) + { + if (read_socket(display_sock, (char *)&len, sizeof(int)) < 0) + XCursesExitCursesProcess(5, + "exiting from XCurses_getclipboard"); + + if (len != 0) + { + *contents = (char *)malloc(len + 1); + + if (!*contents) + XCursesExitCursesProcess(6, "exiting from " + "XCurses_getclipboard - synchronization error"); + + if (read_socket(display_sock, *contents, len) < 0) + XCursesExitCursesProcess(5, + "exiting from XCurses_getclipboard"); + + *length = len; + } + } + + return result; } /*man-start************************************************************** @@ -78,9 +109,22 @@ int PDC_getclipboard(char **contents, long *length) int PDC_setclipboard(const char *contents, long length) { + int rc; + PDC_LOG(("PDC_setclipboard() - called\n")); - return XCurses_setclipboard(contents, length); + XCursesInstruct(CURSES_SET_SELECTION); + + /* Write, then wait for X to do its stuff; expect return code. */ + + if (write_socket(display_sock, (char *)&length, sizeof(long)) >= 0) + if (write_socket(display_sock, contents, length) >= 0) + if (read_socket(display_sock, (char *)&rc, sizeof(int)) >= 0) + return rc; + + XCursesExitCursesProcess(5, "exiting from PDC_setclipboard"); + + return ERR; /* not reached */ } /*man-start************************************************************** @@ -128,5 +172,20 @@ int PDC_freeclipboard(char *contents) int PDC_clearclipboard(void) { - return XCurses_clearclipboard(); + int rc; + long len = 0; + + PDC_LOG(("PDC_clearclipboard() - called\n")); + + XCursesInstruct(CURSES_CLEAR_SELECTION); + + /* Write, then wait for X to do its stuff; expect return code. */ + + if (write_socket(display_sock, (char *)&len, sizeof(long)) >= 0) + if (read_socket(display_sock, (char *)&rc, sizeof(int)) >= 0) + return rc; + + XCursesExitCursesProcess(5, "exiting from PDC_clearclipboard"); + + return ERR; /* not reached */ } diff --git a/x11/pdcdisp.c b/x11/pdcdisp.c index 5c805920..5b071ca8 100644 --- a/x11/pdcdisp.c +++ b/x11/pdcdisp.c @@ -15,11 +15,11 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -#define CURSES_LIBRARY 1 -#include +#include "pdcx11.h" + #include -RCSID("$Id: pdcdisp.c,v 1.21 2006/03/29 20:06:41 wmcbrine Exp $"); +RCSID("$Id: pdcdisp.c,v 1.22 2006/07/02 19:03:59 wmcbrine Exp $"); /*man-start************************************************************** @@ -133,7 +133,20 @@ void PDC_transform_line(int lineno) dstp = curscr->_y[lineno] + x; len = endx - x + 1; - XCurses_transform_line(dstp, lineno, x, len); + /* loop until we can write to the line */ + + while (*(Xcurscr + XCURSCR_FLAG_OFF + lineno)) + dummy_function(); + + *(Xcurscr + XCURSCR_FLAG_OFF + lineno) = 1; + + memcpy(Xcurscr + XCURSCR_Y_OFF(lineno) + (x * sizeof(chtype)), + dstp, len * sizeof(chtype)); + + *(Xcurscr + XCURSCR_START_OFF + lineno) = x; + *(Xcurscr + XCURSCR_LENGTH_OFF + lineno) = len; + + *(Xcurscr + XCURSCR_FLAG_OFF + lineno) = 0; curscr->_firstch[lineno] = _NO_CHANGE; curscr->_lastch[lineno] = _NO_CHANGE; diff --git a/x11/pdcgetsc.c b/x11/pdcgetsc.c index ef22074a..7f3659a5 100644 --- a/x11/pdcgetsc.c +++ b/x11/pdcgetsc.c @@ -15,10 +15,9 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -#define CURSES_LIBRARY 1 -#include +#include "pdcx11.h" -RCSID("$Id: pdcgetsc.c,v 1.15 2006/03/29 20:06:41 wmcbrine Exp $"); +RCSID("$Id: pdcgetsc.c,v 1.16 2006/07/02 19:03:59 wmcbrine Exp $"); /*man-start************************************************************** @@ -45,7 +44,7 @@ int PDC_get_columns(void) { PDC_LOG(("PDC_get_columns() - called\n")); - return XCurses_get_cols(); + return XCursesCOLS; } /*man-start************************************************************** @@ -73,7 +72,7 @@ int PDC_get_rows(void) { PDC_LOG(("PDC_get_rows() - called\n")); - return XCurses_get_rows(); + return XCursesLINES; } /*man-start************************************************************** diff --git a/x11/pdckbd.c b/x11/pdckbd.c index 82f83ff9..08edeaa9 100644 --- a/x11/pdckbd.c +++ b/x11/pdckbd.c @@ -15,10 +15,9 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -#define CURSES_LIBRARY 1 -#include +#include "pdcx11.h" -RCSID("$Id: pdckbd.c,v 1.21 2006/04/15 16:55:28 wmcbrine Exp $"); +RCSID("$Id: pdckbd.c,v 1.22 2006/07/02 19:03:59 wmcbrine Exp $"); /*man-start************************************************************** @@ -45,7 +44,7 @@ unsigned long PDC_get_input_fd(void) { PDC_LOG(("PDC_get_input_fd() - called\n")); - return XCurses_get_input_fd(); + return key_sock; } /*man-start************************************************************** @@ -204,5 +203,5 @@ unsigned long PDC_get_key_modifiers(void) { PDC_LOG(("PDC_get_key_modifiers() - called\n")); - return XCurses_get_key_modifiers(); + return pdc_key_modifier; } diff --git a/x11/pdcscrn.c b/x11/pdcscrn.c index 65a8d574..8b8aba3e 100644 --- a/x11/pdcscrn.c +++ b/x11/pdcscrn.c @@ -15,10 +15,9 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -#define CURSES_LIBRARY 1 -#include +#include "pdcx11.h" -RCSID("$Id: pdcscrn.c,v 1.23 2006/03/29 20:06:41 wmcbrine Exp $"); +RCSID("$Id: pdcscrn.c,v 1.24 2006/07/02 19:03:59 wmcbrine Exp $"); bool GLOBAL_sb_on = FALSE; bool GLOBAL_slk_on = FALSE; @@ -136,5 +135,28 @@ int PDC_resize_screen(int nlines, int ncols) PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n", nlines, ncols)); - return XCursesResizeScreen(nlines, ncols); + shmdt((char *)Xcurscr); + XCursesInstructAndWait(CURSES_RESIZE); + + if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, + SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0) + { + perror("Cannot allocate shared memory for curscr"); + kill(otherpid, SIGKILL); + return ERR; + } + + XCursesLINES = SP->lines; + XCursesCOLS = SP->cols; + + PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d SP->lines %d " + "SP->cols %d\n", XCLOGMSG, shmid_Xcurscr, + shmkey_Xcurscr, SP->lines, SP->cols)); + + Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0); + atrtab = (unsigned char *)(Xcurscr + XCURSCR_ATRTAB_OFF); + + SP->resized = FALSE; + + return OK; } diff --git a/x11/pdcsetsc.c b/x11/pdcsetsc.c index c5c7b4eb..b193973a 100644 --- a/x11/pdcsetsc.c +++ b/x11/pdcsetsc.c @@ -15,10 +15,11 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -#define CURSES_LIBRARY 1 -#include +#include "pdcx11.h" -RCSID("$Id: pdcsetsc.c,v 1.16 2006/03/29 20:06:41 wmcbrine Exp $"); +#include + +RCSID("$Id: pdcsetsc.c,v 1.17 2006/07/02 19:03:59 wmcbrine Exp $"); /*man-start************************************************************** @@ -119,7 +120,17 @@ int PDC_curs_set(int visibility) void PDC_set_title(const char *title) { + int len; + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); - XCurses_set_title(title); + len = strlen(title) + 1; /* write nul character */ + + XCursesInstruct(CURSES_TITLE); + + if (write_display_socket_int(len) >= 0) + if (write_socket(display_sock, title, len) >= 0) + return; + + XCursesExitCursesProcess(1, "exiting from PDC_set_title"); } diff --git a/x11/pdcx11.c b/x11/pdcx11.c index 3250633b..4a19eca3 100644 --- a/x11/pdcx11.c +++ b/x11/pdcx11.c @@ -20,7 +20,7 @@ #include #include -RCSID("$Id: pdcx11.c,v 1.67 2006/07/02 07:08:27 wmcbrine Exp $"); +RCSID("$Id: pdcx11.c,v 1.68 2006/07/02 19:03:59 wmcbrine Exp $"); AppData app_data; @@ -2345,21 +2345,6 @@ void XCursesEnterLeaveWindow(Widget w, XtPointer client_data, XEvent *event, } } -int XCurses_get_rows(void) -{ - return XCursesLINES; -} - -int XCurses_get_cols(void) -{ - return XCursesCOLS; -} - -unsigned long XCurses_get_key_modifiers(void) -{ - return pdc_key_modifier; -} - int XCursesSendKeyToCurses(unsigned long key, MOUSE_STATUS *ms) { PDC_LOG(("%s:XCursesSendKeyToCurses() - called: sending %d\n", diff --git a/x11/pdcx11.h b/x11/pdcx11.h index df95e2f9..4d7ec027 100644 --- a/x11/pdcx11.h +++ b/x11/pdcx11.h @@ -15,7 +15,7 @@ * See the file maintain.er for details of the current maintainer. * ************************************************************************/ -/* $Id: pdcx11.h,v 1.28 2006/07/01 18:06:43 wmcbrine Exp $ */ +/* $Id: pdcx11.h,v 1.29 2006/07/02 19:03:59 wmcbrine Exp $ */ #define CURSES_LIBRARY 1 #ifdef HAVE_CONFIG_H @@ -234,6 +234,8 @@ typedef struct char *textCursor; } AppData; +extern AppData app_data; + #define XCURSESNORMALFONTINFO app_data.normalfont #define XCURSESITALICFONTINFO app_data.italicfont #define XCURSESLINES app_data.lines @@ -275,7 +277,74 @@ typedef struct #endif #define PDC_NUMBER_XCURSES_ACTIONS 5 -#include "x11.h" +void dummy_function(void); +void get_GC(Display *, Window, GC *, XFontStruct *, int, int, bool); +void makeXY(int, int, int, int, int *, int *); +int get_colors(void); +void start_event_handler(void); + +int XCursesTransformLine(int, int, chtype, int, int, int, char *); +int XCursesDisplayText(const chtype *, int, int, int, bool); +void XCursesDisplayScreen(bool); +void XCursesDisplayCursor(int, int, int, int); + +int XCurses_display_cursor(int, int, int, int, int); + +void XCursesStructureNotify(Widget, XtPointer, XEvent *, Boolean *); +void XCursesEnterLeaveWindow(Widget, XtPointer, XEvent *, Boolean *); +void XCursesPasteSelection(Widget, XButtonEvent *); +void XCursesHandleString(Widget, XEvent *, String *, Cardinal *); +void XCursesKeyPress(Widget, XEvent *, String *, Cardinal *); +void XCursesModifierPress(Widget, XEvent *, String *, Cardinal *); +void XCursesButton(Widget, XEvent *, String *, Cardinal *); +Boolean XCursesConvertProc(Widget, Atom *, Atom *, Atom *, XtPointer *, + unsigned long *, int *); +void XCursesLoseOwnership(Widget, Atom *); +void XCursesRequestorCallbackForPaste(Widget, XtPointer, Atom *, Atom *, + XtPointer, unsigned long *, int *); +void XCursesRequestorCallbackForGetSelection(Widget, XtPointer, Atom *, Atom *, + XtPointer, unsigned long *, int *); +RETSIGTYPE XCursesSignalHandler(int); +void XCursesExitCursesProcess(int, char *); +void XCursesExitXCursesProcess(int, int, char *); + +void SelectionOff(void); +void SelectionOn(int, int); +void SelectionExtend(int, int); +void SelectionSet(void); + +int write_socket(int, const char *, int); +int read_socket(int, char *, int); +int write_display_socket_int(int); + +int XCursesSetupX(const char *display_name, int argc, char *argv[]); +RETSIGTYPE XCursesSigwinchHandler(int signo); + +#ifdef _HPUX_SOURCE +# define FD_SET_CAST int * +#else +# define FD_SET_CAST fd_set * +#endif + +extern fd_set readfds; +extern fd_set writefds; +extern struct timeval socket_timeout; + +extern unsigned char *Xcurscr; +extern int XCursesProcess; +extern int shmidSP; +extern int shmid_Xcurscr; +extern int shmkeySP; +extern int shmkey_Xcurscr; +extern int otherpid; +extern int XCursesLINES; +extern int XCursesCOLS; +extern unsigned char *atrtab; +extern int display_sock; +extern int key_sock; +extern int display_sockets[2]; +extern int key_sockets[2]; +extern int exit_sock; extern GC normal_gc, block_cursor_gc, rect_cursor_gc, italic_gc, border_gc; extern int XCursesFontHeight, XCursesFontWidth; @@ -315,7 +384,6 @@ extern XtResource app_resources[PDC_NUMBER_APP_RESOURCES]; extern XrmOptionDescRec options[PDC_NUMBER_OPTIONS]; extern char global_display_name[100]; extern Bool after_first_curses_request; -/* extern char *XCursesProgramName; */ extern int colors[(2 * MAX_COLORS) + 2]; extern int windowEntered; extern int visible_cursor; diff --git a/x11/process/x11.c b/x11/process/x11.c index bfb9a12a..7cea2fb0 100644 --- a/x11/process/x11.c +++ b/x11/process/x11.c @@ -19,9 +19,7 @@ #include -RCSID("$Id: x11.c,v 1.47 2006/07/02 08:17:21 wmcbrine Exp $"); - -extern AppData app_data; +RCSID("$Id: x11.c,v 1.48 2006/07/02 19:03:59 wmcbrine Exp $"); int visible_cursor = 0; int windowEntered = 1; diff --git a/x11/process/x11.h b/x11/process/x11.h deleted file mode 100644 index 52e4aaef..00000000 --- a/x11/process/x11.h +++ /dev/null @@ -1,66 +0,0 @@ -/* $Id: x11.h,v 1.9 2006/07/02 07:08:28 wmcbrine Exp $ */ - -void dummy_function(void); -void get_GC(Display *, Window, GC *, XFontStruct *, int, int, bool); -void makeXY(int, int, int, int, int *, int *); -int get_colors(void); -void start_event_handler(void); - -int XCursesTransformLine(int, int, chtype, int, int, int, char *); -int XCursesDisplayText(const chtype *, int, int, int, bool); -void XCursesDisplayScreen(bool); -void XCursesDisplayCursor(int, int, int, int); -void XCursesStructureNotify(Widget, XtPointer, XEvent *, Boolean *); -void XCursesEnterLeaveWindow(Widget, XtPointer, XEvent *, Boolean *); -void XCursesPasteSelection(Widget, XButtonEvent *); -void XCursesHandleString(Widget, XEvent *, String *, Cardinal *); -void XCursesKeyPress(Widget, XEvent *, String *, Cardinal *); -void XCursesModifierPress(Widget, XEvent *, String *, Cardinal *); -void XCursesButton(Widget, XEvent *, String *, Cardinal *); -Boolean XCursesConvertProc(Widget, Atom *, Atom *, Atom *, XtPointer *, - unsigned long *, int *); -void XCursesLoseOwnership(Widget, Atom *); -void XCursesRequestorCallbackForPaste(Widget, XtPointer, Atom *, Atom *, - XtPointer, unsigned long *, int *); -void XCursesRequestorCallbackForGetSelection(Widget, XtPointer, Atom *, Atom *, - XtPointer, unsigned long *, int *); -RETSIGTYPE XCursesSignalHandler(int); -void XCursesExitXCursesProcess(int, int, char *); - -void SelectionOff(void); -void SelectionOn(int, int); -void SelectionExtend(int, int); -void SelectionSet(void); - -int write_socket(int, const char *, int); -int read_socket(int, char *, int); -int write_display_socket_int(int); - -int XCursesSetupX(const char *display_name, int argc, char *argv[]); -RETSIGTYPE XCursesSigwinchHandler(int signo); - -#ifdef _HPUX_SOURCE -# define FD_SET_CAST int * -#else -# define FD_SET_CAST fd_set * -#endif - -extern fd_set readfds; -extern fd_set writefds; -extern struct timeval socket_timeout; - -extern unsigned char *Xcurscr; -extern int XCursesProcess; -extern int shmidSP; -extern int shmid_Xcurscr; -extern int shmkeySP; -extern int shmkey_Xcurscr; -extern int otherpid; -extern int XCursesLINES; -extern int XCursesCOLS; -extern unsigned char *atrtab; -extern int display_sock; -extern int key_sock; -extern int display_sockets[2]; -extern int key_sockets[2]; -extern int exit_sock; diff --git a/x11/process/x11curses.c b/x11/process/x11curses.c index bfae254d..985004a0 100644 --- a/x11/process/x11curses.c +++ b/x11/process/x11curses.c @@ -22,42 +22,7 @@ #include -RCSID("$Id: x11curses.c,v 1.33 2006/07/02 08:17:21 wmcbrine Exp $"); - -extern AppData app_data; - -static void XCursesExitCursesProcess(int, char *); - -int XCursesResizeScreen(int nlines, int ncols) -{ - PDC_LOG(("%s:XCursesResizeScreen() - called: Lines: %d Cols: %d\n", - XCLOGMSG, nlines, ncols)); - - shmdt((char *)Xcurscr); - XCursesInstructAndWait(CURSES_RESIZE); - - if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, - SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0) - { - perror("Cannot allocate shared memory for curscr"); - kill(otherpid, SIGKILL); - return ERR; - } - - XCursesLINES = SP->lines; - XCursesCOLS = SP->cols; - - PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d SP->lines %d " - "SP->cols %d\n", XCLOGMSG, shmid_Xcurscr, - shmkey_Xcurscr, SP->lines, SP->cols)); - - Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0); - atrtab = (unsigned char *)(Xcurscr + XCURSCR_ATRTAB_OFF); - - SP->resized = FALSE; - - return OK; -} +RCSID("$Id: x11curses.c,v 1.34 2006/07/02 19:03:59 wmcbrine Exp $"); int XCurses_display_cursor(int oldrow, int oldcol, int newrow, int newcol, int visibility) @@ -100,24 +65,6 @@ int XCurses_display_cursor(int oldrow, int oldcol, int newrow, int newcol, return OK; } -void XCurses_set_title(const char *title) -{ - int len; - - PDC_LOG(("%s:XCurses_set_title() - called: TITLE: %s\n", - XCLOGMSG, title)); - - len = strlen(title) + 1; /* write nul character */ - - XCursesInstruct(CURSES_TITLE); - - if (write_display_socket_int(len) >= 0) - if (write_socket(display_sock, title, len) >= 0) - return; - - XCursesExitCursesProcess(1, "exiting from XCurses_set_title"); -} - int XCurses_refresh_scrollbar(void) { PDC_LOG(("%s:XCurses_refresh_scrollbar() - called\n", XCLOGMSG)); @@ -183,15 +130,6 @@ int XCurses_rawgetch(void) return key; } -int XCurses_get_input_fd(void) -{ - PDC_LOG(("%s:XCurses_get_input_fd() - called\n", XCLOGMSG)); - PDC_LOG(("%s:XCurses_get_input_fd() - returning %i\n", XCLOGMSG, - key_sock)); - - return key_sock; -} - bool XCurses_kbhit(void) { int s; @@ -252,31 +190,6 @@ int XCursesInstructAndWait(int flag) return OK; } -int XCurses_transform_line(const chtype *ch, int row, - int start_col, int num_cols) -{ - PDC_LOG(("%s:XCurses_transform_line() called: row %d start_col %d " - "num_cols %d flag %d\n", XCLOGMSG, row, start_col, - num_cols, *(Xcurscr + XCURSCR_FLAG_OFF + row))); - - /* loop until we can write to the line */ - - while (*(Xcurscr + XCURSCR_FLAG_OFF + row)) - dummy_function(); - - *(Xcurscr + XCURSCR_FLAG_OFF + row) = 1; - - memcpy(Xcurscr + XCURSCR_Y_OFF(row) + (start_col * sizeof(chtype)), - ch, num_cols * sizeof(chtype)); - - *(Xcurscr + XCURSCR_START_OFF + row) = start_col; - *(Xcurscr + XCURSCR_LENGTH_OFF + row) = num_cols; - - *(Xcurscr + XCURSCR_FLAG_OFF + row) = 0; - - return 0; -} - static int XCursesSetupCurses(void) { int wait_value; @@ -412,85 +325,7 @@ int XCursesInitscr(const char *display_name, int argc, char *argv[]) return rc; } -int XCurses_getclipboard(char **contents, long *length) -{ - int result = 0; - int len; - - PDC_LOG(("%s:XCurses_getclipboard() - called\n", XCLOGMSG)); - - XCursesInstructAndWait(CURSES_GET_SELECTION); - - if (read_socket(display_sock, (char *)&result, sizeof(int)) < 0) - XCursesExitCursesProcess(5, - "exiting from XCurses_getclipboard"); - - if (result == PDC_CLIP_SUCCESS) - { - if (read_socket(display_sock, (char *)&len, sizeof(int)) < 0) - XCursesExitCursesProcess(5, - "exiting from XCurses_getclipboard"); - - if (len != 0) - { - *contents = (char *)malloc(len + 1); - - if (!*contents) - XCursesExitCursesProcess(6, "exiting from " - "XCurses_getclipboard - synchronization error"); - - if (read_socket(display_sock, *contents, len) < 0) - XCursesExitCursesProcess(5, - "exiting from XCurses_getclipboard"); - - *length = len; - } - } - - return result; -} - -int XCurses_setclipboard(const char *contents, long length) -{ - int rc; - - PDC_LOG(("%s:XCurses_setclipboard() - called\n", XCLOGMSG)); - - XCursesInstruct(CURSES_SET_SELECTION); - - /* Write, then wait for X to do its stuff; expect return code. */ - - if (write_socket(display_sock, (char *)&length, sizeof(long)) >= 0) - if (write_socket(display_sock, contents, length) >= 0) - if (read_socket(display_sock, (char *)&rc, sizeof(int)) >= 0) - return rc; - - XCursesExitCursesProcess(5, "exiting from XCurses_setclipboard"); - - return ERR; /* not reached */ -} - -int XCurses_clearclipboard(void) -{ - int rc; - long len = 0; - - PDC_LOG(("%s:XCurses_clearclipboard() - called\n", XCLOGMSG)); - - XCursesInstruct(CURSES_CLEAR_SELECTION); - - /* Write, then wait for X to do its stuff; expect return code. */ - - if (write_socket(display_sock, (char *)&len, sizeof(long)) >= 0) - if (read_socket(display_sock, (char *)&rc, sizeof(int)) >= 0) - return rc; - - XCursesExitCursesProcess(5, "exiting from XCurses_clearclipboard"); - - return ERR; /* not reached */ -} - -void XCursesCleanupCursesProcess(int rc) +static void XCursesCleanupCursesProcess(int rc) { PDC_LOG(("%s:XCursesCleanupCursesProcess() - called: %d\n", XCLOGMSG, rc)); @@ -508,7 +343,7 @@ void XCursesCleanupCursesProcess(int rc) _exit(rc); } -static void XCursesExitCursesProcess(int rc, char *msg) +void XCursesExitCursesProcess(int rc, char *msg) { PDC_LOG(("%s:XCursesExitCursesProcess() - called: %d %s\n", XCLOGMSG, rc, msg));