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 db9d47450..db278a3f4 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 <fcntl.h> @@ -288,6 +290,8 @@ ProcShmQueryVersion(ClientPtr client) REQUEST_SIZE_MATCH(xShmQueryVersionReq); +#ifndef _MSC_VER +#endif if (client->swapped) { swaps(&rep.sequenceNumber); swapl(&rep.length); @@ -337,6 +341,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; @@ -345,10 +352,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) { @@ -356,14 +367,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 @@ -434,6 +451,7 @@ ShmDetachSegment(void *value, /* must conform to DeleteType */ if (--shmdesc->refcnt) return TRUE; +#ifndef _MSC_VER #if SHM_FD_PASSING if (shmdesc->is_fd) { if (shmdesc->busfault) @@ -442,6 +460,7 @@ ShmDetachSegment(void *value, /* must conform to DeleteType */ } else #endif shmdt(shmdesc->addr); +#endif for (prev = &Shmsegs; *prev != shmdesc; prev = &(*prev)->next); *prev = shmdesc->next; free(shmdesc); |