Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/x86_64-linux-gnu/bits/mqueue2.h
1 /* Checking macros for mq functions. 2 Copyright (C) 2007-2026 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #ifndef _FCNTL_H 20 # error "Never include <bits/mqueue2.h> directly; use <mqueue.h> instead." 21 #endif 22 23 /* Check that calls to mq_open with O_CREAT set have an appropriate third and fourth 24 parameter. */ 25 extern mqd_t mq_open (const char *__name, int __oflag, ...) 26 __THROW __nonnull ((1)); 27 extern mqd_t __mq_open_2 (const char *__name, int __oflag) 28 __THROW __nonnull ((1)); 29 extern mqd_t __REDIRECT_NTH (__mq_open_alias, (const char *__name, 30 int __oflag, ...), mq_open) 31 __nonnull ((1)); 32 33 #ifdef __va_arg_pack_len 34 __errordecl (__mq_open_wrong_number_of_args, 35 "mq_open can be called either with 2 or 4 arguments"); 36 __errordecl (__mq_open_missing_mode_and_attr, 37 "mq_open with O_CREAT in second argument needs 4 arguments"); 38 39 __fortify_function mqd_t 40 __NTH (mq_open (const char *__name, int __oflag, ...)) 41 { 42 if (__va_arg_pack_len () != 0 && __va_arg_pack_len () != 2) 43 __mq_open_wrong_number_of_args (); 44 45 if (__builtin_constant_p (__oflag)) 46 { 47 if ((__oflag & O_CREAT) != 0 && __va_arg_pack_len () == 0) 48 { 49 __mq_open_missing_mode_and_attr (); 50 return __mq_open_2 (__name, __oflag); 51 } 52 return __mq_open_alias (__name, __oflag, __va_arg_pack ()); 53 } 54 55 if (__va_arg_pack_len () == 0) 56 return __mq_open_2 (__name, __oflag); 57 58 return __mq_open_alias (__name, __oflag, __va_arg_pack ()); 59 } 60 #elif __fortify_use_clang 61 __fortify_function_error_function __attribute_overloadable__ mqd_t 62 __NTH (mq_open (__fortify_clang_overload_arg (const char *, , __name), 63 int __oflag, mode_t __mode, ...)) 64 __fortify_clang_unavailable ("mq_open can be called either with 2 or 4 arguments"); 65 66 __fortify_function __attribute_overloadable__ mqd_t 67 __NTH (mq_open (__fortify_clang_overload_arg (const char *, ,__name), 68 int __oflag, mode_t __mode, struct mq_attr *__attr)) 69 { 70 return __mq_open_alias (__name, __oflag, __mode, __attr); 71 } 72 73 __fortify_function __attribute_overloadable__ mqd_t 74 __NTH (mq_open (__fortify_clang_overload_arg (const char *, ,__name), 75 int __oflag)) 76 __fortify_clang_prefer_this_overload 77 __fortify_clang_error ((__oflag & O_CREAT), 78 "mq_open with O_CREAT in second argument needs 4 arguments") 79 { 80 return __mq_open_alias (__name, __oflag); 81 } 82 #endif