summaryrefslogtreecommitdiffstats
path: root/Xserver/hw/rdp/rdpmisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Xserver/hw/rdp/rdpmisc.c')
-rw-r--r--Xserver/hw/rdp/rdpmisc.c377
1 files changed, 377 insertions, 0 deletions
diff --git a/Xserver/hw/rdp/rdpmisc.c b/Xserver/hw/rdp/rdpmisc.c
new file mode 100644
index 00000000..836c83ab
--- /dev/null
+++ b/Xserver/hw/rdp/rdpmisc.c
@@ -0,0 +1,377 @@
+/*
+Copyright 2005-2006 Jay Sorg
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+the rest
+
+*/
+
+#include "rdp.h"
+
+/******************************************************************************/
+/* print a time-stamped message to the log file (stderr). */
+void
+rdpLog(char *format, ...)
+{
+ va_list args;
+ char buf[256];
+ time_t clock;
+
+ va_start(args, format);
+ time(&clock);
+ strftime(buf, 255, "%d/%m/%y %T ", localtime(&clock));
+ fprintf(stderr, buf);
+ vfprintf(stderr, format, args);
+ fflush(stderr);
+ va_end(args);
+}
+
+/******************************************************************************/
+int
+rdpBitsPerPixel(int depth)
+{
+ if (depth == 1)
+ {
+ return 1;
+ }
+ else if (depth <= 8)
+ {
+ return 8;
+ }
+ else if (depth <= 16)
+ {
+ return 16;
+ }
+ else
+ {
+ return 32;
+ }
+}
+
+/******************************************************************************/
+void
+rdpClientStateChange(CallbackListPtr* cbl, pointer myData, pointer clt)
+{
+ dispatchException &= ~DE_RESET; /* hack - force server not to reset */
+}
+
+/******************************************************************************/
+int
+DPMSSupported(void)
+{
+ return 0;
+}
+
+/******************************************************************************/
+int
+DPSMGet(int* level)
+{
+ return -1;
+}
+
+/******************************************************************************/
+void
+DPMSSet(int level)
+{
+}
+
+/******************************************************************************/
+void
+AddOtherInputDevices(void)
+{
+}
+
+/******************************************************************************/
+void
+OpenInputDevice(DeviceIntPtr dev, ClientPtr client, int* status)
+{
+}
+
+/******************************************************************************/
+int
+SetDeviceValuators(register ClientPtr client, DeviceIntPtr dev,
+ int* valuators, int first_valuator, int num_valuators)
+{
+ return BadMatch;
+}
+
+/******************************************************************************/
+int
+SetDeviceMode(register ClientPtr client, DeviceIntPtr dev, int mode)
+{
+ return BadMatch;
+}
+
+/******************************************************************************/
+int
+ChangeKeyboardDevice(DeviceIntPtr old_dev, DeviceIntPtr new_dev)
+{
+ return BadMatch;
+}
+
+/******************************************************************************/
+int
+ChangeDeviceControl(register ClientPtr client, DeviceIntPtr dev,
+ void* control)
+{
+ return BadMatch;
+}
+
+/******************************************************************************/
+int
+ChangePointerDevice(DeviceIntPtr old_dev, DeviceIntPtr new_dev,
+ unsigned char x, unsigned char y)
+{
+ return BadMatch;
+}
+
+/******************************************************************************/
+void
+CloseInputDevice(DeviceIntPtr d, ClientPtr client)
+{
+}
+
+/* the g_ functions from os_calls.c */
+
+/*****************************************************************************/
+int
+g_tcp_recv(int sck, void* ptr, int len, int flags)
+{
+#if defined(_WIN32)
+ return recv(sck, (char*)ptr, len, flags);
+#else
+ return recv(sck, ptr, len, flags);
+#endif
+}
+
+/*****************************************************************************/
+void
+g_tcp_close(int sck)
+{
+ if (sck == 0)
+ {
+ return;
+ }
+ shutdown(sck, 2);
+#if defined(_WIN32)
+ closesocket(sck);
+#else
+ close(sck);
+#endif
+}
+
+/*****************************************************************************/
+int
+g_tcp_last_error_would_block(int sck)
+{
+#if defined(_WIN32)
+ return WSAGetLastError() == WSAEWOULDBLOCK;
+#else
+ return errno == EWOULDBLOCK;
+#endif
+}
+
+/*****************************************************************************/
+void
+g_sleep(int msecs)
+{
+#if defined(_WIN32)
+ Sleep(msecs);
+#else
+ usleep(msecs * 1000);
+#endif
+}
+
+/*****************************************************************************/
+int
+g_tcp_send(int sck, void* ptr, int len, int flags)
+{
+#if defined(_WIN32)
+ return send(sck, (char*)ptr, len, flags);
+#else
+ return send(sck, ptr, len, flags);
+#endif
+}
+
+/*****************************************************************************/
+void*
+g_malloc(int size, int zero)
+{
+ char* rv;
+
+ rv = (char*)malloc(size);
+ if (zero)
+ {
+ memset(rv, 0, size);
+ }
+ return rv;
+}
+
+/*****************************************************************************/
+void
+g_free(void* ptr)
+{
+ if (ptr != 0)
+ {
+ free(ptr);
+ }
+}
+
+/*****************************************************************************/
+void
+g_sprintf(char* dest, char* format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ vsprintf(dest, format, ap);
+ va_end(ap);
+}
+
+/*****************************************************************************/
+int
+g_tcp_socket(void)
+{
+ int rv;
+ int i;
+
+ i = 1;
+ rv = socket(PF_INET, SOCK_STREAM, 0);
+#if defined(_WIN32)
+ setsockopt(rv, IPPROTO_TCP, TCP_NODELAY, (char*)&i, sizeof(i));
+#else
+ setsockopt(rv, IPPROTO_TCP, TCP_NODELAY, (void*)&i, sizeof(i));
+#endif
+ return rv;
+}
+
+/*****************************************************************************/
+void
+g_memcpy(void* d_ptr, const void* s_ptr, int size)
+{
+ memcpy(d_ptr, s_ptr, size);
+}
+
+/*****************************************************************************/
+int
+g_tcp_set_no_delay(int sck)
+{
+ int i;
+
+ i = 1;
+#if defined(_WIN32)
+ setsockopt(sck, IPPROTO_TCP, TCP_NODELAY, (char*)&i, sizeof(i));
+#else
+ setsockopt(sck, IPPROTO_TCP, TCP_NODELAY, (void*)&i, sizeof(i));
+#endif
+ return 0;
+}
+
+/*****************************************************************************/
+int
+g_tcp_set_non_blocking(int sck)
+{
+ unsigned long i;
+
+#if defined(_WIN32)
+ i = 1;
+ ioctlsocket(sck, FIONBIO, &i);
+#else
+ i = fcntl(sck, F_GETFL);
+ i = i | O_NONBLOCK;
+ fcntl(sck, F_SETFL, i);
+#endif
+ return 0;
+}
+
+/*****************************************************************************/
+int
+g_tcp_accept(int sck)
+{
+ struct sockaddr_in s;
+#if defined(_WIN32)
+ signed int i;
+#else
+ unsigned int i;
+#endif
+
+ i = sizeof(struct sockaddr_in);
+ memset(&s, 0, i);
+ return accept(sck, (struct sockaddr*)&s, &i);
+}
+
+/*****************************************************************************/
+int
+g_tcp_select(int sck1, int sck2)
+{
+ fd_set rfds;
+ struct timeval time;
+ int max;
+ int rv;
+
+ time.tv_sec = 0;
+ time.tv_usec = 0;
+ FD_ZERO(&rfds);
+ if (sck1 > 0)
+ {
+ FD_SET(((unsigned int)sck1), &rfds);
+ }
+ if (sck2 > 0)
+ {
+ FD_SET(((unsigned int)sck2), &rfds);
+ }
+ max = sck1;
+ if (sck2 > max)
+ {
+ max = sck2;
+ }
+ rv = select(max + 1, &rfds, 0, 0, &time);
+ if (rv > 0)
+ {
+ rv = 0;
+ if (FD_ISSET(((unsigned int)sck1), &rfds))
+ {
+ rv = rv | 1;
+ }
+ if (FD_ISSET(((unsigned int)sck2), &rfds))
+ {
+ rv = rv | 2;
+ }
+ }
+ return rv;
+}
+
+/*****************************************************************************/
+int
+g_tcp_bind(int sck, char* port)
+{
+ struct sockaddr_in s;
+
+ memset(&s, 0, sizeof(struct sockaddr_in));
+ s.sin_family = AF_INET;
+ s.sin_port = htons(atoi(port));
+ s.sin_addr.s_addr = INADDR_ANY;
+ return bind(sck, (struct sockaddr*)&s, sizeof(struct sockaddr_in));
+}
+
+/*****************************************************************************/
+int
+g_tcp_listen(int sck)
+{
+ return listen(sck, 2);
+}