aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/Xext/shm.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/Xext/shm.c')
-rw-r--r--xorg-server/Xext/shm.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/xorg-server/Xext/shm.c b/xorg-server/Xext/shm.c
index d014b9194..227fe8c4f 100644
--- a/xorg-server/Xext/shm.c
+++ b/xorg-server/Xext/shm.c
@@ -33,8 +33,10 @@ in this Software without prior written authorization from The Open Group.
#endif
#include <sys/types.h>
+#if !defined(_MSC_VER)
#include <sys/ipc.h>
#include <sys/shm.h>
+#endif
#include <unistd.h>
#include <sys/stat.h>
#include <X11/X.h>
@@ -292,6 +294,8 @@ ProcShmQueryVersion(ClientPtr client)
REQUEST_SIZE_MATCH(xShmQueryVersionReq);
+#ifndef _MSC_VER
+#endif
if (client->swapped) {
swaps(&rep.sequenceNumber);
swapl(&rep.length);
@@ -341,6 +345,9 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly)
if (uid == 0) {
return 0;
}
+ #ifdef _MSC_VER
+ __asm int 3;
+ #else
/* Check the owner */
if (SHMPERM_UID(perm) == uid || SHMPERM_CUID(perm) == uid) {
mask = S_IRUSR;
@@ -349,10 +356,14 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly)
}
return (SHMPERM_MODE(perm) & mask) == mask ? 0 : -1;
}
+ #endif
}
if (gidset) {
/* Check the group */
+ #ifdef _MSC_VER
+ __asm int 3;
+ #else
if (SHMPERM_GID(perm) == gid || SHMPERM_CGID(perm) == gid) {
mask = S_IRGRP;
if (!readonly) {
@@ -360,14 +371,20 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly)
}
return (SHMPERM_MODE(perm) & mask) == mask ? 0 : -1;
}
+ #endif
}
}
+ #ifdef _MSC_VER
+ __asm int 3;
+ return -1;
+ #else
/* Otherwise, check everyone else */
mask = S_IROTH;
if (!readonly) {
mask |= S_IWOTH;
}
return (SHMPERM_MODE(perm) & mask) == mask ? 0 : -1;
+ #endif
}
static int
@@ -438,6 +455,7 @@ ShmDetachSegment(pointer value, /* must conform to DeleteType */
if (--shmdesc->refcnt)
return TRUE;
+#ifndef _MSC_VER
#if SHM_FD_PASSING
if (shmdesc->is_fd) {
if (shmdesc->busfault)
@@ -446,6 +464,7 @@ ShmDetachSegment(pointer value, /* must conform to DeleteType */
} else
#endif
shmdt(shmdesc->addr);
+#endif
for (prev = &Shmsegs; *prev != shmdesc; prev = &(*prev)->next);
*prev = shmdesc->next;
free(shmdesc);