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));