diff options
Diffstat (limited to 'xorg-server/Xext/shm.c')
-rw-r--r-- | xorg-server/Xext/shm.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/xorg-server/Xext/shm.c b/xorg-server/Xext/shm.c index 55960907b..37c1ed88f 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> @@ -299,6 +301,8 @@ ProcShmQueryVersion(ClientPtr client) REQUEST_SIZE_MATCH(xShmQueryVersionReq); +#ifndef _MSC_VER +#endif if (client->swapped) { swaps(&rep.sequenceNumber); swapl(&rep.length); @@ -348,6 +352,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; @@ -356,10 +363,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) { @@ -367,14 +378,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 @@ -440,7 +457,9 @@ ShmDetachSegment(pointer value, /* must conform to DeleteType */ if (--shmdesc->refcnt) return TRUE; +#ifndef _MSC_VER shmdt(shmdesc->addr); +#endif for (prev = &Shmsegs; *prev != shmdesc; prev = &(*prev)->next); *prev = shmdesc->next; free(shmdesc); |