summaryrefslogtreecommitdiffstats
path: root/common/os_calls.c
diff options
context:
space:
mode:
authorLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2014-02-10 18:47:22 -0800
committerLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2014-02-10 18:47:22 -0800
commitc5c8324d91277bdbddf7402453b0b8f56e698972 (patch)
treef39fa62e78e274d0792bfdbd0b0202e5be323977 /common/os_calls.c
parente95edef44e1dd25cd40a650e61faff7c4977e689 (diff)
parent973d41bceb19fd2af275a1f262363cbe2db30792 (diff)
downloadxrdp-proprietary-c5c8324d91277bdbddf7402453b0b8f56e698972.tar.gz
xrdp-proprietary-c5c8324d91277bdbddf7402453b0b8f56e698972.zip
Merge branch 'devel' of github.com:/neutrinolabs/xrdp into devel
Diffstat (limited to 'common/os_calls.c')
-rw-r--r--common/os_calls.c43
1 files changed, 41 insertions, 2 deletions
diff --git a/common/os_calls.c b/common/os_calls.c
index bb26d246..80b2d235 100644
--- a/common/os_calls.c
+++ b/common/os_calls.c
@@ -1,7 +1,7 @@
/**
* xrdp: A Remote Desktop Protocol server.
*
- * Copyright (C) Jay Sorg 2004-2013
+ * Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,11 @@
* put all the os / arch define in here you want
*/
+/* To test for Windows (64 bit or 32 bit) use _WIN32 and _WIN64 in addition
+ for 64 bit windows. _WIN32 is defined for both.
+ To test for Linux use __linux__.
+ To test for BSD use BSD */
+
#if defined(HAVE_CONFIG_H)
#include "config_ac.h"
#endif
@@ -60,6 +65,13 @@
#include <stdio.h>
#include <locale.h>
+/* this is so we can use #ifdef BSD later */
+/* This is the recommended way of detecting BSD in the
+ FreeBSD Porter's Handbook. */
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+#include <sys/param.h>
+#endif
+
#include "os_calls.h"
#include "arch.h"
#include "log.h"
@@ -596,10 +608,16 @@ g_tcp_local_socket(void)
}
/*****************************************************************************/
+/* returns error */
int APP_CC
g_sck_get_peer_cred(int sck, int *pid, int *uid, int *gid)
{
+#if defined(SO_PEERCRED)
+#if defined(_WIN32)
int ucred_length;
+#else
+ unsigned int ucred_length;
+#endif
struct myucred
{
pid_t pid;
@@ -625,6 +643,9 @@ g_sck_get_peer_cred(int sck, int *pid, int *uid, int *gid)
*gid = credentials.gid;
}
return 0;
+#else
+ return 1;
+#endif
}
/*****************************************************************************/
@@ -3122,15 +3143,33 @@ g_text2bool(const char *s)
}
/*****************************************************************************/
+/* returns pointer or nil on error */
void * APP_CC
g_shmat(int shmid)
{
- return shmat(shmid, 0, 0);
+#if defined(_WIN32)
+ return 0;
+#else
+ return shmat(shmid, 0, 0);
+#endif
}
/*****************************************************************************/
+/* returns -1 on error 0 on success */
int APP_CC
g_shmdt(const void *shmaddr)
{
+#if defined(_WIN32)
+ return -1;
+#else
return shmdt(shmaddr);
+#endif
+}
+
+/*****************************************************************************/
+/* returns -1 on error 0 on success */
+int APP_CC
+g_gethostname(char *name, int len)
+{
+ return gethostname(name, len);
}