New upstream version 3.5.99.27

This commit is contained in:
geos_one
2025-08-08 20:00:36 +02:00
commit bc8d10cc33
4267 changed files with 1757978 additions and 0 deletions

91
nxcomp/include/MD5.h Normal file
View File

@@ -0,0 +1,91 @@
/*
Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com
*/
/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */
/*
Independent implementation of MD5 (RFC 1321).
This code implements the MD5 Algorithm defined in RFC 1321, whose
text is available at
http://www.ietf.org/rfc/rfc1321.txt
The code is derived from the text of the RFC, including the test suite
(section A.5) but excluding the rest of Appendix A. It does not include
any code or documentation that is identified in the RFC as being
copyrighted.
The original and principal author of md5.h is L. Peter Deutsch
<ghost@aladdin.com>. Other authors are noted in the change history
that follows (in reverse chronological order):
2002-04-13 lpd Removed support for non-ANSI compilers; removed
references to Ghostscript; clarified derivation from RFC 1321;
now handles byte order either statically or dynamically.
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
added conditionalization for C++ compilation from Martin
Purschke <purschke@bnl.gov>.
1999-05-03 lpd Original version.
*/
#ifndef md5_INCLUDED
# define md5_INCLUDED
/*
* This package supports both compile-time and run-time determination of CPU
* byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
* compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
* defined as non-zero, the code will be compiled to run only on big-endian
* CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
* run on either big- or little-endian CPUs, but will run slightly less
* efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
*/
typedef unsigned char md5_byte_t; /* 8-bit byte */
typedef unsigned int md5_word_t; /* 32-bit word */
/* Define the state of the MD5 Algorithm. */
typedef struct md5_state_s {
md5_word_t count[2]; /* message length in bits, lsw first */
md5_word_t abcd[4]; /* digest buffer */
md5_byte_t buf[64]; /* accumulate block */
} md5_state_t;
#ifdef __cplusplus
extern "C"
{
#endif
/* Initialize the algorithm. */
void md5_init(md5_state_t *pms);
/* Append a string to the message. */
void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
/* Finish the message and return the digest. */
void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* md5_INCLUDED */

474
nxcomp/include/NX.h Normal file
View File

@@ -0,0 +1,474 @@
/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* NXCOMP, NX protocol compression and NX extensions to this software */
/* are copyright of the aforementioned persons and companies. */
/* */
/* Redistribution and use of the present software is allowed according */
/* to terms specified in the file LICENSE.nxcomp which comes in the */
/* source distribution. */
/* */
/* All rights reserved. */
/* */
/* NOTE: This software has received contributions from various other */
/* contributors, only the core maintainers and supporters are listed as */
/* copyright holders. Please contact us, if you feel you should be listed */
/* as copyright holder, as well. */
/* */
/**************************************************************************/
#ifndef NX_H
#define NX_H
#ifdef __cplusplus
extern "C" {
#endif
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/select.h>
#include <sys/uio.h>
#define NX_FD_ANY -1
#define NX_MODE_ANY -1
#define NX_MODE_CLIENT 1
#define NX_MODE_SERVER 2
#define NX_DISPLAY_ANY NULL
#define NX_SIGNAL_ANY -1
#define NX_SIGNAL_ENABLE 1
#define NX_SIGNAL_DISABLE 2
#define NX_SIGNAL_RAISE 3
#define NX_SIGNAL_FORWARD 4
#define NX_POLICY_IMMEDIATE 1
#define NX_POLICY_DEFERRED 2
#define NX_ALERT_REMOTE 0
#define NX_ALERT_LOCAL 1
#define NX_HANDLER_FLUSH 0
#define NX_HANDLER_STATISTICS 1
#define NX_STATISTICS_PARTIAL 0
#define NX_STATISTICS_TOTAL 1
#define NX_CHANNEL_X11 0
#define NX_CHANNEL_CUPS 1
#define NX_CHANNEL_SMB 2
#define NX_CHANNEL_MEDIA 3
#define NX_CHANNEL_HTTP 4
#define NX_CHANNEL_FONT 5
#define NX_CHANNEL_SLAVE 6
#define NX_FILE_SESSION 0
#define NX_FILE_ERRORS 1
#define NX_FILE_OPTIONS 2
#define NX_FILE_STATS 3
/*
* The following are the new interfaces to the NX transport. The
* NX proxy software is now intended to be run as a library of a
* higher level communication manager (nxssh, nxhttp, nxrtp, etc,
* not only nxproxy). This is a work-in-progress, so expect these
* interfaces to change in future. At the present moment, as an
* example, there is no provision for creating and managing mul-
* tiple proxy connections.
*/
/*
* Attach a NX transport to the provided descriptor. This should be
* done after having created a pair of connected sockets.
*/
extern int NXTransCreate(int fd, int mode, const char *options);
/*
* Tell the proxy to use the second descriptor as its own end of
* the internal connection to the NX agent. The NX agent will use
* the first descriptor. Setting an agent connection will have the
* effect of disabling further X client connections and, if it is
* possible, will trigger the use of the memory-to-memory transport.
*/
extern int NXTransAgent(int fd[2]);
/*
* Prepare the file sets and the timeout for a later execution of
* the select(). The masks and the timeout must persist across all
* the calls, so if you don't need any of the values, it is requi-
* red that you create empty masks and a default timeout. To save
* a check at each run, all the functions below assume that valid
* pointers are passed.
*/
extern int NXTransPrepare(int *maxfds, fd_set *readfds,
fd_set *writefds, struct timeval *timeout);
/*
* Call select() to find out the descriptors in the sets having
* pending data.
*/
extern int NXTransSelect(int *result, int *error, int *maxfds, fd_set *readfds,
fd_set *writefds, struct timeval *timeout);
/*
* Perform the required I/O on all the NX descriptors having pen-
* ding data. This can include reading and writing to the NX chan-
* nels, encoding and decoding the proxy data or managing any of
* the other NX resources.
*/
extern int NXTransExecute(int *result, int *error, int *maxfds, fd_set *readfds,
fd_set *writefds, struct timeval *timeout);
/*
* Run an empty loop, giving to the NX transport a chance to check
* its descriptors.
*/
extern int NXTransContinue(struct timeval *timeout);
/*
* Perform I/O on the given descriptors. If memory-to-memory trans-
* port has been activated and the descriptor is recognized as a
* valid agent connection, then the functions will read and write
* the data directly to the proxy buffer, otherwise the correspond-
* ing network operation will be performed.
*/
extern int NXTransRead(int fd, char *data, int size);
extern int NXTransWrite(int fd, char *data, int size);
extern int NXTransReadable(int fd, int *readable);
extern int NXTransReadVector(int fd, struct iovec *iovdata, int iovsize);
extern int NXTransWriteVector(int fd, struct iovec *iovdata, int iovsize);
extern int NXTransClose(int fd);
/*
* Return true if the NX transport is running. The fd parameter can
* be either the local descriptor attached to the NX transport or
* NX_FD_ANY.
*/
extern int NXTransRunning(int fd);
/*
* Close down the NX transport and free all the allocated resources.
* The fd parameter can be either the local descriptor or NX_FD_ANY.
* This must be explicitly called by the agent before the proxy can
* start the tear down procedure.
*/
extern int NXTransDestroy(int fd);
/*
* Tell to the proxy how to handle the standard POSIX signals. For
* example, given the SIGINT signal, the caller can specify any of
* the following actions:
*
* NX_SIGNAL_ENABLE: A signal handler will have to be installed by
* the library, so that it can be intercepted by
* the proxy.
*
* NX_SIGNAL_DISABLE: The signal will be handled by the caller and,
* eventually, forwarded to the proxy by calling
* NXTransSignal() explicitly.
*
* NX_SIGNAL_RAISE: The signal must be handled now, as if it had
* been delivered by the operating system. This
* function can be called by the agent with the
* purpose of propagating a signal to the proxy.
*
* NX_SIGNAL_FORWARD: A signal handler will have to be installed by
* the library but the library will have to call
* the original signal handler when the signal
* is received.
*
* As a rule of thumb, agents should let the proxy handle SIGUSR1
* and SIGUSR2, used for producing the NX protocol statistics, and
* SIGHUP, used for disconnecting the NX transport.
*
* The following signals are blocked by default upon creation of the
* NX transport:
*
* SIGCHLD These signals should be always put under the control
* SIGUSR1 of the proxy. If agents are intercepting them, agents
* SIGUSR2 should later call NXTransSignal(..., NX_SIGNAL_RAISE)
* SIGHUP to forward the signal to the proxy. As an alternative
* they can specify a NX_SIGNAL_FORWARD action, so they,
* in turn, can be notified about the signal. This can
* be especially useful for SIGCHLD.
*
* SIGINT These signals should be intercepted by agents. Agents
* SIGTERM should ensure that NXTransDestroy() is called before
* exiting, to give the proxy a chance to shut down the
* NX transport.
*
* SIGPIPE This signal is blocked by the proxy, but not used to
* implement any functionality. It can be handled by the
* NX agent without affecting the proxy.
*
* SIGALRM This is now used by the proxy and agents should not
* redefine it. Agents can use the signal to implement
* their own timers but should not interleave calls to
* the NX transport and should restore the old handler
* when the timeout is raised.
*
* SIGVTALRM These signals are not used but may be used in future
* SIGWINCH versions of the library.
* SIGIO
* SIGTSTP
* SIGTTIN
* SIGTTOU
*
* By calling NXTransSignal(..., NX_SIGNAL_DISABLE) nxcomp will res-
* tore the signal handler that was saved at the time the proxy hand-
* ler was installed. This means that you should call the function
* just after the XOpenDisplay() or any other function used to init-
* ialize the NX transport.
*/
extern int NXTransSignal(int signal, int action);
/*
* Return a value between 0 and 9 indicating the congestion level
* based on the tokens still available. A value of 9 means that
* the link is congested and no further data can be sent.
*/
extern int NXTransCongestion(int fd);
/*
* Let the application to be notified by the proxy when an event oc-
* curs. The parameter, as set at the time the handler is installed,
* is passed each time to the callback function. The parameter is
* presumably the display pointer, given that at the present moment
* the NX transport doesn't have access to the display structure and
* so wouldn't be able to determine the display to pass to the call-
* back function.
*
* NX_HANDLER_FLUSH: The handler function is called when some
* more data has been written to the proxy
* link.
*
* The data is the number of bytes written.
*
* NX_HANDLER_STATISTICS: This handler is called to let the agent
* include arbitrary data in the transport
* statistics. The parameter, in this case,
* is a pointer to a pointer to a null term-
* inated string. The pointer is set at the
* time the handler is registered. The point-
* ed string will have to be filled by the
* agent with its statistics data.
*
* The data can be NX_STATISTICS_PARTIAL or NX_STATISTICS_TOTAL. The
* agent can refer to the value by using the NXStatisticsPartial and
* NXStatisticsTotal constants defined in NXvars.h.
*
* Note that these interfaces are used by Xlib and nxcompext. Agents
* should never call these interfaces directly, but use the nxcompext
* wrapper.
*/
extern int NXTransHandler(int fd, int type, void (*handler)(void *parameter,
int reason), void *parameter);
/*
* Set the policy to be used by the NX transport to write data to the
* proxy link:
*
* NX_POLICY_IMMEDIATE: When set to immediate, the proxy will try to
* write the data just after having encoded it.
*
* NX_POLICY_DEFERRED: When policy is set to deferred, data will be
* accumulated in a buffer and written to the
* remote proxy when NXTransFlush() is called by
* the agent.
*/
extern int NXTransPolicy(int fd, int type);
/*
* Query the number of bytes that have been accumulated for a deferred
* flush.
*/
extern int NXTransFlushable(int fd);
/*
* Tell to the NX transport to write all the accumulated data to the
* remote proxy.
*/
extern int NXTransFlush(int fd);
/*
* Create a new channel of the given type. It returns 1 on success,
* 0 if the NX transport is not running, or -1 in the case of error.
* On success, the descriptor provided by the caller can be later
* used for the subsequent I/O. The type parameter not only tells to
* the proxy the remote port where the channel has to be connected,
* but also gives a hint about the type of data that will be carried
* by the channel, so that the proxy can try to optimize the traffic
* on the proxy link.
*
* NX_CHANNEL_X: The channel will carry X traffic and it
* will be connected to the remote X display.
*
* NX_CHANNEL_CUPS: The channel will carry CUPS/IPP protocol.
*
* NX_CHANNEL_SMB: The channel will carry SMB/CIFS protocol.
*
* NX_CHANNEL_MEDIA: The channel will transport audio or other
* multimedia data.
*
* NX_CHANNEL_HTTP: The channel will carry HTTP protocol.
*
* NX_CHANNEL_FONT: The channel will forward a X font server
* connection.
*
* NX_CHANNEL_SLAVE: The channel will forward data to a remote slave
* command (see NX_SLAVE_CMD environment variable)
*
* Only a proxy running at the NX server/X client side will be able
* to create a X, CUPS, SMB, MEDIA and HTTP channel. A proxy running
* at the NX client/X server side can create font server connections.
* The channel creation will also fail if the remote end has not been
* set up to forward the connection.
*
* To create a new channel the agent will have to set up a socketpair
* and pass to the proxy one of the socket descriptors.
*
* Example:
*
* #include <sys/types.h>
* #include <sys/socket.h>
*
* int fds[2];
*
* if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fds) < 0)
* {
* ...
* }
* else
* {
* //
* // Use fds[0] locally and let the
* // proxy use fds[1].
* //
*
* if (NXTransChannel(NX_FD_ANY, fds[1], NX_CHANNEL_X) <= 0)
* {
* ...
* }
*
* //
* // The agent can now use fds[0] in
* // read(), write() and select()
* // system calls.
* //
*
* ...
* }
*
* Note that all the I/O on the descriptor should be non-blocking, to
* give a chance to the NX transport to run in the background and handle
* the data that will be fed to the agent's side of the socketpair. This
* will happen automatically, as long as the agent uses the XSelect()
* version of the select() function (as it is normal whenever performing
* Xlib I/O). In all the other cases, like presumably in the agent's main
* loop, the agent will have to loop through NXTransPrepare(), NXTrans-
* Select() and NXTransExecute() functions explicitly, adding to the sets
* the descriptors that are awaited by the agent. Please check the imple-
* mentation of _XSelect() in nx-X11/lib/X11/XlibInt.c for an example.
*/
extern int NXTransChannel(int fd, int channelfd, int type);
/*
* Return the name of the files used by the proxy for the current session.
*
* The type parameter can be:
*
* NX_FILE_SESSION: Usually the file 'session' in the user's session
* directory.
*
* NX_FILE_ERRORS: The file used for the diagnostic output. Usually
* the file 'errors' in the session directory.
*
* NX_FILE_OPTIONS: The file containing the NX options, if any.
*
* NX_FILE_STATS: The file used for the statistics output.
*
* The returned string is allocated in static memory. The caller should
* copy the string upon returning from the function, without freeing the
* pointer.
*/
extern const char *NXTransFile(int type);
/*
* Return the time in milliseconds elapsed since the last call to this
* same function.
*/
extern long NXTransTime(void);
/*
* Other interfaces to the internal transport functions.
*/
extern int NXTransProxy(int fd, int mode, const char *display);
extern int NXTransClient(const char *display);
extern int NXTransDialog(const char *caption, const char *message,
const char *window, const char *type, int local,
const char *display);
extern int NXTransAlert(int code, int local);
extern int NXTransWatchdog(int timeout);
extern int NXTransKeeper(int caches, int images, const char *root);
extern void NXTransExit(int code) __attribute__((noreturn));
extern int NXTransParseCommandLine(int argc, const char **argv);
extern int NXTransParseEnvironment(const char *env, int force);
extern void NXTransCleanup(void) __attribute__((noreturn));
/*
* Cleans up the global and local state
* (the same way as NXTransCleanup does)
* but does not exit the process
* Needed for IOS platform
*/
extern void NXTransCleanupForReconnect(void);
extern const char* NXVersion(void);
extern int NXMajorVersion(void);
extern int NXMinorVersion(void);
extern int NXPatchVersion(void);
extern int NXMaintenancePatchVersion(void);
#ifdef __cplusplus
}
#endif
#endif /* NX_H */

276
nxcomp/include/NXalert.h Normal file
View File

@@ -0,0 +1,276 @@
/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* NXCOMP, NX protocol compression and NX extensions to this software */
/* are copyright of the aforementioned persons and companies. */
/* */
/* Redistribution and use of the present software is allowed according */
/* to terms specified in the file LICENSE.nxcomp which comes in the */
/* source distribution. */
/* */
/* All rights reserved. */
/* */
/* NOTE: This software has received contributions from various other */
/* contributors, only the core maintainers and supporters are listed as */
/* copyright holders. Please contact us, if you feel you should be listed */
/* as copyright holder, as well. */
/* */
/**************************************************************************/
#ifndef NXalert_H
#define NXalert_H
#define ALERT_CAPTION_PREFIX "NX - "
#define INTERNAL_ERROR_ALERT 1
#define INTERNAL_ERROR_ALERT_TYPE "error"
#define INTERNAL_ERROR_ALERT_STRING \
"\
An unrecoverable internal error was detected.\n\
Press OK to terminate the current session.\n\
"
#define CLOSE_DEAD_X_CONNECTION_CLIENT_ALERT 2
#define CLOSE_DEAD_X_CONNECTION_CLIENT_ALERT_TYPE "yesno"
#define CLOSE_DEAD_X_CONNECTION_CLIENT_ALERT_STRING \
"\
One of the applications currently in use is not responding.\n\
Do you want to terminate the current session?\n\
"
#define CLOSE_DEAD_X_CONNECTION_SERVER_ALERT 3
#define CLOSE_DEAD_X_CONNECTION_SERVER_ALERT_TYPE "yesno"
#define CLOSE_DEAD_X_CONNECTION_SERVER_ALERT_STRING \
"\
One of the applications did not behave correctly and caused\n\
the X server to stop responding in a timely fashion. Do you\n\
want to terminate the current session?\n\
"
#define CLOSE_DEAD_PROXY_CONNECTION_CLIENT_ALERT 4
#define CLOSE_DEAD_PROXY_CONNECTION_CLIENT_ALERT_TYPE NULL
#define CLOSE_DEAD_PROXY_CONNECTION_CLIENT_ALERT_STRING NULL
#define CLOSE_DEAD_PROXY_CONNECTION_SERVER_ALERT 5
#define CLOSE_DEAD_PROXY_CONNECTION_SERVER_ALERT_TYPE "yesno"
#define CLOSE_DEAD_PROXY_CONNECTION_SERVER_ALERT_STRING \
"\
No response received from the remote server.\n\
Do you want to terminate the current session?\n\
"
#define RESTART_DEAD_PROXY_CONNECTION_CLIENT_ALERT 6
#define RESTART_DEAD_PROXY_CONNECTION_CLIENT_ALERT_TYPE NULL
#define RESTART_DEAD_PROXY_CONNECTION_CLIENT_ALERT_STRING NULL
#define RESTART_DEAD_PROXY_CONNECTION_SERVER_ALERT 7
#define RESTART_DEAD_PROXY_CONNECTION_SERVER_ALERT_TYPE "yesno"
#define RESTART_DEAD_PROXY_CONNECTION_SERVER_ALERT_STRING \
"\
Connection with remote server was shut down. NX will try\n\
to establish a new server connection. Session could have\n\
been left in a unusable state. Do you want to terminate\n\
the session?\n\
"
#define CLOSE_UNRESPONSIVE_X_SERVER_ALERT 8
#define CLOSE_UNRESPONSIVE_X_SERVER_ALERT_TYPE "panic"
#define CLOSE_UNRESPONSIVE_X_SERVER_ALERT_STRING \
"\
You pressed the key sequence CTRL+ALT+SHIFT+ESC.\n\
This is probably because your X server has become\n\
unresponsive. Session will be terminated in 30\n\
seconds unless you abort the procedure by pressing\n\
the Cancel button.\n\
"
#define WRONG_PROXY_VERSION_ALERT 9
#define WRONG_PROXY_VERSION_ALERT_TYPE "ok"
#define WRONG_PROXY_VERSION_ALERT_STRING \
"\
Local NX libraries version " VERSION " do not match the NX\n\
version of the remote server. Please check the error\n\
log on the server to find out which client version you\n\
need to install to be able to access this server.\n\
"
#define FAILED_PROXY_CONNECTION_CLIENT_ALERT 10
#define FAILED_PROXY_CONNECTION_CLIENT_ALERT_TYPE NULL
#define FAILED_PROXY_CONNECTION_CLIENT_ALERT_STRING NULL
#define FAILED_PROXY_CONNECTION_SERVER_ALERT 11
#define FAILED_PROXY_CONNECTION_SERVER_ALERT_TYPE "yesno"
#define FAILED_PROXY_CONNECTION_SERVER_ALERT_STRING \
"\
Could not yet establish the connection to the remote\n\
proxy. Do you want to terminate the current session?\n\
"
#define MISSING_PROXY_CACHE_ALERT 12
#define MISSING_PROXY_CACHE_ALERT_TYPE "ok"
#define MISSING_PROXY_CACHE_ALERT_STRING \
"\
NX was unable to negotiate a cache for this session.\n\
This may happen if this is the first time you run a\n\
session on this server or if cache was corrupted or\n\
produced by an incompatible NX version.\n\
"
#define ABORT_PROXY_CONNECTION_ALERT 13
#define ABORT_PROXY_CONNECTION_ALERT_TYPE "ok"
#define ABORT_PROXY_CONNECTION_ALERT_STRING \
"\
The connection with the remote server was shut down.\n\
Please check the state of your network connection.\n\
"
/*
* The one below is a special alert, used to close
* a previous alert that is running on the given
* side. This can be used to get rid of a message
* that has ceased to hold true.
*/
#define DISPLACE_MESSAGE_ALERT 14
#define DISPLACE_MESSAGE_ALERT_TYPE NULL
#define DISPLACE_MESSAGE_ALERT_STRING NULL
/*
* These are the other alert messages that were
* added in the 1.5.0 release. The first is never
* shown and is intended just for testing.
*/
#define GREETING_MESSAGE_ALERT 15
#define GREETING_MESSAGE_ALERT_TYPE "ok"
#define GREETING_MESSAGE_ALERT_STRING \
"\
Welcome to NX from the NoMachine team. We really\n\
hope you will enjoy this wonderful software as much\n\
as we had fun making it ;-).\n\
"
/*
* These alerts are intended to notify the user
* of the reason why the agent failed to resume
* the session.
*/
#define START_RESUME_SESSION_ALERT 16
#define START_RESUME_SESSION_ALERT_TYPE "ok"
#define START_RESUME_SESSION_ALERT_STRING \
"\
You appear to run your NX session across a slow network\n\
connection. Resuming the session may require some time.\n\
Please wait.\
"
#define FAILED_RESUME_DISPLAY_ALERT 17
#define FAILED_RESUME_DISPLAY_ALERT_TYPE "error"
#define FAILED_RESUME_DISPLAY_ALERT_STRING \
"\
Failed to open the display. Can't resume the NX\n\
session on this display.\n\
"
#define FAILED_RESUME_DISPLAY_BROKEN_ALERT 18
#define FAILED_RESUME_DISPLAY_BROKEN_TYPE "error"
#define FAILED_RESUME_DISPLAY_BROKEN_STRING \
"\
The display connection was broken while trying to\n\
resume the session. Please, check your network\n\
connection and try again.\n\
"
#define FAILED_RESUME_VISUALS_ALERT 19
#define FAILED_RESUME_VISUALS_ALERT_TYPE "error"
#define FAILED_RESUME_VISUALS_ALERT_STRING \
"\
Failed to restore all the required visuals.\n\
Can't resume the NX session on this display.\n\
"
#define FAILED_RESUME_COLORMAPS_ALERT 20
#define FAILED_RESUME_COLORMAPS_ALERT_TYPE "error"
#define FAILED_RESUME_COLORMAPS_ALERT_STRING \
"\
The number of available colormaps is different\n\
on the new display. Can't resume the NX session\n\
on this display.\n\
"
#define FAILED_RESUME_PIXMAPS_ALERT 21
#define FAILED_RESUME_PIXMAPS_ALERT_TYPE "error"
#define FAILED_RESUME_PIXMAPS_ALERT_STRING \
"\
Failed to restore all the required pixmap formats.\n\
Can't resume the NX session on this display.\n\
"
#define FAILED_RESUME_DEPTHS_ALERT 22
#define FAILED_RESUME_DEPTHS_ALERT_TYPE "error"
#define FAILED_RESUME_DEPTHS_ALERT_STRING \
"\
Failed to restore all the required screen depths.\n\
Can't resume the NX session on this display.\n\
"
#define FAILED_RESUME_RENDER_ALERT 23
#define FAILED_RESUME_RENDER_ALERT_TYPE "error"
#define FAILED_RESUME_RENDER_ALERT_STRING \
"\
The render extension is missing or an incompatible\n\
version was detected on your X server. Can't resume\n\
the NX session on this display.\n\
"
#define FAILED_RESUME_FONTS_ALERT 24
#define FAILED_RESUME_FONTS_ALERT_TYPE "error"
#define FAILED_RESUME_FONTS_ALERT_STRING \
"\
One or more of the fonts that are in use by the\n\
session are missing. Can't resume the NX session\n\
on this display.\n\
"
#define ABORT_PROXY_NEGOTIATION_ALERT 62
#define ABORT_PROXY_NEGOTIATION_ALERT_TYPE "ok"
#define ABORT_PROXY_NEGOTIATION_ALERT_STRING \
"\
The remote proxy closed the connection while negotiating\n\
the session. This may be due to the wrong authentication\n\
credentials passed to the server.\n\
"
#define ABORT_PROXY_SHUTDOWN_ALERT 64
#define ABORT_PROXY_SHUTDOWN_ALERT_TYPE "ok"
#define ABORT_PROXY_SHUTDOWN_ALERT_STRING \
"\
No response received from the remote proxy while\n\
waiting for the session shutdown.\n\
"
#define FAILED_XDMCP_CONNECTION_ALERT 65
#define FAILED_XDMCP_CONNECTION_ALERT_TYPE "ok"
#define FAILED_XDMCP_CONNECTION_ALERT_STRING \
"\
The XDM host that was contacted by the NX server doesn't\n\
seem to be able to start the session. Please check your\n\
server configuration.\n\
"
/*
* Used to handle the backward compatibility.
* Update the numbers if you add a new alert.
*/
#define LAST_PROTO_STEP_6_ALERT 63
#define LAST_PROTO_STEP_7_ALERT 65
#endif /* NXalert_H */

141
nxcomp/include/NXpack.h Normal file
View File

@@ -0,0 +1,141 @@
/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* NXCOMP, NX protocol compression and NX extensions to this software */
/* are copyright of the aforementioned persons and companies. */
/* */
/* Redistribution and use of the present software is allowed according */
/* to terms specified in the file LICENSE.nxcomp which comes in the */
/* source distribution. */
/* */
/* All rights reserved. */
/* */
/* NOTE: This software has received contributions from various other */
/* contributors, only the core maintainers and supporters are listed as */
/* copyright holders. Please contact us, if you feel you should be listed */
/* as copyright holder, as well. */
/* */
/**************************************************************************/
#ifndef NXpack_H
#define NXpack_H
#ifdef __cplusplus
extern "C" {
#endif
#define MASK_METHOD_LIMIT 10
#define NO_MASK 0
#define MASK_8_COLORS 1
#define MASK_64_COLORS 2
#define MASK_256_COLORS 3
#define MASK_512_COLORS 4
#define MASK_4K_COLORS 5
#define MASK_32K_COLORS 6
#define MASK_64K_COLORS 7
#define MASK_256K_COLORS 8
#define MASK_2M_COLORS 9
#define MASK_16M_COLORS 10
#define PACK_METHOD_LIMIT 128
#define NO_PACK 0
#define PACK_MASKED_8_COLORS 1
#define PACK_MASKED_64_COLORS 2
#define PACK_MASKED_256_COLORS 3
#define PACK_MASKED_512_COLORS 4
#define PACK_MASKED_4K_COLORS 5
#define PACK_MASKED_32K_COLORS 6
#define PACK_MASKED_64K_COLORS 7
#define PACK_MASKED_256K_COLORS 8
#define PACK_MASKED_2M_COLORS 9
#define PACK_MASKED_16M_COLORS 10
#define PACK_RAW_8_BITS 3
#define PACK_RAW_16_BITS 7
#define PACK_RAW_24_BITS 10
#define PACK_COLORMAP_256_COLORS 11
#define PACK_JPEG_8_COLORS 26
#define PACK_JPEG_64_COLORS 27
#define PACK_JPEG_256_COLORS 28
#define PACK_JPEG_512_COLORS 29
#define PACK_JPEG_4K_COLORS 30
#define PACK_JPEG_32K_COLORS 31
#define PACK_JPEG_64K_COLORS 32
#define PACK_JPEG_256K_COLORS 33
#define PACK_JPEG_2M_COLORS 34
#define PACK_JPEG_16M_COLORS 35
#define PACK_PNG_8_COLORS 37
#define PACK_PNG_64_COLORS 38
#define PACK_PNG_256_COLORS 39
#define PACK_PNG_512_COLORS 40
#define PACK_PNG_4K_COLORS 41
#define PACK_PNG_32K_COLORS 42
#define PACK_PNG_64K_COLORS 43
#define PACK_PNG_256K_COLORS 44
#define PACK_PNG_2M_COLORS 45
#define PACK_PNG_16M_COLORS 46
#define PACK_RGB_16M_COLORS 63
#define PACK_RLE_16M_COLORS 64
#define PACK_ALPHA 65
#define PACK_COLORMAP 66
#define PACK_BITMAP_16M_COLORS 67
/*
* Not really pack methods. These values
* allow dynamic selection of the pack
* method by the agent.
*/
#define PACK_NONE 0
#define PACK_LOSSY 253
#define PACK_LOSSLESS 254
#define PACK_ADAPTIVE 255
/*
* Reduce the number of colors in the
* image by applying a mask.
*/
typedef struct
{
unsigned int color_mask;
unsigned int correction_mask;
unsigned int white_threshold;
unsigned int black_threshold;
} ColorMask;
extern const ColorMask Mask8TrueColor;
extern const ColorMask Mask64TrueColor;
extern const ColorMask Mask512TrueColor;
extern const ColorMask Mask4KTrueColor;
extern const ColorMask Mask32KTrueColor;
extern const ColorMask Mask256KTrueColor;
extern const ColorMask Mask2MTrueColor;
extern const ColorMask Mask16MTrueColor;
const ColorMask *MethodColorMask(unsigned int method);
int MethodBitsPerPixel(unsigned int method);
#ifdef __cplusplus
}
#endif
#endif /* NXpack_H */

447
nxcomp/include/NXproto.h Normal file
View File

@@ -0,0 +1,447 @@
/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* NXCOMP, NX protocol compression and NX extensions to this software */
/* are copyright of the aforementioned persons and companies. */
/* */
/* Redistribution and use of the present software is allowed according */
/* to terms specified in the file LICENSE.nxcomp which comes in the */
/* source distribution. */
/* */
/* All rights reserved. */
/* */
/* NOTE: This software has received contributions from various other */
/* contributors, only the core maintainers and supporters are listed as */
/* copyright holders. Please contact us, if you feel you should be listed */
/* as copyright holder, as well. */
/* */
/**************************************************************************/
#ifndef NXproto_H
#define NXproto_H
#ifdef __cplusplus
extern "C" {
#endif
#include <X11/X.h>
#include <X11/Xmd.h>
#include <X11/Xproto.h>
/*
* Force the size to match the wire protocol.
*/
#define Drawable CARD32
#define GContext CARD32
#define sz_xNXGetControlParametersReq 4
#define sz_xNXGetCleanupParametersReq 4
#define sz_xNXGetImageParametersReq 4
#define sz_xNXGetUnpackParametersReq 8
#define sz_xNXGetShmemParametersReq 16
#define sz_xNXGetFontParametersReq 4
#define sz_xNXSetExposeParametersReq 8
#define sz_xNXSetCacheParametersReq 8
#define sz_xNXStartSplitReq 8
#define sz_xNXEndSplitReq 4
#define sz_xNXCommitSplitReq 12
#define sz_xNXSetUnpackGeometryReq 24
#define sz_xNXSetUnpackColormapReq 16
#define sz_xNXSetUnpackAlphaReq 16
#define sz_xNXPutPackedImageReq 40
#define sz_xNXFreeUnpackReq 4
#define sz_xNXFinishSplitReq 4
#define sz_xNXAbortSplitReq 4
#define sz_xNXFreeSplitReq 4
#define sz_xGetControlParametersReply 32
#define sz_xGetCleanupParametersReply 32
#define sz_xGetImageParametersReply 32
#define sz_xGetUnpackParametersReply 32
#define sz_xGetShmemParametersReply 32
#define LINK_TYPE_LIMIT 5
#define LINK_TYPE_NONE 0
#define LINK_TYPE_MODEM 1
#define LINK_TYPE_ISDN 2
#define LINK_TYPE_ADSL 3
#define LINK_TYPE_WAN 4
#define LINK_TYPE_LAN 5
/*
* NX Replies.
*/
/*
* The following reply has 4 new boolean
* fields in the last protocol version.
*/
typedef struct _NXGetControlParametersReply {
BYTE type; /* Is X_Reply. */
CARD8 linkType;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
CARD8 localMajor;
CARD8 localMinor;
CARD8 localPatch;
CARD8 remoteMajor;
CARD8 remoteMinor;
CARD8 remotePatch;
CARD16 splitTimeout B16;
CARD16 motionTimeout B16;
CARD8 splitMode;
CARD8 pad1;
CARD32 splitSize B32;
CARD8 packMethod;
CARD8 packQuality;
CARD8 dataLevel;
CARD8 streamLevel;
CARD8 deltaLevel;
CARD8 loadCache;
CARD8 saveCache;
CARD8 startupCache;
} xNXGetControlParametersReply;
typedef struct _NXGetCleanupParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
BOOL cleanGet;
BOOL cleanAlloc;
BOOL cleanFlush;
BOOL cleanSend;
BOOL cleanImages;
BYTE pad1, pad2, pad3;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
} xNXGetCleanupParametersReply;
typedef struct _NXGetImageParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
BOOL imageSplit;
BOOL imageMask;
BOOL imageFrame;
CARD8 imageMaskMethod;
CARD8 imageSplitMethod;
BYTE pad1, pad2, pad3;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
} xNXGetImageParametersReply;
/*
* Data is made of PACK_METHOD_LIMIT values of
* type BOOL telling which unpack capabilities
* are implemented in proxy.
*/
typedef struct _NXGetUnpackParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is PACK_METHOD_LIMIT / 4 from NXpack.h. */
CARD8 entries; /* Is PACK_METHOD_LIMIT. */
BYTE pad1, pad2, pad3;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
CARD32 pad8 B32;
} xNXGetUnpackParametersReply;
typedef struct _NXGetShmemParametersReply {
BYTE type; /* Is X_Reply. */
CARD8 stage; /* As in the corresponding request. */
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is 0. */
BOOL clientEnabled; /* SHM on path agent to proxy. */
BOOL serverEnabled; /* SHM on path proxy to X server. */
BYTE pad1, pad2; /* Previous values can be checked */
CARD32 clientSize B32; /* at end of stage 2. */
CARD32 serverSize B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
CARD32 pad5 B32;
} xNXGetShmemParametersReply;
typedef struct _NXGetFontParametersReply {
BYTE type; /* Is X_Reply. */
BYTE pad1;
CARD16 sequenceNumber B16;
CARD32 length B32; /* Is length of path string + 1 / 4. */
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
CARD32 pad5 B32;
CARD32 pad6 B32;
CARD32 pad7 B32;
} xNXGetFontParametersReply;
/*
* NX Requests.
*/
typedef struct _NXGetControlParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
} xNXGetControlParametersReq;
typedef struct _NXGetCleanupParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
} xNXGetCleanupParametersReq;
typedef struct _NXGetImageParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
} xNXGetImageParametersReq;
typedef struct _NXGetUnpackParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
CARD8 entries;
BYTE pad1, pad2, pad3;
} xNXGetUnpackParametersReq;
typedef struct _NXGetShmemParametersReq {
CARD8 reqType;
CARD8 stage; /* It is between 0 and 2. */
CARD16 length B16;
BOOL enableClient; /* X client side support is */
BOOL enableServer; /* not implemented yet. */
BYTE pad1, pad2;
CARD32 clientSegment; /* XID identifying the shared */
CARD32 serverSegment; /* memory segments. */
} xNXGetShmemParametersReq;
typedef struct _NXGetFontParametersReq {
CARD8 reqType;
CARD8 pad;
CARD16 length B16;
} xNXGetFontParametersReq;
/*
* The available split modes.
*/
#define NXSplitModeDefault 0
#define NXSplitModeAsync 1
#define NXSplitModeSync 2
typedef struct _NXStartSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 mode;
BYTE pad1, pad2, pad3;
} xNXStartSplitReq;
typedef struct _NXEndSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXEndSplitReq;
typedef struct _NXCommitSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 propagate;
CARD8 request;
BYTE pad1, pad2;
CARD32 position B32;
} xNXCommitSplitReq;
typedef struct _NXFinishSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXFinishSplitReq;
typedef struct _NXAbortSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXAbortSplitReq;
typedef struct _NXFreeSplitReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXFreeSplitReq;
typedef struct _NXSetExposeParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
BOOL expose;
BOOL graphicsExpose;
BOOL noExpose;
BYTE pad1;
} xNXSetExposeParametersReq;
typedef struct _NXSetCacheParametersReq {
CARD8 reqType;
BYTE pad;
CARD16 length B16;
BOOL enableCache;
BOOL enableSplit;
BOOL enableSave;
BOOL enableLoad;
} xNXSetCacheParametersReq;
typedef struct _NXSetUnpackGeometryReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 depth1Bpp;
CARD8 depth4Bpp;
CARD8 depth8Bpp;
CARD8 depth16Bpp;
CARD8 depth24Bpp;
CARD8 depth32Bpp;
BYTE pad1, pad2;
CARD32 redMask B32;
CARD32 greenMask B32;
CARD32 blueMask B32;
} xNXSetUnpackGeometryReq;
typedef struct _NXSetUnpackColormapReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 method;
BYTE pad1, pad2, pad3;
CARD32 srcLength B32;
CARD32 dstLength B32;
} xNXSetUnpackColormapReq;
typedef struct _NXSetUnpackAlphaReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
CARD8 method;
BYTE pad1, pad2, pad3;
CARD32 srcLength B32;
CARD32 dstLength B32;
} xNXSetUnpackAlphaReq;
typedef struct _NXPutPackedImageReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
Drawable drawable B32;
GContext gc B32;
CARD8 method;
CARD8 format;
CARD8 srcDepth;
CARD8 dstDepth;
CARD32 srcLength B32;
CARD32 dstLength B32;
INT16 srcX B16, srcY B16;
CARD16 srcWidth B16, srcHeight B16;
INT16 dstX B16, dstY B16;
CARD16 dstWidth B16, dstHeight B16;
} xNXPutPackedImageReq;
typedef struct _NXFreeUnpackReq {
CARD8 reqType;
CARD8 resource;
CARD16 length B16;
} xNXFreeUnpackReq;
/*
* The X_NXSplitData and X_NXSplitEvent opcodes
* are used internally and are ignored if coming
* from the agent.
*/
#define X_NXInternalGenericData 0
#define X_NXInternalGenericReply 1
#define X_NXInternalGenericRequest 255
#define X_NXInternalShapeExtension 128
#define X_NXInternalRenderExtension 129
#define X_NXFirstOpcode 230
#define X_NXLastOpcode 252
#define X_NXGetControlParameters 230
#define X_NXGetCleanupParameters 231
#define X_NXGetImageParameters 232
#define X_NXGetUnpackParameters 233
#define X_NXStartSplit 234
#define X_NXEndSplit 235
#define X_NXSplitData 236
#define X_NXCommitSplit 237
#define X_NXSetExposeParameters 240
#define X_NXSetUnpackGeometry 241
#define X_NXSetUnpackColormap 242
#define X_NXPutPackedImage 243
#define X_NXSplitEvent 244
#define X_NXGetShmemParameters 245
#define X_NXSetUnpackAlpha 246
#define X_NXFreeUnpack 247
#define X_NXFinishSplit 248
#define X_NXAbortSplit 249
#define X_NXFreeSplit 250
#define X_NXGetFontParameters 251
#define X_NXSetCacheParameters 252
/*
* The following events are received by the agent
* in the form of a ClientMessage with the value
* 0 in fields atom and window. The format is
* always 32. Event specific data starts at byte
* offset 12.
*
* These events are sent by the NX transport to
* notify the agent about the result of a split
* operation.
*/
#define NXNoSplitNotify 1
#define NXStartSplitNotify 2
#define NXCommitSplitNotify 3
#define NXEndSplitNotify 4
#define NXEmptySplitNotify 5
/*
* Notifications of collect events. These events
* don't come from the NX transport but are put
* back in client's event queue by NXlib.
*/
#define NXCollectImageNotify 8
#define NXCollectPropertyNotify 9
#define NXCollectGrabPointerNotify 10
#define NXCollectInputFocusNotify 11
#undef Drawable
#undef GContext
#ifdef __cplusplus
}
#endif
#endif /* NXproto_H */

