OLD | NEW |
1 #include <mqueue.h> | 1 #include <mqueue.h> |
2 #include <fcntl.h> | 2 #include <fcntl.h> |
3 #include <stdarg.h> | 3 #include <stdarg.h> |
4 #include "syscall.h" | 4 #include "syscall.h" |
5 | 5 |
6 mqd_t mq_open(const char *name, int flags, ...) | 6 mqd_t mq_open(const char* name, int flags, ...) { |
7 { | 7 mode_t mode = 0; |
8 » mode_t mode = 0; | 8 struct mq_attr* attr = 0; |
9 » struct mq_attr *attr = 0; | 9 if (*name == '/') |
10 » if (*name == '/') name++; | 10 name++; |
11 » if (flags & O_CREAT) { | 11 if (flags & O_CREAT) { |
12 » » va_list ap; | 12 va_list ap; |
13 » » va_start(ap, flags); | 13 va_start(ap, flags); |
14 » » mode = va_arg(ap, mode_t); | 14 mode = va_arg(ap, mode_t); |
15 » » attr = va_arg(ap, struct mq_attr *); | 15 attr = va_arg(ap, struct mq_attr*); |
16 » » va_end(ap); | 16 va_end(ap); |
17 » } | 17 } |
18 » return syscall(SYS_mq_open, name, flags, mode, attr); | 18 return syscall(SYS_mq_open, name, flags, mode, attr); |
19 } | 19 } |
OLD | NEW |