mqueue2.h
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: #ifndef _FCNTL_H
21: # error "Never include <bits/mqueue2.h> directly; use <mqueue.h> instead."
22: #endif
23:
24:
25:
26: extern mqd_t mq_open (__const char *__name, int __oflag, ...)
27: __THROW __nonnull ((1));
28: extern mqd_t __mq_open_2 (__const char *__name, int __oflag)
29: __THROW __nonnull ((1));
30: extern mqd_t __REDIRECT_NTH (__mq_open_alias, (__const char *__name,
31: int __oflag, ...), mq_open)
32: __nonnull ((1));
33: __errordecl (__mq_open_wrong_number_of_args,
34: "mq_open can be called either with 2 or 4 arguments");
35: __errordecl (__mq_open_missing_mode_and_attr,
36: "mq_open with O_CREAT in second argument needs 4 arguments");
37:
38: __extern_always_inline mqd_t
39: __NTH (mq_open (__const char *__name, int __oflag, ...))
40: {
41: if (__va_arg_pack_len () != 0 && __va_arg_pack_len () != 2)
42: __mq_open_wrong_number_of_args ();
43:
44: if (__builtin_constant_p (__oflag))
45: {
46: if ((__oflag & O_CREAT) != 0 && __va_arg_pack_len () == 0)
47: {
48: __mq_open_missing_mode_and_attr ();
49: return __mq_open_2 (__name, __oflag);
50: }
51: return __mq_open_alias (__name, __oflag, __va_arg_pack ());
52: }
53:
54: if (__va_arg_pack_len () == 0)
55: return __mq_open_2 (__name, __oflag);
56:
57: return __mq_open_alias (__name, __oflag, __va_arg_pack ());
58: }
59:
© Andrew Scott 2006 -
2025,
All Rights Reserved