201
nxcomp/include/NXvars.h Normal file
View File

@@ -0,0 +1,201 @@
/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2017 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2014-2022 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2014-2019 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2011-2022 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* NXCOMP, NX protocol compression and NX extensions to this software */
/* are copyright of the aforementioned persons and companies. */
/* */
/* Redistribution and use of the present software is allowed according */
/* to terms specified in the file LICENSE.nxcomp which comes in the */
/* source distribution. */
/* */
/* All rights reserved. */
/* */
/* NOTE: This software has received contributions from various other */
/* contributors, only the core maintainers and supporters are listed as */
/* copyright holders. Please contact us, if you feel you should be listed */
/* as copyright holder, as well. */
/* */
/**************************************************************************/
#ifndef NXvars_H
#define NXvars_H
/*
* This can be included by the proxy or another
* layer that doesn't use Xlib.
*/
#if !defined(_XLIB_H_) && !defined(_XKBSRV_H_)
#define NeedFunctionPrototypes 1
#define Display void
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* Display flush policies.
*/
#define NXPolicyImmediate 1
#define NXPolicyDeferred 2
/*
* Type of flush.
*/
#define NXFlushBuffer 0
#define NXFlushLink 1
/*
* Type of statistics.
*/
#define NXStatisticsPartial 0
#define NXStatisticsTotal 1
/*
* Reason why the display is blocking.
*/
#define NXBlockRead 1
#define NXBlockWrite 2
/*
* Set if the client is interested in ignoring
* the display error and continue with the exe-
* cution of the program. By default the usual
* Xlib behaviour is gotten, and the library
* will call an exit().
*/
extern int _NXHandleDisplayError;
/*
* The function below is called whenever Xlib is
* going to perform an I/O operation. The funct-
* ion can be redefined to include additional
* checks aimed at detecting if the display needs
* to be closed, for example because of an event
* or a signal mandating the end of the session.
* In this way the client program can regain the
* control before Xlib blocks waiting for input
* from the network.
*/
typedef int (*NXDisplayErrorPredicate)(
#if NeedFunctionPrototypes
Display* /* display */,
int /* reason */
#endif
);
extern NXDisplayErrorPredicate _NXDisplayErrorFunction;
/*
* This is called when Xlib is going to block
* waiting for the display to become readable or
* writable. The client can use the hook to run
* any arbitrary operation that may require some
* time to complete. The user should not try to
* read or write to the display inside the call-
* back routine.
*/
typedef void (*NXDisplayBlockHandler)(
#if NeedFunctionPrototypes
Display* /* display */,
int /* reason */
#endif
);
extern NXDisplayBlockHandler _NXDisplayBlockFunction;
/*
* Used to notify the program when more data
* is written to the socket.
*/
typedef void (*NXDisplayWriteHandler)(
#if NeedFunctionPrototypes
Display* /* display */,
int /* length */
#endif
);
extern NXDisplayWriteHandler _NXDisplayWriteFunction;
/*
* This callback is used to notify the agent
* that the proxy link has been flushed.
*/
typedef void (*NXDisplayFlushHandler)(
#if NeedFunctionPrototypes
Display* /* display */,
int /* length */
#endif
);
extern NXDisplayFlushHandler _NXDisplayFlushFunction;
/*
* Used by the NX transport to get an arbitrary
* string to add to its protocol statistics.
*/
typedef void (*NXDisplayStatisticsHandler)(
#if NeedFunctionPrototypes
Display* /* display */,
char* /* buffer */,
int /* size */
#endif
);
extern NXDisplayStatisticsHandler _NXDisplayStatisticsFunction;
/*
* Let users redefine the function printing an
* error message in the case of a out-of-order
* sequence number.
*/
typedef void (*NXLostSequenceHandler)(
#if NeedFunctionPrototypes
Display* /* display */,
unsigned long /* newseq */,
unsigned long /* lastseq */,
unsigned int /* type */
#endif
);
extern NXLostSequenceHandler _NXLostSequenceFunction;
/*
* Let the X server run the children processes
* (as for example the keyboard initialization
* utilities) by using the native system libra-
* ries, instead of the libraries shipped with
* the NX environment. If set, the Popen() in
* the X server will remove the LD_LIBRARY_PATH
* setting from the environment before calling
* the execl() function in the child process.
*/
extern int _NXUnsetLibraryPath;
#ifdef __cplusplus
}
#endif
#endif /* NXvars_H */