Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


stdlib.h
001: /* Checking macros for stdlib functions.
002:    Copyright (C) 2005, 2007 Free Software Foundation, Inc.
003:    This file is part of the GNU C Library.
004: 
005:    The GNU C Library is free software; you can redistribute it and/or
006:    modify it under the terms of the GNU Lesser General Public
007:    License as published by the Free Software Foundation; either
008:    version 2.1 of the License, or (at your option) any later version.
009: 
010:    The GNU C Library is distributed in the hope that it will be useful,
011:    but WITHOUT ANY WARRANTY; without even the implied warranty of
012:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013:    Lesser General Public License for more details.
014: 
015:    You should have received a copy of the GNU Lesser General Public
016:    License along with the GNU C Library; if not, write to the Free
017:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
018:    02111-1307 USA.  */
019: 
020: #ifndef _STDLIB_H
021: # error "Never include <bits/stdlib.h> directly; use <stdlib.h> instead."
022: #endif
023: 
024: extern char *__realpath_chk (__const char *__restrict __name,
025:                              char *__restrict __resolved,
026:                              size_t __resolvedlen) __THROW __wur;
027: extern char *__REDIRECT_NTH (__realpath_alias,
028:                              (__const char *__restrict __name,
029:                               char *__restrict __resolved), realpath) __wur;
030: extern char *__REDIRECT_NTH (__realpath_chk_warn,
031:                              (__const char *__restrict __name,
032:                               char *__restrict __resolved,
033:                               size_t __resolvedlen), __realpath_chk) __wur
034:      __warnattr ("second argument of realpath must be either NULL or at "
035:                  "least PATH_MAX bytes long buffer");
036: 
037: __extern_always_inline __wur char *
038: __NTH (realpath (__const char *__restrict __name, char *__restrict __resolved))
039: {
040:   if (__bos (__resolved) != (size_t) -1)
041:     {
042: #if defined _LIBC_LIMITS_H_ && defined PATH_MAX
043:       if (__bos (__resolved) < PATH_MAX)
044:         return __realpath_chk_warn (__name, __resolved, __bos (__resolved));
045: #endif
046:       return __realpath_chk (__name, __resolved, __bos (__resolved));
047:     }
048: 
049:   return __realpath_alias (__name, __resolved);
050: }
051: 
052: 
053: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
054:                             size_t __nreal) __THROW __nonnull ((2));
055: extern int __REDIRECT_NTH (__ptsname_r_alias, (int __fd, char *__buf,
056:                                                size_t __buflen), ptsname_r)
057:      __nonnull ((2));
058: extern int __REDIRECT_NTH (__ptsname_r_chk_warn,
059:                            (int __fd, char *__buf, size_t __buflen,
060:                             size_t __nreal), __ptsname_r_chk)
061:      __nonnull ((2)) __warnattr ("ptsname_r called with buflen bigger than "
062:                                  "size of buf");
063: 
064: __extern_always_inline int
065: __NTH (ptsname_r (int __fd, char *__buf, size_t __buflen))
066: {
067:   if (__bos (__buf) != (size_t) -1)
068:     {
069:       if (!__builtin_constant_p (__buflen))
070:         return __ptsname_r_chk (__fd, __buf, __buflen, __bos (__buf));
071:       if (__buflen > __bos (__buf))
072:         return __ptsname_r_chk_warn (__fd, __buf, __buflen, __bos (__buf));
073:     }
074:   return __ptsname_r_alias (__fd, __buf, __buflen);
075: }
076: 
077: 
078: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
079:   __THROW __wur;
080: extern int __REDIRECT_NTH (__wctomb_alias, (char *__s, wchar_t __wchar),
081:                            wctomb) __wur;
082: 
083: __extern_always_inline __wur int
084: __NTH (wctomb (char *__s, wchar_t __wchar))
085: {
086:   /* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
087:      But this would only disturb the namespace.  So we define our own
088:      version here.  */
089: #define __STDLIB_MB_LEN_MAX     16
090: #if defined MB_LEN_MAX && MB_LEN_MAX != __STDLIB_MB_LEN_MAX
091: # error "Assumed value of MB_LEN_MAX wrong"
092: #endif
093:   if (__bos (__s) != (size_t) -1 && __STDLIB_MB_LEN_MAX > __bos (__s))
094:     return __wctomb_chk (__s, __wchar, __bos (__s));
095:   return __wctomb_alias (__s, __wchar);
096: }
097: 
098: 
099: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
100:                               __const char *__restrict __src,
101:                               size_t __len, size_t __dstlen) __THROW;
102: extern size_t __REDIRECT_NTH (__mbstowcs_alias,
103:                               (wchar_t *__restrict __dst,
104:                                __const char *__restrict __src,
105:                                size_t __len), mbstowcs);
106: extern size_t __REDIRECT_NTH (__mbstowcs_chk_warn,
107:                               (wchar_t *__restrict __dst,
108:                                __const char *__restrict __src,
109:                                size_t __len, size_t __dstlen), __mbstowcs_chk)
110:      __warnattr ("mbstowcs called with dst buffer smaller than len "
111:                  "* sizeof (wchar_t)");
112: 
113: __extern_always_inline size_t
114: __NTH (mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src,
115:                  size_t __len))
116: {
117:   if (__bos (__dst) != (size_t) -1)
118:     {
119:       if (!__builtin_constant_p (__len))
120:         return __mbstowcs_chk (__dst, __src, __len,
121:                                __bos (__dst) / sizeof (wchar_t));
122: 
123:       if (__len > __bos (__dst) / sizeof (wchar_t))
124:         return __mbstowcs_chk_warn (__dst, __src, __len,
125:                                      __bos (__dst) / sizeof (wchar_t));
126:     }
127:   return __mbstowcs_alias (__dst, __src, __len);
128: }
129: 
130: 
131: extern size_t __wcstombs_chk (char *__restrict __dst,
132:                               __const wchar_t *__restrict __src,
133:                               size_t __len, size_t __dstlen) __THROW;
134: extern size_t __REDIRECT_NTH (__wcstombs_alias,
135:                               (char *__restrict __dst,
136:                                __const wchar_t *__restrict __src,
137:                                size_t __len), wcstombs);
138: extern size_t __REDIRECT_NTH (__wcstombs_chk_warn,
139:                               (char *__restrict __dst,
140:                                __const wchar_t *__restrict __src,
141:                                size_t __len, size_t __dstlen), __wcstombs_chk)
142:      __warnattr ("wcstombs called with dst buffer smaller than len");
143: 
144: __extern_always_inline size_t
145: __NTH (wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src,
146:                  size_t __len))
147: {
148:   if (__bos (__dst) != (size_t) -1)
149:     {
150:       if (!__builtin_constant_p (__len))
151:         return __wcstombs_chk (__dst, __src, __len, __bos (__dst));
152:       if (__len > __bos (__dst))
153:         return __wcstombs_chk_warn (__dst, __src, __len, __bos (__dst));
154:     }
155:   return __wcstombs_alias (__dst, __src, __len);
156: }
157: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/