projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sysvipc: overhaul {sem,shm,msg}ctl for time64
[musl]
/
src
/
ipc
/
msgctl.c
diff --git
a/src/ipc/msgctl.c
b/src/ipc/msgctl.c
index
ea9b233
..
b043041
100644
(file)
--- a/
src/ipc/msgctl.c
+++ b/
src/ipc/msgctl.c
@@
-17,18
+17,25
@@
int msgctl(int q, int cmd, struct msqid_ds *buf)
buf = &tmp;
}
#endif
buf = &tmp;
}
#endif
-#if
def SYS_msgctl
- int r = __syscall(SYS_msgctl, q,
cmd | IPC_64
, buf);
+#if
ndef SYS_ipc
+ int r = __syscall(SYS_msgctl, q,
IPC_CMD(cmd)
, buf);
#else
#else
- int r = __syscall(SYS_ipc, IPCOP_msgctl, q,
cmd | IPC_64
, 0, buf, 0);
+ int r = __syscall(SYS_ipc, IPCOP_msgctl, q,
IPC_CMD(cmd)
, 0, buf, 0);
#endif
#ifdef SYSCALL_IPC_BROKEN_MODE
#endif
#ifdef SYSCALL_IPC_BROKEN_MODE
- if (r >= 0) switch (cmd) {
+ if (r >= 0) switch (cmd
| IPC_TIME64
) {
case IPC_STAT:
case MSG_STAT:
case MSG_STAT_ANY:
buf->msg_perm.mode >>= 16;
}
case IPC_STAT:
case MSG_STAT:
case MSG_STAT_ANY:
buf->msg_perm.mode >>= 16;
}
+#endif
+#if IPC_TIME64
+ if (r >= 0 && (cmd&IPC_TIME64)) {
+ IPC_HILO(buf, msg_stime);
+ IPC_HILO(buf, msg_rtime);
+ IPC_HILO(buf, msg_ctime);
+ }
#endif
return __syscall_ret(r);
}
#endif
return __syscall_ret(r);
}