GNU Gnulib

updated 2024-05-30 15:26:47

bug-gnulib@gnu.org

This manual is for GNU Gnulib (updated 2024-05-30 15:26:47), which is a library of common routines intended to be shared at the source level. Copyright \begin{matrix}c \\ ◯ \end{matrix} 2004–2024 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.

Table of Contents

1 Brief Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 Gnulib Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Git Checkout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Keeping Up-to-date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Contributing to Gnulib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.4.1 Gnulib licensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4.2 Indent with spaces not TABs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4.3 How to add a new module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.5 Portability guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5.1 C language versions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5.2 C99 features assumed by Gnulib . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.3 C99 features avoided by Gnulib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.4 Other portability assumptions made by Gnulib . . . . . . . . . . . . . . 6

1.6 High Quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.6.1 Stable Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.6.2 Writing reliable code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.7 Join the GNU Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1 Benefits of using Gnulib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Library vs. Reusable Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 Portability and Application Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4 Target Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.4.1 Supported Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4.2 Formerly Supported Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4.3 Unsupported Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.5 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.6 Various Kinds of Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.6.1 Support for ISO C or POSIX functions. . . . . . . . . . . . . . . . . . . . . 14 2.6.2 Enhancements of ISO C or POSIX functions . . . . . . . . . . . . . . . 15 2.6.3 Portable general use facilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6.4 Reusable application code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6.5 Object oriented classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6.6 Interfaces to external libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6.7 Build / maintenance infrastructure. . . . . . . . . . . . . . . . . . . . . . . . . 15

2.7 Collaborative Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.8 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.9 Steady Development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.10 Openness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Invoking gnulib-tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1 Finding modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 Initial import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3 Modified imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4 Simple update. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5 Changing your sources for use with Gnulib. . . . . . . . . . . . . . . . . . . . . 25

3.5.1 -I options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5.2 Include <config.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5.3 Style of #include statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.6 Changing your link commands for use with Gnulib . . . . . . . . . . . . . 27 3.7 Finding recommended ISO C and POSIX function substitutes. . 28 3.8 Modifying the build rules of a Gnulib import directory . . . . . . . . . 28 3.9 Building directly from the top-level directory . . . . . . . . . . . . . . . . . . 29 3.10 Using Gnulib for both a library and a program . . . . . . . . . . . . . . . . 30 3.11 Caveat: gettextize and autopoint users . . . . . . . . . . . . . . . . . . . . . 31 3.12 Handling Gnulib’s own message translations . . . . . . . . . . . . . . . . . . . 32 3.13 Integration with Version Control Systems . . . . . . . . . . . . . . . . . . . . . . 33 3.14 Bundling the unit tests of the Gnulib modules . . . . . . . . . . . . . . . . . 35 3.15 Avoiding unnecessary checks and compilations . . . . . . . . . . . . . . . . . 35

4 Writing modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.1 Source code files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2 Header files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.3 Implementation files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.5 Module description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.6 Autoconf macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.7 Making proper use of AC_LIBOBJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.8 Unit test modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.9 Incompatible changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5 Extending Gnulib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6 Miscellaneous Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

6.1 Out of memory handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.2 Obsolete modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.3 Extra tests modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.4 Modules that modify the way other modules work. . . . . . . . . . . . . . . 47 6.5 A C++ namespace for gnulib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.6 License Texinfo sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.7 Building gnulib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

7 Building the ISO C and POSIX Substitutes. . 52 8 ISO C Keyword Substitutes . . . . . . . . . . . . . . . . . . . 53

8.1 alignof and alignas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.2 bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.3 nullptr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.4 static_assert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

9 ISO C and POSIX Header File Substitutes . . 55

9.1 aio.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 9.2 arpa/inet.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 9.3 assert.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 9.4 complex.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 9.5 cpio.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 9.6 ctype.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 9.7 dirent.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 9.8 dlfcn.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 9.9 errno.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 9.10 fcntl.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 9.11 fenv.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 9.12 float.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 9.13 fmtmsg.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 9.14 fnmatch.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 9.15 ftw.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 9.16 glob.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 9.17 grp.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 9.18 iconv.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 9.19 inttypes.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.20 iso646.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.21 langinfo.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 9.22 libgen.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 9.23 limits.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 9.24 locale.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 9.25 math.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 9.26 monetary.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 9.27 mqueue.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 9.28 ndbm.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 9.29 net/if.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 9.30 netdb.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 9.31 netinet/in.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 9.32 netinet/tcp.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 9.33 nl_types.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 9.34 poll.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 9.35 pthread.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 9.36 pwd.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 9.37 regex.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 9.38 sched.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 9.39 search.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 9.40 semaphore.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 9.41 setjmp.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 9.42 signal.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 9.43 spawn.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 9.44 stdalign.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 9.45 stdarg.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 9.46 stdatomic.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 9.47 stdbit.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 9.48 stdbool.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 9.49 stdckdint.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 9.50 stddef.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 9.51 stdint.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 9.52 stdio.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.53 stdlib.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 9.54 stdnoreturn.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 9.55 string.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.56 strings.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.57 stropts.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.58 sys/ipc.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.59 sys/mman.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.60 sys/msg.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.61 sys/resource.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.62 sys/select.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.63 sys/sem.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.64 sys/shm.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.65 sys/socket.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.66 sys/stat.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 9.67 sys/statvfs.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.68 sys/time.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.69 sys/timeb.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9.70 sys/times.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9.71 sys/types.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9.72 sys/uio.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 9.73 sys/un.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 9.74 sys/utsname.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 9.75 sys/wait.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 9.76 syslog.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 9.77 tar.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 9.78 termios.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 9.79 tgmath.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 9.80 threads.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 9.81 time.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 9.82 trace.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 9.83 uchar.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 9.84 ucontext.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 9.85 ulimit.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 9.86 unistd.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 9.87 utime.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 9.88 utmpx.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 9.89 wchar.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 9.90 wctype.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 9.91 wordexp.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

10 ISO C and POSIX Function Substitutes …. 89

10.1 FD_CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 10.2 FD_ISSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 10.3 FD_SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 10.4 FD_ZERO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 10.5 _Exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 10.6 _exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 10.7 _longjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 10.8 _setjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 10.9 _tolower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.10 _toupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.11 a64l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.12 abort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.13 abs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 10.14 accept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 10.15 access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 10.16 acos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 10.17 acosf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 10.18 acosh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 10.19 acoshf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 10.20 acoshl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 10.21 acosl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 10.22 aio_cancel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 10.23 aio_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 10.24 aio_fsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 10.25 aio_read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 10.26 aio_return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 10.27 aio_suspend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 10.28 aio_write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 10.29 alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 10.30 aligned_alloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 10.31 alphasort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 10.32 asctime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 10.33 asctime_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 10.34 asin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 10.35 asinf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 10.36 asinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 10.37 asinhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 10.38 asinhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 10.39 asinl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 10.40 assert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 10.41 atan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 10.42 atan2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 10.43 atan2f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 10.44 atan2l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 10.45 atanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 10.46 atanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 10.47 atanhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 10.48 atanhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 10.49 atanl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 10.50 atexit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10.51 atof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10.52 atoi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10.53 atol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 10.54 atoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 10.55 basename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 10.56 bind. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 10.57 bsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.58 btowc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.59 c8rtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.60 c16rtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.61 c32rtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 10.62 cabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 10.63 cabsf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 10.64 cabsl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 10.65 cacos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10.66 cacosf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10.67 cacosh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10.68 cacoshf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10.69 cacoshl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 10.70 cacosl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 10.71 calloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 10.72 call_once. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 10.73 canonicalize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.74 canonicalizef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.75 canonicalizel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.76 carg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 10.77 cargf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 10.78 cargl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 10.79 casin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 10.80 casinf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.81 casinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.82 casinhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.83 casinhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 10.84 casinl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.85 catan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.86 catanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.87 catanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.88 catanhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.89 catanhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.90 catanl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.91 catclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.92 catgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.93 catopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.94 cbrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.95 cbrtf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 10.96 cbrtl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.97 ccos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.98 ccosf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.99 ccosh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.100 ccoshf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.101 ccoshl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.102 ccosl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.103 ceil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.104 ceilf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.105 ceill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.106 cexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.107 cexpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.108 cexpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.109 cfgetispeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.110 cfgetospeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.111 cfsetispeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.112 cfsetospeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.113 chdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.114 chmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.115 chown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.116 cimag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.117 cimagf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.118 cimagl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 10.119 clearerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 10.120 clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 10.121 clock_getcpuclockid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 10.122 clock_getres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10.123 clock_gettime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10.124 clock_nanosleep. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10.125 clock_settime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.126 clog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.127 clogf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.128 clogl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.129 close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.130 closedir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.131 closelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.132 cnd_broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 10.133 cnd_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 10.134 cnd_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 10.135 cnd_signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 10.136 cnd_timedwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 10.137 cnd_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 10.138 confstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 10.139 conj. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 10.140 conjf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.141 conjl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.142 connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.143 copysign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.144 copysignf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 10.145 copysignl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 10.146 cos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 10.147 cosf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 10.148 cosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 10.149 coshf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 10.150 coshl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 10.151 cosl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 10.152 cpow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 10.153 cpowf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 10.154 cpowl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 10.155 cproj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 10.156 cprojf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 10.157 cprojl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 10.158 creal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 10.159 crealf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 10.160 creall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 10.161 creat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 10.162 crypt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 10.163 csin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 10.164 csinf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 10.165 csinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 10.166 csinhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 10.167 csinhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 10.168 csinl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 10.169 csqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 10.170 csqrtf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 10.171 csqrtl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 10.172 ctan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 10.173 ctanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 10.174 ctanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 10.175 ctanhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 10.176 ctanhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 10.177 ctanl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 10.178 ctermid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 10.179 ctime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 10.180 ctime_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 10.181 daddl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 10.182 daylight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 10.183 dbm_clearerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.184 dbm_close. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.185 dbm_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.186 dbm_error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 10.187 dbm_fetch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 10.188 dbm_firstkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 10.189 dbm_nextkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 10.190 dbm_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 10.191 dbm_store. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.192 ddivl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.193 difftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.194 dirfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 10.195 dirname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 10.196 div. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 10.197 dlclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 10.198 dlerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 10.199 dlopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 10.200 dlsym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 10.201 dmull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 10.202 dprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 10.203 drand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 10.204 dsubl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 10.205 dup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 10.206 dup2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 10.207 duplocale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 10.208 encrypt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 10.209 endgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 10.210 endhostent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 10.211 endnetent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 10.212 endprotoent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 10.213 endpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 10.214 endservent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 10.215 endutxent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 10.216 environ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.217 erand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.218 erf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.219 erfc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 10.220 erfcf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 10.221 erfcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 10.222 erff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 10.223 erfl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10.224 errno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10.225 execl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10.226 execle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.227 execlp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.228 execv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.229 execve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 10.230 execvp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 10.231 exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 10.232 exp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 10.233 exp2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 10.234 exp2f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 10.235 exp2l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 10.236 expf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 10.237 expl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 10.238 expm1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 10.239 expm1f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 10.240 expm1l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 10.241 fabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 10.242 fabsf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 10.243 fabsl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 10.244 faccessat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 10.245 fadd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 10.246 faddl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 10.247 fattach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 10.248 fchdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 10.249 fchmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 10.250 fchmodat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 10.251 fchown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 10.252 fchownat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 10.253 fclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 10.254 fcntl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 10.255 fdatasync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 10.256 fdetach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 10.257 fdim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 10.258 fdimf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 10.259 fdiml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 10.260 fdiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 10.261 fdivl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 10.262 fdopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 10.263 fdopendir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 10.264 feclearexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 10.265 fegetenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 10.266 fegetexceptflag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 10.267 fegetmode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 10.268 fegetround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 10.269 feholdexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 10.270 feof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10.271 feraiseexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10.272 ferror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10.273 fesetenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10.274 fesetexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 10.275 fesetexceptflag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 10.276 fesetmode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.277 fesetround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.278 fetestexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.279 fetestexceptflag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.280 feupdateenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10.281 fexecve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10.282 fflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10.283 ffs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 10.284 fgetc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 10.285 fgetpos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 10.286 fgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 10.287 fgetwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 10.288 fgetws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 10.289 fileno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 10.290 flockfile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 10.291 floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 10.292 floorf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.293 floorl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.294 fma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.295 fmaf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.296 fmal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 10.297 fmax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 10.298 fmaxf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 10.299 fmaxl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 10.300 fmaxmag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 10.301 fmaxmagf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 10.302 fmaxmagl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 10.303 fmemopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 10.304 fmin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 10.305 fminf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 10.306 fminl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 10.307 fminmag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 10.308 fminmagf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 10.309 fminmagl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 10.310 fmod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 10.311 fmodf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 10.312 fmodl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 10.313 fmtmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 10.314 fmul. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 10.315 fmull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 10.316 fnmatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 10.317 fopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 10.318 fork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 10.319 fpathconf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 10.320 fpclassify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 10.321 fprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 10.322 fputc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 10.323 fputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 10.324 fputwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 10.325 fputws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 10.326 fread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 10.327 free. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 10.328 freeaddrinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 10.329 freelocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 10.330 freopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 10.331 frexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 10.332 frexpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 10.333 frexpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 10.334 fromfp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 10.335 fromfpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 10.336 fromfpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 10.337 fromfpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 10.338 fromfpxf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 10.339 fromfpxl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 10.340 fscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 10.341 fseek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 10.342 fseeko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 10.343 fsetpos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.344 fstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 10.345 fstatat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 10.346 fstatvfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 10.347 fsub. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.348 fsubl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.349 fsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.350 ftell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.351 ftello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 10.352 ftok. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 10.353 ftruncate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.354 ftrylockfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.355 ftw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.356 funlockfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.357 futimens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 10.358 fwide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 10.359 fwprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 10.360 fwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 10.361 fwscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 10.362 gai_strerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 10.363 getaddrinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 10.364 getc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 10.365 getc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 10.366 getchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 10.367 getchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 10.368 getcwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 10.369 getdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 10.370 getdate_err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 10.371 getdelim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 10.372 getegid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 10.373 getenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 10.374 geteuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 10.375 getgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 10.376 getgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 10.377 getgrgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 10.378 getgrgid_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 10.379 getgrnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 10.380 getgrnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 10.381 getgroups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 10.382 gethostent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 10.383 gethostid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 10.384 gethostname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 10.385 getitimer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 10.386 getline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 10.387 getlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 10.388 getlogin_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 10.389 getmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 10.390 getnameinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 10.391 getnetbyaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 10.392 getnetbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 10.393 getnetent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 10.394 getopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 10.395 getpayload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.396 getpayloadf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.397 getpayloadl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 10.398 getpeername . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 10.399 getpgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 10.400 getpgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 10.401 getpid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 10.402 getpmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 10.403 getppid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 10.404 getpriority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 10.405 getprotobyname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 10.406 getprotobynumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 10.407 getprotoent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 10.408 getpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 10.409 getpwnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 10.410 getpwnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.411 getpwuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.412 getpwuid_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.413 getrlimit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 10.414 getrusage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.415 gets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.416 getservbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.417 getservbyport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 10.418 getservent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 10.419 getsid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 10.420 getsockname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 10.421 getsockopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.422 getsubopt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.423 gettimeofday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 10.424 getuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.425 getutxent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.426 getutxid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 10.427 getutxline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 10.428 getwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 10.429 getwchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 10.430 glob. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 10.431 globfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 10.432 gmtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 10.433 gmtime_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 10.434 grantpt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 10.435 hcreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 10.436 hdestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 10.437 hsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 10.438 htonl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 10.439 htons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 10.440 hypot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 10.441 hypotf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 10.442 hypotl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 10.443 iconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 10.444 iconv_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 10.445 iconv_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 10.446 if_freenameindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 10.447 if_indextoname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 10.448 if_nameindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 10.449 if_nametoindex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 10.450 ilogb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 10.451 ilogbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 10.452 ilogbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 10.453 imaxabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 10.454 imaxdiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 10.455 inet_addr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 10.456 inet_ntoa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 10.457 inet_ntop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 10.458 inet_pton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 10.459 initstate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 10.460 insque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 10.461 ioctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 10.462 isalnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 10.463 isalnum_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 10.464 isalpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 10.465 isalpha_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 10.466 isascii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 10.467 isastream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 10.468 isatty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 10.469 isblank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 10.470 isblank_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 10.471 iscntrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 10.472 iscntrl_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 10.473 isdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 10.474 isdigit_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 10.475 isfinite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 10.476 isgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 10.477 isgraph_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 10.478 isgreater. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 10.479 isgreaterequal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 10.480 isinf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 10.481 isless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 10.482 islessequal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 10.483 islessgreater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 10.484 islower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 10.485 islower_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 10.486 isnan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 10.487 isnormal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 10.488 isprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 10.489 isprint_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 10.490 ispunct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 10.491 ispunct_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 10.492 isspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 10.493 isspace_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 10.494 isunordered . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 10.495 isupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 10.496 isupper_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 10.497 iswalnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 10.498 iswalnum_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 10.499 iswalpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 10.500 iswalpha_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 10.501 iswblank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 10.502 iswblank_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 10.503 iswcntrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 10.504 iswcntrl_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 10.505 iswctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 10.506 iswctype_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 10.507 iswdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 10.508 iswdigit_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 10.509 iswgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 10.510 iswgraph_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 10.511 iswlower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 10.512 iswlower_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 10.513 iswprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 10.514 iswprint_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 10.515 iswpunct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 10.516 iswpunct_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 10.517 iswspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 10.518 iswspace_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 10.519 iswupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 10.520 iswupper_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 10.521 iswxdigit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 10.522 iswxdigit_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 10.523 isxdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 10.524 isxdigit_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 10.525 j0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 10.526 j1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 10.527 jn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 10.528 jrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.529 kill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.530 killpg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.531 l64a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.532 labs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 10.533 lchown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 10.534 lcong48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 10.535 ldexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 10.536 ldexpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 10.537 ldexpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 10.538 ldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 10.539 lfind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.540 lgamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.541 lgammaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.542 lgammal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.543 link. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 10.544 linkat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 10.545 lio_listio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 10.546 listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 10.547 llabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 10.548 lldiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 10.549 llogb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 10.550 llogbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.551 llogbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.552 llrint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.553 llrintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.554 llrintl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 10.555 llround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 10.556 llroundf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 10.557 llroundl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 10.558 localeconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 10.559 localtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 10.560 localtime_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 10.561 lockf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 10.562 log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 10.563 log10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 10.564 log10f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 10.565 log10l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 10.566 log1p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 10.567 log1pf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 10.568 log1pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 10.569 log2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 10.570 log2f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 10.571 log2l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 10.572 logb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 10.573 logbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.574 logbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.575 logf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.576 logl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 10.577 longjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 10.578 lrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 10.579 lrint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 10.580 lrintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 10.581 lrintl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 10.582 lround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 10.583 lroundf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 10.584 lroundl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 10.585 lsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 10.586 lseek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 10.587 lstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 10.588 malloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 10.589 mblen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 10.590 mbrlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 10.591 mbrtoc8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 10.592 mbrtoc16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 10.593 mbrtoc32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 10.594 mbrtowc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 10.595 mbsinit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 10.596 mbsnrtowcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 10.597 mbsrtowcs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 10.598 mbstowcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 10.599 mbtowc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 10.600 memccpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 10.601 memchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 10.602 memcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 10.603 memcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 10.604 memmove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 10.605 memset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 10.606 memset_explicit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 10.607 mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 10.608 mkdirat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 10.609 mkdtemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 10.610 mkfifo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 10.611 mkfifoat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 10.612 mknod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 10.613 mknodat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 10.614 mkstemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 10.615 mktime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 10.616 mlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 10.617 mlockall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 10.618 mmap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 10.619 modf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 10.620 modff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 10.621 modfl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 10.622 mprotect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 10.623 mq_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 10.624 mq_getattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 10.625 mq_notify. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 10.626 mq_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 10.627 mq_receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 10.628 mq_send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 10.629 mq_setattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.630 mq_timedreceive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.631 mq_timedsend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.632 mq_unlink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.633 mrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 10.634 msgctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 10.635 msgget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 10.636 msgrcv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 10.637 msgsnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 10.638 msync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 10.639 mtx_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 10.640 mtx_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 10.641 mtx_lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.642 mtx_timedlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.643 mtx_trylock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.644 mtx_unlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.645 munlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 10.646 munlockall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 10.647 munmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 10.648 nan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 10.649 nanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 10.650 nanl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 10.651 nanosleep. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 10.652 nearbyint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 10.653 nearbyintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 10.654 nearbyintl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 10.655 newlocale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 10.656 nextafter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 10.657 nextafterf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.658 nextafterl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.659 nextdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.660 nextdownf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.661 nextdownl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 10.662 nexttoward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 10.663 nexttowardf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 10.664 nexttowardl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 10.665 nextup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.666 nextupf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.667 nextupl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.668 nftw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 10.669 nice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 10.670 nl_langinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 10.671 nl_langinfo_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 10.672 nrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 10.673 ntohl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 10.674 ntohs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 10.675 open. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.676 openat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 10.677 opendir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 10.678 openlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 10.679 open_memstream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.680 open_wmemstream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.681 optarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.682 opterr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.683 optind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10.684 optopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10.685 pathconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10.686 pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10.687 pclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10.688 perror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.689 pipe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.690 poll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.691 popen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 10.692 posix_fadvise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 10.693 posix_fallocate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 10.694 posix_madvise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 10.695 posix_mem_offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 10.696 posix_memalign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 10.697 posix_openpt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.698 posix_spawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

10.699 posix_spawn_file_actions_addclose . . . . . . . . . . . . . . . . . . . 306
10.700 posix_spawn_file_actions_adddup2 . . . . . . . . . . . . . . . . . . . . 306
10.701 posix_spawn_file_actions_addopen . . . . . . . . . . . . . . . . . . . . 306
10.702 posix_spawn_file_actions_destroy . . . . . . . . . . . . . . . . . . . . 307

10.703 posix_spawn_file_actions_init . . . . . . . . . . . . . . . . . . . . . . . . 307 10.704 posix_spawnattr_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 10.705 posix_spawnattr_getflags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 10.706 posix_spawnattr_getpgroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.707 posix_spawnattr_getschedparam . . . . . . . . . . . . . . . . . . . . . . . . 308 10.708 posix_spawnattr_getschedpolicy . . . . . . . . . . . . . . . . . . . . . . . 308 10.709 posix_spawnattr_getsigdefault . . . . . . . . . . . . . . . . . . . . . . . . 308 10.710 posix_spawnattr_getsigmask. . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 10.711 posix_spawnattr_init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 10.712 posix_spawnattr_setflags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 10.713 posix_spawnattr_setpgroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.714 posix_spawnattr_setschedparam . . . . . . . . . . . . . . . . . . . . . . . . 310 10.715 posix_spawnattr_setschedpolicy . . . . . . . . . . . . . . . . . . . . . . . 310 10.716 posix_spawnattr_setsigdefault . . . . . . . . . . . . . . . . . . . . . . . . 310 10.717 posix_spawnattr_setsigmask. . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 10.718 posix_spawnp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 10.719 posix_trace_attr_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 10.720 posix_trace_attr_getclockres . . . . . . . . . . . . . . . . . . . . . . . . . 312 10.721 posix_trace_attr_getcreatetime . . . . . . . . . . . . . . . . . . . . . . . 312 10.722 posix_trace_attr_getgenversion . . . . . . . . . . . . . . . . . . . . . . . 312 10.723 posix_trace_attr_getinherited . . . . . . . . . . . . . . . . . . . . . . . . 313

10.724 posix_trace_attr_getlogfullpolicy . . . . . . . . . . . . . . . . . . . 313

10.725 posix_trace_attr_getlogsize . . . . . . . . . . . . . . . . . . . . . . . . . . 313

10.726 posix_trace_attr_getmaxdatasize. . . . . . . . . . . . . . . . . . . . . . 313
10.727 posix_trace_attr_getmaxsystemeventsize . . . . . . . . . . . . . 314
10.728 posix_trace_attr_getmaxusereventsize. . . . . . . . . . . . . . . . 314

10.729 posix_trace_attr_getname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

10.730 posix_trace_attr_getstreamfullpolicy. . . . . . . . . . . . . . . . 315

10.731 posix_trace_attr_getstreamsize . . . . . . . . . . . . . . . . . . . . . . . 315 10.732 posix_trace_attr_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.733 posix_trace_attr_setinherited . . . . . . . . . . . . . . . . . . . . . . . . 315

10.734 posix_trace_attr_setlogfullpolicy . . . . . . . . . . . . . . . . . . . 316

10.735 posix_trace_attr_setlogsize . . . . . . . . . . . . . . . . . . . . . . . . . . 316

10.736 posix_trace_attr_setmaxdatasize. . . . . . . . . . . . . . . . . . . . . . 316

10.737 posix_trace_attr_setname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

10.738 posix_trace_attr_setstreamfullpolicy. . . . . . . . . . . . . . . . 317

10.739 posix_trace_attr_setstreamsize . . . . . . . . . . . . . . . . . . . . . . . 317 10.740 posix_trace_clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 10.741 posix_trace_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.742 posix_trace_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.743 posix_trace_create_withlog. . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.744 posix_trace_event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 10.745 posix_trace_eventid_equal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 10.746 posix_trace_eventid_get_name . . . . . . . . . . . . . . . . . . . . . . . . . 319 10.747 posix_trace_eventid_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 10.748 posix_trace_eventset_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 10.749 posix_trace_eventset_del . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 10.750 posix_trace_eventset_empty. . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 10.751 posix_trace_eventset_fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 10.752 posix_trace_eventset_ismember . . . . . . . . . . . . . . . . . . . . . . . . 321

10.753 posix_trace_eventtypelist_getnext_id. . . . . . . . . . . . . . . . 321
10.754 posix_trace_eventtypelist_rewind . . . . . . . . . . . . . . . . . . . . 321

10.755 posix_trace_flush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 10.756 posix_trace_get_attr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 10.757 posix_trace_get_filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 10.758 posix_trace_get_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 10.759 posix_trace_getnext_event. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 10.760 posix_trace_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 10.761 posix_trace_rewind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 10.762 posix_trace_set_filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 10.763 posix_trace_shutdown. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 10.764 posix_trace_start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 10.765 posix_trace_stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 10.766 posix_trace_timedgetnext_event . . . . . . . . . . . . . . . . . . . . . . . 325 10.767 posix_trace_trid_eventid_open . . . . . . . . . . . . . . . . . . . . . . . . 325 10.768 posix_trace_trygetnext_event . . . . . . . . . . . . . . . . . . . . . . . . . 325 10.769 posix_typed_mem_get_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 10.770 posix_typed_mem_open. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 10.771 pow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 10.772 powf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 10.773 powl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 10.774 pread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 10.775 printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 10.776 pselect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 10.777 psiginfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 10.778 psignal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 10.779 pthread_atfork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 10.780 pthread_attr_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 10.781 pthread_attr_getdetachstate . . . . . . . . . . . . . . . . . . . . . . . . . . 330 10.782 pthread_attr_getguardsize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 10.783 pthread_attr_getinheritsched . . . . . . . . . . . . . . . . . . . . . . . . . 331 10.784 pthread_attr_getschedparam. . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 10.785 pthread_attr_getschedpolicy . . . . . . . . . . . . . . . . . . . . . . . . . . 331 10.786 pthread_attr_getscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 10.787 pthread_attr_getstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 10.788 pthread_attr_getstacksize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 10.789 pthread_attr_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 10.790 pthread_attr_setdetachstate . . . . . . . . . . . . . . . . . . . . . . . . . . 333 10.791 pthread_attr_setguardsize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 10.792 pthread_attr_setinheritsched . . . . . . . . . . . . . . . . . . . . . . . . . 333 10.793 pthread_attr_setschedparam. . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 10.794 pthread_attr_setschedpolicy . . . . . . . . . . . . . . . . . . . . . . . . . . 334 10.795 pthread_attr_setscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 10.796 pthread_attr_setstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 10.797 pthread_attr_setstacksize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 10.798 pthread_barrier_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 10.799 pthread_barrier_init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 10.800 pthread_barrier_wait. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 10.801 pthread_barrierattr_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . 335 10.802 pthread_barrierattr_getpshared . . . . . . . . . . . . . . . . . . . . . . . 336 10.803 pthread_barrierattr_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 10.804 pthread_barrierattr_setpshared . . . . . . . . . . . . . . . . . . . . . . . 336 10.805 pthread_cancel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 10.806 pthread_cleanup_pop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 10.807 pthread_cleanup_push. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 10.808 pthread_cond_broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 10.809 pthread_cond_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 10.810 pthread_cond_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 10.811 pthread_cond_signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 10.812 pthread_cond_timedwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 10.813 pthread_cond_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 10.814 pthread_condattr_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 10.815 pthread_condattr_getclock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 10.816 pthread_condattr_getpshared . . . . . . . . . . . . . . . . . . . . . . . . . . 339 10.817 pthread_condattr_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 10.818 pthread_condattr_setclock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 10.819 pthread_condattr_setpshared . . . . . . . . . . . . . . . . . . . . . . . . . . 340 10.820 pthread_create. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 10.821 pthread_detach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 10.822 pthread_equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 10.823 pthread_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 10.824 pthread_getconcurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 10.825 pthread_getcpuclockid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 10.826 pthread_getschedparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 10.827 pthread_getspecific . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 10.828 pthread_join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 10.829 pthread_key_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 10.830 pthread_key_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 10.831 pthread_kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 10.832 pthread_mutex_consistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 10.833 pthread_mutex_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 10.834 pthread_mutex_getprioceiling . . . . . . . . . . . . . . . . . . . . . . . . . 344 10.835 pthread_mutex_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 10.836 pthread_mutex_lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 10.837 pthread_mutex_setprioceiling . . . . . . . . . . . . . . . . . . . . . . . . . 345 10.838 pthread_mutex_timedlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 10.839 pthread_mutex_trylock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 10.840 pthread_mutex_unlock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 10.841 pthread_mutexattr_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

10.842 pthread_mutexattr_getprioceiling . . . . . . . . . . . . . . . . . . . . 346

10.843 pthread_mutexattr_getprotocol . . . . . . . . . . . . . . . . . . . . . . . . 346 10.844 pthread_mutexattr_getpshared . . . . . . . . . . . . . . . . . . . . . . . . . 347 10.845 pthread_mutexattr_getrobust . . . . . . . . . . . . . . . . . . . . . . . . . . 347 10.846 pthread_mutexattr_gettype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 10.847 pthread_mutexattr_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

10.848 pthread_mutexattr_setprioceiling . . . . . . . . . . . . . . . . . . . . 348

10.849 pthread_mutexattr_setprotocol . . . . . . . . . . . . . . . . . . . . . . . . 348 10.850 pthread_mutexattr_setpshared . . . . . . . . . . . . . . . . . . . . . . . . . 348 10.851 pthread_mutexattr_setrobust . . . . . . . . . . . . . . . . . . . . . . . . . . 348 10.852 pthread_mutexattr_settype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 10.853 pthread_once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 10.854 pthread_rwlock_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 10.855 pthread_rwlock_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 10.856 pthread_rwlock_rdlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 10.857 pthread_rwlock_timedrdlock. . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 10.858 pthread_rwlock_timedwrlock. . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 10.859 pthread_rwlock_tryrdlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 10.860 pthread_rwlock_trywrlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 10.861 pthread_rwlock_unlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 10.862 pthread_rwlock_wrlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 10.863 pthread_rwlockattr_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 10.864 pthread_rwlockattr_getpshared . . . . . . . . . . . . . . . . . . . . . . . . 352 10.865 pthread_rwlockattr_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 10.866 pthread_rwlockattr_setpshared . . . . . . . . . . . . . . . . . . . . . . . . 353 10.867 pthread_self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 10.868 pthread_setcancelstate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 10.869 pthread_setcanceltype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 10.870 pthread_setconcurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 10.871 pthread_setschedparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 10.872 pthread_setschedprio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 10.873 pthread_setspecific . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 10.874 pthread_sigmask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 10.875 pthread_spin_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 10.876 pthread_spin_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 10.877 pthread_spin_lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 10.878 pthread_spin_trylock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 10.879 pthread_spin_unlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 10.880 pthread_testcancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 10.881 ptsname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 10.882 putc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 10.883 putc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 10.884 putchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 10.885 putchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 10.886 putenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 10.887 putmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 10.888 putpmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 10.889 puts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 10.890 pututxline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 10.891 putwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 10.892 putwchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 10.893 pwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 10.894 qsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 10.895 quick_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 10.896 raise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 10.897 rand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 10.898 rand_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 10.899 random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 10.900 read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 10.901 readdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 10.902 readdir_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 10.903 readlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 10.904 readlinkat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 10.905 readv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 10.906 realloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 10.907 realpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 10.908 recv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 10.909 recvfrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 10.910 recvmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 10.911 regcomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 10.912 regerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 10.913 regexec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 10.914 regfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 10.915 remainder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 10.916 remainderf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 10.917 remainderl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 10.918 remove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 10.919 remque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 10.920 remquo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 10.921 remquof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 10.922 remquol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 10.923 rename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 10.924 renameat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 10.925 rewind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 10.926 rewinddir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 10.927 rint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 10.928 rintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 10.929 rintl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 10.930 rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 10.931 round . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 10.932 roundeven. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 10.933 roundevenf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 10.934 roundevenl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 10.935 roundf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 10.936 roundl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 10.937 scalbln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 10.938 scalblnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 10.939 scalblnl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 10.940 scalbn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 10.941 scalbnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 10.942 scalbnl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 10.943 scandir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 10.944 scanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 10.945 sched_get_priority_max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 10.946 sched_get_priority_min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 10.947 sched_getparam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 10.948 sched_getscheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 10.949 sched_rr_get_interval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 10.950 sched_setparam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 10.951 sched_setscheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 10.952 sched_yield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 10.953 seed48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 10.954 seekdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 10.955 select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 10.956 sem_close. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 10.957 sem_destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 10.958 sem_getvalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 10.959 sem_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 10.960 sem_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 10.961 sem_post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 10.962 sem_timedwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 10.963 sem_trywait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 10.964 sem_unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 10.965 sem_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 10.966 semctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 10.967 semget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 10.968 semop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 10.969 send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 10.970 sendmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 10.971 sendto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 10.972 setbuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 10.973 setegid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 10.974 setenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 10.975 seteuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 10.976 setgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 10.977 setgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 10.978 sethostent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 10.979 setitimer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 10.980 setjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 10.981 setkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 10.982 setlocale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 10.983 setlogmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 10.984 setnetent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 10.985 setpayload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 10.986 setpayloadf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 10.987 setpayloadl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 10.988 setpayloadsig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 10.989 setpayloadsigf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 10.990 setpayloadsigl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 10.991 setpgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 10.992 setpgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 10.993 setpriority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 10.994 setprotoent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 10.995 setpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 10.996 setregid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 10.997 setreuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 10.998 setrlimit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 10.999 setservent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 10.1000 setsid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 10.1001 setsockopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 10.1002 setstate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 10.1003 setuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 10.1004 setutxent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 10.1005 setvbuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 10.1006 shm_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 10.1007 shm_unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 10.1008 shmat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 10.1009 shmctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 10.1010 shmdt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 10.1011 shmget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 10.1012 shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 10.1013 sigaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 10.1014 sigaddset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 10.1015 sigaltstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 10.1016 sigdelset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 10.1017 sigemptyset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 10.1018 sigfillset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 10.1019 sighold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 10.1020 sigignore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 10.1021 siginterrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 10.1022 sigismember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 10.1023 siglongjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 10.1024 signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 10.1025 signbit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 10.1026 signgam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 10.1027 sigpause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 10.1028 sigpending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 10.1029 sigprocmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 10.1030 sigqueue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 10.1031 sigrelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 10.1032 sigset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 10.1033 sigsetjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 10.1034 sigsuspend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 10.1035 sigtimedwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 10.1036 sigwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 10.1037 sigwaitinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 10.1038 sin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 10.1039 sinf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 10.1040 sinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 10.1041 sinhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 10.1042 sinhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 10.1043 sinl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 10.1044 sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 10.1045 snprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 10.1046 sockatmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 10.1047 socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 10.1048 socketpair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 10.1049 sprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 10.1050 sqrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 10.1051 sqrtf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 10.1052 sqrtl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 10.1053 srand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 10.1054 srand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 10.1055 srandom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 10.1056 sscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 10.1057 stat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 10.1058 statvfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 10.1059 stdc_bit_ceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 10.1060 stdc_bit_floor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 10.1061 stdc_bit_width. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 10.1062 stdc_count_ones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 10.1063 stdc_count_zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 10.1064 stdc_first_leading_one . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 10.1065 stdc_first_leading_zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 10.1066 stdc_first_trailing_one . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 10.1067 stdc_first_trailing_zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 10.1068 stdc_has_single_bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 10.1069 stdc_leading_ones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 10.1070 stdc_leading_zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 10.1071 stdc_trailing_ones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 10.1072 stdc_trailing_zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 10.1073 stderr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 10.1074 stdin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 10.1075 stdout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 10.1076 stpcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 10.1077 stpncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 10.1078 strcasecmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 10.1079 strcasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 10.1080 strcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 10.1081 strchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 10.1082 strcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 10.1083 strcoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 10.1084 strcoll_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 10.1085 strcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 10.1086 strcspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 10.1087 strdup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 10.1088 strerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 10.1089 strerror_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 10.1090 strerror_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 10.1091 strfmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 10.1092 strfmon_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 10.1093 strfromd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 10.1094 strfromf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 10.1095 strfroml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 10.1096 strftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 10.1097 strftime_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 10.1098 strlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 10.1099 strncasecmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 10.1100 strncasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 10.1101 strncat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 10.1102 strncmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 10.1103 strncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 10.1104 strndup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 10.1105 strnlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 10.1106 strpbrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 10.1107 strptime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 10.1108 strrchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 10.1109 strsignal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 10.1110 strspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 10.1111 strstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 10.1112 strtod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 10.1113 strtof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 10.1114 strtoimax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 10.1115 strtok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 10.1116 strtok_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 10.1117 strtol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 10.1118 strtold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 10.1119 strtoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 10.1120 strtoul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 10.1121 strtoull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 10.1122 strtoumax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 10.1123 strxfrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 10.1124 strxfrm_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 10.1125 swab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 10.1126 swprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 10.1127 swscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 10.1128 symlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 10.1129 symlinkat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 10.1130 sync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 10.1131 sysconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 10.1132 syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 10.1133 system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 10.1134 tan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 10.1135 tanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 10.1136 tanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 10.1137 tanhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 10.1138 tanhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 10.1139 tanl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 10.1140 tcdrain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 10.1141 tcflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 10.1142 tcflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 10.1143 tcgetattr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 10.1144 tcgetpgrp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 10.1145 tcgetsid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 10.1146 tcsendbreak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 10.1147 tcsetattr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 10.1148 tcsetpgrp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 10.1149 tdelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 10.1150 telldir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 10.1151 tempnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 10.1152 tfind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 10.1153 tgamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 10.1154 tgammaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 10.1155 tgammal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 10.1156 thrd_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 10.1157 thrd_current . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 10.1158 thrd_detach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 10.1159 thrd_equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 10.1160 thrd_exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 10.1161 thrd_join. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 10.1162 thrd_sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 10.1163 thrd_yield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 10.1164 time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 10.1165 timegm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 10.1166 timer_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 10.1167 timer_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 10.1168 timer_getoverrun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 10.1169 timer_gettime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 10.1170 timer_settime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 10.1171 times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 10.1172 timespec_getres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 10.1173 timezone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 10.1174 tmpfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 10.1175 tmpnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 10.1176 toascii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 10.1177 tolower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 10.1178 tolower_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 10.1179 totalorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 10.1180 totalorderf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 10.1181 totalorderl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 10.1182 totalordermag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 10.1183 totalordermagf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 10.1184 totalordermagl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 10.1185 toupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 10.1186 toupper_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 10.1187 towctrans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 10.1188 towctrans_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 10.1189 towlower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 10.1190 towlower_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 10.1191 towupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 10.1192 towupper_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 10.1193 trunc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 10.1194 truncate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 10.1195 truncf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 10.1196 truncl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 10.1197 tsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 10.1198 tss_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 10.1199 tss_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 10.1200 tss_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 10.1201 tss_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 10.1202 ttyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 10.1203 ttyname_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 10.1204 twalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 10.1205 tzname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 10.1206 tzset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 10.1207 ufromfp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 10.1208 ufromfpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 10.1209 ufromfpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 10.1210 ufromfpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 10.1211 ufromfpxf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 10.1212 ufromfpxl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 10.1213 ulimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 10.1214 umask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 10.1215 uname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 10.1216 ungetc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 10.1217 ungetwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 10.1218 unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 10.1219 unlinkat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 10.1220 unlockpt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 10.1221 unsetenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 10.1222 uselocale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 10.1223 utime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 10.1224 utimensat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 10.1225 utimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 10.1226 va_arg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 10.1227 va_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 10.1228 va_end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 10.1229 va_start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 10.1230 vdprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 10.1231 vfprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 10.1232 vfscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 10.1233 vfwprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 10.1234 vfwscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 10.1235 vprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 10.1236 vscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 10.1237 vsnprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 10.1238 vsprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 10.1239 vsscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 10.1240 vswprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 10.1241 vswscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 10.1242 vwprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 10.1243 vwscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 10.1244 wait. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 10.1245 waitid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 10.1246 waitpid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 10.1247 wcpcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 10.1248 wcpncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 10.1249 wcrtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 10.1250 wcscasecmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 10.1251 wcscasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 10.1252 wcscat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 10.1253 wcschr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 10.1254 wcscmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 10.1255 wcscoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 10.1256 wcscoll_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 10.1257 wcscpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 10.1258 wcscspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 10.1259 wcsdup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 10.1260 wcsftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 10.1261 wcslen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 10.1262 wcsncasecmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 10.1263 wcsncasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 10.1264 wcsncat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 10.1265 wcsncmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 10.1266 wcsncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 10.1267 wcsnlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 10.1268 wcsnrtombs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 10.1269 wcspbrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 10.1270 wcsrchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 10.1271 wcsrtombs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 10.1272 wcsspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 10.1273 wcsstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 10.1274 wcstod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 10.1275 wcstof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 10.1276 wcstoimax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 10.1277 wcstok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 10.1278 wcstol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 10.1279 wcstold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 10.1280 wcstoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 10.1281 wcstombs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 10.1282 wcstoul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 10.1283 wcstoull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 10.1284 wcstoumax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 10.1285 wcswidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 10.1286 wcsxfrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 10.1287 wcsxfrm_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 10.1288 wctob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 10.1289 wctomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 10.1290 wctrans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 10.1291 wctrans_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 10.1292 wctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 10.1293 wctype_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 10.1294 wcwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 10.1295 wmemchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 10.1296 wmemcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 10.1297 wmemcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 10.1298 wmemmove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 10.1299 wmemset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 10.1300 wordexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 10.1301 wordfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 10.1302 wprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 10.1303 write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 10.1304 writev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 10.1305 wscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 10.1306 y0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 10.1307 y1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 10.1308 yn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498

11 Past POSIX Function Substitutes . . . . . . . . . . 499

11.1 bcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 11.2 bcopy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 11.3 bsd_signal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 11.4 bzero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 11.5 ecvt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 11.6 fcvt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 11.7 ftime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 11.8 gcvt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 11.9 getcontext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 11.10 gethostbyaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 11.11 gethostbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 11.12 getwd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 11.13 h_errno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 11.14 index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 11.15 makecontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 11.16 mktemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 11.17 pthread_attr_getstackaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 11.18 pthread_attr_setstackaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 11.19 rindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 11.20 scalb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 11.21 setcontext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 11.22 swapcontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 11.23 ualarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 11.24 usleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 11.25 vfork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 11.26 wcswcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505

12 Glibc Header File Substitutes. . . . . . . . . . . . . . . 507

12.1 a.out.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 12.2 aliases.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 12.3 alloca.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 12.4 ar.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 12.5 argp.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 12.6 argz.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 12.7 byteswap.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 12.8 crypt.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 12.9 endian.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 12.10 envz.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 12.11 err.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 12.12 error.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 12.13 execinfo.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 12.14 fpu_control.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 12.15 fstab.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 12.16 fts.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 12.17 getopt.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 12.18 gshadow.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 12.19 ieee754.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 12.20 ifaddrs.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 12.21 libintl.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 12.22 link.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 12.23 malloc.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 12.24 mcheck.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 12.25 mntent.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 12.26 obstack.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 12.27 paths.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 12.28 printf.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 12.29 pty.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 12.30 resolv.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 12.31 shadow.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 12.32 sys/file.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 12.33 sys/ioctl.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 12.34 sys/random.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 12.35 sysexits.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 12.36 ttyent.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 12.37 utmp.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

13 Glibc Function Substitutes . . . . . . . . . . . . . . . . . . 520

13.1 Glibc Extensions to <aio.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

13.1.1 aio_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 13.2 Glibc <aliases.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

13.2.1 endaliasent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 13.2.2 getaliasbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 13.2.3 getaliasbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 13.2.4 getaliasent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 13.2.5 getaliasent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 13.2.6 setaliasent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522

13.3 Glibc <argp.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 13.3.1 argp_err_exit_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 13.3.2 argp_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 13.3.3 argp_failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 13.3.4 argp_help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 13.3.5 argp_parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 13.3.6 argp_program_bug_address . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 13.3.7 argp_program_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 13.3.8 argp_program_version_hook . . . . . . . . . . . . . . . . . . . . . . . . . . 524 13.3.9 argp_state_help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 13.3.10 argp_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

13.4 Glibc <argz.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 13.4.1 argz_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 13.4.2 argz_add_sep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 13.4.3 argz_append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 13.4.4 argz_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 13.4.5 argz_create. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 13.4.6 argz_create_sep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 13.4.7 argz_delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 13.4.8 argz_extract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 13.4.9 argz_insert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 13.4.10 argz_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 13.4.11 argz_replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 13.4.12 argz_stringify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

13.5 Glibc Extensions to <arpa/inet.h> . . . . . . . . . . . . . . . . . . . . . . . . 529 13.5.1 inet_aton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 13.5.2 inet_lnaof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 13.5.3 inet_makeaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 13.5.4 inet_net_ntop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 13.5.5 inet_net_pton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 13.5.6 inet_netof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 13.5.7 inet_network. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 13.5.8 inet_nsap_addr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 13.5.9 inet_nsap_ntoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

13.6 Glibc <byteswap.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 13.6.1 bswap_16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 13.6.2 bswap_32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 13.6.3 bswap_64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532

13.7 Glibc Extensions to <complex.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 532 13.7.1 clog10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 13.7.2 clog10f. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 13.7.3 clog10l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

13.8 Glibc Extensions to <ctype.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

13.8.1 isctype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 13.9 Glibc Extensions to <dirent.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

13.9.1 getdirentries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 13.9.2 scandirat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 13.9.3 versionsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534

13.10 Glibc Extensions to <dlfcn.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 13.10.1 dladdr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 13.10.2 dladdr1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 13.10.3 dlinfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 13.10.4 dlmopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 13.10.5 dlvsym. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

13.11 Glibc <envz.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 13.11.1 envz_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 13.11.2 envz_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 13.11.3 envz_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 13.11.4 envz_merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 13.11.5 envz_remove. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 13.11.6 envz_strip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

13.12 Glibc <err.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 13.12.1 err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 13.12.2 errx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 13.12.3 verr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 13.12.4 verrx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 13.12.5 vwarn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 13.12.6 vwarnx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 13.12.7 warn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 13.12.8 warnx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

13.13 Glibc Extensions to <errno.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 13.13.1 program_invocation_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 13.13.2 program_invocation_short_name . . . . . . . . . . . . . . . . . . . . . 541

13.14 Glibc <error.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 13.14.1 error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 13.14.2 error_at_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 13.14.3 error_message_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 13.14.4 error_one_per_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 13.14.5 error_print_progname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542

13.15 Glibc <execinfo.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 13.15.1 backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 13.15.2 backtrace_symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 13.15.3 backtrace_symbols_fd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544

13.16 Glibc Extensions to <fcntl.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 13.16.1 fallocate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 13.16.2 name_to_handle_at. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 13.16.3 readahead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 13.16.4 open_by_handle_at. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 13.16.5 sync_file_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

13.17 Glibc Extensions to <fenv.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 13.17.1 fedisableexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 13.17.2 feenableexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 13.17.3 fegetexcept. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

13.18 Glibc Extensions to <fmtmsg.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . 547

13.18.1 addseverity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 13.19 Glibc <fstab.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547

13.19.1 endfsent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 13.19.2 getfsent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 13.19.3 getfsfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 13.19.4 getfsspec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 13.19.5 setfsent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548

13.20 Glibc <fts.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.20.1 fts_children . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.20.2 fts_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.20.3 fts_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.20.4 fts_read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.20.5 fts_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

13.21 Glibc <getopt.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 13.21.1 getopt_long. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

13.21.2 getopt_long_only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 13.22 Glibc Extensions to <glob.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

13.22.1 glob_pattern_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 13.23 Glibc Extensions to <gnu/libc-version.h>. . . . . . . . . . . . . . . . 552

13.23.1 gnu_get_libc_release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 13.23.2 gnu_get_libc_version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

13.24 Glibc Extensions to <grp.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 13.24.1 fgetgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 13.24.2 fgetgrent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 13.24.3 getgrent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 13.24.4 getgrouplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 13.24.5 initgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 13.24.6 putgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 13.24.7 setgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

13.25 Glibc <gshadow.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 13.25.1 endsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 13.25.2 fgetsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 13.25.3 fgetsgent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 13.25.4 getsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 13.25.5 getsgent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 13.25.6 getsgnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 13.25.7 getsgnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 13.25.8 putsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 13.25.9 setsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 13.25.10 sgetsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 13.25.11 sgetsgent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557

13.26 Glibc <ifaddrs.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 13.26.1 getifaddrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 13.26.2 freeifaddrs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

13.27 Glibc <libintl.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 13.27.1 bind_textdomain_codeset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 13.27.2 bindtextdomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 13.27.3 dcgettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 13.27.4 dcngettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 13.27.5 dgettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 13.27.6 dngettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 13.27.7 gettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 13.27.8 ngettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 13.27.9 textdomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

13.28 Glibc <link.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

13.28.1 dl_iterate_phdr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 13.29 Glibc <malloc.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562

13.29.1 mallinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 13.29.2 mallinfo2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 13.29.3 malloc_info. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 13.29.4 malloc_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 13.29.5 malloc_trim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 13.29.6 malloc_usable_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 13.29.7 mallopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 13.29.8 memalign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 13.29.9 pvalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564

13.30 Glibc Extensions to <math.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 13.30.1 drem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 13.30.2 dremf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 13.30.3 dreml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 13.30.4 exp10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 13.30.5 exp10f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 13.30.6 exp10l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 13.30.7 finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 13.30.8 finitef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 13.30.9 finitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 13.30.10 gamma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 13.30.11 gammaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 13.30.12 gammal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 13.30.13 isinff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 13.30.14 isinfl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 13.30.15 isnanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 13.30.16 isnanl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 13.30.17 j0f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 13.30.18 j0l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 13.30.19 j1f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 13.30.20 j1l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 13.30.21 jnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 13.30.22 jnl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 13.30.23 lgamma_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 13.30.24 lgammaf_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 13.30.25 lgammal_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 13.30.26 matherr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 13.30.27 pow10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 13.30.28 pow10f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 13.30.29 pow10l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 13.30.30 scalbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 13.30.31 scalbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 13.30.32 significand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 13.30.33 significandf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 13.30.34 significandl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 13.30.35 sincos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 13.30.36 sincosf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 13.30.37 sincosl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 13.30.38 y0f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 13.30.39 y0l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 13.30.40 y1f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 13.30.41 y1l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 13.30.42 ynf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578

13.30.43 ynl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 13.31 Glibc <mcheck.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579

13.31.1 mcheck. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 13.31.2 mcheck_check_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 13.31.3 mcheck_pedantic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 13.31.4 mprobe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 13.31.5 mtrace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 13.31.6 muntrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

13.32 Glibc <mntent.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 13.32.1 addmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 13.32.2 endmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 13.32.3 getmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 13.32.4 getmntent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 13.32.5 hasmntopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 13.32.6 setmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582

13.33 Glibc Extensions to <netdb.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 13.33.1 endnetgrent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 13.33.2 gethostbyaddr_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 13.33.3 gethostbyname2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 13.33.4 gethostbyname2_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 13.33.5 gethostbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 13.33.6 gethostent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 13.33.7 getnetbyaddr_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 13.33.8 getnetbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 13.33.9 getnetent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 13.33.10 getnetgrent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 13.33.11 getnetgrent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 13.33.12 getprotobyname_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 13.33.13 getprotobynumber_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 13.33.14 getprotoent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 13.33.15 getservbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 13.33.16 getservbyport_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 13.33.17 getservent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 13.33.18 herror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 13.33.19 hstrerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 13.33.20 innetgr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 13.33.21 rcmd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 13.33.22 rcmd_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 13.33.23 rexec. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 13.33.24 rexec_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 13.33.25 rresvport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 13.33.26 rresvport_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 13.33.27 ruserok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 13.33.28 ruserok_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 13.33.29 setnetgrent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590

13.34 Glibc <netinet/ether.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 13.34.1 ether_aton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 13.34.2 ether_aton_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 13.34.3 ether_hostton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 13.34.4 ether_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 13.34.5 ether_ntoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 13.34.6 ether_ntoa_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 13.34.7 ether_ntohost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592

13.35 Glibc Extensions to <netinet/in.h>. . . . . . . . . . . . . . . . . . . . . . . 592 13.35.1 bindresvport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 13.35.2 getipv4sourcefilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 13.35.3 getsourcefilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 13.35.4 in6addr_any. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 13.35.5 in6addr_loopback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 13.35.6 inet6_option_alloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 13.35.7 inet6_option_append . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 13.35.8 inet6_option_find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 13.35.9 inet6_option_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 13.35.10 inet6_option_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 13.35.11 inet6_option_space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 13.35.12 inet6_opt_append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 13.35.13 inet6_opt_find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 13.35.14 inet6_opt_finish. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 13.35.15 inet6_opt_get_val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 13.35.16 inet6_opt_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 13.35.17 inet6_opt_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 13.35.18 inet6_opt_set_val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 13.35.19 inet6_rth_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 13.35.20 inet6_rth_getaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 13.35.21 inet6_rth_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 13.35.22 inet6_rth_reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 13.35.23 inet6_rth_segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 13.35.24 inet6_rth_space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 13.35.25 setipv4sourcefilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 13.35.26 setsourcefilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

13.36 Glibc <obstack.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 13.36.1 obstack_alloc_failed_handler. . . . . . . . . . . . . . . . . . . . . . . 597 13.36.2 obstack_exit_failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 13.36.3 obstack_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 13.36.4 obstack_printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 13.36.5 obstack_vprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600

13.37 Glibc Extensions to <poll.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

13.37.1 ppoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 13.38 Glibc <printf.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

13.38.1 parse_printf_format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 13.38.2 printf_size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 13.38.3 printf_size_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 13.38.4 register_printf_function . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 13.38.5 register_printf_modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 13.38.6 register_printf_specifier . . . . . . . . . . . . . . . . . . . . . . . . . . 603 13.38.7 register_printf_type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

13.39 Glibc Extensions to <pthread.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 603 13.39.1 pthread_attr_getaffinity_np. . . . . . . . . . . . . . . . . . . . . . . 603 13.39.2 pthread_attr_setaffinity_np. . . . . . . . . . . . . . . . . . . . . . . 603 13.39.3 pthread_attr_getsigmask_np . . . . . . . . . . . . . . . . . . . . . . . . 604 13.39.4 pthread_attr_setsigmask_np . . . . . . . . . . . . . . . . . . . . . . . . 604 13.39.5 pthread_clockjoin_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 13.39.6 pthread_cond_clockwait. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 13.39.7 pthread_getaffinity_np. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 13.39.8 pthread_getattr_default_np . . . . . . . . . . . . . . . . . . . . . . . . 605 13.39.9 pthread_getattr_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 13.39.10 pthread_getname_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 13.39.11 pthread_kill_other_threads_np . . . . . . . . . . . . . . . . . . . . 606 13.39.12 pthread_mutex_clocklock . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 13.39.13 pthread_rwlock_clockrdlock . . . . . . . . . . . . . . . . . . . . . . . . 606 13.39.14 pthread_rwlock_clockwrlock . . . . . . . . . . . . . . . . . . . . . . . . 607 13.39.15 pthread_rwlockattr_getkind_np . . . . . . . . . . . . . . . . . . . . 607 13.39.16 pthread_rwlockattr_setkind_np . . . . . . . . . . . . . . . . . . . . 607 13.39.17 pthread_setaffinity_np. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 13.39.18 pthread_setattr_default_np . . . . . . . . . . . . . . . . . . . . . . . . 608 13.39.19 pthread_setname_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 13.39.20 pthread_sigqueue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 13.39.21 pthread_timedjoin_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 13.39.22 pthread_tryjoin_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609

13.40 Glibc <pty.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 13.40.1 forkpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 13.40.2 openpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

13.41 Glibc Extensions to <pwd.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 13.41.1 fgetpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 13.41.2 fgetpwent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 13.41.3 getpw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 13.41.4 getpwent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 13.41.5 putpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612

13.42 Glibc Extensions to <regex.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 13.42.1 re_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 13.42.2 re_compile_fastmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 13.42.3 re_compile_pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 13.42.4 re_exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 13.42.5 re_match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 13.42.6 re_match_2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 13.42.7 re_search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 13.42.8 re_search_2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 13.42.9 re_set_registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 13.42.10 re_set_syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 13.42.11 re_syntax_options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614

13.43 Glibc <regexp.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 13.43.1 advance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 13.43.2 loc1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 13.43.3 loc2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 13.43.4 locs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 13.43.5 step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615

13.44 Glibc <resolv.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 13.44.1 dn_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 13.44.2 dn_expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 13.44.3 dn_skipname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 13.44.4 res_dnok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 13.44.5 res_hnok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 13.44.6 res_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 13.44.7 res_mailok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 13.44.8 res_mkquery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 13.44.9 res_nmkquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 13.44.10 res_nquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 13.44.11 res_nquerydomain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 13.44.12 res_nsearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 13.44.13 res_nsend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 13.44.14 res_ownok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 13.44.15 res_query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 13.44.16 res_querydomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 13.44.17 res_search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 13.44.18 res_send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619

13.45 Glibc <rpc/auth.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 13.45.1 authdes_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 13.45.2 authdes_pk_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 13.45.3 authnone_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 13.45.4 authunix_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 13.45.5 authunix_create_default . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 13.45.6 getnetname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 13.45.7 host2netname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 13.45.8 key_decryptsession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 13.45.9 key_decryptsession_pk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 13.45.10 key_encryptsession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 13.45.11 key_encryptsession_pk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 13.45.12 key_gendes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 13.45.13 key_get_conv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 13.45.14 key_secretkey_is_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 13.45.15 key_setsecret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 13.45.16 netname2host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 13.45.17 netname2user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 13.45.18 user2netname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 13.45.19 xdr_des_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 13.45.20 xdr_opaque_auth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623

13.46 Glibc <rpc/auth_des.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 13.46.1 authdes_getucred . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 13.46.2 getpublickey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 13.46.3 getsecretkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 13.46.4 rtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

13.47 Glibc <rpc/auth_unix.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

13.47.1 xdr_authunix_parms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 13.48 Glibc <rpc/clnt.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

13.48.1 callrpc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 13.48.2 clnt_create. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 13.48.3 clnt_pcreateerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 13.48.4 clnt_perrno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 13.48.5 clnt_perror. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 13.48.6 clnt_spcreateerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 13.48.7 clnt_sperrno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 13.48.8 clnt_sperror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 13.48.9 clntraw_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 13.48.10 clnttcp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 13.48.11 clntudp_bufcreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 13.48.12 clntudp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 13.48.13 clntunix_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 13.48.14 get_myaddress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 13.48.15 getrpcport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 13.48.16 rpc_createerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628

13.49 Glibc <rpc/key_prot.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 13.49.1 xdr_cryptkeyarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 13.49.2 xdr_cryptkeyarg2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 13.49.3 xdr_cryptkeyres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 13.49.4 xdr_getcredres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 13.49.5 xdr_key_netstarg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 13.49.6 xdr_key_netstres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 13.49.7 xdr_keybuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 13.49.8 xdr_keystatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 13.49.9 xdr_netnamestr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 13.49.10 xdr_unixcred . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629

13.50 Glibc <rpc/netdb.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 13.50.1 endrpcent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 13.50.2 getrpcbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 13.50.3 getrpcbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 13.50.4 getrpcbynumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 13.50.5 getrpcbynumber_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 13.50.6 getrpcent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 13.50.7 getrpcent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 13.50.8 setrpcent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

13.51 Glibc <rpc/pmap_clnt.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 13.51.1 clnt_broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 13.51.2 pmap_getmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 13.51.3 pmap_getport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 13.51.4 pmap_rmtcall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 13.51.5 pmap_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 13.51.6 pmap_unset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633

13.52 Glibc <rpc/pmap_prot.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 13.52.1 xdr_pmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 13.52.2 xdr_pmaplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633

13.53 Glibc <rpc/pmap_rmt.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 13.53.1 xdr_rmtcall_args . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 13.53.2 xdr_rmtcallres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634

13.54 Glibc <rpc/rpc_msg.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 13.54.1 xdr_callhdr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 13.54.2 xdr_callmsg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 13.54.3 xdr_replymsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

13.55 Glibc <rpc/svc.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 13.55.1 svc_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 13.55.2 svc_fdset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 13.55.3 svc_getreq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 13.55.4 svc_getreq_common . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 13.55.5 svc_getreq_poll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 13.55.6 svc_getreqset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 13.55.7 svc_max_pollfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 13.55.8 svc_pollfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 13.55.9 svc_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 13.55.10 svc_run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 13.55.11 svc_sendreply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 13.55.12 svc_unregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 13.55.13 svcerr_auth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 13.55.14 svcerr_decode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 13.55.15 svcerr_noproc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 13.55.16 svcerr_noprog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 13.55.17 svcerr_progvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 13.55.18 svcerr_systemerr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 13.55.19 svcerr_weakauth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 13.55.20 svcraw_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 13.55.21 svctcp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 13.55.22 svcudp_bufcreate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 13.55.23 svcudp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 13.55.24 svcunix_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 13.55.25 xprt_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 13.55.26 xprt_unregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640

13.56 Glibc <rpc/xdr.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 13.56.1 xdr_array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 13.56.2 xdr_bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 13.56.3 xdr_bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 13.56.4 xdr_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 13.56.5 xdr_double . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 13.56.6 xdr_enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 13.56.7 xdr_float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 13.56.8 xdr_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 13.56.9 xdr_hyper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 13.56.10 xdr_int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 13.56.11 xdr_int16_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 13.56.12 xdr_int32_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 13.56.13 xdr_int64_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 13.56.14 xdr_int8_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 13.56.15 xdr_long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 13.56.16 xdr_longlong_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 13.56.17 xdr_netobj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 13.56.18 xdr_opaque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 13.56.19 xdr_pointer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 13.56.20 xdr_quad_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 13.56.21 xdr_reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 13.56.22 xdr_short . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 13.56.23 xdr_sizeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 13.56.24 xdr_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 13.56.25 xdr_u_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 13.56.26 xdr_u_hyper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 13.56.27 xdr_u_int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 13.56.28 xdr_u_long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 13.56.29 xdr_u_longlong_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 13.56.30 xdr_u_quad_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 13.56.31 xdr_u_short. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 13.56.32 xdr_uint16_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 13.56.33 xdr_uint32_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 13.56.34 xdr_uint64_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 13.56.35 xdr_uint8_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 13.56.36 xdr_union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 13.56.37 xdr_vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 13.56.38 xdr_void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 13.56.39 xdr_wrapstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 13.56.40 xdrmem_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 13.56.41 xdrrec_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 13.56.42 xdrrec_endofrecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 13.56.43 xdrrec_eof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 13.56.44 xdrrec_skiprecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 13.56.45 xdrstdio_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650

13.57 Glibc <rpcsvc/nislib.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 13.57.1 nis_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 13.57.2 nis_add_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 13.57.3 nis_addmember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 13.57.4 nis_checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 13.57.5 nis_clone_object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 13.57.6 nis_creategroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 13.57.7 nis_destroy_object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 13.57.8 nis_destroygroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 13.57.9 nis_dir_cmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 13.57.10 nis_domain_of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 13.57.11 nis_domain_of_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 13.57.12 nis_first_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 13.57.13 nis_freenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 13.57.14 nis_freeresult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 13.57.15 nis_freeservlist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 13.57.16 nis_freetags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 13.57.17 nis_getnames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 13.57.18 nis_getservlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 13.57.19 nis_ismember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 13.57.20 nis_leaf_of. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 13.57.21 nis_leaf_of_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 13.57.22 nis_lerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 13.57.23 nis_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 13.57.24 nis_local_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 13.57.25 nis_local_group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 13.57.26 nis_local_host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 13.57.27 nis_local_principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 13.57.28 nis_lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 13.57.29 nis_mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 13.57.30 nis_modify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 13.57.31 nis_modify_entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 13.57.32 nis_name_of. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 13.57.33 nis_name_of_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 13.57.34 nis_next_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 13.57.35 nis_perror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 13.57.36 nis_ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 13.57.37 nis_print_directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 13.57.38 nis_print_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 13.57.39 nis_print_group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 13.57.40 nis_print_group_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 13.57.41 nis_print_link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 13.57.42 nis_print_object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 13.57.43 nis_print_result. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 13.57.44 nis_print_rights. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 13.57.45 nis_print_table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 13.57.46 nis_remove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 13.57.47 nis_remove_entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 13.57.48 nis_removemember. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 13.57.49 nis_rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 13.57.50 nis_servstate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 13.57.51 nis_sperrno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 13.57.52 nis_sperror. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 13.57.53 nis_sperror_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 13.57.54 nis_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 13.57.55 nis_verifygroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 13.58 Glibc <rpcsvc/nis_callback.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 660

13.58.1 xdr_cback_data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 13.58.2 xdr_obj_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660

13.59 Glibc <rpcsvc/yp.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 13.59.1 xdr_domainname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 13.59.2 xdr_keydat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 13.59.3 xdr_valdat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 13.59.4 xdr_ypbind_resptype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 13.59.5 xdr_ypmap_parms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 13.59.6 xdr_ypmaplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 13.59.7 xdr_yppushresp_xfr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 13.59.8 xdr_ypreq_key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 13.59.9 xdr_ypreq_nokey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 13.59.10 xdr_ypreq_xfr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 13.59.11 xdr_ypresp_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 13.59.12 xdr_ypresp_key_val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 13.59.13 xdr_ypresp_maplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 13.59.14 xdr_ypresp_master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 13.59.15 xdr_ypresp_order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 13.59.16 xdr_ypresp_val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 13.59.17 xdr_ypresp_xfr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 13.59.18 xdr_ypstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 13.59.19 xdr_ypxfrstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664

13.60 Glibc <rpcsvc/ypclnt.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 13.60.1 yp_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 13.60.2 yp_bind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 13.60.3 yp_first . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 13.60.4 yp_get_default_domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 13.60.5 yp_master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 13.60.6 yp_match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 13.60.7 yp_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 13.60.8 yp_order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 13.60.9 yp_unbind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 13.60.10 ypbinderr_string. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 13.60.11 yperr_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 13.60.12 ypprot_err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666

13.61 Glibc Extensions to <sched.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 13.61.1 clone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 13.61.2 getcpu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 13.61.3 sched_getaffinity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 13.61.4 sched_getcpu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 13.61.5 sched_setaffinity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 13.61.6 setns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

13.62 Glibc Extensions to <search.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 13.62.1 hcreate_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 13.62.2 hdestroy_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 13.62.3 hsearch_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 13.62.4 tdestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 13.62.5 twalk_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

13.63 Glibc Extensions to <selinux/selinux.h> . . . . . . . . . . . . . . . . . 670 13.63.1 fgetfilecon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 13.63.2 getfilecon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 13.63.3 lgetfilecon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670

13.64 Glibc Extensions to <semaphore.h> . . . . . . . . . . . . . . . . . . . . . . . . 671

13.64.1 sem_clockwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 13.65 Glibc <shadow.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671

13.65.1 endspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 13.65.2 fgetspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 13.65.3 fgetspent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 13.65.4 getspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 13.65.5 getspent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 13.65.6 getspnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 13.65.7 getspnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 13.65.8 lckpwdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 13.65.9 putspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 13.65.10 setspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 13.65.11 sgetspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 13.65.12 sgetspent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 13.65.13 ulckpwdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

13.66 Glibc Extensions to <signal.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 13.66.1 gsignal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 13.66.2 sigandset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 13.66.3 sigblock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 13.66.4 siggetmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 13.66.5 sigisemptyset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 13.66.6 sigorset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 13.66.7 sigreturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 13.66.8 sigsetmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 13.66.9 sigstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 13.66.10 sigvec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 13.66.11 ssignal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 13.66.12 sys_siglist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 13.66.13 sysv_signal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 13.66.14 tgkill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

13.67 Glibc Extensions to <spawn.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679

13.67.1 posix_spawn_file_actions_addchdir_np . . . . . . . . . . . . . 679
13.67.2 posix_spawn_file_actions_addclosefrom_np . . . . . . . . 679
13.67.3 posix_spawn_file_actions_addfchdir_np . . . . . . . . . . . . 679

13.68 Glibc Extensions to <stdio.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 13.68.1 asprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 13.68.2 cuserid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 13.68.3 clearerr_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 13.68.4 fcloseall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 13.68.5 feof_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 13.68.6 ferror_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 13.68.7 fflush_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 13.68.8 fgetc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 13.68.9 fgets_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 13.68.10 fileno_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 13.68.11 fopencookie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 13.68.12 fputc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 13.68.13 fputs_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 13.68.14 fread_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 13.68.15 fwrite_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 13.68.16 getw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 13.68.17 putw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 13.68.18 renameat2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 13.68.19 setbuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 13.68.20 setlinebuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 13.68.21 sys_errlist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 13.68.22 sys_nerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 13.68.23 tmpnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 13.68.24 vasprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688

13.69 Glibc Extensions to <stdlib.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 13.69.1 canonicalize_file_name. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 13.69.2 cfree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 13.69.3 clearenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 13.69.4 drand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 13.69.5 ecvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 13.69.6 erand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 13.69.7 fcvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 13.69.8 getloadavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 13.69.9 getpt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 13.69.10 initstate_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692 13.69.11 jrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692 13.69.12 lcong48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 13.69.13 lrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 13.69.14 mkostemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 13.69.15 mkostemps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 13.69.16 mkstemps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 13.69.17 mrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 13.69.18 nrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 13.69.19 on_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 13.69.20 ptsname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 13.69.21 qecvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 13.69.22 qecvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 13.69.23 qfcvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 13.69.24 qfcvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 13.69.25 qgcvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 13.69.26 qsort_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 13.69.27 random_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 13.69.28 rpmatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 13.69.29 secure_getenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 13.69.30 seed48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 13.69.31 setstate_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 13.69.32 srand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 13.69.33 srandom_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 13.69.34 strtod_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 13.69.35 strtof_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 13.69.36 strtol_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 13.69.37 strtold_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 13.69.38 strtoll_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 13.69.39 strtoq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 13.69.40 strtoul_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 13.69.41 strtoull_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 13.69.42 strtouq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 13.69.43 valloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702

13.70 Glibc Extensions to <string.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 13.70.1 explicit_bzero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 13.70.2 ffsl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 13.70.3 ffsll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 13.70.4 memfrob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 13.70.5 memmem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 13.70.6 mempcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 13.70.7 memrchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 13.70.8 rawmemchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 13.70.9 sigabbrev_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 13.70.10 sigdescr_np. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 13.70.11 strcasestr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 13.70.12 strchrnul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 13.70.13 strerrordesc_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 13.70.14 strerrorname_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 13.70.15 strfry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 13.70.16 strsep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 13.70.17 strverscmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708

13.71 Glibc <sys/auxv.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709

13.71.1 getauxval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 13.72 Glibc <sys/capability.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709

13.72.1 capget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 13.72.2 capset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710

13.73 Glibc <sys/epoll.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 13.73.1 epoll_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 13.73.2 epoll_create1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 13.73.3 epoll_ctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 13.73.4 epoll_pwait. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 13.73.5 epoll_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711

13.74 Glibc <sys/eventfd.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 13.74.1 eventfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 13.74.2 eventfd_read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 13.74.3 eventfd_write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712

13.75 Glibc <sys/fanotify.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 13.75.1 fanotify_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 13.75.2 fanotify_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712

13.76 Glibc <sys/file.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713

13.76.1 flock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 13.77 Glibc <sys/fsuid.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713

13.77.1 setfsgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 13.77.2 setfsuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713

13.78 Glibc <sys/gmon.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713

13.78.1 monstartup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 13.79 Glibc <sys/inotify.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714

13.79.1 inotify_add_watch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 13.79.2 inotify_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 13.79.3 inotify_init1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 13.79.4 inotify_rm_watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715

13.80 Glibc <sys/io.h>, <sys/perm.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 715 13.80.1 ioperm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 13.80.2 iopl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715

13.81 Glibc <sys/kdaemon.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716

13.81.1 bdflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 13.82 Glibc <sys/klog.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716

13.82.1 klogctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 13.83 Glibc Extensions to <sys/mman.h> . . . . . . . . . . . . . . . . . . . . . . . . . 716

13.83.1 madvise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 13.83.2 memfd_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 13.83.3 mincore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 13.83.4 mlock2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 13.83.5 mremap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 13.83.6 pkey_alloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 13.83.7 pkey_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 13.83.8 pkey_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 13.83.9 pkey_mprotect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 13.83.10 pkey_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 13.83.11 remap_file_pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719

13.84 Glibc <sys/mount.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 13.84.1 mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 13.84.2 umount. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 13.84.3 umount2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720

13.85 Glibc <sys/personality.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720

13.85.1 personality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 13.86 Glibc <sys/prctl.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

13.86.1 prctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 13.87 Glibc <sys/profil.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

13.87.1 sprofil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 13.88 Glibc <sys/ptrace.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

13.88.1 ptrace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 13.89 Glibc <sys/quota.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

13.89.1 quotactl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 13.90 Glibc <sys/random.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722

13.90.1 getentropy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722 13.90.2 getrandom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722

13.91 Glibc <sys/reboot.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723

13.91.1 reboot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 13.92 Glibc Extensions to <sys/resource.h> . . . . . . . . . . . . . . . . . . . . 723

13.92.1 prlimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 13.93 Glibc Extensions to <sys/sem.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 724

13.93.1 semtimedop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 13.94 Glibc <sys/sendfile.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724

13.94.1 sendfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 13.95 Glibc <sys/signalfd.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724

13.95.1 signalfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 13.96 Glibc <sys/single_threaded.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 725

13.96.1 __libc_single_threaded. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 13.97 Glibc Extensions to <sys/socket.h>. . . . . . . . . . . . . . . . . . . . . . . 725

13.97.1 accept4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 13.97.2 isfdtype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 13.97.3 recvmmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 13.97.4 sendmmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726

13.98 Glibc Extensions to <sys/stat.h> . . . . . . . . . . . . . . . . . . . . . . . . . 726 13.98.1 getumask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 13.98.2 lchmod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 13.98.3 statx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727

13.99 Glibc <sys/statfs.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 13.99.1 fstatfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 13.99.2 statfs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727

13.100 Glibc <sys/swap.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 13.100.1 swapoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 13.100.2 swapon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728

13.101 Glibc <sys/sysctl.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728

13.101.1 sysctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 13.102 Glibc <sys/sysinfo.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729

13.102.1 get_avphys_pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 13.102.2 get_nprocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 13.102.3 get_nprocs_conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 13.102.4 get_phys_pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 13.102.5 sysinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730

13.103 Glibc <sys/syslog.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730

13.103.1 vsyslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 13.104 Glibc <sys/sysmacros.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731

13.104.1 gnu_dev_major . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731 13.104.2 gnu_dev_makedev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731 13.104.3 gnu_dev_minor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731 13.105 Glibc Extensions to <sys/time.h> . . . . . . . . . . . . . . . . . . . . . . . . . 732

13.105.1 adjtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 13.105.2 futimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 13.105.3 futimesat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 13.105.4 lutimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 13.105.5 settimeofday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733

13.106 Glibc <sys/timerfd.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 13.106.1 timerfd_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 13.106.2 timerfd_gettime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 13.106.3 timerfd_settime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734

13.107 Glibc <sys/timex.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 13.107.1 adjtimex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 13.107.2 ntp_adjtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 13.107.3 ntp_gettime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735 13.107.4 ntp_gettimex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735

13.108 Glibc Extensions to <sys/uio.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 735 13.108.1 preadv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735 13.108.2 preadv2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 13.108.3 process_vm_readv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 13.108.4 process_vm_writev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 13.108.5 pwritev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 13.108.6 pwritev2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737

13.109 Glibc <sys/ustat.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737

13.109.1 ustat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 13.110 Glibc <sys/vlimit.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737

13.110.1 vlimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 13.111 Glibc Extensions to <sys/wait.h> . . . . . . . . . . . . . . . . . . . . . . . . . 738

13.111.1 wait3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738 13.111.2 wait4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738

13.112 Glibc <sys/xattr.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738 13.112.1 fgetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738 13.112.2 flistxattr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 13.112.3 fremovexattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 13.112.4 fsetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 13.112.5 getxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 13.112.6 lgetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 13.112.7 listxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 13.112.8 llistxattr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 13.112.9 lremovexattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 13.112.10 lsetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 13.112.11 removexattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 13.112.12 setxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741

13.113 Glibc Extensions to <termios.h> . . . . . . . . . . . . . . . . . . . . . . . . . . 741 13.113.1 cfmakeraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 13.113.2 cfsetspeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742

13.114 Glibc Extensions to <time.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 13.114.1 clock_adjtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 13.114.2 dysize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 13.114.3 getdate_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 13.114.4 stime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 13.114.5 strptime_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 13.114.6 timelocal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 13.114.7 timespec_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744

13.115 Glibc <ttyent.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 13.115.1 endttyent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 13.115.2 getttyent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 13.115.3 getttynam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 13.115.4 setttyent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745

13.116 Glibc Extensions to <unistd.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 13.116.1 _Fork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 13.116.2 acct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 13.116.3 brk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 13.116.4 chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 13.116.5 closefrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 13.116.6 copy_file_range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 13.116.7 daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 13.116.8 dup3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 13.116.9 eaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 13.116.10 endusershell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 13.116.11 euidaccess. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 13.116.12 execveat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 13.116.13 execvpe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 13.116.14 get_current_dir_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 13.116.15 getdomainname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 13.116.16 getdtablesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 13.116.17 getpagesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 13.116.18 getpass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 13.116.19 getresgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 13.116.20 getresuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 13.116.21 gettid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 13.116.22 getusershell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 13.116.23 group_member . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 13.116.24 pipe2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 13.116.25 profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 13.116.26 revoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 13.116.27 sbrk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 13.116.28 setlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 13.116.29 setdomainname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 13.116.30 sethostid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 13.116.31 sethostname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 13.116.32 setresgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 13.116.33 setresuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 13.116.34 setusershell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 13.116.35 syncfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 13.116.36 syscall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 13.116.37 ttyslot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 13.116.38 vhangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757

13.117 Glibc <utmp.h> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 13.117.1 endutent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 13.117.2 getutent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 13.117.3 getutent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 13.117.4 getutid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 13.117.5 getutid_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 13.117.6 getutline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 13.117.7 getutline_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 13.117.8 pututline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 13.117.9 setutent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 13.117.10 updwtmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 13.117.11 utmpname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 13.117.12 login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 13.117.13 login_tty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761

13.118 Glibc Extensions to <utmpx.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 13.118.1 getutmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 13.118.2 getutmpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762 13.118.3 updwtmpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762 13.118.4 utmpxname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762

13.119 Glibc Extensions to <wchar.h>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 13.119.1 fgetwc_unlocked. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 13.119.2 fgetws_unlocked. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 13.119.3 fputwc_unlocked. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 13.119.4 fputws_unlocked. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 13.119.5 getwc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 13.119.6 getwchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 13.119.7 putwc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 13.119.8 putwchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 13.119.9 wcschrnul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 13.119.10 wcsftime_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 13.119.11 wcstod_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 13.119.12 wcstof_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 13.119.13 wcstol_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 13.119.14 wcstold_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 13.119.15 wcstoll_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 13.119.16 wcstoq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 13.119.17 wcstoul_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 13.119.18 wcstoull_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 13.119.19 wcstouq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 13.119.20 wmempcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

14 Native Windows Support. . . . . . . . . . . . . . . . . . . . 770

14.1 Libtool and Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 14.2 Large File Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 14.3 Inode numbers on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 14.4 Precise file timestamps on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 771 14.5 Avoiding the year 2038 problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771 14.6 Windows sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772

14.6.1 Getaddrinfo and WINVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772 14.7 Native Windows Support without MSVC Support . . . . . . . . . . . . 773 14.8 Visual Studio Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773

15 Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774

15.1 The three multithreading APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774 15.2 Choosing the right multithreading API . . . . . . . . . . . . . . . . . . . . . . . 775 15.3 The POSIX multithreading API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 15.4 The ISO C multithreading API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776 15.5 The Gnulib multithreading API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776 15.6 Optimizations of multithreaded code . . . . . . . . . . . . . . . . . . . . . . . . . 776

16 Strings and Characters . . . . . . . . . . . . . . . . . . . . . . 778

16.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778 16.1.1 The C string representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778 16.1.2 Iterating through strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780 16.1.3 Strings with NUL characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781 16.1.4 Character and String Functions in C Locale . . . . . . . . . . . . . 781

16.1.4.1 c-ctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781 16.1.4.2 c-strcase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 16.1.4.3 c-strcaseeq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 16.1.4.4 c-strcasestr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 16.1.4.5 c-strstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 16.1.4.6 c-strtod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 16.1.4.7 c-strtold. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783

16.1.5 Comparison of string APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 16.2 Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786

16.2.1 The char type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786 16.2.2 The wchar_t type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 16.2.3 The char32_t type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 16.2.4 The mbchar_t type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788

16.2.4.1 Reading multibyte strings . . . . . . . . . . . . . . . . . . . . . . . . . . 788 16.2.5 Comparison of character APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 788

17 Particular Modules . . . . . . . . . . . . . . . . . . . . . . . . . . 790

17.1 alloca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 17.2 alloca-opt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 17.3 Safe Allocation Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 17.4 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 17.5 Compile-time Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 17.6 Non-returning Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 17.7 Integer Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794

17.7.1 Arithmetic Type Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 17.7.2 Integer Bounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 17.7.3 Checking Integer Overflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 17.7.4 Wraparound Arithmetic with Integers . . . . . . . . . . . . . . . . . . . 797 17.7.5 Integer Type Overflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799 17.7.6 Integer Range Overflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800

17.8 Static inline functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 17.9 Extern inline functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 17.10 Handling closed standard file descriptors . . . . . . . . . . . . . . . . . . . . 803 17.11 Handling strings with NUL characters . . . . . . . . . . . . . . . . . . . . . . . 806 17.12 Container data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807

17.12.1 Ordinary container data types . . . . . . . . . . . . . . . . . . . . . . . . . . 807 17.12.2 Specialized container data types . . . . . . . . . . . . . . . . . . . . . . . . 810

17.13 Recognizing Option Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811 17.14 Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 17.15 progname and getprogname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 17.16 gcd: greatest common divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 17.17 Profiling of program phases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 17.18 Library version handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 17.19 Supporting Relocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 17.20 func . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 17.21 stat-size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820

18 Regular expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 821

18.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 18.2 Regular Expression Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821

18.2.1 Syntax Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 18.2.2 Predefined Syntaxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 18.2.3 Collating Elements vs. Characters . . . . . . . . . . . . . . . . . . . . . . . 826 18.2.4 The Backslash Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826

18.3 Common Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827 18.3.1 The Match-self Operator (ordinary character) . . . . . . . . . . . 827 18.3.2 The Match-any-character Operator (.) . . . . . . . . . . . . . . . . . . 827 18.3.3 The Concatenation Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827 18.3.4 Repetition Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828

18.3.4.1 The Match-zero-or-more Operator (*). . . . . . . . . . . . . . . 828 18.3.4.2 The Match-one-or-more Operator (+ or \+) . . . . . . . . . 828 18.3.4.3 The Match-zero-or-one Operator (? or \?) . . . . . . . . . . 828

18.3.4.4 Interval Operators ({ … } or \{ … \}) . . . . . . . . . . . 829 18.3.5 The Alternation Operator (| or \|). . . . . . . . . . . . . . . . . . . . . . 829 18.3.6 List Operators ([ …] and [^…]) . . . . . . . . . . . . . . . . . . . 830

18.3.6.1 Collating Symbol Operators ([. . . . .]) . . . . . . . . . . . . 831 18.3.6.2 Equivalence Class Operators ([= … =]). . . . . . . . . . . . 831 18.3.6.3 Character Class Operators ([: …:]). . . . . . . . . . . . . . 831 18.3.6.4 The Range Operator (-) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832

18.3.7 Grouping Operators (( …) or \( … \)) . . . . . . . . . . . . . . 832 18.3.8 The Back-reference Operator (\digit) . . . . . . . . . . . . . . . . . . . . 833 18.3.9 Anchoring Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834

18.3.9.1 The Match-beginning-of-line Operator (^). . . . . . . . . . . 834 18.3.9.2 The Match-end-of-line Operator ($). . . . . . . . . . . . . . . . . 834

18.4 GNU Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835

18.4.1 Word Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 18.4.1.1 The Match-word-boundary Operator (\b) . . . . . . . . . . . 835 18.4.1.2 The Match-within-word Operator (\B) . . . . . . . . . . . . . . 835 18.4.1.3 The Match-beginning-of-word Operator (\<) . . . . . . . . 835 18.4.1.4 The Match-end-of-word Operator (\>) . . . . . . . . . . . . . . 835 18.4.1.5 The Match-word-constituent Operator (\w) . . . . . . . . . 835 18.4.1.6 The Match-non-word-constituent Operator (\W) . . . . . 835

18.4.2 Space Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 18.4.2.1 The Match-space Operator (\s) . . . . . . . . . . . . . . . . . . . . 835 18.4.2.2 The Match-non-space Operator (\S) . . . . . . . . . . . . . . . . 835

18.4.3 Whole-string Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 18.4.3.1 The Match-beginning-of-string Operator (\` ) . . . . . . . 835 18.4.3.2 The Match-end-of-string Operator (\') . . . . . . . . . . . . . 836

18.5 What Gets Matched? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836 18.6 Programming with Regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836

18.6.1 GNU Regex Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836 18.6.1.1 GNU Pattern Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836 18.6.1.2 GNU Regular Expression Compiling . . . . . . . . . . . . . . . . 836 18.6.1.3 GNU Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 18.6.1.4 GNU Searching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838 18.6.1.5 Matching and Searching with Split Data . . . . . . . . . . . . 839 18.6.1.6 Searching with Fastmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 18.6.1.7 GNU Translate Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840 18.6.1.8 Using Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841 18.6.1.9 Freeing GNU Pattern Buffers . . . . . . . . . . . . . . . . . . . . . . . 843

18.6.2 BSD Regex Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 18.6.2.1 BSD Regular Expression Compiling . . . . . . . . . . . . . . . . . 843 18.6.2.2 BSD Searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844

18.7 Regular expression syntaxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844 18.7.1 ‘awk’ regular expression syntax . . . . . . . . . . . . . . . . . . . . . . . . . 844 18.7.2 ‘egrep’ regular expression syntax . . . . . . . . . . . . . . . . . . . . . . . 845 18.7.3 ‘ed’ regular expression syntax . . . . . . . . . . . . . . . . . . . . . . . . . . 845 18.7.4 ‘emacs’ regular expression syntax . . . . . . . . . . . . . . . . . . . . . . . 847 18.7.5 ‘gnu-awk’ regular expression syntax . . . . . . . . . . . . . . . . . . . . 848 18.7.6 ‘grep’ regular expression syntax . . . . . . . . . . . . . . . . . . . . . . . . 849 18.7.7 ‘posix-awk’ regular expression syntax . . . . . . . . . . . . . . . . . . 850 18.7.8 ‘posix-basic’ regular expression syntax . . . . . . . . . . . . . . . . 850 18.7.9 ‘posix-egrep’ regular expression syntax . . . . . . . . . . . . . . . . 851 18.7.10 ‘posix-extended’ regular expression syntax . . . . . . . . . . . . 851 18.7.11 ‘posix-minimal-basic’ regular expression syntax . . . . . . 852 18.7.12 ‘sed’ regular expression syntax . . . . . . . . . . . . . . . . . . . . . . . . . 852

19 Build Infrastructure Modules . . . . . . . . . . . . . . . 853

19.1 Searching for Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853 Simple Library Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853 Locating Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853

Example of using AC_LIB_LINKFLAGS . . . . . . . . . . . . . . . . . . . . . . . . 854 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854 Static vs. shared . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855 CPPFLAGS vs. LDFLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855 Bi-arch systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855

19.2 Controlling the Exported Symbols of Shared Libraries . . . . . . . . 856 19.3 LD Version Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858 19.4 configmake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 19.5 warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 19.6 manywarnings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860 19.7 Running self-tests under valgrind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863

19.7.1 Using valgrind without developer intervention. . . . . . . . . . . . 863 19.7.2 Valgrind options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 19.7.3 Using valgrind at the developer’s discretion . . . . . . . . . . . . . . 864 19.7.4 How to use Valgrind with shell scripts . . . . . . . . . . . . . . . . . . . 864

19.8 VCS To ChangeLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 19.9 gitlog-to-changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865

20 Build Infrastructure Files . . . . . . . . . . . . . . . . . . . 867

20.1 Recognizing platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 20.2 Utilities for Makefiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 20.3 Programs for developing in Git checkouts . . . . . . . . . . . . . . . . . . . . . 868 20.4 Utilities for building documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 869 20.5 Utilities for building libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869 20.6 Utilities for running test suites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870

21 Release Management Files . . . . . . . . . . . . . . . . . . 871

21.1 Tools for releasing packages with shared libraries . . . . . . . . . . . . . 871 21.2 Tools for uploading release tarballs . . . . . . . . . . . . . . . . . . . . . . . . . . . 871

Appendix A GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872 Appendix B Gnulib history . . . . . . . . . . . . . . . . . . . . 880

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881

1 Brief Overview

Gnulib is a source code library that provides basic functionality to programs and libraries. Many software packages make use of Gnulib to avoid reinventing the portability wheel.

Resources:

  • Gnulib is hosted at Savannah: https://savannah.gnu.org/projects/gnulib. Get

the sources through Git from there.

  • The Gnulib home page: https://www.gnu.org/software/gnulib/.

1.1 Gnulib Basics

While portability across operating systems is not one of GNU’s primary goals, it has helped introduce many people to the GNU system, and is worthwhile when it can be achieved at a low cost. This collection helps lower that cost.

Gnulib is intended to be the canonical source for most of the important “portability” and/or common files for GNU projects. These are files intended to be shared at the source level; Gnulib is not a typical library meant to be installed and linked against. Thus, unlike most projects, Gnulib does not normally generate a source tarball distribution; instead, developers grab modules directly from the source repository.

The easiest, and recommended, way to do this is to use the gnulib-tool script. Since there is no installation procedure for Gnulib, gnulib-tool needs to be run directly in the directory that contains the Gnulib source code. You can do this either by specifying the absolute filename of gnulib-tool, or by using a symbolic link from a place inside your PATH to the gnulib-tool file of your preferred Gnulib checkout. For example:

     $ ln -s $HOME/gnu/src/gnulib.git/gnulib-tool $HOME/bin/gnulib-tool

1.2 Git Checkout

Gnulib is available for anonymous checkout. In any Bourne-shell the following should work:

     $ git clone https://git.savannah.gnu.org/git/gnulib.git

For a read-write checkout you need to have a login on ‘savannah.gnu.org’ and be a

member of the Gnulib project at https://savannah.gnu.org/projects/gnulib. Then,
instead of the URL https://git.savannah.gnu.org/git/gnulib.git, use the URL
‘ssh://user@git.savannah.gnu.org/srv/git/gnulib’ where user is your login name on

savannah.gnu.org.

git resources:

Overview: https://en.wikipedia.org/wiki/Git_(software)

Homepage:

          https://git-scm.com/

When you use git annotate or git blame with Gnulib, it’s recommended that you use the -w option, in order to ignore massive whitespace changes that happened in 2009.

1.3 Keeping Up-to-date

The best way to work with Gnulib is to check it out of git. To synchronize, you can use

git pull.

Subscribing to the bug-gnulib@gnu.org mailing list will help you to plan when to update your local copy of Gnulib (which you use to maintain your software) from git. You

can review the archives, subscribe, etc., via https://lists.gnu.org/mailman/listinfo/
bug-gnulib.

Sometimes, using an updated version of Gnulib will require you to use newer versions of GNU Automake or Autoconf. You may find it helpful to join the autotools-announce mailing list to be advised of such changes.

1.4 Contributing to Gnulib

All software here is copyrighted by the Free Software Foundation—you need to have filled out an assignment form for a project that uses the module for that contribution to be accepted here.

If you have a piece of code that you would like to contribute, please email

bug-gnulib@gnu.org.

Generally we are looking for files that fulfill at least one of the following requirements:

• If your .c and .h files define functions that are broken or missing on some other system, we should be able to include it.

• If your functions remove arbitrary limits from existing functions (either under the same name, or as a slightly different name), we should be able to include it.

If your functions define completely new but rarely used functionality, you should probably consider packaging it as a separate library.

1.4.1 Gnulib licensing

Gnulib contains code both under GPL and LGPL. Because several packages that use Gnulib are GPL, the files state they are licensed under GPL. However, to support LGPL projects as well, you may use some of the files under LGPL. The “License:” information in the files under modules/ clarifies the real license that applies to the module source.

Keep in mind that if you submit patches to files in Gnulib, you should license them under a compatible license, which means that sometimes the contribution will have to be LGPL, if the original file is available under LGPL via a “License: LGPL” information in the projects’ modules/ file.

1.4.2 Indent with spaces not TABs

We use space-only indentation in nearly all files. This includes all *.h, *.c, *.y files, except for the regex module. Makefile and ChangeLog files are excluded, since TAB characters are part of their format.

In order to tell your editor to produce space-only indentation, you can use these instructions.

• For Emacs: Add these lines to your Emacs initialization file ($HOME/.emacs or similar):

         ;; In Gnulib, indent with spaces everywhere (not TABs).

     ;; Exceptions: Makefile and ChangeLog modes.
     (add-hook 'find-file-hook '(lambda ()
       (if (and buffer-file-name
                (string-match "/gnulib\\>" (buffer-file-name))
                (not (string-equal mode-name "Change Log"))
                (not (string-equal mode-name "Makefile")))
           (setq indent-tabs-mode nil))))

• For vi (vim): Add these lines to your $HOME/.vimrc file:

     " Don't use tabs for indentation. Spaces are nicer to work with.
     set expandtab

For Makefile and ChangeLog files, compensate for this by adding this

to your $HOME/.vim/after/indent/make.vim file, and similarly for your
$HOME/.vim/after/indent/changelog.vim file:
     " Use tabs for indentation, regardless of the global setting.
     set noexpandtab

• For Eclipse: In the “Window|Preferences” dialog (or “Eclipse|Preferences” dialog on Mac OS),

1. Under “General|Editors|Text Editors”, select the “Insert spaces for tabs” checkbox.

2. Under “C/C++|Code Style”, select a code style profile that has the “Indentation|Tab policy” combobox set to “Spaces only”, such as the “GNU [built-in]” policy.

If you use the GNU indent program, pass it the option --no-tabs.

1.4.3 How to add a new module

• Add the header files and source files to lib/.

• If the module needs configure-time checks, write an Autoconf macro for it in

m4/module.m4. See m4/README for details.

• Write a module description modules/module, based on modules/TEMPLATE.

• If the module contributes a section to the end-user documentation, put this documentation in doc/module.texi and add it to the “Files” section of modules/module. Most modules don’t do this; they have only documentation for the programmer (= Gnulib user). Such documentation usually goes into the lib/ source files. It may also go into doc/; but don’t add it to the module description in this case.

• Add the module to the list in MODULES.html.sh.

You can test that a module builds correctly with:

 $ ./gnulib-tool --create-testdir --dir=/tmp/testdir module1 ... moduleN
 $ cd /tmp/testdir
 $ ./configure && make

Other things:

• Check the license and copyright year of headers.

• Check that the source code follows the GNU coding standards; see https://www.gnu.

org/prep/standards.

• Add source files to config/srclist* if they are identical to upstream and should be upgraded in Gnulib whenever the upstream source changes.

• Include header files in source files to verify the function prototypes.

• Make sure a replacement function doesn’t cause warnings or clashes on systems that have the function.

• Autoconf functions can use ‘gl_*’ prefix. The ‘AC_*’ prefix is for autoconf internal functions.

• Build files only if they are needed on a platform. Look at the alloca and fnmatch modules for how to achieve this. If for some reason you cannot do this, and you have a .c file that leads to an empty .o file on some platforms (through some big #if around all the code), then ensure that the compilation unit is not empty after preprocessing. One way to do this is to #include <stddef.h> or <stdio.h> before the big #if.

1.5 Portability guidelines

Gnulib code is intended to be portable to a wide variety of platforms, not just GNU platforms. Gnulib typically attempts to support a platform as long as it is still supported by its provider, even if the platform is not the latest version. See Section 2.4 [Target Platforms], page 11.

Many Gnulib modules exist so that applications need not worry about undesirable variability in implementations. For example, an application that uses the malloc module need not worry about malloc (0) returning a null pointer on some Standard C platforms; and glob users need not worry about glob silently omitting symbolic links to nonexistent files on some platforms that do not conform to POSIX.

Gnulib code is intended to port without problem to new hosts, e.g., hosts conforming to recent C and POSIX standards. Hence Gnulib code should avoid using constructs that these newer standards no longer require, without first testing for the presence of these constructs. For example, because C11 made variable length arrays optional, Gnulib code should avoid them unless it first uses the vararrays module to check whether they are supported.

The following subsections discuss some exceptions and caveats to the general Gnulib portability guidelines.

1.5.1 C language versions

Currently Gnulib assumes at least a freestanding C99 compiler, possibly operating with a C library that predates C99; with time this assumption will likely be strengthened to later versions of the C standard. Old platforms currently supported include AIX 6.1, HP-UX 11i v1 and Solaris 10, though these platforms are rarely tested. Gnulib itself is so old that it contains many fixes for obsolete platforms, fixes that may be removed in the future.

Because of the freestanding C99 assumption, Gnulib code can include <float.h>,

<limits.h>, <stdarg.h>, <stddef.h>, and <stdint.h> unconditionally; <stdbool.h>

is also in the C99 freestanding list but is obsolescent as of C23. Gnulib code can also

assume the existence of <ctype.h>, <errno.h>, <fcntl.h>, <locale.h>, <signal.h>,
<stdio.h>, <stdlib.h>, <string.h>, and <time.h>. Similarly, many modules include

<sys/types.h> even though it’s not even in C11; that’s OK since <sys/types.h> has been around nearly forever.

Even if the include files exist, they may not conform to the C standard. However, GCC has a fixincludes script that attempts to fix most conformance problems. Gnulib currently assumes include files largely conform to C99 or better. People still using ancient hosts should use fixincludes or fix their include files manually.

Even if the include files conform, the library itself may not. For example, strtod and mktime have some bugs on some platforms. You can work around some of these problems by requiring the relevant modules, e.g., the Gnulib mktime module supplies a working and conforming mktime.

1.5.2 C99 features assumed by Gnulib

Although the C99 standard specifies many features, Gnulib code is conservative about using them, partly because Gnulib predates the widespread adoption of C99, and partly because many C99 features are not well-supported in practice. C99 features that are reasonably portable nowadays include:

• A declaration after a statement, or as the first clause in a for statement.

  • long long int.

• <stdbool.h>, although Gnulib code no longer uses it directly, preferring plain bool via the stdbool module instead. See Section 9.48 [stdbool.h], page 71.

• <stdint.h>, assuming the stdint module is used. See Section 9.51 [stdint.h], page 73.

• Compound literals and designated initializers.

• Variadic macros.

Note: The handling of __VA_ARGS__in MSVC differs from the one in ISO C 99, see

    https://stackoverflow.com/questions/5134523/. But usually this matters only

for macros that decompose __VA_ARGS__.

  • static inline functions.

• __func__, assuming the func module is used. See Section 17.20 [func], page 820.

• The restrict qualifier, assuming AC_REQUIRE([AC_C_RESTRICT]) is used. This qualifier is sometimes implemented via a macro, so C++ code that uses Gnulib should avoid using restrict as an identifier.

• Flexible array members (however, see the flexmember module).

1.5.3 C99 features avoided by Gnulib

Gnulib avoids some features even though they are standardized by C99, as they have portability problems in practice. Here is a partial list of avoided C99 features. Many other C99 features are portable only if their corresponding modules are used; Gnulib code that uses such a feature should require the corresponding module.

• Variable length arrays (VLAs) or variably modified types, without checking whether

    __STDC_NO_VLA__is defined. See the vararrays and vla modules.

• Block-scope variable length arrays, without checking whether either GNULIB_NO_VLA or __STDC_NO_VLA__is defined. This lets you define GNULIB_NO_VLA to pacify GCC when using its -Wvla-larger-than warnings option, and to avoid large stack usage that may have security implications. GNULIB_NO_VLA does not affect Gnulib’s other uses of VLAs and variably modified types, such as array declarations in function prototype scope.

• Converting to pointers via integer types other than intptr_t or uintptr_t. Although the C standard says that values of these integer types, if they exist, should be convertible to and from intmax_t and uintmax_t without loss of information, on CHERI platforms such conversions result in integers that, if converted back to a pointer, cannot be dereferenced.

• extern inline functions, without checking whether they are supported. See Section 17.9 [extern inline], page 802.

• Type-generic math functions.

• Universal character names in source code.

• <iso646.h>, since GNU programs need not worry about deficient source-code encodings.

• Comments beginning with ‘//’. This is mostly for style reasons.

1.5.4 Other portability assumptions made by Gnulib

Gnulib code makes the following assumptions that go beyond what C and POSIX require:

• Standard internal types like ptrdiff_t and size_t are no wider than long. The GNU coding standards allow code to make this assumption, POSIX requires implementations to support at least one programming environment where this is true, and such environments are recommended for Gnulib-using applications. When it is easy to port to non-POSIX platforms like MinGW where these types are wider than long, new Gnulib code should do so, e.g., by using ptrdiff_t instead of long. However, it is not always that easy, and no effort has been made to check that all Gnulib modules work on MinGW-like environments.

• int and unsigned int are at least 32 bits wide. POSIX and the GNU coding standards both require this.

• Signed integer arithmetic is two’s complement.

Previously, Gnulib code sometimes also assumed that signed integer arithmetic wraps around, but modern compiler optimizations sometimes do not guarantee this, and Gnulib code with this assumption is now considered to be questionable. See Section 17.7 [Integer Properties], page 794. Although some Gnulib modules contain explicit support for ones’ complement and signed magnitude integer representations, which are allowed by C17 and earlier, these modules are the exception rather than the rule. All practical Gnulib targets use two’s complement, which is required by C23.

• There are no “holes” in integer values: all the bits of an integer contribute to its value in the usual way. In particular, an unsigned type and its signed counterpart have the same number of bits when you count the latter’s sign bit. (As an exception, Gnulib code is portable to CHERI platforms even though this assumption is false for CHERI.)

• Objects with all bits zero are treated as zero or as null pointers. For example, memset (A, 0, sizeof A) initializes an array A of pointers to null pointers.

• The types intptr_t and uintptr_t exist, and pointers can be converted to and from these types without loss of information.

• Addresses and sizes behave as if objects reside in a flat address space. In particular:

• If two nonoverlapping objects have sizes S and T represented as ptrdiff_t or size_t values, then S + T cannot overflow.

• A pointer P points within an object O if and only if (char *) &O <= (char *) P

&& (char *) P < (char *) (&O + 1).

• Arithmetic on a valid pointer is equivalent to the same arithmetic on the pointer converted to uintptr_t, except that offsets are multiplied by the size of the pointed-to objects. For example, if P + I is a valid expression involving a pointer

P and an integer I, then (uintptr_t) (P + I) == (uintptr_t) ((uintptr_t) P

+ I * sizeof *P). Similar arithmetic can be done with intptr_t, although more care must be taken in case of integer overflow or negative integers.

• A pointer P has alignment A if and only if (uintptr_t) P % A is zero, and similarly

for intptr_t.

• If an existing object has size S, and if T is sufficiently small (e.g., 8 KiB), then S + T cannot overflow. Overflow in this case would mean that the rest of your program fits into T bytes, which can’t happen in realistic flat-address-space hosts.

• Adding zero to a null pointer does not change the pointer. For example, 0 + (char

*) NULL == (char *) NULL.

Some system platforms violate these assumptions and are therefore not Gnulib porting targets. See Section 2.4.3 [Unsupported Platforms], page 12.

1.6 High Quality

We develop and maintain a testsuite for Gnulib. The goal is to have a 100% firm interface so that maintainers can feel free to update to the code in git at any time and know that their application will not break. This means that before any change can be committed to the repository, a test suite program must be produced that exposes the bug for regression testing.

1.6.1 Stable Branches

In Gnulib, we don’t use topic branches for experimental work. Therefore, occasionally a broken commit may be pushed in Gnulib. It does not happen often, but it does happen.

To compensate for this, Gnulib offers “stable branches”. These are branches of the Gnulib code that are maintained over some longer period (a year, for example) and include

• bug fixes,

• portability enhancements (to existing as well as to new platforms),

• updates to config.guess and config.sub.

Not included in the stable branches are:

• new features, such as new modules,

• optimizations,

• refactorings,

• complex or risky changes in general,

• updates to texinfo.tex,

• documentation updates.

So far, we have five stable branches:

stable-202401

A stable branch that starts at the beginning of January 2024.

stable-202307

A stable branch that starts at the beginning of July 2023.

stable-202301

A stable branch that starts at the beginning of January 2023. It is no longer updated.

stable-202207

A stable branch that starts at the beginning of July 2022. It is no longer updated.

stable-202201

A stable branch that starts at the beginning of January 2022. It is no longer updated.

The two use-cases of stable branches are thus:

• You want to protect yourself from occasional breakage in Gnulib.

• When making a bug-fix release of your code, you can incorporate bug fixes in Gnulib, by pulling in the newest commits from the same stable branch that you were already using for the previous release.

1.6.2 Writing reliable code

When compiling and testing Gnulib and Gnulib-using programs, certain compiler options can help improve reliability. First of all, make it a habit to use ‘-Wall’ in all compilation commands. Beyond that, the manywarnings module enables several forms of static checking in GCC and related compilers (see Section 19.6 [manywarnings], page 860).

For dynamic checking, you can run configure with CFLAGS options appropriate for your compiler. For example:

     ./configure \
      CPPFLAGS='-Wall'\
      CFLAGS='-g3 -O2'\
     ' -D_FORTIFY_SOURCE=2'\
     ' -fsanitize=undefined'\
     ' -fsanitize-undefined-trap-on-error'

Here:

• -D_FORTIFY_SOURCE=2 enables extra security hardening checks in the GNU C library.

• -fsanitize=undefined enables GCC’s undefined behavior sanitizer (ubsan), and

  • -fsanitize-undefined-trap-on-error causes ubsan to abort the program (through

an “illegal instruction” signal). This measure stops exploit attempts and also allows you to debug the issue.

   Without the -fsanitize-undefined-trap-on-error option, -fsanitize=undefined

causes messages to be printed, and execution continues after an undefined behavior situation. The message printing causes GCC-like compilers to arrange for the program to dynamically link to libraries it might not otherwise need. With GCC, instead of -fsanitize-

undefined-trap-on-error you can use the -static-libubsan option to arrange for two

of the extra libraries (libstdc++ and libubsan) to be linked statically rather than dynamically, though this typically bloats the executable and the remaining extra libraries are still linked dynamically.

It is also good to occasionally run the programs under valgrind (see Section 19.7 [Running self-tests under valgrind], page 863).

1.7 Join the GNU Project

GNU Gnulib is part of the GNU Operating System, developed by the GNU Project. If you are the author of an awesome program and want to join us in writing Free (libre)

Software, please consider making it an official GNU program and become a GNU Maintainer. Instructions on how to do this are here (https://www.gnu.org/help/evaluation). We are looking forward to hacking with you!

Don’t have a program to contribute? Look at all the other ways to help (https://www.

gnu.org/help/help.html).

And to learn more about Free (libre) Software in general, please read and share this

page (https://gnu.org/philosophy/free-sw.html).

2 Philosophy

Gnulib’s design and development philosophy is organized around steady, collaborative, and open development of reusable modules that are suitable for a reasonably wide variety of platforms.

2.1 Benefits of using Gnulib

Gnulib is useful to enhance various aspects of a package:

• Portability: With Gnulib, a package maintainer can program against the POSIX and GNU libc APIs and nevertheless expect good portability to platforms that don’t implement POSIX.

• Maintainability: When a package uses modules from Gnulib instead of code written specifically for that package, the maintainer has less code to maintain.

• Security: Gnulib provides functions that are immune against vulnerabilities that plague the uses of the corresponding commonplace functions. For example, asprintf, canonicalize_file_name are not affected by buffer sizing problems that affect sprintf, realpath. openat does not have the race conditions that open has. Etc.

• Reliability: Gnulib provides functions that combine a call to a system function with a check of the result. Examples are xalloc, xprintf, xstrtod, xgetcwd.

• Structure: Gnulib offers a way to structure code into modules, typically one include file, one source code file, and one autoconf macro for each functionality. Modularity helps maintainability.

2.2 Library vs. Reusable Code

Classical libraries are installed as binary object code. Gnulib is different: It is used as a source code library. Each package that uses Gnulib thus ships with part of the Gnulib source code. The used portion of Gnulib is tailored to the package: A build tool, called gnulib-tool, is provided that copies a tailored subset of Gnulib into the package.

2.3 Portability and Application Code

One of the goals of Gnulib is to make portable programming easy, on the basis of the standards relevant for GNU (and Unix). The objective behind that is to avoid a fragmentation of the user community into disjoint user communities according to the operating system, and instead allow synergies between users on different operating systems.

Another goal of Gnulib is to provide application code that can be shared between several applications. Some people wonder: "What? glibc doesn’t have a function to copy a file?" Indeed, the scope of a system’s libc is to implement the relevant standards (ISO C, POSIX) and to provide access functions to the kernel’s system calls, and little more.

There is no clear borderline between both areas.

For example, Gnulib has a facility for generating the name of backup files. While this task is entirely at the application level—no standard specifies an API for it—the naïve code has some portability problems because on some platforms the length of file name components is limited to 30 characters or so. Gnulib handles that.

Similarly, Gnulib has a facility for executing a command in a subprocess. It is at the same time a portability enhancement (it works on GNU, Unix, and Windows, compared to the classical fork/exec idiom which is not portable to Windows), as well as an application aid: it takes care of redirecting stdin and/or stdout if desired, and emits an error message if the subprocess failed.

2.4 Target Platforms

Gnulib supports a number of platforms that we call the “reasonable portability targets”. This class consists of widespread operating systems, for three years after their last availability, or—for proprietary operating systems—as long as the vendor provides commercial support for it. Already existing Gnulib code for older operating systems is usually left in place for longer than these three years. So it comes that programs that use Gnulib run pretty well also on these older operating systems.

Some operating systems are not very widespread, but are Free Software and are actively developed. Such platforms are also supported by Gnulib, if that OS’s developers community keeps in touch with the Gnulib developers, by providing bug reports, analyses, or patches. For such platforms, Gnulib supports only the versions of the last year or the last few months, depending on the maturity of said OS project, the number of its users, and how often these users upgrade.

Niche operating systems are generally unsupported by Gnulib, unless some of their developers or users contribute support to Gnulib.

The degree of support Gnulib guarantees for a platform depends on the amount of testing it gets from volunteers. Platforms on which Gnulib is frequently tested are the best supported. Then come platforms with occasional testing, then platforms which are rarely tested. Usually, we fix bugs when they are reported. Except that some rarely tested platforms are also low priority; bug fixes for these platforms can take longer.

2.4.1 Supported Platforms

As of 2024, the list of supported platforms is the following:

• glibc systems. With glibc 2.19 or newer, they are frequently tested. About the kernels: • glibc on Linux is frequently tested.

• glibc on kFreeBSD is rarely tested.

• musl libc on Linux is occasionally tested.

• macOS. In versions 12.5, it’s occasionally tested. In version 10.5, it’s rarely tested.

• FreeBSD 14.0 or newer is occasionally tested.

• OpenBSD 7.0 or newer is occasionally tested.

• NetBSD 10.0 or newer is occasionally tested.

• AIX 7.1 and 7.3 are occasionally tested.

• Solaris 10 and 11.4 are occasionally tested. Solaris 9 is rarely tested and low priority.

• Android is occasionally tested, through the Termux app on Android 11.

• Cygwin 2.9 and 3.4 are occasionally tested. Cygwin 1.7.x no longer tested.

• Native Windows:

• mingw is occasionally tested. Only the latest version of mingw is tested; older versions are not supported.

• MSVC 14 (Microsoft Visual Studio 2015 14.0) is occasionally tested. Only “release” builds (compiler option ‘-MD’) are supported, not “debug” builds (compiler option ‘-MDd’).

Note that some modules are currently unsupported on native Windows: mgetgroups,

  getugroups, idcache, userspec, openpty, login_tty, forkpty, pt_chown, grantpt,
  pty, savewd, mkancesdirs, mkdir-p, euidaccess, faccessat. The versions of Win-

dows that are supported are Windows 10 and newer.

• GNU Hurd 0.9 is rarely tested.

• Minix 3.3.0 is no longer tested.

• Haiku is no longer tested.

• uClibc on Linux is no longer tested.

• QNX is no longer tested.

2.4.2 Formerly Supported Platforms

The following platforms were supported in the past, but are no longer supported:

• glibc versions 2.1.x and older.

• Mac OS X 10.4 and older.

• AIX 6 and older.

• HP-UX 11.31.

• IRIX 6.5 and older.

• OSF/1 5.1.

• Solaris 8 and older.

• Interix.

• BeOS. Gnulib supports these operating systems only in an unvirtualized environment. When

you run an OS inside a virtual machine, you have to be aware that the virtual machine can bring in bugs of its own. For example, floating-point operations on Solaris can behave slightly differently in QEMU than on real hardware. And Haiku’s bash program misbehaves in VirtualBox 3, whereas it behaves fine in VirtualBox 4.

Similarly, running native Windows binaries on GNU/Linux under WINE is rarely tested and low priority: WINE has a set of behaviours and bugs that is slightly different from native Windows.

2.4.3 Unsupported Platforms

Some platforms with C compilers are not supported by Gnulib because the platforms violate Gnulib’s C portability assumptions. See Section 1.5.4 [Other portability assumptions], page 6.

These assumptions are not required by the C or POSIX standards but hold on almost all practical porting targets. If you need to port Gnulib code to a platform where these assumptions are not true, we would appreciate hearing of any fixes. We need fixes that do not increase runtime overhead on standard hosts and that are relatively easy to maintain.

These platforms are listed below to illustrate problems that Gnulib and Gnulib-using code would have if it were intended to be portable to all practical POSIX or C platforms.

• Clang’s -fsanitize=undefined option causes the program to crash if it adds zero to a null pointer – behavior that is undefined in strict C, but which yields a null pointer on all practical porting targets and which the Gnulib portability guidelines allow. If you use Clang with -fsanitize=undefined, you can work around the problem by also using ‘-fno-sanitize=pointer-overflow’, although this may also disable some unrelated and useful pointer checks. Perhaps someday the Clang developers will fix the infelicity.

• The IBM i’s pointers are 128 bits wide and it lacks the two types intptr_t and uintptr_t, which are optional in the C and POSIX standards. However, these two types are required for the XSI extension to POSIX, and many Gnulib modules use them. To work around this compatibility problem, Gnulib-using applications can be run on the IBM i’s PASE emulation environment. The IBM i’s architecture descends from the System/38 (1978).

• The Unisys ClearPath Dorado’s machine word is 36 bits. Its signed integers use a ones’-complement representation. On these machines, CHAR_BIT == 9 and INT_MIN == -INT_MAX. By default UINT_MAX is 2^{36}−2, which does not conform to the C requirement that it be one less than a power of two. Although compiler options can raise UINT_MAX to be 2^{36} − 1, this can break system code that uses −0 as a flag value. This platform’s architecture descends from the UNIVAC 1103 (1953).

• The Unisys ClearPath Libra’s machine word is 48 bits with a 4-bit tag and a 4-bit data extension. Its unsigned int uses the low-order 40 bits of the word, and int uses the low-order 41 bits of the word with a signed-magnitude representation. On these

machines, INT_MAX == UINT_MAX, INT_MIN == -INT_MAX, and sizeof (int) == 6. This

platform’s architecture descends from the Burroughs B5000 (1961).

The following platforms are not supported by Gnulib. The cost of supporting them would exceed the benefit because they are rarely used, or poorly documented, or have been supplanted by other platforms, or diverge too much from POSIX, or some combination of these and other factors. Please don’t bother sending us patches for them.

• Windows 95/98/ME.

• DJGPP and EMX (the 32-bit operating systems running in DOS).

• MSDOS (the 16-bit operating system).

• Windows Mobile, Symbian OS, iOS.

2.5 Modules

Gnulib is divided into modules. Every module implements a single facility. Modules can depend on other modules.

A module consists of a number of files and a module description. The files are copied by gnulib-tool into the package that will use it, usually verbatim, without changes. Source code files (.h, .c files) reside in the lib/ subdirectory. Autoconf macro files reside in the m4/ subdirectory. Build scripts reside in the build-aux/ subdirectory.

The module description contains the list of files; gnulib-tool copies these files. It contains the module’s dependencies; gnulib-tool installs them as well. It also contains the autoconf macro invocation (usually a single line or nothing at all); gnulib-tool ensures this is invoked from the package’s configure.ac file. And also a Makefile.am snippet; gnulib-tool collects these into a Makefile.am for the tailored Gnulib part. The module description and include file specification are for documentation purposes; they are combined

into MODULES.html.

The module system serves two purposes:

1. It ensures consistency of the used autoconf macros and Makefile.am rules with the source code. For example, source code which uses the getopt_long function—this is a common way to implement parsing of command line options in a way that complies with the GNU standards—needs the source code (lib/getopt.c and others), the autoconf macro which detects whether the system’s libc already has this function (in m4/getopt.m4), and a few Makefile.am lines that create the substitute getopt.h if not. These three pieces belong together. They cannot be used without each other. The module description and gnulib-tool ensure that they are copied altogether into the destination package.

2. It allows for scalability. It is well-known since the inception of the MODULA-2 language around 1978 that dissection into modules with dependencies allows for building large sets of code in a maintainable way. The maintainability comes from the facts that: • Every module has a single purpose; you don’t worry about other parts of the

program while creating, reading or modifying the code of a module.

• The code you have to read in order to understand a module is limited to the source of the module and the .h files of the modules listed as dependencies. It is for this reason also that we recommend to put the comments describing the functions exported by a module into its .h file.

In other words, the module is the elementary unit of code in Gnulib, comparable to a class in object-oriented languages like Java or C#.

The module system is the basis of gnulib-tool. When gnulib-tool copies a part of Gnulib into a package, it first compiles a module list, starting with the requested modules and adding all the dependencies, and then collects the files, configure.ac snippets and

Makefile.am snippets.

2.6 Various Kinds of Modules

There are modules of various kinds in Gnulib. For a complete list of the modules, see in

MODULES.html.

2.6.1 Support for ISO C or POSIX functions.

When a function is not implemented by a system, the Gnulib module provides an implementation under the same name. Examples are the ‘snprintf’ and ‘readlink’ modules.

Similarly, when a function is not correctly implemented by a system, Gnulib provides a replacement. For functions, we use the pattern

      #if !HAVE_WORKING_FOO
      # define foo rpl_foo

      #endif

and implement the foo function under the name rpl_foo. This renaming is needed to avoid conflicts at compile time (in case the system header files declare foo) and at link/run time (because the code making use of foo could end up residing in a shared library, and the executable program using this library could be defining foo itself).

For header files, such as stdint.h, we provide the substitute only if the system doesn’t provide a correct one. The template of this replacement is distributed in a slightly different name, with ‘.in’ inserted before the ‘.h’ extension, so that on systems which do provide a correct header file the system’s one is used.

The modules in this category are supported in C++ mode as well. This means, while the autoconfiguration uses the C compiler, the resulting header files and function substitutes can be used with a matching C++ compiler as well.

2.6.2 Enhancements of ISO C or POSIX functions

These are sometimes POSIX functions with GNU extensions also found in glibc— examples: ‘getopt’, ‘fnmatch’—and often new APIs—for example, for all functions that allocate memory in one way or the other, we have variants which also include the error checking against the out-of-memory condition.

2.6.3 Portable general use facilities

Examples are a module for copying a file—the portability problems relate to the copying of the file’s modification time, access rights, and extended attributes—or a module for extracting the tail component of a file name—here the portability to native Windows requires a different API than the classical POSIX basename function.

2.6.4 Reusable application code

Examples are an error reporting function, a module that allows output of numbers with K/M/G suffixes, or cryptographic facilities.

2.6.5 Object oriented classes

Examples are data structures like ‘list’, or abstract output stream classes that work around the fact that an application cannot implement an stdio FILE with its logic. Here, while staying in C, we use implementation techniques like tables of function pointers, known from the C++ language or from the Linux kernel.

2.6.6 Interfaces to external libraries

Examples are the ‘iconv’ module, which interfaces to the iconv facility, regardless whether it is contained in libc or in an external libiconv. Or the ‘readline’ module, which interfaces to the GNU readline library.

2.6.7 Build / maintenance infrastructure

An example is the ‘maintainer-makefile’ module, which provides extra Makefile tags for maintaining a package.

2.7 Collaborative Development

Gnulib is maintained collaboratively. The mailing list is <bug-gnulib at gnu dot org>. Be warned that some people on the list may be very active at some times and unresponsive at other times.

Every module has one or more maintainers. While issues are discussed collaboratively on the list, the maintainer of a module nevertheless has a veto right regarding changes in his module.

All patches should be posted to the list, regardless whether they are proposed patches or whether they are committed immediately by the maintainer of the particular module. The purpose is not only to inform the other users of the module, but mainly to allow peer review. It is not uncommon that several people contribute comments or spot bugs after a patch was proposed.

Conversely, if you are using Gnulib, and a patch is posted that affects one of the modules that your package uses, you have an interest in proofreading the patch.

2.8 Copyright

Most modules are under the GPL. Some, mostly modules which can reasonably be used in libraries, are under LGPL. Few modules are under other licenses, such as LGPLv2+, unlimited, or public domain.

If the module description file says "GPL", it means "GPLv3+" (GPLv3 or newer, at the licensee’s choice); if it says "LGPL", it means "LGPLv3+" (LGPLv3 or newer, at the licensee’s choice).

The source files, more precisely the files in lib/ and build-aux/, are under a license compatible with the module’s license. Most often, they are under the same license. But files can be shared among several modules, and in these cases it can happen that a source file is under a weaker license than noted in the module description – namely under the weakest license among the licenses of the modules that contain the file.

Different licenses apply to files in special directories:

modules/ Module description files are under this copyright:

Copyright \begin{matrix}c \\ ◯ \end{matrix} 20XX–20YY Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification, in any medium, are permitted without royalty provided the copyright notice and this notice are preserved.

m4/ Autoconf macro files are under this copyright:

Copyright \begin{matrix}c \\ ◯ \end{matrix} 20XX–20YY Free Software Foundation, Inc.

This file is free software; the Free Software Foundation gives unlimited permission to copy and/or distribute it, with or without modifications, as long as this notice is preserved.

tests/ If a license statement is not present in a test module, the test files are under GPL. Even if the corresponding source module is under LGPL, this is not a problem, since compiled tests are not installed by “make install”.

doc/ Documentation files are under this copyright:

Copyright \begin{matrix}c \\ ◯ \end{matrix} 2004–20YY Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is at https://www.

               gnu.org/licenses/fdl-1.3.en.html.

If you want to use some Gnulib modules under LGPL, you can do so by passing the option ‘--lgpl’ to gnulib-tool. This will ensure that all imported modules can be used under the LGPL license. Similarly, if you want some Gnulib modules under LGPLv2+ (Lesser GPL version 2.1 or newer), you can do so by passing the option ‘--lgpl=2’ to

gnulib-tool.

Keep in mind that when you submit patches to files in Gnulib, you should license them under a compatible license. This means that sometimes the contribution will have to be LGPL, if the original file is available under LGPL. You can find out about it by looking at the license header of the file.

2.9 Steady Development

Gnulib modules are continually adapted, to match new practices, to be consistent with newly added modules, or simply as a response to build failure reports.

If you are willing to report an occasional regression, we recommend to use the newest version from git always, except in periods of major changes. Most Gnulib users do this.

2.10 Openness

Gnulib is open in the sense that we gladly accept contributions if they are generally useful, well engineered, and if the contributors have signed the obligatory papers with the FSF.

The module system is open in the sense that a package using Gnulib can

1. locally patch or override files in Gnulib,

2. locally add modules that are treated like Gnulib modules by gnulib-tool.

This is achieved by the ‘--local-dir’ option of gnulib-tool (see Chapter 5 [Extending Gnulib], page 45).

3 Invoking gnulib-tool

The gnulib-tool command is the recommended way to import Gnulib modules. It is possible to borrow Gnulib modules in a package without using gnulib-tool, relying only on the meta-information stored in the modules/* files, but with a growing number of modules this becomes tedious. gnulib-tool simplifies the management of source files, Makefile.ams and configure.ac in packages incorporating Gnulib modules.

gnulib-tool is not installed in a standard directory that is contained in the PATH variable. It needs to be run directly in the directory that contains the Gnulib source code. You can do this either by specifying the absolute filename of gnulib-tool, or you can also use a symbolic link from a place inside your PATH to the gnulib-tool file of your preferred and most up-to-date Gnulib checkout, like this:

      $ ln -s $HOME/gnu/src/gnulib.git/gnulib-tool $HOME/bin/gnulib-tool

Run ‘gnulib-tool --help’ for information. To get familiar with gnulib-tool without affecting your sources, you can also try some commands with the option ‘--dry-run’; then gnulib-tool will only report which actions it would perform in a real run without changing anything.

3.1 Finding modules

There are four ways of finding the names of Gnulib modules that you can use in your package:

• You have the complete module list, sorted according to categories, in https://www.

    gnu.org/software/gnulib/MODULES.html.

• If you are looking for POSIX function replacements that you don’t know about yet, follow the procedure described in section Section 3.7 [Finding POSIX substitutes], page 28.

• If you are looking for a particular POSIX header or function replacement, look in the chapters Chapter 9 [Header File Substitutes], page 55, and Chapter 10 [Function Substitutes], page 89. For headers and functions that are provided by Glibc but not standardized by POSIX, look in the chapters Chapter 12 [Glibc Header File Substitutes], page 507, and Chapter 13 [Glibc Function Substitutes], page 520.

• If you have already found the source file in Gnulib and are looking for the module that contains this source file, you can use the command ‘gnulib-tool --find filename’.

3.2 Initial import

Gnulib assumes that your project uses Autoconf. When using Gnulib, you will need to have Autoconf among your build tools.

Gnulib also assumes that your project’s configure.ac contains the line

      AC_CONFIG_HEADERS([config.h])

The config.h file gets generated with platform dependent C macro definitions, and the source files include it (see Section 3.5 [Source changes], page 25).

Unless you use gnulib-tool’s --gnu-make option, Gnulib also assumes that your project uses Automake at least in a subdirectory of your project. While the use of Automake in your project’s top level directory is an easy way to fulfil the Makefile conventions of the GNU coding standards, Gnulib does not require it.

Invoking ‘gnulib-tool --import’ will copy source files, create a Makefile.am to build them, generate a file gnulib-comp.m4 with Autoconf M4 macro declarations used by configure.ac, and generate a file gnulib-cache.m4 containing the cached specification of how Gnulib is used.

Our example will be a library that uses Autoconf, Automake and Libtool. It calls strdup, and you wish to use gnulib to make the package portable to C99 and C11 (which don’t have strdup).

~/src/libfoo$ gnulib-tool --import strdup
Module list with included dependencies:
  absolute-header
  extensions
  strdup
  string
File list:
  lib/dummy.c
  lib/strdup.c
  lib/string.in.h
  m4/absolute-header.m4
  m4/extensions.m4
  m4/gnulib-common.m4
  m4/strdup.m4
  m4/string_h.m4
Creating directory ./lib
Creating directory ./m4
Copying file lib/dummy.c
Copying file lib/strdup.c
Copying file lib/string.in.h
Copying file m4/absolute-header.m4
Copying file m4/extensions.m4
Copying file m4/gnulib-common.m4
Copying file m4/gnulib-tool.m4
Copying file m4/strdup.m4
Copying file m4/string_h.m4
Creating lib/Makefile.am
Creating m4/gnulib-cache.m4
Creating m4/gnulib-comp.m4
Finished.
You may need to add #include directives for the following .h files.
  #include <string.h>
Don't forget to
  - add "lib/Makefile" to AC_CONFIG_FILES in ./configure.ac,
  - mention "lib" in SUBDIRS in Makefile.am,

       - mention "-I m4" in ACLOCAL_AMFLAGS in Makefile.am,
         or add an AC_CONFIG_MACRO_DIRS([m4]) invocation in ./configure.ac,
       - invoke gl_EARLY in ./configure.ac, right after AC_PROG_CC,
       - invoke gl_INIT in ./configure.ac.
     ~/src/libfoo$

By default, the source code is copied into lib/ and the M4 macros in m4/. You can over-

ride these paths by using --source-base=DIRECTORY and --m4-base=DIRECTORY. Some

modules also provide other files necessary for building. These files are copied into the direc-

tory specified by ‘AC_CONFIG_AUX_DIR’ in configure.ac or by the --aux-dir=DIRECTORY

option. If neither is specified, the current directory is assumed.

gnulib-tool can make symbolic links instead of copying the source files. The option to specify for this is ‘--symlink’, or ‘-s’ for short. This can be useful to save a few kilobytes of disk space. But it is likely to introduce bugs when gnulib is updated; it is more reliable to use ‘gnulib-tool --update’ (see below) to update to newer versions of gnulib. Furthermore it requires extra effort to create self-contained tarballs, and it may disturb some mechanism the maintainer applies to the sources. For these reasons, this option is generally discouraged.

gnulib-tool will overwrite any preexisting files, in particular Makefile.am. It is also possible to separate the generated Makefile.am content (for building the gnulib library) into a separate file, say gnulib.mk, that can be included by your handwritten Makefile.am, but this is a more advanced use of gnulib-tool.

Consequently, it is a good idea to choose directories that are not already used by your projects, to separate gnulib imported files from your own files. This approach is also useful if you want to avoid conflicts between other tools (e.g., gettextize that also copy M4 files into your package. Simon Josefsson successfully uses a source base of gl/, and a M4 base of gl/m4/, in several packages.

After the ‘--import’ option on the command line comes the list of Gnulib modules that you want to incorporate in your package. The names of the modules coincide with the filenames in Gnulib’s modules/ directory.

Some Gnulib modules depend on other Gnulib modules. gnulib-tool will automatically add the needed modules as well; you need not list them explicitly. gnulib-tool will also memorize which dependent modules it has added, so that when someday a dependency is dropped, the implicitly added module is dropped as well (unless you have explicitly requested that module).

If you want to cut a dependency, i.e., not add a module although one of your requested modules depends on it, you may use the option ‘--avoid=module’ to do so. Multiple uses of this option are possible. Of course, you will then need to implement the same interface as the removed module.

A few manual steps are required to finish the initial import. gnulib-tool printed a summary of these steps.

First, you must ensure Autoconf can find the macro definitions in gnulib-comp.m4. Use the ACLOCAL_AMFLAGS specifier in your top-level Makefile.am file, as in:

     ACLOCAL_AMFLAGS = -I m4

Alternatively, add an AC_CONFIG_MACRO_DIRS invocation in your configure.ac file, as in:

     AC_CONFIG_MACRO_DIRS([m4])

You are now ready to call the M4 macros in gnulib-comp.m4 from configure.ac. The macro gl_EARLY must be called as soon as possible after verifying that the C compiler is working. Typically, this is immediately after AC_PROG_CC, as in:

     ...
     AC_PROG_CC
     gl_EARLY
     ...

The core part of the gnulib checks are done by the macro gl_INIT. Place it further down in the file, typically where you normally check for header files or functions. It must come after other checks which may affect the compiler invocation, such as AC_MINIX. For example:

     ...
     # For gnulib.
     gl_INIT
     ...

gl_INIT will in turn call the macros related with the gnulib functions, be it specific gnulib macros, like gl_FUNC_ALLOCA or Autoconf or Automake macros like AC_FUNC_ALLOCA or AM_FUNC_GETLINE. So there is no need to call those macros yourself when you use the corresponding gnulib modules.

You must also make sure that the gnulib library is built. Add the Makefile in the gnulib source base directory to AC_CONFIG_FILES, as in:

     AC_CONFIG_FILES(... lib/Makefile ...)

You must also make sure that make will recurse into the gnulib directory. To achieve this, add the gnulib source base directory to a SUBDIRS Makefile.am statement, as in:

     SUBDIRS = lib

or if you, more likely, already have a few entries in SUBDIRS, you can add something like:

     SUBDIRS += lib

Finally, you have to add compiler and linker flags in the appropriate source directories, so that you can make use of the gnulib library. Since some modules (‘getopt’, for example) may copy files into the build directory, top_builddir/lib is needed as well as top_srcdir/lib. For example:

     ...
     AM_CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib
     ...
     LDADD = lib/libgnu.a
     ...

Don’t forget to #include the various header files. In this example, you would need to make sure that ‘#include <string.h>’ is evaluated when compiling all source code files, that want to make use of strdup.

In the usual case where Autoconf is creating a config.h file, you should include config.h first, before any other include file. That way, for example, if config.h defines ‘restrict’ to be the empty string on a non-C99 host, or a macro like ‘_FILE_OFFSET_BITS’ that affects the layout of data structures, the definition is consistent for all include files. Also, on some platforms macros like ‘_FILE_OFFSET_BITS’ and ‘_GNU_SOURCE’ may be ineffective, or may have only a limited effect, if defined after the first system header file is included.

Finally, note that you cannot use AC_LIBOBJ or AC_REPLACE_FUNCS in your configure.ac and expect the resulting object files to be automatically added to

lib/libgnu.a. This is because your AC_LIBOBJ and AC_REPLACE_FUNCS invocations

from configure.ac augment a variable @LIBOBJS@ (and/or @LTLIBOBJS@ if using Libtool), whereas lib/libgnu.a is built from the contents of a different variable, usually

@gl_LIBOBJS@ (or @gl_LTLIBOBJS@ if using Libtool).

3.3 Modified imports

You can at any moment decide to use Gnulib differently than the last time. There are two ways to change how Gnulib is used. Which one you’ll use, depends on

where you keep track of options and module names that you pass to gnulib-tool.

• If you store the options and module names in a file under your own control, such

as autogen.sh, bootstrap, bootstrap.conf, or similar, simply invoke gnulib-tool

again, with modified options and more or fewer module names.

• gnulib-tool remembers which modules were used last time. If you want to rely on gnulib-tool’s own memory of the last used options and module names, you can use

the commands gnulib-tool --add-import and gnulib-tool --remove-import.

So, if you only want to use more Gnulib modules, simply invoke gnulib-tool --add-import new-modules. The list of modules that you pass after ‘--add-import’ is added to the previous list of modules. Similarly, if you want to use fewer Gnulib modules, simply invoke gnulib-tool --remove-import unneeded-modules. The list of modules that you pass after ‘--remove-import’ is removed from the previous list of modules. Note that if a module is then still needed as dependency of other modules, it will be used nevertheless. If you want to really not use a module any more, regardless of whether other modules may need it, you need to use the ‘--avoid’ option. For other changes, such as different choices of ‘--lib’, ‘--source-base’ or ‘--aux-dir’, the normal way is to modify manually the file gnulib-cache.m4 in the M4 macros

directory, then launch ‘gnulib-tool --add-import’.

The only change for which this doesn’t work is a change of the ‘--m4-base’ directory. Because, when you pass a different value of ‘--m4-base’, gnulib-tool will not find the previous gnulib-cache.m4 file any more. A possible solution is to manually copy the gnulib-cache.m4 into the new M4 macro directory. In the gnulib-cache.m4 file, the macros have the following meaning:

gl_LOCAL_DIR

The argument is a colon separated list of local directories where gnulibtool will search before looking at gnulib’s directory. Corresponds to the ‘--local-dir’ command line argument.

gl_MODULES

The argument is a space separated list of the requested modules, not including dependencies.

gl_WITH_OBSOLETE

The presence of this macro corresponds to the ‘--with-obsolete’ command line argument. It takes no arguments.

gl_WITH_CXX_TESTS

The presence of this macro corresponds to the ‘--with-c++-tests’ command line argument and to the absence of the ‘--without-c++-tests’ command line argument. It takes no arguments.

gl_WITH_LONGRUNNING_TESTS

The presence of this macro corresponds to the ‘--with-longrunning-tests’ command line argument and to the absence of the ‘--without-longrunning-tests’ command line argument. It takes no arguments.

gl_WITH_PRIVILEGED_TESTS

The presence of this macro corresponds to the ‘--with-longrunning-tests’ command line argument and to the absence of the ‘--without-longrunning-tests’ command line argument. It takes no arguments.

gl_WITH_UNPORTABLE_TESTS

The presence of this macro corresponds to the ‘--with-unportable-tests’ command line argument and to the absence of the ‘--without-unportable-tests’ command line argument. It takes no arguments.

gl_WITH_ALL_TESTS

The presence of this macro corresponds to the ‘--with-all-tests’ command line argument. It takes no arguments.

gl_AVOID The argument is a space separated list of modules that should not be used, even if they occur as dependencies. Corresponds to the ‘--avoid’ command line argument.

gl_SOURCE_BASE

The argument is the relative file name of the directory containing the gnulib source files (mostly *.c and *.h files). Corresponds to the ‘--source-base’ command line argument.

gl_M4_BASE

The argument is the relative file name of the directory containing the gnulib M4 macros (*.m4 files). Corresponds to the ‘--m4-base’ command line argument.

gl_PO_BASE

The argument is the relative file name of the directory containing *.po files. Corresponds to the ‘--po-base’ command line argument.

gl_DOC_BASE

The argument is the relative file name of the directory containing documentation files. Corresponds to the ‘--doc-base’ command line argument.

gl_TESTS_BASE

The argument is the relative file name of the directory containing the gnulib unit test files. Corresponds to the ‘--tests-base’ command line argument.

gl_WITH_TESTS

The presence of this macro corresponds to the ‘--with-tests’ command line argument. It takes no arguments.

gl_LIB The argument is the name of the library to be created. Corresponds to the ‘--lib’ command line argument.

gl_LGPL The presence of this macro without arguments corresponds to the ‘--lgpl’ command line argument. The presence of this macro with an argument (whose value must be 2 or 3) corresponds to the ‘--lgpl=arg’ command line argument.

gl_MAKEFILE_NAME

The argument is the name of the makefile in the source-base and testsbase directories. Corresponds to the ‘--makefile-name’ command line argument.

gl_TESTS_MAKEFILE_NAME

The argument is the name of the makefile in the tests-base directory. Corresponds to the ‘--tests-makefile-name’ command line argument.

gl_AUTOMAKE_SUBDIR

The presence of this macro corresponds to the ‘--automake-subdir’ command line argument. It takes no arguments.

gl_CONDITIONAL_DEPENDENCIES

The presence of this macro corresponds to the ‘--conditional-dependencies’ command line argument and to the absence of the ‘--no-conditional-dependencies’ command line argument. It takes no arguments.

gl_LIBTOOL

The presence of this macro corresponds to the ‘--libtool’ command line argument and to the absence of the ‘--no-libtool’ command line argument. It takes no arguments.

gl_MACRO_PREFIX

The argument is the prefix to use for macros in the gnulib-comp.m4 file. Corresponds to the ‘--macro-prefix’ command line argument.

gl_PO_DOMAIN

The argument is the prefix of the i18n domain, typically matching the package name. Corresponds to the ‘--po-domain’ command line argument.

gl_WITNESS_C_MACRO

The argument is the C macro that is defined when the sources in this directory are compiled or used. Corresponds to the ‘--witness-c-macro’ command line argument.

gl_VC_FILES

The argument to this macro is true or false. The former corresponds to the ‘--vc-files’ command line argument and the latter corresponds to the ‘--no-vc-files’ command line argument.

3.4 Simple update

When you want to update to a more recent version of Gnulib, without changing the list of modules or other parameters, a simple call does it:

      $ gnulib-tool --add-import

This will create, update or remove files, as needed.

Note: From time to time, changes are made in Gnulib that are not backward compatible. When updating to a more recent Gnulib, you should consult Gnulib’s NEWS file to check whether the incompatible changes affect your project.

3.5 Changing your sources for use with Gnulib

When you use Gnulib, you need to make some small changes to your source code base.

3.5.1 -I options

Gnulib contains some header file overrides. This means that when building on systems with deficient header files in /usr/include/, it may create files named string.h, stdlib.h, stdint.h or similar in the build directory. In the other source directories of your package you will usually pass ‘-I’ options to the compiler, so that these Gnulib substitutes are visible and take precedence over the files in /usr/include/.

3.5.2 Include <config.h>

These Gnulib substitute header files rely on <config.h> being already included. Furthermore <config.h> must be the first include in every compilation unit. This means that to all your source files and likely also to all your tests source files you need to add an ‘#include <config.h>’ at the top. Which source files are affected? Exactly those whose compilation includes a ‘-I’ option that refers to the Gnulib library directory.

This is annoying, but inevitable: On many systems, <config.h> is used to set system dependent flags (such as _GNU_SOURCE on GNU systems), and these flags have no effect after any system header file has been included.

3.5.3 Style of #include statements

When including including specific header files, you need to use the ‘#include <...>’ syntax, not the ‘#include "..."’ syntax. This is true for the following POSIX or ISO C standardized header files:

    arpa/inet.h
    assert.h
    ctype.h
    dirent.h
    endian.h
    errno.h
    fcntl.h
    fenv.h
    float.h

fnmatch.h
glob.h
iconv.h
inttypes.h
langinfo.h
limits.h
locale.h
math.h
monetary.h
netdb.h
net/if.h
netinet/in.h
poll.h
pthread.h
sched.h
search.h
signal.h
spawn.h
stdalign.h
stdarg.h
stdbit.h
stddef.h
stdint.h
stdio.h
stdlib.h
string.h
strings.h
sys/msg.h
sys/resource.h
sys/select.h
sys/sem.h
sys/shm.h
sys/socket.h
sys/stat.h
sys/time.h
sys/times.h
sys/types.h
sys/uio.h
sys/utsname.h

sys/wait.h
termios.h
threads.h
time.h
uchar.h
unistd.h
utime.h
wchar.h
wctype.h

as well as for the following header files that exist in the GNU C library but are not standardized:

alloca.h
byteswap.h
error.h
getopt.h
malloc.h
omp.h
pty.h
selinux/selinux.h
sys/file.h
sys/ioctl.h
sys/random.h
sysexits.h
utmp.h

The reason for this requirement is that for these header files, the Gnulib override uses #include_next to include the system-provided header of the same name, and #include_ next may not work right with the ‘#include "..."’ syntax.

3.6 Changing your link commands for use with Gnulib

When you use Gnulib, you need to augment the set of libraries against which your programs and libraries are linked. This is done by augmenting the Automake variable LDADD (for all programs) or prog_LDADD (for a single program prog) or library_la_LIBADD (for a single library library.la).

What do you need to add to this Automake variable?

1. The reference to the Gnulib library. In the example of section Section 3.2 [Initial import], page 18, this would be lib/libgnu.a for source in the top-level directory, or ../lib/libgnu.a for source in a sibling directory of lib/.

2. References to additional libraries, brought in by some of the Gnulib modules that you use (directly or indirectly). The complete list of such libraries is printed when you invoke gnulib-tool. Alternatively, you can retrieve the set of additional libraries required by a specific Gnulib module by running

           ./gnulib-tool --extract-recursive-link-directive module

Beware: By looking into the module description file modules/module or by running

           ./gnulib-tool --extract-link-directive module

you would miss the link dependencies of indirectly used modules.

3.7 Finding recommended ISO C and POSIX function substitutes

Gnulib contains a wealth of portability workarounds for ISO C and POSIX functions. They are listed in detail in the chapter Chapter 10 [Function Substitutes], page 89. If you want to know which function substitutes are recommended for your package, you can search your source code for ISO C and POSIX functions that it uses and read the corresponding sections of said documentation chapter. But this is a tedious task. Here is an alternative approach that makes this task easier.

1. Add the Gnulib module ‘posixcheck’ to the Gnulib imports of your package, as described earlier in this chapter.

2. Do a make distclean if you previously built in the top-level directory. Then regenerate the Autotools-generated parts of the package.

3. On a glibc system, build your package. Pay attention to the compiler warnings. Warnings are generated for uses of ISO C and POSIX functions that have portability problems or other important pitfalls and for which you have not yet imported the corresponding Gnulib module. If you get, say, a warning “warning: call to ’close’ declared with attribute warning: close does not portably work on sockets - use gnulib module close for portability”, put ‘close’ on your list of modules to import.

4. Add the modules you noted to the Gnulib imports of your package.

5. Optionally, you can do the same steps again, and make sure that there are no warnings left except those that you want to intentionally ignore.

6. Finally, remove the Gnulib module ‘posixcheck’ from the Gnulib imports, and run

    make distclean.

3.8 Modifying the build rules of a Gnulib import directory

In some cases, you may want to set additional compiler options for use within the Gnulib import directory. For example, the ‘relocatable’ module operates better if you define the

C macros ENABLE_COSTLY_RELOCATABLE and INSTALLDIR during its compilation.

There are two ways to do so: Use of the gnulib-tool option --makefile-name, and a kitchen-sink module.

   With the gnulib-tool option --makefile-name, you are telling gnulib-tool to

generate an includable Makefile.am portion, rather than a self-contained Makefile.am.

For example, when you use --makefile-name=Makefile.gnulib, gnulib-tool will

generate Makefile.gnulib, and you will provide a hand-written Makefile.am that includes Makefile.gnulib through a line such as

      include Makefile.gnulib

Before this include, you need to initialize this set of Makefile.am variables:

• AUTOMAKE_OPTIONS
• SUBDIRS
• noinst_HEADERS
• noinst_LIBRARIES
• noinst_LTLIBRARIES

• pkgdata_DATA (only with Automake ≥ 1.11.4)

• EXTRA_DIST
• BUILT_SOURCES
• SUFFIXES
• MOSTLYCLEANFILES
• MOSTLYCLEANDIRS
• CLEANFILES
• DISTCLEANFILES
• MAINTAINERCLEANFILES
• AM_CPPFLAGS
• AM_CFLAGS

AUTOMAKE_OPTIONS should be initialized as described in Section “Changing Automake’s Behavior” in GNU Automake. The other variables can be initialized to empty. However, you will most likely want to initialize some of them with non-empty values, in order to achieve the desired customization.

The other approach, the kitchen-sink module, is more advanced. See chapter Chapter 5 [Extending Gnulib], page 45.

3.9 Building directly from the top-level directory

By default, the Gnulib import directory will contain a generated Makefile.am file. After configuring, this produces a generated Makefile in this directory. As a consequence, the build from the top-level directory will use a recursive make invocation for this directory.

Some people prefer a build system where the Makefile in the top-level directory directly builds the artifacts in the subdirectories, without an intermediate make invocation. This is called “non-recursive make” and is supported by Automake. For more details, see https://

autotools.io/automake/nonrecursive.html.

Gnulib supports this flavour of build system too. To use it, pass two options to gnulib-

tool: ‘--makefile-name’ and ‘--automake-subdir’.
 With the gnulib-tool option ‘--makefile-name’, you are telling gnulib-tool

to generate an includable Makefile.am portion in the Gnulib import directory, rather than a self-contained Makefile.am. For example, when you use

‘--makefile-name=Makefile.gnulib’, gnulib-tool will generate Makefile.gnulib.

With the option ‘--automake-subdir’, you are telling gnulib-tool that you will include the generated file from the Makefile.am in the top-level directory, rather than from a Makefile.am in the same directory. For example, the top-level Makefile.am might contain this directive:

include lib/Makefile.gnulib

The option ‘--automake-subdir’ is also supported in combination with ‘--with-tests’ (see Section 3.14 [Unit tests], page 35). Note that in this case, however, the generated unit tests directory will contains a Makefile.am and thus use a recursive make invocation. This is not a problem, since the built artifacts of your package have no dependencies towards the Gnulib unit tests, nor vice versa.

3.10 Using Gnulib for both a library and a program

Your project might build both a library and some accompanying programs in the same source tree. In that case you might want to use different modules for the library than for the programs. Typically the programs might want to make use of getopt-posix or versionetc, while the library wants to stay clear of these modules for technical or licensing reasons.

Let’s assume that your project contains a lib directory where the source of the library resides and a src directory for the sources of the programs as follows.

.
|-- configure.ac
|-- lib
|   |-- foo.c
|   ` -- Makefile.am
|-- Makefile.am
` -- src
    |-- bar.c
    ` -- Makefile.am

You can now add two instances of Gnulib to your project in separate source trees:

~/src/libfoo$ gnulib-tool --import --lib=libgnu --source-base=gnulib \
              --m4-base=gnulib/m4 --macro-prefix=gl strndup
~/src/libfoo$ gnulib-tool --import --lib=libgnutools \
              --source-base=src/gnulib --m4-base=src/gnulib/m4 \
              --macro-prefix=gl_tools getopt-gnu

The first one will import the module strndup in gnulib and the second one will import getopt-gnu in src/gnulib and you will end up with the following source tree (many files omitted in the interest of brevity):

.
|-- configure.ac
|-- gnulib
|   |-- m4
|   |-- strndup.c
|-- lib
|   |-- foo.c
|   ` -- Makefile.am
|-- Makefile.am
` -- src
    |-- bar.c

    |-- gnulib
    |   |-- getopt.c
    |   |-- getopt.in.h
    |   |-- m4
    ` -- Makefile.am

As discussed in Section 3.14 [Unit tests], page 35, you may not use ‘--with-tests’ for this project since the configure.ac is shared.

Integration with your code is basically the same as outlined in Section 3.2 [Initial import], page 18, with the one exception that you have to add both the macro gl_EARLY and the macro gl_tools_EARLY to your configure.ac (and of course also both macros gl_INIT and gl_tools_INIT). Obviously the name of the second macro is dependent on the value of the --macro-prefix option in your gnulib-tool invocation.

...
AC_PROG_CC
gl_EARLY
gl_tools_EARLY
...
# For gnulib.
gl_INIT
gl_tools_INIT
...

Also as outlined in Section 3.2 [Initial import], page 18, you will have to add compiler and linker flags. For the library you might have to add something along the line of the following to your Makefile.am:

...
AM_CPPFLAGS = -I$(top_srcdir)/gnulib -I$(top_builddir)/gnulib
...
libfoo_la_LIBADD = $(top_builddir)/gnulib/libgnu.la
...

Correspondingly for the programs you will have to add something like this:

...
AM_CPPFLAGS = -I$(top_srcdir)/src/gnulib -I$(top_builddir)/src/gnulib
...
LDADD = $(top_builddir)/src/gnulib/libgnutools.la
...

The name of the library that you have pass in the linker option depends on the --lib option in gnulib-tool invocation.

3.11 Caveat: gettextize and autopoint users

The programs gettextize and autopoint, part of GNU gettext, import or update the internationalization infrastructure. Some of this infrastructure, namely ca. 20 Autoconf macro files and the config.rpath file, is also contained in Gnulib and may be imported by gnulib-tool. The use of gettextize or autopoint will therefore overwrite some of the files that gnulib-tool has imported, and vice versa.

Avoiding to use gettextize (manually, as package maintainer) or autopoint (as part of a script like autoreconf or autogen.sh) is not the solution: These programs also import the infrastructure in the po/ and optionally in the intl/ directory.

The copies of the conflicting files in Gnulib are more up-to-date than the copies brought in by gettextize and autopoint. When a new gettext release is made, the copies of the files in Gnulib will be updated immediately.

The choice of which version of gettext to require depends on the needs of your package. For a package that wants to comply to GNU Coding Standards, the steps are:

1. When you run gettextize, always use the gettextize from the matching GNU gettext release. For the most recent Gnulib checkout, this is the newest release found on https://ftp.gnu.org/gnu/gettext/. For an older Gnulib snapshot, it is the release that was the most recent release at the time the Gnulib snapshot was taken.

2. After running gettextize, invoke gnulib-tool and import the gettext module. Also, copy the latest version of gnulib’s build-aux/po/Makefile.in.in to your po/ directory (this is done for you if you use gnulib’s autogen.sh script).

3. If you get an error message like *** error: gettext infrastructure mismatch:
using a Makefile.in.in from gettext version ... but the Autoconf macros are

from gettext version ..., it means that a new GNU gettext release was made, and its Autoconf macros were integrated into Gnulib and now mismatch the po/ infrastructure. In this case, fetch and install the new GNU gettext release and run

gettextize followed by gnulib-tool.

On the other hand, if your package is not as concerned with compliance to the latest standards, but instead favors development on stable environments, the steps are:

1. Determine the oldest version of gettext that you intend to support during development (at this time, gnulib recommends going no older than version 0.17). Run autopoint (not gettextize) to copy infrastructure into place (newer versions of gettext will install the older infrastructure that you requested).

2. Invoke gnulib-tool, and import the gettext-h module.

Regardless of which approach you used to get the infrastructure in place, the following steps must then be used to preserve that infrastructure (gnulib’s autogen.sh script follows these rules):

1. When a script of yours run autopoint, invoke gnulib-tool afterwards.

2. When you invoke autoreconf after gnulib-tool, make sure to not invoke autopoint

a second time, by setting the AUTOPOINT environment variable, like this:

      $ env AUTOPOINT=true autoreconf --install

3.12 Handling Gnulib’s own message translations

Gnulib provides some functions that emit translatable messages using GNU gettext. The ‘gnulib’ domain at the Translation Project (https://translationproject.org/) collects translations of these messages, which you should incorporate into your own programs.

There are two basic ways to achieve this. The first, and older, method is to list all the source files you use from Gnulib in your own po/POTFILES.in file. This will cause all the relevant translatable strings to be included in your POT file. When you send this POT file to the Translation Project, translators will normally fill in the translations of the Gnulib strings from their “translation memory”, and send you back updated PO files.

However, this process is error-prone: you might forget to list some source files, or the translator might not be using a translation memory and provide a different translation than another translator, or the translation might not be kept in sync between Gnulib and your package. It is also slow and causes substantial extra work, because a human translator must be in the loop for each language and you will need to incorporate their work on request.

For these reasons, a new method was designed and is now recommended. If you pass the

--po-base=directory and --po-domain=domain options to gnulib-tool, then gnulib-

tool will create a separate directory with its own POTFILES.in, and fetch current translations directly from the Translation Project (using rsync or wget, whichever is available). The POT file in this directory will be called domain-gnulib.pot, depending on the domain you gave to the --po-domain option (typically the same as the package name). This causes these translations to reside in a separate message domain, so that they do not clash either with the translations for the main part of your package nor with those of other packages on the system that use possibly different versions of Gnulib. When you use these options, the functions in Gnulib are built in such a way that they will always use this domain regardless of the default domain set by textdomain.

In order to use this method, you must—in each program that might use Gnulib code— add an extra line to the part of the program that initializes locale-dependent behavior. Where you would normally write something like:

       setlocale (LC_ALL, "");
       bindtextdomain (PACKAGE, LOCALEDIR);
       textdomain (PACKAGE);

you should add an additional bindtextdomain call to inform gettext of where the MO files for the extra message domain may be found:

       bindtextdomain (PACKAGE "-gnulib", LOCALEDIR);

(This example assumes that the domain that you specified to gnulib-tool is the same as the value of the PACKAGE preprocessor macro.)

Since you do not change the textdomain call, the default message domain for your program remains the same and your own use of gettext functions will not be affected.

3.13 Integration with Version Control Systems

If a project stores its source files in a version control system (VCS), such as CVS, Subversion, or Git, one needs to decide which files to commit.

In principle, all files created by gnulib-tool, except gnulib-cache.m4, can be treated like generated source files, like for example a parser.c file generated from parser.y. Alternatively, they can be considered source files and updated manually.

Here are the three different approaches in common use. Each has its place, and you should use whichever best suits your particular project and development methods.

1. In projects which commit all source files, whether generated or not, into their VCS, the gnulib-tool generated files should all be committed. In this case, you should pass the option ‘--no-vc-files’ to gnulib-tool, which avoids alteration of VCS-related files such as .gitignore.

Gnulib also contains files generated by make (and removed by make clean), using information determined by configure. For a Gnulib source file of the form lib/foo.in.h, the corresponding lib/foo.h is such a make-generated file. These should not be checked into the VCS, but instead added to .gitignore or equivalent.

2. In projects which customarily omit from their VCS all files that are generated from other source files, none of these files and directories are added into the VCS. As described in Section 3.3 [Modified imports], page 22, there are two ways to keep track of options and module names that are passed to gnulib-tool. The command for restoring the omitted files depends on it:

• If they are stored in a file other than gnulib-cache.m4, such as autogen.sh, bootstrap, bootstrap.conf, or similar, the restoration command is the entire gnulib-tool ... --import ... invocation with all options and module names.

• If the project relies on gnulib-tool’s memory of the last used options and module names, then the file gnulib-cache.m4 in the M4 macros directory must be added to the VCS, and the restoration command is:

           $ gnulib-tool --update

The ‘--update’ option operates much like the ‘--add-import’ option, but it does not offer the possibility to change the way Gnulib is used. Also it does not report in the ChangeLogs the files that it had to add because they were missing.

Most packages nowadays use the first among these two approaches. Over time, three ways of handling version control have evolved. In the cases (A) and (B), a “git submodule” is used to reference the precise commit of the gnulib repository, so that each developer running ‘./bootstrap --pull’ or autopull.sh will get the same version of all gnulib-provided files. The alternative is to always follow the newest Gnulib automatically. Note that this can cause breakages at unexpected moments, namely when a broken commit is pushed in Gnulib. It does not happen often, but it does happen.

• (A) In this approach, the developers use a git submodule manually.

The location of the submodule can be chosen to fit the package’s needs; here’s how to initially create the submodule in the directory gnulib:

           $ git submodule add -- https://git.savannah.gnu.org/git/gnulib.git gnulib

Thereafter, the developer will run this command to update the submodule to the recorded checkout level:

           $ git submodule update --init gnulib

Use this sequence to update to a newer version of gnulib:

           $ git submodule update --remote gnulib
           $ git add gnulib
           $ ./bootstrap --bootstrap-sync

If multiple submodules are used, the following may be useful:

           $ git config alias.syncsub "submodule foreach git pull origin master"
           $ git syncsub

• (B) In this approach, the build-aux/bootstrap or autopull.sh program (see Section 20.3 [Developer tools], page 868) is used to aid a developer in using this setup. You copy this program (and if it’s autopull.sh, its companion files) into your package and place the copy or copies under version control. The program can be customized using bootstrap.conf which you also put under version control.

• (C) In this approach, you write the autopull.sh and autogen.sh files by hand.

autopull.sh is most easily written as a script that invokes

               ./gitsub.sh pull || exit 1

where gitsub.sh is described in Section 20.3 [Developer tools], page 868.

autogen.sh typically contains an explicit gnulib-tool invocation, followed by

               aclocal -I m4 \
                 && autoconf \
                 && autoheader && touch config.h.in \
                 && automake --add-missing --copy \
                 && rm -rf autom4te.cache \
                 || exit $?

3. Some projects take a “middle road”: they do commit Gnulib source files as in the first approach, but they do not commit other derived files, such as a Makefile.in generated by Automake. This increases the size and complexity of the repository, but can help occasional contributors by not requiring them to have a full Gnulib checkout to do a build, and all developers by ensuring that all developers are working with the same version of Gnulib in the repository. It also supports multiple Gnulib instances within a project. It remains important not to commit the make-generated files, as described above.

3.14 Bundling the unit tests of the Gnulib modules

You can bundle the unit tests of the Gnulib modules together with your package, through the ‘--with-tests’ option. Together with ‘--with-tests’, you also specify the directory for these tests through the ‘--tests-base’ option. Of course, you need to add this directory to the SUBDIRS variable in the Makefile.am of the parent directory.

The advantage of having the unit tests bundled is that when your program has a problem on a particular platform, running the unit tests may help determine quickly if the problem is on Gnulib’s side or on your package’s side. Also, it helps verifying Gnulib’s portability, of course.

The unit tests will be compiled and run when the user runs ‘make check’. When the user runs only ‘make’, the unit tests will not be compiled.

In the SUBDIRS variable, it is useful to put the Gnulib tests directory after the directory containing the other tests, not before:

      SUBDIRS = gnulib-lib src man tests gnulib-tests

This will ensure that on platforms where there are test failures in either directory, users will see and report the failures from the tests of your program.

Note: In packages which use more than one invocation of gnulib-tool in the scope of the same configure.ac, you cannot use ‘--with-tests’. You will have to use a separate

configure.ac in this case.

3.15 Avoiding unnecessary checks and compilations

In some cases, a module is needed by another module only on specific platforms. But when a module is present, its Autoconf checks are always executed, and its Makefile.am additions are always enabled. So it can happen that some Autoconf checks are executed and some source files are compiled, although no other module needs them on this particular platform, just in case some other module would need them.

The option ‘--conditional-dependencies’ enables an optimization of configure checks and Makefile.am snippets that avoids this. With this option, whether a module is considered “present” is no longer decided when gnulib-tool is invoked, but later, when configure is run. This applies to modules that were added as dependencies while gnulib-tool was run; modules that were passed on the command line explicitly are always “present”.

For example, the timegm module needs, on platforms where the system’s timegm function is missing or buggy, a replacement that is based on a function mktime_internal. The module mktime-internal that provides this function provides it on all platforms. So, by default, the file mktime-internal.c will be compiled on all platforms, even on glibc and BSD systems which have a working timegm function. When the option

‘--conditional-dependencies’ is given, on the other hand, and if mktime-internal was

not explicitly required on the command line, the file mktime-internal.c will only be compiled on the platforms where the timegm needs them.

Conditional dependencies are specified in the module description by putting the condition on the same line as the dependent module, enclosed in brackets. The condition is a boolean shell expression that can assume that the configure.ac snippet from the module description has already been executed. In the example above, the dependency from timegm to mktime-internal is written like this:

      Depends-on:
      ...
      mktime-internal [test $HAVE_TIMEGM = 0 || test $REPLACE_TIMEGM = 1]
      ...

Note: The option ‘--conditional-dependencies’ cannot be used together with the option ‘--with-tests’. It also cannot be used when a package uses gnulib-tool for several subdirectories, with different values of ‘--source-base’, in the scope of a single

configure.ac file.

4 Writing modules

This chapter explains how to write modules of your own, either to extend Gnulib for your own package (see Chapter 5 [Extending Gnulib], page 45), or for inclusion in gnulib proper.

The guidelines in this chapter do not necessarily need to be followed for using gnulibtool. They merely represent a set of good practices. Following them will result in a good structure of your modules and in consistency with gnulib.

4.1 Source code files

Every API (C functions or variables) provided should be declared in a header file (.h file) and implemented in one or more implementation files (.c files). The separation has the effect that users of your module need to read only the contents of the .h file and the module description in order to understand what the module is about and how to use it— not the entire implementation. Furthermore, users of your module don’t need to repeat the declarations of the functions in their code, and are likely to receive notification through compiler errors if you make incompatible changes to the API (like, adding a parameter or changing the return type of a function).

4.2 Header files

The .h file should declare the C functions and variables that the module provides.

The .h file should be stand-alone. That is, it does not require other .h files to be included before. Rather, it includes all necessary .h files by itself.

It is a tradition to use CPP tricks to avoid parsing the same header file more than once, which might cause warnings. The trick is to wrap the content of the header file (say, foo.h) in a block, as in:

     #ifndef FOO_H
     # define FOO_H
     ...
     body of header file goes here
     ...
     #endif /* FOO_H */

Whether to use FOO_H or _FOO_H is a matter of taste and style. The C99 and C11 standards reserve all identifiers that begin with an underscore and either an uppercase letter or another underscore, for any use. Thus, in theory, an application might not safely assume that _FOO_H has not already been defined by a library. On the other hand, using FOO_H will likely lead the higher risk of collisions with other symbols (e.g., KEY_H, XK_H, BPF_H, which are CPP macro constants, or COFF_LONG_H, which is a CPP macro function). Your preference may depend on whether you consider the header file under discussion as part of the application (which has its own namespace for CPP symbols) or a supporting library (that shouldn’t interfere with the application’s CPP symbol namespace).

Adapting C header files for use in C++ applications can use another CPP trick, as in:

     # ifdef __cplusplus
     extern "C"

     {
     # endif
     ...
     body of header file goes here
     ...
     # ifdef __cplusplus
     }
     # endif

The idea here is that __cplusplus is defined only by C++ implementations, which will wrap the header file in an ‘extern "C"’ block. Again, whether to use this trick is a matter of taste and style. While the above can be seen as harmless, it could be argued that the header file is written in C, and any C++ application using it should explicitly use the ‘extern "C"’ block itself. Your preference might depend on whether you consider the API exported by your header file as something available for C programs only, or for C and C++ programs alike.

Note that putting a #include in an extern "C" { ... } block yields a syntax error in C++ mode on some platforms (e.g., glibc systems with g++ v3.3 to v4.2, AIX, IRIX). For this reason, it is recommended to place the #include before the extern "C" block.

4.3 Implementation files

The .c file or files implement the functions and variables declared in the .h file.

Include ordering

Every implementation file must start with ‘#include <config.h>’. This is necessary for activating the preprocessor macros that are defined on behalf of the Autoconf macros. Some of these preprocessor macros, such as _GNU_SOURCE, would have no effect if defined after a system header file has already been included.

Then comes the ‘#include "..."’ specifying the header file that is being implemented. Putting this right after ‘#include <config.h>’ has the effect that it verifies that the header file is self-contained.

Then come the system and application headers. It is customary to put all the system headers before all application headers, so as to minimize the risk that a preprocessor macro defined in an application header confuses the system headers on some platforms.

In summary:

• First comes #include <config.h>.

• Second comes the #include "..." specifying the module being implemented.

• Then come all the #include <...> of system or system-replacement headers, in arbitrary order.

• Then come all the #include "..." of gnulib and application headers, in arbitrary order.

4.4 Specification

The specification of a function should answer at least the following questions:

• What is the purpose of the function?

• What are the arguments?

• What is the return value?

• What happens in case of failure? (Exit? A specific return value? Errno set?)

• Memory allocation policy: If pointers to memory are returned, are they freshly allocated and supposed to be freed by the caller?

Where to put the specification describing exported functions? Three practices are used in gnulib:

• The specification can be as comments in the header file, just above the function declaration.

• The specification can be as comments in the implementation file, just above the function definition.

• The specification can be in texinfo format, so that it gets included in the gnulib manual.

In any case, the specification should appear in just one place, unless you can ensure that the multiple copies will always remain identical.

The advantage of putting it in the header file is that the user only has to read the include file normally never needs to peek into the implementation file(s).

The advantage of putting it in the implementation file is that when reviewing or changing the implementation, you have both elements side by side.

The advantage of texinfo formatted documentation is that it is easily published in HTML or Info format.

Currently (as of 2020), 70% of gnulib uses the first practice, 25% of gnulib uses the second practice, and a small minority uses the texinfo practice.

4.5 Module description

For the module description, you can start from an existing module’s description, or from

a blank one: module/TEMPLATE for a normal module, or module/TEMPLATE-TESTS for a

unit test module. Some more fields are possible but rarely used. Use module/TEMPLATE-EXTENDED if you want to use one of them.

Module descriptions have the following fields. Absent fields are equivalent to fields with empty contents.

Description This field should contain a concise description of the module’s functionality. One sentence is enough. For example, if it defines a single function ‘frob’, the description can be ‘frob() function: frobnication.’ Gnulib’s documentation generator will automatically convert the first part to a hyperlink when it has this form.

Status This field is either empty/absent, or contains the word ‘obsolete’. In the latter case, gnulib-tool will, unless the option --with-obsolete is given, omit it when it used as a dependency. It is good practice to also notify the user about an obsolete module. This is done by putting into the ‘Notice’ section (see

          below) text like ‘This module is obsolete.’

Notice This field contains text that gnulib-tool will show to the user when the module is used. This can be a status indicator like ‘This module is obsolete.’ or additional advice. Do not abuse this field.

Applicability This field is either empty/absent, or contains the word ‘all’. It describes to which Makefile.am the module is applied. By default, a normal module is

applied to source_base/Makefile.am (normally lib/Makefile.am), whereas

a module ending in -tests is applied to tests_base/Makefile.am (normally tests/Makefile.am). If this field is ‘all’, it is applied to both Makefile.ams. This is useful for modules which provide Makefile.am macros rather than compiled source code.

Files This field contains a newline separated list of the files that are part of the module. gnulib-tool copies these files into the package that uses the module. This list is typically ordered by importance: First comes the header file, then the implementation files, then other files. It is possible to have the same file mentioned in multiple modules. That is, if the maintainers of that module agree on the purpose and future of said file.

Depends-on This field contains a newline separated list of the modules that are required for the proper working of this module. gnulib-tool includes each required module automatically, unless it is specified with option --avoid or it is marked as obsolete and the option --with-obsolete is not given. A test modules foo-tests implicitly depends on the corresponding non-test module foo. foo implicitly depends on foo-tests if the latter exists and if the option --with-tests has been given. Tests modules can depend on non-tests modules. Non-tests modules should not depend on tests modules. (Recall that tests modules are built in a separate directory.) Each listed required module may be declared a conditional dependency. This is indicated by placing the condition for the dependency on the same line, enclosed in brackets, after the name of the required module. The condition is a shell expression that is run after the module’s configure.ac statements. For example:

      strtoull   [test $ac_cv_func_strtoumax = no]

Lines starting with # are recognized as comments and are ignored.

configure.ac-early This field contains configure.ac stuff (Autoconf macro invocations and shell statements) that are logically placed early in the configure.ac file: right after the AC_PROG_CC invocation. This section is adequate for statements that modify CPPFLAGS, as these can affect the results of other Autoconf macros.

configure.ac This field contains configure.ac stuff (Autoconf macro invocations and shell statements).

It is forbidden to add items to the CPPFLAGS variable here, other than temporarily, as these could affect the results of other Autoconf macros. We avoid adding items to the LIBS variable, other than temporarily. Instead, the module can export an Autoconf-substituted variable that contains link options. The user of the module can then decide to which executables to apply which link options. Recall that a package can build executables of different kinds and purposes; having all executables link against all libraries is inappropriate. If the statements in this section grow larger than a couple of lines, we recommend moving them to a .m4 file of their own.

Makefile.am This field contains Makefile.am statements. Variables like lib_SOURCES are transformed to match the name of the library being built in that directory. For example, lib_SOURCES may become libgnu_a_SOURCES (for a plain library) or libgnu_la_SOURCES (for a libtool library). Therefore, the normal way of having an implementation file lib/foo.c compiled unconditionally is to write

      lib_SOURCES += foo.c

Include This field contains the preprocessor statements that users of the module need to add to their source code files. Typically it’s a single include statement. A shorthand is allowed: You don’t need to write the word “#include”, just the name of the include file in the way it will appear in an include statement. Example:

      "foo.h"

Link This field contains the set of libraries that are needed when linking libraries or executables that use this module. Often this will be written as a reference to a Makefile variable. Please write them one per line, so that gnulib-tool can remove duplicates when presenting a summary to the user. Example:

      $(POW_LIBM)
      $(LTLIBICONV) when linking with libtool, $(LIBICONV) otherwise

When this field is omitted, it defaults to the union of the Link field of the dependencies.

License This field specifies the license that governs the source code parts of this module. See Section 2.8 [Copyright], page 16, for details. Be sure to place, in every source code file, a copyright notice and the appropriate license notice, taken from the

etc/license-notices/ directory.

Maintainer This field specifies the persons who have a definitive say about proposed changes to this module. You don’t need to mention email addresses here: they can be inferred from the ChangeLog file. Please put at least one person here. We don’t like unmaintained modules.

4.6 Autoconf macros

For a module foo, an Autoconf macro file m4/foo.m4 is typically created when the Autoconf macro invocations for the module are longer than one or two lines.

The name of the main entry point into this Autoconf macro file is typically gl_FOO. For modules outside Gnulib that are not likely to be moved into Gnulib, please use a prefix specific to your package: gt_for GNU gettext, cu_for GNU coreutils, etc.

For modules that define a function foo, the entry point is called gl_FUNC_FOO instead of gl_FOO. For modules that provide a header file with multiple functions, say foo.h, the entry point is called gl_FOO_H or gl_HEADER_FOO_H. This convention is useful because sometimes a header and a function name coincide (for example, fcntl and fcntl.h).

For modules that provide a replacement, it is useful to split the Autoconf macro into two macro definitions: one that detects whether the replacement is needed and requests the replacement by setting a HAVE_FOO variable to 0 or a REPLACE_FOO variable to 1 (this is the entry point, say gl_FUNC_FOO), and one that arranges for the macros needed by the replacement code lib/foo.c (typically called gl_PREREQ_FOO). The reason of this separation is

1. to make it easy to update the Autoconf macros when you have modified the source code file: after changing lib/foo.c, all you have to review is the Depends-on section of the module description and the gl_PREREQ_FOO macro in the Autoconf macro file.

2. The Autoconf macros are often large enough that splitting them eases maintenance.

Autoconf macro files in Gnulib all start with a header consisting of

1. A comment line with the file name. This is useful because in some cases the generated aclocal.m4 file does not contain a reference to the .m4 file but its entire contents. The comment makes it clear which .m4 file is where in the aclocal.m4 file.

2. A comment line with a serial number. This is useful when people use the ‘aclocal --install’ command. aclocal will then refrain from copying a file with a smaller serial number onto a file with a larger serial number. The serial number should be a positive integer on the main branch, or a positive fractional number on a stable branch.

3. The copyright and license header, as usual.

4.7 Making proper use of AC_LIBOBJ

Source files that provide a replacement should be only compiled on the platforms that need this replacement. While it is actually possible to compile a .c file whose contents is entirely #ifdef’ed out on the platforms that don’t need the replacement, this practice is discouraged because

• It makes the build time longer than needed, by invoking the compiler for nothing.

• It produces a .o file that suggests that a replacement was needed.

• Empty object files produce a linker warning on some platforms: MSVC.

The typical idiom for invoking AC_LIBOBJ is thus the following, in the module description:

      if test $HAVE_FOO = 0 || test $REPLACE_FOO = 1; then
        AC_LIBOBJ([foo])
        gl_PREREQ_FOO
      fi

Important: Do not place AC_LIBOBJ invocations in the Autoconf macros in the m4/ directory. The purpose of the Autoconf macros is to determine what features or bugs the platform has, and to make decisions about which replacements are needed. The purpose of the configure.ac and Makefile.am sections of the module descriptions is to arrange for the replacements to be compiled. Source file names do not belong in the m4/ directory.

When an AC_LIBOBJ invocation is unconditional, it is simpler to just have the source file compiled through an Automake variable augmentation: In the Makefile.am section write

      lib_SOURCES += foo.c

When a module description contains an AC_LIBOBJ([foo]) invocation, you must list the source file lib/foo.c in the Files section. This is needed even if the module depends on another module that already lists lib/foo.c in its Files section – because your module might be used among the test modules (in the directory specified through ‘--tests-base’) and the other module among the main modules (in the directory specified through ‘--source-base’), and in this situation, the AC_LIBOBJ([foo]) of your module can only be satisfied by having foo.c be present in the tests source directory as well.

4.8 Unit test modules

A unit test that is a simple C program usually has a module description as simple as this:

      Files:
      tests/test-foo.c
      tests/macros.h
      Depends-on:
      configure.ac:
      Makefile.am:
      TESTS += test-foo
      check_PROGRAMS += test-foo

The test program tests/test-foo.c often has the following structure:

• First comes the obligatory ‘#include <config.h>’.

• Second comes the include of the header file that declares the API being tested. Including it here verifies that said header file is self-contained.

• Then come other includes. In particular, the file macros.h is often used here. It contains a convenient ASSERT macro.

The body of the test, then, contains many ASSERT invocations. When a test fails, the ASSERT macro prints the line number of the failing statement, thus giving you, the developer, an idea of which part of the test failed, even when you don’t have access to the machine where the test failed and the reporting user cannot run a debugger.

Sometimes it is convenient to write part of the test as a shell script. (For example, in areas related to process control or interprocess communication, or when different locales should be tried.) In these cases, the typical module description is like this:

      Files:
      tests/test-foo.sh
      tests/test-foo.c
      tests/macros.h
      Depends-on:
      configure.ac:

  Makefile.am:
  TESTS += test-foo.sh
  TESTS_ENVIRONMENT += FOO_BAR='@FOO_BAR@'
  check_PROGRAMS += test-foo

Here, the TESTS_ENVIRONMENT variable can be used to pass values determined by configure or by the Makefile to the shell script, as environment variables. The Autoconf values EXEEXT and srcdir are already provided as environment variables, through an initial value of TESTS_ENVIRONMENT that gnulib-tool puts in place.

Regardless of the specific form of the unit test, the following guidelines should be respected:

• A test indicates success by exiting with exit code 0. It should normally not produce output in this case. (Output to temporary files that are cleaned up at the end of the test are possible, of course.)

• A test indicates failure by exiting with an exit code different from 0 and 77, typically 1. It is useful to print a message about the failure in this case. The ASSERT macro already does so.

• A test indicates "skip", that is, that most of its interesting functionality could not be performed, through a return code of 77. A test should also print a message to stdout or stderr about the reason for skipping. For example:

        fputs ("Skipping test: multithreading not enabled\n", stderr);
        return 77;

Such a message helps detecting bugs in the autoconf macros: A simple message ‘SKIP: test-foo’ does not sufficiently catch the attention of the user.

4.9 Incompatible changes

Incompatible changes to Gnulib modules should be mentioned in Gnulib’s NEWS file. Incompatible changes here mean that existing source code may not compile or work any more.

We don’t mean changes in the binary interface (ABI), since

1. Gnulib code is used in source-code form.

2. The user who distributes libraries that contain Gnulib code is supposed to bump the version number in the way described in the Libtool documentation before every release.

5 Extending Gnulib

Gnulib modules are intended to be suitable for widespread use. Most problems with Gnulib can and should be fixed in a generic way, so that all of Gnulib’s users can benefit from the change. But occasionally a problem arises that is difficult or undesirable to fix generically, or a project that uses Gnulib may need to work around an issue before the Gnulib maintainers commit a final fix. Maintainers may also want to add their own pools of modules to projects as Gnulib “staging areas.”

The obvious way to make local changes to Gnulib modules is to use gnulib-tool to check out pristine modules, then to modify the results in-place. This works well enough for short-lived experiments. It is harder to keep modified versions of Gnulib modules for a long time, even though Git (or another distributed version control systems) can help out a lot with this during the development process.

Git, however, doesn’t address the distribution issue. When a package “foobar” needs a modified version of, say, stdint.in.h, it either has to put a comment into foobar/autogen.sh saying “Attention! This doesn’t work with a pristine Gnulib, you need this and that patch after checking out Gnulib,” or it has to use the ‘--avoid=stdint’ option and provide the modified stdint module in a different directory.

The --local-dir option to gnulib-tool solves this problem. It allows the package to override or augment Gnulib. This means:

• You can store files that are to override Gnulib files or modules.

• You can store context diffs to be applied to Gnulib files.

• You can add modules of your own, that are not (yet) in Gnulib.

• You can also add unstructured amounts of code to the library, by grouping the non-Gnulib files of the library in a single kitchen-sink “module.” (This kind of kitchen-sink module is not needed when you use the gnulib-tool option --makefile-name.)

In a release tarball, you can distribute the contents of this --local-dir directory that will be combinable with newer versions of Gnulib, barring incompatible changes to Gnulib.

If the --local-dir=directory option is specified, then gnulib-tool looks in directory whenever it reads a file from the Gnulib directory. Suppose gnulib-tool is looking for file. Then:

• If directory/file exists, then gnulib-tool uses it instead of the file included in Gnulib.

• Otherwise, if directory/file.diff exists, then gnulib-tool uses the file from Gnulib after applying the diff using the patch program.

• Otherwise, gnulib-tool uses the file included in Gnulib.

You can specify the --local-dir multiple times. In this case, the first specified directory has the highest precedence. That is, a file found in one directory will shadow any file and file.diff in the later directories and in the Gnulib directory. And a file file.diff found in one directory will be applied on top of the combination of file and file.diff files found in the later directories and in the Gnulib directory.

Please make wise use of this option. It also allows you to easily hold back modifications you make to Gnulib macros in cases it may be better to share them.

6 Miscellaneous Notes

6.1 Out of memory handling

The gnulib API does not have a standard error code for the out of memory error condition. Instead of adding a non-standard error code, gnulib has chosen to adopt a different strategy. Out of memory handling happens in rare situations, but performing the out of memory error handling after almost all API function invocations pollute your source code and might make it harder to spot more serious problems. The strategy chosen improves code readability and robustness.

For most applications, aborting the application with an error message when the out of memory situation occurs is the best that can be wished for. This is how the library behaves by default (using the ‘xalloc-die’ module).

However, we realize that some applications may not want to abort execution in any situation. Gnulib supports a hook to let the application regain control and perform its own cleanups when an out of memory situation has occurred. The application can define a function (having a void prototype, i.e., no return value and no parameters) and set the library variable xalloc_die to that function. The variable should be declared as follows.

     extern void (*xalloc_die) (void);

Gnulib will invoke this function if an out of memory error occurs. Note that the function should not return. Of course, care must be taken to not allocate more memory, as that will likely also fail.

6.2 Obsolete modules

Modules can be marked obsolete. This means that the problems they fix don’t occur any more on the platforms that are reasonable porting targets now. gnulib-tool warns when obsolete modules are mentioned on the command line, and by default ignores dependencies from modules to obsolete modules. When you pass the option --with-obsolete to gnulibtool, dependencies to obsolete modules will be included, however, unless blocked through an --avoid option. This option is useful if your package should be portable even to very old platforms.

In order to mark a module obsolete, you need to add this to the module description:

     Status:
     obsolete
     Notice:
     This module is obsolete.

6.3 Extra tests modules

Test modules can be marked with some special status attributes. When a test module has such an attribute, gnulib-tool --import will not include it by default.

The supported status attributes are:

c++-test Indicates that the test is testing C++ interoperability. Such a test is useful in a C++ or mixed C/C++ package, but is useless in a C package.

longrunning-test

Indicates that the test takes a long time to compile or execute (more than five minutes or so). Such a test is better avoided in a release that is made for the general public.

privileged-test

Indicates that the test will request special privileges, for example, ask for the superuser password. Such a test may hang when run non-interactively and is therefore better avoided in a release that is made for the general public.

unportable-test

Indicates that the test is known to fail on some systems, and that there is no workaround about it. Such a test is better avoided in a release that is made for the general public.

gnulib-tool --import --with-tests will not include tests marked with these attributes by default. When gnulib-tool is invoked with one of the options

--with-c++-tests, --with-longrunning-tests, --with-privileged-tests, --with-

unportable-tests, it will include tests despite the corresponding special status attribute. When gnulib-tool receives the option --with-all-tests, it will include all tests regardless of their status attributes.

   gnulib-tool --create-testdir --with-tests  and  gnulib-tool --create-

megatestdir --with-tests by default include all tests of modules specified on the command line, regardless of their status attributes. Tests of modules occurring as dependencies are not included by default if they have one of these status attributes. The

options --with-c++-tests, --with-longrunning-tests, --with-privileged-tests,

--with-unportable-tests are recognized here as well. Additionally, gnulib-tool

also understands the options --without-c++-tests, --without-longrunning-tests,
--without-privileged-tests, --without-unportable-tests.

In order to mark a module with a status attribute, you need to add it to the module description, like this:

     Status:
     longrunning-test

If only a part of a test deserves a particular status attribute, you can split the module into a primary and a secondary test module, say foo-tests and foo-extra-tests. Then

add a dependency from foo-tests to foo-extra-tests, and mark the foo-extra-tests

with the particular status attribute.

6.4 Modules that modify the way other modules work

The normal way to design modules is that each module has its own code, and the module dependencies provide the facilities on which this code can rely. But sometimes it is necessary to use more advanced techniques. For example:

• You may want to have optional module dependencies: Let module A use facilities provided by module B, if module B is present, but without requiring that module B is present.

• A module can indicate support for particular behaviours. For example, Gnulib has a module ‘sigpipe’ that requests POSIX compatible SIGPIPE behaviour from all other modules – something that is not enabled by default. Or consider the ‘nonblocking’ module, that is an indicator that all I/O functions should handle non-blocking file descriptors – something that, equally, is not enabled by default.

• A module can indicate to other modules that they can rely on certain guarantees, and thus omit specific code. For example, when Gnulib’s ‘malloc-gnu’ module is present, you can omit code that test n against zero when you call malloc (n).

Be aware that these advanced techniques likely cause breakage in the situation of multiple gnulib-tool invocations in the scope of a single configure file. This is because the question “is module B present?” does not have a unique answer in such situations. gnulibtool has support for these techniques in the situation of --create-testdir --single-configure, which basically has two gnulib-tool invocations, one for a set of modules that end up in gllib, and one for the set of modules that end up in gltests. But you should be aware that this does not cover the general situation.

Which technique to use, depends on the answer to the question: “If my module occurs among the modules of gltests, should it have an effect on the modules in gllib?”

If the answer is “no”, your module description should invoke the Autoconf macro gl_ MODULE_INDICATOR. This Autoconf macro takes one argument: the name of your module.

The effect of gl_MODULE_INDICATOR([my-module]) is to define, in config.h, a C macro

GNULIB_MY_MODULE that indicates whether your macro is considered to be present. This works even when your macro is used in gltests: GNULIB_MY_MODULE will then evaluate to

1 in gltests but to 0 in gllib.

If the answer is “yes”, you have two techniques available. The first one is to invoke a similar Autoconf macro, named gl_MODULE_INDICATOR_FOR_TESTS. It works similarly. However, when your macro is used in gltests, GNULIB_MY_MODULE will evaluate to 1 both

in gltests and in gllib.

The second one is to define a shell variable in the configure file that tells whether your module is present, through use of m4_divert_text. The Autoconf macros of a dependency module will initialize this shell variable, through ‘m4_divert_text([DEFAULTS], [my_shell_var=no])’. The Autoconf macros of your module will override this value,

through ‘m4_divert_text([INIT_PREPARE], [my_shell_var=yes])’. Then you can use

my_shell_var in the Autoconf macros of both modules. You can find more details about this technique in the Gnulib module getopt-gnu.

Reminder: These techniques are advanced. They have the potential to cause lots of headaches if you apply them incorrectly.

6.5 A C++ namespace for gnulib

The function definitions provided by Gnulib (.c code) are meant to be compiled by a C compiler. The header files (.h files), on the other hand, can be used in either C or C++.

By default, when used in a C++ compilation unit, the .h files declare the same symbols and overrides as in C mode, except that functions defined by Gnulib or by the system are declared as ‘extern "C"’.

It is also possible to indicate to Gnulib to provide many of its symbols in a dedicated C++ namespace. If you define the macro GNULIB_NAMESPACE to an identifier, many functions will be defined in the namespace specified by the identifier instead of the global namespace. For example, after you have defined

      #define GNULIB_NAMESPACE gnulib

at the beginning of a compilation unit, Gnulib’s <fcntl.h> header file will make available the open function as gnulib::open. The symbol open will still refer to the system’s open function, with its platform specific bugs and limitations.

The symbols provided in the Gnulib namespace are those for which the corresponding header file contains a _GL_CXXALIAS_RPL or _GL_CXXALIAS_SYS macro invocation.

The benefits of this namespace mode are:

• Gnulib defines fewer symbols as preprocessor macros. For example, on a platform where open has to be overridden, Gnulib normally does #define open rpl_open. If your package has a class with a member open, for example a class foo with a method foo::open, then if you define this member in a compilation unit that includes <fcntl.h> and use it in a compilation unit that does not include <fcntl.h>, or vice versa, you will get a link error. Worse: You will not notice this problem on the platform where the system’s open function works fine. This problem goes away in namespace mode.

• It provides a safety check whether the set of modules your package requests from Gnulib is sufficient. For example, if you use the function gnulib::open in your code, and you forgot to request the module ‘open’ from Gnulib, you will get a compilation error (regardless of the platform).

The drawback of this namespace mode is that the system provided symbols in the global namespace are still present, even when they contain bugs that Gnulib fixes. For example, if you call open (...) in your code, it will invoke the possibly buggy system function, even if you have requested the module ‘open’ from gnulib-tool.

You can turn on the namespace mode in some compilation units and keep it turned off in others. This can be useful if your package consists of an application layer that does not need to invoke POSIX functions and an operating system interface layer that contains all the OS function calls. In such a situation, you will want to turn on the namespace mode for the application layer—to avoid many preprocessor macro definitions—and turn it off for the OS interface layer—to avoid the drawback of the namespace mode, mentioned above.

6.6 License Texinfo sources

Gnulib provides copies of the GNU GPL, GNU LGPL, GNU Affero GPL, and GNU FDL licenses in Texinfo form. (The master location is https://www.gnu.org/licenses/ ). These Texinfo documents do not have any node names and structures built into them; for your manual, you should @include them in an appropriate @node.

The conventional name for the GPL node is ‘Copying’ and for the FDL ‘GNU Free Documentation License’. The LGPL doesn’t seem to have a conventional node name.

Of course the license texts themselves should not be changed at all.

The recommended way to make use of these license files, consistently with current practice, is as follows:

• The code license (GNU GPL, GNU LGPL, or GNU Affero GPL) is usually present as a file in the top-level directory. This is true not only for the release tarballs, but also in the VCS repository. The file is typically named ‘COPYING’ for the GNU GPL, or ‘COPYING.LIB’ or ‘COPYING.LESSER’ for the GNU LGPL. The presence of

this file fulfills a legal obligation; see https://www.gnu.org/licenses/gpl-faq.html#
WhyMustIInclude.

To make use of the code license in your documentation, you may request one of the

modules gpl-3.0, gpl-2.0, lgpl-3.0, lgpl-2.1, agpl-3.0, through a gnulib-tool

invocation. Or you may copy the relevant Texinfo file directly into your VCS repository. Both approaches are equally good. The Texinfo file changes very rarely.

• The documentation license file (GNU FDL) is usually not present as a file in the toplevel directory, because that would be ambiguous: When you use the GNU FDL, you need to specify the Invariant Sections, the Front-Cover Texts, and the Back-Cover Texts. To make use of this documentation license, copy the relevant Texinfo file (doc/fdl-1.3.texi) into your VCS repository. This makes sure that anyone who receives a copy of your VCS repository has also received a copy of the documentation license. In the documentation, also state what are the Invariant Sections, the Front-Cover Texts, and the Back-Cover Texts.

We recommend to place the licenses as appendices at the end of the manual, right before any indices. For the FDL, we suggest the following @menu entry:

  * GNU Free Documentation License::  License for copying this manual

For any @detailmenu entries, we suggest the following:

  Copying This Manual
  * GNU Free Documentation License::     Copying and sharing this manual

And for actual inclusion of the FDL itself, we suggest the following:

  @node GNU Free Documentation License
  @appendix GNU Free Documentation License
  @include fdl.texi

6.7 Building gnulib

If you wish to help the gnulib development effort with build logs for your favorite platform, you may perform these steps:

1. Prerequisites tools Install the proper development tools. To build and test all of Gnulib, you will need development tools for the programming languages C, C++, Java, and Perl, along with standard POSIX utilities such as awk, make and sh. You will also need development tools that include Autoconf, Automake, Bison, Gettext, Git, GNU M4, Gperf, Libtool, and Texinfo. Some of these tools are needed only by some modules. More details can be found in Gnulib’s DEPENDENCIES file.

2. Obtain Gnulib

See https://www.gnu.org/software/gnulib/ for how to get the current Gnulib

sources via Git.

3. Create gnulib directory On a machine with GNU development tools installed and with a gnulib git checkout, use

     gnulib-tool --create-testdir --with-tests --dir=...

Alternatively, pick a small set of modules and run

     gnulib-tool --create-megatestdir --with-tests --dir=... autobuild MODULES

(You can’t do this with all of Gnulib at once: gnulib-tool would run for a week and produce a directory that takes more than 100 GB, maybe even 1 TB, of disk space.)

4. Transfer gnulib directory Transfer this directory to a build machine (HP-UX, Cygwin, or whatever). Often it is easier to transfer one file, and this can be achieved by running, inside the directory the following commands:

     ./configure
     make dist

And then transferring the dummy-0.tar.gz file.

5. Build modules On the build machine, run ./do-autobuild (or "nohup ./do-autobuild"). It creates a directory logs/ with a log file for each module.

7 Building the ISO C and POSIX Substitutes

This section shows a radically different way to use Gnulib.

You can extract the ISO C / POSIX substitutes part of gnulib by running the command

      gnulib-tool --create-testdir --source-base=lib \
                  --dir=/tmp/posixlib ` posix-modules`

The command ‘posix-modules’ is found in the same directory as gnulib-tool.

The resulting directory can be built on a particular platform, independently of the program being ported. Then you can configure and build any program, by setting CPPFLAGS and LDFLAGS at configure time accordingly: set CPPFLAGS="-I.../posixlib/lib", plus any essential type definitions and flags that you find in .../posixlib/config.h, and set

LDFLAGS=".../posixlib/lib/libgnu.a".

This way of using Gnulib is useful when you don’t want to modify the program’s source code, or when the program uses a mix between C and C++ sources (requiring separate builds of the posixlib for the C compiler and for the C++ compiler).

8 ISO C Keyword Substitutes

This chapter describes which keywords specified by ISO C are substituted by Gnulib.

8.1 alignof and alignas

Gnulib module: alignasof The alignasof module arranges for alignas and alignof to be more like standard C. Portability problems fixed by Gnulib:

• Pre-C11 platforms lack alignas and alignof.

• On pre-C23 platforms, <stdalign.h> must be included before using alignas or alignof. See Section 9.44 [stdalign.h], page 69. Portability problems not fixed by Gnulib:

• On pre-C23 platforms, alignas and alignof are macros.

8.2 bool

Gnulib module: stdbool Portability problems fixed by Gnulib:

• The keywords bool, true, and false are not available: gcc 12 and other compilers predating C23. Portability problems not fixed by Gnulib:

• On pre-C23 platforms, the keyword substitutes are macros.

• On pre-C23 platforms, the keyword substitutes assume C99 or later.

8.3 nullptr

Gnulib module: nullptr The nullptr module arranges for nullptr to act like standard C and C++. The nullptr keyword yields a null pointer. It differs from the NULL macro, in that

NULL might be an integer whereas nullptr is of a special nullptr_t type with only one value, namely nullptr itself. Using nullptr can help some compilers emit more sensible warnings, can avoid the need to cast a null pointer passed to a function prototyped with an ellipsis, and removes the need to include <stddef.h> merely to define NULL.

Portability problems fixed by Gnulib:

• Some platforms lack nullptr: For C: GCC 12, Clang 15, and other pre-2023 C compilers. For C++: pre-2011 C++ compilers.

• Some platforms incorrectly warn when nullptr is a sentinel argument: GCC 13.2 and 14.0. Portability problems not fixed by Gnulib:

• On older platforms, nullptr is a macro instead of a keyword.

• On older platforms, nullptr does not have the type nullptr_t. In C, it has type void *; in C++ it has an integer type.

• On older platforms Gnulib cannot easily emulate nullptr_t, so null pointer type checking is more error prone. In C, _Generic expressions cannot reliably distinguish the type of nullptr from integer or void * types. C++ overloading has similar limitations.

8.4 static_assert

Gnulib module: assert-h The assert-h module arranges for both static_assert and <assert.h> to be like

standard C. See Section 9.3 [assert.h], page 55.

Portability problems fixed by Gnulib:

• Pre-C11 platforms lack static_assert.

• On pre-C23 platforms, <assert.h> must be included before using static_assert. Portability problems not fixed by Gnulib:

• On pre-C23 platforms, static_assert is a macro.

9 ISO C and POSIX Header File Substitutes

This chapter describes which header files specified by ISO C or POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.

The notation “Gnulib module: —” means that Gnulib does not provide a module providing a substitute for the header file. When the list “Portability problems not fixed by Gnulib” is empty, such a module is not needed: No portability problems are known. Otherwise, it indicates that such a module would be useful but is not available: No one so far found this header file important enough to contribute a substitute for it. If you need this particular header file, you may write to <bug-gnulib at gnu dot org>.

9.1 aio.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/aio.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin, mingw, MSVC 14, Haiku, Android 9.0.

• The type off64_t is not defined on some platforms: macOS 12.5, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, Minix 3.3.

9.2 arpa/inet.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/arpa_inet.h.html

Gnulib module: arpa inet Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

9.3 assert.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/assert.h.html

Gnulib module: assert-h See also the Gnulib modules assert and verify. Portability problems fixed by Gnulib:

• On older C platforms <assert.h> must be included before using static_assert. For example, GCC versions before 13 do not support the static_assert keyword that was standardized by C23.

• On older platforms static_assert does not allow the second string-literal argument to be omitted. For example, GCC versions before 9.1 do not support the single-argument static_assert that was standardized by C23 and C++17.

• Even-older platforms do not support static_assert at all. For example, GCC versions before 4.6 and G++ versions before 4.3 do not support the two-argument form, which was standardized by C11 and C++11.

• Older C platforms might not support the obsolescent _Static_assert keyword or macro. This portability problem should not matter with code using this module, as such code should use static_assert instead.

Portability problems not fixed by Gnulib:

• A static_assert can also be used within a struct or union specifier, in place of an ordinary declaration of a member of the struct or union. The Gnulib substitute can be used only as an ordinary declaration in code intended to be portable to C99 or earlier.

• In C23 and C++11 and later, static_assert is a keyword. In C11 and C17 it is a macro. Any Gnulib substitute is also a macro.

• In C99 and later, assert can be applied to any scalar expression. In C89, the argument to assert is of type int.

9.4 complex.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/complex.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.7, mingw, MSVC 9.

9.5 cpio.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/cpio.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, Cygwin 2.4.x, mingw, MSVC 14.

9.6 ctype.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/ctype.h.html

Gnulib module: ctype Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

9.7 dirent.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/dirent.h.html

Gnulib module: dirent Portability problems fixed by Gnulib:

• This header file is missing on some platforms: MSVC 14.

• The type ino_t is missing on some platforms: glibc 2.23 and others. Portability problems not fixed by Gnulib:

• Although many systems define a struct dirent member named d_type and directory entry type macros like DT_DIR and DT_LNK, some do not: Minix 3.1.8, AIX 7.2, HP-UX 11, Solaris 11.4, mingw.

• On systems with d_type, not every filesystem supports d_type, and those lacking support will set it to DT_UNKNOWN.

• Some systems define a struct dirent member named d_namlen containing the string length of d_name, but others do not: glibc 2.23 on Linux, Minix 3.1.8, Solaris 11.4, Cygwin. All of these, except Cygwin, have a member d_reclen instead, that has a different semantics.

• Some systems define a struct dirent member named d_off containing a magic cookie suitable as an argument to seekdir, but others do not: glibc 2.23 on Hurd, macOS 11.1, FreeBSD 11.0, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, Cygwin, mingw.

• Some systems define a struct dirent member named d_reclen containing the number of bytes in the directory entry record, but others do not. This member has limited utility, as it is an implementation detail.

9.8 dlfcn.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/dlfcn.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

9.9 errno.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html

Gnulib module: errno Portability problems fixed by Gnulib:

• The macro EOVERFLOW is not defined on some platforms: OpenBSD 4.0, mingw, MSVC 9.

• The macro ENOLINK is not defined on some platforms: OpenBSD 6.7, mingw, MSVC • The macro EMULTIHOP is not defined on some platforms: OpenBSD 6.7, mingw, MSVC

14.

• The macro ECANCELED is not defined on some platforms: OpenBSD 4.0, Cygwin, mingw, MSVC 9.

• The macros ENOMSG, EIDRM, EPROTO, EBADMSG, ENOTSUP are not defined on some platforms: OpenBSD 4.0, mingw, MSVC 9.

• The macro ESTALE is not defined on some platforms: mingw, MSVC 14.

• The macro EDQUOT is not defined on some platforms: NonStop Kernel, mingw, MSVC 14.

• The macros ENETRESET, ECONNABORTED are not defined on some platforms: Minix 3.1.8, mingw, MSVC 9.

• The macros EWOULDBLOCK, ETXTBSY, ELOOP, ENOTSOCK, EDESTADDRREQ, EMSGSIZE,
EPROTOTYPE, ENOPROTOOPT, EPROTONOSUPPORT, EOPNOTSUPP, EAFNOSUPPORT,
EADDRINUSE, EADDRNOTAVAIL, ENETDOWN, ENETUNREACH, ECONNRESET, ENOBUFS,
EISCONN, ENOTCONN, ETIMEDOUT, ECONNREFUSED, EHOSTUNREACH, EALREADY,

EINPROGRESS are not defined on some platforms: mingw, MSVC 9.

• The macros EOWNERDEAD, ENOTRECOVERABLE are not defined on some platforms: glibc/Linux 2.3.6, glibc/Hurd 2.15, glibc/kFreeBSD 2.15, Mac OS X 10.5, FreeBSD 6.0, NetBSD 9.3, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin, mingw without pthreads-win32, MSVC 9.

• The macro EILSEQ is not defined on some platforms: LynxOS 178 2.2.2.

Portability problems not fixed by Gnulib:

9.10 fcntl.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html

Gnulib module: fcntl-h Portability problems fixed by Gnulib:

• The type pid_t is not defined on some platforms: MSVC 14.

• The type mode_t is not defined on some platforms: MSVC 14.

• The type off64_t is not defined on some platforms: macOS 12.5, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.

• ‘O_CLOEXEC’ is not defined on some platforms: Mac OS X 10.6, FreeBSD 8.4, NetBSD 5.1, OpenBSD 4.9, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 10, Cygwin 1.7.1, mingw, MSVC 14.

• ‘O_DIRECTORY’, ‘O_DSYNC’, ‘O_NOCTTY’, ‘O_NOFOLLOW’, ‘O_RSYNC’, ‘O_SYNC’, and

‘O_TTY_INIT’ are not defined on some platforms. When not otherwise defined, Gnulib defines these macros to 0, which is generally safe.

• ‘O_NONBLOCK’ is not defined on some platforms. If the ‘nonblocking’ module is in use, gnulib guarantees a working non-zero value; otherwise, the gnulib replacement is 0.

• ‘O_EXEC’ and ‘O_SEARCH’ are not defined on some platforms. Gnulib defines these macros to ‘O_RDONLY’, which is typically 0. The ‘O_PATH’ macro of GNU/Linux is not a suitable substitute, as fchmod fails with ‘errno==EBADF’ when invoked on a file descriptor that was opened with ‘O_PATH’.

• ‘O_ACCMODE’ is not defined on some platforms: MSVC 14.

• The ‘O_ACCMODE’ mask mistakenly omits ‘O_SEARCH’ and ‘O_EXEC’ on some platforms: Cygwin.

• ‘O_BINARY’, ‘O_TEXT’ (not specified by POSIX, but essential for portability to native Windows platforms) are defined on some platforms but not on others. Gnulib defines these macros to 0 on GNU and other platforms that do not distinguish between text and binary I/O.

• ‘O_CLOEXEC’, ‘O_NOFOLLOW’, and ‘O_TTY_INIT’ are defined to values that are too large for an int on some platforms: AIX 7.1 with XL C 12.1.

• ‘O_DIRECT’, ‘O_IGNORE_CTTY’, ‘O_NDELAY’, ‘O_NOATIME’, ‘O_NOLINK’, ‘O_NOLINKS’, and

‘O_NOTRANS’ (not specified by POSIX) are defined on some platforms but not on others. When not otherwise defined, Gnulib defines these macros to 0, which is generally safe.

• ‘FD_CLOEXEC’, ‘F_DUPFD’, and ‘F_GETFD’ are not defined on some platforms: mingw, MSVC 14.

• ‘F_DUPFD_CLOEXEC’ is not defined on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, Solaris 11 2010-11, Cygwin 1.7.1, mingw, MSVC 14.

• ‘AT_FDCWD’, ‘AT_EACCESS’, ‘AT_SYMLINK_NOFOLLOW’, ‘AT_SYMLINK_FOLLOW’, and

‘AT_REMOVEDIR’ are not defined on many platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14.

• ‘AT_FDCWD’ is defined with a value too large for an int on some platforms: Solaris 11.3.

Portability problems not fixed by Gnulib:

• ‘O_PATH’ is not defined on some platforms: glibc 2.13, macOS 13, FreeBSD 13.0, NetBSD 9.2, OpenBSD 7.1, Minix 3.3.0, AIX 7.3, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

• ‘F_SETFD’, ‘F_GETFL’, ‘F_SETFL’, ‘F_GETLK’, ‘F_SETLK’, ‘F_SETLKW’, ‘F_GETOWN’, and

‘F_SETOWN’ are not defined on some platforms: mingw, MSVC 14.

• ‘POSIX_FADV_DONTNEED’,  ‘POSIX_FADV_NOREUSE’,  ‘POSIX_FADV_NORMAL’,
‘POSIX_FADV_RANDOM’, ‘POSIX_FADV_SEQUENTIAL’, and ‘POSIX_FADV_WILLNEED’ are

not defined on some platforms.

9.11 fenv.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fenv.h.html

Gnulib module: fenv

Portability problems fixed by Gnulib:

• This header file is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, Cygwin 1.7.7, MSVC 9.

Portability problems not fixed by Gnulib:

• On MSVC, the values of the rounding direction macros have changed: In MSVC 14, FE_ UPWARD is 0x100 and FE_DOWNWARD is 0x200, whereas in MSVC 14.30, it’s the opposite.

9.12 float.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/float.h.html

Gnulib module: float Portability problems fixed by Gnulib:

• The conversion from int to long double in incorrect on some platforms: glibc 2.7 on Linux/SPARC64.

• The values of LDBL_* macros are incorrect on some platforms: On OpenBSD 4.0 and MirBSD 10, they are the same as the values of the DBL_* macros, although ‘long double’ is a larger type than ‘double’. On FreeBSD/x86 6.4, they represent the incorrect 53-bit precision assumptions in the compiler, not the real 64-bit precision at runtime. On Linux/PowerPC with GCC 4.4, and on AIX 7.1 with GCC 4.2, they don’t reflect the “double double” representation of long double correctly.

Portability problems not fixed by Gnulib:

• The macro FLT_ROUNDS is a constant expression and does not represent the current rounding mode on some platforms: glibc 2.11, HP-UX 11, mingw.

9.13 fmtmsg.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fmtmsg.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin, mingw, MSVC 14, Android 9.0.

9.14 fnmatch.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fnmatch.h.html

Gnulib module: fnmatch-h, fnmatch-gnu Portability problems fixed by Gnulib module fnmatch-h:

• This header file is missing on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module fnmatch-gnu, together with module

fnmatch-h:

• The macros FNM_LEADING_DIR and FNM_CASEFOLD are not defined on some platforms: AIX 7.2, HP-UX 11.31, Solaris 10.

• The macro FNM_EXTMATCH is not defined on all non-glibc platforms: musl libc, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.2, Minix 3.3, AIX 7.2, HP-UX 11.31, Solaris 11.4, Cygwin 3.4.6, Android 13.

• The macro FNM_FILE_NAME is not defined on some platforms: NetBSD 10.0, AIX 7.2, HP-UX 11.31, Solaris 10. Portability problems not fixed by Gnulib:

9.15 ftw.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/ftw.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14.

9.16 glob.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/glob.h.html

Gnulib module: glob-h Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

9.17 grp.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/grp.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.18 iconv.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/iconv.h.html

Gnulib module: iconv Portability problems fixed by Gnulib:

• The <iconv.h> from GNU libiconv is not found if installed in $PREFIX/include. Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, when GNU libiconv is not installed.

9.19 inttypes.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html

Gnulib module: inttypes

Portability problems fixed by Gnulib:

• This header file is missing on some platforms: MSVC 9.

• This header file is very incomplete on some platforms.

• The declarations of imaxabs and imaxdiv are missing on some platforms: NetBSD 3.0, OpenBSD 6.7, AIX 5.1, HP-UX 11.

• The declarations of strtoimax and strtoumax are missing on some platforms: OpenBSD 6.7, AIX 5.1 (missing only strtoumax).

• On some hosts that predate C++11, when using C++ one must define __STDC_FORMAT_ MACROS to make visible the declarations of format macros such as PRIdMAX.

Portability problems not fixed by Gnulib:

9.20 iso646.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/iso646.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, HP-UX 11.00, Cygwin, mingw.

9.21 langinfo.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html

Gnulib module: langinfo

Portability problems fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• The constant CODESET is not defined on some platforms: OpenBSD 6.7.

• The constants ALTMON_1 to ALTMON_12 are not defined on some platforms: glibc 2.26, musl libc, macOS 11.1, NetBSD 8.0, OpenBSD 6.5, AIX 7.2, HP-UX 11.31, Solaris 11.4, Haiku, Cygwin 2.9.

• The constants ERA, ERA_D_FMT, ERA_D_T_FMT, ERA_T_FMT, ALT_DIGITS are not defined

on some platforms: OpenBSD 6.7.

9.22 libgen.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/libgen.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

The Gnulib module dirname provides similar API, with functions base_name and dir_ name that also work with Windows file names.

9.23 limits.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html

Gnulib module: limits-h or gethostname

Portability problems fixed by Gnulib module limits-h:

• The macros LLONG_MIN, LLONG_MAX, ULLONG_MAX are not defined on some platforms: older glibc systems (e.g. Fedora 1), AIX 5.1, HP-UX 11, OpenVMS.

• The macro MB_LEN_MAX is not defined on some platforms: pcc 1.2.0.DEVEL 20220331.

• The macros WORD_BIT, LONG_BIT are not defined on some platforms: glibc 2.11 without -D_GNU_SOURCE, Cygwin, mingw, MSVC 14.

• Macros like CHAR_WIDTH are not defined on some platforms: glibc 2.24, NetBSD 10.0, many others.

• The macros BOOL_MAX and BOOL_WIDTH are not defined on some platforms: glibc 2.32, many others.

• The macro BOOL_MAX is not defined with some compilers: clang 15.0.6.

• The macro SSIZE_MAX is not defined on some platforms: MSVC 14.

Portability problems fixed by Gnulib module gethostname:

• The HOST_NAME_MAX macro is not defined on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The macro SSIZE_MAX has the wrong type, albeit with the correct value: 32-bit glibc 2.24 (on some architectures), Cygwin 2.5.2.

For PATH_MAX, Gnulib provides a module pathmax with a header file "pathmax.h". It defines PATH_MAX to a constant on platforms with a file name length limit.

9.24 locale.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/locale.h.html

Gnulib module: locale Portability problems fixed by Gnulib:

• The definition of ‘LC_MESSAGES’ is missing on some platforms: mingw, MSVC 14.

• The locale_t type is not defined on some platforms: glibc 2.11, macOS 11.1.

• The struct lconv type does not contain any members on some platforms: Android up to 2014.

• The struct lconv type does not contain the members int_p_cs_precedes, int_

  p_sign_posn, int_p_sep_by_space, int_n_cs_precedes, int_n_sign_posn, int_n_

sep_by_space on some platforms: glibc, OpenBSD 4.9, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0 Portability problems not fixed by Gnulib:

9.25 math.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html

Gnulib module: math Portability problems fixed by Gnulib:

• The conversion from int to long double in incorrect on some platforms: glibc 2.7 on Linux/SPARC64.

• The macro NAN is not defined on some platforms: OpenBSD 4.0, AIX 5.1.

• The macro NAN is not exposed outside of C99 compilation on some platforms: glibc.

• The macros NAN and HUGE_VAL expand to a function address rather than a floating point constant on some platforms: Solaris 10.

• The macros HUGE_VALF and HUGE_VALL are not defined on some platforms: glibc/HPPA, glibc/SPARC, AIX 5.1, Solaris 9, MSVC 9.

• The macros FP_ILOGB0 and FP_ILOGBNAN are not defined on some platforms: NetBSD 5.1, AIX 5.1, Solaris 9, MSVC 9.

• The macros FP_ILOGB0 and FP_ILOGBNAN have wrong values on some platforms: Haiku 2022.

• The macros NAN, HUGE_VALL, and INFINITY are not defined on some platforms: Open-VMS. Portability problems not fixed by Gnulib:

• NAN is not a compile time constant with some compilers: OpenVMS.

• The macro or variable math_errhandling is not defined on some platforms: glibc 2.11, OpenBSD 4.9, NetBSD 5.1, UP-UX 11, Cygwin 1.7.9, mingw, MSVC 9.

9.26 monetary.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/monetary.h.html

Gnulib module: monetary Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.7.1, mingw, MSVC 14, Android 9.0.

• This header file has a syntax error in C++ mode on some platforms: NetBSD 8.0.

9.27 mqueue.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

9.28 ndbm.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/ndbm.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14, Android 9.0.

9.29 net/if.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/net_if.h.html

Gnulib module: net if Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file is not self-contained on some platforms (needing <sys/socket.h> to be included first): Mac OS X 10.5, FreeBSD 8.2, OpenBSD 5.2. Portability problems not fixed by Gnulib:

9.30 netdb.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html

Gnulib module: netdb Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file is incomplete on some platforms: Cygwin 1.5.x, Haiku.

• This header file does not define AI_ALL, AI_V4MAPPED on some platforms: NetBSD 10.0.

• This header file does not define AI_ADDRCONFIG on some platforms: NetBSD 5.0. Portability problems not fixed by Gnulib:

9.31 netinet/in.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html

Gnulib module: netinet in Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file is not self-contained on some platforms (it requires <sys/types.h> to be included first): OpenBSD 4.6. Portability problems not fixed by Gnulib:

9.32 netinet/tcp.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.33 nl_types.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/nl_types.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, Cygwin, mingw, MSVC 14, Android 9.0.

9.34 poll.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html

Gnulib module: poll-h Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

9.35 pthread.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html

Gnulib module: pthread-h Portability problems fixed by Gnulib:

• This header file is missing on some platforms. Minix 3.1.8, mingw 2.x, MSVC 14. But the provided replacement covers only the essential POSIX threads API. Furthermore it is just a dummy on some of these platforms: Minix 3.1.8.

• This header pollutes the namespace with some broken macro implementations for various functions such as strtok_r and gmtime_r: mingw 3.0. Portability problems not fixed by Gnulib:

9.36 pwd.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pwd.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.37 regex.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/regex.h.html

Gnulib module: regex Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• This header file is not self-contained on some platforms: it requires <sys/types.h> to be included first.

9.38 sched.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sched.h.html

Gnulib module: sched Portability problems fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This header file does not define the type pid_t on some platforms: glibc 2.11, macOS 11.1.

• struct sched_param is not defined on some platforms: Haiku.

• SCHED_FIFO, SCHED_RR, SCHED_OTHER are not defined on some platforms: Haiku. Portability problems not fixed by Gnulib:

9.39 search.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/search.h.html

Gnulib module: search Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8.

9.40 semaphore.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/semaphore.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

9.41 setjmp.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/setjmp.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

9.42 signal.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html

Gnulib module: signal-h Portability problems fixed by Gnulib:

• volatile sig_atomic_t is rejected by older compilers on some platforms: AIX.

• sigset_t is missing on some platforms: MSVC 14.

• sigset_t is only declared in <sys/types.h> on some platforms: mingw.

• struct sigaction and siginfo_t are missing on some platforms: mingw, MSVC 14.

• The type pid_t is not defined on some platforms: MSVC 14.

• The signal SIGPIPE is not defined on some platforms: mingw, MSVC 14.

• The macros SA_RESETHAND and SA_RESTART are not defined on some platforms: Non-Stop.

• The type sighandler_t (a GNU extension) is not defined on most non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• Many signals are not defined on some platforms: mingw, MSVC 14.

• The macro SIGBUS is set to the same value as SIGSEGV, rather than being a distinct signal, on some platforms: Haiku.

9.43 spawn.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/spawn.h.html

Gnulib module: spawn Portability problems fixed by Gnulib:

• This header file is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.25, mingw, MSVC 14. Portability problems not fixed by Gnulib:

9.44 stdalign.h

POSIX specification: Not in POSIX yet, but we expect it will be, at least temporarily until it becomes obsolete due to its phasing out starting in C23. ISO C23 (latest free draft http://www.open-std.

org/jtc1/sc22/wg14/www/docs/n3096.pdf) sections 6.5.3.4, 6.7.5, 7.15. C++11 (latest
free draft http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.

pdf) section 18.10.

Gnulib module: alignasof Portability problems fixed by Gnulib:

• On older C platforms <stdalign.h> must be included before using alignas or alignof. For example, GCC versions before 13 do not support these keywords, which were standardized by C23. On C23 and later platforms, <stdalign.h> has no effect and need not be included. (Gnulib-using code should not include <stdalign.h> without also employing Gnulib’s now-deprecated stdalign module.)

• This header file is missing on many platforms: FreeBSD 6.4, NetBSD 7.1, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.3, mingw, MSVC 14, Android 9.0.

• Clang 3.0’s <stdalign.h> does not define alignof.

• The alignof macro returns too large values for the types double and long long in GCC 4.7.0.

• Older C platforms might not support the obsolescent _Alignas and _Alignof keywords or macros. This portability problem should not matter with code using this module, as such code should use alignas and alignof instead.

• In C11 and C17, <stdalign.h> defines the macros __alignas_is_defined and __

alignof_is_defined to 1. In C23, these macros are not defined. This portability problem should not matter with code using Gnulib’s alignasof module, as such code should use alignas and alignof without checking these two macros. (Gnulib’s nowdeprecated stdalign module defines these two macros.)

• Clang 17 does not support an alignas attribute in the specifier-qualifier position of a member declaration.

Portability problems not fixed by Gnulib:

• In C11 and later, the operand of alignof must be a parenthesized type. Recent versions of GCC support an extension in which the operand can also be a unary expression, as with sizeof. The Gnulib substitute does not support this extension.

• On most pre-C11 platforms, the operand of alignof cannot be a structure type containing a flexible array member.

• The alignas keyword or macro is not always supported. Supported compilers include any compiler supporting C11 or later, which includes GCC, IBM C, Sun C 5.9 and later, and MSVC 7.0 and later.

• Some compilers do not support alignment via alignas of auto variables (i.e., variables on the stack). They diagnose and ignore the alignment: Sun C 5.11.

• Some linkers do not support operands of alignas that are greater than 8: mingw.

• Some compilers require the operand of alignas to be a single integer constant, not an expression: MSVC 7.0 through at least 10.0.

• The Sun C 5.13 (2014) compiler sometimes mishandles the alignment of multiple external variables that are declared close together with alignas. The bug is fixed in Sun C 5.15, also known as Oracle Developer Studio 12.6 (2017).

• You cannot assume that alignas and alignof are reserved words; they might be macros.

9.45 stdarg.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdarg.h.html

Gnulib module: stdarg Portability problems fixed by Gnulib:

• Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode for the builtin va_copy to work.

Portability problems not fixed by Gnulib:

9.46 stdatomic.h

POSIX specification: Not in POSIX yet, but we expect it will be. ISO C11 (latest free draft http://www.

open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) section 7.17.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on many platforms: glibc with GCC 4.8.x or clang 2.8, FreeBSD 6.4, NetBSD 7.0, OpenBSD 6.5, OpenBSD 6.9 with gcc, Minix 3.3.0, AIX 7.2 with xlc or xlclang, HP-UX 11.31, Solaris 11.3 with Oracle Studio 12.4 (Sun C 5.13), Cygwin 1.5.19, mingw, MSVC 14.

• Linus Torvalds believes that “no compiler writer will get the C/C++ memory model

 right”; see https://lkml.org/lkml/2018/6/7/761.
9.47 stdbit.h

POSIX : Not in POSIX yet, but we expect it will be. ISO C23 (latest free draft http://www.

open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf) section 7.18.

Gnulib module: stdbit Portability problems fixed by Gnulib:

• This header file is missing on many non-C23 platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

• On older non-C23 platforms lacking typeof or equivalent, a call to stdc_bit_floor and stdc_bit_ceil may yield a type that is wider than its argument. Although C23 seems to allow this, it differs from GNU behavior.

• On non-C23 platforms, type-generic functions apply portably only to the standard unsigned integer types specified by C17 or earlier.

9.48 stdbool.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdbool.h.html

Gnulib module: stdbool-c99 The stdbool-c99 module is present only for programs that formerly used the old

stdbool module for C99 compatibility, and that for some reason cannot use the current stdbool module for C23 compatibility.

Portability problems fixed by Gnulib:

• This header file is missing on some platforms: AIX 5.1, HP-UX 11.

• This header file is not usable in C++ mode with the vendor compiler on Solaris 10.

• Some compilers have bugs relating to ‘bool’.

• This header file defines true incorrectly on some platforms: OpenBSD 4.7 with gcc 2.95. Portability problems not fixed by Gnulib:

• ‘_Bool’ cannot be used before <stdbool.h> is included, or if the program is intended to be compiled by a C++ compiler. (With the advent of C23, ‘_Bool’ is obsolescent anyway.)

• You cannot assume that _Bool is a typedef; it might be a macro. For example, C23 allows _Bool to be a macro.

• Bit-fields of type ‘bool’ are not supported. Portable code should use ‘unsigned int

  foo : 1;’ rather than ‘bool foo : 1;’.

• Casts and automatic conversions to ‘bool’ don’t test against the zero value or the null pointer, as they should. Such casts should only be used if the value is known to be equal to 0 or 1.

• You cannot assume that casting a floating point literal to ‘bool’ will result in a constant expression.

9.49 stdckdint.h

POSIX specification: Not in POSIX yet, but we expect it will be. ISO draft C23 (https://www.open-std.org/

jtc1/sc22/wg14/www/docs/n3096.pdf) section 7.20.

Gnulib module: stdckdint Portability problems fixed by Gnulib:

• This header file is missing on many platforms: glibc 2.29, macOS 11.1, FreeBSD 13.2, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

• In draft C23, arguments of stdckdint.h macros can have side effects.

9.50 stddef.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html

Gnulib module: stddef Portability problems fixed by Gnulib:

• Some platforms fail to provide unreachable, which was added in C23: GCC 13, clang 15, AIX with xlc 12.1, Solaris with Sun C 5.15, and others.

• Some platforms fail to provide max_align_t, which was added in C11: NetBSD 8.0, Solaris 11.0, and others.

• max_align_t does not have the expected alignment on some platforms: NetBSD 8.0/x86, AIX 7.2 with xlc in 64-bit mode.

• Some old platforms fail to provide wchar_t.

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0

• Some platforms provide a NULL macro whose value does not have the size of a pointer: AIX 7.2 with xlc in 64-bit mode.

• When this header file is provided by TinyCC 0.9.27 on glibc or macOS systems, it does not fulfil the expectations of other system header files.

Portability problems not fixed by Gnulib:

• Some platforms fail to provide nullptr_t, which Gnulib cannot usefully emulate: GCC 12, Clang 15, and other pre-2023 C compilers.

• Some platforms define nullptr_t even when <stddef.h> is not included: GCC 14.0.1 20240411 (Red Hat 14.0.1-0).

• Some platforms provide an offsetof macro that cannot be used in arbitrary expressions: Solaris 11.4 This problem can be worked around by parenthesizing the offsetof expression in the unlikely case you use it with sizeof or ‘[]’.

9.51 stdint.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html

Gnulib module: stdint Portability problems fixed by Gnulib:

• This header file is missing on some platforms: OpenBSD 3.8, AIX 5.1, HP-UX 11.11, MSVC 9.

• This header file is very incomplete on some platforms.

• The values of SIG_ATOMIC_MIN and SIG_ATOMIC_MAX are incorrect on some platforms: FreeBSD 6.2/ia64, FreeBSD 13.0/arm64.

• The value of WINT_MAX is incorrect on some platforms: mingw.

• The values of INT8_MAX, UINT8_MAX etc. are not usable in preprocessor expressions on some platforms: HP-UX 11.23.

• The values of INTPTR_MAX and UINTPTR_MAX, although correctly defined in <stdint.h>, are replaced by empty values when <limits.h> or <inttypes.h> gets included later on some platforms: Solaris 9 with GCC 4.5 or newer.

• The macros WCHAR_MIN and WCHAR_MAX are not defined in <stdint.h> (only in <wchar.h>) on some platforms: Dragonfly.

• On some hosts that predate C++11, when using C++ one must define __STDC_CONSTANT_ MACROS to make visible the definitions of constant macros such as INTMAX_C, and one must define __STDC_LIMIT_MACROS to make visible the definitions of limit macros such

as INTMAX_MAX.

• The macro SIZE_MAX has the wrong type, albeit with the correct value: 32-bit glibc 2.24 (on s390 architecture), Mac OS X 10.7.

• Macros like INTMAX_WIDTH are not defined on some platforms: glibc 2.24, NetBSD 10.0, many others.

Portability problems not fixed by Gnulib:

• {uint,int}_fast{8,16,32,64}_t may not correspond to the fastest types available on the system. Other <stdint.h> substitutes may define these types differently, so public header files should avoid these types.

• Macros are used instead of typedefs.

• Some C preprocessors mishandle constants that do not fit in long int. For example, as of 2007, Sun C mishandled #if LLONG_MIN < 0 on a platform with 32-bit long int and 64-bit long long int; this bug was fixed on or before Oracle Developer Studio 12.6 (Sun C 5.15 SunOS sparc 2017/05/30). Some older preprocessors mishandle constants ending in LL. To work around these problems, compute the value of expressions like

LONG_MAX < LLONG_MAX at configure-time rather than at #if-time.

The stdint module uses #include_next. If you wish to install the generated stdint.h file under another name, typically in order to be able to use some of the types defined by stdint.h in your public header file, you could use the following Makefile.am-snippet:

 BUILT_SOURCES += idn-int.h
 DISTCLEANFILES += idn-int.h
 nodist_include_HEADERS += idn-int.h
 idn-int.h:
 if test -n "$(STDINT_H)"; then \
 sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \
 else \
 echo '#include <stdint.h>' > idn-int.h; \
 fi
9.52 stdio.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdio.h.html

Gnulib module: stdio Portability problems fixed by Gnulib:

• The type off_t is not defined on some platforms: glibc 2.8, eglibc 2.11.2 and others.

• The type ssize_t is not defined on some platforms: glibc 2.8, Mac OS X 10.5, Solaris 10, MSVC 14, and others.

• The type va_list is not defined on some platforms: glibc 2.8, OpenBSD 4.0, Solaris 11.4, and others.

• The type off64_t is not defined on some platforms: macOS 12.5, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0

Portability problems not fixed by Gnulib:

9.53 stdlib.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdlib.h.html

Gnulib module: stdlib, system-posix

Portability problems fixed by the Gnulib module stdlib:

• The macros EXIT_SUCCESS and EXIT_FAILURE are not defined on some platforms.

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0

• The value of MB_CUR_MAX is too small (3 instead of 4) in UTF-8 locales on some platforms: Solaris 10.

Portability problems fixed by the Gnulib module system-posix:

• The macros WIFSIGNALED, WIFEXITED, WIFSTOPPED, WTERMSIG, WEXITSTATUS, WNOHANG,

WUNTRACED, WSTOPSIG are not defined in this header file (only in <sys/wait.h>) on some platforms: MirBSD 10.

Portability problems not fixed by Gnulib:

• The definition of the type once_flag, of the macro ONCE_FLAG_INIT, and the declaration of the function call_once, that are required by ISO C 23, are not provided. To get them, import Gnulib module call_once and include <threads.h> rather than

  <stdlib.h>.

• System status macros such as WEXITSTATUS require an lvalue argument on some platforms. macOS 11.1.

9.54 stdnoreturn.h

POSIX specification: Not in POSIX yet, but we expect it will be. ISO C11 (latest free draft http://www.

open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) sections 7.23.

Gnulib module: stdnoreturn

Portability problems fixed by Gnulib:

• This header file is missing on many platforms: FreeBSD 6.4, NetBSD 7.1, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9.0, mingw, MSVC 14, Android 9.0.

• This file conflicts with some system header files, such as <stdlib.h> and <process.h>, on some platforms: MSVC/clang.

Portability problems not fixed by Gnulib:

• <stdnoreturn.h> and the noreturn macro are obsolescent in C23.

• <stdnoreturn.h> cannot be #included in C++ mode on some platforms: FreeBSD 13.1.

• <stdnoreturn.h> should be #included before ‘_Noreturn’ is used.

• You cannot assume that _Noreturn is a reserved word; it might be a macro.

• When the macro lint is defined, standard headers define _Noreturn (and therefore noreturn) to be a macro that expands to the empty token sequence on some platforms: Cygwin 2.5.1, FreeBSD 10.3.

• On Cygwin 1.7.30 and MSVC 14, noreturn expands to the empty token sequence, to avoid problems with standard headers that use noreturn in combination with _ _attribute__or __declspec. Although the resulting code operates correctly, the compiler is not informed whether noreturn functions do not return, so it may generate incorrect warnings at compile-time, or code that is slightly less optimized. This problem does not occur with _Noreturn.

• Circa 2012 bleeding-edge GCC with -Werror=old-style-declaration requires _Noreturn or noreturn before the returned type in a declaration, and therefore rejects valid but unusually-worded declarations such as void _Noreturn foo (void);.

9.55 string.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/string.h.html

Gnulib module: string Portability problems fixed by Gnulib:

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0

Portability problems not fixed by Gnulib:

9.56 strings.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/strings.h.html

Gnulib module: strings Portability problems fixed by Gnulib:

• This header file is not self-contained on some platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: MSVC 14.

• This header file defines symbols, such as ‘index’, often used for variables, making debugging harder.

9.57 stropts.h

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stropts.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin, mingw, MSVC 14, Android 9.0.

• This header is removed in POSIX.1-2024.

9.58 sys/ipc.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_ipc.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.59 sys/mman.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_mman.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.60 sys/msg.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_msg.h.html

Gnulib module: sys msg Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

9.61 sys/resource.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_resource.h.
html

Gnulib module: sys resource Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• On some platforms, this header file requires that <sys/types.h> and <sys/time.h> already be included: FreeBSD 5.0.

• On some platforms, this header file does not define the RUSAGE_SELF and RUSAGE_ CHILDREN constants: OpenVMS. Portability problems not fixed by Gnulib:

• On some platforms, this header does not define some or all of the symbolic constants required by POSIX. For example, OpenVMS and Android do not define RLIM_SAVED_

 CUR or RLIM_SAVED_MAX.

9.62 sys/select.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_select.h.html

Gnulib module: sys select Portability problems fixed by Gnulib:

• This header file is missing on some platforms: HP-UX 11.11, NonStop Kernel, mingw, MSVC 14.

• This header file is not self-contained on some platforms: it requires <sys/types.h> to be included first.

• This header file is not self-contained—it requires <string.h> before FD_ZERO can be used—on some platforms: AIX 7.1, Solaris 11.4. Portability problems not fixed by Gnulib:

9.63 sys/sem.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_sem.h.html

Gnulib module: sys sem Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.64 sys/shm.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_shm.h.html

Gnulib module: sys shm Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.65 sys/socket.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html

Gnulib module: sys socket Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file is not self-contained on some platforms: it requires <sys/types.h> to be included first.

• This header file does not define the type struct iovec on some platforms: OpenBSD 4.4.

• This header file is lacking the SHUT_RD, SHUT_WR, SHUT_RDWR macros on some platforms, despite having the shutdown functions: emx+gcc.

• The struct sockaddr_storage type does not have a member ss_family on some platforms: AIX 7.1.

• The CMSG_SPACE and CMSG_LEN macros are not provided on some platforms: OpenVMS.

• This header file does not define the SO_REUSEPORT macro on some platforms: Minix 3.1.8, Solaris 10, Cygwin, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• This header file does not declare the msg_control and msg_controllen members of struct msghdr on some platforms. This can be detected by the absence of the CMSG_ FIRSTHDR macro: gnulib replacement header, old BSD

9.66 sys/stat.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html

Gnulib module: sys stat Portability problems fixed by Gnulib module sys_stat:

• The type mode_t is not defined on some platforms: MSVC 14.

• Some macros, such as S_IFMT or S_IFIFO, are missing on some platforms.

• The macros S_ISBLK, S_ISCHR, S_ISDIR, S_ISFIFO, S_ISLNK, S_ISREG, S_ISSOCK are

broken on some platforms.

• Some platforms define macros, such as S_ISDOOR, that are not defined on other platforms.

• The functions lstat and mkdir are not declared on some platforms: mingw, MSVC 14.

• The macros UTIME_NOW and UTIME_OMIT are missing on some platforms.

• On some platforms, struct stat does not include st_atim, st_mtim, or st_ctim members. Use the gnulib module ‘stat-time’ for accessors to portably get at subsecond resolution.

Portability problems fixed by Gnulib module sys_stat, together with module windows-

stat-inodes:

• On Windows platforms (excluding Cygwin), st_ino is always 0.

On platforms where off_t is a 32-bit type, struct stat cannot represent the size of files or block devices 2 GiB or lager and may not work correctly on directories 2 GiB or larger. Also, on platforms where ino_t is a 32-bit type, struct stat cannot represent larger inode numbers. See Section 14.2 [Large File Support], page 770, for how to address these problems.

See Section 14.5 [Avoiding the year 2038 problem], page 771, for portability issues with

the time_t components of struct stat.

Portability problems not fixed by Gnulib:

• The macro S_IFBLK is missing on some platforms: MSVC 14.

• On OpenVMS, st_ino is an array of three ino_t values, not a single value. b are known to represent the same file.

• On some platforms, two different files may have the same st_dev and st_ino values,

even when st_ino is nonzero:

• GNU/Linux NFS servers that export all local file systems as a single NFS file system, if a local st_dev exceeds 255, or if a local st_ino exceeds 16777215.

• Network Appliance NFS servers in snapshot directories; see Network Appliance bug #195.

• ClearCase MVFS; see bug id ATRia04618.

• On some file systems, st_size contains bogus information for symlinks; use the Gnulib module areadlink-with-size for a better way to get symlink contents.

To partially work around porting problems with Microsoft Windows and OpenVMS, you can use the Gnulib same-inode module to test whether two struct stat objects are known to represent the same file. For example, psame_inode (&a, &b) is true if the struct stat objects a and b are known to represent the same file.

Another partial workaround is to compare other file metadata such as st_mode and st_ mtime on platforms where st_dev and st_ino not uniquely identify a file. However, this does not work reliably on files whose metadata are being changed by other programs, or where the metadata happen to be equal.

9.67 sys/statvfs.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_statvfs.h.
html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: OpenBSD 3.8, mingw, MSVC 14.

9.68 sys/time.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_time.h.html

Gnulib module: sys time

Portability problems fixed by Gnulib:

• This header file is missing on some platforms: MSVC 14.

• ‘struct timeval’ is not defined on some platforms.

• ‘struct timeval’ is defined with a tv_sec type that is narrower than time_t on some native Windows platforms: mingw64 in 64-bit mode, mingw64 in 32-bit mode when __MINGW_USE_VC2005_COMPAT is defined, MSVC 14 in 64-bit mode, MSVC 14 in 32-bit mode when _USE_32BIT_TIME_T is not defined.

See Section 14.5 [Avoiding the year 2038 problem], page 771, for portability issues with

time_t and the time_t component of struct timeval.

Portability problems not fixed by Gnulib:

• ‘struct timeval’ is defined with a tv_sec type that is wider than time_t: OpenBSD 5.1 in 64-bit mode.

9.69 sys/timeb.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/timeb.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: OpenBSD 6.7, Android 9.0.

9.70 sys/times.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_times.h.html

Gnulib module: sys times Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

9.71 sys/types.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html

Gnulib module: sys types Portability problems fixed by Gnulib:

• The type pid_t is not defined on some platforms: MSVC 14.

• The type size_t is not defined in this file on some platforms: MSVC 14.

• The type ssize_t is not defined on some platforms: MSVC 14.

• The type mode_t is not defined on some platforms: MSVC 14.

• The type off64_t is not defined on some platforms: macOS 12.5, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.

• Some systems leak definitions of major, minor, and makedev through this header; however, when sys/sysmacros.h exists, that file should also be included to avoid deprecation warnings from the versions in this header: glibc 2.25. See Section 14.5 [Avoiding the year 2038 problem], page 771, for portability issues with

time_t.

Portability problems not fixed by Gnulib:

• On some platforms the types blksize_t and suseconds_t are signed integer types that are wider than long: glibc x32

This module, together with the module largefile, also defines the type off_t to a 64-bit integer type on some platforms: mingw, MSVC 14.

9.72 sys/uio.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_uio.h.html

Gnulib module: sys uio Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file is not self-contained (it requires <sys/types.h> to be included first) on some platforms: OpenBSD 4.4. Portability problems not fixed by Gnulib:

9.73 sys/un.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_un.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header requires <code>sys/socket.h</code> to be included first on some platforms: Cygwin 1.7.18.

9.74 sys/utsname.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_utsname.h.
html

Gnulib module: sys utsname Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file is not self-contained on some platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

9.75 sys/wait.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_wait.h.html

Gnulib module: sys wait Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• System status macros such as WEXITSTATUS require an lvalue argument on some platforms. macOS 11.1.

9.76 syslog.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/syslog.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

9.77 tar.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/tar.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

9.78 termios.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/termios.h.html

Gnulib module: termios Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header does not declare pid_t on all platforms: glibc on some architectures, FreeBSD 6.4, OpenBSD 4.9, Cygwin 1.7.11. Portability problems not fixed by Gnulib:

• The types struct termios, cc_t, speed_t, tcflag_t are not defined on some platforms: mingw, MSVC 14.

9.79 tgmath.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/tgmath.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Mac OS X 10.5, FreeBSD 5.2.1, NetBSD 10.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.9, mingw, MSVC 14, Android 9.0.

9.80 threads.h

Defines the multithreading facility of ISO C11. Gnulib module: threads-h Portability problems fixed by Gnulib:

• This header file is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.2.x, mingw, MSVC 14, Android 9.0.

• This header file defines thrd_start_t incorrectly on some platforms: AIX 7.2.

• This header file does not define TSS_DTOR_ITERATIONS on some platforms: AIX 7.2. Portability problems not fixed by Gnulib:

• There is no way to define a working thread_local macro on some platforms: • Mac OS X 10.5,

• OpenBSD 6.5,

• AIX 7.1 with gcc (but it works with ‘xlc -qthreaded -qtls’),

• HP-UX 11.31 with cc (but it works with gcc),

• Android 4.3.

9.81 time.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/time.h.html

Gnulib module: time-h Portability problems fixed by Gnulib:

• ‘struct timespec’ is not defined on some platforms.

• The macro TIME_UTC is not defined on many platforms: glibc 2.15, macOS 10.13, FreeBSD 11.0, NetBSD 7.1, OpenBSD 6.0, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0. Portability problems fixed by the Gnulib module year2038:

• On some platforms where time_t defaults to 32-bit but can be changed to 64-bit, functions like stat can fail with errno == EOVERFLOW when a 32-bit timestamp is out of range, such as with a file timestamp in the far future or past: glibc 2.34+ atop 32-bit x86 or ARM Linux. See Section 14.5 [Avoiding the year 2038 problem], page 771. Portability problems not fixed by Gnulib:

• On platforms where time_t is always 32-bit, functions like stat can fail with errno == EOVERFLOW when a timestamp is out of range, such as with a file timestamp in the far future or past; on other such platforms, the functions silently return the low-order 32 bits of the correct timestamp. These platforms will be obsolete when 32-bit time_t rolls around, which will occur in 2038 for the typical case when time_t is signed. See Section 14.5 [Avoiding the year 2038 problem], page 771.

• On some platforms the tv_nsec member of struct timespec is not of type long, but is of type long long instead: glibc x32

9.82 trace.h

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/trace.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

• This header is removed in POSIX.1-2024.

9.83 uchar.h

Defines the types char16_t, char32_t and declares the functions mbrtoc16, c16rtomb,

mbrtoc32, c32rtomb.

Gnulib module: uchar or uchar-c23

Portability problems fixed by either Gnulib module uchar or uchar-c23:

• This header file is missing on many non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin, mingw, MSVC 9.

• This file is not self-contained on some platforms: Haiku.

• This file produces compilation errors in C++ mode on some platforms: AIX 7.2 with xlclang++.

Portability problems fixed by Gnulib module uchar-c23:

• char32_t values may not be Unicode code points. This is the case in ISO C 11 compliant but not ISO C 23 compliant implementations.

Portability problems not fixed by Gnulib:

9.84 ucontext.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/009695399/basedefs/ucontext.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: OpenBSD 6.7, Cygwin 1.7.35, mingw, MSVC 14.

9.85 ulimit.h

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/ulimit.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin, mingw, MSVC 14, Android 9.0.

• This header is removed in POSIX.1-2024.

9.86 unistd.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html

Gnulib module: unistd Portability problems fixed by Gnulib:

• This header file is missing on some platforms: MSVC 14.

• The type off64_t is not defined on some platforms: macOS 12.5, FreeBSD 10.4, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Cygwin, Haiku, Minix 3.3.

• The SEEK * macros are not defined in this file on some platforms: mingw.

• The * FILENO macros are not defined in this file on some platforms: OS/2 EMX, mingw.

• The _exit function is not declared in this file on some platforms: mingw.

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0 Portability problems not fixed by Gnulib:

9.87 utime.h

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utime.h.html

Gnulib module: utime-h Portability problems fixed by Gnulib:

• This header file is missing on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• This header is removed in POSIX.1-2024.

9.88 utmpx.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utmpx.h.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: FreeBSD 8.4, OpenBSD 7.2, Minix 3.1.8, mingw, MSVC 14, Android 13.0.

• While some platforms have the struct utmpx field ut_user, older platforms have the

field ut_name.

• The struct utmpx field ut_exit does not exist on some platforms: macOS, FreeBSD, AIX, Cygwin.

• The struct utmpx field ut_session does not exist on some platforms: macOS, FreeBSD, AIX, HP-UX, Cygwin.

• The struct utmpx field ut_addr or ut_addr_v6 or ut_ss does not exist on some

platforms: macOS, FreeBSD, AIX, Solaris.

• On some platforms, the struct utmpx field ut_tv is not of type struct timeval. Instead, it is a different struct with tv_sec and tv_usec members that may have different types than the members of struct timeval: glibc 2.39 on platforms where time_t was historically 32 bits and where log file formats were not changed when 64-bit time_t was introduced.

• On some platforms, this API does not support timestamps past the year 2038: glibc 2.39 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits; however, glibc 2.40 is planned to support timestamps up to the year 2106, by changing ut_tv.tv_sec’s type to be a 32-bit unsigned integer.

• On some platforms, this header misbehaves if the year2038 or year2038-recommended modules are used and the program is configured without the --disable-year2038 option. The readutmp module works around this problem: glibc 2.38 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits. See Section 14.5 [Avoiding the year 2038 problem], page 771.

9.89 wchar.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html

Gnulib module: wchar Portability problems fixed by Gnulib:

• This header file cannot be included on some platforms: Linux uClibc built without wide character support.

• The type wint_t is incorrect on some platforms: mingw, MSVC 14.

• Some platforms provide a NULL macro that cannot be used in arbitrary expressions: NetBSD 5.0 Portability problems not fixed by Gnulib:

• This header file leads to link errors and endless recursions or endless loops on some platforms: glibc version 2.5 or older, together with gcc version 4.3 or newer and the

 option ‘-std=c99’ or ‘-std=gnu99’.
9.90 wctype.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wctype.h.html

Gnulib module: wctype-h Portability problems fixed by Gnulib:

• This header file is missing on some platforms: HP-UX 11.00.

• The type wint_t is incorrect on some platforms: mingw, MSVC 14.

• The functions isw* are missing on some platforms: FreeBSD 4.11. Portability problems not fixed by Gnulib:

9.91 wordexp.h

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wordexp.h.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10 ISO C and POSIX Function Substitutes

This chapter describes which functions and function-like macros specified by ISO C (including ISO TS 18661-1) or POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.

The notation “Gnulib module: —” means that Gnulib does not provide a module providing a substitute for the function. When the list “Portability problems not fixed by Gnulib” is empty, such a module is not needed: No portability problems are known. Otherwise, it indicates that such a module would be useful but is not available: No one so far found this function important enough to contribute a substitute for it. If you need this particular

function, you may write to <bug-gnulib at gnu dot org>.
10.1 FD_CLR

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/FD_CLR.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.2 FD_ISSET

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/FD_ISSET.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.3 FD_SET

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/FD_SET.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.4 FD_ZERO

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/FD_ZERO.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.5 _Exit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html

Gnulib module: Exit Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.5.x, Android 4.4. Portability problems not fixed by Gnulib:

10.6 _exit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/_exit.html

Gnulib module: unistd Portability problems fixed by Gnulib:

• This function is declared in a different header file (namely, <stdlib.h>) on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.7 _longjmp

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/_longjmp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is removed in POSIX.1-2024.

Note: Despite its being removed from POSIX, in 2024 on all systems which have _ setjmp, it is the fastest way to save the registers but not the signal mask (up to 30 times faster than setjmp on some systems).

10.8 _setjmp

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/_setjmp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is removed in POSIX.1-2024.

Note: Despite its being removed from POSIX, in 2024 on all systems which have _ setjmp, it is the fastest way to save the registers but not the signal mask (up to 30 times faster than setjmp on some systems).

10.9 _tolower

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/_tolower.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, Android 4.4.

• This function is removed in POSIX.1-2024. Use the function tolower instead.

10.10 _toupper

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/_toupper.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, Android 4.4.

• This function is removed in POSIX.1-2024. Use the function toupper instead.

10.11 a64l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/a64l.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function was not correctly implemented in glibc versions before 2.2.5.

10.12 abort

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/abort.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• Some platforms mistakenly close all stdio streams prior to raising SIGABRT: Cygwin 1.5.x.

• Some platforms always print a message to stderr, even if a SIGABRT handler uses longjmp to resume execution at a safe point: mingw, MSVC 14.

10.13 abs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/abs.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 4.3.

10.14 accept

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/accept.html

Gnulib module: accept

Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), the descriptors returned by the accept function cannot be used in calls to read, write, and close; you have to use recv, send, closesocket in these cases instead.

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

• On HP-UX 11, in 64-bit mode, when the macro _HPUX_ALT_XOPEN_SOCKET_API is not defined, this function behaves incorrectly because it is declared to take a pointer to a 64-bit wide socklen_t entity but in fact considers it as a pointer to a 32-bit wide

 unsigned int entity.

Portability problems not fixed by Gnulib:

• Some platforms don’t have a socklen_t type; in this case this function’s third argument type is ‘int *’.

• On some platforms, this function’s third argument type is ‘void *’, not ‘socklen_t *’: Solaris 10.

10.15 access

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/access.html

Gnulib module: access

Portability problems fixed by Gnulib:

• This function does not support the X_OK mode on some platforms: MSVC 14.

• This function does not reject trailing slashes on symlinks to non-directories on some platforms: Mac OS X 10.5.

Portability problems not fixed by Gnulib:

• This function uses the effective id instead of the real id on some platforms: Cygwin 1.5.x.

Other problems of this function:

• There is an inherent race between calling this function and performing some action based on the results; you should think twice before trusting this function, especially in a set-uid or set-gid program.

• This function does not have an option for not following symbolic links (like stat versus lstat). If you need this option, use the Gnulib module faccessat with the AT_EACCESS flag.

• On Solaris, for the root user, any file is X_OK even if the file does not have the x permission bit set.

• On native Windows, files whose basename does not contain a ‘.’ cannot be executed through execlp or execvp. Nevertheless, this function may return true for such files.

• On Windows, different facilities for executing a program have different ways of finding an executable file, by trying various suffixes. For example, execlp and execvp search for files with the suffixes .com, .exe, .bat, .cmd, when the file with the given file name does not exist. Whereas cmd.exe searches according to the PATHEXT environment variable. This function does not perform any search; it merely looks at the file with the given file name.

10.16 acos

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/acos.html

Gnulib module: acos

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.17 acosf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/acosf.html

Gnulib module: acosf

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

10.18 acosh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/acosh.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 9.

10.19 acoshf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/acoshf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 9.

10.20 acoshl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/acoshl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.21 acosl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/acosl.html

Gnulib module: acosl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.22 aio_cancel

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_cancel.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.23 aio_error

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_error.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.24 aio_fsync

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_fsync.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.25 aio_read

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_read.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.26 aio_return

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_return.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.27 aio_suspend

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_suspend.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.28 aio_write

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_write.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.29 alarm

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/alarm.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function has no impact if <code>SIGALRM</code> is inherited as ignored; programs should use <code>signal (SIGALRM, SIG DFL)</code> if it is important to ensure the alarm will fire.

• Use of this function in multi-threaded applications is not advised.

• This function is missing on some platforms: mingw (2011), MSVC 14.

• This function is conditionally declared in the non-standard <io.h> header on some platforms: mingw (2012 or newer).

10.30 aligned_alloc

Documentation: man aligned alloc

Gnulib module: aligned alloc

Portability problems fixed by Gnulib:

• This function fails if the alignment argument is smaller than sizeof (void *) on some platforms: macOS 11.1, AIX 7.3.1.

Portability problems not fixed by Gnulib:

• On some platforms, aligned_alloc crashes if the requested size is not a multiple of the alignment: AddressSanitizer (gcc 11.2 or clang 13).

• This function is missing on many older platforms: glibc 2.15, macOS 10.13, FreeBSD 6.4, NetBSD 7.1, OpenBSD 6.0, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Gnulib has partial substitutes for aligned_alloc that do not crash even if the Address-Sanitizer bug is present:

• The Gnulib module alignalloc provides a portable function alignalloc that is a near-substitute for glibc aligned_alloc, except that the result must be freed with alignfree rather than plain free.

• The Gnulib module aligned-malloc provides functions for allocating and freeing blocks of suitably aligned memory.

• The Gnulib module pagealign_alloc provides a similar API for allocating and freeing blocks of memory aligned on a system page boundary.

10.31 alphasort

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/alphasort.html

Gnulib module: alphasort Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 9, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• The parameters of this function are declared as const void * on some platforms: glibc 2.3.6, macOS 10.7, FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7.

• The parameters of this function are declared as void * on some platforms: AIX 5.1.

10.32 asctime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asctime.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is deprecated in C23. Likewise, POSIX says this function is obsolescent and it is planned to be removed in a future version. Portable applications can use strftime (or even sprintf) instead. However, strftime is locale dependent.

• This function may overflow its internal buffer if its argument specifies a year before 1000 or after 9999. See Section 10.179 [ctime], page 137.

• Although it is tempting to call this function on the value that functions like localtime return, this is typically a mistake. On most current platforms, these functions return a null pointer for timestamps out of range, and this function has undefined behavior in that case.

10.33 asctime_r

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asctime_r.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function has an incompatible declaration on some platforms: Solaris 11.4 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is removed in POSIX.1-2024. Use the function strftime (or even sprintf) instead. However, strftime is locale dependent.

• This function may overflow its output buffer if its argument specifies a year before 1000 or after 9999. See Section 10.179 [ctime], page 137.

• Although it is tempting to call this function on the value that functions like localtime return, this is typically a mistake. On most current platforms, these functions return a null pointer for timestamps out of range, and this function has undefined behavior in that case.

10.34 asin

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asin.html

Gnulib module: asin Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.35 asinf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asinf.html

Gnulib module: asinf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.36 asinh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asinh.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 9.

10.37 asinhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asinhf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 9.

10.38 asinhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asinhl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.39 asinl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/asinl.html

Gnulib module: asinl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.40 assert

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/assert.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

Extension: Gnulib offers a module ‘assert’ that allows the installer to disable assertions

through a ‘configure’ option: ‘--disable-assert’.

10.41 atan

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atan.html

Gnulib module: atan Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.42 atan2

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atan2.html

Gnulib module: atan2 Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.43 atan2f

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atan2f.html

Gnulib module: atan2f Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.44 atan2l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atan2l.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.45 atanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atanf.html

Gnulib module: atanf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.46 atanh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atanh.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 9.

10.47 atanhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atanhf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 9.

10.48 atanhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atanhl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.49 atanl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atanl.html

Gnulib module: atanl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.50 atexit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atexit.html

Gnulib module: atexit

Portability problems fixed by Gnulib:

• This function is missing on some old platforms.

Portability problems not fixed by Gnulib:

10.51 atof

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atof.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 4.4.

• This function mis-parses strings with leading ‘+’ on some old platforms: Old versions of Linux.

• This function returns a positive value for negative underflow on some platforms: glibc 2.4, Mingw, Cygwin.

• This function fails to do a valid parse of ‘-0x’ on some platforms: glibc 2.4, Cygwin < 1.5.25-11.

• This function fails to parse Infinities and plain NaNs on some platforms: Mingw, OpenBSD 4.0.

• This function fails to parse NaN() on some platforms: Mingw, OpenBSD 4.0, Cygwin < 1.5.25-11.

• This function fails to parse NaN(n-char-sequence) on some platforms: Mingw, OpenBSD 4.0.

• This function fails to parse C99 hexadecimal floating point on some platforms: Mingw, OpenBSD 4.0.

• This function fails to correctly parse very long strings on some platforms: Mingw, Cygwin.

10.52 atoi

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atoi.html

Gnulib module: —

Portability problems fixed by Gnulib:

10.53 atol

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atol.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.54 atoll

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/atoll.html

Gnulib module: atoll Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11.23, MSVC 9. Portability problems not fixed by Gnulib:

10.55 basename

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/basename.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-basename-3.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• glibc and Android have two different functions basename: the POSIX version and the GNU version.

• basename assumes file names in POSIX syntax; it does not work with file names in Windows syntax.

The Gnulib module basename-lgpl provides similar API, with a function last_component, that also works with Windows file names.

10.56 bind

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/bind.html

Gnulib module: bind Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

Portability problems not fixed by Gnulib:

10.57 bsearch

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/bsearch.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.58 btowc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/btowc.html

Gnulib module: btowc Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw.

• This function returns WEOF for a NUL argument on some platforms: Cygwin 1.7.2.

• In the C or POSIX locales, this function is not consistent with Gnulib’s mbrtowc and can return WEOF: glibc 2.35, MirOS BSD #10.

• In the C or POSIX locales, this function is not consistent with mbrtowc on some platforms: mingw. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function btoc32, provided by Gnulib module btoc32, operates on 32-bit wide characters and therefore does not have this limitation.

10.59 c8rtomb

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on most platforms: glibc 2.29, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.4.6, mingw, MSVC 14, Android 9.0.

10.60 c16rtomb

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on most non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 3.4.6, mingw, MSVC 9, Android 4.4.

10.61 c32rtomb

Gnulib module: c32rtomb Portability problems fixed by Gnulib:

• This function is missing on most non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 3.4.6, mingw, MSVC 9, Android 4.4.

• This function returns 0 when the first argument is NULL in some locales on some platforms: AIX 7.2. Portability problems not fixed by Gnulib:

• This function is only defined as an inline function on some platforms: Haiku 2020.

10.62 cabs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cabs.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 9.

10.63 cabsf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cabsf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 9.

10.64 cabsl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cabsl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1.

10.65 cacos

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cacos.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.66 cacosf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cacosf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.67 cacosh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cacosh.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.68 cacoshf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cacoshf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.69 cacoshl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cacoshl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.70 cacosl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cacosl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.71 calloc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/calloc.html

Gnulib module: calloc-posix Portability problems fixed by Gnulib:

• Upon failure, the function does not set errno to ENOMEM on some platforms: mingw, MSVC 14.

• On some platforms, calloc (n, s) can succeed even if multiplying n by s would exceed PTRDIFF_MAX or SIZE_MAX. Although failing to check for exceeding PTRDIFF_MAX is arguably allowed by POSIX it can lead to undefined behavior later, so calloc-posix does not allow going over the limit.

Extension: Gnulib provides a module ‘calloc-gnu’ that substitutes a calloc implementation that behaves more like the glibc implementation. It fixes this portability problem:

• calloc (0, s) and calloc (n, 0) return NULL on success on some platforms: AIX 7.2.

10.72 call_once

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Call-Once.html.

Gnulib module: call once Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29. Portability problems not fixed by Gnulib:

• This function makes applications hang forever on some platforms: Cygwin 3.5.3.

• This function does not work on some platforms: Haiku.

10.73 canonicalize

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.74 canonicalizef

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.75 canonicalizel

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.76 carg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/carg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.77 cargf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cargf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.78 cargl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cargl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1.

10.79 casin

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/casin.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.80 casinf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/casinf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.81 casinh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/casinh.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.82 casinhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/casinhf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.83 casinhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/casinhl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.84 casinl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/casinl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.85 catan

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catan.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.86 catanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catanf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.87 catanh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catanh.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.88 catanhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catanhf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1.

10.89 catanhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catanhl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.90 catanl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catanl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.91 catclose

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catclose.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 7.1.

10.92 catgets

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catgets.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 7.1.

10.93 catopen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/catopen.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 7.1.

10.94 cbrt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cbrt.html

Gnulib module: cbrt Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9. Portability problems not fixed by Gnulib:

10.95 cbrtf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cbrtf.html

Gnulib module: cbrtf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9. Portability problems not fixed by Gnulib:

10.96 cbrtl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cbrtl.html

Gnulib module: cbrtl or cbrtl-ieee Portability problems fixed by either Gnulib module cbrtl or cbrtl-ieee

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

• This function produces grossly wrong results on some platforms: OpenBSD 5.1/SPARC. Portability problems fixed by Gnulib module cbrtl-ieee: Portability problems not fixed by Gnulib:

10.97 ccos

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ccos.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.98 ccosf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ccosf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.99 ccosh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ccosh.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.100 ccoshf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ccoshf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.101 ccoshl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ccoshl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.102 ccosl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ccosl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.103 ceil

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ceil.html

Gnulib module: ceil or ceil-ieee Portability problems fixed by either Gnulib module ceil or ceil-ieee: Portability problems fixed by Gnulib module ceil-ieee:

• This function returns a positive zero for an argument between −1 and 0 on some platforms: AIX 7.1. Portability problems not fixed by Gnulib:

10.104 ceilf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ceilf.html

Gnulib module: ceilf or ceilf-ieee

Portability problems fixed by either Gnulib module ceilf or ceilf-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

Portability problems fixed by Gnulib module ceilf-ieee:

• This function returns a positive zero for an argument between −1 and 0 on some platforms: macOS 10.13, AIX 7.1.

Portability problems not fixed by Gnulib:

10.105 ceill

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ceill.html

Gnulib module: ceill or ceill-ieee

Portability problems fixed by either Gnulib module ceill or ceill-ieee:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function returns a wrong result for small arguments on some platforms: OpenBSD 5.6.

Portability problems fixed by Gnulib module ceill-ieee:

Portability problems not fixed by Gnulib:

10.106 cexp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cexp.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.107 cexpf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cexpf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.108 cexpl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cexpl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 13.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.109 cfgetispeed

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cfgetispeed.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.110 cfgetospeed

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cfgetospeed.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.111 cfsetispeed

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cfsetispeed.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.112 cfsetospeed

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cfsetospeed.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.113 chdir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html

Gnulib module: chdir Portability problems fixed by Gnulib:

• This function is declared in different header files (namely, <io.h> or <direct.h>) on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.114 chmod

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html

Gnulib module: chmod Portability problems fixed by Gnulib:

• This function does not fail when the file name argument ends in a slash and (without the slash) names a non-directory, on some platforms: AIX 7.2.

• This function fails with a wrong error code (EINVAL instead of ENOTDIR) when the file name argument ends in a slash and (without the slash) names a non-directory, on some platforms: mingw, MSVC. Portability problems not fixed by Gnulib:

• This function sometimes fails with EACCES when the failure is due to lack of appropriate privileges (EPERM), not to search permission denied on the file name prefix (EACCES): Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system (see https://bugs.gnu.

 org/65599).

10.115 chown

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html

Gnulib module: chown Portability problems fixed by Gnulib:

• Some platforms fail to detect trailing slash on non-directories, as in chown("link-to-file/",uid,gid): macOS 12.5, FreeBSD 7.2, AIX 7.3.1, Solaris 9.

• Some platforms fail to update the change time when at least one argument was not −1, but no ownership changes resulted: OpenBSD 7.2.

• When passed an argument of −1, some implementations really set the owner user/group id of the file to this value, rather than leaving that id of the file alone: some very old platforms.

• When applied to a symbolic link, some implementations don’t dereference the symlink, i.e. they behave like lchown: some very old platforms.

• This function is missing on some platforms; however, the replacement always fails with ENOSYS: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• This function sometimes fails with EACCES when the failure is due to lack of appropriate privileges (EPERM), not to search permission denied on the file name prefix (EACCES): Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system (see https://bugs.gnu.

 org/65599).

10.116 cimag

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cimag.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.117 cimagf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cimagf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.118 cimagl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cimagl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1.

10.119 clearerr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clearerr.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.120 clock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.121 clock_getcpuclockid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
clock_getcpuclockid.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, FreeBSD 6.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 5.1.

10.122 clock_getres

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_getres.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, Minix 3.1.8, mingw, MSVC 14.

• On many platforms, this function returns a value other than the clock resolution of clock_gettime, i.e., the minimum distance between differing timestamps. For example, on AIX 7.2 it returns 10 milliseconds even though the clock resolution is 1 microsecond. Conversely, on GNU/Linux it typically returns 1 nanosecond even though the clock resolution may be greater.

The Gnulib module gettime-res is a partial substitute; it implements the CLOCK_ REALTIME functionality of clock_getres, and fixes the too-high resolution bug of platforms like AIX 7.2.

10.123 clock_gettime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_gettime.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, Minix 3.1.8, mingw, MSVC 14.

• This function leaves the upper 32 bits of the tv_sec field of the result uninitialized on some platforms: mingw in 32-bit mode.

The Gnulib modules gettime and timespec_get are partial substitutes; they implement

the CLOCK_REALTIME functionality of clock_gettime.
10.124 clock_nanosleep

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_nanosleep.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, FreeBSD 11.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14.

10.125 clock_settime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_settime.
html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, Minix 3.1.8, Cygwin 1.7.9, mingw, MSVC 14.

10.126 clog

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clog.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1.

10.127 clogf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clogf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1.

10.128 clogl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/clogl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.129 close

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html

Gnulib module: close Portability problems fixed by Gnulib:

• This function is declared in a different header file (namely, <io.h>) on some platforms: MSVC 14.

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

• On Windows platforms (excluding Cygwin), socket and accept do not return file descriptors that can be closed by close. Instead, closesocket must be used. Portability problems not fixed by Gnulib:

10.130 closedir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/closedir.html

Gnulib module: closedir Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.131 closelog

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/closelog.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.132 cnd_broadcast

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.
html.

Gnulib module: cnd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.133 cnd_destroy

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.
html.

Gnulib module: cnd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.134 cnd_init

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.
html.

Gnulib module: cnd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.135 cnd_signal

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.
html.

Gnulib module: cnd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.136 cnd_timedwait

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.
html.

Gnulib module: cnd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.137 cnd_wait

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Condition-Variables.
html.

Gnulib module: cnd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.138 confstr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/confstr.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.139 conj

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/conj.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.140 conjf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/conjf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.141 conjl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/conjl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1.

10.142 connect

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html

Gnulib module: connect Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead. Portability problems not fixed by Gnulib:

10.143 copysign

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/copysign.html

Gnulib module: copysign Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9. Portability problems not fixed by Gnulib:

10.144 copysignf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/copysignf.html

Gnulib module: copysignf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9. Portability problems not fixed by Gnulib:

10.145 copysignl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/copysignl.html

Gnulib module: copysignl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9. Portability problems not fixed by Gnulib:

10.146 cos

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cos.html

Gnulib module: cos Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.147 cosf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cosf.html

Gnulib module: cosf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.148 cosh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cosh.html

Gnulib module: cosh Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.149 coshf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/coshf.html

Gnulib module: coshf

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

Portability problems not fixed by Gnulib:

10.150 coshl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/coshl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.151 cosl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cosl.html

Gnulib module: cosl

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

Portability problems not fixed by Gnulib:

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.152 cpow

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cpow.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1.

10.153 cpowf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cpowf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1.

10.154 cpowl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cpowl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 11.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.155 cproj

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cproj.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

• The glibc implementation is or was broken.

10.156 cprojf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cprojf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

• The glibc implementation is or was broken.

10.157 cprojl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/cprojl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1.

• The glibc implementation is or was broken.

10.158 creal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/creal.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.159 crealf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/crealf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.160 creall

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/creall.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1.

10.161 creat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/creat.html

Gnulib module: creat Portability problems fixed by Gnulib:

• This function does not support modes with execution bits (such as 0700) on some platforms: MSVC 14.

• On platforms where off_t is a 32-bit type, creat may not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a nonexistent file, on some platforms: FreeBSD 7.2, AIX 7.1, HP-UX 11.31, Solaris 9. Portability problems not fixed by Gnulib:

• On Windows, this function returns a file handle in O_TEXT mode. If you need a file handle in O_BINARY mode, you need to use the function open instead.

10.162 crypt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/crypt.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.34, FreeBSD 6.0, NetBSD 5.0, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared in <unistd.h> (without -D_GNU_SOURCE) on some platforms: glibc (at least 2.11–2.13).

10.163 csin

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csin.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.164 csinf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csinf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.165 csinh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csinh.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.166 csinhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csinhf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.167 csinhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csinhl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.168 csinl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csinl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.169 csqrt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csqrt.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.170 csqrtf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csqrtf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.171 csqrtl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/csqrtl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1.

10.172 ctan

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctan.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.173 ctanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctanf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.174 ctanh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctanh.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.175 ctanhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctanhf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9.

10.176 ctanhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctanhl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.177 ctanl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctanl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1.

10.178 ctermid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctermid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.179 ctime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctime.html

Gnulib module: ctime

Portability problems fixed by Gnulib:

• On native Windows platforms (mingw, MSVC), this function works incorrectly when the environment variable TZ has been set by Cygwin.

Portability problems not fixed by Gnulib:

• This function is deprecated in C23. Likewise, POSIX says this function is obsolescent and it is planned to be removed in a future version. Portable applications can use

    localtime_r and strftime (or even sprintf) instead. However, localtime_r can

fail and strftime is locale dependent.

• This function may overflow its internal buffer if its argument specifies a time before the year 1000 or after the year 9999.

• This function may dereference an internal null pointer if its argument specifies a time before the year INT_MIN+1900 or after the year INT_MAX+1900.

• The ctime function need not be reentrant, and consequently is not required to be thread safe. Implementations of ctime typically write the timestamp into static buffer. If two threads call ctime at roughly the same time, you might end up with the wrong date in one of the threads, or some undefined string.

• Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. See Section 10.1206 [tzset], page 457.

Although ctime and related functions asctime, asctime_r and ctime_r formerly were plausible to use, they are now unsafe in general, and should be avoided.

Decades ago when time_t was narrow and there was no strftime or internationalization, code could call these functions and then select the parts needed. For example, in Unix 7th

Edition /usr/src/cmd/ls.c (1979):
     cp = ctime(&p->lmtime);
     if(p->lmtime < year)
             printf(" %-7.7s %-4.4s ", cp+4, cp+20); else
             printf(" %-12.12s ", cp+4);

This had well-defined behavior when time_t was only 32 bits and so was OK for circa 1979 platforms.

However, today’s platforms have a time_t so wide that the year might not be in the range [1000, 9999]. In this case the behavior of ctime is undefined and some platforms behave badly, overrunning a buffer or dereferencing an internal null pointer; and even on platforms where no undefined behavior occurs, the 7th Edition code generates wrong output for outof-range years, because it incorrectly assumes that every year is represented by exactly four digits.

10.180 ctime_r

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctime_r.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function has an incompatible declaration on some platforms: Solaris 11.4 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is removed in POSIX.1-2024. Use the functions localtime_r and strftime (or even sprintf) instead. However, localtime_r can fail and strftime is locale dependent.

• This function may overflow its output buffer if its argument specifies a time before the year 1000 or after the year 9999. See Section 10.179 [ctime], page 137.

• This function may dereference an internal null pointer if its argument specifies a time before the year INT_MIN+1900 or after the year INT_MAX+1900.

10.181 daddl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.182 daylight

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/daylight.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: FreeBSD 14.0, OpenBSD 3.8.

• The address of this variable is not a compile-time constant on some platforms: Cygwin, mingw.

• Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. See Section 10.1206 [tzset], page 457.

A more portable way of getting the UTC offset is to use strftime with the %z format. See Section 10.1096 [strftime], page 423.

10.183 dbm_clearerr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_clearerr.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.184 dbm_close

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_close.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.185 dbm_delete

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_delete.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.186 dbm_error

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_error.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.187 dbm_fetch

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_fetch.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.188 dbm_firstkey

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_firstkey.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.189 dbm_nextkey

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_nextkey.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.190 dbm_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_open.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.191 dbm_store

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dbm_store.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.192 ddivl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.193 difftime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/difftime.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.194 dirfd

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirfd.html

Gnulib module: dirfd Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 7.1, HP-UX 11, Solaris 10, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• This function always fails on some platforms: mingw.

• There is a dirfd macro but no function, and the macro does not work with an argument of type void *, as a function would: NetBSD 9.2.

10.195 dirname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirname.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• dirname assumes file names in POSIX syntax; it does not work with file names in Windows syntax.

The Gnulib module dirname provides similar API, with functions dir_name and mdir_ name, that also works with Windows file names.

10.196 div

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/div.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.197 dlclose

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlclose.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.198 dlerror

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlerror.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.199 dlopen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlopen.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dlopen-1.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• If the file name argument is not absolute, the file is searched for. The search algorithm is system specific.

10.200 dlsym

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dlsym-1.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• The visibility of symbols loaded in dependent shared libraries or present in the main executable is system dependent.

10.201 dmull

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.202 dprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dprintf.html

Gnulib module: dprintf or dprintf-posix or dprintf-gnu Portability problems fixed by either Gnulib module dprintf or dprintf-posix or

dprintf-gnu:

• This function is missing on many non-glibc platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14.

Portability problems fixed by either Gnulib module dprintf-posix or dprintf-gnu:

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: Solaris 11.4.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Solaris 11.4.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Solaris 11.4.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floatingpoint and pointer output on some platforms: AIX 7.1.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

Portability problems fixed by Gnulib module dprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module dprintf-posix or dprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.203 drand48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/drand48.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.204 dsubl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.205 dup

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup.html

Gnulib module: dup

Portability problems fixed by Gnulib:

• This function is declared in a different header file (namely, <io.h>) on some platforms: MSVC 14.

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

10.206 dup2

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html

Gnulib module: dup2 Portability problems fixed by Gnulib:

• This function is declared in a different header file (namely, <io.h>) on some platforms: MSVC 14.

• This function always returns 0 for success on some platforms: mingw, MSVC 14.

• This function can hang when duplicating an fd to itself on some platforms: mingw, MSVC 14.

• This function crashes when invoked with invalid arguments on some platforms: Cygwin 1.7.17, MSVC 14.

• This function crashes when invoked with valid arguments on some platforms: Cygwin 1.7.25.

• This function fails with EINVAL when duplicating an fd to itself: Android.

• This function resets the FD_CLOEXEC flag when duplicating an fd to itself on some platforms: Haiku.

• This function returns 0 for dup2 (1, 1) on some platforms: Cygwin 1.5.x.

• This function may return -EBADF instead of -1 on some platforms: Linux releases between July 2008 and May 2009 (versions 2.6.27 to 2.6.29).

• This function returns EMFILE instead of EBADF for large targets, which interferes with using dup2(fd,fd)==fd) as the minimal EBADF filter: AIX 7.1, FreeBSD 6.1, Cygwin 1.5. Portability problems not fixed by Gnulib:

10.207 duplocale

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/duplocale.html

Gnulib module: duplocale Portability problems fixed by Gnulib:

• The argument LC_GLOBAL_LOCALE is not supported on some platforms: glibc 2.11, AIX 7.1.

• With the argument LC_GLOBAL_LOCALE, this function returns a wrong result on some platforms: NetBSD 7.1. Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 9.0, NetBSD 5.0, OpenBSD 6.1, Minix 3.1.8, AIX 6.1, HP-UX 11, Solaris 11.3, Cygwin 2.5.x, mingw, MSVC 14, Android 4.4.

• This function is useless because the locale_t type is not defined on some platforms: z/OS.

• With the argument LC_GLOBAL_LOCALE, this function returns a wrong result on some platforms: Haiku.

10.208 encrypt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/encrypt.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared in <unistd.h> (without -D_GNU_SOURCE) on some platforms: glibc (at least 2.11–2.13).

• POSIX 202x says this function is obsolescent and it is planned to be removed in a future version.

10.209 endgrent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/endgrent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.210 endhostent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/endhostent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 8.1.

10.211 endnetent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/endnetent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 2.9, mingw, MSVC 14, Android 8.1.

10.212 endprotoent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/endprotoent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 8.1.

10.213 endpwent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/endpwent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.214 endservent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/endservent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.215 endutxent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/endutxent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.216 environ

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/environ.html

Gnulib module: environ Portability problems fixed by Gnulib:

• POSIX does not require this variable to be declared, and it is indeed not declared on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Solaris 11.4.

• On macOS, this variable is not declared. Up to Mac OS X 10.4, one can use

        extern char **environ;

to get the variable declared. This does not work any more, however, in shared libraries on macOS 11.1. Here is a workaround: Instead, one can use

        #include <crt_externs.h>
        #define environ (*_NSGetEnviron())

This works at all versions of macOS.

• On Cygwin in 64-bit mode, references to this variable cause a link error when the option

 -Wl,--disable-auto-import is in use.

Portability problems not fixed by Gnulib:

• The address of this variable is not a compile-time constant on some platforms: mingw.

• Assigning NULL to environ to clear all variables is not portable; better is to assign environ to one-element array containing a NULL pointer. That said, an empty environment is not portable either, as some systems may require particular environment variables (such as PATH) to be present in order to operate consistently.

10.217 erand48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/erand48.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.218 erf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/erf.html

Gnulib module: erf Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9.

10.219 erfc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/erfc.html

Gnulib module: erfc Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9.

10.220 erfcf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/erfcf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.221 erfcl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/erfcl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.222 erff

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/erff.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.223 erfl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/erfl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.224 errno

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/errno.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows, the socket functions don’t set errno; their error code is available through

 WSAGetLastError() instead.

10.225 execl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/execl.html

Gnulib module: execl

Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not pass command-line arguments correctly if they contain space, tab, backslash, or double-quote characters.

• On Windows platforms (excluding Cygwin), this function spawns an asynchronous child process and then exits the current process immediately. As a consequence, the parent of the current process 1. may incorrectly proceed as if its child had exited, and 2. will never see the child’s exit status.

• On Windows platforms (excluding Cygwin), the return type of this function is intptr_ t, not int.

Note: The Gnulib replacement for this function is not async-safe, that is, it must not be invoked from a signal handler.

Portability problems not fixed by Gnulib:

• On some platforms, a script without executable permission is still run: Cygwin 1.5.x.

10.226 execle

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/execle.html

Gnulib module: execle Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not pass command-line arguments correctly if they contain space, tab, backslash, or double-quote characters.

• On Windows platforms (excluding Cygwin), this function spawns an asynchronous child process and then exits the current process immediately. As a consequence, the parent of the current process 1. may incorrectly proceed as if its child had exited, and 2. will never see the child’s exit status.

• On Windows platforms (excluding Cygwin), the return type of this function is intptr_ t, not int. Note: The Gnulib replacement for this function is not async-safe, that is, it must not be

invoked from a signal handler.

Portability problems not fixed by Gnulib:

• On some platforms, a script without executable permission is still run: Cygwin 1.5.x.

10.227 execlp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/execlp.html

Gnulib module: execlp Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not pass command-line arguments correctly if they contain space, tab, backslash, or double-quote characters.

• On Windows platforms (excluding Cygwin), this function spawns an asynchronous child process and then exits the current process immediately. As a consequence, the parent of the current process 1. may incorrectly proceed as if its child had exited, and 2. will never see the child’s exit status.

• On Windows platforms (excluding Cygwin), the return type of this function is intptr_ t, not int. Portability problems not fixed by Gnulib:

• On some platforms, a script without executable permission is still run: Cygwin 1.5.x.

10.228 execv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/execv.html

Gnulib module: execv Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not pass command-line arguments correctly if they contain space, tab, backslash, or double-quote characters.

• On Windows platforms (excluding Cygwin), this function spawns an asynchronous child process and then exits the current process immediately. As a consequence, the parent of the current process 1. may incorrectly proceed as if its child had exited, and 2. will never see the child’s exit status.

• On Windows platforms (excluding Cygwin), the return type of this function is intptr_ t, not int.

Note: The Gnulib replacement for this function is not async-safe, that is, it must not be invoked from a signal handler.

Portability problems not fixed by Gnulib:

• On some platforms, a script without executable permission is still run: Cygwin 1.5.x.

10.229 execve

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/execve.html

Gnulib module: execve Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not pass command-line arguments correctly if they contain space, tab, backslash, or double-quote characters.

• On Windows platforms (excluding Cygwin), this function spawns an asynchronous child process and then exits the current process immediately. As a consequence, the parent of the current process 1. may incorrectly proceed as if its child had exited, and 2. will never see the child’s exit status.

• On Windows platforms (excluding Cygwin), the return type of this function is intptr_ t, not int.

Note: The Gnulib replacement for this function is not async-safe, that is, it must not be invoked from a signal handler.

Portability problems not fixed by Gnulib:

• On some platforms, a script without executable permission is still run: Cygwin 1.5.x.

10.230 execvp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/execvp.html

Gnulib module: execvp Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not pass command-line arguments correctly if they contain space, tab, backslash, or double-quote characters.

• On Windows platforms (excluding Cygwin), this function spawns an asynchronous child process and then exits the current process immediately. As a consequence, the parent of the current process 1. may incorrectly proceed as if its child had exited, and 2. will never see the child’s exit status.

• On Windows platforms (excluding Cygwin), the return type of this function is intptr_ t, not int.

Portability problems not fixed by Gnulib:

• On some platforms, a script without executable permission is still run: Cygwin 1.5.x.

10.231 exit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/exit.html

Gnulib module: stdlib Portability problems fixed by Gnulib:

• Some problems with the macros EXIT_SUCCESS and EXIT_FAILURE, see Section 9.53 [stdlib.h], page 75. Portability problems not fixed by Gnulib:

10.232 exp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/exp.html

Gnulib module: exp Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.233 exp2

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/exp2.html

Gnulib module: exp2 Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

• This function returns grossly wrong results on some platforms: OpenBSD 4.9. Portability problems not fixed by Gnulib:

10.234 exp2f

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/exp2f.html

Gnulib module: exp2f Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9. Portability problems not fixed by Gnulib:

10.235 exp2l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/exp2l.html

Gnulib module: exp2l or exp2l-ieee Portability problems fixed by either Gnulib module exp2l or exp2l-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

• This function returns Infinity instead of large finite values on some platforms: NetBSD 10.0/i386.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0/x86 64. Portability problems fixed by Gnulib module exp2l-ieee:

• This function returns a wrong value for a NaN argument on some platforms: OpenBSD 4.9. Portability problems not fixed by Gnulib:

10.236 expf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/expf.html

Gnulib module: expf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.237 expl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/expl.html

Gnulib module: expl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function returns 0.0 for all arguments on some platforms: Haiku 2017.

• This function returns NaN for small operands on some platforms: OpenBSD 5.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces results which are accurate to only 16 digits on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x, NetBSD 10.0. Portability problems not fixed by Gnulib:

10.238 expm1

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/expm1.html

Gnulib module: expm1 or expm1-ieee Portability problems fixed by either Gnulib module expm1 or expm1-ieee:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 9. Portability problems fixed by Gnulib module expm1-ieee:

• This function has problems when the argument is minus zero on some platforms: AIX 7.1. Portability problems not fixed by Gnulib:

10.239 expm1f

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/expm1f.html

Gnulib module: expm1f or expm1f-ieee Portability problems fixed by either Gnulib module expm1f or expm1f-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 9. Portability problems fixed by Gnulib module expm1f-ieee:

• This function returns a positive zero for a minus zero argument on some platforms: AIX 7.2. Portability problems not fixed by Gnulib:

10.240 expm1l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/expm1l.html

Gnulib module: expm1l Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

• This function returns 0 instead of small positive values on some platforms: NetBSD 10.0/i386.

• This function produces results which are accurate to only 16 digits on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x, Mac OS X 10.5, NetBSD 10.0/x86 64. Portability problems not fixed by Gnulib:

10.241 fabs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fabs.html

Gnulib module: fabs Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.242 fabsf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fabsf.html

Gnulib module: fabsf Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.243 fabsl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fabsl.html

Gnulib module: fabsl Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.244 faccessat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/faccessat.html

Gnulib module: faccessat Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 10.12, FreeBSD 7.4, NetBSD 6.1.5, OpenBSD 4.9, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

• On some platforms, faccessat (dfd, "file/", amode, flag) succeeds instead of failing when file is not a directory. macOS 11.1. Portability problems not fixed by Gnulib:

• The replacement does not always take ACLs into account.

• The replacement is not safe to be used in libraries.

• The replacement is not multithread-safe.

• The replacement does not support the AT_SYMLINK_NOFOLLOW flag, which is supported

 by GNU faccessat.

• On some platforms, faccessat can mishandle AT_EACCESS after a process starts as root and then becomes non-root: GNU/Linux with glibc 2.32.

Other problems of this function:

• There is an inherent race between calling this function and performing some action based on the results; you should think twice before trusting this function, especially in a set-uid or set-gid program.

10.245 fadd

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.246 faddl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.247 fattach

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fattach.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.248 fchdir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html

Gnulib module: fchdir Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe.

Portability problems not fixed by Gnulib:

10.249 fchmod

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchmod.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function sometimes fails with EACCES when the failure is due to lack of appropriate privileges (EPERM), not to search permission denied on the file name prefix (EACCES): Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system (see https://bugs.gnu.

 org/65599).
10.250 fchmodat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchmodat.html

Gnulib module: fchmodat Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a non-directory, on some platforms: AIX 7.2.

• When given the AT_SYMLINK_NOFOLLOW flag, this function fails with errno set to ENOTSUP, even when the file is not a symbolic link: GNU/Linux with glibc 2.31, Cygwin 2.9.

Portability problems not fixed by Gnulib:

• Some platforms do not allow changing the access bits on symbolic links.

• If the AT_SYMLINK_NOFOLLOW flag is specified, this function can fail with errno set to EMFILE or ENFILE, and it fails with errno set to EOPNOTSUPP if the /proc file system is not mounted: GNU/Linux with glibc 2.34.

• This function sometimes fails with EACCES when the failure is due to lack of appropriate privileges (EPERM), not to search permission denied on the file name prefix (EACCES): Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system (see https://bugs.gnu.

org/65599).
10.251 fchown

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchown.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function sometimes fails with EACCES when the failure is due to lack of appropriate privileges (EPERM), not to search permission denied on the file name prefix (EACCES): Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system (see https://bugs.gnu.

org/65599).
10.252 fchownat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchownat.html

Gnulib module: fchownat

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe. Also, the replacement may fail to change symlinks if lchown is unsupported, or fail altogether if chown is unsupported.

• This function is declared in <sys/stat.h>, not in <unistd.h>, on some platforms: Android 4.3.

• Some platforms fail to detect trailing slash on non-directories, as in fchown(dir,"link-

to-file/",uid,gid,flag): Solaris 9.

• Some platforms mistakenly dereference symlinks when using AT_SYMLINK_NOFOLLOW: Linux kernel 2.6.17.

• This function does not fail for an empty filename on some platforms: Linux with glibc < 2.11.

Portability problems not fixed by Gnulib:

• This function sometimes fails with EACCES when the failure is due to lack of appropriate privileges (EPERM), not to search permission denied on the file name prefix (EACCES): Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system (see https://bugs.gnu.

org/65599).

10.253 fclose

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fclose.html

Gnulib module: fclose

Portability problems fixed by Gnulib:

• On some platforms, this function fails to set the file position of a seekable input stream to the byte after the last one actually read: glibc 2.34, FreeBSD, AIX 7.2.

• This function crashes if the stream’s file descriptor has already been closed on some platforms: MSVC 14.

• On Windows platforms (excluding Cygwin), socket and accept followed by fdopen do not return streams that can be closed by fclose.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

10.254 fcntl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fcntl-3.html

Gnulib module: fcntl

Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function does not support F_DUPFD_CLOEXEC on some platforms: glibc with Linux kernels before 2.6.24, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, AIX 7.1, HP-UX 11, Solaris 11 2010-11, Cygwin 1.7.1. Note that the gnulib replacement code is functional but not atomic.

• The F_DUPFD_CLOEXEC action of this function does not set the FD_CLOEXEC flag on some platforms: NetBSD 10.0.

• The F_DUPFD_CLOEXEC action of this function sets the FD_CLOEXEC flag on the wrong file descriptor on some platforms: Haiku.

• The F_DUPFD action of this function does not reject out-of-range targets properly on some platforms: AIX 7.1, Cygwin 1.5.x, Haiku.

• The F_DUPFD action of this function mistakenly clears FD_CLOEXEC on the source descriptor on some platforms: Haiku.

Portability problems not fixed by Gnulib:

• The replacement function does not support F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, F_GETLK, F_SETLK, and F_SETLKW on some platforms: mingw, MSVC 14.

• When a file does not support locking (such as on an NFS file system that does not support file locking), calls with F_SETLK and F_SETLKW fail with errno set to different values on different systems: EINVAL on OpenIndiana (as suggested by the POSIX 1003.1-2017 fcntl specification), ENOLCK on GNU/Linux, and EOPNOTSUPP on FreeBSD.

10.255 fdatasync

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html

Gnulib module: fdatasync Portability problems fixed by Gnulib:

• This function is present but not declared on some platforms: Mac OS X 10.7.

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 11.0, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14, Android 2.2. Portability problems not fixed by Gnulib:

10.256 fdetach

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdetach.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.257 fdim

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdim.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.258 fdimf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdimf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.259 fdiml

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdiml.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

10.260 fdiv

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.261 fdivl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.262 fdopen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdopen.html

Gnulib module: fdopen Portability problems fixed by Gnulib:

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure. Portability problems not fixed by Gnulib:

10.263 fdopendir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdopendir.html

Gnulib module: fdopendir Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe. Also, the replacement does not guarantee that ‘dirfd(fdopendir(n))==n’ (dirfd might fail, or return a different file descriptor than n).

• This function exists but is not declared on some platforms: FreeBSD 7.3.

• This function does not reject non-directory file descriptors on some platforms: GNU/Hurd.

• This function mistakenly closes non-directory file descriptors on some platforms: FreeBSD 8.1.

Portability problems not fixed by Gnulib:

10.264 feclearexcept

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/feclearexcept.
html

Gnulib module: fenv-exceptions-tracking-c99 Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function is broken on some platforms: OpenBSD 7.4/mips64, Minix 3.3/i386.

Portability problems not fixed by Gnulib:

10.265 fegetenv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fegetenv.html

Gnulib module: fenv-environment Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function clears all exception trap bits on some platforms: glibc 2.19/x86 64, Mac OS X 10.5/i386, Mac OS X 10.5/x86 64.

• This function does not save the exception trap bits on some platforms: AIX 7.3.

Portability problems not fixed by Gnulib:

10.266 fegetexceptflag

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fegetexceptflag.
html

Gnulib module: fenv-exceptions-state-c99 Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. Portability problems not fixed by Gnulib:

10.267 fegetmode

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Control-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.268 fegetround

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fegetround.html

Gnulib module: fenv-rounding Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. Portability problems not fixed by Gnulib:

10.269 feholdexcept

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/feholdexcept.
html

Gnulib module: fenv-environment Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function does not work on some platforms: glibc 2.5, FreeBSD 12.2/arm64.

• This function does not save the exception trap bits on some platforms: AIX 7.3.

• This function does not clear the exception trap bits on some platforms: musl libc, mingw.

• This function may fail on some platforms: MSVC 14. • Portability problems not fixed by Gnulib:

10.270 feof

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/feof.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.271 feraiseexcept

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/feraiseexcept.
html

Gnulib module: fenv-exceptions-tracking-c99 Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function does not detect failures on glibc 2.19/arm.

• This function does not trigger traps on Cygwin 3.4.9/x86 64. Portability problems not fixed by Gnulib:

10.272 ferror

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ferror.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.273 fesetenv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fesetenv.html

Gnulib module: fenv-environment Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function does not work on some platforms: FreeBSD 12.2/arm64.

• This function does not restore the floating-point exception trap bits on some platforms: musl libc/i386, musl libc/x86 64, AIX 7.3, Solaris 10 and 11, MSVC 14.

• The macro FE_DFL_ENV cannot be used because it leads to a link error on some platforms: NetBSD 10.0/hppa, NetBSD 10.0/sparc, Cygwin 2.9.0.

• This function, when called with FE_DFL_ENV argument, has no effect on the x86 mxcsr register and thus on floating-point operations performed in the SSE unit on some platforms: mingw 10.

Portability problems not fixed by Gnulib:

10.274 fesetexcept

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Status-bit-operations.
html.

Gnulib module: fenv-exceptions-tracking-c23

Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function triggers floating-point exception traps although it shouldn’t, on glibc 2.37/i386, glibc 2.37/powerpc.

Portability problems not fixed by Gnulib:

10.275 fesetexceptflag

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fesetexceptflag.
html

Gnulib module: fenv-exceptions-state-c99

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function triggers floating-point exception traps although it shouldn’t, on glibc 2.37/i386, glibc 2.37/x86 64, glibc 2.37/powerpc, musl libc, Mac OS X 10.5, Minix 3.3, mingw, Haiku.

• This function clears too many floating-point exception flags on glibc 2.37/alpha.

• This function loses the FE_INVALID flag on FreeBSD 14.0/powerpc64, NetBSD 9.3/powerpc.

• This function is also buggy on AIX 7.3.1.

10.276 fesetmode

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Control-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.277 fesetround

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fesetround.html

Gnulib module: fenv-rounding Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function does not work on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• The rounding mode has no effect on long double operations on some platforms: FreeBSD/arm64, NetBSD/sparc64, OpenBSD/arm64, OpenBSD/mips64.

10.278 fetestexcept

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fetestexcept.
html

Gnulib module: fenv-exceptions-tracking-c99 Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.

• This function clears the floating-point exception trap bits on some platforms: NetBSD 9.3/x86 64.

• This function is broken on some platforms: Minix 3.3/i386. Portability problems not fixed by Gnulib:

10.279 fetestexceptflag

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Status-bit-operations.
html.

Gnulib module: fenv-exceptions-state-c23 Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

10.280 feupdateenv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/feupdateenv.html

Gnulib module: fenv-environment Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 14, Android 4.4.

• This function crashes when given the argument FE_DFL_ENV on some platforms: glibc 2.37/riscv64.

• This function does not work on some platforms: glibc 2.5/ia64, FreeBSD 12.2/arm64.

• This function forgets about the currently set floating-point exception flags on some platforms: Mac OS X 10.5/i386, Mac OS X 10.5/x86 64.

• This function does not restore the floating-point exception trap bits on some platforms: musl libc/i386, musl libc/x86 64, AIX 7.3, Solaris 10 and 11, mingw 10.

• This function does not trigger traps on glibc 2.37/hppa, musl libc/s390x, NetBSD 10.0/powerpc.

• This function may fail on some platforms: MSVC 14.

Portability problems not fixed by Gnulib:

10.281 fexecve

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fexecve.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 14, Android 8.1.

10.282 fflush

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fflush.html

Gnulib module: fflush Portability problems fixed by Gnulib:

• fflush followed by fseek or fseeko, applied to an input stream, should have the effect of positioning the underlying file descriptor. It doesn’t do this on some platforms: glibc 2.34, FreeBSD 14.0, and others.

• fflush on an input stream changes the position of the stream to the end of the previous buffer, on some platforms: mingw, MSVC 14.

• fflush on an input stream right after ungetc does not discard the ungetc buffer, on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Cygwin 1.5.25-10.

Portability problems not fixed by Gnulib:

• fflush, ftell, ftello, fgetpos behave incorrectly on input streams that are opened in O_TEXT mode and whose contents contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• This function crashes if the stream’s file descriptor has already been closed, if

MSVC_INVALID_PARAMETER_HANDLING is HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_

HANDLING, on some platforms: MSVC 14.

• fflush on an input stream right after ungetc does not discard the ungetc buffer, on some platforms: AIX 5.1, HP-UX 11, Solaris 11 2010-11, mingw, MSVC 14.

10.283 ffs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ffs.html

Gnulib module: ffs Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• This function is only defined as an inline function on some platforms: Android 13.

10.284 fgetc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fgetc.html

Gnulib module: stdio, nonblocking Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• C99 and POSIX.1-2001 and later require end-of-file to be sticky, that is, they require this function to act as if it reads end-of-file if feof would return nonzero. However, on some systems this function attempts to read from the underlying file descriptor even if the stream’s end-of-file indicator is set. These systems include glibc and default Solaris.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• This function crashes if the stream’s file descriptor has already been closed, if

 MSVC_INVALID_PARAMETER_HANDLING is HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_

HANDLING, on some platforms: MSVC 14.

10.285 fgetpos

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fgetpos.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• fflush, ftell, ftello, fgetpos behave incorrectly on input streams that are opened in O_TEXT mode and whose contents contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.

• This function mistakenly succeeds on pipes on some platforms: mingw 10.

10.286 fgets

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html

Gnulib module: stdio, nonblocking Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• C99 and POSIX.1-2001 and later require end-of-file to be sticky, that is, they require this function to act as if it reads end-of-file if feof would return nonzero. However, on some systems this function attempts to read from the underlying file descriptor even if the stream’s end-of-file indicator is set. These systems include glibc and default Solaris.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

10.287 fgetwc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fgetwc.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.288 fgetws

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fgetws.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.289 fileno

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fileno.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.290 flockfile

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/flockfile.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.291 floor

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/floor.html

Gnulib module: floor or floor-ieee Portability problems fixed by either Gnulib module floor or floor-ieee: Portability problems fixed by Gnulib module floor-ieee: Portability problems not fixed by Gnulib:

10.292 floorf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/floorf.html

Gnulib module: floorf or floorf-ieee Portability problems fixed by either Gnulib module floorf or floorf-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems fixed by Gnulib module floorf-ieee: Portability problems not fixed by Gnulib:

10.293 floorl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/floorl.html

Gnulib module: floorl or floorl-ieee Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.294 fma

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fma.html

Gnulib module: fma Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

• This function produces wrong results on some platforms: glibc 2.11, Mac OS X 10.5, FreeBSD 6.4/x86, NetBSD 8.0, OpenBSD 7.4/arm64, Cygwin 1.5, mingw. Portability problems not fixed by Gnulib:

10.295 fmaf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmaf.html

Gnulib module: fmaf Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

• This function produces wrong results on some platforms: glibc 2.11, Mac OS X 10.5, FreeBSD 6.4/x86, FreeBSD 12.2/arm, OpenBSD 7.4/arm64, Cygwin 1.5, mingw. Portability problems not fixed by Gnulib:

• This function produces wrong results on some platforms: musl libc/powerpc64le when emulated by QEMU 5.0.0.

10.296 fmal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmal.html

Gnulib module: fmal Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

• This function produces wrong results on some platforms: glibc 2.17, macOS 10.13, FreeBSD 6.4/x86, OpenBSD 7.4/arm64, mingw. Portability problems not fixed by Gnulib:

10.297 fmax

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmax.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.298 fmaxf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmaxf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.299 fmaxl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmaxl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

10.300 fmaxmag

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.301 fmaxmagf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.302 fmaxmagl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.303 fmemopen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14, Android 5.1.

10.304 fmin

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmin.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.305 fminf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fminf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.306 fminl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fminl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

10.307 fminmag

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.308 fminmagf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.309 fminmagl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.310 fmod

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmod.html

Gnulib module: fmod or fmod-ieee Portability problems fixed by either Gnulib module fmod or fmod-ieee: Portability problems fixed by Gnulib module fmod-ieee:

• This function has problems when the first argument is minus zero on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.311 fmodf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmodf.html

Gnulib module: fmodf or fmodf-ieee Portability problems fixed by either Gnulib module fmodf or fmodf-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems fixed by Gnulib module fmodf-ieee:

• This function has problems when the first argument is minus zero on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.312 fmodl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmodl.html

Gnulib module: fmodl or fmodl-ieee Portability problems fixed by either Gnulib module fmodl or fmodl-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function is not declared and does not work on some platforms: AIX 5.1. Portability problems fixed by Gnulib module fmodl-ieee:

• This function has problems when the first argument is minus zero on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.313 fmtmsg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fmtmsg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.314 fmul

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.315 fmull

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.316 fnmatch

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fnmatch.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fnmatch-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Wildcard-Matching.
 html,

• man fnmatch.

Gnulib module: fnmatch or fnmatch-gnu Portability problems fixed by either Gnulib module fnmatch or fnmatch-gnu:

• This function is missing on some platforms: mingw, MSVC 14.

• The "?" pattern character fails to match characters outside the single-byte range on some platforms: NetBSD 10.0, Android 13.

• The "?" pattern character fails to match characters outside the Unicode BMP on some platforms: Solaris 10, Cygwin 3.4.6, MSVC, 32-bit AIX.

• In the pattern, negated character ranges (such as [!a-z]) are not supported on some platforms: Solaris 11.4.

• In the pattern, character classes (such as [:alnum:]) inside bracket expressions are not supported on some platforms: FreeBSD 13.2, NetBSD 10.0, Solaris 11 OpenIndiana, Cygwin 3.4.6.

• In the pattern, character classes (such as [:alnum:]) inside bracket expressions fail to match characters outside the single-byte range on some platforms: Android 13.

• The character class [:cntrl:] matches the empty string on some platforms: Solaris 11.4.

• Ranges that start or end with a backslash don’t work right on some platforms: glibc 2.3.3.

• In the pattern, an opening bracket without closing bracket does not match a literal '[' on some platforms: glibc 2.12, macOS 12.5, NetBSD 10.0.

Portability problems fixed by Gnulib module fnmatch-gnu:

• This function does not support the flags FNM_LEADING_DIR and FNM_CASEFOLD on some platforms: AIX 7.2, HP-UX 11.31, Solaris 10.

• The flag FNM_CASEFOLD does not work in many situations on some platforms: NetBSD 10.0.

• The flag FNM_CASEFOLD does not work for multibyte characters consisting of more than one byte on some platforms: Android 13.

• This function does not support the flag FNM_EXTMATCH on all non-glibc platforms: musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, Minix 3.3, AIX 7.2, HP-UX 11.31, Solaris 11.4, Cygwin 3.4.6, Android 13.

• This function does not support the flag FNM_FILE_NAME as an alias of FNM_PATHNAME on some platforms: NetBSD 10.0, AIX 7.2, HP-UX 11.31, Solaris 10.

Portability problems not fixed by Gnulib:

Note: Gnulib’s replacement function has some limitations:

• It does not implement patterns with collating elements (such as "[[.ch.]]") or equivalence classes (such as "[[=a=]]").

10.317 fopen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html

Gnulib module: fopen or fopen-gnu

Portability problems fixed by either Gnulib module fopen or fopen-gnu:

• This function does not fail when the file name argument ends in a slash and (without the slash) names a nonexistent file or a file that is not a directory, on some platforms: HP-UX 11.00, AIX 7.1, Solaris 9.

• On platforms where off_t is a 32-bit type, fopen may not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• On Windows platforms (excluding Cygwin), this function does usually not recognize the /dev/null filename.

Portability problems fixed by Gnulib module fopen-gnu:

• This function does not support the mode character ‘x’ (corresponding to O_EXCL), introduced in ISO C11, on some platforms: FreeBSD 8.2, NetBSD 6.1, OpenBSD 5.6, Minix 3.2, AIX 6.1, HP-UX 11.31, Solaris 11.3, Cygwin 1.7.16 (2012), mingw, MSVC 14.

• This function does not support the mode character ‘e’ (corresponding to O_CLOEXEC), introduced into a future POSIX revision through https://www.austingroupbugs. net/view.php?id=411, on some platforms: glibc 2.6, macOS 11.1, FreeBSD 9.0, NetBSD 5.1, OpenBSD 5.6, Minix 3.2, AIX 7.2, HP-UX 11.31, Solaris 11.3, Cygwin 1.7.16 (2012), mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows, this function returns a file stream in “text” mode by default; this means that it translates '\n' to CR/LF by default. Use the "b" flag if you need reliable binary I/O.

• On Windows platforms (excluding Cygwin), this function fails to open directories for reading. Such streams have implementation-defined semantics on other platforms. To avoid directory streams with a consistent error message, use fstat after open and

fdopen, rather than fopen and fileno.

10.318 fork

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• On some platforms, fork followed by a call of the exec family (execl, execlp, execle, execv, execvp, or execve) is less efficient than vfork followed by the same call. vfork is a variant of fork that has been introduced to optimize the fork/exec pattern.

• On Windows platforms (excluding Cygwin), this function is not implemented; use _ spawnvp instead.

10.319 fpathconf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fpathconf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.320 fpclassify

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fpclassify.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 9.0.

10.321 fprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fprintf.html

Gnulib module: fprintf-posix or fprintf-gnu or stdio, nonblocking, sigpipe Portability problems fixed by either Gnulib module fprintf-posix or fprintf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

Portability problems fixed by Gnulib module fprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module fprintf-posix or fprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14.

Portability problems fixed by Gnulib module stdio or fprintf-posix or fprintf-gnu, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio or fprintf-posix or fprintf-gnu, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• Attempting to write to a read-only stream fails with EOF but does not set the error flag for ferror on some platforms: glibc 2.13, cygwin 1.7.9.

10.322 fputc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fputc.html

Gnulib module: stdio, nonblocking, sigpipe Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

• This function crashes if the stream’s file descriptor has already been closed, if

 MSVC_INVALID_PARAMETER_HANDLING is HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_

HANDLING, on some platforms: MSVC 14.

10.323 fputs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fputs.html

Gnulib module: stdio, nonblocking, sigpipe Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.324 fputwc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fputwc.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.325 fputws

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fputws.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.326 fread

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fread.html

Gnulib module: stdio, nonblocking Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• C99 and POSIX.1-2001 and later require end-of-file to be sticky, that is, they require this function to act as if it reads end-of-file if feof would return nonzero. However, on some systems this function attempts to read from the underlying file descriptor even if the stream’s end-of-file indicator is set. These systems include glibc and default Solaris.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• This function crashes if the stream’s file descriptor has already been closed, if

 MSVC_INVALID_PARAMETER_HANDLING is HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_

HANDLING, on some platforms: MSVC 14.

10.327 free

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/free.html

Gnulib module: free-posix Portability problems fixed by Gnulib:

• This function may clobber errno on many platforms: glibc 2.32, Mac OS X, FreeBSD, NetBSD, OpenBSD 4.4, Minix, AIX, HP-UX, Cygwin, mingw, MSVC. Portability problems not fixed by Gnulib:

10.328 freeaddrinfo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/freeaddrinfo.
html

Gnulib module: getaddrinfo Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.11, Cygwin 1.5.x, mingw, MSVC 14.

• On Windows, this function is declared in <ws2tcpip.h> rather than in <netdb.h>.

• On Windows, in 32-bit mode, this function is defined with a calling convention that is different from cdecl. Portability problems not fixed by Gnulib:

10.329 freelocale

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/freelocale.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 9.0, NetBSD 5.0, OpenBSD 6.1, Minix 3.1.8, AIX 6.1, HP-UX 11, Solaris 11.3, Cygwin 2.5.x, mingw, MSVC 14, Android 4.4.

• This function is useless because the locale_t type is not defined on some platforms: z/OS.

• This function may cause crashes in subsequent newlocale invocations on some platforms: Haiku.

10.330 freopen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/freopen.html

Gnulib module: freopen Portability problems fixed by Gnulib:

• On some platforms, if stream does not already have an open file descriptor, freopen returns the stream without opening the file: glibc 2.24.

• On platforms where off_t is a 32-bit type, freopen may not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• On Windows platforms (excluding Cygwin), this function does usually not recognize the /dev/null filename.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• This function does not support a NULL file name argument on some platforms: OpenBSD 4.9, AIX 7.1, HP-UX 11.23, Solaris 10, mingw, MSVC 14.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a nonexistent file or a file that is not a directory, on some platforms: HP-UX 11.00, Solaris 9.

• Applications should not assume that fileno(f) will be the same before and after a call to freopen(name,mode,f). However, the module freopen-safer can at least protect

  stdin, stdout, and stderr.

10.331 frexp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/frexp.html

Gnulib module: frexp

Portability problems fixed by Gnulib:

• This function does not work on denormalized numbers on some platforms: NetBSD 3.0.

• This function does not work on negative zero on some platforms: NetBSD 4.99, MSVC 14.

• This function does not work on infinite numbers on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

10.332 frexpf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/frexpf.html

Gnulib module: frexpf

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function does not work on negative zero on some platforms: mingw.

• This function does not work on infinite numbers on some platforms: mingw.

10.333 frexpl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/frexpl.html

Gnulib module: frexpl

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function does not work on finite numbers on some platforms: AIX 5.1, MSVC 14.

• This function does not work on denormalized numbers on some platforms: macOS 10.13/i386.

• This function does not work on infinite numbers on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

10.334 fromfp

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.335 fromfpf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.336 fromfpl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.337 fromfpx

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.338 fromfpxf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.339 fromfpxl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.340 fscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fscanf.html

Gnulib module: stdio, nonblocking Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• C99 and POSIX.1-2001 and later require end-of-file to be sticky, that is, they require this function to act as if it reads end-of-file if feof would return nonzero. However, on some systems this function attempts to read from the underlying file descriptor even if the stream’s end-of-file indicator is set. These systems include glibc and default Solaris.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows, this function doesn’t support the hh, ll, j, t, z size specifiers.

10.341 fseek

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html

Gnulib module: fseek Portability problems fixed by Gnulib:

• This function mistakenly succeeds on pipes on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On platforms where long is a 32-bit type, fseek does not work correctly with files 2 GiB and larger, even when the AC_SYS_LARGEFILE macro is used. The fix is to use fseeko instead.

10.342 fseeko

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fseeko.html

Gnulib module: fseeko Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• The declaration of fseeko in <stdio.h> is not enabled by default on some platforms: glibc 2.3.6.

• This function fails on seekable stdin, stdout, and stderr: cygwin <= 1.5.24.

• On platforms where off_t is a 32-bit type, fseeko does not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

10.343 fsetpos

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsetpos.html

Gnulib module: —

Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

10.344 fstat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fstat.html

Gnulib module: fstat

Portability problems fixed by Gnulib:

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

• On platforms where off_t is a 32-bit type, fstat may not correctly report the size of files or block devices 2 GiB and larger.. See Section 14.2 [Large File Support], page 770.

• On Linux/x86 and Linux/x86 64, applications compiled in 32-bit mode cannot access files that happen to have a 64-bit inode number. This can occur with file systems such as XFS (typically on large disks) and NFS. See Section 14.2 [Large File Support], page 770.

• On macOS 12.6, when this function yields a timestamp with a nonpositive tv_sec value, tv_nsec might be in the range −999999999..−1, representing a negative nanoseconds offset from tv_sec. Solaris 11.4 is similar, except that tv_sec might also be −1000000000.

• The st_atime, st_ctime, st_mtime fields are affected by the current time zone and by the DST flag of the current time zone on some platforms: mingw, MSVC 14 (when the environment variable TZ is set).

Portability problems not fixed by Gnulib:

• See Section 9.66 [sys/stat.h], page 79, for general portability problems with struct

stat.

• On Cygwin, fstat applied to the file descriptors 0 and 1, returns different st_ino values, even if standard input and standard output are not redirected and refer to the same terminal.

10.345 fstatat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fstatat.html

Gnulib module: fstatat

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• On platforms where off_t is a 32-bit type, fstatat may not correctly report the size of files or block devices larger than 2 GB. See Section 14.2 [Large File Support], page 770.

• On some platforms, fstatat(fd,"file/",buf,flag) succeeds instead of failing with ENOTDIR. Solaris 9.

• For symlinks, when the argument ends in a slash, some platforms don’t dereference the argument: Solaris 9.

• On macOS 12.6, when this function yields a timestamp with a nonpositive tv_sec value, tv_nsec might be in the range −999999999..−1, representing a negative nanoseconds offset from tv_sec. Solaris 11.4 is similar, except that tv_sec might also be −1000000000.

Portability problems not fixed by Gnulib:

• This function does not fail when the second argument is an empty string on some platforms, even when AT_EMPTY_PATH is not used: glibc 2.7, Linux 2.6.38.

• This function sets st_ino only to the low-order 32 bits of the inode number of a socket or pipe, which thus can disagree with the st_ino obtained by fstat: macOS 14.

• See Section 9.66 [sys/stat.h], page 79, for general portability problems with struct

stat.

10.346 fstatvfs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fstatvfs.html

Gnulib module: —

Portability problems fixed by Gnulib:

• On platforms where f_blocks in ‘struct statvfs’ is a 32-bit value, this function may not work correctly on files systems larger than 4 TiB. See Section 14.2 [Large File Support], page 770. This affects glibc/Hurd, HP-UX 11, Solaris.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, mingw, MSVC 14, Android 4.3.

10.347 fsub

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.348 fsubl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Misc-FP-Arithmetic.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.349 fsync

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html

Gnulib module: fsync Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• If the argument is a read-only file descriptor, this function fails with EBADF on some platforms: AIX 7.2, Cygwin 2.9.

10.350 ftell

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftell.html

Gnulib module: ftell Portability problems fixed by Gnulib:

• This function mistakenly succeeds on pipes on some platforms: mingw, MSVC 14.

• This function produces incorrect results after putc that followed a getc call that reached EOF on some platforms: Solaris 11 2010-11.

• This function, when invoked after ungetc, throws away the ungetc buffer, changes the stream’s file position, and returns the wrong position on some platforms: macOS 10.15 and newer.

• This function mistakenly succeeds on pipes on some platforms: mingw 10. Portability problems not fixed by Gnulib:

• This function produces incorrect results immediately after fseek on some platforms: HP-UX 11.

• fflush, ftell, ftello, fgetpos behave incorrectly on input streams that are opened in O_TEXT mode and whose contents contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.

• On platforms where long is a 32-bit type, ftell does not work correctly with files 2 GiB and larger, even when the AC_SYS_LARGEFILE macro is used. The fix is to use ftello instead.

10.351 ftello

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftello.html

Gnulib module: ftello Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• The declaration of ftello in <stdio.h> is not enabled by default on some platforms: glibc 2.3.6.

• This function produces incorrect results after putc that followed a getc call that reached EOF on some platforms: Solaris 11 2010-11.

• This function, when invoked after ungetc, throws away the ungetc buffer, changes the stream’s file position, and returns the wrong position on some platforms: macOS 10.15 and newer.

• This function fails on seekable stdin, stdout, and stderr: cygwin <= 1.5.24.

• This function mistakenly succeeds on pipes on some platforms: mingw 10.

• On platforms where off_t is a 32-bit type, ftello does not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function produces incorrect results immediately after fseek on some platforms: HP-UX 11.

• fflush, ftell, ftello, fgetpos behave incorrectly on input streams that are opened in O_TEXT mode and whose contents contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.

10.352 ftok

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftok.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.353 ftruncate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html

Gnulib module: ftruncate Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14.

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

10.354 ftrylockfile

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftrylockfile.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.355 ftw

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftw.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14, Android 4.1.

• POSIX says this function is obsolescent and it is planned to be removed in POSIX 202x. Use the Gnulib module fts instead.

10.356 funlockfile

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/funlockfile.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.357 futimens

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html

Gnulib module: futimens

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.5, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.3. However, the replacement function may end up truncating timestamps to worse resolution than supported by the file system.

• This function returns a bogus value instead of failing with ENOSYS on some platforms: Linux kernel 2.6.21.

• When using UTIME_OMIT or UTIME_NOW, some systems require the tv_sec argument to be 0, and don’t necessarily handle all file permissions in the manner required by POSIX: Linux kernel 2.6.25.

• When using UTIME_OMIT for the modification time, but specifying an access time, some systems fail to update the change time: Linux kernel 2.6.32, macOS 11.1, NetBSD 10.0, Solaris 11.1.

• Passing AT_FDCWD as the fd argument does not properly fail with EBADF on some systems: glibc 2.11, musl libc, Solaris 11.

Portability problems not fixed by Gnulib:

• Some platforms lack the ability to change the timestamps of a file descriptor, so the replacement can fail with ENOSYS; the gnulib module ‘utimens’ provides a more reliable interface fdutimens.

• The mere act of using stat modifies the access time of directories on some platforms, so utimensat can only effectively change directory modification time: Cygwin 1.5.x.

10.358 fwide

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fwide.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x, MSVC 14.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• fwide is not guaranteed to be able to change a file stream’s mode to a different mode than the current one.

10.359 fwprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fwprintf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• In the C or POSIX locales, the %c and %s conversions may fail on some platforms: glibc 2.35.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.360 fwrite

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fwrite.html

Gnulib module: stdio, nonblocking, sigpipe Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

• This function crashes if the stream’s file descriptor has already been closed, if

 MSVC_INVALID_PARAMETER_HANDLING is HAIRY_LIBRARY_HANDLING or SANE_LIBRARY_

HANDLING, on some platforms: MSVC 14.

10.361 fwscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/fwscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fwscanf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.362 gai_strerror

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gai_strerror.
html

Gnulib module: getaddrinfo Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.11, Cygwin 1.5.x.

• This function is only available in <ws2tcpip.h> on some platforms: mingw, MSVC 14.

• This function’s return type is char * instead of const char * on some platforms: AIX 7.1, HP-UX 11, Solaris 9, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

10.363 getaddrinfo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getaddrinfo.html

Gnulib module: getaddrinfo Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.11, Cygwin 1.5.x, mingw, MSVC 14.

• On Windows, this function is declared in <ws2tcpip.h> rather than in <netdb.h>.

• On Windows, in 32-bit mode, this function is defined with a calling convention that is different from cdecl.

Portability problems not fixed by Gnulib:

• Unlike glibc’s implementation, gnulib’s replacement does not support internationalized domain names (IDN) encoding.

10.364 getc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getc.html

Gnulib module: stdio, nonblocking Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• C99 and POSIX.1-2001 and later require end-of-file to be sticky, that is, they require this function to act as if it reads end-of-file if feof would return nonzero. However, on some systems this function attempts to read from the underlying file descriptor even if the stream’s end-of-file indicator is set. These systems include glibc and default Solaris.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

10.365 getc_unlocked

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getc_unlocked.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.366 getchar

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getchar.html

Gnulib module: stdio, nonblocking Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• C99 and POSIX.1-2001 and later require end-of-file to be sticky, that is, they require this function to act as if it reads end-of-file if feof would return nonzero. However, on some systems this function attempts to read from the underlying file descriptor even if the stream’s end-of-file indicator is set. These systems include glibc and default Solaris.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

10.367 getchar_unlocked

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
getchar_unlocked.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.368 getcwd

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getcwd.html

Gnulib module: getcwd or getcwd-lgpl Portability problems fixed by either Gnulib module getcwd or getcwd-lgpl:

• This function is declared in different header files (namely, <io.h> or <direct.h>) on some platforms: mingw, MSVC 14.

• On glibc and Solaris 11.4 platforms, getcwd (NULL, n) allocates memory for the result. On some other platforms, this call is not allowed.

• On some platforms, the prototype for getcwd uses int instead of size_t for the size argument when using non-standard headers, and the declaration is missing from <unistd.h>: mingw, MSVC 14.

• On some platforms, getcwd (buf, 0) crashes: MSVC 14.

• On some platforms, getcwd (buf, 0) fails with ERANGE instead of the required EINVAL: mingw.

Portability problems fixed by Gnulib module getcwd:

• This function does not handle long file names (greater than PATH_MAX) correctly on some platforms: glibc on Linux 2.4.20, musl libc 1.2.2/powerpc64le, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, AIX 7.1.

Portability problems not fixed by Gnulib:

• When using getcwd(NULL, nonzero), some platforms, such as glibc or cygwin, allocate exactly nonzero bytes and fail with ERANGE if it was not big enough, while other platforms, such as FreeBSD, mingw, or MSVC 14, ignore the size argument and allocate whatever size is necessary. If this call succeeds, an application cannot portably access beyond the string length of the result.

10.369 getdate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getdate.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Gnulib provides a module parse-datetime that contains a function parse_datetime that has similar functionality as the getdate function.

10.370 getdate_err

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getdate_err.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 10.13, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.371 getdelim

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getdelim.html

Gnulib module: getdelim Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14, Android 4.2.

• This function makes out-of-bounds reads on some platforms: macOS 10.13.

• This function crashes when passed a pointer to a NULL buffer together with a pointer to a non-zero buffer size on some platforms: FreeBSD 8.0. Portability problems not fixed by Gnulib:

• This function has quadratic running time for long lines on some platforms: uClibc 0.9.31.

10.372 getegid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getegid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.373 getenv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getenv.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.374 geteuid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/geteuid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.375 getgid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.376 getgrent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgrent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.377 getgrgid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgrgid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.378 getgrgid_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgrgid_r.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function has an incompatible declaration on some platforms: Solaris 11.3 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 6.0.

10.379 getgrnam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgrnam.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.380 getgrnam_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgrnam_r.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function has an incompatible declaration on some platforms: Solaris 11.3 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 6.0.

10.381 getgroups

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgroups.html

Gnulib module: getgroups

Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• On some platforms, this function fails to reject a negative count, even though that is less than the size that would be returned: macOS 11.1, FreeBSD 13.0.

• On NeXTstep 3.2, getgroups (0, NULL) always fails. See macro

 ‘AC_FUNC_GETGROUPS’.

• On very old systems, this function operated on an array of ‘int’, even though that was a different size than an array of ‘gid_t’.

Portability problems not fixed by Gnulib:

• This function is unsafe to call between fork and exec if the parent process is multithreaded.

• It is unspecified whether the effective group id will be included in the returned list, nor whether the list will be sorted in any particular order. For that matter, some platforms include the effective group id twice, if it is also a member of the current supplemental group ids.

The Gnulib module mgetgroups provides a similar API.

10.382 gethostent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gethostent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14.

10.383 gethostid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gethostid.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.384 gethostname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gethostname.html

Gnulib module: gethostname Portability problems fixed by Gnulib:

• This function is declared in a different header file (namely, <winsock2.h>) on some platforms: MSVC 14.

• On mingw and MSVC 14, this function has a prototype that differs from that specified by POSIX, and it is defined only in the ws2 32 library. Portability problems not fixed by Gnulib:

• This function’s second argument type is int instead of size_t on some platforms: Solaris 10.

• If the given buffer is too small for the host name, some implementations fail with EINVAL, instead of returning a truncated host name.

10.385 getitimer

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getitimer.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• POSIX says this function is obsolescent and it is planned to be removed in POSIX 202x. Use the function timer_gettime instead.

10.386 getline

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getline.html

Gnulib module: getline Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14, Android 4.2.

• This function is missing a declaration on some platforms: AIX 7.1.

• Some platforms provide a function by this name but with the wrong signature, for example in -linet.

• This function crashes when passed a pointer to a NULL buffer together with a pointer to a non-zero buffer size on some platforms: FreeBSD 8.0. Portability problems not fixed by Gnulib:

• This function has quadratic running time for long lines on some platforms: uClibc 0.9.31.

10.387 getlogin

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html

Gnulib module: getlogin Portability problems fixed by Gnulib:

• This function is missing on some platforms: older mingw, MSVC 14.

• This function is not declared unless _POSIX is defined on some platforms: mingw. Portability problems not fixed by Gnulib:

• This function returns an empty string even when standard input is a tty on some platforms: HP-UX 11.11.

10.388 getlogin_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin_r.html

Gnulib module: getlogin r Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14, Android 8.1.

• This function is not declared unless _REENTRANT is defined, on some platforms: HP-UX 11.

• This function returns a truncated result, instead of failing with error code ERANGE, when the buffer is not large enough, on some platforms: macOS 11.1. Portability problems not fixed by Gnulib:

• This function has an incompatible declaration on some platforms: FreeBSD 12.0, MidnightBSD 2.0, Solaris 11.4 (when _POSIX_PTHREAD_SEMANTICS is not defined).

• This function fails even when standard input is a tty on some platforms: HP-UX 11.11.

• This function fails with error code EINVAL instead of ERANGE when the second argument is zero on some platforms: HP-UX 11.31.

• This function fails with error code ENOMEM instead of ERANGE on some platforms: Haiku.

10.389 getmsg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getmsg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.390 getnameinfo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getnameinfo.html

Gnulib module: getaddrinfo Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.11, Cygwin 1.5.x, mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.391 getnetbyaddr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetbyaddr.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 2.9, mingw, MSVC 14.

10.392 getnetbyname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetbyname.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 2.9, mingw, MSVC 14.

10.393 getnetent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 2.9, mingw, MSVC 14, Android 8.1.

10.394 getopt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
libutil-getopt-3.html

Gnulib module: getopt-posix or getopt-gnu The module getopt-gnu has support for “long options” and for “options that take

optional arguments”. Compared to the API defined by POSIX, it adds a header file

<getopt.h> and a function getopt_long.

Portability problems fixed by either Gnulib module getopt-posix or getopt-gnu:

• This function is missing on some platforms: MSVC 14.

• The value of optind after a missing required argument is wrong on some platforms: macOS 11.1, AIX 7.1, mingw.

Portability problems fixed by Gnulib module getopt-gnu:

• The function getopt does not support the ‘+’ flag in the options string on some platforms: macOS 11.1, AIX 5.2, HP-UX 11, Solaris 11 2010-11.

• The function getopt does not obey the combination of ‘+’ and ‘:’ flags in the options string on some platforms: glibc 2.11.

• The function getopt does not obey the ‘-’ flag in the options string when POSIXLY_ CORRECT is set on some platforms: Cygwin 1.7.0.

• The function getopt does not support options with optional arguments on some platforms: macOS 11.1, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11 2010-11, Cygwin 1.5.x.

• The function getopt_long is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 9, MSVC 14.

• The function getopt_long does not support abbreviated long options where all disambiguations are equivalent on some platforms: OpenBSD 5.0.

• The function getopt_long_only is missing on some platforms: FreeBSD 5.2.1, NetBSD 10.0, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 14.

• This function crashes if the option string includes W; on some platforms: glibc 2.14.

Portability problems not fixed by Gnulib:

• The default behavior of the glibc implementation of getopt allows mixing option and non-option arguments on the command line in any order. Other implementations, such as the one in Cygwin, enforce strict POSIX compliance: they require that the option arguments precede the non-option arguments. This is something to watch out in your program’s testsuite.

• The glibc implementation allows a complete reset of the environment, including rechecking for POSIXLY_CORRECT, by setting optind to 0. Several BSD implementations provide optreset, causing a reset by setting it non-zero, although it does not necessarily re-read POSIXLY_CORRECT. Solaris getopt does not support either reset method, but does not maintain state that needs the extra level of reset.

• On some platforms, this function does not set the stream error indicator on attempts to write to a read-only stream: glibc 2.13, Cygwin 1.7.9.

10.395 getpayload

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: getpayload

Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function returns a wrong result for non-NaN arguments on some platforms: glibc 2.31.

Portability problems not fixed by Gnulib:

10.396 getpayloadf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: getpayloadf

Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function returns a wrong result for non-NaN arguments on some platforms: glibc 2.31.

Portability problems not fixed by Gnulib:

10.397 getpayloadl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: getpayloadl

Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function returns a wrong result for non-NaN arguments on some platforms: glibc 2.31.

10.398 getpeername

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpeername.html

Gnulib module: getpeername Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

• On HP-UX 11, in 64-bit mode, when the macro _HPUX_ALT_XOPEN_SOCKET_API is not defined, this function behaves incorrectly because it is declared to take a pointer to a 64-bit wide socklen_t entity but in fact considers it as a pointer to a 32-bit wide

 unsigned int entity.

Portability problems not fixed by Gnulib:

• Some platforms don’t have a socklen_t type; in this case this function’s third argument type is ‘int *’.

10.399 getpgid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpgid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.400 getpgrp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpgrp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.401 getpid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.402 getpmsg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpmsg.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.403 getppid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getppid.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.404 getpriority

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpriority.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.405 getprotobyname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getprotobyname.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.406 getprotobynumber

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
getprotobynumber.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.407 getprotoent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getprotoent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 8.1.

10.408 getpwent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpwent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.409 getpwnam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpwnam.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.410 getpwnam_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpwnam_r.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function has an incompatible declaration on some platforms: Solaris 11.3 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14, Android 3.0.

10.411 getpwuid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpwuid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is unsafe to call between fork and exec if the parent process is multithreaded. Instead, use getpwuid_r prior to forking.

• This function is missing on some platforms: mingw, MSVC 14.

10.412 getpwuid_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpwuid_r.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function has an incompatible declaration on some platforms: Solaris 11.3 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

Portability problems not fixed by Gnulib:

• This function is unsafe to call between fork and exec if the parent process is multithreaded. Use it prior to forking.

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14, Android 3.0.

10.413 getrlimit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getrlimit.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getrlimit-1.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where rlim_t is a 32-bit type, this function does not allow to retrieve limits larger than 4 GiB and larger, such as for RLIMIT FSIZE. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.414 getrusage

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getrusage.html

Gnulib module: getrusage Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• Many platforms don’t fill in all the fields of struct rusage with meaningful values.

10.415 gets

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gets.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is removed in POSIX.1-2024. Use the function fgets instead.

• This function should never be used, because it can overflow any given buffer.

• This function is missing on some platforms: OpenBSD 6.7, Solaris 11.4.

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

10.416 getservbyname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getservbyname.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.417 getservbyport

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getservbyport.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.418 getservent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getservent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.419 getsid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.1.

10.420 getsockname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockname.html

Gnulib module: getsockname Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

• On HP-UX 11, in 64-bit mode, when the macro _HPUX_ALT_XOPEN_SOCKET_API is not defined, this function behaves incorrectly because it is declared to take a pointer to a 64-bit wide socklen_t entity but in fact considers it as a pointer to a 32-bit wide

 unsigned int entity.

Portability problems not fixed by Gnulib:

• Some platforms don’t have a socklen_t type; in this case this function’s third argument type is ‘int *’.

10.421 getsockopt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getsockopt-1.html

Gnulib module: getsockopt Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

• On HP-UX 11, in 64-bit mode, when the macro _HPUX_ALT_XOPEN_SOCKET_API is not defined, this function behaves incorrectly because it is declared to take a pointer to a 64-bit wide socklen_t entity but in fact considers it as a pointer to a 32-bit wide

 unsigned int entity.

Portability problems not fixed by Gnulib:

• Some platforms don’t have a socklen_t type; in this case this function’s fifth argument type is ‘int *’.

• Many socket options are not available on all platforms.

10.422 getsubopt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html

Gnulib module: getsubopt Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

• This function is declared in unistd.h instead of stdlib.h on some platforms: Cygwin 1.7.1. Portability problems not fixed by Gnulib:

10.423 gettimeofday

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday.
html

Gnulib module: gettimeofday Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14.

• This function is declared with a nonstandard function prototype (only one argument, or “...” after the first argument) on some platforms.

• On some platforms, the second argument has type struct timezone* rather than void *, making it an error to redeclare the function with the POSIX signature: glibc. However, rather than penalize these systems with a replacement function, gnulib defines GETTIMEOFDAY_TIMEZONE to the appropriate type for use in avoiding a compiler warning if assigning gettimeofday to a function pointer.

• This function has only a precision of 15.6 milliseconds on some platforms: mingw. Portability problems not fixed by Gnulib:

• Behavior is non-portable if the second argument to gettimeofday is not NULL.

• This function is removed in POSIX.1-2024. Use the Gnulib module gettime or timespec_get instead. (POSIX recommends to use the function clock_gettime, but there is no corresponding Gnulib module for it yet.)

10.424 getuid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getuid.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.425 getutxent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getutxent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.426 getutxid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getutxid.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.427 getutxline

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getutxline.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.428 getwc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getwc.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.429 getwchar

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/getwchar.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.430 glob

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/glob.html

Gnulib module: glob Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 8.1.

• This function does not list symbolic links to nonexistent files among the results, on some platforms: glibc 2.26, AIX 7.2, HP-UX 11, Solaris 11.4.

• On platforms where off_t is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• Some platforms may store additional flags in the gl_flags field.

10.431 globfree

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/globfree.html

Gnulib module: glob Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 8.1. Portability problems not fixed by Gnulib:

10.432 gmtime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gmtime.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On some platforms, this function yields incorrect values for timestamps before the year 1: MacOS X 10.5, Solaris 11.3.

• On some platforms, this function returns NULL for arguments < -43200, that is, for timestamps before 1969-12-31 12:00:00 UTC: mingw, MSVC.

10.433 gmtime_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/gmtime_r.html

Gnulib module: time r Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is not declared unless _REENTRANT is defined, on some platforms: HP-UX 11. Portability problems not fixed by Gnulib:

• On some platforms, this function yields incorrect values for timestamps before the year 1: MacOS X 10.5, Solaris 11.3.

10.434 grantpt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/grantpt.html

Gnulib module: grantpt Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14, Android 4.4. Portability problems not fixed by Gnulib:

• This function reports success for invalid file descriptors on some platforms: OpenBSD, Cygwin 1.7.9, musl libc.

10.435 hcreate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/hcreate.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 8.1.

10.436 hdestroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/hdestroy.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 8.1.

10.437 hsearch

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/hsearch.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 8.1.

10.438 htonl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/htonl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, mingw, MSVC 14, Android 4.4.

10.439 htons

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/htons.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, mingw, MSVC 14, Android 4.4.

10.440 hypot

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/hypot.html

Gnulib module: hypot or hypot-ieee Portability problems fixed by either Gnulib module hypot or hypot-ieee: Portability problems fixed by Gnulib module hypot-ieee:

• When the arguments are mixed NaN and Infinity, this function returns a wrong value on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.441 hypotf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/hypotf.html

Gnulib module: hypotf or hypotf-ieee Portability problems fixed by either Gnulib module hypotf or hypotf-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 14.

• This function produces wrong values on some platforms: NetBSD 5.1, OpenBSD 4.9. Portability problems fixed by Gnulib module hypot-ieee:

• When the arguments are mixed NaN and Infinity, this function returns a wrong value on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.442 hypotl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/hypotl.html

Gnulib module: hypotl or hypotl-ieee Portability problems fixed by either Gnulib module hypotl or hypotl-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 14, Android 4.4.

• This function produces very imprecise results on some platforms: NetBSD 10.0, OpenBSD 5.1/SPARC.

Portability problems fixed by Gnulib module hypotl-ieee:

• When the arguments are mixed NaN and Infinity, this function returns a wrong value on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

10.443 iconv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iconv.html

Gnulib module: iconv Portability problems fixed by Gnulib:

• GNU libiconv is not found if installed in $PREFIX/lib.

Portability problems handled by Gnulib (in the sense that HAVE_ICONV does not get defined if the system’s iconv function has this problem):

• Failures are not distinguishable from successful returns on some platforms: macOS 14.4, AIX 5.1..7.2, Solaris 10.

• A buffer overrun can occur on some platforms: AIX 6.1..7.1.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 8.1, when GNU libiconv is not installed.

• This function was not correctly implemented in glibc versions before 2.2.

• When iconv encounters an input character that is valid but that cannot be converted to the output character set, glibc’s and GNU libiconv’s iconv stop the conversion. Some other implementations put an implementation-defined character into the output buffer. Gnulib provides higher-level facilities striconv and striconveh (wrappers around iconv) that deal with conversion errors in a platform independent way.

• This function returns a positive return value, instead of zero, when converting from ISO-8859-1 to UTF-8 on HP-UX 11.

10.444 iconv_close

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iconv_close.html

Gnulib module: iconv Portability problems fixed by Gnulib:

• GNU libiconv is not found if installed in $PREFIX/lib.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 8.1, when GNU libiconv is not installed.

10.445 iconv_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iconv_open.html

Gnulib module: iconv, iconv open, iconv open-utf

Portability problems fixed by either Gnulib module iconv or iconv_open:

• GNU libiconv is not found if installed in $PREFIX/lib.

Portability problems handled by either Gnulib module iconv or iconv_open (in the sense that HAVE_ICONV does not get defined if the system’s iconv_open function has this problem):

• No converter from EUC-JP to UTF-8 is provided on some platforms: HP-UX 11.

Portability problems fixed by Gnulib module iconv_open:

• This function recognizes only non-standard aliases for many encodings (not the IANA registered encoding names) on many platforms: AIX 5.1, HP-UX 11, Solaris 11 2010-11, z/OS.

Portability problems fixed by Gnulib module iconv_open-utf:

• This function does not support the encodings UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE on many platforms: AIX 5.1, HP-UX 11.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 8.1, when GNU libiconv is not installed.

• For some encodings A and B, this function cannot convert directly from A to B, although an indirect conversion from A through UTF-8 to B is possible. This occurs on some platforms: Solaris 11 2010-11. Gnulib provides a higher-level facility striconveh (a wrapper around iconv) that deals with this problem.

• The set of supported encodings and conversions is system dependent.

10.446 if_freenameindex

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
if_freenameindex.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, HP-UX 11.23, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.

• This is available only as a macro, rather than a function, on some platforms: OpenBSD 4.6, MirBSD 10.

10.447 if_indextoname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/if_indextoname.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.23, Cygwin 1.5.x, mingw, MSVC 14.

10.448 if_nameindex

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/if_nameindex.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.23, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.

10.449 if_nametoindex

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/if_nametoindex.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.23, Cygwin 1.5.x, mingw, MSVC 14.

10.450 ilogb

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ilogb.html

Gnulib module: ilogb Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9.

• This function returns a wrong result for a zero argument on some platforms: OpenBSD 6.7, AIX 5.1.

• This function returns a wrong result for denormalized arguments on some platforms: Mac OS X 10.5 64-bit, AIX 7.1 64-bit.

• This function returns a wrong result for an infinite argument on some platforms: NetBSD 7.1, OpenBSD 6.7.

• This function returns a wrong result for a NaN argument on some platforms: NetBSD 7.1, OpenBSD 6.7. Portability problems not fixed by Gnulib:

10.451 ilogbf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ilogbf.html

Gnulib module: ilogbf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

• This function returns a wrong result for a zero argument on some platforms: OpenBSD 6.7.

• This function returns a wrong result for an infinite argument on some platforms: NetBSD 7.1, OpenBSD 6.7. Portability problems not fixed by Gnulib:

10.452 ilogbl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ilogbl.html

Gnulib module: ilogbl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

• This function returns a wrong result for a zero argument on some platforms: Cygwin 2.9.

• This function returns a wrong result for a NaN argument on some platforms: Cygwin 3.4.6.

• This function returns a wrong result for denormalized arguments on some platforms: AIX 7.1 64-bit, Haiku 2017. Portability problems not fixed by Gnulib:

10.453 imaxabs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/imaxabs.html

Gnulib module: imaxabs Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 9, MSVC 9, Android 4.3.

Portability problems not fixed by Gnulib:

10.454 imaxdiv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/imaxdiv.html

Gnulib module: imaxdiv Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 9, MSVC 9, Android 4.3.

Portability problems not fixed by Gnulib:

10.455 inet_addr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_addr.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• POSIX 202x says this function is obsolescent and it is planned to be removed in a future version. Use the function inet_pton instead.

• On some old platforms, this function returns a ‘struct in_addr’ rather than a scalar

 type such as ‘unsigned int’ or ‘unsigned long’.
10.456 inet_ntoa

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_ntoa.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• POSIX 202x says this function is obsolescent and it is planned to be removed in a future version. Use the function inet_ntop instead.

• The inet_ntoa function need not be reentrant, and consequently is not required to be thread safe. Implementations of inet_ntoa typically write the timestamp into static buffer. If two threads call inet_ntoa at roughly the same time, you might end up with the wrong date in one of the threads, or some undefined string.

Note: inet_ntoa is specific for IPv4 addresses. A protocol independent function is

inet_ntop.

10.457 inet_ntop

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_ntop.html

Gnulib module: inet ntop Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.00, mingw, MSVC 14.

• This function is declared in <netdb.h> instead of <arpa/inet.h> on some platforms: NonStop Kernel.

• This function is declared in <ws2tcpip.h>, with a POSIX incompatible declaration, on some platforms: MSVC 14 on Windows >= Vista. Portability problems not fixed by Gnulib:

• This function’s fourth argument type is size_t instead of socklen_t on some platforms: Solaris 10.

10.458 inet_pton

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_pton.html

Gnulib module: inet pton Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.00, mingw, MSVC 14.

• This function is declared in <netdb.h> instead of <arpa/inet.h> on some platforms: NonStop Kernel.

• This function is declared in <ws2tcpip.h>, with a POSIX incompatible declaration, on some platforms: MSVC 14 on Windows >= Vista. Portability problems not fixed by Gnulib:

10.459 initstate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/initstate.html

Gnulib module: random Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• This function is not declared on some platforms: Cygwin 1.5.25. Portability problems not fixed by Gnulib:

• This function crashes if the state buffer is unaligned on some platforms: glibc 2.36/sparc.

• The first parameter is unsigned long instead of unsigned int on some platforms: MidnightBSD 2.0.

• The third parameter is long instead of size_t on some platforms: MidnightBSD 2.0.

• This function makes out-of-bounds writes on some platforms: Haiku.

10.460 insque

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/insque.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

10.461 ioctl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ioctl.html

LSB specification:

• https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/
 LSB-Core-generic/baselib-ioctl-2.html
• https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/
 LSB-Core-generic/baselib-ttyio-2.html
• https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/
 LSB-Core-generic/baselib-sockio-2.html

Gnulib module: ioctl Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), ioctl is called ioctlsocket, and error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

• The second parameter is of type unsigned long rather than int on some platforms: glibc 2.26, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Haiku 2017. Portability problems not fixed by Gnulib:

• Most ioctl requests are platform and hardware specific.

10.462 isalnum

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isalnum.html

Gnulib module: ctype Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib: Note: This function’s behaviour depends on the locale, but does not support the multi-

byte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isalnum

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswalnum This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isalnum

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isalnum’.
mb_isalnum

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_alnum

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-alnum’.

10.463 isalnum_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isalnum_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.464 isalpha

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isalpha.html

Gnulib module: ctype Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isalpha

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’. iswalpha This function operates in a locale dependent way, on wide characters. In order

to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isalpha

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isalpha’.
mb_isalpha

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_alpha

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-alpha’.

10.465 isalpha_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isalpha_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.466 isascii

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isascii.html

Gnulib module: ctype Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• This function is removed in POSIX.1-2024.

Note: This function’s behaviour depends on the locale, but requires special handling for the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are two alternative APIs:

c_isascii

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

mb_isascii

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

10.467 isastream

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isastream.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.468 isatty

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isatty.html

Gnulib module: isatty Portability problems fixed by Gnulib:

• This function is declared in a different header file (namely, <io.h>) on some platforms: MSVC 14.

• On native Windows, this function also returns true for character devices such as NUL.

• On native Windows, this function returns false for Cygwin consoles.

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

Portability problems not fixed by Gnulib:

10.469 isblank

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isblank.html

Gnulib module: isblank Portability problems fixed by Gnulib:

• This function is missing on some platforms: Solaris 9, mingw, MSVC 9.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isblank

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’. iswblank This function operates in a locale dependent way, on wide characters. In order

to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isblank

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isblank’.
mb_isblank

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_blank

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-blank’.

10.470 isblank_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isblank_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.471 iscntrl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iscntrl.html

Gnulib module: ctype Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_iscntrl

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswcntrl This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32iscntrl

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32iscntrl’.
mb_iscntrl

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_cntrl

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-cntrl’.

10.472 iscntrl_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iscntrl_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.473 isdigit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isdigit.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isdigit

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswdigit This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isdigit

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isdigit’.
mb_isdigit

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_digit

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-digit’.

10.474 isdigit_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isdigit_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.475 isfinite

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isfinite.html

Gnulib module: isfinite

Portability problems fixed by Gnulib:

• This macro is missing on some platforms: macOS 11.1, OpenBSD 6.7, AIX 5.1, Solaris 11.4.

• This macro incorrectly yields true for some ‘double’ and for some ‘long double’ arguments, on some platforms: Linux/ia64 (NaNs).

Portability problems not fixed by Gnulib:

• It is implementation-dependent whether isfinite raises an exception given a signaling NaN operand.

• This macro returns an unspecified result when given noncanonical values such as unnormalized numbers, pseudo-denormals, pseudo-NaNs, pseudo-Infinities, and pseudozeroes.

10.476 isgraph

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isgraph.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isgraph

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswgraph This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isgraph

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isgraph’.
mb_isgraph

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_graph

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-graph’.

10.477 isgraph_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isgraph_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.478 isgreater

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isgreater.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 9.0.

10.479 isgreaterequal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isgreaterequal.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 9.0.

10.480 isinf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isinf.html

Gnulib module: isinf Portability problems fixed by Gnulib:

• This macro is missing on some platforms: AIX 5.1, Solaris 11.4. Portability problems not fixed by Gnulib:

• This macro returns an unspecified result when given noncanonical values such as unnormalized numbers, pseudo-denormals, pseudo-NaNs, pseudo-Infinities, and pseudozeroes.

10.481 isless

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isless.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 9.0.

10.482 islessequal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/islessequal.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 9.0.

10.483 islessgreater

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/islessgreater.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 9.0.

10.484 islower

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/islower.html

Gnulib module: ctype Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_islower

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswlower This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32islower

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

       ‘c32islower’.

mb_islower

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_lower

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-lower’.

10.485 islower_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/islower_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.486 isnan

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isnan.html

Gnulib module: isnan Portability problems fixed by Gnulib:

• This macro is missing on some platforms: MSVC 9.

• isnan was introduced with C99 and is thus commonly not present on pre-C99 systems.

• isnan is not a macro on some platforms: Solaris 11.4.

• This macro does not work on some platforms: MSVC 14.

Portability problems not fixed by Gnulib:

• This macro returns an unspecified result when given noncanonical values such as unnormalized numbers, pseudo-denormals, pseudo-NaNs, pseudo-Infinities, and pseudozeroes.

10.487 isnormal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isnormal.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 4.4.

10.488 isprint

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isprint.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isprint

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswprint This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isprint

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isprint’.
mb_isprint

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_print

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-print’.

10.489 isprint_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isprint_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.490 ispunct

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ispunct.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_ispunct

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswpunct This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32ispunct

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32ispunct’.
mb_ispunct

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_punct

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-punct’.

10.491 ispunct_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ispunct_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.492 isspace

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isspace.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isspace

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswspace This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isspace

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isspace’.
mb_isspace

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_space

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-space’.

10.493 isspace_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isspace_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.494 isunordered

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isunordered.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, Solaris 11.4, Android 9.0.

10.495 isupper

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isupper.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isupper

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswupper This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isupper

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isupper’.
mb_isupper

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_upper

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-upper’.

10.496 isupper_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isupper_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.497 iswalnum

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswalnum.html

Gnulib module: wctype-h

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isalnum, provided by Gnulib module c32isalnum, operates on 32-bit wide characters and therefore does not have this limitation.

10.498 iswalnum_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswalnum_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.499 iswalpha

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswalpha.html

Gnulib module: wctype-h

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isalpha, provided by Gnulib module c32isalpha, operates on 32-bit wide characters and therefore does not have this limitation.

10.500 iswalpha_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswalpha_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.501 iswblank

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswblank.html

Gnulib module: iswblank

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 9, mingw, MSVC 9, Android 4.4.

• This function is not declared (without -D_GNU_SOURCE) on some platforms: glibc 2.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isblank, provided by Gnulib module c32isblank, operates on 32-bit wide characters and therefore does not have this limitation.

10.502 iswblank_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswblank_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.503 iswcntrl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswcntrl.html

Gnulib module: wctype-h

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32iscntrl, provided by Gnulib module c32iscntrl, operates on 32-bit wide characters and therefore does not have this limitation.

• This function returns 0 for U+2028 (LINE SEPARATOR) and U+2029 (PARAGRAPH SEPARATOR) on some platforms: macOS 11.1.

10.504 iswcntrl_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswcntrl_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.505 iswctype

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswctype.html

Gnulib module: iswctype

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function is declared in <wchar.h>, not in <wctype.h>, on some platforms: HP-UX 11.00.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32_apply_type_ test, provided by Gnulib module c32_apply_type_test, operates on 32-bit wide characters and therefore does not have this limitation.

10.506 iswctype_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswctype_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.507 iswdigit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswdigit.html

Gnulib module: iswdigit

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

• This function is not ISO C 99 compliant on some platforms: FreeBSD 14.0, NetBSD 10.0, Solaris 11.4, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isdigit, provided by Gnulib module c32isdigit, operates on 32-bit wide characters and therefore does not have this limitation.

10.508 iswdigit_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswdigit_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.509 iswgraph

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswgraph.html

Gnulib module: wctype-h Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isgraph, provided by Gnulib module c32isgraph, operates on 32-bit wide characters and therefore does not have this limitation.

10.510 iswgraph_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswgraph_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.511 iswlower

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswlower.html

Gnulib module: wctype-h

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32islower, provided by Gnulib module c32islower, operates on 32-bit wide characters and therefore does not have this limitation.

10.512 iswlower_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswlower_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.513 iswprint

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswprint.html

Gnulib module: wctype-h

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

• This function returns true for the tab ('\t') character on some platforms: mingw.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isprint, provided by Gnulib module c32isprint, operates on 32-bit wide characters and therefore does not have this limitation.

10.514 iswprint_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswprint_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.515 iswpunct

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswpunct.html

Gnulib module: iswpunct

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

• This function is inconsistent with the ispunct function, because it returns false for the characters '$', '+', '<', '=', '>', '^', '` ' , '|', '~' on some platforms: Android 11.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32ispunct, provided by Gnulib module c32ispunct, operates on 32-bit wide characters and therefore does not have this limitation.

10.516 iswpunct_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswpunct_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.517 iswspace

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswspace.html

Gnulib module: wctype-h Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isspace, provided by Gnulib module c32isspace, operates on 32-bit wide characters and therefore does not have this limitation.

10.518 iswspace_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswspace_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.519 iswupper

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswupper.html

Gnulib module: wctype-h Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isupper, provided by Gnulib module c32isupper, operates on 32-bit wide characters and therefore does not have this limitation.

10.520 iswupper_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswupper_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.521 iswxdigit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswxdigit.html

Gnulib module: iswxdigit Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

• This function is not ISO C 99 compliant on some platforms: FreeBSD 14.0, NetBSD 10.0, Solaris 11.4, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32isxdigit, provided by Gnulib module c32isxdigit, operates on 32-bit wide characters and therefore does not have this limitation.

10.522 iswxdigit_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/iswxdigit_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.523 isxdigit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isxdigit.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are five alternative APIs:

c_isxdigit

This function operates in a locale independent way and returns true only for ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

iswxdigit

This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32isxdigit

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32isxdigit’.
mb_isxdigit

This function operates in a locale dependent way, on multibyte characters. It is provided by the Gnulib module ‘mbchar’.

uc_is_xdigit

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unictype/ctype-xdigit’.

10.524 isxdigit_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/isxdigit_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.525 j0

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/j0.html

Gnulib module: j0 Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

10.526 j1

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/j1.html

Gnulib module: j1 Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

10.527 jn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/jn.html

Gnulib module: jn Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

10.528 jrand48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/jrand48.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.529 kill

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-kill-3.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.530 killpg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/killpg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.531 l64a

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/l64a.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function was not correctly implemented in glibc versions before 2.2.5.

10.532 labs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/labs.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 4.3.

10.533 lchown

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html

Gnulib module: lchown

Portability problems fixed by Gnulib:

• This function is missing on some platforms; however, the replacement fails with ENOSYS: mingw, MSVC 14.

• This function is missing on some platforms; however, the replacement fails on symlinks: Minix 3.2.1.

• Some platforms fail to detect trailing slash on non-directories, as in lchown("linkto-file/",uid,gid): FreeBSD 7.2, Solaris 9.

• Some platforms fail to update the change time when at least one argument was not -1, but no ownership changes resulted. However, without lchmod, the replacement only fixes this for non-symlinks: OpenBSD 4.0.

Portability problems not fixed by Gnulib:

• This function sometimes fails with EACCES when the failure is due to lack of appropriate privileges (EPERM), not to search permission denied on the file name prefix (EACCES): Linux kernel 5.15 with glibc 2.35 and a CIFS v1 file system (see https://bugs.gnu.

 org/65599).

10.534 lcong48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lcong48.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 5.1.

10.535 ldexp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ldexp.html

Gnulib module: ldexp Portability problems fixed by Gnulib:

• This function produces wrong results on some platforms: OpenBSD 7.3/mips64. Portability problems not fixed by Gnulib:

10.536 ldexpf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ldexpf.html

Gnulib module: ldexpf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.537 ldexpl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ldexpl.html

Gnulib module: ldexpl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function has no prototype in <math.h> on some platforms: Mac OS X.

• This function does not work on finite numbers on some platforms: AIX 5.1. Portability problems not fixed by Gnulib:

10.538 ldiv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ldiv.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.539 lfind

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lfind.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 4.4.

10.540 lgamma

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lgamma.html

Gnulib module: lgamma Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9.

10.541 lgammaf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lgammaf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.542 lgammal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lgammal.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

10.543 link

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-link-1.html

Gnulib module: link Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function fails to reject trailing slashes on non-directories on some platforms: FreeBSD 7.2, Solaris 11.3, Cygwin 1.5.x. Portability problems not fixed by Gnulib:

• When the first argument is a symlink, some platforms create a hard-link to what the symlink referenced, rather than to the symlink itself. Use ‘linkat’ to force a particular behavior.

10.544 linkat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/linkat.html

Gnulib module: linkat Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.9, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• This function fails to directly hardlink symlinks on some platforms: Mac OS X 10.10.

• This function fails to reject trailing slashes on non-directories on some platforms: macOS 11.1, AIX 7.1, Solaris 11.3.

• This functions does not support AT_SYMLINK_FOLLOW on some platforms: Linux kernel 2.6.17. Portability problems not fixed by Gnulib:

10.545 lio_listio

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lio_listio.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.546 listen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/listen.html

Gnulib module: listen Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead. Portability problems not fixed by Gnulib:

10.547 llabs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/llabs.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.23, MSVC 9, Android 4.3.

10.548 lldiv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lldiv.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, HP-UX 11.23, MSVC 9.

10.549 llogb

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.550 llogbf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.551 llogbl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.552 llrint

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/llrint.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.5.x, MSVC 9.

10.553 llrintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/llrintf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.5.x, MSVC 9.

10.554 llrintl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/llrintl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

10.555 llround

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/llround.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9.

10.556 llroundf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/llroundf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.7, MSVC 9.

10.557 llroundl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/llroundl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

10.558 localeconv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/localeconv.html

Gnulib module: localeconv Portability problems fixed by Gnulib:

• The struct lconv type does not contain any members on some platforms: Android up to 2014.

• The struct lconv type does not contain the members int_p_cs_precedes, int_

p_sign_posn, int_p_sep_by_space, int_n_cs_precedes, int_n_sign_posn, int_n_

sep_by_space on some platforms: glibc, OpenBSD 4.9, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• The values of fields of struct lconv of type char are -1 instead of CHAR MAX on some platforms: mingw. Portability problems not fixed by Gnulib:

10.559 localtime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/localtime.html

Gnulib module: localtime Portability problems fixed by Gnulib:

• On native Windows platforms (mingw, MSVC), this function works incorrectly when the environment variable TZ has been set by Cygwin. Portability problems not fixed by Gnulib:

• On some platforms, this function loops forever for values near extrema (such as the year −2 ∗ ∗31): Mac OS X 10.6. You can use the time_rz module to work around the problem.

• On some platforms, this function returns nonsense values for unsupported arguments (like 2^{5}6), rather than failing: FreeBSD 10.

• On some platforms, this function yields incorrect values for timestamps before the year 1: MacOS X 10.5, Solaris 11.3.

• On some platforms, this function returns NULL for negative arguments, that is, for timestamps before 1970-01-01 00:00:00 local time: mingw, MSVC.

• Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. See Section 10.1206 [tzset], page 457.

10.560 localtime_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/localtime_r.html

Gnulib module: time r Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is not declared unless _REENTRANT is defined, on some platforms: HP-UX 11.

Portability problems not fixed by Gnulib:

• On some platforms, this function loops forever for values near extrema (such as the year −2 ∗ ∗31): Mac OS X 10.6. You can use the time_rz module to work around the problem.

• On some platforms, this function returns nonsense values for unsupported arguments (like 2^{5}6), rather than failing: FreeBSD 10.

• On some platforms, this function yields incorrect values for timestamps before the year 1: MacOS X 10.5, Solaris 11.3.

10.561 lockf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lockf.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly across the entire data range of files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.

10.562 log

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log.html

Gnulib module: log or log-ieee Portability problems fixed by either Gnulib module log or log-ieee:

Portability problems fixed by Gnulib module log-ieee:

• This function returns a wrong value for a negative argument on some platforms: NetBSD 5.1, Solaris 11.4.

Portability problems not fixed by Gnulib:

10.563 log10

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log10.html

Gnulib module: log10 or log10-ieee Portability problems fixed by either Gnulib module log10 or log10-ieee:

Portability problems fixed by Gnulib module log10-ieee:

• This function returns a wrong value for a negative argument on some platforms: NetBSD 5.1, Solaris 11.4.

Portability problems not fixed by Gnulib:

10.564 log10f

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log10f.html

Gnulib module: log10f or log10f-ieee Portability problems fixed by either Gnulib module log10f or log10f-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems fixed by Gnulib module log10f-ieee:

• This function returns a wrong value for a negative argument on some platforms: NetBSD 5.1. Portability problems not fixed by Gnulib:

10.565 log10l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log10l.html

Gnulib module: log10l Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function is not declared and does not work on some platforms: AIX 5.1.

• This function produces results which are accurate to only 16 digits on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x, NetBSD 10.0. Portability problems not fixed by Gnulib:

10.566 log1p

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log1p.html

Gnulib module: log1p or log1p-ieee Portability problems fixed by either Gnulib module log1p or log1p-ieee:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9. Portability problems fixed by Gnulib module log1p-ieee:

• This function has problems when the argument is minus zero on some platforms: AIX 7.1, HP-UX 11. Portability problems not fixed by Gnulib:

10.567 log1pf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log1pf.html

Gnulib module: log1pf or log1pf-ieee Portability problems fixed by either Gnulib module log1pf or log1pf-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9. Portability problems fixed by Gnulib module log1pf-ieee:

• This function has problems when the argument is minus zero on some platforms: OpenBSD 4.9, AIX 7.1. Portability problems not fixed by Gnulib:

10.568 log1pl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log1pl.html

Gnulib module: log1pl or log1pl-ieee Portability problems fixed by either Gnulib module log1pl or log1pl-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

• This function produces results which are accurate to only 16 digits on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x, NetBSD 10.0. Portability problems fixed by Gnulib module log1pl-ieee:

• This function has problems when the argument is minus zero on some platforms: AIX 7.1. Portability problems not fixed by Gnulib:

10.569 log2

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log2.html

Gnulib module: log2 or log2-ieee Portability problems fixed by either Gnulib module log2 or log2-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9, Android 4.2.

• This function is only provided as a macro on some platforms: Cygwin 1.5.x.

• This function returns slightly wrong values for exact powers of 2 on some platforms: Cygwin 1.7.9. Portability problems fixed by Gnulib module log2-ieee:

• This function returns a wrong value for a negative argument on some platforms: NetBSD 5.1, Solaris 10/x86 64. Portability problems not fixed by Gnulib:

10.570 log2f

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log2f.html

Gnulib module: log2f or log2f-ieee Portability problems fixed by either Gnulib module log2f or log2f-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9, Android 4.2.

• This function is only provided as a macro on some platforms: Cygwin 1.5.x.

• This function returns slightly wrong values for exact powers of 2 on some platforms: Cygwin 1.7.9.

Portability problems fixed by Gnulib module log2f-ieee:

• This function returns a wrong value for a negative argument on some platforms: NetBSD 5.1, Solaris 10/x86 64.

Portability problems not fixed by Gnulib:

10.571 log2l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/log2l.html

Gnulib module: log2l Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.2.

• This function produces results which are accurate to only 16 digits on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x.

• This function returns Infinity for some large finite arguments on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x, NetBSD 10.0.

Portability problems not fixed by Gnulib:

10.572 logb

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/logb.html

Gnulib module: logb Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9.

• This function is missing a declaration on some platforms: Cygwin 1.5.x.

• This function produces wrong results for subnormal numbers on some platforms: glibc 2.17/ppc, glibc 2.7/sparc, glibc 2.7/hppa, Solaris 11.4, Cygwin 1.5.x.

10.573 logbf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/logbf.html

Gnulib module: logbf

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

• This function produces wrong results for subnormal numbers on some platforms: glibc 2.11/ppc, glibc 2.7/sparc, glibc 2.7/hppa, Solaris 11.4.

Portability problems not fixed by Gnulib:

10.574 logbl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/logbl.html

Gnulib module: logbl

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.2.

• This function goes into an endless loop for arguments such as 1.6810515715560467531313389086608763012990396724232e-

4932L on some platforms: OpenBSD 7.3/mips64.

• This function produces wrong results for subnormal numbers on some platforms: glibc 2.11/powerpc, glibc 2.7/sparc, glibc 2.7/hppa, Solaris 11.4, glibc 2.23/powerpc64le.

Portability problems not fixed by Gnulib:

10.575 logf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/logf.html

Gnulib module: logf or logf-ieee

Portability problems fixed by either Gnulib module logf or logf-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

Portability problems fixed by Gnulib module logf-ieee:

• This function returns a wrong value for a negative argument on some platforms:

NetBSD 5.1.

10.576 logl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/logl.html

Gnulib module: logl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function returns wrong results on some platforms: glibc 2.7 on Linux/SPARC64.

• This function produces results which are accurate to only 16 digits on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x, NetBSD 10.0.

Portability problems not fixed by Gnulib:

10.577 longjmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/longjmp.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• The effects of this call are system and compiler optimization dependent, since it restores the contents of register-allocated variables but not the contents of stack-allocated variables.

• When longjumping out of a signal handler that was being executed on an alternate stack (installed through sigaltstack), on FreeBSD, NetBSD, OpenBSD, you need to clear the SS_ONSTACK flag in the stack_t structure managed by the kernel.

10.578 lrand48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lrand48.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.579 lrint

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lrint.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.580 lrintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lrintf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.581 lrintl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lrintl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

10.582 lround

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lround.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.583 lroundf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lroundf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.584 lroundl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lroundl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

10.585 lsearch

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lsearch.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 4.4.

10.586 lseek

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html

Gnulib module: lseek

Portability problems fixed by Gnulib:

• On some platforms, lseek (fd, offset, SEEK_DATA) returns a value greater than offset even when offset addresses data: macOS 12

• This function is declared in a different header file (namely, <io.h>) on some platforms: MSVC 14.

• On platforms where off_t is a 32-bit type, lseek does not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• This function mistakenly succeeds on pipes on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• POSIX does not specify which file descriptors support seeking and which don’t. In practice, regular files and block devices support seeking, and ttys, pipes, and most character devices don’t support it.

• Some systems do not support SEEK_DATA and SEEK_HOLE: AIX, HP-UX, Microsoft Windows, NetBSD, OpenBSD, Cygwin 3.4.6.

• Some systems have a buggy SEEK_DATA and SEEK_HOLE, and Gnulib works around the problem via #undef SEEK_DATA and #undef SEEK_HOLE: FreeBSD 13, macOS 12.

10.587 lstat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/lstat.html

Gnulib module: lstat

Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, lstat may not correctly report the size of files or block devices 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• On Linux/x86 and Linux/x86 64, applications compiled in 32-bit mode cannot access files that happen to have a 64-bit inode number. This can occur with file systems such as XFS (typically on large disks) and NFS. See Section 14.2 [Large File Support], page 770.

• For symlinks, when the argument ends in a slash, some platforms don’t dereference the argument: Solaris 9.

• On some platforms, lstat("file/",buf) succeeds instead of failing with ENOTDIR. macOS 11.1, Solaris 9.

• On macOS 12.6, when this function yields a timestamp with a nonpositive tv_sec value, tv_nsec might be in the range −999999999..−1, representing a negative nanoseconds offset from tv_sec. Solaris 11.4 is similar, except that tv_sec might also be −1000000000.

• On Windows platforms (excluding Cygwin), symlinks are not supported, so lstat does not exist.

Portability problems not fixed by Gnulib:

• See Section 9.66 [sys/stat.h], page 79, for general portability problems with struct

stat.

10.588 malloc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/malloc.html

Gnulib module: malloc-posix

Portability problems fixed by Gnulib:

• Upon failure, the function does not set errno to ENOMEM on some platforms: mingw, MSVC 14.

• On some platforms, malloc (n) can succeed even if n exceeds PTRDIFF_MAX. Although this behavior is arguably allowed by POSIX it can lead to behavior not defined by POSIX later, so malloc-posix does not allow going over the limit.

Extension: Gnulib provides a module ‘malloc-gnu’ that substitutes a malloc implementation that behaves more like the glibc implementation, by fixing this portability problem:

• malloc (0) returns NULL on success on some platforms: AIX 7.2.

10.589 mblen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mblen.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 7.1.

10.590 mbrlen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrlen.html

Gnulib module: mbrlen

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw.

• In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.35.

• This function returns 0 instead of (size_t) -2 when the input is empty: glibc 2.19.

• This function returns (size_t) -1 instead of (size_t) -2 when the input is empty: AIX 5.1.

• This function does not put the state into non-initial state when parsing an incomplete multibyte character on some platforms: AIX 5.1.

• This function returns the total number of bytes that make up the multibyte character, not the number of bytes that were needed to complete the multibyte character, on some platforms: HP-UX 11.11, Solaris 11 2010-11.

• This function may not return 0 when parsing the NUL character on some platforms: Solaris 9.

Portability problems not fixed by Gnulib:

10.591 mbrtoc8

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on most platforms: glibc 2.29, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.4.6, mingw, MSVC 14, Android 9.0.

10.592 mbrtoc16

Gnulib module: mbrtoc16

Portability problems fixed by Gnulib:

• This function is missing on most non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 3.4.6, mingw, MSVC 9, Android 4.4.

• This function may crash when the first argument is NULL on some platforms: glibc 2.36.

• In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.36.

• This function returns 0 instead of (size_t) -2 when the input is empty: glibc 2.19, Android 11.

• This function returns the total number of bytes that make up the multibyte character, not the number of bytes that were needed to complete the multibyte character, on some platforms: mingw.

• This function returns (size_t) -3 instead of a byte count when it has stored a high surrogate, and returns a byte count instead of (size_t) -3 when it has stored a low surrogate, on some platforms: Android.

• This function does not recognize multibyte sequences that mbrtowc recognizes on some platforms: FreeBSD 13.2, Solaris 11.4, MSVC 14.

Portability problems not fixed by Gnulib:

• After mbrtoc16 returns a char16_t value, mbsinit cannot be used to determine whether the function is ready to return another char16_t value. To do so, instead call mbrtoc16 again, with an appropriately incremented const char * argument and an appropriately decremented size_t argument.

10.593 mbrtoc32

Gnulib module: mbrtoc32 or mbrtoc32-regular

Portability problems fixed by either Gnulib module mbrtoc32 or mbrtoc32-regular:

• This function is missing on most non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 3.4.6, mingw, MSVC 9, Android 4.4.

• In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.35.

• This function returns 0 instead of (size_t) -2 when the input is empty: glibc 2.19, mingw, Android 11, Haiku.

• This function does not recognize multibyte sequences that mbrtowc recognizes on some platforms: FreeBSD 13.2, Solaris 11.4, mingw, MSVC 14.

• This function does not work when it’s fed the input bytes one-by-one on some platforms: Cygwin 3.5.3.

Portability problems fixed by Gnulib module mbrtoc32-regular:

• This function can map some multibyte characters to a sequence of two or more Unicode characters, and may thus return (size_t) -3. No known implementation currently (2023) behaves that way, but it may theoretically happen. With the mbrtoc32-regular module, you have the guarantee that the Gnulib-provided mbrtoc32 function maps each multibyte character to exactly one Unicode character and thus never returns (size_t)

-3.

• This function behaves incorrectly when converting precomposed characters from the BIG5-HKSCS encoding: glibc 2.36.

Portability problems not fixed by Gnulib:

• This function is only defined as an inline function on some platforms: Haiku 2020.

Note: If you want the guarantee that the char32_t values returned by this function are Unicode code points, you also need to request the uchar-c23 module.

10.594 mbrtowc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrtowc.html

Gnulib module: mbrtowc Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw.

• In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.35.

• This function returns 0 instead of (size_t) -2 when the input is empty: glibc 2.19, MSVC 14, Android 11.

• This function returns (size_t) -1 instead of (size_t) -2 when the input is empty: AIX 7.2.

• This function does not put the state into non-initial state when parsing an incomplete multibyte character on some platforms: AIX 7.2.

• This function stores a wide character when parsing an incomplete multibyte character on some platforms: MSVC 14.

• This function returns the total number of bytes that make up the multibyte character, not the number of bytes that were needed to complete the multibyte character, on some platforms: HP-UX 11.11, Solaris 11 2010-11, mingw, MSVC 14.

• This function may not return 0 when parsing the NUL character on some platforms: Solaris 9.

Portability problems not fixed by Gnulib:

• In UTF-8 locales, this function may return wide characters up to 0x7FFFFFFF (that is, beyond 0x0010FFFF) on some platforms: glibc 2.34.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the ISO C11 function mbrtoc32, provided by Gnulib module mbrtoc32, operates on 32-bit wide characters and therefore does not have this limitation.

10.595 mbsinit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbsinit.html

Gnulib module: mbsinit Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, MSVC 14.

• This function always returns 1, even in multibyte locales, on some platforms: mingw. Portability problems not fixed by Gnulib:

• This function is not useful after calls to mbrtoc16 or mbrtoc8.

10.596 mbsnrtowcs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbsnrtowcs.html

Gnulib module: mbsnrtowcs Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

• This function produces invalid wide characters on some platforms: Solaris 11.4.

• In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.35. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function mbsnrtoc32s, provided by Gnulib module mbsnrtoc32s, operates on 32-bit wide characters and therefore does not have this limitation.

• The specification is not clear about whether this function should update the conversion state when the first argument (the destination pointer) is NULL. The glibc, Mac OS X, FreeBSD implementations do update the state in this case. For portability, when passing a NULL destination argument, it is best to pass a pointer to a temporary copy of the conversion state.

10.597 mbsrtowcs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbsrtowcs.html

Gnulib module: mbsrtowcs Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw.

• This function does not work on some platforms: HP-UX 11, Solaris 11 2010-11.

• In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.35.

• This function does not work when the first argument is NULL on some platforms: mingw.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function mbsrtoc32s, provided by Gnulib module mbsrtoc32s, operates on 32-bit wide characters and therefore does not have this limitation.

• The specification is not clear about whether this function should update the conversion state when the first argument (the destination pointer) is NULL. The glibc implementation does not update the state in this case; the macOS and FreeBSD implementations do. For portability, when passing a NULL destination argument, it is best to pass a pointer to a temporary copy of the conversion state.

10.598 mbstowcs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbstowcs.html

Gnulib module: mbstowcs

Portability problems fixed by Gnulib:

• In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.35.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function mbstoc32s, provided by Gnulib module mbstoc32s, operates on 32-bit wide characters and therefore does not have this limitation.

10.599 mbtowc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbtowc.html

Gnulib module: mbtowc

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Android 4.4.

Portability problems not fixed by Gnulib:

• In UTF-8 locales, this function may return wide characters up to 0x7FFFFFFF (that is, beyond 0x0010FFFF) on some platforms: glibc 2.34.

• This function accumulates hidden state on some platforms: glibc 2.8 (see https://

sourceware.org/bugzilla/show_bug.cgi?id=9674).

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.600 memccpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/memccpy.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.601 memchr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/memchr.html

Gnulib module: memchr Portability problems fixed by Gnulib:

• This function dereferences too much memory on some platforms: glibc 2.10 on x86 64, IA-64; glibc 2.11 on Alpha, AIX 7.2.

• This function returns NULL if the character argument is not in the range of an unsigned char on some platforms: Android 5.0. Portability problems not fixed by Gnulib:

10.602 memcmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/memcmp.html

Gnulib module: memcmp Portability problems fixed by Gnulib:

• This function fails when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary on some older platforms: NeXTstep/x86. Portability problems not fixed by Gnulib:

• This function produces wrong results when the arguments are constant strings and the compiler is clang 6.0.1.

10.603 memcpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/memcpy.html

Gnulib module: memcpy Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

10.604 memmove

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/memmove.html

Gnulib module: memmove

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

10.605 memset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/memset.html

Gnulib module: memset

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

10.606 memset_explicit

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Erasing-Sensitive-Data.
 html,

Gnulib module: memset explicit

The memset_explicit function is an approximation to what is needed, and does not suffice in general to erase information. Although calling memset_explicit should clear the memory in question, the information that was in memory may still be available elsewhere on the machine. Proper implementation of information erasure requires support from levels below C code.

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.36, FreeBSD 13.1, NetBSD 10.0, OpenBSD 7.2, macOS 13, Solaris 11.4, Android API level 33, and many other systems.

Portability problems not fixed by Gnulib:

• Although the module’s implementation should set the memory on platforms compatible with GCC and on platforms using traditional linkers, it may not set the memory on non-GCC platforms that use whole-program optimization.

10.607 mkdir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html

Gnulib module: sys stat or mkdir

Portability problems fixed by either Gnulib module sys_stat or mkdir:

• This function is declared in different header files (namely, <io.h> or <direct.h>) on some platforms: mingw, MSVC 14.

• On Windows platforms (excluding Cygwin), this function is called _mkdir and takes

only one argument. The fix (without Gnulib) is to define a macro like this:

        #define mkdir ((int (*)()) _mkdir)

or

        #define mkdir(path,mode) _mkdir (path)

Portability problems fixed by Gnulib module mkdir:

• When the argument ends in a slash, the function call fails on some platforms.

• This function mistakenly succeeds on ‘mkdir("d/./",mode)’ on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

10.608 mkdirat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdirat.html

Gnulib module: mkdirat

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe.

Portability problems not fixed by Gnulib:

10.609 mkdtemp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdtemp.html

Gnulib module: mkdtemp

Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

10.610 mkfifo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkfifo.html

Gnulib module: mkfifo Portability problems fixed by Gnulib:

• This function mishandles trailing slash on some platforms: FreeBSD 7.2, Solaris 9.

• This function is missing on some platforms; however, the replacement always fails with ENOSYS: mingw, MSVC 14, Android 4.4. Portability problems not fixed by Gnulib:

• If the argument exists and is a directory, this function fails with EISDIR instead of the correct EEXIST: HP-UX 11.11.

10.611 mkfifoat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkfifoat.html

Gnulib module: mkfifoat Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 5.1. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a nonexistent file, on some platforms: AIX 7.2.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a symbolic link, on some platforms: macOS 14. Portability problems not fixed by Gnulib:

• The gnulib replacement function always fails with ‘ENOSYS’ on some platforms: mingw, MSVC 14.

• If the argument exists and is a directory, the gnulib replacement function fails with EISDIR instead of the correct EEXIST: HP-UX 11.11.

10.612 mknod

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mknod.html

Gnulib module: mknod Portability problems fixed by Gnulib:

• This function requires super-user privileges to create a fifo: FreeBSD 7.2, NetBSD 8.0, OpenBSD 6.7.

• This function mishandles trailing slash on some platforms: FreeBSD 7.2, Solaris 9.

• This function is missing on some platforms; however, the replacement always fails with ENOSYS: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• Use of this function for anything except fifos is not portable, generally requiring superuser privileges and knowledge of supported device numbers.

• If the argument exists and is a directory, this function fails with EISDIR instead of the correct EEXIST: HP-UX 11.11.

10.613 mknodat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mknodat.html

Gnulib module: mkfifoat

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a nonexistent file, on some platforms: AIX 7.2.

Portability problems not fixed by Gnulib:

• The gnulib replacement function always fails with ‘ENOSYS’ on some platforms: mingw, MSVC 14.

• If the argument exists and is a directory, the gnulib replacement function fails with EISDIR instead of the correct EEXIST: HP-UX 11.11.

10.614 mkstemp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkstemp.html

Gnulib module: mkstemp

Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• On platforms where off_t is a 32-bit type, mkstemp may not work correctly to create files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• On some older platforms, mkstemp can create a world or group writable or readable file, if you haven’t set the process umask to 077. This is a security risk.

Portability problems not fixed by Gnulib:

The gnulib module clean-temp can create temporary files that will not be left behind after signals such as SIGINT.

10.615 mktime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mktime.html

Gnulib module: mktime Portability problems fixed by Gnulib:

• On native Windows platforms (mingw, MSVC), this function works incorrectly when the environment variable TZ has been set by Cygwin.

• mktime may go into an endless loop on some platforms.

• mktime may occasionally return wrong results on some platforms. Portability problems not fixed by Gnulib:

• On some platforms, this function yields incorrect values for timestamps before the year 1: MacOS X 10.5, Solaris 11.3.

• Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. See Section 10.1206 [tzset], page 457.

10.616 mlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mlock.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.617 mlockall

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mlockall.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 4.1.

10.618 mmap

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mmap.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly across the entire data range of files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• To get anonymous memory, on some platforms, you can use the flags MAP_ANONYMOUS | MAP_PRIVATE and -1 instead of a file descriptor; on others you have to use a read-only file descriptor of /dev/zero.

• On HP-UX, passing a non-NULL first argument, as a hint for the address (even without MAP_FIXED), often causes mmap to fail. Better pass NULL in this case.

• On HP-UX, MAP_FIXED basically never works. On other platforms, it depends on the circumstances whether memory can be returned at a given address.

10.619 modf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/modf.html

Gnulib module: modf or modf-ieee

Portability problems fixed by either Gnulib module modf or modf-ieee:

Portability problems fixed by Gnulib module modf-ieee:

• This function has problems with a NaN argument on some platforms: NetBSD 5.1, Cygwin.

• This function has problems with infinite arguments on some platforms: FreeBSD 6.4, OpenBSD 6.7.

Portability problems not fixed by Gnulib:

10.620 modff

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/modff.html

Gnulib module: modff or modff-ieee

Portability problems fixed by either Gnulib module modff or modff-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11.

• This function is only defined as a buggy macro with arguments on some platforms: MSVC 14.

Portability problems fixed by Gnulib module modff-ieee:

• This function has problems with a NaN argument on some platforms: NetBSD 5.1, OpenBSD 6.7, Solaris 9, Cygwin.

• This function has problems with infinite arguments on some platforms: mingw.

10.621 modfl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/modfl.html

Gnulib module: modfl or modfl-ieee Portability problems fixed by either Gnulib module modfl or modfl-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces wrong results on some platforms: NetBSD 10.0/arm64. Portability problems fixed by Gnulib module modfl-ieee:

• This function has problems with infinite arguments on some platforms: mingw. Portability problems not fixed by Gnulib:

10.622 mprotect

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mprotect.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This function does not set errno on some platforms: mingw.

• On AIX, it is not possible to use mprotect on memory regions allocated with malloc.

10.623 mq_close

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_close.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.624 mq_getattr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_getattr.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.625 mq_notify

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_notify.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.626 mq_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_open.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.627 mq_receive

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_receive.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.628 mq_send

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_send.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.629 mq_setattr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_setattr.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.630 mq_timedreceive

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_timedreceive.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.631 mq_timedsend

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_timedsend.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.632 mq_unlink

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_unlink.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.633 mrand48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/mrand48.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.634 msgctl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/msgctl.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 7.1.

10.635 msgget

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/msgget.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 7.1.

10.636 msgrcv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/msgrcv.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 7.1.

10.637 msgsnd

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/msgsnd.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 7.1.

10.638 msync

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/msync.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• On NetBSD, msync takes only two arguments.

10.639 mtx_destroy

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.

Gnulib module: mtx Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29. Portability problems not fixed by Gnulib:

10.640 mtx_init

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.

Gnulib module: mtx Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29. Portability problems not fixed by Gnulib:

10.641 mtx_lock

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.

Gnulib module: mtx Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.642 mtx_timedlock

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.

Gnulib module: mtx Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.643 mtx_trylock

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.

Gnulib module: mtx Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.644 mtx_unlock

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Mutexes.html.

Gnulib module: mtx Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

10.645 munlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/munlock.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.646 munlockall

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/munlockall.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 4.1.

10.647 munmap

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/munmap.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.648 nan

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nan.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.649 nanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.650 nanl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 3.1.

10.651 nanosleep

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanosleep.html

Gnulib module: nanosleep Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function mishandles large arguments when interrupted by a signal on some platforms: Linux 64-bit, Solaris 64-bit.

• This function cannot sleep longer than 49.7 days on some platforms: Cygwin 1.5.x.

• This function does not fail when passed a negative nanosecond value on some platforms: newer 32-bit mingw. Portability problems not fixed by Gnulib:

10.652 nearbyint

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nearbyint.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, Solaris 9, MSVC 9.

10.653 nearbyintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nearbyintf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.654 nearbyintl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nearbyintl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

10.655 newlocale

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/newlocale.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 9.0, NetBSD 5.0, OpenBSD 6.1, Minix 3.1.8, AIX 6.1, HP-UX 11, Solaris 11.3, Cygwin 2.5.x, mingw, MSVC 14, Android 4.4.

• This function is useless because the locale_t type is not defined on some platforms: z/OS.

• This function is useless because the locale_t type contains basically no information on some platforms: OpenBSD 6.3.

10.656 nextafter

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nextafter.html

Gnulib module: nextafter Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9.

10.657 nextafterf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nextafterf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.658 nextafterl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nextafterl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

10.659 nextdown

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.
 html,

• man nextdown. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.23, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.660 nextdownf

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.
 html,

• man nextdownf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.23, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.661 nextdownl

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.
 html,

• man nextdownl. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.23, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.662 nexttoward

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nexttoward.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.2.

10.663 nexttowardf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nexttowardf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9.

10.664 nexttowardl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nexttowardl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 8.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.2.

10.665 nextup

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.
 html,

• man nextup. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.23, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.666 nextupf

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.
 html,

• man nextupf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.23, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.667 nextupl

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.
 html,

• man nextupl. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.23, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.668 nftw

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nftw.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not correctly report the size of files or block devices 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14, Android 4.1.

10.669 nice

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nice.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• In glibc before glibc 2.2.4, nice returned 0 upon success.

10.670 nl_langinfo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nl_langinfo.html

Gnulib module: nl langinfo Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 7.1.

• The constant CODESET is not supported on some platforms: OpenBSD 3.8.

• The constants ALTMON_1 to ALTMON_12 are not defined on some platforms: glibc 2.26, musl libc, macOS 11.1, NetBSD 8.0, OpenBSD 6.7, AIX 7.2, HP-UX 11.31, Solaris 11.4, Haiku, Cygwin 2.9.

• The constants ERA, ERA_D_FMT, ERA_D_T_FMT, ERA_T_FMT, ALT_DIGITS are not sup-

ported on some platforms: OpenBSD 6.7.

• This function is not multithread-safe on some platforms: Solaris 11.3.

Portability problems not fixed by Gnulib:

• On Cygwin 1.5.x, which doesn’t have locales, nl_langinfo(CODESET) always returns

 "US-ASCII".

• On Cygwin 1.7.0, only the charset portion of a locale designation is honored.

• On NetBSD 5.0, in some locales, nl_langinfo(CRNCYSTR) returns the empty string, although the local currency symbol, as returned by localeconv()->currency_symbol, is non-empty.

• On NetBSD 5.1, in the "C" locale, the results of nl_langinfo(ABMON_1) ... nl_ langinfo(ABMON_12) are full month names, not abbreviated month names.

10.671 nl_langinfo_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nl_langinfo_l.
html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

10.672 nrand48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/nrand48.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.673 ntohl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ntohl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, mingw, MSVC 14, Android 4.4.

10.674 ntohs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ntohs.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, mingw, MSVC 14, Android 4.4.

10.675 open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html

Gnulib module: open, fchdir

Portability problems fixed by the Gnulib module open:

• Some platforms do not support O_CLOEXEC: Mac OS X 10.6, FreeBSD 8.4, NetBSD 5.1, OpenBSD 4.9, Minix 3.1.8, AIX 7.1, HP-UX 11, Solaris 10, Cygwin 1.7.x, mingw, MSVC 14.

• On platforms where off_t is a 32-bit type, open may not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a nonexistent file or a file that is not a directory, on some platforms: macOS 11.1, FreeBSD 7.2, AIX 7.1, HP-UX 11.00, Solaris 9.

• This function does not support the O_NONBLOCK flag when it is defined by the gnulib module nonblocking on some platforms: mingw, MSVC 14.

• On Windows platforms (excluding Cygwin), this function does usually not recognize the /dev/null filename.

Portability problems fixed by the Gnulib module fchdir:

• On Windows platforms (excluding Cygwin), this function fails to open a read-only descriptor for directories.

Portability problems not fixed by Gnulib:

• The Gnulib replacement for O_CLOEXEC is not atomic, and so is not safe in the presence of multiple threads or signal handlers.

• open ("symlink", O_CREAT ...) fails when the argument points to a nonexistent file in an existing directory on some platforms: Haiku.

• open ("symlink", O_NOFOLLOW ...) fails with errno set to EMLINK instead of the

POSIX-required ELOOP on some platforms: FreeBSD 10.1.

• open ("symlink", O_NOFOLLOW ...) fails with errno set to EFTYPE instead of the

POSIX-required ELOOP on some platforms: NetBSD 6.1.

• On Windows, this function returns a file handle in O_TEXT mode by default; this means that it translates '\n' to CR/LF by default. Use the O_BINARY flag if you need reliable binary I/O.

10.676 openat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/openat.html

Gnulib module: openat Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• Some platforms do not support O_CLOEXEC: AIX 7.1, Solaris 10.

• On platforms where off_t is a 32-bit type, open may not work correctly with files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a nonexistent file or a file that is not a directory, on some platforms: Solaris 9. Portability problems not fixed by Gnulib:

• The Gnulib replacement for O_CLOEXEC is not atomic, and so is not safe in the presence of multiple threads or signal handlers.

• openat (fd, "symlink", O_NOFOLLOW ...) fails with errno set to EMLINK instead of

the POSIX-required ELOOP on some platforms: FreeBSD 10.1.

• openat (fd, "symlink", O_NOFOLLOW ...) fails with errno set to EFTYPE instead of

the POSIX-required ELOOP on some platforms: NetBSD 6.1.

10.677 opendir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/opendir.html

Gnulib module: opendir Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14.

• On platforms where off_t is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. Also, on platforms where ino_t is a 32-bit type, this function may report inode numbers incorrectly. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

10.678 openlog

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/openlog.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.679 open_memstream

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/open_memstream.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14, Android 5.1.

An alternative to the open_memstream function is the Gnulib module string-buffer.

10.680 open_wmemstream

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/open_wmemstream.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14, Android 5.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.681 optarg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/optarg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: Mac OS X 10.5, MSVC 14.

10.682 opterr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/opterr.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: MSVC 14.

10.683 optind

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/optind.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: MSVC 14.

10.684 optopt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/optopt.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: Mac OS X 10.5, MSVC 14.

10.685 pathconf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pathconf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.686 pause

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pause.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.687 pclose

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pclose.html

Gnulib module: pclose Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.688 perror

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/perror.html

Gnulib module: perror Portability problems fixed by Gnulib:

• This function does not support the error values that are specified by POSIX but not defined by the system, on some platforms: OpenBSD 4.0, Cygwin 1.5.x, mingw, MSVC 14.

• This function treats errno of 0 like failure, although POSIX requires that the message declare it as a success, on some platforms: FreeBSD 8.2, OpenBSD 4.7, macOS 11.1.

• This function clobbers the strerror buffer on some platforms: Cygwin 1.7.9, Android 11.

• This function fails to print a useful a string for out-of-range integers on some platforms: HP-UX 11. Portability problems not fixed by Gnulib:

• POSIX requires that this function set the stream error bit (detected by ferror) on write failure, but not all platforms do this: glibc 2.13, cygwin 1.7.9.

• POSIX requires that this function not alter stream orientation, but the gnulib replacement locks in byte orientation and fails on wide character streams.

10.689 pipe

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html

Gnulib module: pipe-posix Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• This function crashes rather than failing with EMFILE if no resources are left on some platforms: Cygwin 1.7.9.

10.690 poll

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html

Gnulib module: poll Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, HP NonStop.

• This function doesn’t work on special files like /dev/null and ttys like /dev/tty on some platforms: macOS 10.15, AIX 5.3. Portability problems not fixed by Gnulib:

• Under Windows, when passing a pipe, Gnulib’s poll replacement might return 0 even before the timeout has passed. Programs using it with pipes can thus busy wait.

• On some platforms, file descriptors other than sockets do not support POLLHUP; they will return a "readable" or "writable" status instead: AIX 7.2, Cygwin 3.4.6, HP NonStop, mingw, MSVC.

10.691 popen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/popen.html

Gnulib module: popen Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14.

• Some platforms start the child with closed stdin or stdout if the standard descriptors were closed in the parent: Cygwin 1.5.x.

Portability problems not fixed by Gnulib:

• On native Windows platforms, this functions terminates the current process with exit code 127 if the environment variable COMSPEC is not set.

• Some platforms mistakenly set the close-on-exec bit, then if it is cleared by the application, the platform then leaks file descriptors from earlier popen calls into subsequent popen children: Cygwin 1.5.x.

10.692 posix_fadvise

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_fadvise.
html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly across the entire data range of files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

10.693 posix_fallocate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.
html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not work correctly across the entire data range of files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

• POSIX specifies that EINVAL should be returned when the file system doesn’t support the allocation operation directly. glibc however emulates the file system allocation with writes where unsupported, and apps have depended on that long term implementation. This is both inefficient, and as of glibc 2.21 at least, buggy on certain NFS setups.

10.694 posix_madvise

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_madvise.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 5.1.

10.695 posix_mem_offset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_mem_offset.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.696 posix_memalign

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_memalign.
html

Gnulib module: posix memalign Portability problems fixed by Gnulib:

• This function produces misaligned results on some platforms: OpenBSD 6.1.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.1.

The Gnulib module aligned-malloc provides functions for allocating and freeing blocks of suitably aligned memory.

The Gnulib module pagealign_alloc provides a similar API for allocating and freeing blocks of memory aligned on a system page boundary.

10.697 posix_openpt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_openpt.
html

Gnulib module: posix openpt Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4. However, the replacement may fail with ENOSYS or ENOENT on some platforms.

Portability problems not fixed by Gnulib:

Note that when using this function to open the master side of a pseudo-terminal, you still need platform dependent code to open the corresponding slave side. The Gnulib module openpty provides an easy-to-use API that does both at once.

10.698 posix_spawn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html

Gnulib module: posix spawn Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.3, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• When this function fails, it causes the stdio buffer contents to be output twice on some platforms: AIX 6.1.

• When the program to be invoked is an executable script without a ‘#!’ marker in the first line, this function executes the script as if it were a shell script, on some platforms: GNU/Hurd.

Portability problems not fixed by Gnulib:

• This function does not work on some platforms: AIX 6.1 (under particular circumstances).

The Gnulib modules posix_spawn_file_actions_addchdir and posix_spawn_file_

actions_addfchdir provide additional actions, that consist in changing the current directory of the child process before starting the specified program.

10.699 posix_spawn_file_actions_addclose

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawn_file_actions_addclose.html

Gnulib module: posix spawn file actions addclose

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• This function does not reject a negative file descriptor on some platforms: musl libc.

Portability problems not fixed by Gnulib:

10.700 posix_spawn_file_actions_adddup2

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawn_file_actions_adddup2.html

Gnulib module: posix spawn file actions adddup2

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• This function does not reject a too large file descriptor on some platforms: musl libc, Solaris 11.4.

Portability problems not fixed by Gnulib:

10.701 posix_spawn_file_actions_addopen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawn_file_actions_addopen.html

Gnulib module: posix spawn file actions addopen

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• This function does not reject a too large file descriptor on some platforms: musl libc, Solaris 11.4.

10.702 posix_spawn_file_actions_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawn_file_actions_destroy.html

Gnulib module: posix spawn file actions destroy Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.703 posix_spawn_file_actions_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawn_file_actions_init.html

Gnulib module: posix spawn file actions init Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.704 posix_spawnattr_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_destroy.html

Gnulib module: posix spawnattr destroy Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.705 posix_spawnattr_getflags

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_getflags.html

Gnulib module: posix spawnattr getflags Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.706 posix_spawnattr_getpgroup

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_getpgroup.html

Gnulib module: posix spawnattr getpgroup Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.707 posix_spawnattr_getschedparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_getschedparam.html

Gnulib module: posix spawnattr getschedparam Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.708 posix_spawnattr_getschedpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_getschedpolicy.html

Gnulib module: posix spawnattr getschedpolicy Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.709 posix_spawnattr_getsigdefault

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_getsigdefault.html

Gnulib module: posix spawnattr getsigdefault Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.710 posix_spawnattr_getsigmask

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_getsigmask.html

Gnulib module: posix spawnattr getsigmask

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.711 posix_spawnattr_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_init.html

Gnulib module: posix spawnattr init

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.712 posix_spawnattr_setflags

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_setflags.html

Gnulib module: posix spawnattr setflags

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

10.713 posix_spawnattr_setpgroup

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_setpgroup.html

Gnulib module: posix spawnattr setpgroup Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.714 posix_spawnattr_setschedparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_setschedparam.html

Gnulib module: posix spawnattr setschedparam Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.715 posix_spawnattr_setschedpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_setschedpolicy.html

Gnulib module: posix spawnattr setschedpolicy Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.716 posix_spawnattr_setsigdefault

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_setsigdefault.html

Gnulib module: posix spawnattr setsigdefault Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.717 posix_spawnattr_setsigmask

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_spawnattr_setsigmask.html

Gnulib module: posix spawnattr setsigmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

Portability problems not fixed by Gnulib:

10.718 posix_spawnp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnp.
html

Gnulib module: posix spawnp Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.3, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• When this function fails, it causes the stdio buffer contents to be output twice on some platforms: AIX 6.1.

• When the program to be invoked is an executable script without a ‘#!’ marker in the first line, this function executes the script as if it were a shell script, on some platforms: glibc 2.14/Linux, glibc 2.32/Hurd, macOS 12.5, FreeBSD 14.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 3.4.6.

Portability problems not fixed by Gnulib:

• This function does not work on some platforms: AIX 6.1 (under particular circumstances).

The Gnulib modules posix_spawn_file_actions_addchdir and posix_spawn_file_

actions_addfchdir provide additional actions, that consist in changing the current directory of the child process before starting the specified program.

10.719 posix_trace_attr_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_destroy.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.720 posix_trace_attr_getclockres

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getclockres.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.721 posix_trace_attr_getcreatetime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getcreatetime.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.722 posix_trace_attr_getgenversion

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getgenversion.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.723 posix_trace_attr_getinherited

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getinherited.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.724 posix_trace_attr_getlogfullpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getlogfullpolicy.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.725 posix_trace_attr_getlogsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getlogsize.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.726 posix_trace_attr_getmaxdatasize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getmaxdatasize.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.727 posix_trace_attr_getmaxsystemeventsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getmaxsystemeventsize.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.728 posix_trace_attr_getmaxusereventsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getmaxusereventsize.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.729 posix_trace_attr_getname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getname.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.730 posix_trace_attr_getstreamfullpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getstreamfullpolicy.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.731 posix_trace_attr_getstreamsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_getstreamsize.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.732 posix_trace_attr_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_init.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.733 posix_trace_attr_setinherited

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_setinherited.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.734 posix_trace_attr_setlogfullpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_setlogfullpolicy.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.735 posix_trace_attr_setlogsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_setlogsize.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.736 posix_trace_attr_setmaxdatasize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_setmaxdatasize.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.737 posix_trace_attr_setname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_setname.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.738 posix_trace_attr_setstreamfullpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_setstreamfullpolicy.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.739 posix_trace_attr_setstreamsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_attr_setstreamsize.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.740 posix_trace_clear

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_clear.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.741 posix_trace_close

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_close.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.742 posix_trace_create

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_create.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.743 posix_trace_create_withlog

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_create_withlog.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.744 posix_trace_event

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_event.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.745 posix_trace_eventid_equal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventid_equal.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.746 posix_trace_eventid_get_name

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventid_get_name.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.747 posix_trace_eventid_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventid_open.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.748 posix_trace_eventset_add

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventset_add.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.749 posix_trace_eventset_del

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventset_del.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.750 posix_trace_eventset_empty

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventset_empty.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.751 posix_trace_eventset_fill

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventset_fill.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.752 posix_trace_eventset_ismember

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventset_ismember.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.753 posix_trace_eventtypelist_getnext_id

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventtypelist_getnext_id.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.754 posix_trace_eventtypelist_rewind

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_eventtypelist_rewind.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.755 posix_trace_flush

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_flush.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.756 posix_trace_get_attr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_get_attr.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.757 posix_trace_get_filter

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_get_filter.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.758 posix_trace_get_status

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_get_status.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.759 posix_trace_getnext_event

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_getnext_event.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.760 posix_trace_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_open.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.761 posix_trace_rewind

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_rewind.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.762 posix_trace_set_filter

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_set_filter.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.763 posix_trace_shutdown

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_shutdown.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.764 posix_trace_start

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_start.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.765 posix_trace_stop

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_stop.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.766 posix_trace_timedgetnext_event

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_timedgetnext_event.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.767 posix_trace_trid_eventid_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_trid_eventid_open.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.768 posix_trace_trygetnext_event

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_trace_trygetnext_event.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.769 posix_typed_mem_get_info

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_typed_mem_get_info.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.770 posix_typed_mem_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
posix_typed_mem_open.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.771 pow

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pow.html

Gnulib module: pow Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.772 powf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/powf.html

Gnulib module: powf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 9. Portability problems not fixed by Gnulib:

10.773 powl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/powl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.774 pread

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html

Gnulib module: pread Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• This function returns zero instead of positive values when large file support is enabled on some platforms: HP-UX 11.11.

• This function does not fail on pipes on some platforms: HP-UX 11.31. Portability problems not fixed by Gnulib:

10.775 printf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html

Gnulib module: printf-posix or printf-gnu or stdio, nonblocking, sigpipe Portability problems fixed by either Gnulib module printf-posix or printf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC • printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

Portability problems fixed by Gnulib module printf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module printf-posix or printf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14.

Portability problems fixed by Gnulib module stdio or printf-posix or printf-gnu, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio or printf-posix or printf-gnu, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• Attempting to write to a read-only stream fails with EOF but does not set the error flag for ferror on some platforms: glibc 2.13, cygwin 1.7.9.

10.776 pselect

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pselect.html

Gnulib module: — Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 9, mingw, MSVC 14.

• On some platforms, this function fails to detect invalid fds with EBADF, but only if they lie beyond the current maximum open fd: FreeBSD 8.2.

Portability problems not fixed by Gnulib:

• This function has a slightly incompatible declaration on some platforms: AIX 7.1 (when

 _ALL_SOURCE is defined).

• When the sigmask argument is nonnull on platforms that do not natively support this function, race conditions are possible when its gnulib implementation temporarily modifies the signal mask, and the behavior is unspecified in a multi-threaded process.

10.777 psiginfo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/psiginfo.html

Gnulib module: — Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.9, mingw, MSVC 14, Android 4.1.

10.778 psignal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/psignal.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Cygwin 1.7.9, mingw, MSVC 14, Android 4.1.

10.779 pthread_atfork

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_atfork.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14, Android 3.0.

10.780 pthread_attr_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_destroy.html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.781 pthread_attr_getdetachstate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getdetachstate.html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.782 pthread_attr_getguardsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getguardsize.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.9, mingw, MSVC 14.

10.783 pthread_attr_getinheritsched

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getinheritsched.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 8.1.

10.784 pthread_attr_getschedparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getschedparam.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.785 pthread_attr_getschedpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getschedpolicy.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.786 pthread_attr_getscope

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getscope.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.787 pthread_attr_getstack

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getstack.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11.11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14.

10.788 pthread_attr_getstacksize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_getstacksize.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.789 pthread_attr_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_init.html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

• This function is only defined as an inline function on some platforms: HP-UX 11.11. Portability problems not fixed by Gnulib:

10.790 pthread_attr_setdetachstate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setdetachstate.html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

10.791 pthread_attr_setguardsize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setguardsize.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, Cygwin 1.7.9, mingw, MSVC 14.

10.792 pthread_attr_setinheritsched

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setinheritsched.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 8.1.

10.793 pthread_attr_setschedparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setschedparam.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.794 pthread_attr_setschedpolicy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setschedpolicy.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.795 pthread_attr_setscope

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setscope.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.796 pthread_attr_setstack

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setstack.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11.11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14.

10.797 pthread_attr_setstacksize

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_attr_setstacksize.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.798 pthread_barrier_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_barrier_destroy.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

10.799 pthread_barrier_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_barrier_init.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

10.800 pthread_barrier_wait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_barrier_wait.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

10.801 pthread_barrierattr_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_barrierattr_destroy.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

10.802 pthread_barrierattr_getpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_barrierattr_getpshared.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.2, macOS 11.1, FreeBSD 5.2.1, NetBSD 10.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

10.803 pthread_barrierattr_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_barrierattr_init.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

10.804 pthread_barrierattr_setpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_barrierattr_setpshared.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, NetBSD 10.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

10.805 pthread_cancel

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_cancel.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.806 pthread_cleanup_pop

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cleanup_pop.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, NetBSD 10.0, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.807 pthread_cleanup_push

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cleanup_push.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, NetBSD 10.0, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.808 pthread_cond_broadcast

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cond_broadcast.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

10.809 pthread_cond_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cond_destroy.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.810 pthread_cond_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cond_init.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.811 pthread_cond_signal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cond_signal.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.812 pthread_cond_timedwait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cond_timedwait.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

10.813 pthread_cond_wait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_cond_wait.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.814 pthread_condattr_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_condattr_destroy.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.815 pthread_condattr_getclock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_condattr_getclock.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.2, macOS 11.1, FreeBSD 5.2.1, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 4.4.

10.816 pthread_condattr_getpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_condattr_getpshared.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.817 pthread_condattr_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_condattr_init.html

Gnulib module: pthread-cond Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.818 pthread_condattr_setclock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_condattr_setclock.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.2, macOS 11.1, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 4.4.

10.819 pthread_condattr_setpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_condattr_setpshared.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.820 pthread_create

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_create.
html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

• This function is only defined as an inline function on some platforms: HP-UX 11.11.

Portability problems not fixed by Gnulib:

• On Linux/glibc platforms before the advent of NPTL in 2003, signals could only be sent to one particular thread. In POSIX, signals are sent to the entire process and executed by any thread of the process that happens to have the particular signal currently unblocked.

10.821 pthread_detach

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_detach.
html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.822 pthread_equal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_equal.
html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.823 pthread_exit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_exit.
html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.824 pthread_getconcurrency

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_getconcurrency.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function is removed in POSIX.1-2024. You can remove calls to this function.

10.825 pthread_getcpuclockid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_getcpuclockid.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14.

10.826 pthread_getschedparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_getschedparam.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.827 pthread_getspecific

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_getspecific.html

Gnulib module: pthread-tss Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

10.828 pthread_join

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_join.
html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

10.829 pthread_key_create

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_key_create.html

Gnulib module: pthread-tss Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

10.830 pthread_key_delete

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_key_delete.html

Gnulib module: pthread-tss Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

10.831 pthread_kill

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_kill.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.832 pthread_mutex_consistent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_consistent.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.11, macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.833 pthread_mutex_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_destroy.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.834 pthread_mutex_getprioceiling

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_getprioceiling.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, NetBSD 7.1, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.835 pthread_mutex_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_init.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.836 pthread_mutex_lock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_lock.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.837 pthread_mutex_setprioceiling

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_setprioceiling.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, NetBSD 7.1, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.838 pthread_mutex_timedlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_timedlock.html

Gnulib module: pthread mutex timedlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.839 pthread_mutex_trylock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_trylock.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.840 pthread_mutex_unlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutex_unlock.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.841 pthread_mutexattr_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_destroy.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.842 pthread_mutexattr_getprioceiling

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_getprioceiling.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, NetBSD 7.1, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.843 pthread_mutexattr_getprotocol

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_getprotocol.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, NetBSD 7.1, Minix 3.1.8, mingw, MSVC 14, Android 8.1.

10.844 pthread_mutexattr_getpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_getpshared.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.845 pthread_mutexattr_getrobust

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_getrobust.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.11, macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0. But the provided replacement is just a dummy.

Portability problems not fixed by Gnulib:

10.846 pthread_mutexattr_gettype

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_gettype.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.847 pthread_mutexattr_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_init.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.848 pthread_mutexattr_setprioceiling

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_setprioceiling.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, NetBSD 7.1, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.849 pthread_mutexattr_setprotocol

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_setprotocol.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, NetBSD 7.1, Minix 3.1.8, mingw, MSVC 14, Android 8.1.

10.850 pthread_mutexattr_setpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_setpshared.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.851 pthread_mutexattr_setrobust

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_setrobust.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.11, macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0. But the provided replacement is just a dummy.

Portability problems not fixed by Gnulib:

10.852 pthread_mutexattr_settype

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_mutexattr_settype.html

Gnulib module: pthread-mutex Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.853 pthread_once

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_once.
html

Gnulib module: pthread-once Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

• This function makes applications hang forever on some platforms: Cygwin 3.5.3.

Portability problems not fixed by Gnulib:

10.854 pthread_rwlock_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_destroy.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.855 pthread_rwlock_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_init.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.856 pthread_rwlock_rdlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_rdlock.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

• This function prefers readers to writers (meaning, when this function is called on an rwlock that is already taken by one or more readers, and another writer is already waiting to take it, this function may return successfully immediately) – a behaviour that may lead to writer starvation – on some platforms: glibc 2.28. As a workaround, you can use the gl_rwlock_t type from the Gnulib module ‘lock’.

10.857 pthread_rwlock_timedrdlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_timedrdlock.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

• This function prefers readers to writers (meaning, when this function is called on an rwlock that is already taken by one or more readers, and another writer is already waiting to take it, this function may return successfully immediately) – a behaviour that may lead to writer starvation – on some platforms: glibc 2.28.

10.858 pthread_rwlock_timedwrlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_timedwrlock.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.859 pthread_rwlock_tryrdlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_tryrdlock.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

• This function prefers readers to writers (meaning, when this function is called on an rwlock that is already taken by one or more readers, and another writer is already waiting to take it, this function may return successfully immediately) – a behaviour that may lead to writer starvation – on some platforms: glibc 2.28.

10.860 pthread_rwlock_trywrlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_trywrlock.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.861 pthread_rwlock_unlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_unlock.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

10.862 pthread_rwlock_wrlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlock_wrlock.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.3. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.863 pthread_rwlockattr_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlockattr_destroy.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.864 pthread_rwlockattr_getpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlockattr_getpshared.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, Minix 3.1.8, mingw, MSVC 14.

10.865 pthread_rwlockattr_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlockattr_init.html

Gnulib module: pthread-rwlock Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.866 pthread_rwlockattr_setpshared

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_rwlockattr_setpshared.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, Minix 3.1.8, mingw, MSVC 14.

10.867 pthread_self

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_self.
html

Gnulib module: pthread-thread Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.868 pthread_setcancelstate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_setcancelstate.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.869 pthread_setcanceltype

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_setcanceltype.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.870 pthread_setconcurrency

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_setconcurrency.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function is removed in POSIX.1-2024. You can remove calls to this function.

10.871 pthread_setschedparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_setschedparam.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.872 pthread_setschedprio

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_setschedprio.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.3, macOS 11.1, FreeBSD 14.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 8.1.

10.873 pthread_setspecific

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_setspecific.html

Gnulib module: pthread-tss Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

10.874 pthread_sigmask

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.
html

Gnulib module: pthread sigmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This function is declared in <pthread.h> instead of <signal.h> on some platforms: FreeBSD 6.4, OpenBSD 3.8.

• This function does nothing and always returns 0 in programs that are not linked with -lpthread on some platforms: FreeBSD 14.0, MidnightBSD 1.1, HP-UX 11.31, Solaris 9.

• When it fails, this functions returns −1 instead of the error number on some platforms: Cygwin 1.7.5.

Portability problems not fixed by Gnulib:

• On platforms that do not natively support this function, it has unspecified behavior in a multi-threaded process.

• In case of failure, the return value is wrong on some platforms: NetBSD 9.3 when libpthread is not in use.

10.875 pthread_spin_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_spin_destroy.html

Gnulib module: pthread-spin Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 6.0. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.876 pthread_spin_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_spin_init.html

Gnulib module: pthread-spin Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 6.0. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.877 pthread_spin_lock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_spin_lock.html

Gnulib module: pthread-spin

Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 6.0. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.878 pthread_spin_trylock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_spin_trylock.html

Gnulib module: pthread-spin

Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 6.0. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

Portability problems not fixed by Gnulib:

10.879 pthread_spin_unlock

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_spin_unlock.html

Gnulib module: pthread-spin

Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 6.0. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8.

10.880 pthread_testcancel

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
pthread_testcancel.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.881 ptsname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ptsname.html

Gnulib module: ptsname Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14.

• This function fails to set errno on failure on some platforms: FreeBSD 8.2. Portability problems not fixed by Gnulib:

• On Solaris 11 2010-11, this function fails on all BSD-style /dev/pty* device files.

• This function is not thread-safe on some platforms: Cygwin 1.7.9. Likewise, the gnulib replacement is not thread-safe.

Note that the Gnulib module ptsname_r is a version of this function that is more likely to be thread-safe.

10.882 putc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putc.html

Gnulib module: stdio, nonblocking, sigpipe Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14. Portability problems fixed by Gnulib module stdio, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.883 putc_unlocked

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putc_unlocked.
html

Gnulib module: — Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.884 putchar

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putchar.html

Gnulib module: stdio, nonblocking, sigpipe Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14. Portability problems fixed by Gnulib module stdio, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.885 putchar_unlocked

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
putchar_unlocked.html

Gnulib module: — Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.886 putenv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putenv.html,
amended through https://www.austingroupbugs.net/view.php?id=1598.

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Environment-Access.html.

Note: POSIX putenv supports adding or changing the value of an environment variable, while glibc also supports removing an environment variable (as if by unsetenv).

Gnulib module: putenv-gnu Portability problems fixed by Gnulib:

• This function does not support removing an environment variable on some platforms: macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, mingw, MSVC 14, Android 11.0. Portability problems not fixed by Gnulib:

10.887 putmsg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putmsg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.888 putpmsg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putpmsg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.889 puts

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/puts.html

Gnulib module: stdio, nonblocking, sigpipe Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.890 pututxline

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pututxline.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.891 putwc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putwc.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.892 putwchar

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/putwchar.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.893 pwrite

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html

Gnulib module: pwrite Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• On platforms where off_t is a 32-bit type, this function may not work correctly on files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• This function does not fail when an invalid (negative) offset is passed when large file support is enabled on some platforms: HP-UX 11.11.

• This function uses an arbitrary offset instead of the off_t argument when large file support is enabled on some platforms: HP-UX 11.11. Portability problems not fixed by Gnulib:

10.894 qsort

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/qsort.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.895 quick_exit

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 6.4, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4.

10.896 raise

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/raise.html

Gnulib module: raise Portability problems fixed by Gnulib:

• This function is missing on some old platforms.

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.897 rand

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rand.html

Gnulib module: rand Portability problems fixed by Gnulib:

• This function crashes when used in multithreaded programs on some platforms: CheriBSD. Portability problems not fixed by Gnulib:

• This function is only defined as an inline function on some platforms: Android 4.4.

• This function is not multithread-safe on some platforms: musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, AIX 7.1, Solaris 11.4.

10.898 rand_r

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rand_r.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.4.

• This function is removed in POSIX.1-2024. Use the function random_r from Gnulib module random_r instead.

10.899 random

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/random.html

Gnulib module: random Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is only defined as an inline function on some platforms: Android 4.4.

• This function is not multithread-safe on some platforms: macOS 12.5, FreeBSD 13.2, Solaris 11.4, Cygwin 3.4.6, Haiku. Portability problems not fixed by Gnulib:

• This function has a slightly incompatible declaration (the return type being ‘int’ instead of ‘long’) on some platforms: Cygwin 1.5.25, Haiku.

• When ‘srandom’ was not called, this function returns a non-deterministic sequence rather than a deterministic sequence of numbers on some platforms: OpenBSD 7.4.

10.900 read

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html

Gnulib module: read, stdio, nonblocking Portability problems fixed by Gnulib module read:

• This function is declared in a different header file (namely, <io.h>) on some platforms: mingw, MSVC 14.

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• This function may fail with error EINTR, even in programs that don’t install any signal handlers, on some platforms: macOS 11.1.

For handling EINTR, Gnulib provides a module ‘safe-read’ with a function safe_read.

10.901 readdir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html

Gnulib module: readdir Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14.

• On platforms where off_t is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. Also, on platforms where ino_t is a 32-bit type, this function may report inode numbers incorrectly. This can occur with file systems such as XFS (typically on large disks) and NFS. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• Although POSIX places no restrictions on d_ino values, some older systems are rumored to return d_ino values equal to zero for directory entries that do not really exist. Although Gnulib formerly attempted to cater to these older systems, this caused misbehavior on standard systems and so Gnulib does not attempt to cater to them any more. If you know of any problems caused by this, please send a bug report.

10.902 readdir_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir_r.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function is planned to be removed from POSIX and to be deprecated in glibc. Portable applications should use readdir.

• This function has an incompatible declaration on some platforms: Solaris 11.4 (when

_POSIX_PTHREAD_SEMANTICS is not defined).

• On platforms where off_t is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. Also, on platforms where ino_t is a 32-bit type, this function may report inode numbers incorrectly. This can occur with file systems such as XFS (typically on large disks) and NFS. See Section 14.2 [Large File Support], page 770.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.903 readlink

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html

Gnulib module: readlink

Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• Some platforms mistakenly succeed on file names ending in /: FreeBSD 7.2, Solaris 9, Mac OS X 10.10.

• On some platforms, this function returns int instead of ssize_t: glibc 2.4, FreeBSD 6.0, OpenBSD 6.7, Cygwin 1.5.x, AIX 7.1.

Portability problems mostly fixed by Gnulib:

• On some platforms, this function fails and sets errno to ERANGE rather than returning truncated contents: AIX 7.2, HP-UX 11. The Gnulib replacement normally works as POSIX requires by returning the truncated contents. However, if the full link contents are unreasonably large (more than 4000 bytes) the replacement clears the entire buffer and returns the buffer size; although this is not a complete fix, it suffices for typical callers, which ignore the buffer contents anyway.

Portability problems not fixed by Gnulib:

• This function always fails on platforms that don’t support symlinks: mingw, MSVC 14.

• When this function is called on a directory: In the case of NFS mounted directories, Cygwin sets errno to ENOENT or EIO instead of EINVAL. To avoid this problem, check for a directory before calling this function.

• When this function is called on a file that is not a symbolic link: Cygwin may set errno

to EACCES instead of EINVAL.

• When this function fails because it is called on an existing non-directory’s name concatenated to /, it sets errno to EINVAL: AIX 7.2.

• Symlink contents do not always have a trailing null byte, and there is no indication if symlink contents were truncated if the return value matches the length. Furthermore, Linux sets errno to EINVAL if the requested length is zero. Use the gnulib module areadlink for improved ability to read symlink contents.

10.904 readlinkat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlinkat.html

Gnulib module: readlinkat

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.9, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• Some platforms mistakenly succeed on file names ending in /: OS X 10.10.

• On some platforms, this function returns int instead of ssize_t: AIX 7.1.

Portability problems mostly fixed by Gnulib:

• On some platforms, this function fails and sets errno to ERANGE rather than returning truncated contents: AIX 7.2. The Gnulib replacement normally works as POSIX requires by returning the truncated contents. However, if the full link contents are unreasonably large (more than 4000 bytes) the replacement clears the entire buffer and returns the buffer size; although this is not a complete fix, it suffices for typical callers, which ignore the buffer contents anyway.

Portability problems not fixed by Gnulib:

• This function always fails on platforms that don’t support symlinks: mingw, MSVC 14.

• When this function is called on a directory: In the case of NFS mounted directories, Cygwin sets errno to ENOENT or EIO instead of EINVAL. To avoid this problem, check for a directory before calling this function.

• When this function is called on a file that is not a symbolic link: Cygwin may set errno

to EACCES instead of EINVAL.

• When this function fails because it is called on an existing non-directory’s name concatenated to /, it sets errno to EINVAL: AIX 7.2.

• When this function is called on an empty file name, it fails with error EBADF instead of ENOENT: Cygwin 3.4.6.

• Symlink contents do not always have a trailing null byte, and there is no indication if symlink contents were truncated if the return value matches the length. Furthermore, Linux sets errno to EINVAL if the requested length is zero. Use the gnulib module areadlink for improved ability to read symlink contents.

10.905 readv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/readv.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.906 realloc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/realloc.html

Gnulib module: realloc-posix

Portability problems fixed by Gnulib:

• Upon failure, the function does not set errno to ENOMEM on some platforms: mingw, MSVC 14.

• On some platforms, realloc (p, n) can succeed even if n exceeds PTRDIFF_MAX. Although this behavior is arguably allowed by POSIX it can lead to behavior not defined by POSIX later, so realloc-posix does not allow going over the limit.

Without the ‘realloc-gnu’ module described below, it is not portable to call realloc with a size of 0. With a NULL pointer argument, this is the same ambiguity as malloc (0) on whether a unique zero-size object is created. With a non-NULL pointer argument p, C17 says that it is implementation-defined whether realloc (p, 0) frees p. Behavior varies on whether realloc (p, 0) always frees p and successfully returns a null pointer, or always fails and leaves p valid, or usually succeeds and returns a unique zero-size object; a program not suspecting these variations in semantics will leak memory (either the still-valid p, or the non-NULL return value).

Extension: Gnulib provides a module ‘realloc-gnu’ that substitutes a realloc implementation that behaves more like the glibc implementation. It fixes these portability problems:

• realloc (NULL, 0) returns NULL on success on some platforms: AIX 7.2.

• On some platforms, realloc (p, 0) with non-null p might not free p, or might clobber errno, or might not return NULL.

10.907 realpath

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html

Gnulib module: canonicalize-lgpl

Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function does not allow for a NULL ‘resolved’ parameter on some platforms: Mac OS X 10.5, FreeBSD 6.4, OpenBSD 4.4, Solaris 10.

• This function does not always return an absolute path on some platforms: Solaris 10.

• This function fails to detect trailing slashes on non-directories on some platforms: glibc 2.3.5, macOS 11.1, OpenBSD 6.0.

• This function fails to recognize non-directories or symlinks to non-directories followed by ‘..’ on some platforms: Cygwin 2.9.

• This function misbehaves on consecutive slashes on some platforms: musl libc 1.2.2, AIX 7.

Portability problems not fixed by Gnulib:

• This function does not allow to determine the required size of output buffer; the use of a non-NULL ‘resolved’ buffer is non-portable, since PATH MAX, if it is defined, is nothing more than a guess.

10.908 recv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/recv.html

Gnulib module: recv Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

Portability problems not fixed by Gnulib:

10.909 recvfrom

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/recvfrom.html

Gnulib module: recvfrom Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

• On HP-UX 11, in 64-bit mode, when the macro _HPUX_ALT_XOPEN_SOCKET_API is not defined, this function behaves incorrectly because it is declared to take a pointer to a 64-bit wide socklen_t entity but in fact considers it as a pointer to a 32-bit wide

unsigned int entity.

Portability problems not fixed by Gnulib:

• Some platforms don’t have a socklen_t type; in this case this function’s sixth argument type is ‘int *’.

10.910 recvmsg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/recvmsg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.911 regcomp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/regcomp.html

Gnulib module: regex Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• Many regular expression implementations have bugs. Portability problems not fixed by Gnulib:

10.912 regerror

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/regerror.html

Gnulib module: regex Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.913 regexec

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/regexec.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-regexec-2.html

Gnulib module: regex Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• Many regular expression implementations have bugs. Portability problems not fixed by Gnulib:

10.914 regfree

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/regfree.html

Gnulib module: regex Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.915 remainder

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remainder.html

Gnulib module: remainder or remainder-ieee Portability problems fixed by either Gnulib module remainder or remainder-ieee:

• This function is missing on some platforms: MSVC 9. Portability problems fixed by Gnulib module remainder-ieee: Portability problems not fixed by Gnulib:

10.916 remainderf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remainderf.html

Gnulib module: remainderf or remainderf-ieee Portability problems fixed by either Gnulib module remainderf or remainderf-ieee:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9. Portability problems fixed by Gnulib module remainderf-ieee: Portability problems not fixed by Gnulib:

10.917 remainderl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remainderl.html

Gnulib module: remainderl or remainderl-ieee Portability problems fixed by either Gnulib module remainderl or remainderl-ieee:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

• This function returns completely wrong values on some platforms: OpenBSD 5.1/SPARC.

• This function produces results which are accurate to only 16 digits on some platforms: musl libc 1.2.2/arm64, musl libc 1.2.2/s390x, NetBSD 10.0. Portability problems fixed by Gnulib module remainderl-ieee: Portability problems not fixed by Gnulib:

10.918 remove

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remove.html

Gnulib module: remove Portability problems fixed by Gnulib:

• This function fails to reject trailing slashes on non-directories on some platforms: FreeBSD 7.2, Solaris 9.

• This function mistakenly removes a directory with remove("dir/./") on some platforms: Cygwin 1.5.x.

• This function does not remove empty directories on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.919 remque

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remque.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

10.920 remquo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remquo.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

10.921 remquof

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remquof.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.922 remquol

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/remquol.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

10.923 rename

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html

Gnulib module: rename Portability problems fixed by Gnulib:

• This function does not allow trailing slashes when creating a destination directory, as

in rename("dir","new/"): NetBSD 1.6.

• This function does not reject trailing slashes on the destination for non-directories on some platforms, as in rename("file","new/"): AIX 7.1, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not reject trailing slashes on symlinks to non-directories on some

platforms, as in rename("link-to-file/","f"): FreeBSD 7.2.

• This function ignores trailing slashes on symlinks on some platforms, such that

rename("link/","new") corrupts link: Solaris 9.

• This function incorrectly reduces the link count when comparing two spellings of a hard link on some platforms: NetBSD 1.6, Cygwin 1.5.x.

• This function will not always replace an existing destination on some platforms: Cygwin 1.5.x, mingw, MSVC 14. However, the replacement is not atomic for directories, and may end up losing the empty destination if the source could not be renamed.

• This function mistakenly allows names ending in ‘.’ or ‘..’ on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

• This function does not reject attempts to rename existing directories and non-directories onto one another on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• POSIX requires that rename("symlink-to-dir/","dir2") rename dir and leave
symlink-to-dir dangling; likewise, it requires that rename("dir","dangling/")

rename dir so that dangling is no longer a dangling symlink. This behavior is counter-intuitive, so on some systems, rename fails with ENOTDIR if either argument is a symlink with a trailing slash: glibc, OpenBSD, Cygwin 1.7.

• POSIX requires that rename do nothing and return 0 if the source and destination are hard links to the same file. This behavior is counterintuitive, and on some systems renameat is a no-op in this way only if the source and destination identify the same directory entry. On these systems, for example, although renaming ./f to f is a no-op, renaming f to g deletes f when f and g are hard links to the same file: NetBSD 7.0.

• After renaming a non-empty directory over an existing empty directory, the old directory name is still visible through the stat function for 30 seconds after the rename, on NFS file systems, on some platforms: Linux 2.6.18.

• This function will not rename a source that is currently opened by any process: mingw, MSVC 14.

10.924 renameat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/renameat.html

Gnulib module: renameat

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• This function is declared in <unistd.h>, not in <stdio.h>, on some platforms: NetBSD 7.0, Solaris 11.4.

• This function is declared in <sys/stat.h>, not in <stdio.h>, on some platforms: Android 4.3.

• This function does not reject trailing slashes on non-directories on some platforms, as

in renameat(fd,"file",fd,"new/"): Solaris 11.4.

• This function ignores trailing slashes on symlinks on some platforms, such that

renameat(fd,"link/",fd,"new") corrupts link: Solaris 9.

Portability problems not fixed by Gnulib:

• POSIX requires that renameat(fd,"symlink-to-dir/",fd,"dir2") re-

name dir and leave symlink-to-dir dangling; likewise, it requires that

renameat(fd,"dir",fd,"dangling/") rename dir so that dangling is no longer a

dangling symlink. This behavior is counter-intuitive, so on some systems, renameat fails with ENOTDIR if either argument is a symlink with a trailing slash: glibc, OpenBSD, Cygwin 1.7.

• POSIX requires that renameat do nothing and return 0 if the source and destination are hard links to the same file. This behavior is counterintuitive, and on some systems renameat is a no-op in this way only if the source and destination identify the same directory entry. On these systems, for example, although renaming ./f to f is a no-op, renaming f to g deletes f when f and g are hard links to the same file: NetBSD 7.0.

• After renaming a non-empty directory over an existing empty directory, the old directory name is still visible through the stat function for 30 seconds after the rename, on NFS file systems, on some platforms: Linux 2.6.18.

• This function will not rename a source that is currently opened by any process: mingw, MSVC 14.

10.925 rewind

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rewind.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

10.926 rewinddir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rewinddir.html

Gnulib module: rewinddir Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14.

• On Mac OS X platforms where long int is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

10.927 rint

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rint.html

Gnulib module: rint Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 9. Portability problems not fixed by Gnulib:

10.928 rintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rintf.html

Gnulib module: rintf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9. Portability problems not fixed by Gnulib:

10.929 rintl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rintl.html

Gnulib module: rintl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

• This function produces wrong results for negative numbers on some platforms: NetBSD 8.0. Portability problems not fixed by Gnulib:

10.930 rmdir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/rmdir.html

Gnulib module: rmdir Portability problems fixed by Gnulib:

• This function is declared in different header files (namely, <io.h> or <direct.h>) on some platforms: mingw, MSVC 14.

• This function mistakenly removes a directory with rmdir("dir/./") on some platforms: Cygwin 1.5.x.

• This function fails with EINVAL instead of the expected ENOTDIR for rmdir("file/") on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• When rmdir fails because the specified directory is not empty, the errno value is system dependent.

• POSIX requires that rmdir("link-to-empty/") remove empty and leave link-to-

empty as a dangling symlink. This is counter-intuitive, so some systems fail with ENOTDIR instead: glibc

10.931 round

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/round.html

Gnulib module: round or round-ieee Portability problems fixed by either Gnulib module round or round-ieee:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9.

• This function is not declared on some platforms: glibc 2.8.

• This functions returns a wrong result for x = 1/2 − 2^{−}54 on some platforms: NetBSD 3.0, AIX 7.1.

Portability problems fixed by Gnulib module round-ieee:

• This function returns a positive zero for an argument between −0.5 and 0 on some platforms: AIX 7.1.

Portability problems not fixed by Gnulib:

10.932 roundeven

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.933 roundevenf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.934 roundevenl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.935 roundf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/roundf.html

Gnulib module: roundf or roundf-ieee

Portability problems fixed by either Gnulib module roundf or roundf-ieee:

• This function is missing on some platforms: FreeBSD 5.2.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

• This function is not declared on some platforms: glibc 2.8.

• This functions returns a wrong result for x = 1/2 − 2^{−}25 on some platforms: mingw.

Portability problems fixed by Gnulib module roundf-ieee:

• This function returns a positive zero for an argument between −0.5 and 0 on some platforms: AIX 7.1.

10.936 roundl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/roundl.html

Gnulib module: roundl or roundl-ieee Portability problems fixed by either Gnulib module roundl or roundl-ieee:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

• This function is not declared on some platforms: glibc 2.8. Portability problems fixed by Gnulib module roundl-ieee:

• This function returns a positive zero for an argument between −0.5 and 0 on some platforms: AIX 7.1. Portability problems not fixed by Gnulib:

10.937 scalbln

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scalbln.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9, Android 9.0.

10.938 scalblnf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scalblnf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9, Android 9.0.

10.939 scalblnl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scalblnl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 9.0.

10.940 scalbn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scalbn.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, MSVC 9.

10.941 scalbnf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scalbnf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.942 scalbnl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scalbnl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

10.943 scandir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scandir.html

Gnulib module: scandir Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 9, mingw, MSVC 14.

• On platforms where off_t is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. Also, on platforms where ino_t is a 32-bit type, this function may report inode numbers incorrectly. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• The fourth parameter of this function is declared as int (*) (const void *, const void *) on some platforms: glibc 2.3.6, macOS 10.7, FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7.

• The fourth parameter of this function is declared as int (*) (void *, void *) on some platforms: AIX 5.1.

10.944 scanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-scanf.html

Gnulib module: stdio, nonblocking

Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• C99 and POSIX.1-2001 and later require end-of-file to be sticky, that is, they require this function to act as if it reads end-of-file if feof would return nonzero. However, on some systems this function attempts to read from the underlying file descriptor even if the stream’s end-of-file indicator is set. These systems include glibc and default Solaris.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows, this function doesn’t support the hh, ll, j, t, z size specifiers.

10.945 sched_get_priority_max

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
sched_get_priority_max.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, HP-UX 11, mingw, MSVC 14.

10.946 sched_get_priority_min

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
sched_get_priority_min.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, HP-UX 11, mingw, MSVC 14.

10.947 sched_getparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sched_getparam.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.948 sched_getscheduler

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
sched_getscheduler.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.949 sched_rr_get_interval

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
sched_rr_get_interval.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, mingw, MSVC 14.

10.950 sched_setparam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sched_setparam.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.951 sched_setscheduler

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
sched_setscheduler.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sched-setscheduler.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

10.952 sched_yield

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sched_yield.html

Gnulib module: sched yield Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14. But the provided replacement is just a dummy on some of these platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

10.953 seed48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/seed48.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.954 seekdir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/seekdir.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where long int is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: MSVC 14, Android 5.1.

10.955 select

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html

Gnulib module: select

Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), select can only be called on descriptors created by the socket function, not on regular file descriptors.

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

• On some platforms, this function fails to detect invalid fds with EBADF, but only if they lie beyond the current maximum open fd: FreeBSD 8.2.

Portability problems not fixed by Gnulib:

• When you call select with a timeout, some implementations modify the timeout parameter so that upon return from the function, it contains the amount of time not slept. Other implementations leave the timeout parameter unmodified.

• Under Windows, when passing a pipe, Gnulib’s select replacement might return 0 even before the timeout has passed. Programs using it with pipes can thus busy wait.

• On Linux, when some file descriptor refers to a regular file, select may fail, setting

 errno to EBADF.
10.956 sem_close

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_close.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.957 sem_destroy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_destroy.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This function is not implemented on some platforms: Mac OS X 10.11.

10.958 sem_getvalue

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_getvalue.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This function is not implemented on some platforms: Mac OS X 10.11.

10.959 sem_init

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_init.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This function is not implemented on some platforms: Mac OS X 10.11.

10.960 sem_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_open.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.961 sem_post

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_post.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.962 sem_timedwait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_timedwait.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, mingw, MSVC 14.

10.963 sem_trywait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_trywait.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.964 sem_unlink

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_unlink.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14.

10.965 sem_wait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_wait.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.966 semctl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/semctl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.967 semget

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/semget.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.968 semop

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/semop.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.969 send

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/send.html

Gnulib module: send Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead. Portability problems not fixed by Gnulib:

10.970 sendmsg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sendmsg.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.971 sendto

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sendto.html

Gnulib module: sendto Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead. Portability problems not fixed by Gnulib:

10.972 setbuf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setbuf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.973 setegid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setegid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.23, mingw, MSVC 14.

10.974 setenv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setenv.html

Gnulib module: setenv Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.23, Solaris 9, mingw, MSVC 14.

• On some platforms, this function does not fail with ‘EINVAL’ when passed an empty string or a string containing ‘=’: Mac OS X 10.5, FreeBSD 6.0, NetBSD 1.6, OpenBSD 6.7, Cygwin 1.5.x.

• On some platforms, this function removes a leading ‘=’ from the value argument: Cygwin 1.5.x. Portability problems not fixed by Gnulib:

• Older versions of POSIX required that setenv(NULL,"",0) gracefully fail with EINVAL, but not all implementations guarantee this, and the requirement was removed.

10.975 seteuid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/seteuid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.23, mingw, MSVC 14.

10.976 setgid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setgid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.977 setgrent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setgrent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.978 sethostent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sethostent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 8.1.

10.979 setitimer

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setitimer.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• POSIX says this function is obsolescent and it is planned to be removed in POSIX 202x. Use the functions timer_create and timer_settime instead.

10.980 setjmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setjmp.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• POSIX does not specify whether setjmp saves the signal mask in the jmp_buf. It does on BSD platforms, and on glibc platforms when _BSD_SOURCE (and/or _DEFAULT_ SOURCE on glibc >= 2.19) is defined; in this case setjmp behaves like sigsetjmp(.,1), and functions _setjmp and _longjmp are available that don’t save or restore the signal mask. On System V platforms (excluding HP-UX), and on glibc platforms by default, setjmp doesn’t save the signal mask.

10.981 setkey

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setkey.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.34, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared in <stdlib.h> (without -D_GNU_SOURCE) on some platforms: glibc (at least 2.11–2.13).

• POSIX 202x says this function is obsolescent and it is planned to be removed in a future version.

10.982 setlocale

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setlocale.html

Gnulib module: setlocale, setlocale-null Portability problems fixed by Gnulib module setlocale:

• On Windows platforms (excluding Cygwin), setlocale(category,"") and setlocale(category,NULL) both ignore the environment variables LC_ALL,

category, and LANG.

• On Windows platforms (excluding Cygwin) and Cygwin 1.5.x, setlocale(LC_ ALL,name) succeeds and sets the LC CTYPE category to ‘C’ when it does not support the encoding, instead of failing.

• On Windows platforms (excluding Cygwin), setlocale understands different locale names, that are not based on ISO 639 language names and ISO 3166 country names.

• On Android < 5.0, which doesn’t have locales, the setlocale function always fails. The replacement, however, supports only the locale names "C" and "POSIX".

Portability problems fixed by Gnulib module setlocale or setlocale-null:

• Invocations of setlocale (..., NULL) are not multithread-safe on some platforms: musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin. To make these invocations multithread-safe, you need the Gnulib module setlocale, or you need to change the code to invoke setlocale_null or setlocale_null_r instead.

Portability problems not fixed by Gnulib:

• On Cygwin 1.5.x, which doesn’t have locales, setlocale(LC_ALL,NULL) always returns

"C".

• On Cygwin 1.7.0, only the charset portion of a locale designation is honored.

• On OpenBSD, setlocale(LC_ALL,"") will only update categories that are deemed appropriate for the LC_ALL environment value, even if there are other categories set to different values in the environment. In addition any value is accepted for LC_CTYPE, and so NULL is never returned to indicate a failure to set locale. To verify category values, each category must be set individually with setlocale(LC_COLLATE,"") etc.

• On Android 5.0 and newer, the default locale (i.e. the locale in use when setlocale was not called) is the "C.UTF-8" locale, not the "C" locale. Additionally, a setlocale call that is meant to set the "C" or "POSIX" locale actually sets an equivalent of the

"C.UTF-8" locale.

10.983 setlogmask

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setlogmask.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.984 setnetent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setnetent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 2.9, mingw, MSVC 14, Android 8.1.

10.985 setpayload

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: setpayload Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

10.986 setpayloadf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: setpayloadf Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

10.987 setpayloadl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: setpayloadl Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

10.988 setpayloadsig

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: setpayloadsig Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.989 setpayloadsigf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: setpayloadsigf Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

10.990 setpayloadsigl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html.

Gnulib module: setpayloadsigl Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

10.991 setpgid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpgid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.992 setpgrp

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpgrp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This function is removed in POSIX.1-2024. Use the function setpgid or setsid instead, as appropriate.

10.993 setpriority

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpriority.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.994 setprotoent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setprotoent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 8.1.

10.995 setpwent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpwent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.996 setregid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setregid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.997 setreuid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setreuid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.998 setrlimit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setrlimit.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getrlimit-1.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where rlim_t is a 32-bit type, this function does not allow to set limits 4 GiB and larger, such as for RLIMIT FSIZE. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.999 setservent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setservent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1000 setsid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1001 setsockopt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-setsockopt-2.html

Gnulib module: setsockopt Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead.

Portability problems not fixed by Gnulib:

• Many socket options are not available on all platforms.

10.1002 setstate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setstate.html

Gnulib module: random Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• This function is not declared on some platforms: Cygwin 1.5.25. Portability problems not fixed by Gnulib:

• This function has a slightly incompatible declaration (the argument type being ‘const char *’ instead of ‘char *’) on some platforms: macOS 11.1, AIX 7.1, HP-UX 11.31, Solaris 11.4, Solaris 11 OpenIndiana.

10.1003 setuid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setuid.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1004 setutxent

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setutxent.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

10.1005 setvbuf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/setvbuf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows platforms (excluding Cygwin), _IOLBF (line-buffering) is treated as if it were _IOFBF (full buffering), possibly with a warning generated.

10.1006 shm_open

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_open.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.1007 shm_unlink

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_unlink.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.1008 shmat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/shmat.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

• On Linux, the flag SHM_REMAP is needed in order to force shmat to replace existing memory mappings in the specify address range. On other platforms, it is not needed.

10.1009 shmctl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/shmctl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.1010 shmdt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/shmdt.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

10.1011 shmget

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/shmget.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 7.1.

• On many platforms (not Linux), SHMMAX is so small that it is unusable for reasonable applications, and/or shmget requires superuser privileges.

10.1012 shutdown

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/shutdown.html

Gnulib module: shutdown Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead. Portability problems not fixed by Gnulib:

10.1013 sigaction

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaction.html

Gnulib module: sigaction Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• POSIX recommends that when specifying SA RESETHAND, SA NODEFER must also be specified.

• Support for SA ONSTACK is missing on some platforms: mingw, MSVC 14, cygwin.

• Support for SA SIGINFO is missing on some platforms: mingw, MSVC 14.

• Support for SIGCHLD, and thus for SA NOCLDSTOP and SA NOCLDWAIT, is missing on some platforms: mingw, MSVC 14.

• Support for SA RESETHAND is missing on some platforms: NonStop.

• Support for SA RESTART is missing on some platforms: mingw, MSVC 14, NonStop.

• The symbolic value SIG_IGN for the SIGCHLD signal is equivalent to a signal handler

        void handle_child (int sigchld)
        {
          while (waitpid (-1, NULL, WNOHANG) > 0)
            ;
        }

except that SIG_IGN for SIGCHLD has the effect that the children execution times are not accounted in the times function. On some platforms (BSD? SystemV? Linux?), you need to use the sigaction flag SA_NOCLDWAIT in order to obtain this behavior.

10.1014 sigaddset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaddset.html

Gnulib module: sigprocmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

10.1015 sigaltstack

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaltstack.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.x, mingw, MSVC 14.

• sigaltstack doesn’t work on HP-UX 11/IA-64 and OpenBSD 3.6/Sparc64.

10.1016 sigdelset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigdelset.html

Gnulib module: sigprocmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

10.1017 sigemptyset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigemptyset.html

Gnulib module: sigprocmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

10.1018 sigfillset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigfillset.html

Gnulib module: sigprocmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

10.1019 sighold

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sighold.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 7.1.

• This function is removed in POSIX.1-2024. Use the function sigprocmask instead.

10.1020 sigignore

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigignore.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 7.1.

• This function is removed in POSIX.1-2024. Use the function sigaction instead.

10.1021 siginterrupt

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/siginterrupt.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This funciton is removed in POSIX.1-2024. Use the function sigaction instead.

Note: POSIX recommends using sigaction with SA RESTART instead of

siginterrupt (sig, 0).
10.1022 sigismember

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigismember.html

Gnulib module: sigprocmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

10.1023 siglongjmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/siglongjmp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This is only provided as a macro on some platforms: Cygwin.

10.1024 signal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/signal.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function crashes when invoked with invalid arguments on some platforms: MSVC • On System V platforms, when the signal is triggered, the kernel uninstalls the handler

(i.e. resets the signal’s action to SIG DFL) before invoking the handler. This opens the door to race conditions: undesired things happen if the signal is triggered twice and the signal handler was not quick enough reinstalling itself as a handler. On BSD platforms and glibc platforms, on the other hand, when the signal is triggered, the kernel blocks the signal before invoking the handler. This is saner, but POSIX still allows either behavior. To avoid this problem, use sigaction instead of signal.

10.1025 signbit

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/signbit.html

Gnulib module: signbit

Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, AIX 5.1, Solaris 11.0, MSVC 9, Android 9.0.

Portability problems not fixed by Gnulib:

10.1026 signgam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/signgam.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 10.13, Minix 3.1.8, AIX 5.1, mingw, MSVC 14.

10.1027 sigpause

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigpause.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sigpause-3.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 7.1.

• This function is removed in POSIX.1-2024. Use the function sigsuspend instead.

10.1028 sigpending

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigpending.html

Gnulib module: sigprocmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.1029 sigprocmask

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigprocmask.html

Gnulib module: sigprocmask Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• In case of failure, the return value is wrong on some platforms: NetBSD 10.0 when libpthread is in use.

Note: Although sigprocmask officially has undefined behaviour in multi-threaded programs, in practice it is essentially equivalent to pthread_sigmask, with only a difference regarding the error return convention. It’s simpler to use sigprocmask, since it does not require linking with -lpthread on some platforms: glibc, NetBSD, OpenBSD, AIX.

10.1030 sigqueue

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigqueue.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 5.1.

10.1031 sigrelse

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigrelse.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 7.1.

• This function is removed in POSIX.1-2024. Use the function sigprocmask instead.

10.1032 sigset

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigset.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 7.1.

• This function is removed in POSIX.1-2024. Use the function sigaction instead.

10.1033 sigsetjmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigsetjmp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.1034 sigsuspend

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigsuspend.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1035 sigtimedwait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigtimedwait.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

• Linux implements the meaning of NULL timeout by doing what sigwaitinfo does; other platforms may not do the same.

10.1036 sigwait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigwait.html

Gnulib module: extensions Portability problems fixed by Gnulib:

• This function has an incompatible declaration on some platforms: Solaris 11.4 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• On Linux/glibc platforms before the advent of NPTL, signals could only be sent to one particular thread. In POSIX, signals are sent to the entire process and executed by any thread of the process that happens to have the particular signal currently unblocked.

10.1037 sigwaitinfo

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigwaitinfo.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 5.1.

10.1038 sin

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sin.html

Gnulib module: sin Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1039 sinf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sinf.html

Gnulib module: sinf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.1040 sinh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sinh.html

Gnulib module: sinh Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1041 sinhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sinhf.html

Gnulib module: sinhf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.1042 sinhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sinhl.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.1043 sinl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sinl.html

Gnulib module: sinl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC Portability problems not fixed by Gnulib:

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.1044 sleep

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html

Gnulib module: sleep Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw (2005 or newer), MSVC 14.

• This function takes milliseconds as argument and returns void on some platforms: mingw (2005 and older).

• This function cannot sleep longer than 49.7 days on some platforms: Cygwin 1.5.x.

Portability problems not fixed by Gnulib:

• According to POSIX, the sleep function may interfere with the program’s use of the SIGALRM signal. On Linux, it doesn’t; on other platforms, it may.

10.1045 snprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html

Gnulib module: snprintf or snprintf-posix or snprintf-gnu Portability problems fixed by either Gnulib module snprintf or snprintf-posix or

snprintf-gnu:

• This function is missing on some platforms: MSVC 14.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw.

• This function does not return a byte count as specified in C99 on some platforms: HP-UX 11, Solaris 9, mingw.

Portability problems fixed by either Gnulib module snprintf-posix or snprintf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

• This function does not truncate the result as specified in C99 on some platforms: mingw, MSVC 14.

• This function does not fully support the ‘n’ directive on some platforms: HP-UX 11, mingw.

Portability problems fixed by Gnulib module snprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module snprintf-posix or snprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

10.1046 sockatmark

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sockatmark.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

10.1047 socket

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/socket.html

Gnulib module: socket Portability problems fixed by Gnulib:

• On Windows platforms (excluding Cygwin), the descriptors returned by the socket function cannot be used in calls to read, write, and close; you have to use recv, send, closesocket in these cases instead.

• On Windows platforms (excluding Cygwin), error codes from this function are not placed in errno, and WSAGetLastError must be used instead. Portability problems not fixed by Gnulib:

10.1048 socketpair

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/socketpair.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1049 sprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sprintf.html

Gnulib module: sprintf-posix or sprintf-gnu Portability problems fixed by either Gnulib module sprintf-posix or sprintf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

• The compiler warns that this function is deprecated: macOS 13.0.

Portability problems fixed by Gnulib module sprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module sprintf-posix or sprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14. Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

10.1050 sqrt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sqrt.html

Gnulib module: sqrt Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1051 sqrtf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sqrtf.html

Gnulib module: sqrtf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.1052 sqrtl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sqrtl.html

Gnulib module: sqrtl Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces very imprecise results on some platforms: OpenBSD 5.1/SPARC.

Portability problems not fixed by Gnulib:

10.1053 srand

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/srand.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is only defined as an inline function on some platforms: Android 4.4.

• This function has no effect on rand invocations in other threads on some platforms: Cygwin 3.4.6.

10.1054 srand48

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/srand48.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.1055 srandom

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/srandom.html

Gnulib module: random Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is only defined as an inline function on some platforms: Android 4.4. Portability problems not fixed by Gnulib:

• This function has a slightly incompatible declaration (the return type being ‘long’ instead of ‘void’) on some platforms: Cygwin 1.5.25.

• The parameter is unsigned long instead of unsigned int on some platforms: MidnightBSD 2.0.

• This function has no effect on some platforms: OpenBSD 7.4. This platform has,

 instead, a function srandom_deterministic.

10.1056 sscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sscanf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows, this function doesn’t support the hh, ll, j, t, z size specifiers.

10.1057 stat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html

Gnulib module: stat Portability problems fixed by Gnulib:

• On platforms where off_t is a 32-bit type, stat may not correctly report the size of files or block devices 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• On Linux/x86 and Linux/x86 64, applications compiled in 32-bit mode cannot access files that happen to have a 64-bit inode number. This can occur with file systems such as XFS (typically on large disks) and NFS. See Section 14.2 [Large File Support], page 770.

• The st_atime, st_ctime, st_mtime fields are affected by the current time zone and by the DST flag of the current time zone on some platforms: mingw, MSVC 14 (when the environment variable TZ is set).

• On MSVC 14, this function fails with error ENOENT on files such as ‘C:\pagefile.sys’

and on directories such as ‘C:\System Volume Information’.

• On some platforms, stat("link-to-file/",buf) succeeds instead of failing with ENOTDIR. macOS 11.1, FreeBSD 7.2, AIX 7.1, Solaris 9, mingw64.

• On some platforms, stat(".",buf) and stat("./",buf) give different results: mingw, MSVC 14.

• On macOS 12.6, when this function yields a timestamp with a nonpositive tv_sec value, tv_nsec might be in the range −999999999..−1, representing a negative nanoseconds offset from tv_sec. Solaris 11.4 is similar, except that tv_sec might also be −1000000000.

Portability problems not fixed by Gnulib:

• See Section 9.66 [sys/stat.h], page 79, for general portability problems with struct

stat.

• Cygwin’s stat function sometimes sets errno to EACCES when ENOENT would be more appropriate.

• This function sets st_ino only to the low-order 32 bits of the inode number of a socket or pipe, which thus can disagree with the st_ino obtained by fstat: macOS 14.

• Because of the definition of struct stat, it is not possible to portably replace stat via an object-like macro. Therefore, expressions such as (islnk ? lstat : stat) (name, buf) are not portable, and should instead be written islnk ? lstat (name, buf) :

stat (name, buf).
10.1058 statvfs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/statvfs.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where f_blocks in ‘struct statvfs’ is a 32-bit value, this function may not work correctly on files systems larger than 4 TiB. See Section 14.2 [Large File Support], page 770. This affects glibc/Hurd, HP-UX 11, Solaris.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, mingw, MSVC 14, Android 4.3.

• This function can hang if it stats all preceding entries in /proc/mounts, and any of those file systems are hard-mounted and not available. This affects Linux < 2.6.36.

Gnulib provides a module fsusage that provides similar information as statvfs.

10.1059 stdc_bit_ceil

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.16.

Gnulib module: stdc bit ceil Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1060 stdc_bit_floor

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.15.

Gnulib module: stdc bit floor Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1061 stdc_bit_width

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.14.

Gnulib module: stdc bit width Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1062 stdc_count_ones

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.12.

Gnulib module: stdc count ones Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1063 stdc_count_zeros

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.11.

Gnulib module: stdc count zeros Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1064 stdc_first_leading_one

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.8.

Gnulib module: stdc first leading one Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1065 stdc_first_leading_zero

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.7.

Gnulib module: stdc first leading zero

Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1066 stdc_first_trailing_one

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.10.

Gnulib module: stdc first trailing one

Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1067 stdc_first_trailing_zero

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.9.

Gnulib module: stdc first trailing zero

Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

10.1068 stdc_has_single_bit

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.13.

Gnulib module: stdc has single bit Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1069 stdc_leading_ones

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.4.

Gnulib module: stdc leading ones Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1070 stdc_leading_zeros

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.3.

Gnulib module: stdc leading zeros Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1071 stdc_trailing_ones

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.6.

Gnulib module: stdc trailing ones Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1072 stdc_trailing_zeros

Documentation:

ISO C23 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.

pdf) section 7.18.5.

Gnulib module: stdc trailing zeros Portability problems fixed by Gnulib:

• This macro is missing on many platforms: glibc 2.38, macOS 12.5, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.5.3, mingw, MSVC 17, Android 15.

Portability problems not fixed by Gnulib:

10.1073 stderr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• stderr is created in 32-bit mode instead of 64-bit mode: Cygwin 1.5.x. One workaround is to use freopen(NULL, “r+”, stderr) on Cygwin 1.5.21 or newer. Another is to use the gnulib ftello module and do ftello(stderr).

• POSIX states that a setuid application can guarantee that fd 2 is open, but some systems guarantee this even for non-setuid programs. If an application is executed with fd 2 closed, use of stderr can affect an unrelated file that happened to be assigned to fd 2. The gnulib *-safer modules may be used to guarantee that fd 2 stays reserved for

stderr.

10.1074 stdin

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• stdin is created in 32-bit mode instead of 64-bit mode: Cygwin 1.5.x. One workaround is to use freopen(NULL, “r”, stdin) on Cygwin 1.5.21 or newer. Another is to use the gnulib ftello module and do ftello(stdin).

• POSIX states that a setuid application can guarantee that fd 0 is open, but some systems guarantee this even for non-setuid programs. If an application is executed with fd 0 closed, use of stdin can affect an unrelated file that happened to be assigned to fd 0. The gnulib *-safer modules may be used to guarantee that fd 0 stays reserved

for stdin.

10.1075 stdout

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• stdout is created in 32-bit mode instead of 64-bit mode: Cygwin 1.5.x. One workaround is to use freopen(NULL, “w”, stdout) on Cygwin 1.5.21 or newer. Another is to use the gnulib ftello module and do ftello(stdout).

• POSIX states that a setuid application can guarantee that fd 1 is open, but some systems guarantee this even for non-setuid programs. If an application is executed with fd 1 closed, use of stdout can affect an unrelated file that happened to be assigned to fd 1. The gnulib *-safer modules may be used to guarantee that fd 1 stays reserved for

 stdout.

10.1076 stpcpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/stpcpy.html

Gnulib module: stpcpy

Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

10.1077 stpncpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/stpncpy.html

Gnulib module: stpncpy

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

• This function has an incompatible return value on some platforms: AIX 5.1.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

10.1078 strcasecmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcasecmp.html

Gnulib module: strcase Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in multibyte locales. Gnulib provides an alternative function mbscasecmp that does a case insensitive comparison of character strings and that works in all locales.

10.1079 strcasecmp_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcasecmp_l.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

10.1080 strcat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcat.html

Gnulib module: string Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

10.1081 strchr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strchr.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in some multibyte locales. Gnulib provides an alternative function mbschr that works on character strings in all locales.

10.1082 strcmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcmp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1083 strcoll

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcoll.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function fails, setting errno to EILSEQ, on Solaris 10, in UTF-8 locales, when at least one of the strings contains a Unicode character in a block that was not assigned in Unicode 4.0.

10.1084 strcoll_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcoll_l.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.1085 strcpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcpy.html

Gnulib module: string Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

Note: strcpy (dst, src) is only safe to use when you can guarantee that there are at least strlen (src) + 1 bytes allocated at dst.

10.1086 strcspn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcspn.html

Gnulib module: strcspn

Portability problems fixed by Gnulib:

• This function is missing on some old platforms.

Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in multibyte locales. Gnulib provides an alternative function mbscspn that works on character strings in all locales.

10.1087 strdup

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strdup.html

Gnulib module: strdup or strdup-posix

Portability problems fixed by either Gnulib module strdup or strdup-posix:

• This function has no prototype in <string.h> on some old platforms.

Portability problems fixed by Gnulib module strdup-posix:

• Upon failure, the function does not set errno to ENOMEM on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

10.1088 strerror

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strerror.html

Gnulib module: strerror

Portability problems fixed by Gnulib:

• This function does not support the error values that are specified by POSIX but not defined by the system, on some platforms: OpenBSD 4.0, NonStop Kernel, Cygwin 1.5.x, mingw, MSVC 14.

• This function reports failure for strerror(0) (by setting errno or using a string similar to out-of-range values), although POSIX requires this to leave errno unchanged and report success, on some platforms: FreeBSD 8.2, NetBSD 10.0, OpenBSD 4.7, macOS 11.1.

• This function fails to return a string for out-of-range integers on some platforms: HP-UX 11. (Some return NULL which is a POSIX violation, others return the empty string which is valid but not as useful); this can still cause bugs because most programs call strerror without setting and testing errno.)

10.1089 strerror_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strerror_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.5, macOS 11.1, FreeBSD 12.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

10.1090 strerror_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strerror_r.html

LSB specification:

• https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/
  LSB-Core-generic/baselib-strerror-r.html
• https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/
  LSB-Core-generic/baselib---xpg-strerror-r.html

Gnulib module: strerror r-posix Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, Minix 3.1.8, HP-UX 11.23, Solaris 9, mingw, MSVC 14.

• glibc, Cygwin, and Android have an incompatible version of this function. The POSIX

compliant code

         char *s = (strerror_r (err, buf, buflen) == 0 ? buf : NULL);

is essentially equivalent to this code using the glibc function:

         char *s = strerror_r (err, buf, buflen);

• This function clobbers the strerror buffer on some platforms: Cygwin 1.7.9.

• This function is sometimes not declared in <string.h> on some platforms: glibc 2.8.

• The third argument is of type int instead of size_t on some platforms: AIX 5.1.

• When this function fails, it returns −1 and sets errno, instead of returning the error number, on some platforms: glibc 2.12 with -D_POSIX_C_SOURCE=200112L, AIX 6.1.

• When this function fails, it corrupts errno, on some platforms: Solaris 10.

• This function does not support many error values defined in <errno.h> on some platforms: MSVC 14.

• This function does not support the error values that are specified by POSIX but not defined by the system, on some platforms: OpenBSD 4.0, NonStop Kernel, Cygwin 1.5.x.

• This function reports failure for strerror_r(0, buf, len), although POSIX requires this to succeed, on some platforms: FreeBSD 8.2.

• This function produces a different string for 0 than strerror on some platforms: macOS 11.1.

• This function always fails when the third argument is less than 80 on some platforms: HP-UX 11.31.

• When the buffer is too small and the value is in range, this function does not fail, but instead truncates the result and returns 0 on some platforms: AIX 6.1, Haiku 2017.

• When the value is not in range or the buffer is too small, this function fails to leave a NUL-terminated string in the buffer on some platforms: glibc 2.13, FreeBSD 8.2, Solaris 10.

• When the value is out of range but the buffer is too small, this function does not always return the longest possible string on some platforms: OpenBSD 4.7.

Portability problems not fixed by Gnulib:

Note: Gnulib has a module xstrerror, with the property that xstrerror (NULL, errnum) returns the value of strerror_r as a freshly allocated string. (Recall that the expression strerror (errnum) is not multithread-safe.)

10.1091 strfmon

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strfmon.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.7.1, mingw, MSVC 14, Android 9.0.

10.1092 strfmon_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strfmon_l.html

Gnulib module: strfmon l

Portability problems fixed by Gnulib:

• This function ignores the locale argument on some platforms: FreeBSD 13.0, Cygwin 2.9.

• This function uses a wrong locale for the numbers on some platforms: glibc 2.23.

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

10.1093 strfromd

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Printing-of-Floats.
 html,

• man strfromd. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1094 strfromf

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Printing-of-Floats.
 html,

• man strfromf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1095 strfroml

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Printing-of-Floats.
 html,

• man strfroml. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1096 strftime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html

Gnulib module: strftime-fixes

Portability problems fixed by Gnulib:

• On native Windows platforms (mingw, MSVC), this function works incorrectly when the environment variable TZ has been set by Cygwin.

Portability problems not fixed by Gnulib:

• The %c specifier does not work with a time retrieved through gmtime or gmtime_r, since it outputs also the current time zone, on some platforms: glibc 2.30, NetBSD 10.0, Solaris 11.4.

• The %c specifier produces no weekday name and no month name, only a potentially ambiguous numerical output, on some platforms: mingw, MSVC.

• The %h specifier produces empty output on some platforms: mingw, MSVC.

• The %r specifier produces empty output on some platforms: mingw, MSVC.

• The %r specifier produces empty output, at least in a French locale, on some platforms: macOS 12.5, FreeBSD 14.0.

• The %r specifier includes an AM/PM indicator, at least in a French locale, on some platforms: NetBSD 10.0, Solaris 11.4.

• The %p specifier produces non-empty output, at least in a French locale, on some platforms: NetBSD 10.0, Solaris 11.4.

• The Windows C runtime library (which is used by MinGW) does not support the %e specifier (and possibly the other more recent SUS specifiers too, i.e., %C, %D, %h, %n, %r, %R, %t, and %T).

• Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. See Section 10.1206 [tzset], page 457.

Extension: Gnulib offers a module ‘nstrftime’ that provides an nstrftime function with various GNU extensions.

10.1097 strftime_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.1098 strlen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strlen.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1099 strncasecmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strncasecmp.html

Gnulib module: strcase Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in multibyte locales. Gnulib provides alternative functions mbsncasecmp and mbspcasecmp that do a case insensitive comparison of character strings and that work in all locales.

10.1100 strncasecmp_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strncasecmp_l.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

10.1101 strncat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strncat.html

Gnulib module: strncat Portability problems fixed by Gnulib:

• This function dereferences too much memory on some platforms: Solaris 11.4 on SPARC, Solaris 11.0 on x86.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

10.1102 strncmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strncmp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1103 strncpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strncpy.html

Gnulib module: string Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

Note: This function was designed for the use-case of filling a fixed-size record with a string, before writing it to a file. This function is not appropriate for copying a string into a bounded memory area, because you have no guarantee that the result will be NULterminated. Even if you add the NUL byte at the end yourself, this function is inefficient (as it spends time clearing unused memory) and will allow silent truncation to occur, which is not a good behavior for GNU programs. For more details, see https://meyering.net/

crusade-to-eliminate-strncpy/.
10.1104 strndup

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strndup.html

Gnulib module: strndup Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 10, mingw, MSVC 14.

• This function does not NUL-terminate the result on some platforms: AIX 5.1. Portability problems not fixed by Gnulib:

10.1105 strnlen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strnlen.html

Gnulib module: strnlen Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, HP-UX 11, Solaris 10, mingw. Portability problems not fixed by Gnulib:

10.1106 strpbrk

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strpbrk.html

Gnulib module: strpbrk Portability problems fixed by Gnulib:

• This function is missing on some old platforms. Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in multibyte locales. Gnulib provides an alternative function mbspbrk that works on character strings in all locales.

10.1107 strptime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strptime.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-strptime-3.html

Gnulib module: strptime Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.1108 strrchr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strrchr.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in some multibyte locales. Gnulib provides an alternative function mbsrchr that works on character strings in all locales.

10.1109 strsignal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strsignal.html

Gnulib module: strsignal Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, mingw, MSVC 14.

• This function does not return a string for out-of-range numbers on some platforms: Solaris, AIX 5.1.

• This function is declared in unistd.h instead of string.h on some platforms: NetBSD 5.0. Portability problems not fixed by Gnulib:

• This function returns const char * instead of char * on some platforms: cygwin 1.5.25.

10.1110 strspn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strspn.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in multibyte locales. Gnulib provides an alternative function mbsspn that works on character strings in all locales.

10.1111 strstr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strstr.html

Gnulib module: strstr or strstr-simple Portability problems fixed by either Gnulib module strstr-simple or strstr:

• This function can trigger memchr bugs on some platforms: glibc 2.10.

• This function can trigger false positives for long periodic needles on some platforms: glibc 2.12, Cygwin 1.7.7.

• This function may fail to find matches on some platforms: glibc 2.28. Portability problems fixed by Gnulib module strstr:

• This function has quadratic instead of linear worst-case complexity on some platforms: glibc 2.8, macOS 12.5, FreeBSD 11.4, NetBSD 10.0, OpenBSD 6.1, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in most multibyte locales. Gnulib provides an alternative function mbsstr that works on character strings in all locales.

10.1112 strtod

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtod.html

Gnulib module: strtod or strtod-obsolete Portability problems fixed by either Gnulib module strtod or strtod-obsolete:

• This function mis-parses strings with leading ‘+’ on some old platforms: Old versions of Linux.

• This function returns a wrong end pointer on some old platforms.

• This function allows whitespace between ‘e’ and the exponent on some platforms: HP-UX 11.11.

• This function returns the wrong end pointer for ‘-0x’ on some platforms: glibc 2.4, Mac OS X 10.5, FreeBSD 6.2, AIX 7.1, Cygwin < 1.5.25-11.

• This function fails to parse Infinities and plain NaNs on some platforms: OpenBSD 4.0, HP-UX 11.11, Solaris 9, mingw, MSVC 14.

• This function fails to parse ‘NaN()’ on some platforms: glibc-2.3.6, Mac OS X 10.5, FreeBSD 6.2, OpenBSD 4.0, AIX 7.1, HP-UX 11.11, Cygwin < 1.5.25-11, mingw, MSVC 14.

• This function fails to parse ‘NaN(n-char-sequence)’ on some platforms: OpenBSD 4.0, HP-UX 11.11, mingw, MSVC 14.

• This function parses ‘NaN(n-char-sequence)’, but returns the wrong end pointer on some platforms: glibc-2.4, AIX 7.1.

• This function fails to parse C99 hexadecimal floating point on some platforms: NetBSD 5.0, OpenBSD 4.0, AIX 5.1, HP-UX 11.11, Solaris 11.4, mingw, MSVC 14.

• In hexadecimal floats, this function allows whitespace between ‘p’ and the exponent on some platforms: HP-UX 11.31/ia64.

• This function returns the wrong end pointer for ‘0x1p’ on some platforms: AIX 7.1. Portability problems fixed by Gnulib module strtod-obsolete:

• This function is missing on some old platforms. Portability problems not fixed by Gnulib:

• This function returns +0.0 (not −0.0) for negative underflow on some platforms: glibc 2.7, Cygwin 1.5.x, mingw, MSVC 14.

• This function cannot distinguish between “nan” and “-nan” on some platforms: glibc 2.7, mingw, MSVC 14.

• This function fails to correctly parse very long strings on some platforms: Mac OS X 10.5, FreeBSD 6.2, NetBSD 5.0, OpenBSD 4.0, Cygwin, mingw, MSVC 14.

• The replacement function does not always return correctly rounded results.

10.1113 strtof

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtof.html

Gnulib module: strtof Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, MSVC 9, Android 4.4.

• This function returns the wrong end pointer for ‘-0x’ on some platforms: glibc 2.4, Mac OS X 10.5, FreeBSD 6.2.

• This function fails to parse ‘NaN()’ on some platforms: glibc-2.5, FreeBSD 6.2. Portability problems not fixed by Gnulib:

• This function returns +0.0 (not −0.0) for negative underflow on some platforms: glibc 2.7, mingw, MSVC 14.

• This function cannot distinguish between “nan” and “-nan” on some platforms: glibc 2.7, mingw, MSVC 14.

• This function fails to correctly parse very long strings on some platforms: Mac OS X 10.5, FreeBSD 6.2, NetBSD 5.0, Cygwin, mingw, MSVC 14.

• The replacement function does not always return correctly rounded results.

10.1114 strtoimax

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtoimax.html

Gnulib module: strtoimax Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, Solaris 9, MSVC 9.

• This function fails on valid input strings on some platforms: AIX 5.1. Portability problems not fixed by Gnulib:

• This function is only defined as a macro on some platforms: HP-UX 11.11.

10.1115 strtok

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1116 strtok_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok_r.html

Gnulib module: strtok r Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function crashes when invoked from code compiled with optimization enabled on some platforms: glibc 2.7. Portability problems not fixed by Gnulib:

• This function cannot work correctly on character strings in multibyte locales. Gnulib provides an alternative function mbstok_r that works on character strings in all locales.

10.1117 strtol

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtol.html

Gnulib module: strtol Portability problems fixed by Gnulib:

• This function is missing on some old platforms.

• This function does not parse the leading ‘0’ when the input string is "0x" and the base is 16 or 0 on some platforms: Minix 3.3, mingw, MSVC 14.

• This function does not parse binary integers (with a ‘0b’ or ‘0B’ prefix) when the base is 2 or 0 on many platforms. Portability problems not fixed by Gnulib:

10.1118 strtold

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtold.html

Gnulib module: strtold Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, Solaris 9, older Cygwin 1.7.x, MSVC 9, Android 4.4.

• This function returns a struct, not a long double, on some platforms: HP-UX 11.31/hppa.

• This function allows whitespace between ‘e’ and the exponent on some platforms: HP-UX 11.31/ia64.

• This function returns the wrong end pointer for ‘-0x’ on some platforms: glibc-2.3.2, Mac OS X 10.5, Haiku.

• This function fails to parse Infinities and plain NaNs on some platforms: HP-UX 11.31/ia64.

• This function fails to parse ‘NaN()’ on some platforms: glibc-2.3.2, mingw, Haiku.

• This function parses ‘NaN(n-char-sequence)’, but returns the wrong end pointer on some platforms: glibc-2.3.2, mingw, Haiku.

• This function fails to parse C99 hexadecimal floating point on some platforms: mingw.

• In hexadecimal floats, this function allows whitespace between ‘p’ and the exponent on some platforms: HP-UX 11.31/ia64.

• This function fails to set errno upon underflow on some platforms: Cygwin 2.9. Portability problems not fixed by Gnulib:

• The replacement function does not always return correctly rounded results.

10.1119 strtoll

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtoll.html

Gnulib module: strtoll

Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.11, MSVC 9.

• This function does not parse the leading ‘0’ when the input string is "0x" and the base is 16 or 0 on some platforms: Minix 3.3, mingw, MSVC 14.

• This function does not parse binary integers (with a ‘0b’ or ‘0B’ prefix) when the base is 2 or 0 on many platforms.

Portability problems not fixed by Gnulib:

10.1120 strtoul

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtoul.html

Gnulib module: strtoul

Portability problems fixed by Gnulib:

• This function is missing on some old platforms.

• This function does not parse the leading ‘0’ when the input string is "0x" and the base is 16 or 0 on some platforms: Minix 3.3, mingw, MSVC 14.

• This function does not parse binary integers (with a ‘0b’ or ‘0B’ prefix) when the base is 2 or 0 on many platforms.

Portability problems not fixed by Gnulib:

10.1121 strtoull

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtoull.html

Gnulib module: strtoull

Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.11, MSVC 9.

• This function does not parse the leading ‘0’ when the input string is "0x" and the base is 16 or 0 on some platforms: Minix 3.3, mingw, MSVC 14.

• This function does not parse binary integers (with a ‘0b’ or ‘0B’ prefix) when the base is 2 or 0 on many platforms.

10.1122 strtoumax

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtoumax.html

Gnulib module: strtoumax Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, MSVC 9. Portability problems not fixed by Gnulib:

• This function is only defined as a macro on some platforms: HP-UX 11.11.

10.1123 strxfrm

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strxfrm.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function has a wrong return value on some platforms: Haiku.

10.1124 strxfrm_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strxfrm_l.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.1125 swab

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/swab.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 8.1.

10.1126 swprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/swprintf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x.

• This function has a different signature on some platforms: MSVC 9.

• This function is only defined as a macro on some platforms: MSVC 14.

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14.

• This function sometimes returns a wrong value through the ‘n’ directive on some platforms: musl libc 1.2.3.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• On Windows, this function does not take a buffer size as second argument.

• This function produces wrong values for the ‘La’ directive on some platforms: glibc 2.15, Haiku, NetBSD 10.0.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function ignores the minimum field width in the ‘lc’ directive on some platforms: musl libc 1.2.3.

• This function is broken when it produces output that contains null wide characters on some platforms: musl libc 1.2.3, FreeBSD 13.1, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, mingw.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• In the C or POSIX locales, the %c and %s conversions may fail on some platforms: glibc 2.35, musl libc 1.2.4, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, Cygwin 2.9.0.

• The %lc directive may fail on some platforms: musl libc 1.2.4, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

10.1127 swscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/swscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-swscanf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1128 symlink

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html

Gnulib module: symlink Portability problems fixed by Gnulib:

• On some systems, symlink(value,"name/") mistakenly creates a symlink: macOS 11.1, FreeBSD 7.2, AIX 7.1, Solaris 9.

• This function is missing on some platforms; however, the replacement always fails with EPERM: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• Some file systems do not support symbolic links.

10.1129 symlinkat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/symlinkat.html

Gnulib module: symlinkat Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• Some platforms declare this function in stdio.h instead of unistd.h: Cygwin 1.7.1.

• On some systems, symlinkat(value, fd, "name/") mistakenly creates a symlink: macOS 11.1, AIX 7.1. Portability problems not fixed by Gnulib:

• This function always fails with ‘ENOSYS’ on platforms that don’t support symlinks: mingw, MSVC 14.

10.1130 sync

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sync.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1131 sysconf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sysconf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1132 syslog

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/syslog.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1133 system

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-system-3.html

Gnulib module: system-posix Portability problems fixed by Gnulib:

• The macros WIFSIGNALED, WIFEXITED, WIFSTOPPED, WTERMSIG, WEXITSTATUS, WNOHANG,
 WUNTRACED, WSTOPSIG are not defined in <stdlib.h> (only in <sys/wait.h>) on some

platforms: MirBSD 10.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), the command processor used by the system function is cmd.exe, not /bin/sh. Accordingly, the rules for quoting shell arguments containing spaces, quote or other special characters are different.

10.1134 tan

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tan.html

Gnulib module: tan Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1135 tanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tanf.html

Gnulib module: tanf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.1136 tanh

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tanh.html

Gnulib module: tanh Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1137 tanhf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tanhf.html

Gnulib module: tanhf Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 9.

• This function is only defined as a macro with arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

10.1138 tanhl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tanhl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.1139 tanl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tanl.html

Gnulib module: tanl

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, Android 4.4.

• This function is only defined as a macro with arguments on some platforms: MSVC 14.

Portability problems not fixed by Gnulib:

• This function produces results which are accurate to only 16 digits on some platforms: NetBSD 10.0.

10.1140 tcdrain

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcdrain.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• On some platforms, tcdrain on a non-tty fails with errno set to EINVAL or, on Mac

 OS X, also EOPNOTSUPP or ENODEV, rather than ENOTTY.

10.1141 tcflow

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcflow.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.1142 tcflush

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcflush.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

• On some platforms, tcflush of TCIFLUSH on a non-tty fails with errno set to EINVAL rather than ENOTTY.

• On some platforms, tcflush of TCOFLUSH on a non-tty fails with errno set to EINVAL or, on Mac OS X, also EOPNOTSUPP or ENODEV, rather than ENOTTY.

10.1143 tcgetattr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetattr.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.1144 tcgetpgrp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetpgrp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.1145 tcgetsid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetsid.html

Gnulib module: tcgetsid Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, OpenBSD 4.5, Minix 3.1.8, Cygwin 1.7.9, mingw, MSVC 14, Android 4.4.

• The declaration of this function in C++ compilation units has C++ linkage, not C linkage, on some platforms: HP-UX 11.00. Portability problems not fixed by Gnulib:

• This function always fails on some platforms: FreeBSD 6.0, Cygwin 1.7.8, mingw, MSVC 14.

• This function returns int instead of pid t on some platforms: Cygwin 1.7.11.

10.1146 tcsendbreak

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsendbreak.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.1147 tcsetattr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsetattr.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

10.1148 tcsetpgrp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsetpgrp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

10.1149 tdelete

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tdelete.html

Gnulib module: tsearch Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.0.4.

• tdelete returns NULL when removing the last element of a tree on some platforms: OpenBSD 4.0. Portability problems not fixed by Gnulib:

10.1150 telldir

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/telldir.html

Gnulib module: — Portability problems fixed by Gnulib:

• On platforms where long int is a 32-bit type, this function may not work correctly on huge directories 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: MSVC 14, Android 5.1.

10.1151 tempnam

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tempnam.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• This function is removed in POSIX.1-2024. Use the function mkstemp instead.

• This function is not appropriate for creating temporary files. (It has security risks.) Better use mkstemp instead.

10.1152 tfind

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tfind.html

Gnulib module: tsearch Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.0.4. Portability problems not fixed by Gnulib:

10.1153 tgamma

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tgamma.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.1154 tgammaf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tgammaf.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

10.1155 tgammal

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tgammal.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

10.1156 thrd_create

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

• This function uses an incorrectly defined thrd_start_t on some platforms: AIX 7.2. Portability problems not fixed by Gnulib:

10.1157 thrd_current

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1158 thrd_detach

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1159 thrd_equal

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1160 thrd_exit

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

• The exit code provided to this function is discarded on some platforms: AIX 7.3.1.

Portability problems not fixed by Gnulib:

10.1161 thrd_join

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd

Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

• This function never stores an exit code on some platforms: AIX 7.3.1.

• This function crashes when the second argument is NULL on some platforms: Solaris 11.4.

Portability problems not fixed by Gnulib:

10.1162 thrd_sleep

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd

Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1163 thrd_yield

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread-Management.
html.

Gnulib module: thrd

Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

10.1164 time

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/time.html

Gnulib module: time Portability problems fixed by Gnulib:

• This function is not consistent with gettimeofday and timespec_get on some platforms: glibc 2.31 or newer on Linux, FreeBSD 12.2/sparc64, AIX 7.2, native Windows. Namely, in the first 1 to 2.5 milliseconds of every second (or, on AIX and Windows, in the first 5 milliseconds of every second), time returns a value that is one less than the

 tv_sec part of the return value of gettimeofday or timespec_get.

Portability problems not fixed by Gnulib:

10.1165 timegm

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Broken_002ddown-Time.
 html,

• man timegm.

Gnulib module: timegm Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14, Android 3.0.

Portability problems not fixed by Gnulib:

10.1166 timer_create

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_create.
html

Gnulib module: timer-time Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, FreeBSD 6.4, Minix 3.1.8, mingw, MSVC 14.

• This function fails with ENOSYS on some platforms: OpenBSD 4.9.

10.1167 timer_delete

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_delete.
html

Gnulib module: timer-time Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, FreeBSD 6.4, Minix 3.1.8, mingw, MSVC 14.

• This function fails with ENOSYS on some platforms: OpenBSD 4.9.

10.1168 timer_getoverrun

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/
timer_getoverrun.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, FreeBSD 6.0, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14.

10.1169 timer_gettime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_gettime.
html

Gnulib module: timer-time Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, FreeBSD 6.4, Minix 3.1.8, mingw, MSVC 14.

• This function fails with ENOSYS on some platforms: OpenBSD 4.9.

10.1170 timer_settime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/timer_settime.
html

Gnulib module: timer-time Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.11, FreeBSD 6.4, Minix 3.1.8, mingw, MSVC 14.

• This function fails with ENOSYS on some platforms: OpenBSD 4.9.

10.1171 times

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/times.html

Gnulib module: times Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

• There is no function on Windows to measure consumed process child times, thus the tms_cutime and tms_cstime will always be 0 when the module is used.

10.1172 timespec_getres

ISO C23 specification:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf section 7.29.2.7

Gnulib module: timespec getres Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.33, macOS 12, FreeBSD 14.0, NetBSD 9.2, OpenBSD 7.0, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 34. Portability problems not fixed by Gnulib:

• On some platforms, this function returns a value other than the clock resolution of timespec_get, i.e., the minimum distance between differing timestamps. For example, on GNU/Linux it typically returns 1 nanosecond regardless of the actual clock resolution.

The Gnulib module gettime-res is a partial substitute; it implements the TIME_UTC functionality of timespec_getres.

10.1173 timezone

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/timezone.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: mingw.

• The address of this variable is not a compile-time constant on some platforms: mingw.

• Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. See Section 10.1206 [tzset], page 457.

A more portable way of getting the UTC offset is to use strftime with the %z format. See Section 10.1096 [strftime], page 423.

10.1174 tmpfile

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tmpfile.html

Gnulib module: tmpfile Portability problems fixed by Gnulib:

• This function always fails on some platforms: Android 4.3.

• This function often fails for trivial reasons on some platforms: mingw, MSVC 14.

• On platforms where off_t is a 32-bit type, tmpfile may not work correctly to create files 2 GiB and larger. See Section 14.2 [Large File Support], page 770. Portability problems not fixed by Gnulib:

10.1175 tmpnam

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tmpnam.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is not appropriate for creating temporary files. (It has security risks.) Better use mkstemp instead.

10.1176 toascii

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/toascii.html

Gnulib module: ctype Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8. Portability problems not fixed by Gnulib:

• POSIX says this function is obsolescent and it is planned to be removed in POSIX 202x.

10.1177 tolower

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tolower.html

Gnulib module: ctype Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are four alternative APIs:

c_tolower

This function operates in a locale independent way and returns a different value than the argument only for uppercase ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

towlower This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32tolower

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32tolower’.
uc_tolower

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unicase/tolower’.

10.1178 tolower_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tolower_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.1179 totalorder

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.
html.
• https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00037.html

Gnulib module: totalorder Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.30. Portability problems not fixed by Gnulib:

• This function treats signalling NaNs incorrectly on some platforms: glibc 2.35/sh4.

10.1180 totalorderf

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.
  html.
• https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00037.html

Gnulib module: totalorderf Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.30. Portability problems not fixed by Gnulib:

• This function treats signalling NaNs incorrectly on some platforms: glibc 2.35/sh4.

10.1181 totalorderl

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.
  html.
• https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00037.html

Gnulib module: totalorderl Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.30. Portability problems not fixed by Gnulib:

• This function treats signalling NaNs incorrectly on some platforms: glibc 2.35/sh4.

10.1182 totalordermag

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.
html.

Gnulib module: totalordermag Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.30.

Portability problems not fixed by Gnulib:

10.1183 totalordermagf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.
html.

Gnulib module: totalordermagf

Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.30.

Portability problems not fixed by Gnulib:

10.1184 totalordermagl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/FP-Comparison-Functions.
html.

Gnulib module: totalordermagl

Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.30.

Portability problems not fixed by Gnulib:

10.1185 toupper

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/toupper.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

Note: This function’s behaviour depends on the locale, but does not support the multibyte characters that occur in strings in locales with MB_CUR_MAX > 1 (this includes all the common UTF-8 locales). There are four alternative APIs:

c_toupper

This function operates in a locale independent way and returns a different value than the argument only for lowercase ASCII characters. It is provided by the Gnulib module ‘c-ctype’.

towupper This function operates in a locale dependent way, on wide characters. In order to use it, you first have to convert from multibyte to wide characters, using the mbrtowc function. It is provided by the Gnulib module ‘wctype’.

c32toupper

This function operates in a locale dependent way, on 32-bit wide characters. In order to use it, you first have to convert from multibyte to 32-bit wide characters, using the mbrtoc32 function. It is provided by the Gnulib module

‘c32toupper’.
uc_toupper

This function operates in a locale independent way, on Unicode characters. It is provided by the Gnulib module ‘unicase/toupper’.

10.1186 toupper_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/toupper_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

10.1187 towctrans

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/towctrans.html

Gnulib module: towctrans Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw, MSVC 9, Android 7.1.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32_apply_ mapping, provided by Gnulib module c32_apply_mapping, operates on 32-bit wide characters and therefore does not have this limitation.

10.1188 towctrans_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/towctrans_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1189 towlower

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/towlower.html

Gnulib module: wctype-h Portability problems fixed by Gnulib:

• This function returns values of which the upper 16 bits are incorrect on some platforms: mingw.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32tolower, provided by Gnulib module c32tolower, operates on 32-bit wide characters and therefore does not have this limitation.

• This function returns wrong values even for the ASCII characters in a zh CN.GB18030 locale on some platforms: NetBSD 10.0.

10.1190 towlower_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/towlower_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1191 towupper

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/towupper.html

Gnulib module: wctype-h Portability problems fixed by Gnulib:

• This function returns values of which the upper 16 bits are incorrect on some platforms: mingw.

• This function cannot be called from plain inline or extern inline functions on some platforms: OS X 10.8.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32toupper, provided by Gnulib module c32toupper, operates on 32-bit wide characters and therefore does not have this limitation.

• This function returns wrong values even for the ASCII characters in a zh CN.GB18030 locale on some platforms: NetBSD 10.0.

10.1192 towupper_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/towupper_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1193 trunc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/trunc.html

Gnulib module: trunc or trunc-ieee Portability problems fixed by either Gnulib module trunc or trunc-ieee:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Solaris 9, MSVC 9.

• This function is not declared (without -D_GNU_SOURCE) on some platforms: glibc 2.8.

Portability problems fixed by Gnulib module trunc-ieee:

10.1194 truncate

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/truncate.html

Gnulib module: truncate Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4 with AC_

 SYS_LARGEFILE in effect.

• On platforms where off_t is a 32-bit type, this function is not applicable to arbitrary lengths for files 2 GiB and larger. See Section 14.2 [Large File Support], page 770.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a non-directory, on some platforms: AIX 7.2. Portability problems not fixed by Gnulib:

10.1195 truncf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/truncf.html

Gnulib module: truncf or truncf-ieee Portability problems fixed by either Gnulib module truncf or truncf-ieee:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, MSVC 9.

• This function is not declared (without -D_GNU_SOURCE) on some platforms: glibc 2.8. Portability problems fixed by Gnulib module truncf-ieee:

Portability problems not fixed by Gnulib:

10.1196 truncl

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/truncl.html

Gnulib module: truncl or truncl-ieee Portability problems fixed by either Gnulib module truncl or truncl-ieee:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9.

• This function is not declared (without -D_GNU_SOURCE) on some platforms: glibc 2.8. Portability problems fixed by Gnulib module truncl-ieee:

Portability problems not fixed by Gnulib:

10.1197 tsearch

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tsearch.html

Gnulib module: tsearch Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.0.4.

Portability problems not fixed by Gnulib:

10.1198 tss_create

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.
html.

Gnulib module: tss Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1199 tss_delete

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.
html.

Gnulib module: tss Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1200 tss_get

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.
html.

Gnulib module: tss Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1201 tss_set

Documentation:

https://www.gnu.org/software/libc/manual/html_node/ISO-C-Thread_002dlocal-Storage.
html.

Gnulib module: tss

Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 9.3, NetBSD 8.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

Portability problems not fixed by Gnulib:

10.1202 ttyname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ttyname.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

• This function is just a stub that produces an error message on standard error on some platforms: Android 4.3.

10.1203 ttyname_r

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ttyname_r.html

Gnulib module: ttyname r

Portability problems fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14.

• This function is not declared unless _REENTRANT is defined, on some platforms: HP-UX 11.

• This function has an incompatible declaration on some platforms: Solaris 11.4 (when

 _POSIX_PTHREAD_SEMANTICS is not defined).

• This function refuses to do anything when the output buffer is less than 128 bytes large, on some platforms: Solaris 11 2010-11.

• This function is just a stub that produces an error message on standard error on some platforms: Android 4.3.

10.1204 twalk

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/twalk.html

Gnulib module: tsearch Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.4.

Portability problems not fixed by Gnulib:

10.1205 tzname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tzname.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: mingw.

• The address of this variable is not a compile-time constant on some platforms: Cygwin, mingw.

• Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. See Section 10.1206 [tzset], page 457.

A more portable way of getting the time zone abbreviation is to use strftime with the %Z format. See Section 10.1096 [strftime], page 423.

10.1206 tzset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html

Gnulib module: tzset Portability problems fixed by Gnulib:

• On native Windows platforms (mingw, MSVC), this function works incorrectly when the environment variable TZ has been set by Cygwin.

Portability problems not fixed by Gnulib:

• Native Windows platforms (mingw, MSVC) support only a subset of POSIX-specified values for the TZ environment variable, consisting of a time zone abbreviation containing exactly three ASCII letters with no daylight saving time or angle brackets, and with no support for tz database settings like TZ='America/New_York'. Even this subset does not work on applications built via the Universal Windows Platform, as it does not make environment variables like TZ available to applications.

• Older POSIX platforms do not support angle brackets in TZ values, as this feature was added in IEEE Std 1003.1-2001.

10.1207 ufromfp

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1208 ufromfpf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1209 ufromfpl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1210 ufromfpx

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1211 ufromfpxf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1212 ufromfpxl

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.24, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

10.1213 ulimit

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is removed in POSIX.1-2024. Use the functions getrlimit and

 setrlimit instead.

10.1214 umask

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

10.1215 uname

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/uname.html

Gnulib module: uname Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.1216 ungetc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ungetc.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

10.1217 ungetwc

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/ungetwc.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1218 unlink

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-unlink-3.html

Gnulib module: unlink Portability problems fixed by Gnulib:

• This function is declared in a different header file (namely, <stdio.h>) on some platforms: MSVC 14.

• Some systems mistakenly succeed on unlink("link-to-file/"): GNU/Hurd, FreeBSD 7.2, AIX 7.1, Solaris 9.

• On Mac OS X 10.10, in a writable HFS mount, unlink("..") succeeds without doing anything.

Portability problems not fixed by Gnulib:

• Some systems allow a superuser to unlink directories, even though this can cause file system corruption. The error given if a process is not permitted to unlink directories varies across implementations; it is not always the POSIX value of EPERM. Meanwhile, if a process has the ability to unlink directories, POSIX requires that unlink("symlinkto-dir/") remove dir and leave symlink-to-dir dangling; this behavior is counterintuitive. The gnulib module unlinkdir can help determine whether code must be cautious of unlinking directories.

• Removing an open file is non-portable: On Unix this allows the programs that have the file already open to continue working with it; the file’s storage is only freed when the no process has the file open any more. On Windows, the attempt to remove an open file fails.

10.1219 unlinkat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlinkat.html

Gnulib module: unlinkat Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14. But the replacement function is not safe to be used in libraries and is not multithread-safe.

• This function is declared in <fcntl.h>, not in <unistd.h>, on some platforms: Cygwin 1.7.1, Android 4.3.

• On Mac OS X 10.10, in a writable HFS mount, unlinkat(fd, "..", 0) succeeds without doing anything.

• Some systems mistakenly succeed on unlinkat(fd,"file/",flag): GNU/Hurd, Solaris 9.

Portability problems not fixed by Gnulib:

• When unlinkat(fd,name,AT_REMOVEDIR) fails because the specified directory is not empty, the errno value is system dependent.

• POSIX requires that unlinkdir(fd,"link-to-empty/",AT_REMOVEDIR) remove

empty and leave link-to-empty as a dangling symlink. This is counter-intuitive, so some systems fail with ENOTDIR instead: glibc

• Some systems allow a superuser to unlink directories, even though this can cause file system corruption. The error given if a process is not permitted to unlink directories varies across implementations; it is not always the POSIX value of EPERM. Meanwhile, if a process has the ability to unlink directories, POSIX requires that unlinkat(fd,"symlinkto-dir/",0) remove dir and leave symlink-to-dir dangling; this behavior is counterintuitive. The gnulib module unlinkdir can help determine whether code must be cautious of unlinking directories.

• Removing an open file is non-portable: On Unix this allows the programs that have the file already open to continue working with it; the file’s storage is only freed when the no process has the file open any more. On Windows, the attempt to remove an open file fails.

10.1220 unlockpt

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlockpt.html

Gnulib module: unlockpt Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• This function reports success for invalid file descriptors on some platforms: NetBSD 5.1, Cygwin 1.7.9.

10.1221 unsetenv

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/unsetenv.html

Gnulib module: unsetenv Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, mingw, MSVC 14.

• This function has the return type ‘void’ instead of ‘int’ on some platforms: FreeBSD 6.0, NetBSD 1.6, OpenBSD 3.8.

• On some platforms, this function does not fail with ‘EINVAL’ when passed an empty string or a string containing ‘=’: FreeBSD 6.0, NetBSD 1.6, OpenBSD 4.7.

• This function removes only the first value association for the given environment variable, not all of them, on some platforms: Solaris 11.4, Haiku.

Portability problems not fixed by Gnulib:

• Older versions of POSIX required that unsetenv(NULL) gracefully fail with EINVAL, but not all implementations guarantee this, and the requirement was removed.

10.1222 uselocale

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/uselocale.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 9.0, NetBSD 10.0, OpenBSD 6.1, Minix 3.1.8, AIX 6.1, HP-UX 11, Solaris 11.3, Cygwin 2.5.x, mingw, MSVC 14, Android API level 20.

• This function is not documented and leads to crashes in subsequent setlocale invocations on some platforms: AIX 7.2.

• This function is useless because the locale_t type is not defined on some platforms: z/OS.

• This function is useless because the locale_t type contains basically no information on some platforms: OpenBSD 7.4.

10.1223 utime

Removed in POSIX.1-2024. POSIX.1-2017 specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/utime.html

Gnulib module: utime

Portability problems fixed by Gnulib:

• The times that are set on the file are affected by the current time zone and by the DST flag of the current time zone on some platforms: mingw, MSVC 14 (when the environment variable TZ is set).

• On some platforms, the prototype for utime omits const for the second argument: mingw, MSVC 14.

• On some platforms, utime("link-to-file/",buf) succeeds instead of failing with ENOTDIR. macOS 11.1.

Portability problems not fixed by Gnulib:

• On some platforms, this function mis-handles a trailing slash: Solaris 9.

• This function cannot set full timestamp resolution. Use utimensat(AT_ FDCWD,file,times,0), or the gnulib module utimens, instead.

• This function is removed in POSIX.1-2024. You can use Gnulib module utimens instead.

10.1224 utimensat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/utimensat.html

Gnulib module: utimensat

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.5, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 3.0. However, the replacement function may end up truncating timestamps to worse resolution than supported by the file system. Furthermore, the replacement function is not safe to be used in libraries and is not multithread-safe.

• This function returns a bogus value instead of failing with ENOSYS on some platforms: Linux kernel 2.6.21.

• This function fails with ENOSYS if passed the flag AT_SYMLINK_NOFOLLOW on a regular file: Linux kernel 2.6.22.

• When using UTIME_OMIT or UTIME_NOW, some systems require the tv_sec argument to be 0, and don’t necessarily handle all file permissions in the manner required by POSIX: Linux kernel 2.6.25.

• When using UTIME_OMIT for the modification time, but specifying an access time, some systems fail to update the change time: Linux kernel 2.6.32, macOS 11.1, NetBSD 10.0, Solaris 11.1.

• Out-of-range values of tv_nsec do not lead to a failure on some platforms: Linux kernel 2.6.22.19 on hppa, NetBSD 10.0.

• On some platforms, this function mis-handles a trailing slash: AIX 7.2. Portability problems not fixed by Gnulib:

• On some platforms, timestamps of symbolic links cannot be modified, so the replacement fails with ENOSYS if passed the flag AT_SYMLINK_NOFOLLOW on a symlink.

• The mere act of using lstat modifies the access time of symlinks on some platforms, so utimensat with AT_SYMLINK_NOFOLLOW can only effectively change modification time: Cygwin.

• The mere act of using stat modifies the access time of directories on some platforms, so utimensat can only effectively change directory modification time: Cygwin 1.5.x.

The gnulib module fdutimensat provides a similar interface.

10.1225 utimes

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/utimes.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• On some platforms, this function mis-handles a trailing slash: FreeBSD 7.2, Solaris 9.

• This function cannot set full timestamp resolution. In particular, some platforms incorrectly round rather than truncate. Use utimensat(AT_FDCWD,file,times,0), or the gnulib module utimens, instead.

• On some platforms, utimes (file, NULL) fails to set the file’s timestamp to the current time: glibc 2.3.3.

• On some platforms, utimes failed on read-only files when utime worked fine. glibc 2.2.5.

• On OS/2, this function cannot set the timestamp to earlier than the year 1980 in local time.

• On OS/2, this function cannot set the timestamp to an odd number of seconds.

• On OS/2, this function does not work on an opened file.

Extension: Gnulib provides a module ‘utimens’ that works around these problems and allows to set the time with nanosecond resolution (as far as supported by the file system).

10.1226 va_arg

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/va_arg.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• The second argument of va_arg must be a type that is invariant under the “default argument promotions” (ISO C 99 6.5.2.2 paragraph 6). This means that the following are not valid here: ‘float’ Use ‘double’ instead. ‘bool’ Use ‘int’ instead. Integer types smaller than ‘int’.

Use ‘int’ or ‘unsigned int’ instead.

This is a portability problem because you don’t know the width of some abstract types like uid_t, gid_t, mode_t. So, instead of

        mode = va_arg (ap, mode_t);

you have to write

        mode = (sizeof (mode_t) < sizeof (int)
                ? va_arg (ap, int)
                : va_arg (ap, mode_t));
10.1227 va_copy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/va_copy.html

Gnulib module: stdarg Portability problems fixed by Gnulib:

• This macro is missing on some platforms: AIX 5.1 with cc or xlc, HP-UX 11 with cc. Portability problems not fixed by Gnulib:

10.1228 va_end

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/va_end.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.1229 va_start

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/va_start.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

10.1230 vdprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vdprintf.html

Gnulib module: vdprintf or vdprintf-posix or vdprintf-gnu Portability problems fixed by either Gnulib module vdprintf or vdprintf-posix or

vdprintf-gnu:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14.

Portability problems fixed by either Gnulib module vdprintf-posix or vdprintf-gnu:

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: Solaris 11.4.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Solaris 11.4.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Solaris 11.4.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floatingpoint and pointer output on some platforms: AIX 7.1.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

Portability problems fixed by Gnulib module vdprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module vdprintf-posix or vdprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.1231 vfprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vfprintf.html

Gnulib module: vfprintf-posix or vfprintf-gnu or stdio, nonblocking, sigpipe Portability problems fixed by either Gnulib module vfprintf-posix or vfprintf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

Portability problems fixed by Gnulib module vfprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module vfprintf-posix or vfprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14.

Portability problems fixed by Gnulib module stdio or vfprintf-posix or vfprintfgnu, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio or vfprintf-posix or vfprintfgnu, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• Attempting to write to a read-only stream fails with EOF but does not set the error flag for ferror on some platforms: glibc 2.13, cygwin 1.7.9.

10.1232 vfscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vfscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vfscanf.html

Gnulib module: vfscanf, nonblocking Portability problems fixed by Gnulib module vfscanf, together with module

nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows, this function doesn’t support the hh, ll, j, t, z size specifiers.

10.1233 vfwprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vfwprintf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• In the C or POSIX locales, the %c and %s conversions may fail on some platforms: glibc 2.35.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.1234 vfwscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vfwscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vfwscanf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Cygwin 1.5.x, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1235 vprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vprintf.html

Gnulib module: vprintf-posix or vprintf-gnu or stdio, nonblocking, sigpipe Portability problems fixed by either Gnulib module vprintf-posix or vprintf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

Portability problems fixed by Gnulib module vprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module vprintf-posix or vprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14.

Portability problems fixed by Gnulib module stdio or vprintf-posix or vprintf-gnu, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio or vprintf-posix or vprintf-gnu, together with module sigpipe:

• When writing to a pipe with no readers, this function fails, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• Attempting to write to a read-only stream fails with EOF but does not set the error flag for ferror on some platforms: glibc 2.13, cygwin 1.7.9.

10.1236 vscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vscanf.html

Gnulib module: vscanf, nonblocking Portability problems fixed by Gnulib module vscanf, together with module

nonblocking:

• When reading from a non-blocking pipe whose buffer is empty, this function fails with errno being set to EINVAL instead of EAGAIN on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows, these functions don’t support the hh, ll, j, t, z size specifiers.

10.1237 vsnprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vsnprintf.html

Gnulib module: vsnprintf or vsnprintf-posix or vsnprintf-gnu Portability problems fixed by either Gnulib module vsnprintf or vsnprintf-posix or

vsnprintf-gnu:

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function does not return a byte count as specified in C99 on some platforms: HP-UX 11, Solaris 9, mingw, MSVC 14.

Portability problems fixed by either Gnulib module vsnprintf-posix or vsnprintf-

gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC • printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

• This function does not truncate the result as specified in C99 on some platforms: mingw, MSVC 14.

• This function overwrites memory even when a zero size argument is passed on some platforms: HP-UX 11.

Portability problems fixed by Gnulib module vsnprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module vsnprintf-posix or vsnprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not fully support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, HP-UX 11, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

10.1238 vsprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vsprintf.html

Gnulib module: vsprintf-posix or vsprintf-gnu Portability problems fixed by either Gnulib module vsprintf-posix or vsprintf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.4, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes, or wrong capitalization) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floating-point and pointer output on some platforms: AIX 7.1, Solaris 10/x86, mingw, MSVC/clang.

• This function mishandles large floating point precisions (for example, formatting 1.0 with ‘"%.511f"’) on some platforms: Solaris 10.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

• The compiler warns that this function is deprecated: macOS 13.0.

Portability problems fixed by Gnulib module vsprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module vsprintf-posix or vsprintf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: glibc when used with _FORTIFY_SOURCE >= 2 (set by default on Ubuntu), Android, OpenBSD, macOS 11.1, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• Formatting noncanonical ‘long double’ numbers produces nonmeaningful results on some platforms: glibc and others, on x86, x86 64, IA-64 CPUs.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

10.1239 vsscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vsscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vsscanf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: MSVC 14.

• On Windows platforms (excluding Cygwin), this function does not set errno upon failure.

• On Windows, these functions don’t support the hh, ll, j, t, z size specifiers.

10.1240 vswprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vswprintf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• On Windows, this function does not take a buffer size as second argument.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• In the C or POSIX locales, the %c and %s conversions may fail on some platforms: glibc 2.35.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

10.1241 vswscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vswscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vswscanf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Cygwin 1.5.x, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1242 vwprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vwprintf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.7.

• This function exists, but does not support wide arguments on some platforms: Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• In the C or POSIX locales, the %c and %s conversions may fail on some platforms: glibc 2.35.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.1243 vwscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/vwscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vwscanf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Cygwin 1.5.x, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1244 wait

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1245 waitid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/waitid.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14.

• As of 2005, no system is known on which waitid with flag WNOWAIT works correctly.

10.1246 waitpid

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/waitpid.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-waitpid-3.html

Gnulib module: waitpid Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib:

10.1247 wcpcpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcpcpy.html

Gnulib module: wcpcpy

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.

• This function is not declared (without -D_GNU_SOURCE) on some platforms: glibc 2.13.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1248 wcpncpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcpncpy.html

Gnulib module: wcpncpy

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.

• This function is not declared (without -D_GNU_SOURCE) on some platforms: glibc 2.13.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1249 wcrtomb

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcrtomb.html

Gnulib module: wcrtomb

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw.

• This function produces wrong characters in the C locale on some platforms: Android 4.3.

• This function returns 0 when the first argument is NULL in some locales on some platforms: Solaris 11.3.

• This function does not ignore the second argument when the first argument is NULL on some platforms: MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the ISO C11 function c32rtomb, provided by Gnulib module c32rtomb, operates on 32-bit wide characters and therefore does not have this limitation.

10.1250 wcscasecmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscasecmp.html

Gnulib module: wcscasecmp

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1251 wcscasecmp_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscasecmp_l.
html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: Mac OS X 10.5, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1252 wcscat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscat.html

Gnulib module: wcscat

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1253 wcschr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcschr.html

Gnulib module: wcschr Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1254 wcscmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscmp.html

Gnulib module: wcscmp Portability problems fixed by Gnulib:

• This function compares the wide characters as if they were unsigned, although wchar_t is signed, on some platforms: glibc 2.14.1 on x86 or x86 64, musl libc 1.2.3, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, Solaris 11.4.

• This function may return a wrong result if the two arguments are of different length, on some platforms: glibc 2.37 on arm and arm64 CPUs, AIX 7.2 in 64-bit mode. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1255 wcscoll

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscoll.html

Gnulib module: wcscoll Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1256 wcscoll_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscoll_l.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1257 wcscpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscpy.html

Gnulib module: wcscpy Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

Note: wcscpy (dst, src) is only safe to use when you can guarantee that there are at least wcslen (src) + 1 wide characters allocated at dst.

10.1258 wcscspn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcscspn.html

Gnulib module: wcscspn Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1259 wcsdup

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsdup.html

Gnulib module: wcsdup Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, Solaris 10, Cygwin 1.5.x. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1260 wcsftime

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html

Gnulib module: wcsftime Portability problems fixed by Gnulib:

• On native Windows platforms (mingw, MSVC), this function works incorrectly when the environment variable TZ has been set by Cygwin. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• Native Windows platforms (mingw, MSVC) support only a subset of time zones specified by POSIX. See Section 10.1206 [tzset], page 457.

10.1261 wcslen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcslen.html

Gnulib module: wcslen Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1262 wcsncasecmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsncasecmp.html

Gnulib module: wcsncasecmp Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1263 wcsncasecmp_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsncasecmp_l.
html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: Mac OS X 10.5, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1264 wcsncat

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsncat.html

Gnulib module: wcsncat Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1265 wcsncmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsncmp.html

Gnulib module: wcsncmp Portability problems fixed by Gnulib:

• This function compares the wide characters as if they were unsigned, although wchar_t is signed, on some platforms: glibc 2.14.1 on x86 or x86 64, musl libc 1.2.3, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, Solaris 11.4.

• This function may return a wrong result if the two arguments are of different length, on some platforms: AIX 7.2 in 64-bit mode.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1266 wcsncpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsncpy.html

Gnulib module: wcsncpy Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

Note: This function has no real use: It cannot be used for filling a fixed-size record with a wide string, before writing it to a file, because the wide string encoding is platform dependent and, on some platforms, also locale dependent. And this function is not appropriate for copying a wide string into a bounded memory area, because you have no guarantee that the result will be null-terminated. Even if you add the null character at the end yourself, this function is inefficient (as it spends time clearing unused memory) and will allow silent truncation to occur, which is not a good behavior for GNU programs.

10.1267 wcsnlen

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsnlen.html

Gnulib module: wcsnlen

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1268 wcsnrtombs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsnrtombs.html

Gnulib module: wcsnrtombs

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

• This function cannot consume valid sequences of wide characters on some platforms: Solaris 11.4.

  • In C++ mode, the system’s <wchar.h> defines std::wcsnrtombs but not ::wcsnrtombs

on some platforms: Solaris 11 OpenIndiana.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32snrtombs, provided by Gnulib module c32snrtombs, operates on 32-bit wide characters and therefore does not have this limitation.

10.1269 wcspbrk

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcspbrk.html

Gnulib module: wcspbrk

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1270 wcsrchr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsrchr.html

Gnulib module: wcsrchr

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1271 wcsrtombs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsrtombs.html

Gnulib module: wcsrtombs

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw.

• This function does not ignore the length argument if the destination argument is NULL on some platforms: mingw.

• This function updates the source pointer also if the destination argument is NULL on some platforms: HP-UX 11.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32srtombs, provided by Gnulib module c32srtombs, operates on 32-bit wide characters and therefore does not have this limitation.

10.1272 wcsspn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsspn.html

Gnulib module: wcsspn Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1273 wcsstr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsstr.html

Gnulib module: wcsstr or wcsstr-simple Portability problems fixed by either Gnulib module wcsstr-simple or wcsstr:

• This function is missing on some platforms: HP-UX 11.00. Portability problems fixed by Gnulib module wcsstr:

• This function has quadratic instead of linear worst-case complexity on some platforms: glibc 2.39, macOS 12.5, FreeBSD 13.1, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1274 wcstod

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstod.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1275 wcstof

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstof.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1276 wcstoimax

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstoimax.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1277 wcstok

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstok.html

Gnulib module: wcstok Portability problems fixed by Gnulib:

• This function is missing on some platforms: Cygwin 1.5.x.

• This function takes only two arguments on some platforms: mingw, older MSVC.

• This function may use hidden state, ignoring the third argument, and thus exhibit a bug when two or more wcstok iteration loops are being performed in the same thread, on some platforms: HP-UX 11.31. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1278 wcstol

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstol.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1279 wcstold

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstold.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1280 wcstoll

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstoll.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1281 wcstombs

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstombs.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32stombs, provided by Gnulib module c32stombs, operates on 32-bit wide characters and therefore does not have this limitation.

10.1282 wcstoul

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstoul.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1283 wcstoull

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstoull.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1284 wcstoumax

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcstoumax.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11.11, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1285 wcswidth

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcswidth.html

Gnulib module: wcswidth

Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32swidth, provided by Gnulib module c32swidth, operates on 32-bit wide characters and therefore does not have this limitation.

10.1286 wcsxfrm

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsxfrm.html

Gnulib module: wcsxfrm Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.5.x. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1287 wcsxfrm_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsxfrm_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1288 wctob

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wctob.html

Gnulib module: wctob Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw.

• This function clobbers caller-owned registers on some platforms: Cygwin 1.7.5.

• This function does not work on some platforms: Solaris 9. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32tob, provided by Gnulib module c32tob, operates on 32-bit wide characters and therefore does not have this limitation.

10.1289 wctomb

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wctomb.html

Gnulib module: wctomb

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1290 wctrans

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wctrans.html

Gnulib module: wctrans

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, mingw, MSVC 9, Android 7.1.

• This function does not support the "tolower" and "toupper" mappings on some platforms: NetBSD 10.0. (It returns non-null values for the arguments "towlower" and "towupper", but with these values, the function towctrans always crashes.)

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32_get_mapping, provided by Gnulib module c32_get_mapping, operates on 32-bit wide characters and therefore does not have this limitation.

10.1291 wctrans_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wctrans_l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1292 wctype

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wctype.html

Gnulib module: wctype Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, MSVC 9.

• This function is declared in <wchar.h>, not in <wctype.h>, on some platforms: HP-UX 11.00.

• This function does not support the "blank" character class on some platforms: mingw.

• The object returned by this function for the "blank" character class is inconsistent with the iswblank and isblank functions on some platforms: MSVC 14.

• The object returned by this function for the "punct" character class is inconsistent with the ispunct function on some platforms: Android 11.

Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32_get_type_ test, provided by Gnulib module c32_get_type_test, operates on 32-bit wide characters and therefore does not have this limitation.

10.1293 wctype_l

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wctype_l.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1294 wcwidth

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcwidth.html

Gnulib module: wcwidth Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

• This function is not declared (without -D_GNU_SOURCE) on some platforms: glibc 2.8.

• This function handles combining characters in UTF-8 locales incorrectly on some platforms: macOS 12.5, NetBSD 9.3, OpenBSD 5.8, MidnightBSD 1.1.

• This function returns 2 for characters with ambiguous east asian width, even in Western locales, on some platforms: Solaris 11.4. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the Gnulib function c32width, provided by Gnulib module c32width, operates on 32-bit wide characters and therefore does not have this limitation.

• This function treats zero-width spaces like control characters on some platforms: AIX 7.2.

10.1295 wmemchr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wmemchr.html

Gnulib module: wmemchr Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.00, MSVC 14. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1296 wmemcmp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wmemcmp.html

Gnulib module: wmemcmp Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.00, MSVC 14.

• This function compares the wide characters as if they were unsigned, although wchar_t is signed, on some platforms: glibc 2.14.1 on x86 or x86 64, musl libc 1.2.3, NetBSD 10.0, OpenBSD 7.2, Solaris 11.4. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1297 wmemcpy

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wmemcpy.html

Gnulib module: wmemcpy Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.00, MSVC 9. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1298 wmemmove

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wmemmove.html

Gnulib module: wmemmove Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.00, MSVC 9. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1299 wmemset

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wmemset.html

Gnulib module: wmemset Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11.00, MSVC 9. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1300 wordexp

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wordexp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.1301 wordfree

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wordfree.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

10.1302 wprintf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wprintf.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00.

• This function exists, but does not support wide arguments on some platforms: Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• This function does not support size specifiers as in C23 (w8, w16, w32, w64, wf8, wf16, wf32, wf64) on some platforms: glibc, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

• In the C or POSIX locales, the %c and %s conversions may fail on some platforms: glibc 2.35.

• When formatting an integer with grouping flag, this function inserts thousands separators even in the "C" locale on some platforms: NetBSD 5.1.

• On some platforms, this function does not set errno or the stream error indicator on attempts to write to a read-only stream: Cygwin 1.7.9.

10.1303 write

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html

Gnulib module: write, nonblocking, sigpipe Portability problems fixed by Gnulib module write:

• This function is declared in a different header file (namely, <io.h>) on some platforms: mingw, MSVC 14.

• This function crashes when invoked with invalid arguments on some platforms: MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module nonblocking:

• When writing to a non-blocking pipe whose buffer is full, this function fails with errno being set to ENOSPC instead of EAGAIN on some platforms: mingw, MSVC 14.

• When writing to a non-blocking pipe on which no reader is currently waiting an amount of bytes that exceeds the pipe buffer’s size, then—even if the pipe’s buffer is empty— this function fails, instead of performing a partial write into the pipe buffer, on some platforms: mingw, MSVC 14.

Portability problems fixed by Gnulib module stdio, together with module sigpipe:

• When writing to a pipe with no readers, this function fails with error EINVAL, instead of obeying the current SIGPIPE handler, on some platforms: mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• This function may fail with error EINTR, even in programs that don’t install any signal handlers, on some platforms: macOS 11.1.

For handling EINTR, Gnulib provides a module ‘safe-write’ with a function safe_

write.

10.1304 writev

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/writev.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

10.1305 wscanf

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/wscanf.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-wscanf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

10.1306 y0

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/y0.html

Gnulib module: y0 Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

10.1307 y1

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/y1.html

Gnulib module: y1 Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

10.1308 yn

POSIX specification:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/yn.html

Gnulib module: yn Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8.

11 Past POSIX Function Substitutes

This chapter describes which functions and function-like macros specified by older versions of POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.

The notation “Gnulib module: —” means that Gnulib does not provide a module providing a substitute for the function. When the list “Portability problems not fixed by Gnulib” is empty, such a module is not needed: No portability problems are known. Otherwise, it indicates that such a module would be useful but is not available: No one so far found this function important enough to contribute a substitute for it. If you need this particular

function, you may write to <bug-gnulib at gnu dot org>.
11.1 bcmp

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/bcmp.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

• This function is removed in POSIX.1-2008. Better use memcmp instead.

11.2 bcopy

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/bcopy.html

Gnulib module: bcopy

Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

• This function is removed in POSIX.1-2008. Better use memcpy or memmove instead.

11.3 bsd_signal
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/bsd_signal.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 7.1, Cygwin 2.9, mingw, MSVC 14.

11.4 bzero

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/bzero.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

• This function is removed in POSIX.1-2008. Better use memset instead.

11.5 ecvt

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/ecvt.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 10.0, Android 9.0.

• This function is not declared on some platforms: Cygwin 2.9.

• This function is removed in POSIX.1-2008. Better use sprintf instead.

11.6 fcvt

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/fcvt.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, NetBSD 10.0, Android 9.0.

• This function is not declared on some platforms: Cygwin 2.9.

• This function is removed in POSIX.1-2008. Better use sprintf instead.

11.7 ftime

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/ftime.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Android 9.0.

• This function is not declared on some platforms: Android 13.

• On native Windows platforms (mingw, MSVC), this function works incorrectly when the environment variable TZ has been set by Cygwin.

• This function is removed in POSIX.1-2008. Better use clock_gettime instead, and use ftime only as a fallback for portability to Windows platforms.

11.8 gcvt

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/gcvt.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, Android 9.0.

• This function is not declared on some platforms: Cygwin 2.9.

• This function is removed in POSIX.1-2008. Better use sprintf instead.

11.9 getcontext
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/getcontext.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

Note: A third-party implementation is available at https://github.com/kaniini/

libucontext/.
11.10 gethostbyaddr
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/gethostbyaddr.html

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

11.11 gethostbyname
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/gethostbyname.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

11.12 getwd

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/getwd.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

• The size of the buffer required for this function is not a compile-time constant. Also, the function truncates a result that would be larger than the minimum buffer size. For these reasons, this function is removed in POSIX.1-2008. Better use the getcwd function instead.

11.13 h_errno
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/h_errno.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.34, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

11.14 index

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/index.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

• This function is not declared on some platforms: Android 13.

• This function is removed in POSIX.1-2008. Better use strchr instead.

11.15 makecontext
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/makecontext.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

Note: A third-party implementation is available at https://github.com/kaniini/

libucontext/.
11.16 mktemp

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/mktemp.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is not appropriate for creating temporary files. (It has security risks.) Therefore it is removed in POSIX.1-2008. Better use mkstemp instead.

11.17 pthread_attr_getstackaddr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/009695399/functions/
pthread_attr_getstackaddr.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Cygwin 1.7.9, mingw, MSVC 14, Android 9.0.

• This function is not declared on some platforms: Android 13.

11.18 pthread_attr_setstackaddr

POSIX specification:

https://pubs.opengroup.org/onlinepubs/009695399/functions/
pthread_attr_setstackaddr.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Cygwin 1.7.9, mingw, MSVC 14, Android 9.0.

• This function is not declared on some platforms: Android 13.

11.19 rindex

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/rindex.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

• This function is removed in POSIX.1-2008. Better use strrchr instead.

11.20 scalb
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/scalb.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

11.21 setcontext
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/setcontext.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• The effects of this call are system and compiler optimization dependent, since it restores the contents of register-allocated variables but not the contents of stack-allocated variables.

Note: A third-party implementation is available at https://github.com/kaniini/

libucontext/.
11.22 swapcontext
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/swapcontext.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

Note: A third-party implementation is available at https://github.com/kaniini/

libucontext/.
11.23 ualarm
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/ualarm.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

11.24 usleep
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/usleep.html

Gnulib module: usleep Portability problems fixed by Gnulib:

• On some systems, usleep rejects attempts to sleep longer than 1 second, as allowed by POSIX: NetBSD 10.0, mingw. Portability problems not fixed by Gnulib:

• According to POSIX, the usleep function may interfere with the program’s use of the SIGALRM signal. On Linux, it doesn’t; on other platforms, it may.

11.25 vfork
POSIX specification:  https://pubs.opengroup.org/onlinepubs/009695399/
functions/vfork.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

11.26 wcswcs

Removed in POSIX.1-2008. POSIX.1-2004 specification: https://pubs.opengroup.

org/onlinepubs/009695399/functions/wcswcs.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared on some platforms: Android 13.

Chapter 11: Past POSIX Function Substitutes 506

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

• This function is removed in POSIX.1-2008. Better use wcsstr instead.

12 Glibc Header File Substitutes

This chapter describes which header files contained in GNU libc but not specified by ISO C or POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.

The notation “Gnulib module: —” means that Gnulib does not provide a module providing a substitute for the header file. When the list “Portability problems not fixed by Gnulib” is empty, such a module is not needed: No portability problems are known. Otherwise, it indicates that such a module would be useful but is not available: No one so far found this header file important enough to contribute a substitute for it. If you need this particular header file, you may write to <bug-gnulib at gnu dot org>.

12.1 a.out.h

Describes the structure of executables (and object files?) in the old a.out format. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This header file is useless because most executables and object files are in ELF format on some platforms: glibc 2.3.6, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7.

12.2 aliases.h

Defines the type struct aliasent and declares the functions setaliasent,

endaliasent, getaliasent, getaliasent_r, getaliasbyname, getaliasbyname_r.

Documentation:

• man setaliasent.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

12.3 alloca.h

Declares the alloca function of function-like macro. Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Variable-Size-Automatic.
 html,

• man alloca.

Gnulib module: alloca Portability problems fixed by Gnulib:

• This header file is missing on some platforms: FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, mingw, MSVC 14. Portability problems not fixed by Gnulib:

12.4 ar.h

Describes the structure of files produced by the ‘ar’ program. Defines the type struct

ar_hdr and the macros ARMAG, SARMAG, ARFMAG.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

12.5 argp.h

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argp.html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This header file is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

12.6 argz.h

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz. Gnulib module: argz Portability problems fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• The argz functions do not work on some platforms: Cygwin. Portability problems not fixed by Gnulib:

12.7 byteswap.h

Defines the functions or function-like macros bswap_16, bswap_32, bswap_64. Gnulib module: byteswap Portability problems fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14. Portability problems not fixed by Gnulib:

12.8 crypt.h

Defines the type struct crypt_data and declares the functions crypt, crypt_r, setkey,

setkey_r, encrypt, encrypt_r.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/crypt.html, https://
 www.gnu.org/software/libc/manual/html_node/DES-Encryption.html,

• man crypt, man encrypt. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• The functions crypt, setkey, encrypt are missing on some platforms: HP-UX 11.

• The type struct crypt_data and the functions crypt_r, setkey_r, encrypt_r are

missing on some platforms: Solaris 11.4, Cygwin.

12.9 endian.h

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
libc-ddefs.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=162

Describes the platform’s endianness (byte ordering of words stored in memory). Defines

the macros BYTE_ORDER, LITTLE_ENDIAN, BIG_ENDIAN, PDP_ENDIAN.

Gnulib module: endian Portability problems fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 7.3.1, HP-UX 11.31, Solaris 11.4, mingw, MSVC 14. Portability problems not fixed by Gnulib:

12.10 envz.h

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Envz-Functions.html,

• man envz. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

12.11 err.h
Declares the functions warn, vwarn, warnx, vwarnx, err, verr, errx, verrx.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man err. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

12.12 error.h
Declares the functions error, error_at_line and the variables error_print_progname,
error_message_count, error_one_per_line.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man error. Gnulib module: error-h Portability problems fixed by Gnulib:

• This header file is missing on many platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14. Portability problems not fixed by Gnulib:

12.13 execinfo.h
Declares the functions backtrace, backtrace_symbols, backtrace_symbols_fd.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Backtraces.html,

• man backtrace. Gnulib module: execinfo Portability problems fixed by Gnulib:

• This header file is missing on some platforms: musl libc, FreeBSD 9.3, NetBSD 6.1, OpenBSD 6.9, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

• On platforms where the header file is missing, the Gnulib substitute implementation is just a stub, and does nothing.

12.14 fpu_control.h

Handling of the FPU control word. Defines the fpu_control_t type, declares the __

fpu_control variable, and defines the _FPU_GETCW, _FPU_SETCW macros.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

12.15 fstab.h

Defines the type struct fstab, the macros FSTAB_*, _PATH_FSTAB, and declares the

functions setfsent, endfsent, getfsent, getfsspec, getfsfile.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/fstab.html,

• man setfsent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

• The macro _PATH_FSTAB is missing on some platforms: AIX 5.1, HP-UX 11.

12.16 fts.h

Defines the types FTS, FTSENT and the macros FTS_*, and declares the functions fts_

open, fts_read, fts_children, fts_set, fts_close.

Documentation:

• man fts. Gnulib module: fts Portability problems fixed by Gnulib:

• This header file is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14. Portability problems not fixed by Gnulib:

12.17 getopt.h

Defines the type struct option and declares the variables optarg, optind, opterr,

optopt and the functions getopt, getopt_long, getopt_long_only.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Getopt.html,

• man getopt. Gnulib module: getopt-gnu Portability problems fixed by Gnulib:

• This header file is missing on some platforms: AIX 7.2, HP-UX 11, MSVC 14.

• The function getopt_long is missing on some platforms: Solaris 9.

• The function getopt_long_only is missing on some platforms: FreeBSD 5.2.1, NetBSD 10.0, Solaris 9, mingw.

• The method to reset options is incompatible on some platforms: FreeBSD 6.0, NetBSD 10.0(?), OpenBSD 6.7, Cygwin 1.5.x, mingw.

• The function getopt does not handle a leading ‘+’ character in the options string on some platforms: Solaris 11 2010-11. Portability problems not fixed by Gnulib:

12.18 gshadow.h

Defines the type struct sgrp and declares the functions setsgent, endsgent, getsgent,

getsgnam, sgetsgent, fgetsgent, putsgent, getsgent_r, getsgnam_r, sgetsgent_r,
fgetsgent_r.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

12.19 ieee754.h
Defines the types union ieee754_float, union ieee754_double, union ieee854_
long_double.

Gnulib module: — Portability problems fixed by Gnulib:

• This header file is missing on all non-glibc platforms: glibc/sparc64 in 32-bit mode, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

• The substitute for this header file has not been tested for long double and does not work on some platforms.

• The substitute for this header file returns nonsense on (now-quite-rare) platforms that do not use IEEE floating point.

12.20 ifaddrs.h

Defines the type struct ifaddrs and declares the functions getifaddrs, freeifaddrs. Documentation:

• https://www.kernel.org/doc/man-pages/online/pages/man3/getifaddrs.3.
 html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.

12.21 libintl.h
Defines the macros __USE_GNU_GETTEXT, __GNU_GETTEXT_SUPPORTED_REVISION, and de-
clares the functions gettext, dgettext, dcgettext, ngettext, dngettext, dcngettext,
textdomain, bindtextdomain, bind_textdomain_codeset.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Message-catalogs-with-gettext.
 html,
• https://www.gnu.org/software/gettext/manual/html_node/gettext.html.

Gnulib module: gettext Portability problems fixed by Gnulib, if GNU gettext is installed:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14, Android 9.0.

• The functions cannot deal with GNU .mo files with system-dependent strings (of major version 1 or of minor version 1) on some non-glibc platforms: NetBSD 3.0, Solaris 10. Portability problems not fixed by Gnulib:

12.22 link.h

Defines the type struct dl_phdr_info, and declares the function dl_iterate_phdr. Documentation: — Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, AIX 7.1, HP-UX 11.31, Cygwin 2.9.0, mingw, MSVC 14.

12.23 malloc.h

Declares the function memalign and functions for customizing the malloc behavior. Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Unconstrained-Allocation.
 html.

Gnulib module: malloc-h Portability problems fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, OpenBSD 6.7. Portability problems not fixed by Gnulib:

12.24 mcheck.h

Defines the type enum mcheck_status and declares the functions mcheck,

mcheck_pedantic, mcheck_check_all, mprobe, mtrace, muntrace.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.
 html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

12.25 mntent.h
Defines the type struct mntent and the macros MNTTAB, MOUNTED, MNTTYPE_*, MNTOPT_
*, and declares the functions setmntent, getmntent, getmntent_r, addmntent, endmntent,
hasmntopt.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/mtab.html,

• man setmntent.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, mingw, MSVC 14.

• The function getmntent_r is missing on all non-glibc platforms: AIX 5.1, HP-UX 11, Cygwin, Android 9.0.

Gnulib module mountlist provides a higher-level abstraction.

12.26 obstack.h

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Obstacks.html.

Gnulib module: obstack Portability problems fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

12.27 paths.h

Defines the macros _PATH_*. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11 2010-11, mingw, MSVC 14.

• The set of _PATH_* macros is platform dependent.

12.28 printf.h

Defines the type struct printf_info and the macros and enum values PA_*, and

declares the functions printf_function, printf_arginfo_function, register_printf_
function, parse_printf_format, printf_size, printf_size_info.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Parsing-a-Template-String.
 html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

12.29 pty.h

Declares the functions openpty and forkpty. Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Pseudo_002dTerminal-Pairs.
 html,

• man openpty. Gnulib module: pty Portability problems fixed by Gnulib:

• This header file is missing on some platforms that declare the forkpty and openpty functions in util.h or libutil.h instead: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7.

• This header file is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4. Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

12.30 resolv.h
Defines the types res_sendhookact, res_send_qhook, res_send_rhook, res_state,

struct res_sym and the macros _PATH_RESCONF, RES_*, and declares the functions res_

close, res_init, res_mkquery, res_query, res_querydomain, res_search, res_send.

Documentation:

• man res init. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

• The functions are missing on some platforms: HP-UX 11.

12.31 shadow.h

Defines the type struct spwd and declares the functions setspent, endspent, getspent,

getspent_r, getspnam, getspnam_r, sgetspent, sgetspent_r, fgetspent, fgetspent_r,
putspent, lckpwdf, ulckpwdf.

Documentation:

• man setspent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin, mingw, MSVC 14, Android 9.0.

• The functions getspent_r, getspnam_r, sgetspent_r, fgetspent, fgetspent_r,

putspent are missing on some platforms: HP-UX 11.

• The functions sgetspent, sgetspent_r are missing on some platforms: HP-UX 11, Solaris 11.4.

12.32 sys/file.h

Declares the function flock. Gnulib module: sys file Portability problems fixed by Gnulib:

• This header file is missing on some platforms: MSVC 14. Portability problems not fixed by Gnulib:

• This header file does not declare the flock function on some platforms: AIX 7.1, HP-UX 11.23, Solaris 11.4.

12.33 sys/ioctl.h

Declares the function ioctl. Documentation:

• https://www.gnu.org/software/libc/manual/html_node/IOCTLs.html,

• man ioctl. Gnulib module: sys ioctl Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file does not declare the ioctl function on some platforms: AIX 5.1, Solaris 11.4, Haiku 2017. Portability problems not fixed by Gnulib:

12.34 sys/random.h

Declares the function getrandom and the flags for it. Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Unpredictable-Bytes.
 html,

• man getrandom. Gnulib module: sys random Portability problems fixed by Gnulib:

• This header file is missing on some platforms: glibc 2.24, NetBSD 9.3, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.11, Cygwin 2.6.x, mingw, MSVC 14.

• This header file is not self-contained on some platforms: uClibc, macOS 11.1. Portability problems not fixed by Gnulib:

12.35 sysexits.h

Defines the EX_* macros, including EX_OK. Gnulib module: sysexits Portability problems fixed by Gnulib:

• This header file is missing on some platforms: mingw, MSVC 14.

• This header file defines no EX_* macros if _BSD_SOURCE is not defined on some platforms: Haiku.

• The macro EX_CONFIG is missing on some platforms: HP-UX 11. Portability problems not fixed by Gnulib:

12.36 ttyent.h

Defines the type struct ttyent and declares the functions setttyent, endttyent,

getttyent, getttynam.

Documentation:

• man setttyent. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This header file is missing on some platforms: HP-UX 11, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0.

12.37 utmp.h

Defines functions for login and logout (to a tty session) and for examining the history of logins and logouts.

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
  html,

• man utmp. Gnulib module: utmp Portability problems fixed by Gnulib:

• This header file is missing on some platforms: FreeBSD 14.0, mingw, MSVC 14.

• <sys/types.h> is a prerequisite of <utmp.h> on some platforms: FreeBSD 8.0, OpenBSD 7.2. Portability problems not fixed by Gnulib:

• While some platforms have the struct utmp field ut_user, older platforms have the

  field ut_name.

• The struct utmp fields ut_id, ut_pid, ut_type do not exist on some platforms: macOS, old FreeBSD, NetBSD, OpenBSD, Minix.

• The struct utmp field ut_host does not exist on some platforms: Solaris.

• The struct utmp field ut_exit does not exist on some platforms: macOS, old FreeBSD, NetBSD, OpenBSD, Minix, Cygwin.

• The struct utmp field ut_session does not exist on some platforms: macOS, old FreeBSD, NetBSD, OpenBSD, Minix, AIX, HP-UX, Solaris, Cygwin.

• The struct utmp field ut_addr or ut_addr_v6 does not exist on some platforms: macOS, old FreeBSD, NetBSD, OpenBSD, Minix, AIX, Solaris.

• On some platforms, this API does not support timestamps past the year 2038: glibc 2.38 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits.

• On some platforms, this header misbehaves if the year2038 or year2038-recommended modules are used and the program is configured without the --disable-year2038 option. The readutmp module works around this problem: glibc 2.38 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits. See Section 14.5 [Avoiding the year 2038 problem], page 771.

13 Glibc Function Substitutes

This chapter describes which functions and function-like macros provided as extensions by at least GNU libc are also supported by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.

The notation “Gnulib module: —” means that Gnulib does not provide a module providing a substitute for the function. When the list “Portability problems not fixed by Gnulib” is empty, such a module is not needed: No portability problems are known. Otherwise, it indicates that such a module would be useful but is not available: No one so far found this function important enough to contribute a substitute for it. If you need this particular

function, you may write to <bug-gnulib at gnu dot org>.

This list of functions is sorted according to the header that declares them.

13.1 Glibc Extensions to <aio.h>

13.1.1 aio_init

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Configuration-of-AIO.
 html,

• man aio init.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.2 Glibc <aliases.h>
13.2.1 endaliasent

Documentation: man endaliasent

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.2.2 getaliasbyname

Documentation: man getaliasbyname

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.2.3 getaliasbyname_r

Documentation: man getaliasbyname r

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.2.4 getaliasent

Documentation: man getaliasent

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.2.5 getaliasent_r

Documentation: man getaliasent r

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.2.6 setaliasent

Documentation: man setaliasent

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.3 Glibc <argp.h>

13.3.1 argp_err_exit_status

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This variable is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.2 argp_error

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.3 argp_failure

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.4 argp_help

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Help.html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.5 argp_parse

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp.html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.6 argp_program_bug_address

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This variable is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.7 argp_program_version

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This variable is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.8 argp_program_version_hook

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Global-Variables.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This variable is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.9 argp_state_help

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.3.10 argp_usage

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Argp-Helper-Functions.
html.

Gnulib module: argp Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.4 Glibc <argz.h>

13.4.1 argz_add

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz add.

Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.2 argz_add_sep

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz add sep. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.3 argz_append

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz append. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.4 argz_count

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz count. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.5 argz_create

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz create. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.6 argz_create_sep

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz create sep. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24.

Portability problems not fixed by Gnulib:

13.4.7 argz_delete

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz delete.

Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24.

Portability problems not fixed by Gnulib:

13.4.8 argz_extract

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz extract.

Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24.

Portability problems not fixed by Gnulib:

13.4.9 argz_insert

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz insert.

Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.10 argz_next

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz next. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.11 argz_replace

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz replace. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.4.12 argz_stringify

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-argz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Argz-Functions.html,

• man argz stringify. Gnulib module: argz Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

• This function is broken on some platforms: Cygwin 1.5.24. Portability problems not fixed by Gnulib:

13.5 Glibc Extensions to <arpa/inet.h>

13.5.1 inet_aton

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-inet-aton-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Address-Functions.
 html,

• man inet aton. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

13.5.2 inet_lnaof

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Address-Functions.
 html,

• man inet lnaof. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

13.5.3 inet_makeaddr

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Address-Functions.
 html,

• man inet makeaddr. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.4.

13.5.4 inet_net_ntop

Documentation: man inet net ntop

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.5.5 inet_net_pton

Documentation: man inet net pton

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.5.6 inet_netof

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Address-Functions.
 html,

• man inet netof. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 4.4.

13.5.7 inet_network

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Address-Functions.
 html,

• man inet network. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 4.4.

13.5.8 inet_nsap_addr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, HP-UX 11.00, Cygwin 2.9, mingw, MSVC 14.

13.5.9 inet_nsap_ntoa

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, HP-UX 11.00, Cygwin 2.9, mingw, MSVC 14.

13.6 Glibc <byteswap.h>
13.6.1 bswap_16

Documentation: man bswap 16

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.6.2 bswap_32

Documentation: man bswap 32

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.6.3 bswap_64

Documentation: man bswap 64

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.7 Glibc Extensions to <complex.h>

13.7.1 clog10

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib---clog10.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
 html,

• man clog10.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 9, Android 9.0.

13.7.2 clog10f

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib---clog10f.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
 html,

• man clog10f.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 9, Android 9.0.

13.7.3 clog10l

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib---clog10l.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
 html,

• man clog10l.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 9, Android 9.0.

13.8 Glibc Extensions to <ctype.h>

13.8.1 isctype

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.9 Glibc Extensions to <dirent.h>

13.9.1 getdirentries

Documentation: man getdirentries

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• On platforms where off_t is a 32-bit type, this function may not work correctly on huge directories larger than 2 GB. The fix is to use the AC_SYS_LARGEFILE macro.

13.9.2 scandirat

Documentation: man scandirat

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.14, macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 1.7.10, mingw, MSVC 14, Android 6.0.

13.9.3 versionsort

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scanning-Directory-Content.
 html,

• man versionsort.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.10 Glibc Extensions to <dlfcn.h>

13.10.1 dladdr

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dladdr-3.html

Documentation: man dladdr Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 1.7.x, mingw, MSVC 14.

13.10.2 dladdr1

Documentation: man dladdr1

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.10.3 dlinfo

Documentation: man dlinfo

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.10.4 dlmopen

Documentation: man dlmopen

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.10.5 dlvsym

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dlvsym-1.html

Documentation: man dlvsym

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 6.0.

13.11 Glibc <envz.h>

13.11.1 envz_add

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-envz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Envz-Functions.html,

• man envz add. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.11.2 envz_entry

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-envz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Envz-Functions.html,

• man envz entry. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.11.3 envz_get

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-envz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Envz-Functions.html,

• man envz get. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.11.4 envz_merge

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-envz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Envz-Functions.html,

• man envz merge. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.11.5 envz_remove

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-envz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Envz-Functions.html,

• man envz remove. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.11.6 envz_strip

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-envz-add.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Envz-Functions.html,

• man envz strip. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.12 Glibc <err.h>

13.12.1 err

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-err-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man err. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.12.2 errx

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-errx-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man errx. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.12.3 verr

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man verr. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.12.4 verrx

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-verrx-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man verrx. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.12.5 vwarn

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man vwarn. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.12.6 vwarnx

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man vwarnx.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.12.7 warn

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-warn-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man warn. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.12.8 warnx

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-warnx-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man warnx. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

13.13 Glibc Extensions to <errno.h>

13.13.1 program_invocation_name

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man program invocation name.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.7, mingw, MSVC 14, Android 9.0.

13.13.2 program_invocation_short_name

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man program invocation short name. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.7, mingw, MSVC 14, Android 9.0.

13.14 Glibc <error.h>

13.14.1 error

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-error-n.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man error. Gnulib module: error Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 5.1.

• This function outputs an extra space if error_print_progname is set, on some platforms: Android 11. Portability problems not fixed by Gnulib:

13.14.2 error_at_line

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man error at line.

Gnulib module: error Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 5.1. Portability problems not fixed by Gnulib:

13.14.3 error_message_count

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man error message count. Gnulib module: error Portability problems fixed by Gnulib:

• This variable is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 5.1. Portability problems not fixed by Gnulib:

13.14.4 error_one_per_line

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html,

• man error one per line. Gnulib module: error Portability problems fixed by Gnulib:

• This variable is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 5.1. Portability problems not fixed by Gnulib:

13.14.5 error_print_progname

Documentation: man error print progname

Gnulib module: error Portability problems fixed by Gnulib:

• This variable is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 5.1. Portability problems not fixed by Gnulib:

13.15 Glibc <execinfo.h>
13.15.1 backtrace

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-backtrace-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Backtraces.html,

• man backtrace. Gnulib module: execinfo Portability problems fixed by Gnulib:

• This function is missing on many platforms: musl libc, FreeBSD 9.3, NetBSD 6.1, OpenBSD 6.9, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android API level 32. Portability problems not fixed by Gnulib:

• The second argument is of type size_t, not int, on some platforms: FreeBSD, NetBSD, OpenBSD.

• The return value may be (size_t)(-1) instead of 0 on some platforms: FreeBSD 12.4/i386.

• The returned stack trace is empty if it would not entirely fit into the provided buffer on some platforms: FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5.

• The returned stack trace is always empty on some platforms: FreeBSD 11.0/i386, FreeBSD 12.2/sparc64.

• On platforms where the function is missing, the Gnulib substitute implementation is just a stub, and does nothing.

13.15.2 backtrace_symbols

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-backtrace-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Backtraces.html,

• man backtrace symbols. Gnulib module: execinfo Portability problems fixed by Gnulib:

• This function is missing on many platforms: musl libc, FreeBSD 9.3, NetBSD 6.1, OpenBSD 6.9, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android API level 32. Portability problems not fixed by Gnulib:

• The second argument is of type size_t, not int, on some platforms: FreeBSD, NetBSD, OpenBSD.

• On platforms where the function is missing, the Gnulib substitute implementation is just a stub, and does nothing.

13.15.3 backtrace_symbols_fd

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-backtrace-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Backtraces.html,

• man backtrace symbols fd.

Gnulib module: execinfo Portability problems fixed by Gnulib:

• This function is missing on many platforms: musl libc, FreeBSD 9.3, NetBSD 6.1, OpenBSD 6.9, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android API level 32.

Portability problems not fixed by Gnulib:

• The second argument is of type size_t, not int, on some platforms: FreeBSD, NetBSD, OpenBSD.

• The strings printed by this function not the same as the strings returned by backtrace_ symbols on some platforms: glibc 2.39.

• On platforms where the function is missing, the Gnulib substitute implementation is just a stub, and does nothing.

13.16 Glibc Extensions to <fcntl.h>

13.16.1 fallocate

Documentation: man fallocate

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 3.4.6, mingw, MSVC 14, Android 4.4.

• On platforms where off_t is a 32-bit type, this function may not work correctly across the entire data range of files larger than 2 GB. The fix is to use the AC_SYS_LARGEFILE macro.

13.16.2 name_to_handle_at

Documentation: man name to handle at

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.13, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.16.3 readahead

Documentation: man readahead

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.0.4.

13.16.4 open_by_handle_at

Documentation: man open by handle at

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.13, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.16.5 sync_file_range

Documentation: man sync file range

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: glibc 2.5, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.17 Glibc Extensions to <fenv.h>

13.17.1 fedisableexcept

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fedisableexcept.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Control-Functions.
 html,

• man fedisableexcept.

Gnulib module: fenv-exceptions-trapping Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, musl libc, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.7, mingw, MSVC 14, Android 4.4.

Portability problems not fixed by Gnulib:

13.17.2 feenableexcept

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-feenableexcept.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Control-Functions.
 html,

• man feenableexcept.

Gnulib module: fenv-exceptions-trapping Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, musl libc, FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.7, mingw, MSVC 14, Android 4.4.

• This function does not detect failures on glibc 2.19/aarch64, FreeBSD 12.2/arm, FreeBSD 12.2/arm64, NetBSD 10.0/arm64.

Portability problems not fixed by Gnulib:

• The resulting signal is SIGILL instead of SIGFPE on some platforms: Linux/hppa, macOS 12.5/arm64.

13.17.3 fegetexcept

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fegetexcept.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Control-Functions.
 html,

• man fegetexcept. Gnulib module: fenv-exceptions-trapping Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, musl libc, FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.7, mingw, MSVC 14, Android 4.4. Portability problems not fixed by Gnulib:

13.18 Glibc Extensions to <fmtmsg.h>

13.18.1 addseverity

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Adding-Severity-Classes.
 html,

• man addseverity. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.19 Glibc <fstab.h>

13.19.1 endfsent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/fstab.html,

• man endfsent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.19.2 getfsent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/fstab.html,

• man getfsent.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.19.3 getfsfile

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/fstab.html,

• man getfsfile. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.19.4 getfsspec

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/fstab.html,

• man getfsspec. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.19.5 setfsent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/fstab.html,

• man setfsent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.20 Glibc <fts.h>

13.20.1 fts_children

Documentation: man fts children

Gnulib module: fts Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14. Portability problems not fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not correctly report the size of files or block devices larger than 2 GB and may not work correctly on huge directories larger than 2 GB. Also, on platforms where ino_t is a 32-bit type, this function may report inode numbers incorrectly. The fix is to use the AC_SYS_LARGEFILE macro (only on Mac OS X systems).

13.20.2 fts_close

Documentation: man fts close

Gnulib module: fts Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14. Portability problems not fixed by Gnulib:

13.20.3 fts_open

Documentation: man fts open

Gnulib module: fts Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14. Portability problems not fixed by Gnulib:

13.20.4 fts_read

Documentation: man fts read

Gnulib module: fts Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• On platforms where off_t is a 32-bit type, this function may not correctly report the size of files or block devices larger than 2 GB and may not work correctly on huge directories larger than 2 GB. Also, on platforms where ino_t is a 32-bit type, this function may report inode numbers incorrectly. The fix is to use the AC_SYS_LARGEFILE macro (only on Mac OS X systems).

13.20.5 fts_set

Documentation: man fts set

Gnulib module: fts Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

13.21 Glibc <getopt.h>
13.21.1 getopt_long

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getopt-long-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Options.
html,

• man getopt long.

Gnulib module: getopt-gnu Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, MSVC 14.

• The function getopt_long does not obey the combination of ‘+’ and ‘:’ flags in the options string on some platforms: glibc 2.11.

• The use of ‘W;’ in the optstring argument to does not always allow -W foo to behave synonymously with --foo: glibc 2.11.

• The function getopt_long does not support the ‘+’ flag in the options string on some platforms: macOS 11.1, AIX 5.2, Solaris 10.

• The value of optind after a missing required argument is wrong on some platforms: macOS 11.1.

• The function getopt_long does not obey the ‘-’ flag in the options string when POSIXLY_CORRECT is set on some platforms: Cygwin 1.7.0.

• Some implementations fail to reset state, including re-checking POSIXLY_CORRECT, when optind is set to ‘0’: NetBSD, Cygwin 1.7.0.

• The function getopt_long does not support options with optional arguments on some platforms: macOS 11.1, OpenBSD 4.0, AIX 5.2, Solaris 11 2010-11, Cygwin 1.5.x.

• This function crashes if the option string includes W; but there are no long options, on some platforms: glibc 2.14.

Portability problems not fixed by Gnulib:

13.21.2 getopt_long_only

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getopt-long-only-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Options.
  html,

• man getopt long only.

Gnulib module: getopt-gnu

Portability problems fixed by Gnulib:

• The function getopt_long_only does not obey the combination of ‘+’ and ‘:’ flags in the options string on some platforms: glibc 2.11.

• The use of ‘W;’ in the optstring argument to does not always allow -W foo to behave synonymously with --foo: glibc 2.11.

• The function getopt_long_only does not support the ‘+’ flag in the options string on some platforms: macOS 11.1, AIX 5.2, Solaris 10.

• The value of optind after a missing required argument is wrong on some platforms: macOS 11.1.

• The function getopt_long_only does not obey the ‘-’ flag in the options string when POSIXLY_CORRECT is set on some platforms: Cygwin 1.7.0.

• Some implementations fail to reset state, including re-checking POSIXLY_CORRECT, when optind is set to ‘0’: NetBSD, Cygwin 1.7.0.

• The function getopt_long_only does not support options with optional arguments on some platforms: macOS 11.1, OpenBSD 4.0, AIX 5.2, Solaris 11 2010-11, Cygwin 1.5.x.

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 10.0, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

• This function crashes if the option string includes W; but there are no long options, on some platforms: glibc 2.14.

Portability problems not fixed by Gnulib:

• Some implementations return success instead of reporting an ambiguity if user’s option is a prefix of two long options with the same outcome: FreeBSD.

• The GNU Coding Standards discourage the use of getopt_long_only in new programs.

13.22 Glibc Extensions to <glob.h>

13.22.1 glob_pattern_p

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on most non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.23 Glibc Extensions to <gnu/libc-version.h>

13.23.1 gnu_get_libc_release

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gnu-get-libc-version-1.html

Documentation: man gnu get libc release

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.23.2 gnu_get_libc_version

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gnu-get-libc-version-1.html

Documentation: man gnu get libc version

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.24 Glibc Extensions to <grp.h>

13.24.1 fgetgrent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scanning-All-Groups.
 html,

• man fgetgrent. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.24.2 fgetgrent_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scanning-All-Groups.
 html,

• man fgetgrent r. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.24.3 getgrent_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getgrent-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scanning-All-Groups.
 html,

• man getgrent r. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.24.4 getgrouplist

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getgrouplist-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Setting-Groups.html,

• man getgrouplist. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function takes int instead of gid_t parameters on some platforms: OS X 10.11.

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.0, Cygwin 1.7.9, mingw, MSVC 14.

The Gnulib module getugroups provides a similar API.

13.24.5 initgroups

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-initgroups-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Setting-Groups.html,

• man initgroups. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is unsafe to call between fork and exec if the parent process is multi-threaded. Instead, use getgroups or getgrouplist (or use the gnulib module mgetgroups) before forking, and setgroups in the child.

• This function is missing on some platforms: mingw, MSVC 14.

13.24.6 putgrent

Documentation: man putgrent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.24.7 setgroups

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-setgroups-2.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Setting-Groups.html,

• man setgroups. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, mingw, MSVC 14.

• On very old systems, this function operated on an array of ‘int’, even though that was a different size than an array of ‘gid_t’; you can use autoconf’s AC TYPE GETGROUPS to set GETGROUPS_T to the appropriate size (since getgroups and setgroups share the same bug).

13.25 Glibc <gshadow.h>
13.25.1 endsgent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.2 fgetsgent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.3 fgetsgent_r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.4 getsgent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.5 getsgent_r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.6 getsgnam

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.7 getsgnam_r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.8 putsgent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.9 setsgent

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.10 sgetsgent

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.25.11 sgetsgent_r

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.26 Glibc <ifaddrs.h>
13.26.1 getifaddrs

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getifaddrs.html

Documentation: man getifaddrs

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.

13.26.2 freeifaddrs

Documentation: man freeifaddrs

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.

13.27 Glibc <libintl.h>
13.27.1 bind_textdomain_codeset

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-bind-textdomain-codeset.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Charset-conversion-in-gettext.
 html,

• man bind textdomain codeset. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.2 bindtextdomain

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-bindtextdomain.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Locating-gettext-catalog.
 html,

• man bindtextdomain. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.3 dcgettext

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dcgettext.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Translation-with-gettext.
 html,

• man dcgettext. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.4 dcngettext

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dcngettext.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Advanced-gettext-functions.
 html,

• man dcngettext. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.5 dgettext

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dgettext.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Translation-with-gettext.
 html,

• man dgettext. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.6 dngettext

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dngettext.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Advanced-gettext-functions.
 html,

• man dngettext. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.7 gettext

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gettext.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Translation-with-gettext.
 html,

• man gettext. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.8 ngettext

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-ngettext.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Advanced-gettext-functions.
 html,

• man ngettext. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.27.9 textdomain

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-textdomain.html

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1122

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Locating-gettext-catalog.
 html,

• man textdomain. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.28 Glibc <link.h>

13.28.1 dl_iterate_phdr

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dl-iterate-phdr-1.html

Documentation: man dl iterate phdr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

13.29 Glibc <malloc.h>
13.29.1 mallinfo

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Statistics-of-Malloc.
 html,

• man mallinfo. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11 2010-11, mingw, MSVC 14.

13.29.2 mallinfo2

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Statistics-of-Malloc.
 html,

• man mallinfo2. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.32, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.29.3 malloc_info

Documentation: man malloc info

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

13.29.4 malloc_stats

Documentation: man malloc stats

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.29.5 malloc_trim

Documentation: man malloc trim

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.29.6 malloc_usable_size

Documentation: man malloc usable size

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.00, Solaris 11.4, mingw, MSVC 14, Android 4.1.

13.29.7 mallopt

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Malloc-Tunable-Parameters.
 html,

• man mallopt. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11 2010-11, mingw, MSVC 14, Android 7.1.

13.29.8 memalign

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Aligned-Memory-Blocks.
 html,

• man memalign. Gnulib module: memalign Portability problems fixed by Gnulib:

• This function is declared in <stdlib.h> instead of <malloc.h> on some platforms: Solaris 11.

• This function doesn’t accept an alignment of 1 or 2 on some platforms: Solaris 11. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.00, mingw, MSVC 14. The Gnulib module aligned-malloc provides functions for allocating and freeing blocks

of suitably aligned memory.

13.29.9 pvalloc

Documentation: man pvalloc

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.30 Glibc Extensions to <math.h>

13.30.1 drem

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-drem.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Remainder-Functions.
 html,

• man drem. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, mingw, MSVC 14.

13.30.2 dremf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dremf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Remainder-Functions.
 html,

• man dremf.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14.

13.30.3 dreml

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-dreml.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Remainder-Functions.
 html,

• man dreml.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.30.4 exp10

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-exp10.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
 html,

• man exp10.

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.30.5 exp10f

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-exp10f.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
 html,

• man exp10f.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.30.6 exp10l

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-exp10l.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Exponents-and-Logarithms.
 html,

• man exp10l.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.30.7 finite

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-finite.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.
 html,

• man finite. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, MSVC 14.

13.30.8 finitef

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-finitef.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.
 html,

• man finitef. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14.

13.30.9 finitel

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-finitel.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.
 html,

• man finitel. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.30.10 gamma

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gamma.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man gamma. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

13.30.11 gammaf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gammaf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man gammaf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.12 gammal

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gammal.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man gammal. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.30.13 isinff

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.
 html,

• man isinff.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 4.4.

• This function is not declared on some platforms: Android 9.0.

13.30.14 isinfl

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.
 html,

• man isinfl. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• This function is not declared on some platforms: Android 9.0.

13.30.15 isnanf

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.
 html,

• man isnanf. Gnulib module: isnanf Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, MSVC 14. Portability problems not fixed by Gnulib:

13.30.16 isnanl

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Floating-Point-Classes.
 html,

• man isnanl. Gnulib module: isnanl Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.x, MSVC 14, Android 4.4.

• This function is not declared on some platforms: Android 9.0. Portability problems not fixed by Gnulib:

13.30.17 j0f

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-j0f.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man j0f. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.18 j0l

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-j0l.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man j0l. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.30.19 j1f

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-j1f.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man j1f. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.20 j1l

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-j1l.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man j1l.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.30.21 jnf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-jnf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man jnf.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.22 jnl

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-jnl.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man jnl.

Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.30.23 lgamma_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-lgamma-r.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man lgamma r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5 x86, Minix 3.1.8, mingw, MSVC 14.

13.30.24 lgammaf_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-lgammaf-r.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man lgammaf r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.25 lgammal_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-lgammal-r.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man lgammal r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

13.30.26 matherr

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-matherr-1.html

Documentation: man matherr

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14, Android 9.0.

13.30.27 pow10

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pow10.html

Documentation: man pow10

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.30.28 pow10f

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pow10f.html

Documentation: man pow10f

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.30.29 pow10l

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pow10l.html

Documentation: man pow10l

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.30.30 scalbf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-scalbf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Normalization-Functions.
 html,

• man scalbf.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.31 scalbl

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-scalbl.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Normalization-Functions.
 html,

• man scalbl.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.30.32 significand

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-significand.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Normalization-Functions.
 html,

• man significand. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.33 significandf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-significandf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Normalization-Functions.
 html,

• man significandf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.34 significandl

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-significandl.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Normalization-Functions.
 html,

• man significandl. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14.

13.30.35 sincos

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sincos.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Trig-Functions.html,

• man sincos. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 11.0, NetBSD 9.3, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.36 sincosf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sincosf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Trig-Functions.html,

• man sincosf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 11.0, NetBSD 9.3, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.37 sincosl

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sincosl.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Trig-Functions.html,

• man sincosl.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 11.0, NetBSD 9.3, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.x, mingw, MSVC 14.

13.30.38 y0f

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-y0f.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man y0f. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.39 y0l

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-y0l.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man y0l. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.30.40 y1f

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-y1f.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man y1f. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.41 y1l

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-y1l.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man y1l. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.30.42 ynf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-ynf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man ynf. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.30.43 ynl

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-ynl.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Special-Functions.
 html,

• man ynl. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.31 Glibc <mcheck.h>

13.31.1 mcheck

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.
 html,

• man mcheck. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.31.2 mcheck_check_all

Documentation: man mcheck check all

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.31.3 mcheck_pedantic

Documentation: man mcheck pedantic

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.31.4 mprobe

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.
 html,

• man mprobe. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.31.5 mtrace

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Tracing-malloc.html,

• man mtrace. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.31.6 muntrace

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Tracing-malloc.html,

• man muntrace. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.32 Glibc <mntent.h>
13.32.1 addmntent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/mtab.html,

• man addmntent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.32.2 endmntent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/mtab.html,

• man endmntent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, mingw, MSVC 14, Android 4.4.

13.32.3 getmntent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/mtab.html,

• man getmntent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

13.32.4 getmntent_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/mtab.html,

• man getmntent r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

13.32.5 hasmntopt

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/mtab.html,

• man hasmntopt. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 7.1.

13.32.6 setmntent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/mtab.html,

• man setmntent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, mingw, MSVC 14, Android 4.4.

13.33 Glibc Extensions to <netdb.h>

13.33.1 endnetgrent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Lookup-Netgroup.html,

• man endnetgrent.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.2 gethostbyaddr_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gethostbyaddr-r-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Names.html,

• man gethostbyaddr r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

13.33.3 gethostbyname2

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gethostbyname2-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Names.html,

• man gethostbyname2. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

13.33.4 gethostbyname2_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gethostbyname2-r-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Names.html,

• man gethostbyname2 r.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

13.33.5 gethostbyname_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-gethostbyname-r-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Names.html,

• man gethostbyname r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14.

13.33.6 gethostent_r

Documentation: man gethostent r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.7 getnetbyaddr_r

Documentation: man getnetbyaddr r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.8 getnetbyname_r

Documentation: man getnetbyname r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.9 getnetent_r

Documentation: man getnetent r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.10 getnetgrent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Lookup-Netgroup.html,

• man getnetgrent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.11 getnetgrent_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Lookup-Netgroup.html,

• man getnetgrent r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.12 getprotobyname_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getprotobyname-r.html

Documentation: man getprotobyname r

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.13 getprotobynumber_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getprotobynumber-r.html

Documentation: man getprotobynumber r

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.14 getprotoent_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getprotoent-r.html

Documentation: man getprotoent r

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.15 getservbyname_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getservbyname-r.html

Documentation: man getservbyname r Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.16 getservbyport_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getservbyport-r.html

Documentation: man getservbyport r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.17 getservent_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getservent-r.html

Documentation: man getservent r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.18 herror

Documentation: man herror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

13.33.19 hstrerror

Documentation: man hstrerror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, mingw, MSVC 14.

13.33.20 innetgr

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Netgroup-Membership.
 html,

• man innetgr. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.21 rcmd

Documentation: man rcmd

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

13.33.22 rcmd_af

Documentation: man rcmd af

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11.11, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.33.23 rexec

Documentation: man rexec

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

13.33.24 rexec_af

Documentation: man rexec af

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.25 rresvport

Documentation: man rresvport

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

13.33.26 rresvport_af

Documentation: man rresvport af

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11.11, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.33.27 ruserok

Documentation: man ruserok

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

13.33.28 ruserok_af

Documentation: man ruserok af

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.33.29 setnetgrent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Lookup-Netgroup.html,

• man setnetgrent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.34 Glibc <netinet/ether.h>
13.34.1 ether_aton

Documentation: man ether aton

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 2.3.

13.34.2 ether_aton_r

Documentation: man ether aton r

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 2.3.

13.34.3 ether_hostton

Documentation: man ether hostton

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.34.4 ether_line

Documentation: man ether line

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.34.5 ether_ntoa

Documentation: man ether ntoa

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 2.3.

13.34.6 ether_ntoa_r

Documentation: man ether ntoa r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 2.3.

13.34.7 ether_ntohost

Documentation: man ether ntohost

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35 Glibc Extensions to <netinet/in.h>

13.35.1 bindresvport

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-bindresvport-3.html

Documentation: man bindresvport

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14.

13.35.2 getipv4sourcefilter

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.3 getsourcefilter

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.4 in6addr_any

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.
html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This constant is missing on some platforms: macOS 10.13, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.

13.35.5 in6addr_loopback

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.
html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This constant is missing on some platforms: macOS 10.13, Minix 3.1.8, HP-UX 11.00, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.

13.35.6 inet6_option_alloc

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.7 inet6_option_append

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.8 inet6_option_find

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.9 inet6_option_init

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.10 inet6_option_next

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.11 inet6_option_space

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.12 inet6_opt_append

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.13 inet6_opt_find

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.14 inet6_opt_finish

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.15 inet6_opt_get_val

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.16 inet6_opt_init

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.17 inet6_opt_next

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.18 inet6_opt_set_val

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.19 inet6_rth_add

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.20 inet6_rth_getaddr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.21 inet6_rth_init

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.22 inet6_rth_reverse

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.23 inet6_rth_segments

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.24 inet6_rth_space

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.4, Mac OS X 10.5, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 9, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.25 setipv4sourcefilter

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.35.26 setsourcefilter

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.36 Glibc <obstack.h>
13.36.1 obstack_alloc_failed_handler

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Preparing-for-Obstacks.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.36.2 obstack_exit_failure

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.36.3 obstack_free

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Freeing-Obstack-Objects.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.36.4 obstack_printf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Dynamic-Output.html.

Gnulib module: obstack-printf or obstack-printf-posix or obstack-printf-gnu Portability problems fixed by either Gnulib module obstack-printf or obstack-

printf-posix or obstack-printf-gnu:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-

printf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.0, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 6.1.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.0, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floatingpoint and pointer output on some platforms: Solaris 10/x86, mingw, MSVC/clang.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

Portability problems fixed by Gnulib module obstack-printf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-

printf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: MSVC 14.

• This function does not fully support the ‘n’ directive on some platforms: HP-UX 11, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

13.36.5 obstack_vprintf

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Variable-Arguments-Output.
html.

Gnulib module: obstack-printf or obstack-printf-posix or obstack-printf-gnu Portability problems fixed by either Gnulib module obstack-printf or obstack-

printf-posix or obstack-printf-gnu:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-

printf-gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.24, old mingw, MSVC 9.

• printf of ‘long double’ numbers is unsupported on some platforms: mingw, MSVC 14.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: AIX 5.2, Solaris 11.0, mingw, MSVC 14.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, NetBSD 10.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, AIX 5.1, HP-UX 11.23, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0, mingw, MSVC 14.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24, mingw, MSVC 14.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 6.1.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, AIX 5.2, Solaris 11.0, Cygwin 1.5.x, mingw, MSVC/clang.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function does not support precisions larger than 512 or 1024 in integer, floatingpoint and pointer output on some platforms: Solaris 10/x86, mingw, MSVC/clang.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

Portability problems fixed by Gnulib module obstack-printf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems fixed by either Gnulib module obstack-printf-posix or obstack-

printf-gnu and additionally the Gnulib module printf-with-n-directive:

• This function does not support the ‘n’ directive on some platforms: MSVC 14.

• This function does not fully support the ‘n’ directive on some platforms: HP-UX 11, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

13.37 Glibc Extensions to <poll.h>

13.37.1 ppoll

Documentation: man ppoll

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 6.4, NetBSD 9.3, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 10, Cygwin 1.7.x, mingw, MSVC 14, Android 4.3.

13.38 Glibc <printf.h>
13.38.1 parse_printf_format

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Parsing-a-Template-String.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.38.2 printf_size

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Predefined-Printf-Handlers.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.38.3 printf_size_info

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Predefined-Printf-Handlers.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.38.4 register_printf_function

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Registering-New-Conversions.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.38.5 register_printf_modifier

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.38.6 register_printf_specifier

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.38.7 register_printf_type

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.39 Glibc Extensions to <pthread.h>

13.39.1 pthread_attr_getaffinity_np

Documentation: man pthread attr getaffinity np

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.3.2, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.3.3.

13.39.2 pthread_attr_setaffinity_np

Documentation: man pthread attr setaffinity np

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.3.2, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.3.3.

13.39.3 pthread_attr_getsigmask_np

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Initial-Thread-Signal-Mask.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.31, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.39.4 pthread_attr_setsigmask_np

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Initial-Thread-Signal-Mask.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.31, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.39.5 pthread_clockjoin_np

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Default-Thread-Attributes.
 html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.39.6 pthread_cond_clockwait

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1485#c5385

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Non_002dPOSIX-Extensions.
 html,

Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

13.39.7 pthread_getaffinity_np

Documentation: man pthread getaffinity np

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.3.2, macOS 11.1, FreeBSD 6.4, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.3.3.

• The third parameter has a different type on some platforms: FreeBSD 14.0, NetBSD 10.0.

13.39.8 pthread_getattr_default_np

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Default-Thread-Attributes.
 html,

• man pthread getattr default np. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.17, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.39.9 pthread_getattr_np

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pthread-getattr-np-1.html

Documentation: man pthread getattr np

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.9, mingw, MSVC 14.

13.39.10 pthread_getname_np

Documentation: man pthread getname np

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.11, Mac OS X 10.5, FreeBSD 12.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.0, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

13.39.11 pthread_kill_other_threads_np

Documentation: man pthread kill other threads np

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.39.12 pthread_mutex_clocklock

Documentation: — Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

13.39.13 pthread_rwlock_clockrdlock

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1216

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Non_002dPOSIX-Extensions.
 html,

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

13.39.14 pthread_rwlock_clockwrlock

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1216

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Non_002dPOSIX-Extensions.
 html,

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

13.39.15 pthread_rwlockattr_getkind_np

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pthread-rwlockattr-getkind-np-1.html

Documentation: man pthread rwlockattr getkind np

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

13.39.16 pthread_rwlockattr_setkind_np

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pthread-rwlockattr-getkind-np-1.html

Documentation: man pthread rwlockattr setkind np

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

13.39.17 pthread_setaffinity_np

Documentation: man pthread setaffinity np

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.3.2, macOS 11.1, FreeBSD 6.4, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has a different signature on some platforms: glibc 2.3.3.

• The third parameter has a different type on some platforms: FreeBSD 14.0, NetBSD 10.0.

13.39.18 pthread_setattr_default_np

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Default-Thread-Attributes.
 html,

• man pthread setattr default np.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.17, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.39.19 pthread_setname_np

Documentation: man pthread setname np

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.11, Mac OS X 10.5, FreeBSD 12.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.0, Cygwin 1.7.x, mingw, MSVC 14.

• This function has a different signature on some platforms: NetBSD 10.0. On NetBSD the second argument is interpreted as a printf format string, with the third argument as parameter.

13.39.20 pthread_sigqueue

Documentation: man pthread sigqueue

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.10, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.0, Cygwin 1.7.9, mingw, MSVC 14, Android 9.0.

13.39.21 pthread_timedjoin_np

Documentation: man pthread timedjoin np

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.3.2, macOS 11.1, FreeBSD 6.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• FreeBSD 6.4 has a function of this name in libthr but not in libpthread, and it also is missing a declaration.

13.39.22 pthread_tryjoin_np

Documentation: man pthread tryjoin np

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.3.2, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.40 Glibc <pty.h>

13.40.1 forkpty

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Pseudo_002dTerminal-Pairs.
 html,

• man forkpty.

Gnulib module: forkpty Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Android 5.1.

• One some systems (at least including Cygwin and Mac OS X) linking with -lutil is not required.

• On glibc, OpenBSD, NetBSD and FreeBSD linking with -lutil is required.

• The function is declared in pty.h on glibc and Cygwin. It is declared in util.h on Mac OS X, OpenBSD, and NetBSD. It is declared in libutil.h on FreeBSD. It is declared in termios.h on Solaris.

• Some platforms declare the function without marking the last two parameters const. FreeBSD 14.0, Solaris 11.4, Cygwin 1.7.1. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

13.40.2 openpty

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Pseudo_002dTerminal-Pairs.
  html,

• man openpty. Gnulib module: openpty Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, Android 5.1.

• One some systems (at least including Cygwin and Mac OS X) linking with -lutil is not required.

• On glibc, OpenBSD, NetBSD and FreeBSD linking with -lutil is required.

• The function is declared in pty.h on glibc and Cygwin. It is declared in util.h on Mac OS X, OpenBSD, and NetBSD. It is declared in libutil.h on FreeBSD. It is declared in termios.h on Solaris.

• Some platforms declare the function without marking the last two parameters const. FreeBSD 14.0, Solaris 11.4, Cygwin 1.7.1. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

13.41 Glibc Extensions to <pwd.h>

13.41.1 fgetpwent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scanning-All-Users.
  html,

• man fgetpwent.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.41.2 fgetpwent_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scanning-All-Users.
 html,

• man fgetpwent r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.41.3 getpw

Documentation: man getpw

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.41.4 getpwent_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getpwent-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scanning-All-Users.
 html,

• man getpwent r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.41.5 putpwent

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Writing-a-User-Entry.
 html,

• man putpwent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42 Glibc Extensions to <regex.h>

13.42.1 re_comp

Documentation: man re comp

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.2 re_compile_fastmap

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.3 re_compile_pattern

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.4 re_exec

Documentation: man re exec

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.5 re_match

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.6 re_match_2

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.7 re_search

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.8 re_search_2

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.9 re_set_registers

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.10 re_set_syntax

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.42.11 re_syntax_options

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.43 Glibc <regexp.h>
13.43.1 advance

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.43.2 loc1

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.43.3 loc2

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.43.4 locs

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.43.5 step

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.44 Glibc <resolv.h>
13.44.1 dn_comp

Documentation: man dn comp

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.3.0, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.2 dn_expand

Documentation: man dn expand

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

13.44.3 dn_skipname

Documentation: man dn skipname

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.4 res_dnok

Documentation: man res dnok

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.44.5 res_hnok

Documentation: man res hnok

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.44.6 res_init

Documentation: man res init

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

13.44.7 res_mailok

Documentation: man res mailok

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.44.8 res_mkquery

Documentation: man res mkquery

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Cygwin 1.5.x, mingw, MSVC 14.

13.44.9 res_nmkquery

Documentation: man res nmkquery

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.31, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.10 res_nquery

Documentation: man res nquery

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.31, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.11 res_nquerydomain

Documentation: man res nquerydomain

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.31, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.12 res_nsearch

Documentation: man res nsearch

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.31, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.13 res_nsend

Documentation: man res nsend

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.31, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.14 res_ownok

Documentation: man res ownok

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.44.15 res_query

Documentation: man res query

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

13.44.16 res_querydomain

Documentation: man res querydomain

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.3.0, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.44.17 res_search

Documentation: man res search

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Cygwin 1.5.x, mingw, MSVC 14.

13.44.18 res_send

Documentation: man res send

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.3.0, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.45 Glibc <rpc/auth.h>
13.45.1 authdes_create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.2 authdes_pk_create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.3 authnone_create

Documentation: man authnone create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.4 authunix_create

Documentation: man authunix create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.5 authunix_create_default

Documentation: man authunix create default

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.6 getnetname

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.7 host2netname

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.8 key_decryptsession

Documentation: man key decryptsession

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.9 key_decryptsession_pk

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.10 key_encryptsession

Documentation: man key encryptsession

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.11 key_encryptsession_pk

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.12 key_gendes

Documentation: man key gendes

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.13 key_get_conv

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.14 key_secretkey_is_set

Documentation: man key secretkey is set

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.15 key_setsecret

Documentation: man key setsecret

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.16 netname2host

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.17 netname2user

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.18 user2netname

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.19 xdr_des_block

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.45.20 xdr_opaque_auth

Documentation: man xdr opaque auth

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.46 Glibc <rpc/auth_des.h>
13.46.1 authdes_getucred

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.46.2 getpublickey

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.46.3 getsecretkey

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.46.4 rtime

Documentation: man rtime

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.47 Glibc <rpc/auth_unix.h>
13.47.1 xdr_authunix_parms

Documentation: man xdr authunix parms

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48 Glibc <rpc/clnt.h>
13.48.1 callrpc

Documentation: man callrpc

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.2 clnt_create

Documentation: man clnt create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.3 clnt_pcreateerror

Documentation: man clnt pcreateerror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.4 clnt_perrno

Documentation: man clnt perrno

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.5 clnt_perror

Documentation: man clnt perror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.6 clnt_spcreateerror

Documentation: man clnt spcreateerror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.7 clnt_sperrno

Documentation: man clnt sperrno

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.8 clnt_sperror

Documentation: man clnt sperror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.9 clntraw_create

Documentation: man clntraw create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.10 clnttcp_create

Documentation: man clnttcp create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.11 clntudp_bufcreate

Documentation: man clntudp bufcreate

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.12 clntudp_create

Documentation: man clntudp create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.13 clntunix_create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.14 get_myaddress

Documentation: man get myaddress

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.15 getrpcport

Documentation: man getrpcport

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.48.16 rpc_createerr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49 Glibc <rpc/key_prot.h>
13.49.1 xdr_cryptkeyarg

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.2 xdr_cryptkeyarg2

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.3 xdr_cryptkeyres

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.4 xdr_getcredres

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.5 xdr_key_netstarg

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.6 xdr_key_netstres

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.7 xdr_keybuf

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.8 xdr_keystatus

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.9 xdr_netnamestr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.49.10 xdr_unixcred

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50 Glibc <rpc/netdb.h>
13.50.1 endrpcent

Documentation: man endrpcent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50.2 getrpcbyname

Documentation: man getrpcbyname

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50.3 getrpcbyname_r

Documentation: man getrpcbyname r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50.4 getrpcbynumber

Documentation: man getrpcbynumber

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50.5 getrpcbynumber_r

Documentation: man getrpcbynumber r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50.6 getrpcent

Documentation: man getrpcent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50.7 getrpcent_r

Documentation: man getrpcent r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.50.8 setrpcent

Documentation: man setrpcent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.51 Glibc <rpc/pmap_clnt.h>

13.51.1 clnt_broadcast

Documentation: man clnt broadcast

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.51.2 pmap_getmaps

Documentation: man pmap getmaps

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.51.3 pmap_getport

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pmap-getport-3.html

Documentation: man pmap getport

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.51.4 pmap_rmtcall

Documentation: man pmap rmtcall

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.51.5 pmap_set

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pmap-set-3.html

Documentation: man pmap set

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.51.6 pmap_unset

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-pmap-unset-3.html

Documentation: man pmap unset

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.52 Glibc <rpc/pmap_prot.h>
13.52.1 xdr_pmap

Documentation: man xdr pmap

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.52.2 xdr_pmaplist

Documentation: man xdr pmaplist

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.53 Glibc <rpc/pmap_rmt.h>
13.53.1 xdr_rmtcall_args

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.53.2 xdr_rmtcallres

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.54 Glibc <rpc/rpc_msg.h>
13.54.1 xdr_callhdr

Documentation: man xdr callhdr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.54.2 xdr_callmsg

Documentation: man xdr callmsg

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.54.3 xdr_replymsg

Documentation: man xdr replymsg

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55 Glibc <rpc/svc.h>
13.55.1 svc_exit

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.2 svc_fdset

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.3 svc_getreq

Documentation: man svc getreq

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.4 svc_getreq_common

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.5 svc_getreq_poll

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.6 svc_getreqset

Documentation: man svc getreqset

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.7 svc_max_pollfd

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.8 svc_pollfd

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.9 svc_register

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-svc-register-3.html

Documentation: man svc register

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.10 svc_run

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-svc-run-3.html

Documentation: man svc run

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.11 svc_sendreply

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-svc-sendreply-3.html

Documentation: man svc sendreply

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.12 svc_unregister

Documentation: man svc unregister

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.13 svcerr_auth

Documentation: man svcerr auth

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.14 svcerr_decode

Documentation: man svcerr decode

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.15 svcerr_noproc

Documentation: man svcerr noproc

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.16 svcerr_noprog

Documentation: man svcerr noprog

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.17 svcerr_progvers

Documentation: man svcerr progvers

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.18 svcerr_systemerr

Documentation: man svcerr systemerr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.19 svcerr_weakauth

Documentation: man svcerr weakauth

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.20 svcraw_create

Documentation: man svcraw create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.21 svctcp_create

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-svctcp-create-3.html

Documentation: man svctcp create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.22 svcudp_bufcreate

Documentation: man svcudp bufcreate

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.23 svcudp_create

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-svcudp-create-3.html

Documentation: man svcudp create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.24 svcunix_create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.25 xprt_register

Documentation: man xprt register

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.55.26 xprt_unregister

Documentation: man xprt unregister

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.56 Glibc <rpc/xdr.h>
13.56.1 xdr_array

Documentation: man xdr array

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.2 xdr_bool

Documentation: man xdr bool

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.3 xdr_bytes

Documentation: man xdr bytes

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.4 xdr_char

Documentation: man xdr char

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.5 xdr_double

Documentation: man xdr double

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.6 xdr_enum

Documentation: man xdr enum

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.7 xdr_float

Documentation: man xdr float

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.8 xdr_free

Documentation: man xdr free

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.9 xdr_hyper

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.10 xdr_int

Documentation: man xdr int

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.11 xdr_int16_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.12 xdr_int32_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.13 xdr_int64_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.14 xdr_int8_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.15 xdr_long

Documentation: man xdr long

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.16 xdr_longlong_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.17 xdr_netobj

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.18 xdr_opaque

Documentation: man xdr opaque

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.19 xdr_pointer

Documentation: man xdr pointer

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.20 xdr_quad_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.56.21 xdr_reference

Documentation: man xdr reference

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.22 xdr_short

Documentation: man xdr short

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.23 xdr_sizeof

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.24 xdr_string

Documentation: man xdr string

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.25 xdr_u_char

Documentation: man xdr u char

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.26 xdr_u_hyper

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.27 xdr_u_int

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-xdr-u-int-3.html

Documentation: man xdr u int

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.28 xdr_u_long

Documentation: man xdr u long

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.29 xdr_u_longlong_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.30 xdr_u_quad_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.56.31 xdr_u_short

Documentation: man xdr u short

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.32 xdr_uint16_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

• This function is not declared in the header on some platforms: Cygwin 1.7.5.

13.56.33 xdr_uint32_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared in the header on some platforms: Cygwin 1.7.5.

13.56.34 xdr_uint64_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared in the header on some platforms: Cygwin 1.7.5.

13.56.35 xdr_uint8_t

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared in the header on some platforms: Cygwin 1.7.5.

13.56.36 xdr_union

Documentation: man xdr union

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.37 xdr_vector

Documentation: man xdr vector

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.38 xdr_void

Documentation: man xdr void

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.39 xdr_wrapstring

Documentation: man xdr wrapstring

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.40 xdrmem_create

Documentation: man xdrmem create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.41 xdrrec_create

Documentation: man xdrrec create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.42 xdrrec_endofrecord

Documentation: man xdrrec endofrecord

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.43 xdrrec_eof

Documentation: man xdrrec eof

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.44 xdrrec_skiprecord

Documentation: man xdrrec skiprecord

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.56.45 xdrstdio_create

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-xdrstdio-create-3.html

Documentation: man xdrstdio create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.4, mingw, MSVC 14, Android 9.0.

13.57 Glibc <rpcsvc/nislib.h>
13.57.1 nis_add

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.2 nis_add_entry

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.3 nis_addmember

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.4 nis_checkpoint

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.5 nis_clone_object

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.6 nis_creategroup

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.7 nis_destroy_object

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.8 nis_destroygroup

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0,

OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.9 nis_dir_cmp

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0,

OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.10 nis_domain_of

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0,

OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.11 nis_domain_of_r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.12 nis_first_entry

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0,

OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.13 nis_freenames

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.14 nis_freeresult

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.15 nis_freeservlist

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.16 nis_freetags

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.17 nis_getnames

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.18 nis_getservlist

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.19 nis_ismember

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.20 nis_leaf_of

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.21 nis_leaf_of_r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.22 nis_lerror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.23 nis_list

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.24 nis_local_directory

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.25 nis_local_group

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.26 nis_local_host

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.27 nis_local_principal

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.28 nis_lookup

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.29 nis_mkdir

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.30 nis_modify

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.31 nis_modify_entry

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.32 nis_name_of

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.33 nis_name_of_r

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.34 nis_next_entry

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.35 nis_perror

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.36 nis_ping

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.37 nis_print_directory

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.38 nis_print_entry

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.39 nis_print_group

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.40 nis_print_group_entry

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.41 nis_print_link

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.42 nis_print_object

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.43 nis_print_result

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.44 nis_print_rights

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.45 nis_print_table

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.46 nis_remove

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.47 nis_remove_entry

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.48 nis_removemember

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.49 nis_rmdir

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.50 nis_servstate

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.51 nis_sperrno

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.52 nis_sperror

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.53 nis_sperror_r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.54 nis_stats

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.57.55 nis_verifygroup

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.58 Glibc <rpcsvc/nis_callback.h>
13.58.1 xdr_cback_data

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.58.2 xdr_obj_p

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59 Glibc <rpcsvc/yp.h>
13.59.1 xdr_domainname

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.2 xdr_keydat

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.3 xdr_valdat

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.4 xdr_ypbind_resptype

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.5 xdr_ypmap_parms

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 3.8, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.6 xdr_ypmaplist

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.7 xdr_yppushresp_xfr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 3.8, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.8 xdr_ypreq_key

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.9 xdr_ypreq_nokey

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.10 xdr_ypreq_xfr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, OpenBSD 3.8, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.11 xdr_ypresp_all

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.12 xdr_ypresp_key_val

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.13 xdr_ypresp_maplist

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.14 xdr_ypresp_master

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.15 xdr_ypresp_order

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.16 xdr_ypresp_val

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.17 xdr_ypresp_xfr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.18 xdr_ypstat

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 5.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.59.19 xdr_ypxfrstat

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60 Glibc <rpcsvc/ypclnt.h>

13.60.1 yp_all

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.2 yp_bind

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.3 yp_first

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.4 yp_get_default_domain

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.5 yp_master

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.6 yp_match

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.7 yp_next

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.8 yp_order

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.9 yp_unbind

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.10 ypbinderr_string

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.11 yperr_string

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.60.12 ypprot_err

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.61 Glibc Extensions to <sched.h>

13.61.1 clone

Documentation: man clone

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.61.2 getcpu

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html,

• man getcpu. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.28, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.61.3 sched_getaffinity

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sched-getaffinity.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html,

• man sched getaffinity. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 3.0.

13.61.4 sched_getcpu

Documentation: man sched getcpu

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on most non-glibc platforms: glibc 2.5, macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.61.5 sched_setaffinity

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sched-setaffinity.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html,

• man sched setaffinity. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 3.0.

13.61.6 setns

Documentation: man setns

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: glibc 2.13, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

13.62 Glibc Extensions to <search.h>

13.62.1 hcreate_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-hcreate-r.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Hash-Search-Function.
 html,

• man hcreate r.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 8.1.

13.62.2 hdestroy_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-hdestroy-r.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Hash-Search-Function.
 html,

• man hdestroy r.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 8.1.

13.62.3 hsearch_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-hsearch-r.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Hash-Search-Function.
 html,

• man hsearch r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 8.1.

13.62.4 tdestroy

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Tree-Search-Function.
 html,

• man tdestroy.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.0, mingw, MSVC 14, Android 4.0.4.

13.62.5 twalk_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Tree-Search-Function.
 html,

• man twalk r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.63 Glibc Extensions to <selinux/selinux.h>

13.63.1 fgetfilecon

Documentation: man fgetfilecon

Gnulib module: selinux-h Portability problems fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. On those platforms, this module provides a stub that always sets errno to ENOTSUP and returns ‘-1’.

• On systems with SELinux support, this module provides a wrapper for the fgetfilecon function that insulates the caller from API-nonconforming behavior. Without this wrapper, fgetfilecon can return ‘0’ and set the context pointer to NULL, and in another scenario can return ‘10’ and set the context pointer to ‘unlabeled’. This wrapper returns ‘-1’ in each case and sets errno to ENOTSUP and ENODATA respectively. While the conditions that can provoke such behavior are rare, the average caller does not handle them because the possibility of such behavior is not documented.

Portability problems not fixed by Gnulib:

13.63.2 getfilecon

Documentation: man getfilecon

Gnulib module: selinux-h Portability problems fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. On those platforms, this module provides a stub that always sets errno to ENOTSUP and returns ‘-1’.

• On systems with SELinux support, this module provides a wrapper for the getfilecon function that insulates the caller from API-nonconforming behavior. Without this wrapper, getfilecon can return ‘0’ and set the context pointer to NULL, and in another scenario can return ‘10’ and set the context pointer to ‘unlabeled’. This wrapper returns ‘-1’ in each case and sets errno to ENOTSUP and ENODATA respectively. While the conditions that can provoke such behavior are rare, the average caller does not handle them because the possibility of such behavior is not documented.

Portability problems not fixed by Gnulib:

13.63.3 lgetfilecon

Documentation: man lgetfilecon

Gnulib module: selinux-h Portability problems fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. On those platforms, this module provides a stub that always sets errno to ENOTSUP and returns ‘-1’.

• On systems with SELinux support, this module provides a wrapper for the lgetfilecon function that insulates the caller from API-nonconforming behavior. Without this wrapper, lgetfilecon can return ‘0’ and set the context pointer to NULL, and in another scenario can return ‘10’ and set the context pointer to ‘unlabeled’. This wrapper returns ‘-1’ in each case and sets errno to ENOTSUP and ENODATA respectively. While the conditions that can provoke such behavior are rare, the average caller does not handle them because the possibility of such behavior is not documented.

Portability problems not fixed by Gnulib:

13.64 Glibc Extensions to <semaphore.h>

13.64.1 sem_clockwait

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1216

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Non_002dPOSIX-Extensions.
html,

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

13.65 Glibc <shadow.h>
13.65.1 endspent

Documentation: man endspent

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.2 fgetspent

Documentation: man fgetspent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.3 fgetspent_r

Documentation: man fgetspent r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.4 getspent

Documentation: man getspent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.5 getspent_r

Documentation: man getspent r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.6 getspnam

Documentation: man getspnam

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.7 getspnam_r

Documentation: man getspnam r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.8 lckpwdf

Documentation: man lckpwdf

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.9 putspent

Documentation: man putspent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.10 setspent

Documentation: man setspent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.11 sgetspent

Documentation: man sgetspent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.12 sgetspent_r

Documentation: man sgetspent r

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.65.13 ulckpwdf

Documentation: man ulckpwdf

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66 Glibc Extensions to <signal.h>

13.66.1 gsignal

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Signaling-Yourself.
 html,

• man gsignal. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.2 sigandset

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sigandset.html

Documentation: man sigandset

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.3 sigblock

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/BSD-Signal-Handling.
 html,

• man sigblock. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.66.4 siggetmask

Documentation: man siggetmask

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.5 sigisemptyset

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sigisemptyset.html

Documentation: man sigisemptyset

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.6 sigorset

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sigorset.html

Documentation: man sigorset

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.7 sigreturn

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sigreturn-2.html

Documentation: man sigreturn Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.8 sigsetmask

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/BSD-Signal-Handling.
 html,

• man sigsetmask. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.66.9 sigstack

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Signal-Stack.html,

• man sigstack. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.10 sigvec

Documentation: man sigvec

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.11 ssignal

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Basic-Signal-Handling.
 html,

• man ssignal. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.12 sys_siglist

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Signal-Messages.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This constant is missing on some platforms: macOS 10.13, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14.

13.66.13 sysv_signal

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Basic-Signal-Handling.
 html,

• man sysv signal. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.66.14 tgkill

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Signaling-Another-Process.
 html,

• man tgkill. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on most non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.67 Glibc Extensions to <spawn.h>

13.67.1 posix_spawn_file_actions_addchdir_np

posix_spawn_file_actions_addchdir is specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1208

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: glibc 2.28, macOS 10.13, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.0, Cygwin 3.4.6, mingw, MSVC 14, Android API level 33.

Note: Gnulib has a module posix_spawn_file_actions_addchdir that provides equivalent functionality, just without the suffix _np.

13.67.2 posix_spawn_file_actions_addclosefrom_np

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.33, macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.67.3 posix_spawn_file_actions_addfchdir_np

posix_spawn_file_actions_addfchdir is specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1208

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: glibc 2.28, macOS 10.13, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 3.4.6, mingw, MSVC 14, Android API level 33.

Note: Gnulib has a module posix_spawn_file_actions_addfchdir that provides

equivalent functionality, just without the suffix _np.

13.68 Glibc Extensions to <stdio.h>

13.68.1 asprintf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-asprintf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Dynamic-Output.html,

• man asprintf.

Gnulib module: vasprintf or vasprintf-posix or vasprintf-gnu Portability problems fixed by either Gnulib module vasprintf or vasprintf-posix or

vasprintf-gnu:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

Portability problems fixed by either Gnulib module vasprintf-posix or vasprintf-

gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: Cygwin 1.5.24.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: Solaris 11.0.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, Solaris 11.4, Cygwin 1.5.x.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, Cygwin 1.5.x.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, Solaris 11.0, Cygwin 1.5.x.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0. Portability problems fixed by Gnulib module vasprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

13.68.2 cuserid

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Who-Logged-In.html,

• man cuserid. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, mingw, MSVC 14, Android 9.0.

13.68.3 clearerr_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-clearerr-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Error-Recovery.html,

• man clearerr unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

13.68.4 fcloseall

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Closing-Streams.html,

• man fcloseall.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, mingw, Android 9.0.

• This functions returns void instead of int on some platforms: FreeBSD 14.0.

13.68.5 feof_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-feof-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/EOF-and-Errors.html,

• man feof unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

13.68.6 ferror_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-ferror-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/EOF-and-Errors.html,

• man ferror unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1.

13.68.7 fflush_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fflush-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Flushing-Buffers.
 html,

• man fflush unlocked.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.68.8 fgetc_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fgetc-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Character-Input.html,

• man fgetc unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.68.9 fgets_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fgets-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Line-Input.html,

• man fgets unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.68.10 fileno_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fileno-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Descriptors-and-Streams.
 html,

• man fileno unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0.

13.68.11 fopencookie

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Streams-and-Cookies.
 html,

• man fopencookie. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 10.4, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.3, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.68.12 fputc_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fputc-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Output.html,

• man fputc unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.68.13 fputs_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fputs-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Output.html,

• man fputs unlocked.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.68.14 fread_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fread-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Block-Input_002fOutput.
 html,

• man fread unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.68.15 fwrite_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fwrite-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Block-Input_002fOutput.
 html,

• man fwrite unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.68.16 getw

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Character-Input.html,

• man getw.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Android 9.0.

13.68.17 putw

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Output.html,

• man putw. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is not declared on some platforms: Android 9.0.

13.68.18 renameat2

Documentation: man renameat2

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.8.x, mingw, MSVC 14, Android API level 29.

• This function succeeds when the RENAME_NOREPLACE flag is specified and the source and destination are the same file, on some platforms: Cygwin 3.4.6.

The renameatu module addresses some of these portability issues.

13.68.19 setbuffer

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-setbuffer-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Controlling-Buffering.
 html,

• man setbuffer. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, mingw, MSVC

13.68.20 setlinebuf

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Controlling-Buffering.
 html,

• man setlinebuf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.23, mingw, MSVC 14.

13.68.21 sys_errlist

Documentation: man sys errlist

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: Minix 3.1.8, macOS 10.13, Cygwin 2.9, mingw, Android 9.0.

13.68.22 sys_nerr

Documentation: man sys nerr

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This variable is missing on some platforms: macOS 10.13, Minix 3.1.8, Cygwin 2.9, mingw, Android 9.0.

13.68.23 tmpnam_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Temporary-Files.html,

• man tmpnam r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.68.24 vasprintf

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vasprintf.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Variable-Arguments-Output.
  html,

• man vasprintf.

Gnulib module: vasprintf or vasprintf-posix or vasprintf-gnu Portability problems fixed by either Gnulib module vasprintf or vasprintf-posix or

vasprintf-gnu:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 10, mingw, MSVC 14.

Portability problems fixed by either Gnulib module vasprintf-posix or vasprintf-

gnu:

• This function does not support size specifiers as in C99 (hh, ll, j, t, z) on some platforms: Cygwin 1.5.24.

• printf "%f", "%e", "%g" of Infinity and NaN yields an incorrect result on some platforms: Solaris 11.0.

• This function does not support the ‘a’ and ‘A’ directives on some platforms: glibc-2.3.6, Mac OS X 10.5, NetBSD 10.0, OpenBSD 4.0, Solaris 11.4, Cygwin 1.5.x.

• This function does not support the ‘b’ directive, required by ISO C23, on some platforms: glibc 2.34, musl libc, macOS 12.5, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0.

• This function does not support the ‘F’ directive on some platforms: NetBSD 3.0, Cygwin 1.5.x.

• This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, Cygwin 1.5.x, Haiku.

• This function does not support precisions in the ‘ls’ directive correctly on some platforms: Solaris 11.4.

• This function does not support format directives that access arguments in an arbitrary order, such as "%2$s", on some platforms: NetBSD 3.0.

• This function doesn’t support the ' flag on some platforms: NetBSD 3.0, Cygwin 1.5.24.

• This function does not round the argument of the ‘a’ directive correctly on some platforms: Mac OS X 10.12, FreeBSD 14.0.

• printf "%010f" of NaN and Infinity yields an incorrect result (padded with zeroes) on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, Solaris 11.0, Cygwin 1.5.x.

• printf "%#.0x" or "%#.0X" with a zero argument yields an incorrect result (non-empty) on some platforms: Mac OS X 10.6.

• This function produces wrong output for the ‘lc’ directive with a NUL wide character argument on some platforms: musl libc 1.2.4.

• This function can crash in out-of-memory conditions on some platforms: FreeBSD 14.0, NetBSD 5.0.

Portability problems fixed by Gnulib module vasprintf-gnu:

• This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.2, NetBSD 10.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others.

Portability problems not fixed by Gnulib:

• The %m directive is not portable, use %s mapped to an argument of strerror(errno) (or a version of strerror_r) instead.

13.69 Glibc Extensions to <stdlib.h>

13.69.1 canonicalize_file_name

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Symbolic-Links.html,

• man canonicalize file name.

Gnulib module: canonicalize-lgpl Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

• This function fails to detect trailing slashes on non-directories on some platforms: glibc 2.3.5.

Portability problems not fixed by Gnulib:

13.69.2 cfree

Documentation: man cfree

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.3 clearenv

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Environment-Access.
 html,

• man clearenv.

Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 13.2, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, Solaris 10, Cygwin 2.9, mingw, MSVC 14.

13.69.4 drand48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-drand48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man drand48 r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.5 ecvt_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-V-Number-Conversion.
 html,

• man ecvt r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.6 erand48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-erand48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man erand48 r. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.7 fcvt_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-V-Number-Conversion.
 html,

• man fcvt r.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.8 getloadavg

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getloadavg-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Processor-Resources.
 html,

• man getloadavg.

Gnulib module: getloadavg Portability problems fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• This function is declared in <sys/loadavg.h>, not <stdlib.h>, on some platforms: Solaris 11.4.

Portability problems not fixed by Gnulib:

13.69.9 getpt

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Allocation.html,

• man getpt.

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14.

13.69.10 initstate_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-initstate-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/BSD-Random.html,

• man initstate r.

Gnulib module: random r

Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has an incompatible declaration on some platforms: AIX 7.1.

Portability problems not fixed by Gnulib:

• This function crashes if the state buffer is unaligned on some platforms: glibc 2.36/sparc.

• This function has a slightly different (but compatible) declaration on some platforms: Haiku 2017.

13.69.11 jrand48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-jrand48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man jrand48 r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.12 lcong48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-lcong48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man lcong48 r.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.13 lrand48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-lrand48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man lrand48 r.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.14 mkostemp

Documentation: man mkostemp

Gnulib module: mkostemp Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.6, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.5, mingw, MSVC 14, Android 5.1.

• This function is declared in <unistd.h> instead of <stdlib.h> on some platforms: macOS 11.1.

• On platforms where off_t is a 32-bit type, mkostemp may not work correctly to create files larger than 2 GB. (Cf. AC_SYS_LARGEFILE.)

Portability problems not fixed by Gnulib: The gnulib module clean-temp can create temporary files that will not be left behind

after signals such as SIGINT.

13.69.15 mkostemps

Documentation: man mkostemps

Gnulib module: mkostemps Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.10, Mac OS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.5, mingw, MSVC 14, Android 5.1.

• This function is declared in <unistd.h> instead of <stdlib.h> on some platforms: macOS 11.1.

• On platforms where off_t is a 32-bit type, mkostemps may not work correctly to create files larger than 2 GB. (Cf. AC_SYS_LARGEFILE.) Portability problems not fixed by Gnulib: The gnulib module clean-temp can create temporary files that will not be left behind

after signals such as SIGINT.

13.69.16 mkstemps

Documentation: man mkstemps

Gnulib module: mkstemps Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.10, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.

• This function is declared in <unistd.h> instead of <stdlib.h> on some platforms: macOS 11.1.

• On platforms where off_t is a 32-bit type, mkstemps may not work correctly to create files larger than 2 GB. (Cf. AC_SYS_LARGEFILE.) Portability problems not fixed by Gnulib: The gnulib module clean-temp can create temporary files that will not be left behind

after signals such as SIGINT.

13.69.17 mrand48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-mrand48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man mrand48 r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.18 nrand48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-nrand48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man nrand48 r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.19 on_exit

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Cleanups-on-Exit.
 html,

• man on exit. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.69.20 ptsname_r

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=508

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Allocation.html,

• man ptsname r.

Gnulib module: ptsname r Portability problems fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.12, FreeBSD 12.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14.

• When this function fails, it returns -1 instead of the error code on some platforms: macOS 11.1, FreeBSD 14.0, Android 4.3.

• When this function fails with ERANGE, it stores an empty string as result on some platforms: NetBSD 10.0.

Portability problems not fixed by Gnulib:

• When this function fails, it returns 0 and stores an empty string as result on some platforms: Cygwin 2.9.

Note: Portable programs should expect to find the error code as the return value of this function, not as the value of errno. This is needed for compatibility with musl libc and with the forthcoming POSIX Issue 8.

13.69.21 qecvt

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-V-Number-Conversion.
 html,

• man qecvt.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.22 qecvt_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-V-Number-Conversion.
 html,

• man qecvt r.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.23 qfcvt

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-V-Number-Conversion.
 html,

• man qfcvt. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.24 qfcvt_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-V-Number-Conversion.
 html,

• man qfcvt r. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.25 qgcvt

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-V-Number-Conversion.
 html,

• man qgcvt. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.26 qsort_r

Documentation: man qsort r

Gnulib module: — Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.7, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• This function has an incompatible API on some platforms: FreeBSD 13.2.

Portability problems not fixed by Gnulib:

13.69.27 random_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-random-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/BSD-Random.html,

• man random r.

Gnulib module: random r Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has an incompatible declaration on some platforms: AIX 7.1.

Portability problems not fixed by Gnulib:

• This function has a slightly different (but compatible) declaration on some platforms: Haiku 2017.

13.69.28 rpmatch

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Yes_002dor_002dNo-Questions.
 html,

• man rpmatch.

Gnulib module: rpmatch Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 10.13, FreeBSD 5.2.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.69.29 secure_getenv

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Environment-Access.
 html,

• man secure getenv. Gnulib module: secure getenv Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.16, OS X 10.8, FreeBSD 13.2, NetBSD 10.0, OpenBSD 5.2, Minix 3.2.0, AIX 7.1, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

13.69.30 seed48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-seed48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man seed48 r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.31 setstate_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-setstate-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/BSD-Random.html,

• man setstate r. Gnulib module: random r Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function has an incompatible declaration on some platforms: AIX 7.1. Portability problems not fixed by Gnulib:

• This function has a slightly different (but compatible) declaration on some platforms: Haiku 2017.

13.69.32 srand48_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-srand48-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/SVID-Random.html,

• man srand48 r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.69.33 srandom_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-srandom-r-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/BSD-Random.html,

• man srandom r.

Gnulib module: random r

Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.69.34 strtod_l

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

13.69.35 strtof_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

13.69.36 strtol_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

13.69.37 strtold_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

13.69.38 strtoll_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

13.69.39 strtoq

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-strtoq-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.
 html,

• man strtoq. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

• This function is not declared on some platforms: Android 9.0.

13.69.40 strtoul_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

13.69.41 strtoull_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

13.69.42 strtouq

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-strtouq-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.
 html,

• man strtouq. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

• This function is not declared on some platforms: Android 9.0.

13.69.43 valloc

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Aligned-Memory-Blocks.
 html,

• man valloc. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14.

13.70 Glibc Extensions to <string.h>

13.70.1 explicit_bzero

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Erasing-Sensitive-Data.
 html,

• man explicit bzero.

Gnulib module: explicit bzero

The explicit_bzero function is an approximation to what is needed, and does not suffice in general to erase information. Although calling explicit_bzero should clear the memory in question, the information that was in memory may still be available elsewhere on the machine. Proper implementation of information erasure requires support from levels below C code.

C23 specifies the function memset_explicit, which should be preferred to explicit_ bzero in new code. See Section 10.606 [memset explicit], page 278.

Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.24, FreeBSD 10, NetBSD 7.1, OpenBSD 5.4, macOS 10.12, Solaris 11.4, Android 9.0, and many other systems.

Portability problems not fixed by Gnulib:

• Although the module’s implementation should clear the memory on platforms compatible with GCC and on platforms using traditional linkers, it may not clear the memory on non-GCC platforms that use whole-program optimization.

13.70.2 ffsl

Documentation: man ffsl

Gnulib module: ffsl

Portability problems fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• This function is declared in <strings.h> instead of <string.h> on some platforms: AIX 7.2, Android 13.

Portability problems not fixed by Gnulib:

• This function is only defined as an inline function on some platforms: Android 13.

13.70.3 ffsll

Documentation: man ffsll

Gnulib module: ffsll Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• This function is declared in <strings.h> instead of <string.h> on some platforms: AIX 7.2, Android 13.

• This function returns completely wrong values on some platforms: AIX 7.2 in 32-bit mode. Portability problems not fixed by Gnulib:

• This function is only defined as an inline function on some platforms: Android 13.

13.70.4 memfrob

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Obfuscating-Data.
  html,

• man memfrob. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.70.5 memmem

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-memmem-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Search-Functions.
  html,

• man memmem. Gnulib module: memmem or memmem-simple Both modules implement the same replacement for the memmem function with the memmem

module providing a replacement on more platforms where the existing memmem function has a quadratic worst-case complexity.

Portability problems fixed by either Gnulib module memmem-simple or memmem:

• This function is missing on some platforms: Mac OS X 10.5, FreeBSD 5.2.1, OpenBSD 4.0, Minix 3.1.8, HP-UX 11, Solaris 10, mingw, MSVC 14.

• This function has reversed arguments on some older platforms: Linux libc 5.0.9

• This function can trigger false positives for long periodic needles on some platforms: glibc 2.12, Cygwin 1.7.7.

• This function returns incorrect values in some cases, such as when given an empty needle: glibc <= 2.0, macOS 12.5, AIX 7.2, Solaris 11.3, Cygwin 1.5.x.

Performance problems fixed by Gnulib module memmem:

• This function has quadratic instead of linear worst-case complexity on some platforms: glibc 2.8, macOS 12.5, FreeBSD 11.4, NetBSD 8.2, OpenBSD 6.6, AIX 7.2, Solaris 11.4, Cygwin 1.5.x. Note for small needles the replacement may be slower.

Portability problems not fixed by Gnulib:

13.70.6 mempcpy

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Copying-Strings-and-Arrays.
 html,

• man mempcpy.

Gnulib module: mempcpy Portability problems fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 5.1.

Portability problems not fixed by Gnulib:

13.70.7 memrchr

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-memrchr.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Search-Functions.
 html,

• man memrchr.

Gnulib module: memrchr Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14.

Portability problems not fixed by Gnulib:

13.70.8 rawmemchr

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Search-Functions.
 html,

• man rawmemchr.

Gnulib module: rawmemchr Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

13.70.9 sigabbrev_np

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Signal-Messages.html.

Gnulib module: sigabbrev np Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.31, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: Note: Gnulib has a module sig2str that contains an equivalent function and also one

that does the opposite conversion, from an abbreviated signal name to a signal number.

13.70.10 sigdescr_np

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Signal-Messages.html.

Gnulib module: sigdescr np Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.31, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

• The description of SIGCHLD is wrong on some platforms: glibc.

• The description of SIGEMT is completely unintelligible on some platforms: glibc. Note: This function is hardly useful, because it returns English strings, not internation-

alized strings. Better use the function strsignal, which returns internationalized strings.

13.70.11 strcasestr

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-strcasestr.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Search-Functions.
 html,

• man strcasestr.

Gnulib module: strcasestr or strcasestr-simple

Portability problems fixed by either Gnulib module strcasestr-simple or strcasestr:

• This function is missing on some platforms: AIX 7.2, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14.

• This function can trigger memchr bugs on some platforms: glibc 2.10.

• This function can trigger false positives for long periodic needles on some platforms: glibc 2.12, Cygwin 1.7.7.

• This function may fail to find matches on some platforms: glibc 2.28.

Portability problems fixed by Gnulib module strcasestr:

• This function has quadratic instead of linear worst-case complexity on some platforms: glibc 2.8, musl libc 1.2.3, macOS 12.5, FreeBSD 13.1, NetBSD 10.0, OpenBSD 7.2, Solaris 11.4.

Portability problems not fixed by Gnulib:

13.70.12 strchrnul

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Search-Functions.
 html,

• man strchrnul.

Gnulib module: strchrnul

Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.7.8, mingw, MSVC 14, Android 6.0.

• This function crashes when no occurrence is found on some platforms: Cygwin 1.7.9.

Portability problems not fixed by Gnulib:

13.70.13 strerrordesc_np

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.31, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.70.14 strerrorname_np

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html.

Gnulib module: strerrorname np Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.31, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function returns wrong values on some platforms: glibc 2.37. Portability problems not fixed by Gnulib:

13.70.15 strfry

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Shuffling-Bytes.html,

• man strfry. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.70.16 strsep

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-strsep-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Finding-Tokens-in-a-String.
 html,

• man strsep. Gnulib module: strsep Portability problems fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Solaris 10, mingw, MSVC 14. Portability problems not fixed by Gnulib:

13.70.17 strverscmp

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/String_002fArray-Comparison.
 html,

• man strverscmp.

Gnulib module: strverscmp

Portability problems fixed by Gnulib:

• This function is missing on many platforms: macOS 11.1, FreeBSD 13.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• This function treats ASCII letters as smaller than a digit sequence on some platforms: musl libc 1.2.3, Cygwin 3.4.6.

Portability problems not fixed by Gnulib:

• On older glibc platforms, this function does not always properly treat digit strings with leading zeros as fractions (for example, strverscmp

 ("B0075022800016.gbp.corp.com", "B007502357019.GBP.CORP.COM") does not

yield a negative number as it should): glibc 2.9

13.71 Glibc <sys/auxv.h>
13.71.1 getauxval

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Auxiliary-Vector.
 html,

• man getauxval.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.72 Glibc <sys/capability.h>

13.72.1 capget

Documentation: man capget

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.72.2 capset

Documentation: man capset

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.73 Glibc <sys/epoll.h>
13.73.1 epoll_create

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-epoll-create-1.html

Documentation: man epoll create

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and illumos and is therefore missing on many nonglibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.73.2 epoll_create1

Documentation: man epoll create1

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and illumos and is therefore missing on many nonglibc platforms: glibc 2.8, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.73.3 epoll_ctl

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-epoll-ctl-1.html

Documentation: man epoll ctl Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and illumos and is therefore missing on many nonglibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.73.4 epoll_pwait

Documentation: man epoll pwait

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and illumos and is therefore missing on many nonglibc platforms: glibc 2.5, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.73.5 epoll_wait

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-epoll-wait-1.html

Documentation: man epoll wait

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and illumos and is therefore missing on many nonglibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.74 Glibc <sys/eventfd.h>
13.74.1 eventfd

Documentation: man eventfd

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux, FreeBSD, NetBSD, and illumos and is therefore missing on many non-glibc platforms: glibc 2.6, macOS 11.1, FreeBSD 12.0, NetBSD 9.3, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.74.2 eventfd_read

Documentation: man eventfd read

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux, FreeBSD, NetBSD, and illumos and is therefore missing on many non-glibc platforms: glibc 2.6, macOS 11.1, FreeBSD 12.0, NetBSD 9.3, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.74.3 eventfd_write

Documentation: man eventfd write

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux, FreeBSD, NetBSD, and illumos and is therefore missing on many non-glibc platforms: glibc 2.6, macOS 11.1, FreeBSD 12.0, NetBSD 9.3, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.75 Glibc <sys/fanotify.h>
13.75.1 fanotify_init

Documentation: man fanotify init

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.12, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.75.2 fanotify_mark

Documentation: man fanotify mark

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.12, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.76 Glibc <sys/file.h>

13.76.1 flock

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-flock-2.html

Documentation: man flock

Gnulib module: flock

Portability problems fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14

• This function is missing on some platforms: AIX 7.1, HP-UX 11.23, Solaris 11.4. But the replacement function does not really work; it exhibits test failures.

Portability problems not fixed by Gnulib:

13.77 Glibc <sys/fsuid.h>
13.77.1 setfsgid

Documentation: man setfsgid

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

13.77.2 setfsuid

Documentation: man setfsuid

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

13.78 Glibc <sys/gmon.h>

13.78.1 monstartup

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.79 Glibc <sys/inotify.h>
13.79.1 inotify_add_watch

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-inotify-add-watch.html

Documentation: man inotify add watch

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on most non-glibc platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.79.2 inotify_init

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-inotify-init.html

Documentation: man inotify init

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on most non-glibc platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.79.3 inotify_init1

Documentation: man inotify init1

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on most non-glibc platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.79.4 inotify_rm_watch

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-inotify-rm-watch.html

Documentation: man inotify rm watch

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on most non-glibc platforms: glibc 2.3.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.80 Glibc <sys/io.h>, <sys/perm.h>

13.80.1 ioperm

Documentation: man ioperm

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.80.2 iopl

Documentation: man iopl

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.81 Glibc <sys/kdaemon.h>
13.81.1 bdflush

Documentation: man bdflush

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.82 Glibc <sys/klog.h>
13.82.1 klogctl

Documentation: man klogctl

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.83 Glibc Extensions to <sys/mman.h>

13.83.1 madvise

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Memory_002dmapped-I_002fO.
 html,

• man madvise. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 1.7.7, mingw, MSVC 14.

13.83.2 memfd_create

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Memory_002dmapped-I_002fO.
 html,

• man memfd create.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and FreeBSD and is therefore missing on many non-glibc platforms: glibc 2.26, macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

13.83.3 mincore

Documentation: man mincore

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14.

13.83.4 mlock2

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Page-Lock-Functions.
 html,

• man mlock2.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many platforms: glibc 2.26, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

13.83.5 mremap

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-mremap.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Memory_002dmapped-I_002fO.
 html,

• man mremap.

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: macOS 11.1, FreeBSD 14.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.83.6 pkey_alloc

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Memory-Protection.
 html,

• man pkey alloc.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.26, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.83.7 pkey_free

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Memory-Protection.
 html,

• man pkey free.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.26, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.83.8 pkey_get

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Memory-Protection.html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.26, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.83.9 pkey_mprotect

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Memory-Protection.
 html,

• man pkey mprotect. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.26, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.83.10 pkey_set

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Memory-Protection.html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: glibc 2.26, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.83.11 remap_file_pages

Documentation: man remap file pages

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.84 Glibc <sys/mount.h>

13.84.1 mount

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Mount_002dUnmount_002dRemount.
 html,

• man mount.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

13.84.2 umount

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Mount_002dUnmount_002dRemount.
 html,

• man umount. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, AIX 5.1, mingw, MSVC 14.

13.84.3 umount2

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Mount_002dUnmount_002dRemount.
 html,

• man umount2. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.23, Cygwin 2.9, mingw, MSVC 14.

13.85 Glibc <sys/personality.h>
13.85.1 personality

Documentation: man personality

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.0.2.

13.86 Glibc <sys/prctl.h>

13.86.1 prctl

Documentation: man prctl

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.87 Glibc <sys/profil.h>
13.87.1 sprofil

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.88 Glibc <sys/ptrace.h>

13.88.1 ptrace

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-ptrace-1.html

Documentation: man ptrace

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, Cygwin 2.9, mingw, MSVC 14.

13.89 Glibc <sys/quota.h>
13.89.1 quotactl

Documentation: man quotactl

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1.

13.90 Glibc <sys/random.h>
13.90.1 getentropy

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1134

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Unpredictable-Bytes.
 html,

• man getentropy.

Gnulib module: getentropy Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.24, Mac OS X 10.11, FreeBSD 11.0, NetBSD 9.3, OpenBSD 5.5, Minix 3.3, AIX 7.1, HP-UX 11.31, Solaris 11.0, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• This function is declared in <sys/random.h>, not in <unistd.h>, on some platforms: macOS 11.1, Solaris 11.4, Android 9.0.

Portability problems not fixed by Gnulib:

Although this function is intended to produce random data, the data’s security properties may not be appropriate for your application. For example, identical “random” data streams might be produced by rebooted virtual machines. If this is of concern you may need to use additional techniques such as hedging.^{1}

Related modules include getrandom, which has a more-flexible but more-complex API, and crypto/gc-random, which is likely a better match for code already using the other

crypto APIs.
13.90.2 getrandom

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Unpredictable-Bytes.
 html,

• man getrandom.

Gnulib module: getrandom Portability problems fixed by Gnulib:

• This function is missing on some platforms: glibc 2.24, macOS 11.1, FreeBSD 11.0, NetBSD 9.3, OpenBSD 6.7, Minix 3.3, AIX 7.1, HP-UX 11.31, Solaris 11.0, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

1 Ristenpart T, Yilek S. When good randomness goes bad: virtual machine vulnerabilities and hedging

deployed cryptography (http://pages.cs.wisc.edu/~rist/papers/sslhedge.pdf). NDSS 2010.

• This function has a different return type on some platforms: Solaris 11.4.

Portability problems not fixed by Gnulib:

• The GRND_INSECURE flag is missing on some platforms: glibc 2.34, macOS 10.15, GNU/kFreeBSD, FreeBSD 12.0, OpenBSD 6.7, Minix 3.3, Haiku.

• The GRND_RANDOM flag has different effects on different platforms. Some platforms ignore the flag, or yield data that can fail to be random in some cases.

Although this function is intended to produce random data, the data’s security properties may not be appropriate for your application. For example, identical “random” data streams might be produced by rebooted virtual machines. If this is of concern you may need to use additional techniques such as hedging.^{2}

Related modules include getentropy, which has a simpler but more-limited API, and crypto/gc-random, which is likely a better match for code already using the other crypto APIs.

13.91 Glibc <sys/reboot.h>

13.91.1 reboot

Documentation: man reboot

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, Cygwin 2.9, mingw, MSVC 14.

13.92 Glibc Extensions to <sys/resource.h>

13.92.1 prlimit

Documentation: man prlimit

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: glibc 2.12, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 6.0.

2 Ristenpart T, Yilek S. When good randomness goes bad: virtual machine vulnerabilities and hedging

deployed cryptography (http://pages.cs.wisc.edu/~rist/papers/sslhedge.pdf). NDSS 2010.

13.93 Glibc Extensions to <sys/sem.h>

13.93.1 semtimedop

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Semaphores.html,

• man semtimedop. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.11, Cygwin 2.9, mingw, MSVC 14, Android 7.1.

13.94 Glibc <sys/sendfile.h>
13.94.1 sendfile

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sendfile.html

Documentation: man sendfile

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11 2010-11, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

• On platforms where off_t is a 32-bit type, this function may not work correctly on files larger than 2 GB. The fix is to use the AC_SYS_LARGEFILE macro.

13.95 Glibc <sys/signalfd.h>
13.95.1 signalfd

Documentation: man signalfd

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and illumos and is therefore missing on many nonglibc platforms: glibc 2.6, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.96 Glibc <sys/single_threaded.h>
13.96.1 __libc_single_threaded

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Single_002dThreaded.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This variable is missing on all non-glibc platforms: glibc 2.31, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.97 Glibc Extensions to <sys/socket.h>

13.97.1 accept4

Documentation: man accept4

Gnulib module: accept4 Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.9, macOS 11.1, FreeBSD 6.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.1, mingw, MSVC 14, Android 4.4. But the replacement function is not atomic; this matters in multi-threaded programs that spawn child processes.

Portability problems not fixed by Gnulib:

• SOCK CLOEXEC and SOCK NONBLOCK may not be defined as they’re also significant to the socket() function.

13.97.2 isfdtype

Documentation: man isfdtype

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.97.3 recvmmsg

Documentation: man recvmmsg

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.11, macOS 11.1, FreeBSD 6.4, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

13.97.4 sendmmsg

Documentation: man sendmmsg

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.13, macOS 11.1, FreeBSD 6.4, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 4.4.

13.98 Glibc Extensions to <sys/stat.h>

13.98.1 getumask

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Setting-Permissions.
 html,

• man getumask.

Gnulib module: getumask Portability problems fixed by Gnulib:

• This function exists only on Hurd and is therefore missing on all non-glibc platforms: glibc/Linux, glibc/kFreeBSD, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

13.98.2 lchmod

Gnulib module: lchmod Portability problems fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• This function is not declared on some platforms: HP-UX 11.31.

• This function always fails with errno set to ENOSYS, even when the file is not a symbolic link: GNU/Linux with glibc 2.31.

• This function does not fail when the file name argument ends in a slash and (without the slash) names a non-directory, on some platforms: AIX 7.2.

Portability problems not fixed by Gnulib:

• Some platforms do not allow changing the access bits on symbolic links.

• This function can fail with errno set to EMFILE or ENFILE, and it fails with errno set to EOPNOTSUPP if the /proc file system is not mounted: GNU/Linux with glibc 2.34.

13.98.3 statx

Documentation: man statx

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: glibc 2.27, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 29.

• There is an incompatible function of the same name on some platforms: AIX 5.2 or newer.

13.99 Glibc <sys/statfs.h>
13.99.1 fstatfs

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fstatfs-2.html

Documentation: man fstatfs

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, mingw, MSVC 14.

• On platforms where f_blocks in ‘struct statfs’ is a 32-bit value, this function may not work correctly on files systems larger than 4 TiB. The fix is to use the AC_SYS_ LARGEFILE macro. This affects Mac OS X.

13.99.2 statfs

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-statfs-2.html

Documentation: man statfs

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, mingw, MSVC 14.

• On platforms where f_blocks in ‘struct statfs’ is a 32-bit value, this function may not work correctly on files systems larger than 4 TiB. The fix is to use the AC_SYS_ LARGEFILE macro. This affects Mac OS X.

13.100 Glibc <sys/swap.h>

13.100.1 swapoff

Documentation: man swapoff

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.100.2 swapon

Documentation: man swapon

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.101 Glibc <sys/sysctl.h>

13.101.1 sysctl

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-Parameters.
 html,

• man sysctl. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.34, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.102 Glibc <sys/sysinfo.h>
13.102.1 get_avphys_pages

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Query-Memory-Parameters.
 html,

• man get avphys pages. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.1, mingw, MSVC 14, Android 5.1.

13.102.2 get_nprocs

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Processor-Resources.
 html,

• man get nprocs. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.7.1, mingw, MSVC 14, Android 5.1. Gnulib provides the module nproc that performs a similar function but is portable to

more systems.

13.102.3 get_nprocs_conf

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Processor-Resources.
 html,

• man get nprocs conf. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.7.1, mingw, MSVC 14, Android 5.1.

13.102.4 get_phys_pages

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Query-Memory-Parameters.
 html,

• man get phys pages. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.1, mingw, MSVC 14, Android 5.1.

13.102.5 sysinfo

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sysinfo-1.html

Documentation: man sysinfo

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 1.7.9, mingw, MSVC 14.

• This function is not declared and thus not part of the Android API for Android API levels < 9.

13.103 Glibc <sys/syslog.h>

13.103.1 vsyslog

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-vsyslog-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/syslog_003b-vsyslog.
 html,

• man vsyslog. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.104 Glibc <sys/sysmacros.h>
13.104.1 gnu_dev_major

Documentation: man gnu dev major

Gnulib module: — Portability problems fixed by Gnulib:

• The AC_HEADER_MAJOR macro in Autoconf 2.69 and earlier fails to set MAJOR_IN_ SYSMACROS when it detects namespace pollution in sys/types.h; which in turn provokes deprecation warnings in glibc 2.25. Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.104.2 gnu_dev_makedev

Documentation: man gnu dev makedev

Gnulib module: — Portability problems fixed by Gnulib:

• The AC_HEADER_MAJOR macro in Autoconf 2.69 and earlier fails to set MAJOR_IN_ SYSMACROS when it detects namespace pollution in sys/types.h; which in turn provokes deprecation warnings in glibc 2.25. Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.104.3 gnu_dev_minor

Documentation: man gnu dev minor

Gnulib module: — Portability problems fixed by Gnulib:

• The AC_HEADER_MAJOR macro in Autoconf 2.69 and earlier fails to set MAJOR_IN_ SYSMACROS when it detects namespace pollution in sys/types.h; which in turn provokes deprecation warnings in glibc 2.25. Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.105 Glibc Extensions to <sys/time.h>

13.105.1 adjtime

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-adjtime-2.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/High_002dResolution-Calendar.
 html,

• man adjtime. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.105.2 futimes

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-futimes.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/File-Times.html,

• man futimes. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 7.1.

• This function cannot set full timestamp resolution. Use futimens(fd,times) instead.

13.105.3 futimesat

Documentation: man futimesat

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.3.6, macOS 11.1, FreeBSD 6.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14, Android 7.1.

• On some platforms, this function mis-handles a trailing slash: Solaris 9.

• This function cannot set full timestamp resolution. Use

      file ? utimensat(fd, file, times, 0)
           : futimens(fd, times)

or the gnulib module fdutimensat, instead.

13.105.4 lutimes

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/File-Times.html,

• man lutimes. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 7.1.

• This function cannot set full timestamp resolution. Use utimensat(AT_

 FDCWD,file,times,AT_SYMLINK_NOFOLLOW), or the gnulib module utimens,

instead.

• The mere act of using lstat modifies the access time of symlinks on some platforms, so lutimes can only effectively change modification time: Cygwin.

13.105.5 settimeofday

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/High_002dResolution-Calendar.
 html,

• man settimeofday. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

13.106 Glibc <sys/timerfd.h>
13.106.1 timerfd_create

Documentation: man timerfd create

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux, FreeBSD, NetBSD, and illumos and is therefore missing on many non-glibc platforms: glibc 2.7, macOS 11.1, FreeBSD 13.2, NetBSD 9.3, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.106.2 timerfd_gettime

Documentation: man timerfd gettime

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux, FreeBSD, NetBSD, and illumos and is therefore missing on many non-glibc platforms: glibc 2.7, macOS 11.1, FreeBSD 13.2, NetBSD 9.3, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.106.3 timerfd_settime

Documentation: man timerfd settime

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux, FreeBSD, NetBSD, and illumos and is therefore missing on many non-glibc platforms: glibc 2.7, macOS 11.1, FreeBSD 13.2, NetBSD 9.3, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 4.3.

13.107 Glibc <sys/timex.h>
13.107.1 adjtimex

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/High_002dResolution-Calendar.
 html,

• man adjtimex.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 6.0.

13.107.2 ntp_adjtime

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/High-Accuracy-Clock.
 html,

• man ntp adjtime.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.107.3 ntp_gettime

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/High-Accuracy-Clock.
 html,

• man ntp gettime. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Mac OS X 10.5, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.107.4 ntp_gettimex

Documentation: man ntp gettimex

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.11, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.108 Glibc Extensions to <sys/uio.h>

13.108.1 preadv

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scatter_002dGather.
 html,

• man preadv. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.9, macOS 10.13, FreeBSD 5.2.1, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 6.0.

• On platforms where off_t is a 32-bit type, this function may not work correctly on files larger than 2 GB. The fix is to use the AC_SYS_LARGEFILE macro.

13.108.2 preadv2

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scatter_002dGather.
 html,

• man preadv2. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many platforms: glibc 2.25, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 32.

13.108.3 process_vm_readv

Documentation: man process vm readv

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: glibc 2.14, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

13.108.4 process_vm_writev

Documentation: man process vm writev

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: glibc 2.14, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 5.1.

13.108.5 pwritev

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scatter_002dGather.
 html,

• man pwritev. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.9, macOS 10.13, FreeBSD 5.2.1, Minix 3.1.8, AIX 5.2, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 6.0.

• On platforms where off_t is a 32-bit type, this function may not work correctly on files larger than 2 GB. The fix is to use the AC_SYS_LARGEFILE macro.

13.108.6 pwritev2

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Scatter_002dGather.
 html,

• man pwritev2.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many platforms: glibc 2.25, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 32.

13.109 Glibc <sys/ustat.h>

13.109.1 ustat

Documentation: man ustat

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.110 Glibc <sys/vlimit.h>

13.110.1 vlimit

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Limits-on-Resources.
 html,

• man vlimit.

Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.111 Glibc Extensions to <sys/wait.h>

13.111.1 wait3

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/BSD-Wait-Functions.
 html,

• man wait3. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function is not declared on some platforms: Android 13.

13.111.2 wait4

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-wait4-2.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Process-Completion.
 html,

• man wait4. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11.11, mingw, MSVC 14, Android 4.2.

13.112 Glibc <sys/xattr.h>
13.112.1 fgetxattr

Documentation: man fgetxattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

• This function has extra offset and options parameters: macOS 11.1.

13.112.2 flistxattr

Documentation: man flistxattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.3 fremovexattr

Documentation: man fremovexattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.4 fsetxattr

Documentation: man fsetxattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.5 getxattr

Documentation: man getxattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

• This function has extra offset and options parameters: macOS 11.1.

13.112.6 lgetxattr

Documentation: man lgetxattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.7 listxattr

Documentation: man listxattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.8 llistxattr

Documentation: man llistxattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.9 lremovexattr

Documentation: man lremovexattr

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.10 lsetxattr

Documentation: man lsetxattr

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.11 removexattr

Documentation: man removexattr

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.112.12 setxattr

Documentation: man setxattr

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.0.4.

13.113 Glibc Extensions to <termios.h>

13.113.1 cfmakeraw

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-cfmakeraw-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Noncanonical-Input.
 html,

• man cfmakeraw. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.

13.113.2 cfsetspeed

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-cfsetspeed-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Line-Speed.html,

• man cfsetspeed. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

13.114 Glibc Extensions to <time.h>

13.114.1 clock_adjtime

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on many non-glibc platforms: glibc 2.13, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 6.0.

13.114.2 dysize

Documentation: man dysize

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.114.3 getdate_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/General-Time-String-Parsing.
 html,

• man getdate r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.114.4 stime

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-stime-2.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Calendar-Time.
 html,

• man stime.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

13.114.5 strptime_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

13.114.6 timelocal

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Broken_002ddown-Time.
 html,

• man timelocal. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, HP-UX 11, Solaris 11.3, mingw, MSVC 14, Android 3.0.

13.114.7 timespec_get

ISO C23 specification:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf section 7.29.2.6

Gnulib module: timespec get Portability problems fixed by Gnulib:

• This function is missing on many platforms: glibc 2.15, macOS 10.13, FreeBSD 11.0, NetBSD 7.1, OpenBSD 6.0, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

13.115 Glibc <ttyent.h>

13.115.1 endttyent

Documentation: man endttyent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.115.2 getttyent

Documentation: man getttyent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.115.3 getttynam

Documentation: man getttynam

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.115.4 setttyent

Documentation: man setttyent

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.116 Glibc Extensions to <unistd.h>

13.116.1 _Fork

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Creating-a-Process.html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.33, macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.116.2 acct

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-acct-3.html

Documentation: man acct

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14.

13.116.3 brk

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Resizing-the-Data-Segment.
 html,

• man brk. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 12.2/arm64, AIX 5.1, Cygwin 2.9, mingw, MSVC 14.

13.116.4 chroot

Documentation: man chroot

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: AIX 5.1, mingw, MSVC 14.

13.116.5 closefrom

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Opening-and-Closing-Files.
html

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.33, macOS 11.1, FreeBSD 7.2, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

Note (quoted from man close): “The [POSIX] standard developers rejected a proposal to add closefrom() to the [POSIX] standard. Because the standard permits implementations to use inherited file descriptors as a means of providing a conforming environment for the child process, it is not possible to standardize an interface that closes arbitrary file descriptors above a certain value while still guaranteeing a conforming environment.”

13.116.6 copy_file_range

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Copying-File-Data.
 html,

• man copy file range.

Gnulib module: copy-file-range Portability problems fixed by Gnulib:

• This function exists only on Linux and FreeBSD and is therefore missing on many platforms: glibc 2.26, macOS 11.1, FreeBSD 12.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 33. But the replacement function is only a stub: It always fails with error ENOSYS.

• This function has many problems on Linux kernel versions before 5.3. On these kernel versions, the replacement function always fails with error ENOSYS.

Portability problems not fixed by Gnulib:

13.116.7 daemon

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-daemon-3.html

Documentation: man daemon

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14.

13.116.8 dup3

Documentation: man dup3

Gnulib module: dup3 Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.8, macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.1, mingw, MSVC 14, Android 4.4.

• This function can crash on some platforms: Cygwin 1.7.25.

• This function mistakenly succeeds when given two equal file descriptors on some platforms: NetBSD 10.0.

Portability problems not fixed by Gnulib:

13.116.9 eaccess

Documentation: man eaccess

This function is an alias of euidaccess. See Section 13.116.11 [euidaccess], page 748.

13.116.10 endusershell

Documentation: man endusershell

Gnulib module: getusershell

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function is missing a declaration on some platforms: Solaris 9.

Portability problems not fixed by Gnulib:

13.116.11 euidaccess

Documentation: man euidaccess

Gnulib module: euidaccess

Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

Portability problems not fixed by Gnulib:

Other problems of this function:

• There is an inherent race between calling this function and performing some action based on the results; you should think twice before trusting this function, especially in a set-uid or set-gid program.

• This function does not have an option for not following symbolic links (like stat versus lstat). If you need this option, use the Gnulib module faccessat with the AT_EACCESS flag.

• On Solaris, for the root user, any file is X_OK even if the file does not have the x permission bit set.

13.116.12 execveat

Documentation: man execveat.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: glibc 2.33/Linux, glibc 2.34/Hurd, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.116.13 execvpe

Documentation: man execvpe

Gnulib module: execvpe

Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.10, macOS 11.1, FreeBSD 14.0, NetBSD 7.1, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.5.x, mingw, Android 4.4.

• This function is not declared on some platforms: AIX 7.1.

• On Windows platforms (excluding Cygwin), this function does not pass command-line arguments correctly if they contain space, tab, backslash, or double-quote characters.

• On Windows platforms (excluding Cygwin), this function spawns an asynchronous child process and then exits the current process immediately. As a consequence, the parent of the current process 1. may incorrectly proceed as if its child had exited, and 2. will never see the child’s exit status.

• On Windows platforms (excluding Cygwin), the return type of this function is intptr_ t, not int.

Portability problems not fixed by Gnulib:

13.116.14 get_current_dir_name

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Working-Directory.
 html,

• man get current dir name.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 9.0.

13.116.15 getdomainname

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getdomainname.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Identification.
 html,

• man getdomainname.

Gnulib module: getdomainname

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Solaris 11.3, mingw, MSVC 14, Android 7.1.

• This function is declared in netdb.h, not in unistd.h, on some platforms: AIX 7.1.

• The second argument is of type int, not size_t, on some platforms: macOS 11.1, FreeBSD 14.0, AIX 7.1.

Portability problems not fixed by Gnulib:

13.116.16 getdtablesize
SUSv2 specification: https://pubs.opengroup.org/onlinepubs/7908799/xsh/
getdtablesize.html

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getdtablesize.html

Documentation: man getdtablesize

Gnulib module: getdtablesize

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Android LP64, mingw, MSVC 14, Android 9.0.

• This function is not declared on some platforms: Android 13 (LP32?).

• This function does not represent the true RLIMIT_NOFILE soft limit on some platforms: Android 13 (LP32?), Cygwin 1.7.25.

Portability problems not fixed by Gnulib:

• On OpenVMS, this function returns the maximum number of open file descriptors in a process. The possible values of file descriptors are not constrained by this function.

13.116.17 getpagesize

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getpagesize.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Query-Memory-Parameters.
 html,

• man getpagesize. Gnulib module: getpagesize Portability problems fixed by Gnulib:

• This function is missing on some platforms: MSVC 14, Android 4.4.

• This function is not declared on some platforms: HP-UX 11 with compiler option

 -D_XOPEN_SOURCE=600.

• This function is broken on some platforms: mingw. Portability problems not fixed by Gnulib:

13.116.18 getpass

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/getpass.html,

• man getpass. Gnulib module: getpass or getpass-gnu Portability problems fixed by either Gnulib module getpass or getpass-gnu:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

• This function cannot be called from plain inline or extern inline functions on some platforms: Android 13. Portability problems fixed by Gnulib module getpass-gnu:

• The returned password is truncated to PASS MAX characters on some platforms: uClibc (256), musl (128), macOS 11.1 (128), FreeBSD 14.0 (128), NetBSD 3.0 (128), OpenBSD 4.0 (128), AIX 5.1 (32), HP-UX 11 (8), Solaris 11 2010-11 (8, even less than PASS MAX), Cygwin (128). The gnulib implementation returns the password untruncated. Portability problems not fixed by Gnulib:

13.116.19 getresgid

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1344

Documentation: man getresgid

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, Minix 3.1.8, AIX 5.1, HP-UX 11.00, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.116.20 getresuid

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1344

Documentation: man getresuid

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, Minix 3.1.8, AIX 5.1, HP-UX 11.00, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.116.21 gettid

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Process-Identification.
 html,

• man gettid. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function exists only on Linux and is therefore missing on most non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.116.22 getusershell

Documentation: man getusershell

Gnulib module: getusershell Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function is missing a declaration on some platforms: Solaris 9.

• This function mistakenly returns comments and empty lines on some platforms: musl libc 1.2.4 Portability problems not fixed by Gnulib:

13.116.23 group_member

Documentation: man group member

Gnulib module: group-member Portability problems fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib:

13.116.24 pipe2

Documentation: man pipe2

Gnulib module: pipe2 Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: glibc 2.8, macOS 11.1, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Cygwin 1.7.1, mingw, MSVC 14, Android 2.2. But the replacement function is not atomic; this matters in multi-threaded programs that spawn child processes. Portability problems not fixed by Gnulib:

• This function crashes rather than failing with EMFILE if no resources are left on some platforms: Cygwin 1.7.9.

Note: This function portably supports the O_NONBLOCK flag only if the gnulib module

nonblocking is also used.

13.116.25 profil

Documentation: man profil

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.116.26 revoke

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.116.27 sbrk

Documentation: man sbrk

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 12.2/arm64, AIX 5.1, mingw, MSVC 14.

13.116.28 setlogin

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.116.29 setdomainname

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Identification.
 html,

• man setdomainname. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 7.1.

13.116.30 sethostid

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Identification.
 html,

• man sethostid. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.116.31 sethostname

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-sethostname-2.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Host-Identification.
 html,

• man sethostname.

Gnulib module: sethostname

Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1. Note that the Gnulib replacement may fail with ENOSYS on some platforms.

• This function is not declared on some platforms: AIX 7.1, Solaris 10.

Portability problems not fixed by Gnulib:

• The first parameter is char * instead of const char * on some platforms: Solaris 11 2010-11.

• The second parameter is int instead of size_t on some platforms: macOS 12.5, FreeBSD 14.0, MidnightBSD 3.0, Solaris 11 2010-11, Solaris 11 OpenIndiana, Solaris 11 OmniOS.

• This function does not reject a too long host name on some platforms: Cygwin 3.5.3.

13.116.32 setresgid

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1344

Documentation: man setresgid

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.116.33 setresuid

Specified in POSIX.1-2024. Draft specification:

https://www.austingroupbugs.net/view.php?id=1344

Documentation: man setresuid

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, NetBSD 10.0, Minix 3.1.8, AIX 5.1, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14.

13.116.34 setusershell

Documentation: man setusershell

Gnulib module: getusershell Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, mingw, MSVC 14, Android 9.0.

• This function is missing a declaration on some platforms: Solaris 9. Portability problems not fixed by Gnulib:

13.116.35 syncfs

Documentation: man syncfs

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: glibc 2.13, macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 8.1.

13.116.36 syscall

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/System-Calls.html,

• man syscall. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14.

13.116.37 ttyslot

Documentation: man ttyslot

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14, Android 9.0.

13.116.38 vhangup

Documentation: man vhangup

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, mingw, MSVC 14, Android 9.0.

13.117 Glibc <utmp.h>

13.117.1 endutent

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-endutent-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man endutent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

• This function is not declared on some platforms: Android before ca. 2015.

13.117.2 getutent

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getutent-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man getutent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

13.117.3 getutent_r

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getutent-r-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man getutent r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.117.4 getutid

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man getutid.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

13.117.5 getutid_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man getutid r.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.117.6 getutline

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man getutline. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14, Android 9.0.

13.117.7 getutline_r

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man getutline r. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

13.117.8 pututline

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man pututline. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

13.117.9 setutent

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-setutent-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man setutent. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

13.117.10 updwtmp

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man updwtmp. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, mingw, MSVC 14, Android 9.0.

13.117.11 utmpname

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-utmpname-3.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Manipulating-the-Database.
 html,

• man utmpname. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14.

13.117.12 login

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Logging-In-and-Out.
 html,

• man login. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, mingw, MSVC 14, Android 9.0.

13.117.13 login_tty

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Logging-In-and-Out.
html,

• man login tty. Gnulib module: login tty Portability problems fixed by Gnulib:

• This function is missing on some platforms: Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.3, Android 5.1.

• This function is declared in <utmp.h> on glibc, Cygwin, Android, in <util.h> on macOS 11.1, NetBSD 5.0, OpenBSD 3.8, in <libutil.h> on FreeBSD 14.0, Haiku, and in <termios.h> on Solaris 11.4.

• This function requires linking with -lutil on some platforms: glibc 2.3.6, FreeBSD 14.0, NetBSD 5.0, OpenBSD 3.8. It is available without link options on other platforms: macOS 11.1, Cygwin. Portability problems not fixed by Gnulib:

• This function is missing on some platforms: mingw, MSVC 14.

13.118 Glibc Extensions to <utmpx.h>

13.118.1 getutmp

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/XPG-Functions.html,

• man getutmp. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• On some platforms, this function does not support timestamps past the year 2038: glibc 2.38 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits.

• On some platforms, this function misbehaves if the year2038 or year2038recommended modules are used and the program is configured without the --disable-year2038 option. The readutmp module works around this problem: glibc 2.38 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits. See Section 14.5 [Avoiding the year 2038 problem], page 771.

13.118.2 getutmpx

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/XPG-Functions.html,

• man getutmpx. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• On some platforms, this function does not support timestamps past the year 2038: glibc 2.38 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits.

• On some platforms, this function misbehaves if the year2038 or year2038recommended modules are used and the program is configured without the --disable-year2038 option. The readutmp module works around this problem: glibc 2.38 on 32-bit platforms like x86 and ARM where time_t was historically 32 bits. See Section 14.5 [Avoiding the year 2038 problem], page 771.

13.118.3 updwtmpx

Documentation: man updwtmpx

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0.

13.118.4 utmpxname

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/XPG-Functions.html,

• man utmpxname. Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: FreeBSD 14.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, mingw, MSVC 14, Android 9.0.

13.119 Glibc Extensions to <wchar.h>

13.119.1 fgetwc_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fgetwc-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Character-Input.html,

• man fgetwc unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.2 fgetws_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fgetws-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Line-Input.html,

• man fgetws unlocked. Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.3 fputwc_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fputwc-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Output.html,

• man fputwc unlocked.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.4 fputws_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-fputws-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Output.html,

• man fputws unlocked.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.5 getwc_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getwc-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Character-Input.html,

• man getwc unlocked.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.6 getwchar_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-getwchar-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Character-Input.html,

• man getwchar unlocked.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on all non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.7 putwc_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-putwc-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Output.html,

• man putwc unlocked.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on some platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.8 putwchar_unlocked

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-putwchar-unlocked-1.html

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Simple-Output.html,

• man putwchar unlocked.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.9 wcschrnul

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Search-Functions.html.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.10 wcsftime_l

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.11 wcstod_l

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.12 wcstof_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.13 wcstol_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.14 wcstold_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 7.1, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.15 wcstoll_l

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.16 wcstoq

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-wcstoq.html

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.
html.

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.17 wcstoul_l

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.18 wcstoull_l

Gnulib module: — Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

• This function is missing on many platforms: FreeBSD 6.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.19 wcstouq

LSB specification:

https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/
baselib-wcstouq.html

Documentation:

https://www.gnu.org/software/libc/manual/html_node/Parsing-of-Integers.
html.

Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 14.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

13.119.20 wmempcpy

Documentation:

• https://www.gnu.org/software/libc/manual/html_node/Copying-Strings-and-Arrays.
 html,

• man wmempcpy. Gnulib module: wmempcpy Portability problems fixed by Gnulib:

• This function is missing on many non-glibc platforms: macOS 11.1, FreeBSD 13.0, NetBSD 10.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 5.1. Portability problems not fixed by Gnulib:

• On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters.

14 Native Windows Support

There are three ways to create binaries that run on Microsoft Windows:

• Native binaries, built using the MinGW tool chain.

• Native binaries, built using the MSVC (MS Visual C/C++) tool chain.

• Binaries for the Cygwin environment.

This chapter deals with the MinGW and MSVC platforms, commonly called “native Windows” platforms. Cygwin, on the other hand, is close enough to POSIX that it can be treated like any other Unix-like platform.

14.1 Libtool and Windows

If you want it to be possible to compile your program for a native Windows platform and you use Libtool, you need to use the win32-dll option of LT_INIT. In other words, put:

     LT_INIT([win32-dll])

in your configure.ac. This sets the correct names for the OBJDUMP, DLLTOOL, and AS tools for the build.

If you are building a library, you will also need to pass -no-undefined to make sure Libtool produces a DLL for your library. From a Makefile.am:

     libgsasl_la_LDFLAGS += -no-undefined

14.2 Large File Support

This module provides support for files 2 GiB and larger, or with device or inode numbers exceeding 32 bits. To this effect, it attempts to ensure that types like off_t and ino_t are 64-bit, at least on the following platforms: glibc, Mac OS X, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, Solaris, Cygwin, mingw, MSVC.

If the types cannot be made 64-bit, configure issues a warning and proceeds.

This module gives configure an option ‘--disable-largefile’ that suppresses support for large files. This may be useful if the package links to other libraries whose user-facing ABIs still require off_t or most other file-related types to be 32-bit on your platform.

This module also adds to configure an option --enable-year2038, needed on some platforms to access files with timestamps past the year 2038. See Section 14.5 [Avoiding the year 2038 problem], page 771.

14.3 Inode numbers on Windows

The module ‘windows-stat-inodes’ ensures that, on native Windows platforms, struct stat contains st_dev, st_ino fields that are able to distinguish different inodes.

Note: Such values can only be provided for most files on the file system. For a few files (such as inaccessible files), st_dev and st_ino are set to 0. Therefore, you should test whether st_dev != 0 && st_ino != 0, before going to make inferences based on the file identity based on st_dev and st_ino.

14.4 Precise file timestamps on Windows

The module ‘windows-stat-timespec’ ensures that, on native Windows platforms,

struct stat contains st_atim, st_mtim, st_ctim fields of type struct timespec, pro-

viding 100 ns resolution for the timestamps of files.

Note: On some types of file systems, the timestamp resolution is limited by the file system. For example, on FAT file systems, st_mtim only has a resolution of 2 seconds.

For more details, see https://docs.microsoft.com/en-us/windows/desktop/SysInfo/
file-times.

14.5 Avoiding the year 2038 problem

The year 2038 problem denotes unpredictable behaviour that will likely occur in the year 2038, for programs that use a 32-bit signed integer ‘time_t’ type that cannot represent timestamps on or after 2038-01-19 03:14:08 UTC. See Year 2038 problem (https://

en.wikipedia.org/wiki/Year_2038_problem) for details.

The Gnulib module ‘year2038’ fixes this problem on some platforms, by making time_ t wide enough to represent timestamps after 2038. This has no effect on most current platforms, which have timestamps that are already wide enough. However, ‘year2038’ by default arranges for builds on legacy 32-bit Linux kernels running glibc 2.34 and later to compile with ‘_TIME_BITS=64’ to get wider timestamps. On older platforms that do not support timestamps after the year 2038, ‘year2038’ causes configure to issue a warning but still proceed. On platforms that appear to support post-2038 timestamps but where something prevents this from working, configure fails.

The default behavior of ‘year2038’ can be overridden by using the configure option --disable-year2038, which suppresses support for post-2038 timestamps. This may be useful if the package links to other libraries whose user-facing ABIs still require time_t to be 32-bit on your platform.

The Gnulib module ‘year2038-recommended’ is like ‘year2038’, except it by default rejects platforms where time_t cannot represent timestamps after 2038. If this module is used and a 32-platform cannot support 64-bit time_t, one can still fix the year-2038 problem by using a 64-bit instead of a 32-bit build, as noted in the architecture list below. If all else fails one can configure with --disable-year2038; however, the resulting programs will mishandle timestamps after 2038.

The Gnulib module ‘year2038-recommended’ is designed for packages intended for use on 32-bit platforms after the year 2038. If your package is commonly built on 32-bit platforms that will not be used after the year 2038, you can use the ‘year2038’ module instead, to save builders the trouble of configuring with --disable-year2038.

If the Gnulib module ‘largefile’ is used but neither ‘year2038’ nor

‘year2038-recommended’ is used, configure will have an option --enable-

year2038 that causes configure to behave as if ‘year2038’ was used. This is for packages that have long used ‘largefile’ but have not gotten around to upgrading their Gnulib module list to include ‘year2038’ or ‘year2038-recommended’. See Section 14.2 [Large File Support], page 770.

With the ‘year2038-recommended’ module, configure by default should work on the following 32-bit platforms (or 32-bit ABIs in bi-arch systems):

• Linux kernel 5.1 (2019) and later with glibc 2.34 (2021) and later on x86, arm, mips (o32 or n32 ABI), powerpc32, sparc32, s390, hppa, m68k, sh, csky, microblaze, nios2,

• Linux kernel 5.1 (2019) and later with musl libc 1.2 (2020) and later on x86,

• Linux on arc, loong32, ork1, riscv32 and x86 64-x32,

• NetBSD 6.0 (2012) and later on x86 and sparc,

• OpenBSD 5.5 (2014) and later on x86,

• FreeBSD/arm,

• Minix 3.3 (2014). Whereas with ‘year2038-recommended’, configure should by default fail on earlier versions of the abovementioned platforms if a version is listed, and it should also by default fail on all versions of the following older 32-bit platforms or ABIs:

• Android on ARMv7 or x86,

• Mac OS X 10.6 (2009) and earlier on x86 and powerpc,

• GNU/Hurd/x86,

• GNU/kFreeBSD/x86,

• FreeBSD/x86 (this port demoted to Tier 2 in FreeBSD 13 [2021] and planned to never have 64-bit time_t),

• MidnightBSD/x86,

• AIX/powerpc (to fix, configure with ‘CC='gcc -maix64' AR='ar -X64'’),

• Solaris 11.4 (2018) and earlier on x86 and sparc (to fix, configure with ‘CC='gcc -m64'’),

• Cygwin 3.3.6 (2022) and earlier on x86,

• Haiku/x86. If you use the ‘year2038’ or ‘year2038-recommended’ modules, and configure to support

timestamps after the year 2038, your code should not include ‘<utmp.h>’ or ‘<utmpx.h>’ directly, because these include files do not work with 64-bit timestamps if the platform’s time_t was traditionally 32 bits. Your code can instead use the ‘readutmp’ module, which works around this problem.

14.6 Windows sockets

One of the portability problems for native Windows are sockets and networking functions.

14.6.1 Getaddrinfo and WINVER

This was written for the getaddrinfo module, but may be applicable to other functions too.

The getaddrinfo function exists in ws2tcpip.h and -lws2_32 on Windows XP. The function declaration is present if WINVER >= 0x0501. Windows 2000 does not have

getaddrinfo in its WS2_32.DLL.

Thus, if you want to assume Windows XP or later, you can add AC_DEFINE([WINVER], [0x0501]) to avoid compiling the (partial) getaddrinfo implementation.

If you want to support Windows 2000, don’t do anything. The replacement function will open WS2_32.DLL during run-time to see if there is a getaddrinfo function available, and use it when available.

14.7 Native Windows Support without MSVC Support

If your package does not desire to have MSVC support, that is, if MinGW shall be the only native Windows platform that you wish to get support for from Gnulib, and you wish to minimize the number of files imported from Gnulib accordingly, you can do so by passing

the options ‘--avoid=msvc-inval --avoid=msvc-nothrow’ to gnulib-tool.

14.8 Visual Studio Compatibility

The lib-msvc-compat module detects whether the linker supports --output-def when building a library. That parameter is used to generate a DEF file for a shared library (DLL). DEF files are useful for developers that use Visual Studio to develop programs that links to your library. See the GNU LD manual for more information.

There are other ways to create a DEF file, but we believe they are all sub-optimal to using --output-def during the build process. The variants we have considered include:

• Use DUMPBIN /EXPORTS. This is explained in https://docs.microsoft.com/

    en-us/cpp/build/reference/dash-exports. The tool does not generate DEF files

directly, so its output needs to be post processed manually:

           $ { echo EXPORTS; \
               dumpbin /EXPORTS libfoo-0.dll | tail -n+20 | awk '{ print $4 }'; \
             } > libfoo-0.def
           $ lib /def:libfoo-0.def

• Use IMPDEF. There is a tool called IMPDEF that can generate DEF files. However, it is not part of a standard Visual Studio installation. Further, it is documented as being an unreliable process.

• Use DLLTOOL. The dlltool is part of the MinGW suite, and thus not part of a standard Visual Studio installation. The documentation for the IMPDEF tool claims that DLLTOOL is the wrong tool for this job. Finally, DLLTOOL does not generate DEF files directly, so it requires post-processing of the output.

If you are using libtool to build your shared library, here is how to use this module. Import lib-msvc-compat to your project, and then add the following lines to the Makefile.am that builds the library:

      if HAVE_LD_OUTPUT_DEF
      libfoo_la_LDFLAGS += -Wl,--output-def,libfoo-$(DLL_VERSION).def
      libfoo-$(DLL_VERSION).def: libfoo.la
      defexecdir = $(libdir)
      defexec_DATA = libfoo-$(DLL_VERSION).def
      DISTCLEANFILES += $(defexec_DATA)
      endif

The DLL_VERSION variable needs to be defined. It should be the shared library version number used in the DLL filename. For Windows targets you compute this value from the values you pass to Libtool’s -version-info. Assuming you have variables LT_CURRENT and LT_AGE defined for the CURRENT and AGE libtool version integers, you compute DLL_VERSION as follows:

      DLL_VERSION=` expr ${LT_CURRENT} - ${LT_AGE}`
      AC_SUBST(DLL_VERSION)

15 Multithreading

Multithreading is a programming paradigm. In a multithreaded program, multiple threads execute concurrently (or quasi concurrently) at different places in the program.

There are three motivations for using multithreading in a program:

• Exploiting CPU hardware with multiple execution units. Nowadays, many CPUs have 2 to 8 execution cores in a single chip. Additionally, often multiple CPU chips are combined in a single package. Thus, some CPU packages support 64 or 96 simultaneous threads of execution.

• Simplifying program architecture. When a program has to read from different file descriptors, network sockets, or event channels at the same time, the classical singlethreaded architecture is to have a main loop which uses select or poll on all the descriptors and then dispatches according to from which descriptor input arrived. In a multi-threaded program, you allocate one thread for each descriptor, and these threads can be programmed and managed independently.

• Offloading work from signal handlers. A signal handler is not allowed to call malloc; therefore you are very limited in what you can do in a signal handler. But a signal handler can notify a thread, and the thread can then do the appropriate processing, as complex as it needs to be.

A multithreading API offers

• Primitives for creating threads, for waiting until threads are terminated, and for reaping their results.

• Primitives through which different threads can operate on the same data or use some data structures for communicating between the threads. These are called “mutexes” or “locks”.

• Primitives for executing a certain (initialization) code at most once.

• Primitives for notifying one or more other threads. These are called wait queues or “condition variables”.

• Primitives for allowing different threads to have different values for a variable. Such a variable is said to reside in “thread-local storage” or “thread-specific storage”.

• Primitives for relinquishing control for some time and letting other threads go.

Note: Programs that achieve multithreading through OpenMP (cf. the gnulib module ‘openmp’) don’t create and manage their threads themselves. Nevertheless, they need to use mutexes/locks in many cases.

15.1 The three multithreading APIs

Three multithreading APIs are available to Gnulib users:

• POSIX multithreading,

• ISO C multithreading,

• Gnulib multithreading.

They are supported on all platforms that have multithreading in one form or the other. Currently, these are all platforms supported by Gnulib, except for Minix.

The main differences are:

• The exit code of a thread is a pointer in the POSIX and Gnulib APIs, but only an int in the ISO C API.

• The POSIX API has additional facilities for detaching threads, setting the priority of a thread, assigning a thread to a certain set of processors, and much more.

• In the POSIX and ISO C APIs, most functions have a return code, and you are supposed to check the return code; even locking and unlocking a lock can fail. In the Gnulib API, many functions don’t have a return code; if they cannot complete, the program aborts. This sounds harsh, but such aborts have not been reported in 12 years.

• In the ISO C API, the initialization of a statically allocated lock is clumsy: You have to initialize it through a once-only function.

15.2 Choosing the right multithreading API

Here are guidelines for determining which multithreading API is best for your code. In programs that use advanced POSIX APIs, such as spin locks, detached

threads (pthread_detach), signal blocking (pthread_sigmask), priorities (pthread_

setschedparam), processor affinity (pthread_setaffinity_np), it is best to use

the POSIX API. This is because you cannot convert an ISO C thrd_t or a Gnulib

gl_thread_t to a POSIX pthread_t.

In code that is shared with glibc, it is best to use the POSIX API as well.

In libraries, it is best to use the Gnulib API. This is because it gives the person who builds the library an option ‘--enable-threads={isoc,posix,windows}’, that determines on which native multithreading API of the platform to rely. In other words, with this choice, you can minimize the amount of glue code that your library needs to contain.

In the other cases, the POSIX API and the Gnulib API are equally well suited.

The ISO C API is never the best choice, as of this writing (2020).

15.3 The POSIX multithreading API

The POSIX multithreading API is documented in POSIX https://pubs.opengroup.

org/onlinepubs/9699919799/.

To make use of POSIX multithreading, even on platforms that don’t support it natively (most prominently, native Windows), use the following Gnulib modules:

Purpose  Module
For thread creation and management:  pthread-thread
For simple and recursive locks:  pthread-mutex
For read-write locks:  pthread-rwlock
For once-only execution:  pthread-once
For “condition variables” (wait queues):  pthread-cond
For thread-local storage:  pthread-tss
For relinquishing control:  sched_yield
For spin locks:  pthread-spin

There is also a convenience module named pthread which depends on all of these (except sched_yield); so you don’t need to enumerate these modules one by one.

15.4 The ISO C multithreading API

The ISO C multithreading API is documented in ISO C 11 http://www.open-std.org/

jtc1/sc22/wg14/www/docs/n1570.pdf.

To make use of ISO C multithreading, even on platforms that don’t support it or have severe bugs, use the following Gnulib modules:

Purpose  Module
For thread creation and management:  thrd
For simple locks, recursive locks, and read-write locks:  mtx
For once-only execution:  mtx
For “condition variables” (wait queues):  cnd
For thread-local storage:  tss

There is also a convenience module named threads which depends on all of these; so you don’t need to enumerate these modules one by one.

15.5 The Gnulib multithreading API

The Gnulib multithreading API is documented in the respective include files:

  • <glthread/thread.h>
  • <glthread/lock.h>
  • <glthread/cond.h>
  • <glthread/tls.h>
  • <glthread/yield.h>

To make use of Gnulib multithreading, use the following Gnulib modules:

Purpose  Module
For thread creation and management:  thread
For simple locks, recursive locks, and read-write locks:  lock
For once-only execution:  lock
For “condition variables” (wait queues):  cond
For thread-local storage:  tls
For relinquishing control:  yield

The Gnulib multithreading supports a configure option ‘--enable-threads={isoc,posix,windows}’, that chooses the underlying thread implementation. Currently (2020):

• --enable-threads=posix is supported and is the best choice on all platforms except for native Windows. It may also work, to a limited extent, on mingw with the winpthreads library, but is not recommended there.

• --enable-threads=windows is supported and is the best choice on native Windows platforms (mingw and MSVC).

• --enable-threads=isoc is supported on all platforms that have the ISO C multithreading API. However, --enable-threads=posix is always a better choice.

15.6 Optimizations of multithreaded code

Despite all the optimizations of multithreading primitives that have been implemented over the years – from atomic operations in hardware (https://en.wikipedia.

org/wiki/Compare-and-swap), over futexes (https://en.wikipedia.org/wiki/
Futex) and restartable sequences (https://www.efficios.com/blog/2019/02/08/
linux-restartable-sequences/) in the Linux kernel, to lock elision [1] (https://
lwn.net/Articles/534758/) [2] (https://www.gnu.org/software/libc/manual/

html_node/Elision-Tunables.html)) – single-threaded programs can still profit performance-wise from the assertion that they are single-threaded.

Gnulib defines four facilities that help optimizing for the single-threaded case.

• The Gnulib multithreading API, when used on glibc ≤ 2.32 and *BSD systems, uses weak symbols to detect whether the program is linked with libpthread. If not, the program has no way to create additional threads and must therefore be single-threaded. This optimization applies to all the Gnulib multithreading API (locks, thread-local storage, and more).

• The thread-optim module, on glibc ≥ 2.32 systems, allows your code to skip locking between threads (regardless which of the three multithreading APIs you use). You need extra code for this: include the "thread-optim.h" header file, and use the macro

gl_multithreaded like this:
      bool mt = gl_multithreaded ();
      if (mt) gl_lock_lock (some_lock);
      ...
      if (mt) gl_lock_unlock (some_lock);

• You may use the unlocked-io module if you want the FILE stream functions getc, putc, etc. to use unlocked I/O if available, throughout the package. Unlocked I/O can improve performance, sometimes dramatically. But unlocked I/O is safe only in singlethreaded programs, as well as in multithreaded programs for which you can guarantee that every FILE stream, including stdin, stdout, stderr, is used only in a single thread. You need extra code for this optimization to be effective: include the "unlockedio.h" header file. Some Gnulib modules that do operations on FILE streams have these preparations already included.

• You may define the C macro GNULIB_REGEX_SINGLE_THREAD, if all the programs in your package invoke the functions of the regex module only from a single thread.

• You may define the C macro GNULIB_MBRTOWC_SINGLE_THREAD, if all the programs in your package invoke the functions mbrtowc, mbrtoc32, and the functions of the regex module only from a single thread. (The regex module uses mbrtowc under the hood.)

• You may define the C macro GNULIB_WCHAR_SINGLE_LOCALE, if all the programs in

your package set the locale early and • don’t change the locale after it has been initialized, and

• don’t call locale sensitive functions (mbrtowc, wcwidth, etc.) before the locale has been initialized.

This macro optimizes the functions mbrtowc, mbrtoc32, and wcwidth. You can get this macro defined by including the Gnulib module wchar-single.

• You may define the C macro GNULIB_EXCLUDE_SINGLE_THREAD, if all the programs in your package invoke the functions of the exclude module only from a single thread.

16 Strings and Characters

This chapter describes the APIs for strings and characters, provided by Gnulib.

16.1 Strings

Several possible representations exist for the representation of strings in memory of a running C program.

16.1.1 The C string representation

The classical representation of a string in C is a sequence of characters, where each character takes up one or more bytes, followed by a terminating NUL byte. This representation is used for strings that are passed by the operating system (in the argv argument of main, for example) and for strings that are passed to the operating system (in system calls such as open). The C type to hold such strings is ‘char *’ or, in places where the string shall not be modified, ‘const char *’. There are many C library functions, standardized by ISO C and POSIX, that assume this representation of strings.

A character encoding, or encoding for short, describes how the elements of a character set are represented as a sequence of bytes. For example, in the ASCII encoding, the UNDER-SCORE character is represented by a single byte, with value 0x5F. As another example, the COPYRIGHT SIGN character is represented:

• in the ISO-8859-1 encoding, by the single byte 0xA9,

• in the UTF-8 encoding, by the two bytes 0xC2 0xA9,

• in the GB18030 encoding, by the four bytes 0x81 0x30 0x84 0x38.

Note: The ‘char’ type may be signed or unsigned, depending on the platform. When we talk about the "byte 0xA9" we actually mean the char object whose value is (char) 0xA9; we omit the cast to char in this documentation, for brevity.

In POSIX, the character encoding is determined by the locale. The locale is some environmental attribute that the user can choose.

Depending on the encoding, in general, every character is represented by one or more bytes (up to 4 bytes in practice – but use MB_LEN_MAX instead of the number 4 in the code). When every character is represented by only 1 byte, we speak of an “unibyte locale”, otherwise of a “multibyte locale”.

It is important to realize that the majority of Unix installations nowadays use UTF-8 as locale encoding; therefore, the majority of users are using multibyte locales.

Three important facts to remember are:

A ‘char’ is a byte, not a character.

As a consequence:

• The <ctype.h> API, that was designed only with unibyte encodings in mind, is useless nowadays for general text processing; it does not work in multibyte locales.

• The strlen function does not return the number of characters in a string. Nor does it return the number of screen columns occupied by a string after it is output. It merely returns the number of bytes occupied by a string.

• Truncating a string, for example, with strncpy, can have the effect of truncating it in the middle of a multibyte character. Such a string will, when output, have a garbled character at its end, often represented by a hollow box.

Multibyte does not imply UTF-8 encoding.

While UTF-8 is the most common multibyte encoding, GB18030 is also a supported locale encoding on GNU systems (mostly because it is a Chinese government standard, last revised in 2022).

Searching for a character in a string is not the same as searching for a byte in the string.

Take the above example of COPYRIGHT SIGN in the GB18030 encoding: A byte search will find the bytes '0' and '8' in this string. But a search for the character "0" or "8" in the string "\begin{matrix}c \\ ◯ \end{matrix}" must, of course, report “not found”.

As a consequence:

• strchr and strrchr do not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit.

• strstr does not work with multibyte strings if the locale encoding is different from UTF-8.

• strcspn, strpbrk, strspn cannot work correctly in multibyte locales: they assume the second argument is a list of single-byte characters. Even in this simple case, they do not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit.

• strsep and strtok_r do not work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30.

• The strcasecmp, strncasecmp, and strcasestr functions do not work with multibyte strings.

Workarounds can be found in Gnulib, in the form of mbs* API functions:

• Gnulib has functions mbslen and mbswidth that can be used instead of strlen when the number of characters or the number of screen columns of a string is requested.

• Gnulib has functions mbschr and mbsrrchr that are like strchr and strrchr, but work in multibyte locales.

• Gnulib has a function mbsstr that is like strstr, but works in multibyte locales.

• Gnulib has functions mbscspn, mbspbrk, mbsspn that are like strcspn, strpbrk,

strspn, but work in multibyte locales.

• Gnulib has functions mbssep and mbstok_r that are like strsep and strtok_r but work in multibyte locales.

• Gnulib has functions mbscasecmp, mbsncasecmp, mbspcasecmp, and mbscasestr that

are like strcasecmp, strncasecmp, and strcasestr, but work in multibyte locales. Still, the function ulc_casecmp is preferable to these functions.

A C string can contain encoding errors.

Not every NUL-terminated byte sequence represents a valid multibyte string. Byte sequences can contain encoding errors, that is, bytes or byte sequences that are invalid and do not represent characters.

String functions like mbscasecmp and strcoll whose behavior depends on encoding have unspecified behavior on strings containing encoding errors, unless the behavior is specifically documented. If an application needs a particular behavior on these strings it can iterate through them itself, as described in the next subsection.

16.1.2 Iterating through strings

For complex string processing, string functions may not be enough, and you need to iterate through a string while processing each (possibly multibyte) character or encoding error in turn. Gnulib has several modules for iterating forward through a string in this way. Backward iteration, that is, from the string’s end to start, is not provided, as it is too hairy in general.

• The mbiter module iterates through a string whose length is already known. The string can contain NULs and encoding errors.

• The mbiterf module is like mbiter except it is more complex and typically faster.

• The mbuiter module iterates through a C string whose length is not a-priori known. The string can contain encoding errors and is terminated by the first NUL.

• The mbuiterf module is like mbuiter except it is more complex and typically faster.

• The mcel module is simpler than mbiter and mbuiter and can be faster than even mbiterf and mbuiterf. It can iterate through either strings whose length is known, or C strings, or strings terminated by other ASCII characters < 0x30.

• The mcel-prefer module is like mcel except that it causes some other modules to be based on mcel instead of on the mbiter family.

The choice of modules depends on the application’s needs. The mbiter module family is more suitable for applications that treat some sequences of two or more bytes as a single encoding error, and for applications that need to support obsolescent encodings on non-GNU platforms, such as CP864, EBCDIC, Johab, and Shift JIS. In this module family, mbuiter and mbuiterf are more suitable than mbiter and mbiterf when arguments are C strings, lengths are not already known, and it is highly likely that only the first few multibyte characters need to be inspected.

The mcel module is simpler and can be faster than the mbiter family, and is more suitable for applications that do not need the mbiter family’s special features.

The mcel-prefer module is like mcel except that it also causes some other modules, such as mbscasecmp, to use mcel rather than the mbiter family. This can be simpler and faster. However, it does not support the obsolescent encodings, and it may behave differently on data containing encoding errors where behavior is unspecified or undefined, because in mcel each encoding error is a single byte whereas in the mbiter family a single encoding error can contain two or more bytes.

If a package uses mcel-prefer, it may also want to give gnulib-tool one or more of the

options --avoid=mbiter, --avoid=mbiterf, --avoid=mbuiter and --avoid=mbuiterf, to

avoid packaging modules that are not needed.

16.1.3 Strings with NUL characters

   The GNU Coding Standards, section https://www.gnu.org/prep/standards/
html_node/Semantics.html, specifies:

Utilities reading files should not drop NUL characters, or any other nonprinting characters.

When it is a requirement to store NUL characters in strings, a variant of the C strings is needed. Gnulib offers a “string descriptor” type for this purpose. See Section 17.11 [Handling strings with NUL characters], page 806.

All remarks regarding encodings and multibyte characters in the previous section apply to string descriptors as well.

16.1.4 Character and String Functions in C Locale

The functions in this section are similar to the generic string functions from the standard C library, except that

• They behave as if the locale was set to the "C" locale, even when the locale is different, and/or

• They are specially optimized for the case where all characters are plain ASCII characters.

The functions are provided by the following modules.

16.1.4.1 c-ctype

The c-ctype module contains functions operating on single-byte characters, like the functions in <ctype.h>, that operate as if the locale encoding was ASCII. (The "C" locale on many systems has the locale encoding "ASCII".)

The functions are:

      extern bool c_isascii (int c);
      extern bool c_isalnum (int c);
      extern bool c_isalpha (int c);
      extern bool c_isblank (int c);
      extern bool c_iscntrl (int c);
      extern bool c_isdigit (int c);
      extern bool c_islower (int c);
      extern bool c_isgraph (int c);
      extern bool c_isprint (int c);
      extern bool c_ispunct (int c);
      extern bool c_isspace (int c);
      extern bool c_isupper (int c);
      extern bool c_isxdigit (int c);
      extern int c_tolower (int c);
      extern int c_toupper (int c);

These functions assign properties only to ASCII characters.

The c argument can be a char or unsigned char value, whereas the corresponding functions in <ctype.h> take an argument that is actually an unsigned char value.

The c_is* functions return ‘bool’, where the corresponding functions in <ctype.h> return ‘int’ for historical reasons.

Note: The <ctype.h> functions support only unibyte locales.

16.1.4.2 c-strcase

The c-strcase module contains case-insensitive string comparison functions operating on single-byte character strings, like the functions in <strings.h>, that operate as if the locale encoding was ASCII. (The "C" locale on many systems has the locale encoding "ASCII".)

The functions are:

      extern int c_strcasecmp (const char *s1, const char *s2);
      extern int c_strncasecmp (const char *s1, const char *s2, size_t n);

For case conversion here, only ASCII characters are considered to be upper case or lower case.

Note: The functions strcasecmp, strncasecmp from <strings.h> support only unibyte locales; for multibyte locales, you need the functions mbscasecmp, mbsncasecmp,

mbspcasecmp.

16.1.4.3 c-strcaseeq

The c-strcaseeq module contains an optimized case-insensitive string comparison function operating on single-byte character strings, that operate as if the locale encoding was ASCII. (The "C" locale on many systems has the locale encoding "ASCII".)

The functions is actually implemented as a macro:

      extern int STRCASEEQ (const char *s1, const char *s2,
                            int s20, int s21, int s22, int s23, int s24, int s25,
                            int s26, int s27, int s28);

s2 should be a short literal ASCII string, and s20, s21, ... the individual characters of s2.

For case conversion here, only ASCII characters are considered to be upper case or lower case.

16.1.4.4 c-strcasestr

The c-strcasestr module contains a case-insensitive string search function operating on single-byte character strings, that operate as if the locale encoding was ASCII. (The "C" locale on many systems has the locale encoding "ASCII".)

The function is:

      extern char *c_strcasestr (const char *haystack, const char *needle);

For case conversion here, only ASCII characters are considered to be upper case or lower case.

Note: The function strcasestr from <string.h> supports only unibyte locales; for multibyte locales, you need the function mbscasestr.

16.1.4.5 c-strstr

The c-strstr module contains a substring search function operating on single-byte character strings, that operate as if the locale encoding was ASCII. (The "C" locale on many systems has the locale encoding "ASCII".)

The function is:

      extern char *c_strstr (const char *haystack, const char *needle);

Note: The function strstr from <string.h> supports only unibyte locales; for multibyte locales, you need the function mbsstr.

16.1.4.6 c-strtod

The c-strtod module contains a string to number (‘double’) conversion function operating on single-byte character strings, that operates as if the locale encoding was ASCII. (The "C" locale on many systems has the locale encoding "ASCII".)

The function is:

      extern double c_strtod (const char *string, char **endp);

In particular, only a period ‘.’ is accepted as decimal point, even when the current locale’s notion of decimal point is a comma ‘,’, and no characters outside the basic character set are accepted.

On platforms without strtod_l, this function is not safe for use in multi-threaded applications since it calls setlocale.

16.1.4.7 c-strtold

The c-strtold module contains a string to number (‘long double’) conversion function operating on single-byte character strings, that operates as if the locale encoding was ASCII. (The "C" locale on many systems has the locale encoding "ASCII".)

The function is:

      extern long double c_strtold (const char *string, char **endp);

In particular, only a period ‘.’ is accepted as decimal point, even when the current locale’s notion of decimal point is a comma ‘,’.

16.1.5 Comparison of string APIs

This table summarizes the API functions available for strings, in POSIX and in Gnulib. unibyte strings only assume C locale multibyte strings multibyte strings with NULs wide character strings

32-bit wide character strings

strlen         strlen       mbslen       string_ desc_ length   wcslen      {u32_ \atop strlen}

strnlen        strnlen      mbsnlen  –  wcsnlen     u32_ strnlen, u32_ mbsnlen

strcmp         strcmp       strcmp       string_ desc_cmp     wcscmp      {u32_ \atop strcmp}

strncmp        strncmp      strncmp  –  wcsncmp     u32_ strncmp

strcasecmp     strcasecmp   mbscasecmp –  wcscasecmp  u32_ casecmp

strncasecmp

               strncasecmp

                            mbsncasecmp,
                            mbspcasecmp

–

                                                     wcsncasecmp

                                                                 u32_ casecmp

strcoll        strcmp       strcoll  –  wcscoll     u32_ strcoll

strxfrm  –  strxfrm  –  wcsxfrm  –
strchr         strchr       mbschr       string_ desc_index   wcschr      {u32_ \atop strchr}

strrchr        strrchr      mbsrchr      string_ desc_last_ index wcsrchr     u32_ strrchr

strstr         strstr       mbsstr       string_ desc_ contains     wcsstr      {u32_ \atop strstr}

strcasestr     strcasestr   mbscasestr –  –  –
strspn         strspn       mbsspn  –  wcsspn      {u32_ \atop strspn}

strcspn        strcspn      mbscspn  –  wcscspn     u32_ strcspn

strpbrk        strpbrk      mbspbrk  –  wcspbrk     u32_ strpbrk

strtok_r       strtok_r     mbstok_r  –  wcstok      {u32_ \atop strtok}

strsep         strsep       mbssep  –  –  –
strcpy         strcpy       strcpy       string_ desc_copy    wcscpy      {u32_ \atop strcpy}

stpcpy         stpcpy       stpcpy  –  wcpcpy      {u32_ \atop stpcpy}

strncpy        strncpy      strncpy  –  wcsncpy     u32_ strncpy

stpncpy        stpncpy      stpncpy  –  wcpncpy     u32_ stpncpy

strcat         strcat       strcat       string_ desc_ concat   wcscat      {u32_ \atop strcat}

strncat        strncat      strncat  –  wcsncat     u32_ strncat

free           free         free         string_ desc_free    free        free
strdup         strdup       strdup       string_ desc_copy    wcsdup      {u32_ \atop strdup}

strndup        strndup      strndup  –  –  –
mbswidth       mbswidth     mbswidth  –  wcswidth    c32swidth, u32_ strwidth

strtol         strtol       strtol  –  –  –
strtoul        strtoul      strtoul  –  –  –
strtoll        strtoll      strtoll  –  –  –
strtoull       strtoull     strtoull  –  –  –
strtoimax      strtoimax    strtoimax  –  wcstoimax –
strtoumax      strtoumax    strtoumax  –  wcstoumax –
strtof  –  strtof  –  –  –
strtod         c_strtod     strtod  –  –  –
strtold        c_strtold    strtold  –  –  –

strfromf  –  strfromf  –  –  –
strfromd  –  strfromd  –  –  –
strfroml  –  strfroml  –  –  –
–  –  –  –  mbstowcs    mbstoc32s
–  –  –  –  mbsrtowcs   mbsrtoc32s
–  –  –  –  mbsnrtowcs  mbsnrtoc32s
–  –  –  –  wcstombs    c32stombs
–  –  –  –  wcsrtombs   c32srtombs
–  –  –  –  wcsnrtombs  c32snrtombs

16.2 Characters

A character is the elementary unit that strings are made of.

What is a character? “A character is an element of a character set” is sort of a circular definition, but it highlights the fact that it is not merely a number. Although many characters are visually represented by a single glyph, there are characters that, for example, have a different glyph when used at the end of a word than when used inside a word. A character is also not the minimal rendered text processing unit; that is a grapheme cluster and in general consists of one or more characters. If you want to know more about the concept of character and various concepts associated with characters, refer to the Unicode standard.

For the representation in memory of a character, various types have been in use, and some of them were failures: char and wchar_t were invented for this purpose, but are not the right types. char32_t is the right type (successor of wchar_t); and mbchar_t (defined by Gnulib) is an alternative for specific kinds of processing.

16.2.1 The char type

The char type is in the C language since the beginning in the 1970ies, but – due to its limitation of 256 possible values – is no longer the adequate type for storing a character.

Technically, it is still adequate in unibyte locales. But since most locales nowadays are multibyte locales, it makes no sense to write a program that runs only in unibyte locales.

ISO C and POSIX standardized an API for characters of type char, in <ctype.h>. This API is nowadays useless and obsolete, when it comes to general text processing.

The important lessons to remember are:

A ‘char’ is just the elementary storage unit for a string, not a character.

Never use <ctype.h>!

16.2.2 The wchar_t type

The ISO C and POSIX standard creators made an attempt to overcome the dead end regarding the char type. They introduced

• a type ‘wchar_t’, designed to encapsulate a character,

• a “wide string” type ‘wchar_t *’, with some API functions declared in <wchar.h>, and • functions declared in <wctype.h> that were meant to supplant the ones in <ctype.h>.

Unfortunately, this API and its implementation has numerous problems:

• On Windows platforms and on AIX in 32-bit mode, wchar_t is a 16-bit type. This means that it can never accommodate an entire Unicode character. Either the wchar_t * strings are limited to characters in UCS-2 (the “Basic Multilingual Plane” of Unicode), or – if wchar_t * strings are encoded in UTF-16 – a wchar_t represents only half of a character in the worst case, making the <wctype.h> functions pointless.

• On Solaris and FreeBSD, the wchar_t encoding is locale dependent and undocumented. This means, if you want to know any property of a wchar_t character, other than the properties defined by <wctype.h> – such as whether it’s a dash, currency symbol, paragraph separator, or similar –, you have to convert it to char * encoding first, by use of the function wctomb.

• When you read a stream of wide characters, through the functions fgetwc and fgetws, and when the input stream/file is not in the expected encoding, you have no way to determine the invalid byte sequence and do some corrective action. If you use these functions, your program becomes “garbage in - more garbage out” or “garbage in - abort”.

As a consequence, it is better to use multibyte strings. Such multibyte strings can bypass limitations of the wchar_t type, if you use functions defined in Gnulib and GNU libunistring for text processing. They can also faithfully transport malformed characters that were present in the input, without requiring the program to produce garbage or abort.

16.2.3 The char32_t type

The ISO C and POSIX standard creators then introduced the char32_t type. In ISO C 11, it was conceptually a “32-bit wide character” type. In ISO C 23, its semantics has been further specified: A char32_t value is a Unicode code point.

Thus, the char32_t type is not affected the problems that plague the wchar_t type. The char32_t type and its API are defined in the <uchar.h> header file. ISO C and POSIX specify only the basic functions for the char32_t type, namely con-

version of a single character (mbrtoc32 and c32rtomb). For convenience, Gnulib adds API for classification and case conversion of characters.

GNU libunistring can also be used on char32_t values. Since char32_t is the same as uint32_t, all u32_* functions of GNU libunistring are applicable to arrays of char32_t values.

On glibc systems, use of the 32-bit wide strings (char32_t[]) is exactly as efficient as the use of the older wide strings (wchar_t[]). This is possible because on glibc, wchar_ t values already always were 32-bit and Unicode code points. mbrtoc32 is just an alias of mbrtowc. The Gnulib *c32* functions are optimized so that on glibc systems they immediately redirect to the corresponding *wc* functions.

Gnulib implements the ISO C 23 semantics of char32_t when you import the ‘uchar-c23’ module. Without this module, it implements only the ISO C 11 semantics; the effect is that on some platforms (macOS, FreeBSD, NetBSD, Solaris) a char32_t value is the same as a wchar_t value, not a Unicode code point. Thus, when you want to pass char32_t values to GNU libunistring or to some Unicode centric Gnulib functions, you need the ‘uchar-c23’ module in order to do so without portability problems.

16.2.4 The mbchar_t type

Gnulib defines an alternate way to encode a multibyte character: mbchar_t. Its main feature is the ability to process a string or stream with some malformed characters without reporting an error.

The type mbchar_t, defined in "mbchar.h", holds a character in both the multibyte and the 32-bit wide character representation. In case of a malformed character only the multibyte representation is used.

16.2.4.1 Reading multibyte strings

If you want to process (possibly multibyte) characters while reading them from a FILE * stream, without reading them into a string first, the mbfile module is made for this purpose.

16.2.5 Comparison of character APIs

This table summarizes the API functions available for characters, in POSIX and in Gnulib. unibyte character assume C locale wide character 32-bit wide character mbchar t character

== '\0'           == '\0'        == L'\0'       == 0           mb_isnul
==               ==             ==             ==             mb_equal
isalnum          c_isalnum      iswalnum       c32isalnum     mb_isalnum
isalpha          c_isalpha      iswalpha       c32isalpha     mb_isalpha
isblank          c_isblank      iswblank       c32isblank     mb_isblank
iscntrl          c_iscntrl      iswcntrl       c32iscntrl     mb_iscntrl
isdigit          c_isdigit      iswdigit       c32isdigit     mb_isdigit

isgraph          c_isgraph      iswgraph       c32isgraph     mb_isgraph
islower          c_islower      iswlower       c32islower     mb_islower
isprint          c_isprint      iswprint       c32isprint     mb_isprint
ispunct          c_ispunct      iswpunct       c32ispunct     mb_ispunct
isspace          c_isspace      iswspace       c32isspace     mb_isspace
isupper          c_isupper      iswupper       c32isupper     mb_isupper
isxdigit         c_isxdigit     iswxdigit      c32isxdigit    mb_isxdigit
–  –  wctype         c32_get_ type_test  –
–  –  iswctype       c32_apply_ type_test  –
tolower          c_tolower      towlower       c32tolower  –
toupper          c_toupper      towupper       c32toupper  –
–  –  wctrans        c32_get_ mapping  –
–  –  towctrans      c32_apply_ mapping  –
–  –  wcwidth        c32width       mb_width

17 Particular Modules

17.1 alloca

The alloca module provides for a function alloca which allocates memory on the stack, where the system allows it. A memory block allocated with alloca exists only until the function that calls alloca returns or exits abruptly.

There are a few systems where this is not possible: HP-UX systems, and some other platforms when the C++ compiler is used. On these platforms the alloca module provides a malloc based emulation. This emulation will not free a memory block immediately when the calling function returns, but rather will wait until the next alloca call from a function with the same or a shorter stack length. Thus, in some cases, a few memory blocks will be kept although they are not needed any more.

The user can #include <alloca.h> and use alloca on all platforms. Note that the #include <alloca.h> must be the first one after the autoconf-generated config.h, for AIX 3 compatibility. Thanks to IBM for this nice restriction!

Note that GCC 3.1 and 3.2 can inline functions that call alloca. When this happens, the memory blocks allocated with alloca will not be freed until the end of the calling function. If this calling function runs a loop calling the function that uses alloca, the program easily gets a stack overflow and crashes. To protect against this compiler behaviour, you can mark the function that uses alloca with the following attribute:

      #ifdef __GNUC__
      __attribute__((__noinline__))
      #endif

An alternative to this module is the ‘alloca-opt’ module.

17.2 alloca-opt

The alloca-opt module provides for a function alloca which allocates memory on the stack, where the system allows it. A memory block allocated with alloca exists only until the function that calls alloca returns or exits abruptly.

There are a few systems where this is not possible: HP-UX systems, and some other platforms when the C++ compiler is used. On these platforms the alloca-opt module provides no replacement, just a preprocessor macro HAVE ALLOCA.

The user can #include <alloca.h> on all platforms, and use alloca on those platforms where the preprocessor macro HAVE ALLOCA evaluates to true. If HAVE ALLOCA is false, the code should use a heap-based memory allocation based on malloc or (in C++) new. Note that the #include <alloca.h> must be the first one after the autoconf-generated config.h, for AIX 3 compatibility. Thanks to IBM for this nice restriction!

Note that GCC 3.1 and 3.2 can inline functions that call alloca. When this happens, the memory blocks allocated with alloca will not be freed until the end of the calling function. If this calling function runs a loop calling the function that uses alloca, the program easily gets a stack overflow and crashes. To protect against this compiler behaviour, you can mark the function that uses alloca with the following attribute:

      #ifdef __GNUC__
      __attribute__((__noinline__))
      #endif

17.3 Safe Allocation Macros

The standard C library malloc/realloc/calloc/free APIs are prone to a number of common coding errors. The safe-alloc module provides macros that make it easier to avoid many of them. It still uses the standard C allocation functions behind the scenes.

Some of the memory allocation mistakes that are commonly made are

• passing the incorrect number of bytes to malloc, especially when allocating an array,

• unchecked integer overflow when calculating array sizes,

• fail to check the return value of malloc and realloc for errors,

• forget to fully initialize memory just allocated with malloc,

• duplicate calls to free by forgetting to set the pointer variable to NULL,

• leaking memory in calls to realloc when that call fails.

The safe-alloc module addresses these problems in the following way:

• It defines macros that wrap around the standard C allocation functions. That makes it possible to use the compiler’s knowledge of the size of objects for allocation; it also allows setting pointers passed in as arguments when appropriate.

• It uses return values only for a success/failure error condition flag, and annotates them

with GCC’s __warn_unused_result__attribute.

• When allocating a fresh array, it uses calloc instead of malloc so that the array’s contents are zeroed. However, memory added to an already-existing array is uninitialized.

[Macro] int ALLOC (ptr)

Allocate sizeof *ptr bytes of memory and store the address of allocated memory in ptr. Fill the newly allocated memory with zeros. Returns −1 on failure, 0 on success.

[Macro] int ALLOC N (ptr, count)

Allocate an array of count elements, each sizeof *ptr bytes long, and store the address of allocated memory in ptr. Fill the newly allocated memory with zeros. Returns −1 on failure, 0 on success.

[Macro] int ALLOC N UNINITIALIZED (ptr, count)

Allocate an array of count elements, each sizeof *ptr bytes long, and store the address of allocated memory in ptr. The allocated memory is not initialized. Returns −1 on failure, 0 on success.

[Macro] int REALLOC N (ptr, count)

Reallocate the memory pointed to by ptr to be big enough to hold at least count elements, each sizeof *ptr bytes long, and store the address of allocated memory in ptr. If reallocation fails, the ptr variable is not modified. If the new array is smaller than the old one, discard excess contents; if larger, the newly added storage is not initialized. Returns −1 on failure, 0 on success.

[Macro] void FREE (ptr)

Free the memory stored in ptr and set ptr to NULL.

17.4 Attributes

This module provides a header file attribute.h that defines macros related to C and C++ attributes and the GCC __attribute__keyword.

Here is an example of its use:

     #include <attribute.h>
     NODISCARD
     extern char *crypt (char const *, char const *)
       ATTRIBUTE_NOTHROW ATTRIBUTE_LEAF ATTRIBUTE_NONNULL ((1, 2));

NODISCARD expands to [[nodiscard]] if the compiler supports this C23 syntax, otherwise

to __attribute__((__warn_unused_result__)) if the compiler is a recent-enough GCC

or GCC-like compiler, otherwise to nothing. ATTRIBUTE_NOTHROW expands to __attribute_ _((__nothrow__)) if the compiler is a recent-enough GCC or GCC-like compiler, and to

nothing otherwise. Similarly for ATTRIBUTE_LEAF. ATTRIBUTE_NONNULL ((1, 2)) expands

to __attribute__((__nonnull__(1, 2))) if the compiler is recent-enough GCC, and to nothing otherwise.

Most of these attribute names begin with ATTRIBUTE_. A few do not, because they are part of C23 and their names are not likely to clash with other macro names. These macros

are DEPRECATED, FALLTHROUGH, MAYBE_UNUSED, and NODISCARD, which can be defined to

[[deprecated]] etc. on C23 platforms. Also, these exceptional macros should be placed at the start of function declarations, whereas the ATTRIBUTE_* macros can be placed at the end.

17.5 Compile-time Assertions

This module provides a header file verify.h that defines macros related to compile-time verification.

Two of these macros are verify (V) and verify_expr (V, EXPR). Both accept an integer constant expression argument V and verify that it is nonzero. If not, a compiletime error results.

These two macros implement compile-time tests, as opposed to the standard assert macro which supports only runtime tests. Since the tests occur at compile-time, they are more reliable, and they require no runtime overhead.

verify (V); is a declaration; it can occur outside of functions. In contrast, verify_expr (V, EXPR) is an expression that returns the value of EXPR; it can be used in macros that expand to expressions. If EXPR is an integer constant expression, then verify_expr (V, EXPR) is also an integer constant expression. Although EXPR and verify_expr (V, EXPR) are guaranteed to have the same side effects and value and type (after integer promotion), they need not have the same type if EXPR’s type is an integer that is narrower than int

or unsigned int.

V should be an integer constant expression in the sense of the C standard. Its leaf operands should be integer, enumeration, or character constants; or sizeof expressions that return constants; or floating constants that are the immediate operands of casts. Outside a sizeof subexpression, V should not contain any assignments, function calls, comma operators, casts to non-integer types, or subexpressions whose values are outside the representable ranges for their types. If V is not an integer constant expression, then a compiler might reject a usage like ‘verify (V);’ even when V is nonzero.

Although the standard assert macro is a runtime test, C23 and C++17 specify a builtin static_assert (V), which differs from verify in two major ways. First, it can also be used within a struct or union specifier, in place of an ordinary member declaration. Second, it allows the programmer to specify, as an optional second argument, a compile-time diagnostic as a string literal. If your program is not intended to be portable to compilers that lack C23 or C++17 static_assert, the only advantage of verify is that its name is a bit shorter.

The verify.h header defines one more macro, assume (E), which expands to an expression of type void that causes the compiler to assume that E yields a nonzero value. E should be a scalar expression, and should not have side effects; it may or may not be evaluated. The behavior is undefined if E would yield zero. The main use of assume is optimization, as the compiler may be able to generate better code if it assumes E. For best results, E should be simple enough that a compiler can determine that it has no side effects: if E calls an external function or accesses volatile storage the compiler may not be able to optimize E away and assume (E) may therefore slow down the program.

Here are some example uses of these macros.

     #include <verify.h>
     #include <limits.h>
     #include <time.h>
     /* Verify that time_t is an integer type.  */
     verify ((time_t) 1.5 == 1);
     /* Verify that time_t is no smaller than int.  */
     verify (sizeof (int) <= sizeof (time_t));
     /* Verify that time_t is signed.  */
     verify ((time_t) -1 < 0);
     /* Verify that time_t uses two's complement representation.  */
     verify (~ (time_t) -1 == 0);
     /* Return the maximum value of the integer type T,
        verifying that T is an unsigned integer type.
        The cast to (T) is outside the call to verify_expr
        so that the result is of type T
        even when T is narrower than unsigned int.  */
     #define MAX_UNSIGNED_VAL(t) \
        ((T) verify_expr (0 < (T) -1, -1))
     /* Return T divided by CHAR_MAX + 1, where behavior is
        undefined if T < 0.  In the common case where CHAR_MAX
        is 127 the compiler can therefore implement the division

        by shifting T right 7 bits, an optimization that would
        not be valid if T were negative.  */
     time_t
     time_index (time_t t)
     {
       assume (0 <= t);
       return t / (CHAR_MAX + 1);
     }

17.6 Non-returning Functions

A "non-returning" function is a function which cannot return normally. Instead of returning, it can loop forever, or it can transfer control via abort, execvp, exit, longjmp, throw (in C++), or similar mechanisms. Non-returning functions are declared with a void return type.

It helps the compiler’s ability to emit sensible warnings, following data-flow analysis, to declare which functions are non-returning. It can also help generate more-efficient code, as there is no need to save a return address when calling a non-returning function.

Gnulib has multiple ways to support such a declaration:

• The _Noreturn keyword. No modules are needed, as Gnulib arranges for <config.h> to define _Noreturn to an appropriate replacement on platforms lacking it. Unfortunately, although this approach works for all current C versions, the _Noreturn keyword is obsolescent in C23.

• The ‘noreturn’ module. It provides a way to put this declaration at function declarations, at function definitions, and in function pointer types. The identifiers to use are:

- _GL_NORETURN_FUNC for use in function declarations and function definitions.

- _GL_NORETURN_FUNCPTR for use on function pointers.

The include file is <noreturn.h>.

Which of the approaches to use? If the non-returning functions you have to declare are unlikely to be accessed through function pointers, you should use _Noreturn; otherwise the module noreturn provides for better data-flow analysis and thus for better warnings.

There is also an obsolete stdnoreturn module, but its use is no longer recommended.

17.7 Integer Properties

The intprops module consists of an include file <intprops.h> that defines several macros useful for testing properties of integer types.

Integer overflow is a common source of problems in programs written in C and other languages. In some cases, such as signed integer arithmetic in C programs, the resulting behavior is undefined, and practical platforms do not always behave as if integers wrap around reliably. In other cases, such as unsigned integer arithmetic in C, the resulting behavior is well-defined, but programs may still misbehave badly after overflow occurs.

Many techniques have been proposed to attack these problems. These include precondition testing, wraparound behavior where signed integer arithmetic is guaranteed to be modular, saturation semantics where overflow reliably yields an extreme value, undefined behavior sanitizers where overflow is guaranteed to trap, and various static analysis techniques.

Gnulib supports wraparound arithmetic and precondition testing, as these are relatively easy to support portably and efficiently. There are two families of precondition tests: the first, for integer types, is easier to use, while the second, for integer ranges, has a simple and straightforward portable implementation.

Like other Gnulib modules, the implementation of the intprops module assumes that integers use a two’s complement representation, but it does not assume that signed integer arithmetic wraps around. See Section 1.5.4 [Other portability assumptions], page 6.

17.7.1 Arithmetic Type Properties

TYPE_IS_INTEGER (t) is an arithmetic constant expression that yields 1 if the arithmetic type t is an integer type, 0 otherwise. bool counts as an integer type.

TYPE_SIGNED (t) is an arithmetic constant expression that yields 1 if the real type t is a signed integer type or a floating type, 0 otherwise. If t is an integer type, TYPE_SIGNED (t) is an integer constant expression.

EXPR_SIGNED (e) yields 1 if the real expression e has a signed integer type or a floating type, 0 otherwise. If e is an integer constant expression or an arithmetic constant expression, EXPR_SIGNED (e) is likewise. The expression e is not evaluated, and EXPR_SIGNED (e) is typically optimized to a constant.

Example usage:

     #include <intprops.h>
     #include <sys/types.h>
     enum
     {
       clock_t_is_integer = TYPE_IS_INTEGER (clock_t),
       uid_t_is_signed = TYPE_SIGNED (uid_t)
     };
     int
     CLOCKS_PER_SEC_is_signed (void)
     {
       return EXPR_SIGNED (CLOCKS_PER_SEC);
     }

17.7.2 Integer Bounds

INT_BUFSIZE_BOUND (t) is an integer constant expression that is a bound on the size of the string representing an integer type or expression t in decimal notation, including the terminating null character and any leading - character. For example, if INT_BUFSIZE_ BOUND (int) is 12, any value of type int can be represented in 12 bytes or less, including the terminating null. The bound is not necessarily tight.

Example usage:

#include <intprops.h>
#include <stdio.h>
int
int_strlen (int i)
{
  char buf[INT_BUFSIZE_BOUND (int)];
  return sprintf (buf, "%d", i);
}

INT_STRLEN_BOUND (t) is an integer constant expression that is a bound on the length of the string representing an integer type or expression t in decimal notation, including any leading - character. This is one less than INT_BUFSIZE_BOUND (t).

TYPE_MINIMUM (t) and TYPE_MAXIMUM (t) are integer constant expressions equal to the minimum and maximum values of the integer type t. These expressions are of the type t.

Example usage:

#include <sys/types.h>
#include <intprops.h>
bool
in_off_t_range (long long int a)
{
  return TYPE_MINIMUM (off_t) <= a && a <= TYPE_MAXIMUM (off_t);
}

17.7.3 Checking Integer Overflow

Signed integer arithmetic has undefined behavior on overflow in C. Although almost all modern computers use two’s complement signed arithmetic that is well-defined to wrap around, C compilers routinely optimize assuming that signed integer overflow cannot occur, which means that a C program cannot easily get at the underlying machine arithmetic. For example:

if ((a + b < b) == (a < 0))
  a += b;
else
  printf ("overflow\n");

might not work as expected if a and b are signed, because a compiler can assume that signed overflow cannot occur and treat the entire if expression as if it were true. And even if a is unsigned, the expression might not work as expected if b is negative or is wider than a.

The following macros work around this problem by yielding an overflow indication while computing the sum, difference, or product of two integers. For example, if i is of type int,

INT_ADD_OK (INT_MAX - 1, 1, &i) sets i to INT_MAX and yields 1, whereas INT_ADD_OK
(INT_MAX, 1, &i) yields 0.

Example usage:

#include <intprops.h>
#include <stdio.h>

     /* Compute A * B, reporting whether overflow occurred.  */
     void
     print_product (long int a, long int b)
     {
       long int r;
       if (INT_MULTIPLY_OK (a, b, &r))
         printf ("result is %ld\n", r);
       else
         printf ("overflow\n");
     }

These macros work for both signed and unsigned integers, so they can be used with integer types like time_t that may or may not be signed, depending on the platform.

These macros have the following restrictions:

• Their first two arguments must be integer expressions.

• Their last argument must be a non-null pointer to an integer.

• They may evaluate their arguments zero or multiple times, so the arguments should not have side effects.

• They are not necessarily constant expressions, even if all their arguments are constant expressions.

INT_ADD_OK (a, b, r)

Compute the sum of a and b. If it fits into *r, store it there and yield 1. Otherwise yield 0, possibly modifying *r to an unspecified value. See above for restrictions.

INT_SUBTRACT_OK (a, b, r)

Compute the difference between a and b. If it fits into *r, store it there and yield 1. Otherwise yield 0, possibly modifying *r to an unspecified value. See above for restrictions.

INT_MULTIPLY_OK (a, b, r)

Compute the product of a and b. If it fits into *r, store it there and yield 1. Otherwise yield 0, possibly modifying *r to an unspecified value. See above for restrictions.

Other macros are available if you need wrapped-around results when overflow occurs (see Section 17.7.4 [Wraparound Arithmetic], page 797), or if you need to check for overflow in operations other than addition, subtraction, and multiplication (see Section 17.7.5 [Integer Type Overflow], page 799).

17.7.4 Wraparound Arithmetic with Integers

Signed integer arithmetic has undefined behavior on overflow in C. Although almost all modern computers use two’s complement signed arithmetic that is well-defined to wrap around, C compilers routinely optimize assuming that signed integer overflow cannot occur, which means that a C program cannot easily get at the underlying machine arithmetic. For example, on a typical machine with 32-bit two’s complement int the expression INT_MAX + 1 does not necessarily yield INT_MIN, because the compiler may do calculations with a 64-bit register, or may generate code that traps on signed integer overflow.

The following macros work around this problem by storing the wraparound value, i.e., the low-order bits of the correct answer, and by yielding an overflow indication. For example,

if i is of type int, INT_ADD_WRAPV (INT_MAX, 1, &i) sets i to INT_MIN and yields 1 on a

two’s complement machine. See Section 17.7.5 [Integer Type Overflow], page 799.

Example usage:

     #include <intprops.h>
     #include <stdio.h>
     /* Print the low order bits of A * B,
        reporting whether overflow occurred.  */
     void
     print_product (long int a, long int b)
     {
       long int r;
       int overflow = INT_MULTIPLY_WRAPV (a, b, &r);
       printf ("result is %ld (%s)\n", r,
               (overflow
                ? "after overflow"
                : "no overflow"));
     }

These macros work for both signed and unsigned integers, so they can be used with integer types like time_t that may or may not be signed, depending on the platform.

These macros have the following restrictions:

• Their first two arguments must be integer expressions.

• Their last argument must be a non-null pointer to an integer.

• They may evaluate their arguments zero or multiple times, so the arguments should not have side effects.

• They are not necessarily constant expressions, even if all their arguments are constant expressions.

INT_ADD_WRAPV (a, b, r)

Store the low-order bits of the sum of a and b into *r. Yield 1 if overflow occurred, 0 if the low-order bits are the mathematically-correct sum. See above for restrictions.

INT_SUBTRACT_WRAPV (a, b, r)

Store the low-order bits of the difference between a and b into *r. Yield 1 if overflow occurred, 0 if the low-order bits are the mathematically-correct difference. See above for restrictions.

INT_MULTIPLY_WRAPV (a, b, r)

Store the low-order bits of the product of a and b into *r. Yield 1 if overflow occurred, 0 if the low-order bits are the mathematically-correct product. See above for restrictions.

If your code includes <intprops.h> only for these _WRAPV macros, you may prefer to use Gnulib’s stdckdint module instead, as it supports similar macros that were standardized in C23 and are therefore independent of Gnulib if your code can assume C23 or later. See Section 9.49 [stdckdint.h], page 72.

Other macros are available if you do not need wrapped-around results when overflow occurs (see Section 17.7.3 [Checking Integer Overflow], page 796), or if you need to check for overflow in operations other than addition, subtraction, and multiplication (see Section 17.7.5 [Integer Type Overflow], page 799).

17.7.5 Integer Type Overflow

Although unsigned integer arithmetic wraps around modulo a power of two, signed integer arithmetic has undefined behavior on overflow in C. Almost all modern computers use two’s complement signed arithmetic that is well-defined to wrap around, but C compilers routinely optimize based on the assumption that signed integer overflow cannot occur, which means that a C program cannot easily get at the underlying machine behavior. For example, the signed integer expression (a + b < b) != (a < 0) is not a reliable test for whether a + b overflows, because a compiler can assume that signed overflow cannot occur and treat the entire expression as if it were false.

These macros yield 1 if the corresponding C operators overflow, 0 otherwise. They work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. They are integer constant expressions if their arguments are. They are typically easier to use than the integer range overflow macros (see Section 17.7.6 [Integer Range Overflow], page 800), and they support more operations and evaluation contexts than the integer overflow checking macros (see Section 17.7.3 [Checking Integer Overflow], page 796) or the wraparound macros (see Section 17.7.4 [Wraparound Arithmetic], page 797).

These macros can be tricky to use with arguments narrower than int. For example, in the common case with 16-bit short int and 32-bit int, if a and b are of type short int then INT_MULTIPLY_OVERFLOW (a, b) always yields 0, as a * b cannot overflow due to C’s rule that a and b are widened to int before multiplying. For this reason, often it is better to use the integer overflow checking macros (see Section 17.7.3 [Checking Integer Overflow], page 796) or the wraparound macros (see Section 17.7.4 [Wraparound Arithmetic], page 797) when checking for overflow in addition, subtraction, or multiplication.

Example usage:

     #include <intprops.h>
     #include <limits.h>
     #include <stdio.h>
     /* Print A * B if in range, an overflow
        indicator otherwise.  */
     void
     print_product (long int a, long int b)
     {
       if (INT_MULTIPLY_OVERFLOW (a, b))
         printf ("multiply would overflow");
       else
         printf ("product is %ld", a * b);
     }

/* Does the product of two ints always fit
in a long int?  */
enum {
INT_PRODUCTS_FIT_IN_LONG
= ! (INT_MULTIPLY_OVERFLOW
    ((long int) INT_MIN, INT_MIN))
};

These macros have the following restrictions:

• Their arguments must be integer expressions.

• They may evaluate their arguments zero or multiple times, so the arguments should not have side effects.

These macros are tuned for their last argument being a constant.

INT_ADD_OVERFLOW (a, b)

Yield 1 if a + b would overflow, 0 otherwise. See above for restrictions.

INT_SUBTRACT_OVERFLOW (a, b)

Yield 1 if a - b would overflow, 0 otherwise. See above for restrictions.

INT_NEGATE_OVERFLOW (a)

Yields 1 if -a would overflow, 0 otherwise. See above for restrictions.

INT_MULTIPLY_OVERFLOW (a, b)

Yield 1 if a * b would overflow, 0 otherwise. See above for restrictions.

INT_DIVIDE_OVERFLOW (a, b)

Yield 1 if a / b would overflow, 0 otherwise. See above for restrictions. Division overflow can happen on two’s complement hosts when dividing the most negative integer by −1. This macro does not check for division by zero.

INT_REMAINDER_OVERFLOW (a, b)

Yield 1 if a % b would overflow, 0 otherwise. See above for restrictions. Remainder overflow can happen on two’s complement hosts when dividing the most negative integer by −1; although the mathematical result is always 0, in practice some implementations trap, so this counts as an overflow. This macro does not check for division by zero.

INT_LEFT_SHIFT_OVERFLOW (a, b)

Yield 1 if a << b would overflow, 0 otherwise. See above for restrictions. The C standard says that behavior is undefined for shifts unless 0≤b<w where w is a’s word width, and that when a is negative then a << b has undefined behavior, but this macro does not check these other restrictions.

17.7.6 Integer Range Overflow

These macros yield 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow, and 0 if if the operators do not overflow. They do not rely on undefined or implementation-defined behavior. They are integer constant expressions if their arguments are. Their implementations are simple and straightforward, but they are typically harder to use than the integer type overflow macros. See Section 17.7.5 [Integer Type Overflow], page 799.

Although the implementation of these macros is similar to that suggested in the SEI CERT C Secure Coding Standard, in its two sections “INT30-C. Ensure that unsigned

integer operations do not wrap (https://www.securecoding.cert.org/confluence/
display/c/INT30-C.+Ensure+that+unsigned+integer+operations+do+not+wrap)”

and “INT32-C. Ensure that operations on signed integers do not result in over-

flow  (https://www.securecoding.cert.org/confluence/display/c/INT32-C.
+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow)”,

Gnulib’s implementation was derived independently of CERT’s suggestions.

Example usage:

     #include <intprops.h>
     #include <limits.h>
     #include <stdio.h>
     void
     print_product (long int a, long int b)
     {
       if (INT_MULTIPLY_RANGE_OVERFLOW (a, b, LONG_MIN, LONG_MAX))
         printf ("multiply would overflow");
       else
         printf ("product is %ld", a * b);
     }
     /* Does the product of two ints always fit
        in a long int?  */
     enum {
       INT_PRODUCTS_FIT_IN_LONG
         = ! (INT_MULTIPLY_RANGE_OVERFLOW
              ((long int) INT_MIN, (long int) INT_MIN,
               LONG_MIN, LONG_MAX))
     };

These macros have the following restrictions:

• Their arguments must be integer expressions.

• They may evaluate their arguments zero or multiple times, so the arguments should not have side effects.

• The arithmetic arguments (including the min and max arguments) must be of the same integer type after the usual arithmetic conversions, and the type must have minimum value min and maximum max. Unsigned values should use a zero min of the proper type, for example, (unsigned int) 0.

These macros are tuned for constant min and max. For commutative operations such as a + b, they are also tuned for constant b.

INT_ADD_RANGE_OVERFLOW (a, b, min, max)

Yield 1 if a + b would overflow in [min,max] integer arithmetic, 0 otherwise. See above for restrictions.

INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max)

Yield 1 if a - b would overflow in [min,max] integer arithmetic, 0 otherwise. See above for restrictions.

INT_NEGATE_RANGE_OVERFLOW (a, min, max)

Yield 1 if -a would overflow in [min,max] integer arithmetic, 0 otherwise. See above for restrictions.

INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)

Yield 1 if a * b would overflow in [min,max] integer arithmetic, 0 otherwise. See above for restrictions.

INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)

Yield 1 if a / b would overflow in [min,max] integer arithmetic, 0 otherwise. See above for restrictions. Division overflow can happen on two’s complement hosts when dividing the most negative integer by −1. This macro does not check for division by zero.

INT_REMAINDER_RANGE_OVERFLOW (a, b, min, max)

Yield 1 if a % b would overflow in [min,max] integer arithmetic, 0 otherwise. See above for restrictions. Remainder overflow can happen on two’s complement hosts when dividing the most negative integer by −1; although the mathematical result is always 0, in practice some implementations trap, so this counts as an overflow. This macro does not check for division by zero.

INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, min, max)

Yield 1 if a << b would overflow in [min,max] integer arithmetic, 0 otherwise. See above for restrictions. Here, min and max are for a only, and b need not be of the same type as the other arguments. The C standard says that behavior is undefined for shifts unless 0≤b<w where w is a’s word width, and that when a is negative then a << b has undefined behavior, but this macro does not check these other restrictions.

17.8 Static inline functions

In order to mark functions as static inline, the only prerequisite you need is an AC_ REQUIRE([AC_C_INLINE]). No Gnulib module is needed.

17.9 Extern inline functions

The extern-inline module supports the use of C99-style extern inline functions so that the code still runs on compilers that do not support this feature correctly.

C code ordinarily should not use inline. Typically it is better to let the compiler figure out whether to inline, as compilers are pretty good about optimization nowadays. In this sense, inline is like register, another keyword that is typically no longer needed.

Functions defined (not merely declared) in headers are an exception, as avoiding inline would commonly cause problems for these functions. Suppose aaa.h defines the function aaa_fun, and aaa.c, bbb.c and ccc.c all include aaa.h. If code is intended to portable to non-C99 compilers, aaa_fun cannot be declared with the C99 inline keyword. This problem cannot be worked around by making aaa_fun an ordinary function, as it would be defined three times with external linkage and the definitions would clash. Although aaa_fun could be a static function, with separate compilation if aaa_fun is not inlined its code will appear in the executable three times.

To avoid this code bloat, aaa.h can do this:

/* aaa.h */
/* #include any other headers here */
#ifndef _GL_INLINE_HEADER_BEGIN
 #error "Please include config.h first."
#endif
_GL_INLINE_HEADER_BEGIN
#ifndef AAA_INLINE
# define AAA_INLINE _GL_INLINE
#endif
...
AAA_INLINE int
aaa_fun (int i)
{
  return i + 1;
}
...
_GL_INLINE_HEADER_END

and aaa.c can do this:

/* aaa.c */
#include <config.h>
#define AAA_INLINE _GL_EXTERN_INLINE
#include <aaa.h>

whereas bbb.c and ccc.c can include aaa.h in the usual way. C99 compilers expand AAA_ INLINE to C99-style inline usage, where aaa_fun is declared extern inline in aaa.c and plain inline in other modules. Non-C99 compilers that are compatible with GCC use GCC-specific syntax to accomplish the same ends. Other non-C99 compilers use static inline so they suffer from code bloat, but they are not mainline platforms and will die out eventually.

_GL_INLINE is a portable alternative to C99 plain inline.

_GL_EXTERN_INLINE is a portable alternative to C99 extern inline.

Invoke _GL_INLINE_HEADER_BEGIN before all uses of _GL_INLINE in an include file. This suppresses some bogus warnings in GCC versions before 5.1. If an include file includes other files, it is better to invoke this macro after including the other files.

Invoke _GL_INLINE_HEADER_END after all uses of _GL_INLINE in an include file.

17.10 Handling closed standard file descriptors

Usually, when a program gets invoked, its file descriptors 0 (for standard input), 1 (for standard output), and 2 (for standard error) are open. But there are situations when some of these file descriptors are closed. These situations can arise when

• The invoking process invokes close() on the file descriptor before exec, or • The invoking process invokes posix_spawn_file_actions_addclose() for the file de-

scriptor before posix_spawn or posix_spawnp, or

• The invoking process is a Bourne shell, and the shell script uses the POSIX syntax for closing the file descriptor: <&- for closing standard input, >&- for closing standard output, or 2>&- for closing standard error.

When a closed file descriptor is accessed through a system call, such as fcntl(), fstat(), read(), or write(), the system calls fails with error EBADF ("Bad file descriptor").

When a new file descriptor is allocated, the operating system chooses the smallest nonnegative integer that does not yet correspond to an open file descriptor. So, when a given fd (0, 1, or 2) is closed, opening a new file descriptor may assign the new file descriptor to this fd. This can have unintended effects, because now standard input/output/error of your process is referring to a file that was not meant to be used in that role.

This situation is a security risk because the behaviour of the program in this situation was surely never tested, therefore anything can happen then – from overwriting precious files of the user to endless loops.

To deal with this situation, you first need to determine whether your program is affected by the problem.

• Does your program invoke functions that allocate new file descriptors? These are the

system calls

  • open(), openat(), creat()
  • dup()
  • fopen(), freopen()
  • pipe(), pipe2(), popen()
  • opendir()
  • tmpfile(), mkstemp(), mkstemps(), mkostemp(), mkostemps()

Note that you also have to consider the libraries that your program uses.

• If your program may open two or more file descriptors or FILE streams for reading at the same time, and some of them may reference standard input, your program is affected.

• If your program may open two or more file descriptors or FILE streams for writing at the same time, and some of them may reference standard output or standard error, your program is affected.

• If your program does not open new file descriptors or FILE streams, it is not affected.

• If your program opens only one new file descriptor or FILE stream at a time, it is not affected. This is often the case for programs that are structured in simple phases: first a phase where input is read from a file into memory, then a phase of processing in memory, finally a phase where the result is written to a file.

• If your program opens only two new file descriptors or FILE streams at a time, out of which one is for reading and the one is for writing, it is not affected. This is because if the first file descriptor is allocated and the second file descriptor is picked as 0, 1, or 2, and both happen to be the same, writing to the one opened in O_RDONLY mode will produce an error EBADF, as desired.

If your program is affected, what is the mitigation?

Some operating systems install open file descriptors in place of the closed ones, either in the exec system call or during program startup. When such a file descriptor is accessed through a system call, it behaves like an open file descriptor opened for the “wrong” direction: the system calls fcntl() and fstat() succeed, whereas read() from fd 0 and write() to fd 1 or 2 fail with error EBADF ("Bad file descriptor"). The important point here is that when your program allocates a new file descriptor, it will have a value greater than 2.

This mitigation is enabled on HP-UX, for all programs, and on glibc, FreeBSD, NetBSD, OpenBSD, but only for setuid or setgid programs. Since it is operating system dependent, it is not a complete mitigation.

For a complete mitigation, Gnulib provides two alternative sets of modules:

• The xstdopen module.

  • The *-safer modules: fcntl-safer, openat-safer, unistd-safer, fopen-safer,
    freopen-safer, pipe2-safer, popen-safer, dirent-safer, tmpfile-safer,
    stdlib-safer.

The approach with the xstdopen module is simpler, but it adds three system calls to program startup. Whereas the approach with the *-safer modules is more complex, but adds no overhead (no additional system calls) in the normal case.

To use the approach with the xstdopen module:

1. Import the module xstdopen from Gnulib.

2. In the compilation unit that contains the main function, include "xstdopen.h".

3. In the main function, near the beginning, namely right after the i18n related initializa-

    tions (setlocale, bindtextdomain, textdomain invocations, if any) and the closeout

initialization (if any), insert the invocation:

           /* Ensure that stdin, stdout, stderr are open.  */
           xstdopen ();

To use the approach with the *-safer modules:

1. Import the relevant modules from Gnulib.

2. In the compilation units that contain these function calls, include the replacement header file.

Do so according to this table:

Function  Module  Header file

open()                 fcntl-safer             "fcntl--.h"
openat()               openat-safer            "fcntl--.h"
creat()                fcntl-safer             "fcntl--.h"
dup()                  unistd-safer            "unistd--.h"
fopen()                fopen-safer             "stdio--.h"
freopen()              freopen-safer           "stdio--.h"
pipe()                 unistd-safer            "unistd--.h"
pipe2()                pipe2-safer             "unistd--.h"
popen()                popen-safer             "stdio--.h"
opendir()              dirent-safer            "dirent--.h"

tmpfile()              tmpfile-safer           "stdio--.h"
mkstemp()              stdlib-safer            "stdlib--.h"
mkstemps()             stdlib-safer            "stdlib--.h"
mkostemp()             stdlib-safer            "stdlib--.h"
mkostemps()            stdlib-safer            "stdlib--.h"

17.11 Handling strings with NUL characters

Strings in C are usually represented by a character sequence with a terminating NUL character. A ‘char *’, pointer to the first byte of this character sequence, is what gets passed around as function argument or return value.

The major restriction of this string representation is that it cannot handle strings that contain NUL characters: such strings will appear shorter than they were meant to be. In most application areas, this is not a problem, and the char * type is well usable.

In areas where strings with embedded NUL characters need to be handled, the common approach is to use a char *ptr pointer variable together with a size_t nbytes variable (or an idx_t nbytes variable, if you want to avoid problems due to integer overflow). This works fine in code that constructs or manipulates strings with embedded NUL characters. But when it comes to storing them, for example in an array or as key or value of a hash table, one needs a type that combines these two fields.

   The Gnulib modules string-desc, xstring-desc, and string-desc-quotearg provide

such a type. We call it a “string descriptor” and name it string_desc_t.

The type string_desc_t is a struct that contains a pointer to the first byte and the number of bytes of the memory region that make up the string. An additional terminating NUL byte, that may be present in memory, is not included in this byte count. This type implements the same concept as std::string_view in C++, or the String type in Java.

A string_desc_t can be passed to a function as an argument, or can be the return value of a function. This is type-safe: If, by mistake, a programmer passes a string_desc_t to a function that expects a char * argument, or vice versa, or assigns a string_desc_t value to a variable of type char *, or vice versa, the compiler will report an error.

Functions related to string descriptors are provided:

• Side-effect-free operations in "string-desc.h",

• Memory-allocating operations in "string-desc.h",

• Memory-allocating operations with out-of-memory checking in "xstring-desc.h",

• Operations with side effects in "string-desc.h".

For outputting a string descriptor, the *printf family of functions cannot be used directly. A format string directive such as "%.*s" would not work:

• it would stop the output at the first encountered NUL character,

• it would require to cast the number of bytes to int, and thus would not work for strings longer than INT_MAX bytes.

Therefore Gnulib offers

• a function string_desc_fwrite that outputs a string descriptor to a FILE stream,

• a function string_desc_write that outputs a string descriptor to a file descriptor, • and for those applications where the NUL characters should become visible as ‘\0’, a

family of quotearg based functions, that allow to specify the escaping rules in detail.

The functionality is thus split across three modules as follows:

• The module string-desc, under LGPL, defines the type and elementary functions.

• The module xstring-desc, under GPL, defines the memory-allocating functions with out-of-memory checking.

• The module string-desc-quotearg, under GPL, defines the quotearg based functions.

17.12 Container data types

Gnulib provides several generic container data types. They can be used to organize collections of application-defined objects.

17.12.1 Ordinary container data types

Data type Details Module Main in- clude file Include file for operations with outof-memory checking

Sequential list Can contain any number of objects in any given order. Duplicates are allowed, but can optionally be forbidden.

                                      list

                                             {"gl_ \atop list.h"}

                                                     "gl_ xlist.h"

Set Can contain any number of objects; the order does not matter. Duplicates (in the sense of the comparator) are forbidden.

                                      set

                                             {"gl_ \atop set.h"}

                                                     {"gl_ \atop xset.h"}

Ordered set Can contain any number of objects in the order of a given comparator function. Duplicates (in the sense of the comparator) are forbidden.

                                      oset

                                             {"gl_ \atop oset.h"}

                                                     "gl_ xoset.h"

Map Can contain any number of (key, value) pairs, where keys and values are objects; there are no (key, value1) and (key, value2) pairs with the same key (in the sense of a given comparator function).

                                      map

                                             {"gl_ \atop map.h"}

                                                     {"gl_ \atop xmap.h"}

Ordered map Can contain any number of (key, value) pairs, where keys and values are objects; the (key, value) pairs are ordered by the key, in the order of a given comparator function; there are no (key, value1) and (key, value2) pairs with the same key (in the sense of the comparator function).

                                      omap

                                             {"gl_ \atop omap.h"}

                                                     "gl_ xomap.h"

Operations without out-of-memory checking (suitable for use in libraries) are declared in the “main include file”. Whereas operations with out-of-memory checking (suitable only in programs) are declared in the “include file for operations with out-of-memory checking”.

For each of the data types, several implementations are available, with different performance profiles with respect to the available operations. This enables you to start with the simplest implementation (ARRAY) initially, and switch to a more suitable implementation after profiling your application. The implementation of each container instance is specified in a single place only: in the invocation of the function gl_*_create_empty that creates the instance.

The implementations and the guaranteed average performance for the operations for the “sequential list” data type are:

Operation ARRAY CARRAY LINKED TREE LINKEDHASH with duplicates LINKEDHASH without duplicates TREEHASH with duplicates

TREEHASH with- out duplicates

gl_list_size  O(1) O(1) O(1) O(1) O(1) O(1) O(1) O(1)

gl_list_node_
value

O(1) O(1) O(1) O(1) O(1) O(1) O(1) O(1)

gl_list_node_
set_value

O(1) O(1) O(1) O(1) O(1) O(1) O((log n)^{2}) O(1)

gl_list_next_
node

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O(log n)

O(log n)

gl_list_
previous_node

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O(log n)

O(log n)

gl_list_first_
node

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O(log n)

O(log n)

gl_list_last_
node

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O(log n)

O(log n)
gl_list_get_at O(1) O(1) O(n) O(log n) O(n) O(n) O(log n) O(log n)

gl_list_get_
first

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O(log n)

O(log n)

gl_list_get_
last

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O(log n)

O(log n)
gl_list_set_at O(1) O(1) O(n) O(log n) O(n) O(n) O((log n)^{2}) O(log n)

gl_list_set_
first

O(1)

O(1)

O(1)

O(log n)

O(n)

O(1)

O((log n)^{2})

O(log n)

gl_list_set_
last

O(1)

O(1)

O(1)

O(log n)

O(n)

O(1)

O((log n)^{2})

O(log n)
gl_list_search O(n) O(n) O(n) O(n) O(n) O(1) O(log n) O(1)

gl_list_search_
from

O(n) O(n) O(n) O(n) O(n) O(1) O((log n)^{2}) O(log n)

gl_list_search_
from_to

O(n) O(n) O(n) O(n) O(n) O(1) O((log n)^{2}) O(log n)

gl_list_indexof O(n) O(n) O(n) O(n) O(n) O(n) O(log n) O(log n)

gl_list_
indexof_from

O(n) O(n) O(n) O(n) O(n) O(n) O((log n)^{2}) O(log n)

gl_list_
indexof_from_to

O(n) O(n) O(n) O(n) O(n) O(n) O((log n)^{2}) O(log n)

gl_list_add_
first

O(n)

O(1)

O(1)

O(log n)

O(1)

O(1)

O((log n)^{2})

O(log n)

gl_list_add_
last

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O((log n)^{2})

O(log n)

gl_list_add_
before

O(n)

O(n)

O(1)

O(log n)

O(1)

O(1)

O((log n)^{2})

O(log n)

gl_list_add_
after

O(n)

O(n)

O(1)

O(log n)

O(1)

O(1)

O((log n)^{2})

O(log n)
gl_list_add_at O(n) O(n) O(n) O(log n) O(n) O(n) O((log n)^{2}) O(log n)

gl_list_remove_
node

O(n)

O(n)

O(1)

O(log n)

O(n)

O(1)

O((log n)^{2})

O(log n)

gl_list_remove_
at

O(n)

O(n)

O(n)

O(log n)

O(n)

O(n)

O((log n)^{2})

O(log n)

gl_list_remove_
first

O(n)

O(1)

O(1)

O(log n)

O(n)

O(1)

O((log n)^{2})

O(log n)

gl_list_remove_
last

O(1)

O(1)

O(1)

O(log n)

O(n)

O(1)

O((log n)^{2})

O(log n)
gl_list_remove O(n) O(n) O(n) O(n) O(n) O(1) O((log n)^{2}) O(log n)
gl_list_ iterator  O(1) O(1) O(1) O(log n) O(1) O(1) O(log n) O(log n)

gl_list_
iterator_from_
to

O(1)

O(1)

O(n)

O(log n)

O(n)

O(n)

O(log n)

O(log n)

gl_list_
iterator_next

O(1)

O(1)

O(1)

O(log n)

O(1)

O(1)

O(log n)

O(log n)

gl_sortedlist_
search

O(log n)

O(log n)

O(n)

O(log n)

O(n)

O(n)

O(log n)

O(log n)

gl_sortedlist_
search_from

O(log n)

O(log n)

O(n)

O(log n)

O(n)

O(n)

O(log n)

O(log n)

gl_sortedlist_
indexof

O(log n)

O(log n)

O(n)

O(log n)

O(n)

O(n)

O(log n)

O(log n)

gl_sortedlist_
indexof_from

O(log n)

O(log n)

O(n)

O(log n)

O(n)

O(n)

O(log n)

O(log n)

gl_sortedlist_
add

O(n)

O(n)

O(n)

O(log n)

O(n)

O(n)

O((log n)^{2})

O(log n)

gl_sortedlist_
remove

O(n)

O(n)

O(n)

O(log n)

O(n)

O(n)

O((log n)^{2})

O(log n)

The implementations and the guaranteed average performance for the operations for the “set” data type are:

Operation  ARRAY  LINKEDHASH, HASH

gl_set_size  O(1)  O(1)
gl_set_add  O(n)  O(1)
gl_set_remove  O(n)  O(1)
gl_set_search  O(n)  O(1)
gl_set_iterator  O(1)  O(1)

gl_set_iterator_next  O(1)  O(1)

The implementations and the guaranteed average performance for the operations for the “ordered set” data type are:

Operation  ARRAY  TREE

gl_oset_size  O(1)  O(1)
gl_oset_add  O(n)  O(log n)
gl_oset_remove  O(n)  O(log n)
gl_oset_search  O(log n)  O(log n)
gl_oset_search_atleast  O(log n)  O(log n)
gl_oset_iterator  O(1)  O(log n)
gl_oset_iterator_next  O(1)  O(log n)

The implementations and the guaranteed average performance for the operations for the “map” data type are:

Operation  ARRAY  LINKEDHASH, HASH

gl_map_size  O(1)  O(1)
gl_map_get  O(n)  O(1)
gl_map_put  O(n)  O(1)
gl_map_remove  O(n)  O(1)
gl_map_search  O(n)  O(1)
gl_map_iterator  O(1)  O(1)
gl_map_iterator_next  O(1)  O(1)

The implementations and the guaranteed average performance for the operations for the “ordered map” data type are:

Operation  ARRAY  TREE

gl_omap_size  O(1)  O(1)

gl_omap_get  O(log n)  O(log n)

gl_omap_put  O(n)  O(log n)
gl_omap_remove  O(n)  O(log n)
gl_omap_search  O(log n)  O(log n)
gl_omap_search_atleast  O(log n)  O(log n)
gl_omap_iterator  O(1)  O(log n)
gl_omap_iterator_next  O(1)  O(log n)

For C++, Gnulib provides a C++ template class for each of these container data types.

Data type  C++ class  Module  Include file

Sequential list  gl_List        list-c++           "gl_list.hh"
Set  gl_Set         set-c++            "gl_set.hh"
Ordered set  gl_OSet        oset-c++           "gl_oset.hh"
Map  gl_Map         map-c++            "gl_map.hh"
Ordered map  gl_OMap        omap-c++           "gl_omap.hh"

17.12.2 Specialized container data types

The hamt module implements the hash array mapped trie (HAMT) data structure. This is a data structure that contains (key, value) pairs. Lookup of a (key, value) pair given the key is on average an O(1) operation, assuming a good hash function for the keys is employed.

The HAMT data structure is useful when you want modifications (additions of pairs, removal, value changes) to be visible only to some part of your program, whereas other parts of the program continue to use the unmodified HAMT. The HAMT makes this possible in a space-efficient manner: the modified and the unmodified HAMT share most of their allocated memory. It is also time-efficient: Every such modification is O(1) on average, again assuming a good hash function for the keys.

A HAMT can be used whenever an ordinary hash table would be used. It does however, provide non-destructive updating operations without the need to copy the whole container. On the other hand, a hash table is simpler so that its performance may be better when non-destructive update operations are not needed.

For example, a HAMT can be used to model the dynamic environment in a LISP interpreter. Updating a value in the dynamic environment of one continuation frame would not modify values in earlier frames.

To use the module, include hamt.h in your code. The public interface is documented in that header file. You have to provide a hash function and an equivalence relation, which defines key equality. The module includes a test file test-hamt.c, which demonstrates how the API can be used.

In the current implementation, each inner node of the HAMT can store up to 32 = 2^{5} entries and subtries. Whenever a collision between the initial bits of the hash values of two entries would happen, the next 5 bits of the hash values are examined and the two entries pushed down one level in the trie.

HAMTs have the same average access times as hash tables but grow and shrink dynamically, so they use memory more economically and do not have to be periodically resized.

They were described and analyzed in Phil Bagwell (2000). Ideal Hash Trees (Report). Infoscience Department, École Polytechnique Fédérale de Lausanne.

The persistence aspect of the HAMT data structure, which means that each updating operation (like inserting, replacing, or removing an entry) returns a new HAMT while leaving the original one intact, is achieved through structure sharing, which is even safe in the presence of multiple threads when the used C compiler supports atomics.

17.13 Recognizing Option Arguments

The module ‘argmatch’ provides a simple textual user interface to a finite choice. It is for example well suited to recognize arguments of options or values of environment variables that accept a fixed set of valid choices.

These choices may be denoted by synonyms, such as ‘none’ and ‘off’ below.

      $ my_cp --backup=none foo bar
      $ my_cp --backup=non foo bar
      $ my_cp --backup=no foo bar
      $ my_cp --backup=n foo bar
      my_cp: ambiguous argument 'n' for 'backup type'
      Valid arguments are:
        - 'no', 'none', 'off'
        - 'numbered', 't', 'newstyle'
        - 'existing', 'nil', 'numbered-existing'
        - 'simple', 'never', 'single'
      Try 'my_cp --help' for more information.
      $ my_cp --backup=num foo bar

$ my_cp --backup=true foo bar
my_cp: invalid argument 'true' for 'backup type'
Valid arguments are:
- 'no', 'none', 'off'
- 'numbered', 't', 'newstyle'
- 'existing', 'nil', 'numbered-existing'
- 'simple', 'never', 'single'
Try 'my_cp --help' for more information.
To set up argmatch, first call ‘ARGMATCH_DEFINE_GROUP (name, type)’ with the name

of the argmatch group name, and the value type. For instance:

enum backup_type
{
no_backups,
simple_backups,
numbered_existing_backups,
numbered_backups
};
ARGMATCH_DEFINE_GROUP (backup, enum backup_type);

This defines a few types and functions named argmatch_name_*. Introduce the array that defines the mapping from user-input to actual value, with a terminator:

static const argmatch_backup_arg argmatch_backup_args[] =
{
{ "no",                no_backups },
{ "none",              no_backups },
{ "off",               no_backups },
{ "simple",            simple_backups },
{ "never",             simple_backups },
{ "single",            simple_backups },
{ "existing",          numbered_existing_backups },
{ "nil",               numbered_existing_backups },
{ "numbered-existing", numbered_existing_backups },
{ "numbered",          numbered_backups },
{ "t",                 numbered_backups },
{ "newstyle",          numbered_backups },
{ NULL, no_backups }
};

Then introduce the array that defines the values, also with a terminator. Document only once per group of synonyms:

static const argmatch_backup_doc argmatch_backup_docs[] =
{
{ "no",       N_("never make backups (even if --backup is given)") },
{ "numbered", N_("make numbered backups") },
{ "existing", N_("numbered if numbered backups exist, simple otherwise") },
{ "simple",   N_("always make simple backups") },
{ NULL, NULL }
};

Finally, define the argmatch group:

const argmatch_backup_group_type argmatch_backup_group =

Chapter 17: Particular Modules 813

{
  argmatch_backup_args,
  argmatch_backup_docs,
  N_("\
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
The version control method may be selected via the --backup option or through\n\
the VERSION_CONTROL environment variable.  Here are the values:\n"),
  NULL
};

To use the argmatch group:

ptrdiff_t i = argmatch_backup_choice ("--backup", "none");
// argmatch_backup_group.args[i].arg is "none", so its value
// is argmatch_backup_group.args[i].val.
// Return -1 on invalid argument, and -2 on ambiguity.
enum backup_type val = *argmatch_backup_value ("--backup", "none");
// Returns a pointer to the value, and exit on errors.
// So argmatch_backup_group.args[i].val == val.
const char *arg = argmatch_backup_argument (&no_backups);
// arg is "no".
// Print the documentation on stdout.
argmatch_backup_usage (stdout);
// Gives:
//
// The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
// The version control method may be selected via the --backup option or through
// the VERSION_CONTROL environment variable.  Here are the values:
//
//   no, none, off  never make backups (even if --backup is given)
//   numbered, t, newstyle
//                  make numbered backups
//   existing, nil, numbered-existing
//                  numbered if numbered backups exist, simple otherwise
//   simple, never, single
//                  always make simple backups

17.14 Quoting

Gnulib provides ‘quote’ and ‘quotearg’ modules to help with quoting text, such as file names, in messages to the user. Here’s an example of using ‘quote’:

#include <quote.h>
 ...
  error (0, errno, _("cannot change owner of %s"), quote (fname));

This differs from

  error (0, errno, _("cannot change owner of '%s'"), fname);

in that quote escapes unusual characters in fname, e.g., ‘'’ and control characters like ‘\n’.

However, a caveat: quote reuses the storage that it returns. Hence if you need more than one thing quoted at the same time, you need to use quote_n.

Also, the quote module is not suited for multithreaded applications. In that case, you have to use quotearg_alloc, defined in the ‘quotearg’ module, which is decidedly less convenient.

17.15 progname and getprogname

Gnulib has two modules for retrieving the name of the currently executing program:

progname and getprogname.

The progname module defines a variable program_name. It contains the name of the currently executing program, on all platforms. But it cannot be used implicitly: It requires that every main function be modified to invoke set_program_name (argv[0]) as one of its first actions.

The getprogname module defines a function getprogname(). It returns the name of the currently executing program, on most platforms. The advantage of this module is that it can be used without prior initializations. But it has limitations: In some rare situations, it cannot determine the name; then it returns "?" instead. And on some platforms, it returns a truncated program name.

The error function uses the getprogname module.

17.16 gcd: greatest common divisor

The gcd function returns the greatest common divisor of two numbers a > 0 and b > 0. It is the caller’s responsibility to ensure that the arguments are non-zero.

If you need a gcd function for an integer type larger than ‘unsigned long’, you can include the gcd.c implementation file with parametrization. The parameters are:

• WORD T Define this to the unsigned integer type that you need this function for.

• GCD Define this to the name of the function to be created.

The created function has the prototype

      WORD_T GCD (WORD_T a, WORD_T b);

If you need the least common multiple of two numbers, it can be computed like this:

lcm(a,b) = (a / gcd(a,b)) * b or lcm(a,b) = a * (b / gcd(a,b)). Avoid the formula

lcm(a,b) = (a * b) / gcd(a,b) because—although mathematically correct—it can yield a wrong result, due to integer overflow.

In some applications it is useful to have a function taking the gcd of two signed numbers. In this case, the gcd function result is usually normalized to be non-negative (so that two gcd results can be compared in magnitude or compared against 1, etc.). Note that in this case the prototype of the function has to be

      unsigned long gcd (long a, long b);

and not

      long gcd (long a, long b);
   because gcd(LONG_MIN,LONG_MIN) = -LONG_MIN = LONG_MAX + 1 does not fit into a

signed ‘long’.

Chapter 17: Particular Modules 815

17.17 Profiling of program phases

The module ‘timevar’ provides a simple self-profiling facility, based on timers.

Execution times (seconds)
read                  :   0.09 (19%) usr   0.08 (80%) sys   0.09 (18%) wall
read: scan            :   0.04 ( 9%) usr   0.08 (80%) sys   0.12 (26%) wall
read: parse           :   0.05 (10%) usr   0.00 ( 0%) sys   0.05 (10%) wall
work                  :   0.33 (70%) usr   0.00 ( 0%) sys   0.35 (71%) wall
work: phase 1         :   0.30 (64%) usr   0.00 ( 0%) sys   0.30 (64%) wall
work: phase 2         :   0.13 (28%) usr   0.00 ( 0%) sys   0.14 (29%) wall
output                :   0.04 ( 9%) usr   0.02 (20%) sys   0.04 ( 8%) wall
total time            :   0.47             0.10             0.49

To set up timevar, copy the stub file gnulib/lib/timevar.def next to where timevar.h and timevar.c were imported in your project, and define your timers there. For instance:

/* The total execution time.  Mandatory.  */
DEFTIMEVAR (tv_total,      "total time")
/* Examples.  */
DEFTIMEVAR (tv_read,       "read")
DEFTIMEVAR (tv_work,       "work")
DEFTIMEVAR (tv_work_1,     "work: phase 1")
DEFTIMEVAR (tv_work_2,     "work: phase 2")
DEFTIMEVAR (tv_output,     "output")

Do not remove tv_total, it is mandatory. You may change its associated string.

Use timevar_push/timevar_pop to start/stop timers, as in the following example.

#include <config.h>
#include "timevar.h"
#include <stdio.h>
#include "read.h"
#include "work.h"
#include "output.h"
int
main (void)
{
  timevar_enabled = true;
  timevar_init ();
  timevar_start (tv_total);
  timevar_push (tv_read);
  reader ();
  timevar_pop (tv_read);
  timevar_push (tv_work);
  work ();
  timevar_pop (tv_work);
  timevar_push (tv_output);
  output ();
  timevar_pop (tv_output);
  timevar_stop (tv_total);
  timevar_print (stderr);

      }

with, for instance, in work.c

      #include <config.h>
      #include "work.h"
      void
      work (void)
      {
        timevar_push (tv_work_phase1);
        work1 ();
        timevar_pop (tv_work_phase1);
        timevar_push (tv_work_phase2);
        work2 ();
        timevar_pop (tv_work_phase2);
      }

17.18 Library version handling

The module ‘check-version’ can be useful when your gnulib application is a system library. You will typically wrap the call to the check_version function through a library API, your library header file may contain:

     #define STRINGPREP_VERSION "0.5.18"
     ...
       extern const char *stringprep_check_version (const char *req_version);

To avoid ELF symbol collisions with other libraries that use the ‘check-version’ module, add to config.h through a AC DEFINE something like:

     AC_DEFINE(check_version, stringprep_check_version,
               [Rename check_version.])

The stringprep_check_version function will thus be implemented by the check_

version module.

There are two uses of the interface. The first is a way to provide for applications to find out the version number of the library it uses. The application may contain diagnostic code such as:

       printf ("Stringprep version: header %s library %s",
               STRINGPREP_VERSION,
               stringprep_check_version (NULL));

Separating the library and header file version can be useful when searching for version mismatch related problems.

The second uses is as a rudimentary test of proper library version, by making sure the application get a library version that is the same, or newer, than the header file used when building the application. This doesn’t catch all problems, libraries may change backwards incompatibly in later versions, but enable applications to require a certain minimum version before it may proceed.

Typical uses look like:

            /* Check version of libgcrypt. */
            if (!gcry_check_version (GCRYPT_VERSION))
              die ("version mismatch\n");

17.19 Supporting Relocation

It has been a pain for many users of GNU packages for a long time that packages are not relocatable. It means a user cannot copy a program, installed by another user on the same machine, to his home directory, and have it work correctly (including i18n). So many users need to go through configure; make; make install with all its dependencies, options, and hurdles.

Red Hat, Debian, and other binary distributions solve the “ease of installation” problem, but they hardwire path names, usually to /usr or /usr/local. This means that users need root privileges to install a binary package, and prevents installing two different versions of the same binary package.

A relocatable program can be moved or copied to a different location on the file system. It is possible to make symlinks to the installed and moved programs, and invoke them through the symlink. It is possible to do the same thing with a hard link only if the hard link file is in the same directory as the real program.

The relocatable-prog module aims to ease the process of making a GNU program relocatable. It helps overcome two obstacles. First, it aids with relocating the hard-coded references to absolute file names that GNU programs often contain. These references must be fixed up at runtime if a program is to be successfully relocated. The relocatable-prog module provides a function relocate that does this job.

Second, the loader must be able to find shared libraries linked to relocatable executables or referenced by other shared libraries linked to relocatable executables. The relocatableprog module helps out here in a platform-specific way:

• On most operating systems, it adds a linker option (-rpath) that causes the dynamic linker to search for libraries in a directory relative to the location of the invoked executable. This works on GNU/Linux and modern versions of GNU/Hurd, GNU/kFreeBSD, macOS, FreeBSD, NetBSD, OpenBSD, Solaris, Haiku.

• On other Unix systems, it installs a trampoline executable. The trampoline sets the environment variable that controls shared library searching (usually LD_LIBRARY_PATH) and then invokes the real executable. This applies to operating systems such as AIX, HP-UX, or Minix.

• On Windows, the executable’s own directory is searched for libraries, so installing shared libraries into the executable’s directory is sufficient.

You can make your program relocatable by following these steps:

1. Import the relocatable-prog module. For libraries, use the relocatable-lib or relocatable-lib-lgpl module, if the libraries are independent. For installing multiple libraries, at least one of which depends on another one, use the relocatable-prog module. If you need more than one module, or you need to use them with different settings, you will need multiple copies of gnulib (see Section 3.10 [Multiple instances], page 30).

2. In every program, add to main as the first statement (even before setting the locale or

doing anything related to libintl):

         set_program_name (argv[0]);

The prototype for this function is in progname.h.

3. If you want your code to be portable to platforms that do not support automatic

initialization, call set_relocation_prefix.

4. Everywhere where you use a constant pathname from installation-time, wrap it in relocate so it gets translated to the run-time situation. Example:

     bindtextdomain (PACKAGE, LOCALEDIR);

becomes:

     bindtextdomain (PACKAGE, relocate (LOCALEDIR));

The prototype for this function is in relocatable.h. There is also a variant of this function, named relocate2, that makes it easy to reclaim the memory allocated by the call.

5. The set_program_name function can also configure some additional libraries to relocate files that they access, by defining corresponding C preprocessor symbols to 1. The libraries for which this is supported and the corresponding preprocessor symbols are:

libcharset DEPENDS_ON_LIBCHARSET
libiconv DEPENDS_ON_LIBICONV
libintl  DEPENDS_ON_LIBINTL

Defining the symbol for a library makes every program in the package depend on that library, whether the program really uses the library or not, so this feature should be used with some caution.

6. If your package installs shell scripts, also import the relocatable-script module. Then, near the beginning of each shell script that your package installs, add the following:

      @relocatable_sh@
      prefix="@prefix@"
      exec_prefix="@exec_prefix@"   # usually needs $prefix.
      datarootdir="@datarootdir@"   # usually needs $prefix.
      if test "@RELOCATABLE@" = yes; then
        bindir="@bindir@"
        orig_installdir="$bindir" # see Makefile.am's *_SCRIPTS variables
        func_find_curr_installdir # determine curr_installdir
        func_find_prefixes
        relocate () {
          echo "$1/" \
          | sed -e "s%^${orig_installprefix}/%${curr_installprefix}/%" \
          | sed -e 's,/$,,'
        }
      else
        relocate () {
          echo "$1"
        }
      fi
      # Get some relocated directory names.
      sysconfdir=` relocate "@sysconfdir@"` # usually needs $prefix.
      some_datadir=` relocate "@datadir@/something"` # usually needs $datarootdir.
      bindir=` relocate "@bindir@"` # usually needs $exec_prefix, hence $prefix.

You must adapt the definition of orig_installdir, depending on where the script gets installed. Also, at the end, instead of sysconfdir and some_datadir, transform those variables that you need.

7. If your package installs Perl scripts, also import the relocatable-perl module. Then,

near the beginning of each Perl script that your package installs, add the following:

      @relocatable_pl@
      if ("@RELOCATABLE@" eq "yes") {
        my $exec_prefix = "@exec_prefix@";
        my $orig_installdir = "@bindir@"; # see Makefile.am's *_SCRIPTS variables
        my ($orig_installprefix, $curr_installprefix) =
          find_prefixes($orig_installdir, find_curr_installdir());
        # the subroutine is defined whether or not the enclosing block is executed
        sub relocate {
          my ($dir) = @_;
          if ("@RELOCATABLE@" eq "yes") {
            $dir =~ s%^$orig_installprefix/%$curr_installprefix/%;
            $dir =~ s,/$,,;
          }
          return $dir;
        }
      }
      # Get some relocated directory names.
      # (The gnulib module 'configmake' can help with this.)
      $sysconfdir = relocate("@sysconfdir@");
      $some_datadir = relocate(@datadir@/something");

You must adapt the definition of $orig_installdir, depending on where the script gets installed. Also, at the end, instead of sysconfdir and some_datadir, transform those variables that you need.

8. In your Makefile.am, for every program foo that gets installed in, say, $(bindir),

you add:

     foo_CPPFLAGS = -DINSTALLDIR=\"$(bindir)\"
     if RELOCATABLE_VIA_LD
     foo_LDFLAGS = ` $(RELOCATABLE_LDFLAGS) $(bindir)`
     endif

When building gnulib to use with a relocatable library, you need to define the preprocessor symbol IN_LIBRARY. You may also want to build with ENABLE_COSTLY_ RELOCATABLE, in which case you will also need to define INSTALLDIR. The following fragment can be added to an override Makefile.am used to build gnulib (see Section 3.8 [Modified build rules], page 28).

     AM_CPPFLAGS += -DIN_LIBRARY -DENABLE_COSTLY_RELOCATABLE
     if SHLIBS_IN_BINDIR
     AM_CPPFLAGS += -DINSTALLDIR=\"$(bindir)\"
     else
     AM_CPPFLAGS += -DINSTALLDIR=\"$(libdir)\"
     endif
SHLIBS_IN_BINDIR is defined in configure.ac as follows:
      AM_CONDITIONAL([SHLIBS_IN_BINDIR],

                          [case "$host_os" in mingw* | cygwin*) true;; *) false;; esac])

9. In your Makefile.am, for every library libfoo that gets installed in, say, $(libdir),

you add:

         if RELOCATABLE_VIA_LD
         libfoo_la_LDFLAGS = ` $(RELOCATABLE_LDFLAGS) $(libdir)`
         endif

10. Add a couple of variable assignments to your Makefile.am. If your package (or any package you rely on, e.g. gettext-runtime) will be relocated together with a set of installed shared libraries, then set RELOCATABLE_LIBRARY_PATH to a colon-separated list of those libraries’ directories, e.g.

         RELOCATABLE_LIBRARY_PATH = $(libdir)
    If your config.h is not in $(top_builddir), then set RELOCATABLE_CONFIG_H_DIR to

its directory, e.g.

         RELOCATABLE_CONFIG_H_DIR = $(top_builddir)/src

17.20 func

The func module makes sure that you can use the predefined identifier __func__as defined by C99 in your code.

A small example is:

      #include <config.h>
      #include <stdio.h> /* for printf */
      int main (void)
      {
          printf ("%s: hello world\n", __func__);
      }

Note that sizeof cannot be applied to __func__: On SunPRO C compiler, sizeof __func__evaluates to 0.

17.21 stat-size

The stat-size module provides a small number of macros intended for interpreting the file size information in an instance of struct stat.

On POSIX systems, the st_blocks member of struct stat contains the number of disk blocks occupied by a file. The ST_NBLOCKS and STP_NBLOCKS macros estimate this quantity on systems which don’t actually have st_blocks. Each of these blocks contains

ST_NBLOCKSIZE bytes.

The value of ST_NBLOCKSIZE is often quite small, small enough that performing I/O in chunks that size would be inefficient. The ST_BLKSIZE and STP_BLKSIZE macros give the I/O block size recommended for I/O to this file. This is not guaranteed to give optimum performance, but it should be reasonably efficient.

18 Regular expressions

18.1 Overview

A regular expression (or regexp, or pattern) is a text string that describes some (mathematical) set of strings. A regexp r matches a string s if s is in the set of strings described by r.

Using the Regex library, you can:

• see if a string matches a specified pattern as a whole, and

• search within a string for a substring matching a specified pattern.

Some regular expressions match only one string, i.e., the set they describe has only one member. For example, the regular expression ‘foo’ matches the string ‘foo’ and no others. Other regular expressions match more than one string, i.e., the set they describe has more than one member. For example, the regular expression ‘f*’ matches the set of strings made up of any number (including zero) of ‘f’s. As you can see, some characters in regular expressions match themselves (such as ‘f’) and some don’t (such as ‘*’); the ones that don’t match themselves instead let you specify patterns that describe many different strings.

To either match or search for a regular expression with the Regex library functions, you must first compile it with a Regex pattern compiling function. A compiled pattern is a regular expression converted to the internal format used by the library functions. Once you’ve compiled a pattern, you can use it for matching or searching any number of times.

The Regex library is used by including regex.h. Regex provides three groups of functions with which you can operate on regular expressions. One group—the GNU group—is more powerful but not completely compatible with the other two, namely the POSIX and Berkeley Unix groups; its interface was designed specifically for GNU.

We wrote this chapter with programmers in mind, not users of programs—such as Emacs—that use Regex. We describe the Regex library in its entirety, not how to write regular expressions that a particular program understands.

18.2 Regular Expression Syntax

Characters are things you can type. Operators are things in a regular expression that match one or more characters. You compose regular expressions from operators, which in turn you specify using one or more characters.

Most characters represent what we call the match-self operator, i.e., they match themselves; we call these characters ordinary. Other characters represent either all or parts of fancier operators; e.g., ‘.’ represents what we call the match-any-character operator (which, no surprise, matches (almost) any character); we call these characters special. Two different things determine what characters represent what operators:

1. the regular expression syntax your program has told the Regex library to recognize, and

2. the context of the character in the regular expression.

In the following sections, we describe these things in more detail.

18.2.1 Syntax Bits

In any particular syntax for regular expressions, some characters are always special, others are sometimes special, and others are never special. The particular syntax that Regex recognizes for a given regular expression depends on the current syntax (as set by re_set_syntax) when the pattern buffer of that regular expression was compiled.

You get a pattern buffer by compiling a regular expression. See Section 18.6.1.1 [GNU Pattern Buffers], page 836, for more information on pattern buffers. See Section 18.6.1.2 [GNU Regular Expression Compiling], page 836, and Section 18.6.2.1 [BSD Regular Expression Compiling], page 843, for more information on compiling.

Regex considers the current syntax to be a collection of bits; we refer to these bits as syntax bits. In most cases, they affect what characters represent what operators. We describe the meanings of the operators to which we refer in Section 18.3 [Common Operators], page 827, and Section 18.4 [GNU Operators], page 835.

For reference, here is the complete list of syntax bits, in alphabetical order:

RE_BACKSLASH_ESCAPE_IN_LISTS

If this bit is set, then ‘\’ inside a list (see Section 18.3.6 [List Operators], page 830) quotes (makes ordinary, if it’s special) the following character; if this bit isn’t set, then ‘\’ is an ordinary character inside lists. (See Section 18.2.4 [The Backslash Character], page 826, for what ‘\’ does outside of lists.)

RE_BK_PLUS_QM

If this bit is set, then ‘\+’ represents the match-one-or-more operator and ‘\?’ represents the match-zero-or-more operator; if this bit isn’t set, then ‘+’ represents the match-one-or-more operator and ‘?’ represents the match-zero-or-one operator. This bit is irrelevant if RE_LIMITED_OPS is set.

RE_CHAR_CLASSES

If this bit is set, then you can use character classes in lists; if this bit isn’t set, then you can’t.

RE_CONTEXT_INDEP_ANCHORS

If this bit is set, then ‘^’ and ‘$’ are special anywhere outside a list; if this bit isn’t set, then these characters are special only in certain contexts. See Section 18.3.9.1 [Match-beginning-of-line Operator], page 834, and Section 18.3.9.2 [Match-end-of-line Operator], page 834.

RE_CONTEXT_INDEP_OPS

If this bit is set, then certain characters are special anywhere outside a list; if this bit isn’t set, then those characters are special only in some contexts and are ordinary elsewhere. Specifically, if this bit isn’t set then ‘*’, and (if the syntax bit RE_LIMITED_OPS isn’t set) ‘+’ and ‘?’ (or ‘\+’ and ‘\?’, depending on the syntax bit RE_BK_PLUS_QM) represent repetition operators only if they’re not first in a regular expression or just after an open-group or alternation operator. The same holds for ‘{’ (or ‘\{’, depending on the syntax bit RE_NO_BK_BRACES) if it is the beginning of a valid interval and the syntax bit RE_INTERVALS is set.

RE_CONTEXT_INVALID_DUP

If this bit is set, then an open-interval operator cannot occur at the start of a regular expression, or immediately after an alternation, open-group or closeinterval operator.

RE_CONTEXT_INVALID_OPS

If this bit is set, then repetition and alternation operators can’t be in certain positions within a regular expression. Specifically, the regular expression is invalid if it has:

• a repetition operator first in the regular expression or just after a matchbeginning-of-line, open-group, or alternation operator; or

• an alternation operator first or last in the regular expression, just before a match-end-of-line operator, or just after an alternation or open-group operator.

If this bit isn’t set, then you can put the characters representing the repetition and alternation characters anywhere in a regular expression. Whether or not they will in fact be operators in certain positions depends on other syntax bits.

RE_DEBUG If this bit is set, and the regex library was compiled with -DDEBUG, then internal debugging is turned on; if unset, then it is turned off.

RE_DOT_NEWLINE

If this bit is set, then the match-any-character operator matches a newline; if this bit isn’t set, then it doesn’t.

RE_DOT_NOT_NULL

If this bit is set, then the match-any-character operator doesn’t match a null character; if this bit isn’t set, then it does.

RE_HAT_LISTS_NOT_NEWLINE

If this bit is set, nonmatching lists ‘[^...]’ do not match newline; if not set, they do.

RE_ICASE If this bit is set, then ignore case when matching; otherwise, case is significant.

RE_INTERVALS

If this bit is set, then Regex recognizes interval operators; if this bit isn’t set, then it doesn’t.

RE_INVALID_INTERVAL_ORD

If this bit is set, a syntactically invalid interval is treated as a string of ordinary characters. For example, the extended regular expression ‘a{1’ is treated as

‘a\{1’.
RE_LIMITED_OPS

If this bit is set, then Regex doesn’t recognize the match-one-or-more, matchzero-or-one or alternation operators; if this bit isn’t set, then it does.

RE_NEWLINE_ALT

If this bit is set, then newline represents the alternation operator; if this bit isn’t set, then newline is ordinary.

RE_NO_BK_BRACES

If this bit is set, then ‘{’ represents the open-interval operator and ‘}’ represents the close-interval operator; if this bit isn’t set, then ‘\{’ represents the openinterval operator and ‘\}’ represents the close-interval operator. This bit is relevant only if RE_INTERVALS is set.

RE_NO_BK_PARENS

If this bit is set, then ‘(’ represents the open-group operator and ‘)’ represents the close-group operator; if this bit isn’t set, then ‘\(’ represents the open-group operator and ‘\)’ represents the close-group operator.

RE_NO_BK_REFS

If this bit is set, then Regex doesn’t recognize ‘\’digit as the back-reference operator; if this bit isn’t set, then it does.

RE_NO_BK_VBAR

If this bit is set, then ‘|’ represents the alternation operator; if this bit isn’t set, then ‘\|’ represents the alternation operator. This bit is irrelevant if RE_

LIMITED_OPS is set.
RE_NO_EMPTY_RANGES

If this bit is set, then a regular expression with a range whose ending point collates lower than its starting point is invalid; if this bit isn’t set, then Regex considers such a range to be empty.

RE_NO_GNU_OPS

If this bit is set, GNU regex operators are not recognized; otherwise, they are.

RE_NO_POSIX_BACKTRACKING

If this bit is set, succeed as soon as we match the whole pattern, without further backtracking. This means that a match may not be the leftmost longest; see Section 18.5 [What Gets Matched?], page 836, for what this means.

RE_NO_SUB

If this bit is set, then no_sub will be set to one during re_compile_pattern. This causes matching and searching routines not to record substring match information.

RE_UNMATCHED_RIGHT_PAREN_ORD

If this bit is set and the regular expression has no matching open-group operator, then Regex considers what would otherwise be a close-group operator (based on how RE_NO_BK_PARENS is set) to match ‘)’.

18.2.2 Predefined Syntaxes

If you’re programming with Regex, you can set a pattern buffer’s (see Section 18.6.1.1 [GNU Pattern Buffers], page 836) syntax either to an arbitrary combination of syntax bits (see Section 18.2.1 [Syntax Bits], page 822) or else to the configurations defined by Regex. These configurations define the syntaxes used by certain programs—GNU Emacs, POSIX Awk, traditional Awk, Grep, Egrep—in addition to syntaxes for POSIX basic and extended regular expressions.

The predefined syntaxes—taken directly from regex.h—are:

#define RE_SYNTAX_EMACS 0

Chapter 18: Regular expressions 825

#define RE_SYNTAX_AWK                                                   \
(RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL                       \
| RE_NO_BK_PARENS            | RE_NO_BK_REFS                         \
| RE_NO_BK_VBAR               | RE_NO_EMPTY_RANGES                   \
| RE_UNMATCHED_RIGHT_PAREN_ORD)
#define RE_SYNTAX_POSIX_AWK                                             \
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
#define RE_SYNTAX_GREP                                                  \
(RE_BK_PLUS_QM              | RE_CHAR_CLASSES                         \
| RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS                            \
| RE_NEWLINE_ALT)
#define RE_SYNTAX_EGREP                                                 \
(RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS                    \
| RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE                    \
| RE_NEWLINE_ALT       | RE_NO_BK_PARENS                             \
| RE_NO_BK_VBAR)
#define RE_SYNTAX_POSIX_EGREP                                           \
(RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff.  */
#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
/* Syntax bits common to both basic and extended POSIX regex syntax.  */
#define _RE_SYNTAX_POSIX_COMMON                                         \
(RE_CHAR_CLASSES | RE_DOT_NEWLINE      | RE_DOT_NOT_NULL              \
| RE_INTERVALS  | RE_NO_EMPTY_RANGES)
#define RE_SYNTAX_POSIX_BASIC                                           \
(_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
RE_LIMITED_OPS, i.e., \? \+ \| are not recognized.  Actually, this
isn't minimal, since other operators, such as \` , aren't disabled.  */
#define RE_SYNTAX_POSIX_MINIMAL_BASIC                                   \
(_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
#define RE_SYNTAX_POSIX_EXTENDED                                        \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS                   \
| RE_CONTEXT_INDEP_OPS  | RE_NO_BK_BRACES                            \
| RE_NO_BK_PARENS       | RE_NO_BK_VBAR                              \
| RE_UNMATCHED_RIGHT_PAREN_ORD)
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added.  */
#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED                                \
(_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS                  \
| RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES                           \
| RE_NO_BK_PARENS        | RE_NO_BK_REFS                             \
| RE_NO_BK_VBAR          | RE_UNMATCHED_RIGHT_PAREN_ORD)

18.2.3 Collating Elements vs. Characters

POSIX generalizes the notion of a character to that of a collating element. It defines a collating element to be “a sequence of one or more bytes defined in the current collating sequence as a unit of collation.”

This generalizes the notion of a character in two ways. First, a single character can map into two or more collating elements. For example, the German “ß” collates as the collating element ‘s’ followed by another collating element ‘s’. Second, two or more characters can map into one collating element. For example, the Czech ‘ch’ collates after ‘h’ and before ‘i’.

Since POSIX’s “collating element” preserves the essential idea of a “character,” we use the latter, more familiar, term in this document.

18.2.4 The Backslash Character

The ‘\’ character has one of four different meanings, depending on the context in which you use it and what syntax bits are set (see Section 18.2.1 [Syntax Bits], page 822). It can:

1) stand for itself, 2) quote the next character, 3) introduce an operator, or 4) do nothing.

1. It stands for itself inside a list (see Section 18.3.6 [List Operators], page 830) if the syntax bit RE_BACKSLASH_ESCAPE_IN_LISTS is not set. For example, ‘[\]’ would match ‘\’.

2. It quotes (makes ordinary, if it’s special) the next character when you use it either: • outside a list,^{1} or

• inside a list and the syntax bit RE_BACKSLASH_ESCAPE_IN_LISTS is set.

3. It introduces an operator when followed by certain ordinary characters—sometimes only when certain syntax bits are set. See the cases RE_BK_PLUS_QM, RE_NO_BK_BRACES, RE_ NO_BK_VAR, RE_NO_BK_PARENS, RE_NO_BK_REF in Section 18.2.1 [Syntax Bits], page 822. Also:

• ‘\b’ represents the match-word-boundary operator (see Section 18.4.1.1 [Matchword-boundary Operator], page 835).

• ‘\B’ represents the match-within-word operator (see Section 18.4.1.2 [Match-within-word Operator], page 835).

• ‘\<’ represents the match-beginning-of-word operator (see Section 18.4.1.3 [Match-beginning-of-word Operator], page 835).

• ‘\>’ represents the match-end-of-word operator (see Section 18.4.1.4 [Match-end-of-word Operator], page 835).

• ‘\w’ represents the match-word-constituent operator (see Section 18.4.1.5 [Matchword-constituent Operator], page 835).

1 Sometimes you don’t have to explicitly quote special characters to make them ordinary. For instance,

most characters lose any special meaning inside a list (see Section 18.3.6 [List Operators], page 830). In

addition, if the syntax bits RE_CONTEXT_INVALID_OPS and RE_CONTEXT_INDEP_OPS aren’t set, then (for

historical reasons) the matcher considers special characters ordinary if they are in contexts where the

operations they represent make no sense; for example, then the match-zero-or-more operator (represented

by ‘*’) matches itself in the regular expression ‘*foo’ because there is no preceding expression on which

it can operate. It is poor practice, however, to depend on this behavior; if you want a special character

to be ordinary outside a list, it’s better to always quote it, regardless.

• ‘\W’ represents the match-non-word-constituent operator (see Section 18.4.1.6 [Match-non-word-constituent Operator], page 835).

• ‘\sclass’ is equivalent to [[:space:]] (see Section 18.4.2.1 [Match-space Operator], page 835).

• ‘\Sclass’ is equivalent to [^[:space]] (see Section 18.4.2.2 [Match-non-space Operator], page 835).

• ‘\` ’ represents the match-beginning-of-string operator and ‘\'’ represents the match-end-of-string operator (see Section 18.4.3 [Whole-string Operators], page 835).

4. In all other cases, Regex ignores ‘\’. For example, ‘\n’ matches ‘n’.

18.3 Common Operators

You compose regular expressions from operators. In the following sections, we describe the regular expression operators specified by POSIX; GNU also uses these. Most operators have more than one representation as characters. See Section 18.2 [Regular Expression Syntax], page 821, for what characters represent what operators under what circumstances.

For most operators that can be represented in two ways, one representation is a single character and the other is that character preceded by ‘\’. For example, either ‘(’ or ‘\(’ represents the open-group operator. Which one does depends on the setting of a syntax bit, in this case RE_NO_BK_PARENS. Why is this so? Historical reasons dictate some of the varying representations, while POSIX dictates others.

Finally, almost all characters lose any special meaning inside a list (see Section 18.3.6 [List Operators], page 830).

18.3.1 The Match-self Operator (ordinary character)

This operator matches the character itself. All ordinary characters (see Section 18.2 [Regular Expression Syntax], page 821) represent this operator. For example, ‘f’ is always an ordinary character, so the regular expression ‘f’ matches only the string ‘f’. In particular, it does not match the string ‘ff’.

18.3.2 The Match-any-character Operator (.)

This operator matches any single printing or nonprinting character except it won’t match a:

newline if the syntax bit RE_DOT_NEWLINE isn’t set.

null if the syntax bit RE_DOT_NOT_NULL is set.

The ‘.’ (period) character represents this operator. For example, ‘a.b’ matches any three-character string beginning with ‘a’ and ending with ‘b’.

18.3.3 The Concatenation Operator

This operator concatenates two regular expressions a and b. No character represents this operator; you simply put b after a. The result is a regular expression that will match a string if a matches its first part and b matches the rest. For example, ‘xy’ (two match-self operators) matches ‘xy’.

18.3.4 Repetition Operators

Repetition operators repeat the preceding regular expression a specified number of times.

18.3.4.1 The Match-zero-or-more Operator (*)

This operator repeats the smallest possible preceding regular expression as many times as necessary (including zero) to match the pattern. ‘*’ represents this operator. For example, ‘o*’ matches any string made up of zero or more ‘o’s. Since this operator operates on the smallest preceding regular expression, ‘fo*’ has a repeating ‘o’, not a repeating ‘fo’. So, ‘fo*’ matches ‘f’, ‘fo’, ‘foo’, and so on.

Since the match-zero-or-more operator is a suffix operator, it may be useless as such when no regular expression precedes it. This is the case when it:

• is first in a regular expression, or

• follows a match-beginning-of-line, open-group, or alternation operator.

Three different things can happen in these cases:

1. If the syntax bit RE_CONTEXT_INVALID_OPS is set, then the regular expression is invalid.

 2. If RE_CONTEXT_INVALID_OPS isn’t set, but RE_CONTEXT_INDEP_OPS is, then ‘*’ repre-

sents the match-zero-or-more operator (which then operates on the empty string).

3. Otherwise, ‘*’ is ordinary.

The matcher processes a match-zero-or-more operator by first matching as many repetitions of the smallest preceding regular expression as it can. Then it continues to match the rest of the pattern.

If it can’t match the rest of the pattern, it backtracks (as many times as necessary), each time discarding one of the matches until it can either match the entire pattern or be certain that it cannot get a match. For example, when matching ‘ca*ar’ against ‘caaar’, the matcher first matches all three ‘a’s of the string with the ‘a*’ of the regular expression. However, it cannot then match the final ‘ar’ of the regular expression against the final ‘r’ of the string. So it backtracks, discarding the match of the last ‘a’ in the string. It can then match the remaining ‘ar’.

18.3.4.2 The Match-one-or-more Operator (+ or \+)

If the syntax bit RE_LIMITED_OPS is set, then Regex doesn’t recognize this operator. Otherwise, if the syntax bit RE_BK_PLUS_QM isn’t set, then ‘+’ represents this operator; if it is, then ‘\+’ does.

This operator is similar to the match-zero-or-more operator except that it repeats the preceding regular expression at least once; see Section 18.3.4.1 [Match-zero-or-more Operator], page 828, for what it operates on, how some syntax bits affect it, and how Regex backtracks to match it.

For example, supposing that ‘+’ represents the match-one-or-more operator; then ‘ca+r’ matches, e.g., ‘car’ and ‘caaaar’, but not ‘cr’.

18.3.4.3 The Match-zero-or-one Operator (? or \?)

If the syntax bit RE_LIMITED_OPS is set, then Regex doesn’t recognize this operator. Otherwise, if the syntax bit RE_BK_PLUS_QM isn’t set, then ‘?’ represents this operator; if it is, then ‘\?’ does.

This operator is similar to the match-zero-or-more operator except that it repeats the preceding regular expression once or not at all; see Section 18.3.4.1 [Match-zero-or-more Operator], page 828, to see what it operates on, how some syntax bits affect it, and how Regex backtracks to match it.

For example, supposing that ‘?’ represents the match-zero-or-one operator; then ‘ca?r’ matches both ‘car’ and ‘cr’, but nothing else.

18.3.4.4 Interval Operators ({ … } or \{ … \})

If the syntax bit RE_INTERVALS is set, then Regex recognizes interval expressions. They repeat the smallest possible preceding regular expression a specified number of times.

If the syntax bit RE_NO_BK_BRACES is set, ‘{’ represents the open-interval operator and ‘}’ represents the close-interval operator ; otherwise, ‘\{’ and ‘\}’ do.

Specifically, supposing that ‘{’ and ‘}’ represent the open-interval and close-interval operators; then:

{count} matches exactly count occurrences of the preceding regular expression.

{min,} matches min or more occurrences of the preceding regular expression.

{min, max}

matches at least min but no more than max occurrences of the preceding regular expression.

The interval expression (but not necessarily the regular expression that contains it) is invalid if:

• min is greater than max, or

• any of count, min, or max are outside the range zero to RE_DUP_MAX (which symbol regex.h defines).

If the interval expression is invalid and the syntax bit RE_NO_BK_BRACES is set, then Regex considers all the characters in the would-be interval to be ordinary. If that bit isn’t set, then the regular expression is invalid.

If the interval expression is valid but there is no preceding regular expression on which to operate, then if the syntax bit RE_CONTEXT_INVALID_OPS is set, the regular expression is invalid. If that bit isn’t set, then Regex considers all the characters—other than backslashes, which it ignores—in the would-be interval to be ordinary.

18.3.5 The Alternation Operator (| or \|)

If the syntax bit RE_LIMITED_OPS is set, then Regex doesn’t recognize this operator. Otherwise, if the syntax bit RE_NO_BK_VBAR is set, then ‘|’ represents this operator; otherwise, ‘\|’ does.

Alternatives match one of a choice of regular expressions: if you put the character(s) representing the alternation operator between any two regular expressions a and b, the result matches the union of the strings that a and b match. For example, supposing that ‘|’ is the alternation operator, then ‘foo|bar|quux’ would match any of ‘foo’, ‘bar’ or ‘quux’.

The alternation operator operates on the largest possible surrounding regular expressions. (Put another way, it has the lowest precedence of any regular expression operator.) Thus, the only way you can delimit its arguments is to use grouping. For example, if ‘(’ and ‘)’ are the open and close-group operators, then ‘fo(o|b)ar’ would match either ‘fooar’ or ‘fobar’. (‘foo|bar’ would match ‘foo’ or ‘bar’.)

The matcher usually tries all combinations of alternatives so as to match the longest possible string. For example, when matching ‘(fooq|foo)*(qbarquux|bar)’ against ‘fooqbarquux’, it cannot take, say, the first (“depth-first”) combination it could match, since then it would be content to match just ‘fooqbar’.

Note that since the default behavior is to return the leftmost longest match, when more than one of a series of alternatives matches the actual match will be the longest matching alternative, not necessarily the first in the list.

18.3.6 List Operators ([ …] and [^…])

Lists, also called bracket expressions, are a set of one or more items. An item is a character, a collating symbol, an equivalence class expression, a character class expression, or a range expression. The syntax bits affect which kinds of items you can put in a list. We explain the last four items in subsections below. Empty lists are invalid.

A matching list matches a single character represented by one of the list items. You form a matching list by enclosing one or more items within an open-matching-list operator (represented by ‘[’) and a close-list operator (represented by ‘]’).

For example, ‘[ab]’ matches either ‘a’ or ‘b’. ‘[ad]*’ matches the empty string and any string composed of just ‘a’s and ‘d’s in any order. Regex considers invalid a regular expression with a ‘[’ but no matching ‘]’.

Nonmatching lists are similar to matching lists except that they match a single character not represented by one of the list items. You use an open-nonmatching-list operator (represented by ‘[^’^{2}) instead of an open-matching-list operator to start a nonmatching list.

For example, ‘[^ab]’ matches any character except ‘a’ or ‘b’.

If the syntax bit RE_HAT_LISTS_NOT_NEWLINE is set, then nonmatching lists do not match a newline.

Most characters lose any special meaning inside a list. The special characters inside a list follow.

‘]’ ends the list if it’s not the first list item. So, if you want to make the ‘]’ character a list item, you must put it first.

‘\’ quotes the next character if the syntax bit RE_BACKSLASH_ESCAPE_IN_LISTS is set.

‘[.’ represents the open-collating-symbol operator (see Section 18.3.6.1 [Collating Symbol Operators], page 831).

‘.]’ represents the close-collating-symbol operator.

‘[=’ represents the open-equivalence-class operator (see Section 18.3.6.2 [Equivalence Class Operators], page 831).

‘=]’ represents the close-equivalence-class operator.

2 Regex therefore doesn’t consider the ‘^’ to be the first character in the list. If you put a ‘^’ character

first in (what you think is) a matching list, you’ll turn it into a nonmatching list.

‘[:’ represents the open-character-class operator (see Section 18.3.6.3 [Character Class Operators], page 831) if the syntax bit RE_CHAR_CLASSES is set and what follows is a valid character class expression.

‘:]’ represents the close-character-class operator if the syntax bit RE_CHAR_CLASSES is set and what precedes it is an open-character-class operator followed by a valid character class name.

‘-’ represents the range operator (see Section 18.3.6.4 [Range Operator], page 832) if it’s not first or last in a list or the ending point of a range.

All other characters are ordinary. For example, ‘[.*]’ matches ‘.’ and ‘*’.

18.3.6.1 Collating Symbol Operators ([. . . . .])

Collating symbols can be represented inside lists. You form a collating symbol by putting a collating element between an open-collating-symbol operator and a close-collating-symbol operator. ‘[.’ represents the open-collating-symbol operator and ‘.]’ represents the closecollating-symbol operator. For example, if ‘ll’ is a collating element, then ‘[[.ll.]]’ would match ‘ll’.

18.3.6.2 Equivalence Class Operators ([= … =])

Regex recognizes equivalence class expressions inside lists. A equivalence class expression is a set of collating elements which all belong to the same equivalence class. You form an equivalence class expression by putting a collating element between an open-equivalence-class operator and a close-equivalence-class operator. ‘[=’ represents the open-equivalence-class operator and ‘=]’ represents the close-equivalence-class operator. For example, if ‘a’ and ‘A’ were an equivalence class, then both ‘[[=a=]]’ and ‘[[=A=]]’ would match both ‘a’ and ‘A’. If the collating element in an equivalence class expression isn’t part of an equivalence class, then the matcher considers the equivalence class expression to be a collating symbol.

18.3.6.3 Character Class Operators ([: …:])

If the syntax bit RE_CHAR_CLASSES is set, then Regex recognizes character class expressions inside lists. A character class expression matches one character from a given class. You form a character class expression by putting a character class name between an open-character-class operator (represented by ‘[:’) and a close-character-class operator (represented by ‘:]’). The character class names and their meanings are:

alnum letters and digits

alpha letters

blank system-dependent; for GNU, a space or tab

cntrl control characters (in the ASCII encoding, code 0177 and codes less than 040)

digit digits

graph same as print except omits space

lower lowercase letters

print printable characters (in the ASCII encoding, space tilde—codes 040 through punct neither control nor alphanumeric characters

space space, carriage return, newline, vertical tab, and form feed

upper uppercase letters

xdigit hexadecimal digits: 0–9, a–f, A–F

These correspond to the definitions in the C library’s <ctype.h> facility. For example, ‘[:alpha:]’ corresponds to the standard facility isalpha. Regex recognizes character class expressions only inside of lists; so ‘[[:alpha:]]’ matches any letter, but ‘[:alpha:]’ outside of a bracket expression and not followed by a repetition operator matches just itself.

18.3.6.4 The Range Operator (-)

Regex recognizes range expressions inside a list. They represent those characters that fall between two elements in the current collating sequence. You form a range expression by putting a range operator between two of any of the following: characters, collating elements, collating symbols, and equivalence class expressions. The starting point of the range and the ending point of the range don’t have to be the same kind of item, e.g., the starting point could be a collating element and the ending point could be an equivalence class expression. If a range’s ending point is an equivalence class, then all the collating elements in that class will be in the range.^{3} ‘-’ represents the range operator. For example, ‘a-f’ within a list represents all the characters from ‘a’ through ‘f’ inclusively.

If the syntax bit RE_NO_EMPTY_RANGES is set, then if the range’s ending point collates less than its starting point, the range (and the regular expression containing it) is invalid. For example, the regular expression ‘[z-a]’ would be invalid. If this bit isn’t set, then Regex considers such a range to be empty.

Since ‘-’ represents the range operator, if you want to make a ‘-’ character itself a list item, you must do one of the following:

• Put the ‘-’ either first or last in the list.

• Include a range whose starting point collates strictly lower than ‘-’ and whose ending point collates equal or higher. Unless a range is the first item in a list, a ‘-’ can’t be its starting point, but can be its ending point. That is because Regex considers ‘-’ to be the range operator unless it is preceded by another ‘-’. For example, in the ASCII encoding, ‘)’, ‘*’, ‘+’, ‘,’, ‘-’, ‘.’, and ‘/’ are contiguous characters in the collating sequence. You might think that ‘[)-+--/]’ has two ranges: ‘)-+’ and ‘--/’. Rather, it has the ranges ‘)-+’ and ‘+--’, plus the character ‘/’, so it matches, e.g., ‘,’, not ‘.’.

• Put a range whose starting point is ‘-’ first in the list.

For example, ‘[-a-z]’ matches a lowercase letter or a hyphen (in English, in ASCII).

18.3.7 Grouping Operators (( …) or \( … \))

A group, also known as a subexpression, consists of an open-group operator, any number of other operators, and a close-group operator. Regex treats this sequence as a unit, just as mathematics and programming languages treat a parenthesized expression as a unit.

3 You can’t use a character class for the starting or ending point of a range, since a character class is not

a single character.

Therefore, using groups, you can:

• delimit the argument(s) to an alternation operator (see Section 18.3.5 [Alternation Operator], page 829) or a repetition operator (see Section 18.3.4 [Repetition Operators], page 828).

• keep track of the indices of the substring that matched a given group. See Section 18.6.1.8 [Using Registers], page 841, for a precise explanation. This lets you:

• use the back-reference operator (see Section 18.3.8 [Back-reference Operator], page 833).

• use registers (see Section 18.6.1.8 [Using Registers], page 841).

If the syntax bit RE_NO_BK_PARENS is set, then ‘(’ represents the open-group operator and ‘)’ represents the close-group operator; otherwise, ‘\(’ and ‘\)’ do.

If the syntax bit RE_UNMATCHED_RIGHT_PAREN_ORD is set and a close-group operator has no matching open-group operator, then Regex considers it to match ‘)’.

18.3.8 The Back-reference Operator (\digit)

If the syntax bit RE_NO_BK_REF isn’t set, then Regex recognizes back-references. A backreference matches a specified preceding group. The back-reference operator is represented by ‘\digit’ anywhere after the end of a regular expression’s digit-th group (see Section 18.3.7 [Grouping Operators], page 832).

digit must be between ‘1’ and ‘9’. The matcher assigns numbers 1 through 9 to the first nine groups it encounters. By using one of ‘\1’ through ‘\9’ after the corresponding group’s close-group operator, you can match a substring identical to the one that the group does.

Back-references match according to the following (in all examples below, ‘(’ represents the open-group, ‘)’ the close-group, ‘{’ the open-interval and ‘}’ the close-interval operator):

• If the group matches a substring, the back-reference matches an identical substring. For

example, ‘(a)\1’ matches ‘aa’ and ‘(bana)na\1bo\1’ matches ‘bananabanabobana’.

Likewise, ‘(.*)\1’ matches any (newline-free if the syntax bit RE_DOT_NEWLINE isn’t set) string that is composed of two identical halves; the ‘(.*)’ matches the first half and the ‘\1’ matches the second half.

• If the group matches more than once (as it might if followed by, e.g., a repetition operator), then the back-reference matches the substring the group last matched. For example, ‘((a*)b)*\1\2’ matches ‘aabababa’; first group 1 (the outer one) matches ‘aab’ and group 2 (the inner one) matches ‘aa’. Then group 1 matches ‘ab’ and group 2 matches ‘a’. So, ‘\1’ matches ‘ab’ and ‘\2’ matches ‘a’.

• If the group doesn’t participate in a match, i.e., it is part of an alternative not taken or a repetition operator allows zero repetitions of it, then the back-reference makes the whole match fail. For example, ‘(one()|two())-and-(three\2|four\3)’ matches

‘one-and-three’ and ‘two-and-four’, but not ‘one-and-four’ or ‘two-and-three’.

For example, if the pattern matches ‘one-and-’, then its group 2 matches the empty string and its group 3 doesn’t participate in the match. So, if it then matches ‘four’, then when it tries to back-reference group 3—which it will attempt to do because ‘\3’ follows the ‘four’—the match will fail because group 3 didn’t participate in the match.

You can use a back-reference as an argument to a repetition operator. For example, ‘(a(b))\2*’ matches ‘a’ followed by two or more ‘b’s. Similarly, ‘(a(b))\2{3}’ matches

‘abbbb’.

If there is no preceding digit-th subexpression, the regular expression is invalid.

Back-references can greatly slow down matching, as they can generate exponentially many matching possibilities that can consume both time and memory to explore. Also, the POSIX specification for back-references is at times unclear. Furthermore, many regular expression implementations have back-reference bugs that can cause programs to return incorrect answers or even crash, and fixing these bugs has often been low-priority: for example, as of 2020 the GNU C library bug database (https://sourceware.org/bugzilla/ ) contained back-reference bugs 52, 10844, 11053, 24269 and 25322, with little sign of forthcoming fixes. Luckily, back-references are rarely useful and it should be little trouble to avoid them in practical applications.

18.3.9 Anchoring Operators

These operators can constrain a pattern to match only at the beginning or end of the entire string or at the beginning or end of a line.

18.3.9.1 The Match-beginning-of-line Operator (^)

This operator can match the empty string either at the beginning of the string or after a newline character. Thus, it is said to anchor the pattern to the beginning of a line.

In the cases following, ‘^’ represents this operator. (Otherwise, ‘^’ is ordinary.)

• It (the ‘^’) is first in the pattern, as in ‘^foo’.

• The syntax bit RE_CONTEXT_INDEP_ANCHORS is set, and it is outside a bracket expression.

• It follows an open-group or alternation operator, as in ‘a\(^b\)’ and ‘a\|^b’. See Section 18.3.7 [Grouping Operators], page 832, and Section 18.3.5 [Alternation Operator], page 829.

These rules imply that some valid patterns containing ‘^’ cannot be matched; for exam-

ple, ‘foo^bar’ if RE_CONTEXT_INDEP_ANCHORS is set.

If the not_bol field is set in the pattern buffer (see Section 18.6.1.1 [GNU Pattern Buffers], page 836), then ‘^’ fails to match at the beginning of the string. This lets you match against pieces of a line, as you would need to if, say, searching for repeated instances of a given pattern in a line; it would work correctly for patterns both with and without match-beginning-of-line operators.

18.3.9.2 The Match-end-of-line Operator ($)

This operator can match the empty string either at the end of the string or before a newline character in the string. Thus, it is said to anchor the pattern to the end of a line.

It is always represented by ‘$’. For example, ‘foo$’ usually matches, e.g., ‘foo’ and, e.g., the first three characters of ‘foo\nbar’.

Its interaction with the syntax bits and pattern buffer fields is exactly the dual of ‘^’’s; see the previous section. (That is, “‘^’” becomes “‘$’”, “beginning” becomes “end”, “next” becomes “previous”, “after” becomes “before”, and “not_bol” becomes “not_eol”.)

18.4 GNU Operators

The following are operators that GNU defines (and POSIX doesn’t) that you can use unless the syntax bit RE_NO_GNU_OPS is set.

18.4.1 Word Operators

The operators in this section require Regex to recognize parts of words. Characters that are part of words, which are called word-constituent, are letters, digits, and the underscore (‘_’); more precisely, any character in the POSIX class alnum in the current locale, or underscore.

18.4.1.1 The Match-word-boundary Operator (\b)

This operator (represented by ‘\b’) matches the empty string at either the beginning or the end of a word. For example, ‘\brat\b’ matches the separate word ‘rat’.

18.4.1.2 The Match-within-word Operator (\B)

This operator (represented by ‘\B’) matches the empty string within a word. For example, ‘c\Brat\Be’ matches ‘crate’, but ‘dirty \Brat’ doesn’t match ‘dirty rat’.

18.4.1.3 The Match-beginning-of-word Operator (\<)

This operator (represented by ‘\<’) matches the empty string at the beginning of a word.

18.4.1.4 The Match-end-of-word Operator (\>)

This operator (represented by ‘\>’) matches the empty string at the end of a word.

18.4.1.5 The Match-word-constituent Operator (\w)

This operator (represented by ‘\w’) matches any word-constituent character.

18.4.1.6 The Match-non-word-constituent Operator (\W)

This operator (represented by ‘\W’) matches any character that is not word-constituent.

18.4.2 Space Operators 18.4.2.1 The Match-space Operator (\s)

This operator (represented by ‘\s’) matches any space character (that is, in the POSIX

class [:space:]).

18.4.2.2 The Match-non-space Operator (\S)

This operator (represented by ‘\S’) matches any character that is not a space (that is, in the POSIX class [:space:]).

18.4.3 Whole-string Operators

Following are operators which work on the whole string.

18.4.3.1 The Match-beginning-of-string Operator (\` )

This operator (represented by ‘\` ’) matches the empty string at the beginning of the string.

18.4.3.2 The Match-end-of-string Operator (\')

This operator (represented by ‘\'’) matches the empty string at the end of the string.

18.5 What Gets Matched?

Regex usually matches strings according to the “leftmost longest” rule; that is, it chooses the longest of the leftmost matches. This does not mean that for a regular expression containing subexpressions that it simply chooses the longest match for each subexpression, left to right; the overall match must also be the longest possible one.

For example, ‘(ac*)(c*d[ac]*)\1’ matches ‘acdacaaa’, not ‘acdac’, as it would if it were to choose the longest match for the first subexpression.

18.6 Programming with Regex

Here we describe how you use the Regex data structures and functions in C programs. Regex has three interfaces: one designed for GNU, one compatible with POSIX (as specified by POSIX, draft 1003.2/D11.2), and one compatible with Berkeley Unix. The POSIX interface is not documented here; see the documentation of GNU libc, or the POSIX man pages. The Berkeley Unix interface is documented here for convenience, since its documentation is not otherwise readily available on GNU systems.

18.6.1 GNU Regex Functions

If you’re writing code that doesn’t need to be compatible with either POSIX or Berkeley Unix, you can use these functions. They provide more options than the other interfaces.

18.6.1.1 GNU Pattern Buffers

To compile, match, or search for a given regular expression, you must supply a pattern buffer. A pattern buffer holds one compiled regular expression.^{4}

You can have several different pattern buffers simultaneously, each holding a compiled pattern for a different regular expression.

regex.h defines the pattern buffer struct with the following public fields:

       unsigned char *buffer;
       unsigned long allocated;
       char *fastmap;
       char *translate;
       size_t re_nsub;
       unsigned no_sub : 1;
       unsigned not_bol : 1;
       unsigned not_eol : 1;

18.6.1.2 GNU Regular Expression Compiling

In GNU, you can both match and search for a given regular expression. To do either, you must first compile it in a pattern buffer (see Section 18.6.1.1 [GNU Pattern Buffers], page 836).

4 Regular expressions are also referred to as “patterns,” hence the name “pattern buffer.”

Regular expressions match according to the syntax with which they were compiled; with GNU, you indicate what syntax you want by setting the variable re_syntax_options (declared in regex.h) before calling the compiling function, re_compile_pattern (see below). See Section 18.2.1 [Syntax Bits], page 822, and Section 18.2.2 [Predefined Syntaxes], page 824.

You can change the value of re_syntax_options at any time. Usually, however, you set its value once and then never change it.

re_compile_pattern takes a pattern buffer as an argument. You must initialize the following fields:

translate initialization

translate

Initialize this to point to a translate table if you want one, or to zero if you don’t. We explain translate tables in Section 18.6.1.7 [GNU Translate Tables], page 840.

fastmap Initialize this to nonzero if you want a fastmap, or to zero if you don’t.

buffer
allocated

If you want re_compile_pattern to allocate memory for the compiled pattern, set both of these to zero. If you have an existing block of memory (allocated with malloc) you want Regex to use, set buffer to its address and allocated to its size (in bytes). re_compile_pattern uses realloc to extend the space for the compiled pattern as necessary.

To compile a pattern buffer, use:

     char *
     re_compile_pattern (const char *regex, const int regex_size,
                         struct re_pattern_buffer *pattern_buffer)

regex is the regular expression’s address, regex size is its length, and pattern buffer is the pattern buffer’s address.

If re_compile_pattern successfully compiles the regular expression, it returns zero and sets *pattern_buffer to the compiled pattern. It sets the pattern buffer’s fields as follows:

buffer to the compiled pattern.

syntax  to the current value of re_syntax_options.

re_nsub to the number of subexpressions in regex.

If re_compile_pattern can’t compile regex, it returns an error string corresponding to a POSIX error code.

18.6.1.3 GNU Matching

Matching the GNU way means trying to match as much of a string as possible starting at a position within it you specify. Once you’ve compiled a pattern into a pattern buffer (see Section 18.6.1.2 [GNU Regular Expression Compiling], page 836), you can ask the matcher to match that pattern against a string using:

     int

     re_match (struct re_pattern_buffer *pattern_buffer,
               const char *string, const int size,
               const int start, struct re_registers *regs)

pattern buffer is the address of a pattern buffer containing a compiled pattern. string is the string you want to match; it can contain newline and null characters. size is the length of that string. start is the string index at which you want to begin matching; the first character of string is at index zero. See Section 18.6.1.8 [Using Registers], page 841, for an explanation of regs; you can safely pass zero.

re_match matches the regular expression in pattern buffer against the string string according to the syntax of pattern buffer. (See Section 18.6.1.2 [GNU Regular Expression Compiling], page 836, for how to set it.) The function returns −1 if the compiled pattern does not match any part of string and −2 if an internal error happens; otherwise, it returns how many (possibly zero) characters of string the pattern matched.

An example: suppose pattern buffer points to a pattern buffer containing the compiled pattern for ‘a*’, and string points to ‘aaaaab’ (whereupon size should be 6). Then if start is 2, re_match returns 3, i.e., ‘a*’ would have matched the last three ‘a’s in string. If start is 0, re_match returns 5, i.e., ‘a*’ would have matched all the ‘a’s in string. If start is either 5 or 6, it returns zero.

If start is not between zero and size, then re_match returns −1.

18.6.1.4 GNU Searching

Searching means trying to match starting at successive positions within a string. The function re_search does this.

Before calling re_search, you must compile your regular expression. See Section 18.6.1.2 [GNU Regular Expression Compiling], page 836.

Here is the function declaration:

     int
     re_search (struct re_pattern_buffer *pattern_buffer,
                const char *string, const int size,
                const int start, const int range,
                struct re_registers *regs)

whose arguments are the same as those to re_match (see Section 18.6.1.3 [GNU Matching], page 837) except that the two arguments start and range replace re_match’s argument start.

If range is positive, then re_search attempts a match starting first at index start, then at start +1 if that fails, and so on, up to start +range; if range is negative, then it attempts a match starting first at index start, then at start − 1 if that fails, and so on.

If start is not between zero and size, then re_search returns −1. When range is positive, re_search adjusts range so that start + range − 1 is between zero and size, if necessary; that way it won’t search outside of string. Similarly, when range is negative, re_search adjusts range so that start + range + 1 is between zero and size, if necessary.

If the fastmap field of pattern buffer is zero, re_search matches starting at consecutive positions; otherwise, it uses fastmap to make the search more efficient. See Section 18.6.1.6 [Searching with Fastmaps], page 839.

If no match is found, re_search returns −1. If a match is found, it returns the index where the match began. If an internal error happens, it returns −2.

18.6.1.5 Matching and Searching with Split Data

Using the functions re_match_2 and re_search_2, you can match or search in data that is divided into two strings.

The function:

     int
     re_match_2 (struct re_pattern_buffer *buffer,
                 const char *string1, const int size1,
                 const char *string2, const int size2,
                 const int start,
                 struct re_registers *regs,
                 const int stop)

is similar to re_match (see Section 18.6.1.3 [GNU Matching], page 837) except that you pass two data strings and sizes, and an index stop beyond which you don’t want the matcher to try matching. As with re_match, if it succeeds, re_match_2 returns how many characters of string it matched. Regard string1 and string2 as concatenated when you set the arguments start and stop and use the contents of regs; re_match_2 never returns a value larger than size1 + size2.

The function:

     int
     re_search_2 (struct re_pattern_buffer *buffer,
                  const char *string1, const int size1,
                  const char *string2, const int size2,
                  const int start, const int range,
                  struct re_registers *regs,
                  const int stop)

is similarly related to re_search.

18.6.1.6 Searching with Fastmaps

If you’re searching through a long string, you should use a fastmap. Without one, the searcher tries to match at consecutive positions in the string. Generally, most of the characters in the string could not start a match. It takes much longer to try matching at a given position in the string than it does to check in a table whether or not the character at that position could start a match. A fastmap is such a table.

More specifically, a fastmap is an array indexed by the characters in your character set. Under the ASCII encoding, therefore, a fastmap has 256 elements. If you want the searcher to use a fastmap with a given pattern buffer, you must allocate the array and assign the array’s address to the pattern buffer’s fastmap field. You either can compile the fastmap yourself or have re_search do it for you; when fastmap is nonzero, it automatically compiles a fastmap the first time you search using a particular compiled pattern.

By setting the buffer’s fastmap field before calling re_compile_pattern, you can reuse a buffer data structure across multiple searches with different patterns, and allocate the fastmap only once. Nonetheless, the fastmap must be recompiled each time the buffer has a new pattern compiled into it.

To compile a fastmap yourself, use:

     int
     re_compile_fastmap (struct re_pattern_buffer *pattern_buffer)

pattern buffer is the address of a pattern buffer. If the character c could start a match

for the pattern, re_compile_fastmap makes pattern_buffer->fastmap[c] nonzero. It

returns 0 if it can compile a fastmap and −2 if there is an internal error. For example, if ‘|’ is the alternation operator and pattern buffer holds the compiled pattern for ‘a|b’, then

re_compile_fastmap sets fastmap['a'] and fastmap['b'] (and no others).

re_search uses a fastmap as it moves along in the string: it checks the string’s characters until it finds one that’s in the fastmap. Then it tries matching at that character. If the match fails, it repeats the process. So, by using a fastmap, re_search doesn’t waste time trying to match at positions in the string that couldn’t start a match.

If you don’t want re_search to use a fastmap, store zero in the fastmap field of the pattern buffer before calling re_search.

Once you’ve initialized a pattern buffer’s fastmap field, you need never do so again—even if you compile a new pattern in it—provided the way the field is set still reflects whether or not you want a fastmap. re_search will still either do nothing if fastmap is null or, if it isn’t, compile a new fastmap for the new pattern.

18.6.1.7 GNU Translate Tables

If you set the translate field of a pattern buffer to a translate table, then the GNU Regex functions to which you’ve passed that pattern buffer use it to apply a simple transformation to all the regular expression and string characters at which they look.

A translate table is an array indexed by the characters in your character set. Under the ASCII encoding, therefore, a translate table has 256 elements. The array’s elements are also characters in your character set. When the Regex functions see a character c, they use translate[c] in its place, with one exception: the character after a ‘\’ is not translated. (This ensures that, the operators, e.g., ‘\B’ and ‘\b’, are always distinguishable.)

For example, a table that maps all lowercase letters to the corresponding uppercase ones would cause the matcher to ignore differences in case.^{5} Such a table would map all characters except lowercase letters to themselves, and lowercase letters to the corresponding uppercase ones. Under the ASCII encoding, here’s how you could initialize such a table (we’ll call it case_fold):

     for (i = 0; i < 256; i++)
       case_fold[i] = i;
     for (i = 'a'; i <= 'z'; i++)
       case_fold[i] = i - ('a' - 'A');

You tell Regex to use a translate table on a given pattern buffer by assigning that table’s address to the translate field of that buffer. If you don’t want Regex to do any translation, put zero into this field. You’ll get weird results if you change the table’s contents anytime between compiling the pattern buffer, compiling its fastmap, and matching or searching with the pattern buffer.

5 A table that maps all uppercase letters to the corresponding lowercase ones would work just as well for

this purpose.

18.6.1.8 Using Registers

A group in a regular expression can match a (possibly empty) substring of the string that regular expression as a whole matched. The matcher remembers the beginning and end of the substring matched by each group.

To find out what they matched, pass a nonzero regs argument to a GNU matching or searching function (see Section 18.6.1.3 [GNU Matching], page 837, and Section 18.6.1.4 [GNU Searching], page 838), i.e., the address of a structure of this type, as defined in

regex.h:
     struct re_registers
     {
       unsigned num_regs;
       regoff_t *start;
       regoff_t *end;
     };

Except for (possibly) the num regs’th element (see below), the ith element of the start and end arrays records information about the ith group in the pattern. (They’re declared as C pointers, but this is only because not all C compilers accept zero-length arrays; conceptually, it is simplest to think of them as arrays.)

The start and end arrays are allocated in one of two ways. The simplest and perhaps most useful is to let the matcher (re)allocate enough space to record information for all the groups in the regular expression. If re_set_registers is not called before searching or matching, then the matcher allocates two arrays each of 1 + re nsub elements (re nsub is another field in the pattern buffer; see Section 18.6.1.1 [GNU Pattern Buffers], page 836). The extra element is set to −1. Then on subsequent calls with the same pattern buffer and regs arguments, the matcher reallocates more space if necessary.

The function:

     void
     re_set_registers (struct re_pattern_buffer *buffer,
                       struct re_registers *regs,
                       size_t num_regs,
                       regoff_t *starts, regoff_t *ends)

sets regs to hold num regs registers, storing them in starts and ends. Subsequent matches using buffer and regs will use this memory for recording register information. starts and ends must be allocated with malloc, and must each be at least num regs∗sizeof(regoff_t) bytes long.

If num regs is zero, then subsequent matches should allocate their own register data. Unless this function is called, the first search or match using buffer will allocate its own

register data, without freeing the old data.

The following examples illustrate the information recorded in the re_registers structure. (In all of them, ‘(’ represents the open-group and ‘)’ the close-group operator. The first character in the string string is at index 0.)

• If the regular expression has an i-th group that matches a substring of string, then the function sets regs->start[i] to the index in string where the substring matched by the i-th group begins, and regs->end[i] to the index just beyond that substring’s end. The function sets regs->start[0] and regs->end[0] to analogous information about the entire pattern. For example, when you match ‘((a)(b))’ against ‘ab’, you get:

  • 0 in regs->start[0] and 2 in regs->end[0]
  • 0 in regs->start[1] and 2 in regs->end[1]
  • 0 in regs->start[2] and 1 in regs->end[2]
  • 1 in regs->start[3] and 2 in regs->end[3]

• If a group matches more than once (as it might if followed by, e.g., a repetition operator), then the function reports the information about what the group last matched. For example, when you match the pattern ‘(a)*’ against the string ‘aa’, you get:

  • 0 in regs->start[0] and 2 in regs->end[0]
  • 1 in regs->start[1] and 2 in regs->end[1]

• If the i-th group does not participate in a successful match, e.g., it is an alternative not taken or a repetition operator allows zero repetitions of it, then the function sets

regs->start[i] and regs->end[i] to −1.

For example, when you match the pattern ‘(a)*b’ against the string ‘b’, you get:

  • 0 in regs->start[0] and 1 in regs->end[0]
  • −1 in regs->start[1] and −1 in regs->end[1]

• If the i-th group matches a zero-length string, then the function sets regs->start[i] and regs->end[i] to the index just beyond that zero-length string. For example, when you match the pattern ‘(a*)b’ against the string ‘b’, you get:

  • 0 in regs->start[0] and 1 in regs->end[0]
  • 0 in regs->start[1] and 0 in regs->end[1]

• If an i-th group contains a j-th group in turn not contained within any other group within group i and the function reports a match of the i-th group, then it records in regs->start[j] and regs->end[j] the last match (if it matched) of the j-th group. For example, when you match the pattern ‘((a*)b)*’ against the string ‘abb’, group 2 last matches the empty string, so you get what it previously matched:

  • 0 in regs->start[0] and 3 in regs->end[0]
  • 2 in regs->start[1] and 3 in regs->end[1]
  • 2 in regs->start[2] and 2 in regs->end[2]

When you match the pattern ‘((a)*b)*’ against the string ‘abb’, group 2 doesn’t participate in the last match, so you get:

  • 0 in regs->start[0] and 3 in regs->end[0]
  • 2 in regs->start[1] and 3 in regs->end[1]
  • 0 in regs->start[2] and 1 in regs->end[2]

• If an i-th group contains a j-th group in turn not contained within any other group within group i and the function sets regs->start[i] and regs->end[i] to −1, then

    it also sets regs->start[j] and regs->end[j] to −1.

For example, when you match the pattern ‘((a)*b)*c’ against the string ‘c’, you get:

     • 0 in regs->start[0] and 1 in regs->end[0]
     • −1 in regs->start[1] and −1 in regs->end[1]
     • −1 in regs->start[2] and −1 in regs->end[2]

18.6.1.9 Freeing GNU Pattern Buffers

To free any allocated fields of a pattern buffer, use the POSIX function regfree:

     void
     regfree (regex_t *preg)

preg is the pattern buffer whose allocated fields you want freed; this works because since the type regex_t—the type for POSIX pattern buffers—is equivalent to the type re_pattern_

buffer.

regfree also sets preg’s allocated field to zero. After a buffer has been freed, it must have a regular expression compiled in it before passing it to a matching or searching function.

18.6.2 BSD Regex Functions

If you’re writing code that has to be Berkeley Unix compatible, you’ll need to use these functions whose interfaces are the same as those in Berkeley Unix.

18.6.2.1 BSD Regular Expression Compiling

With Berkeley Unix, you can only search for a given regular expression; you can’t match one. To search for it, you must first compile it. Before you compile it, you must indicate the regular expression syntax you want it compiled according to by setting the variable re_syntax_options (declared in regex.h) to some syntax (see Section 18.2 [Regular Expression Syntax], page 821).

To compile a regular expression use:

     char *
     re_comp (char *regex)

regex is the address of a null-terminated regular expression. re_comp uses an internal pattern buffer, so you can use only the most recently compiled pattern buffer. This means that if you want to use a given regular expression that you’ve already compiled—but it isn’t the latest one you’ve compiled—you’ll have to recompile it. If you call re_comp with the null string (not the empty string) as the argument, it doesn’t change the contents of the pattern buffer.

If re_comp successfully compiles the regular expression, it returns zero. If it can’t compile the regular expression, it returns an error string. re_comp’s error messages are identical to those of re_compile_pattern (see Section 18.6.1.2 [GNU Regular Expression Compiling], page 836).

18.6.2.2 BSD Searching

Searching the Berkeley Unix way means searching in a string starting at its first character and trying successive positions within it to find a match. Once you’ve compiled a pattern using re_comp (see Section 18.6.2.1 [BSD Regular Expression Compiling], page 843), you can ask Regex to search for that pattern in a string using:

     int
     re_exec (char *string)

string is the address of the null-terminated string in which you want to search.

re_exec returns either 1 for success or 0 for failure. It automatically uses a GNU fastmap (see Section 18.6.1.6 [Searching with Fastmaps], page 839).

18.7 Regular expression syntaxes

Gnulib supports many different types of regular expressions; although the underlying features are the same or identical, the syntax used varies. The descriptions given here for the different types are generated automatically.

18.7.1 ‘awk’ regular expression syntax

The character ‘.’ matches any single character except the null character.

‘+’ indicates that the regular expression should match one or more occurrences of the previous atom or regexp.

‘?’ indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.

‘\+’ matches a ‘+’

‘\?’ matches a ‘?’.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ can be used to quote the following character. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are not supported and so ‘\w’, ‘\W’, ‘\<’, ‘\>’, ‘\b’, ‘\B’, ‘\` ’, and ‘\'’ match ‘w’, ‘W’, ‘<’, ‘>’, ‘b’, ‘B’, ‘` ’, and ‘'’ respectively.

Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit matches that digit.

The alternation operator is ‘|’.

The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.

‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘(’

3. After the alternation operator ‘|’

The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.

18.7.2 ‘egrep’ regular expression syntax

The character ‘.’ matches any single character.

‘+’ indicates that the regular expression should match one or more occurrences of the previous atom or regexp.

‘?’ indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.

‘\+’ matches a ‘+’

‘\?’ matches a ‘?’.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are supported:

1. ‘\w’ matches a character within a word

2. ‘\W’ matches a character which is not within a word

3. ‘\<’ matches the beginning of a word

4. ‘\>’ matches the end of a word

5. ‘\b’ matches a word boundary

6. ‘\B’ matches characters which are not a word boundary

7. ‘\` ’ matches the beginning of the whole input

8. ‘\'’ matches the end of the whole input

Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.

The alternation operator is ‘|’.

The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.

The characters ‘*’, ‘+’ and ‘?’ are special anywhere in a regular expression.

Intervals are specified by ‘{’ and ‘}’. Invalid intervals are treated as literals, for example ‘a{1’ is treated as ‘a\{1’

The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.

18.7.3 ‘ed’ regular expression syntax

The character ‘.’ matches any single character except the null character.

‘\+’ indicates that the regular expression should match one or more occurrences of the previous atom or regexp.

‘\?’ indicates that the regular expression should match zero or one occurrence of

the previous atom or regexp.

‘+ and ?’ match themselves.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are supported:

1. ‘\w’ matches a character within a word

2. ‘\W’ matches a character which is not within a word

3. ‘\<’ matches the beginning of a word

4. ‘\>’ matches the end of a word

5. ‘\b’ matches a word boundary

6. ‘\B’ matches characters which are not a word boundary

7. ‘\` ’ matches the beginning of the whole input

8. ‘\'’ matches the end of the whole input Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash

followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.

The alternation operator is ‘\|’.

The character ‘^’ only represents the beginning of a string when it appears:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘\(’

3. After the alternation operator ‘\|’ The character ‘$’ only represents the end of a string when it appears:

1. At the end of a regular expression

2. Before a close-group, signified by ‘\)’

3. Before the alternation operator ‘\|’ ‘\*’, ‘\+’ and ‘\?’ are special at any point in a regular expression except:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘\(’

3. After the alternation operator ‘\|’ Intervals are specified by ‘\{’ and ‘\}’. Invalid intervals such as ‘a\{1z’ are not accepted. The longest possible match is returned; this applies to the regular expression as a whole

and (subject to this constraint) to subexpressions within groups.

18.7.4 ‘emacs’ regular expression syntax

The character ‘.’ matches any single character except newline. ‘+’ indicates that the regular expression should match one or more occurrences of

the previous atom or regexp.

‘?’ indicates that the regular expression should match zero or one occurrence of

the previous atom or regexp.

‘\+’ matches a ‘+’ ‘\?’ matches a ‘?’.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are ignored. Within square brackets, ‘\’ is taken literally. Character classes are not supported, so for example you would need to use

‘[0-9]’ instead of ‘[[:digit:]]’.

GNU extensions are supported:

1. ‘\w’ matches a character within a word

2. ‘\W’ matches a character which is not within a word

3. ‘\<’ matches the beginning of a word

4. ‘\>’ matches the end of a word

5. ‘\b’ matches a word boundary

6. ‘\B’ matches characters which are not a word boundary

7. ‘\` ’ matches the beginning of the whole input

8. ‘\'’ matches the end of the whole input Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash

followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.

The alternation operator is ‘\|’.

The character ‘^’ only represents the beginning of a string when it appears:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘\(’

3. After the alternation operator ‘\|’ The character ‘$’ only represents the end of a string when it appears:

1. At the end of a regular expression

2. Before a close-group, signified by ‘\)’

3. Before the alternation operator ‘\|’ ‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘\(’

3. After the alternation operator ‘\|’

The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.

18.7.5 ‘gnu-awk’ regular expression syntax

The character ‘.’ matches any single character. ‘+’ indicates that the regular expression should match one or more occurrences of

the previous atom or regexp.

‘?’ indicates that the regular expression should match zero or one occurrence of

the previous atom or regexp.

‘\+’ matches a ‘+’ ‘\?’ matches a ‘?’.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ can be used to quote the following character. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are supported:

1. ‘\w’ matches a character within a word

2. ‘\W’ matches a character which is not within a word

3. ‘\<’ matches the beginning of a word

4. ‘\>’ matches the end of a word

5. ‘\b’ matches a word boundary

6. ‘\B’ matches characters which are not a word boundary

7. ‘\` ’ matches the beginning of the whole input

8. ‘\'’ matches the end of the whole input Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself.

A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.

The alternation operator is ‘|’.

The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.

‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘(’

3. After the alternation operator ‘|’ Intervals are specified by ‘{’ and ‘}’. Invalid intervals are treated as literals, for example

‘a{1’ is treated as ‘a\{1’

The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.

18.7.6 ‘grep’ regular expression syntax

The character ‘.’ matches any single character. ‘\+’ indicates that the regular expression should match one or more occurrences of

the previous atom or regexp.

‘\?’ indicates that the regular expression should match zero or one occurrence of

the previous atom or regexp.

‘+ and ?’ match themselves.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are supported:

1. ‘\w’ matches a character within a word

2. ‘\W’ matches a character which is not within a word

3. ‘\<’ matches the beginning of a word

4. ‘\>’ matches the end of a word

5. ‘\b’ matches a word boundary

6. ‘\B’ matches characters which are not a word boundary

7. ‘\` ’ matches the beginning of the whole input

8. ‘\'’ matches the end of the whole input Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash

followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.

The alternation operator is ‘\|’.

The character ‘^’ only represents the beginning of a string when it appears:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘\(’

3. After a newline

4. After the alternation operator ‘\|’ The character ‘$’ only represents the end of a string when it appears:

1. At the end of a regular expression

2. Before a close-group, signified by ‘\)’

3. Before a newline

4. Before the alternation operator ‘\|’ ‘\*’, ‘\+’ and ‘\?’ are special at any point in a regular expression except:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘\(’ 3. After a newline

4. After the alternation operator ‘\|’

Intervals are specified by ‘\{’ and ‘\}’. Invalid intervals such as ‘a\{1z’ are not accepted. The longest possible match is returned; this applies to the regular expression as a whole

and (subject to this constraint) to subexpressions within groups.

18.7.7 ‘posix-awk’ regular expression syntax

The character ‘.’ matches any single character except the null character.

‘+’ indicates that the regular expression should match one or more occurrences of the previous atom or regexp.

‘?’ indicates that the regular expression should match zero or one occurrence of the previous atom or regexp.

‘\+’ matches a ‘+’

‘\?’ matches a ‘?’.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ can be used to quote the following character. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are not supported and so ‘\w’, ‘\W’, ‘\<’, ‘\>’, ‘\b’, ‘\B’, ‘\` ’, and ‘\'’ match ‘w’, ‘W’, ‘<’, ‘>’, ‘b’, ‘B’, ‘` ’, and ‘'’ respectively.

Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself. A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.

The alternation operator is ‘|’.

The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.

‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except the following places, where they are not allowed:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘(’

3. After the alternation operator ‘|’

Intervals are specified by ‘{’ and ‘}’. Invalid intervals are treated as literals, for example ‘a{1’ is treated as ‘a\{1’

The longest possible match is returned; this applies to the regular expression as a whole and (subject to this constraint) to subexpressions within groups.

18.7.8 ‘posix-basic’ regular expression syntax

This is a synonym for ed.

18.7.9 ‘posix-egrep’ regular expression syntax

This is a synonym for egrep.

18.7.10 ‘posix-extended’ regular expression syntax

The character ‘.’ matches any single character except the null character. ‘+’ indicates that the regular expression should match one or more occurrences of

the previous atom or regexp.

‘?’ indicates that the regular expression should match zero or one occurrence of

the previous atom or regexp.

‘\+’ matches a ‘+’ ‘\?’ matches a ‘?’.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are supported:

1. ‘\w’ matches a character within a word

2. ‘\W’ matches a character which is not within a word

3. ‘\<’ matches the beginning of a word

4. ‘\>’ matches the end of a word

5. ‘\b’ matches a word boundary

6. ‘\B’ matches characters which are not a word boundary

7. ‘\` ’ matches the beginning of the whole input

8. ‘\'’ matches the end of the whole input Grouping is performed with parentheses ‘()’. An unmatched ‘)’ matches just itself.

A backslash followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘(’.

The alternation operator is ‘|’.

The characters ‘^’ and ‘$’ always represent the beginning and end of a string respectively, except within square brackets. Within brackets, ‘^’ can be used to invert the membership of the character class being specified.

‘*’, ‘+’ and ‘?’ are special at any point in a regular expression except the following places, where they are not allowed:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘(’

3. After the alternation operator ‘|’ Intervals are specified by ‘{’ and ‘}’. Invalid intervals such as ‘a{1z’ are not accepted. The longest possible match is returned; this applies to the regular expression as a whole

and (subject to this constraint) to subexpressions within groups.

18.7.11 ‘posix-minimal-basic’ regular expression syntax

The character ‘.’ matches any single character except the null character.

Bracket expressions are used to match ranges of characters. Bracket expressions where the range is backward, for example ‘[z-a]’, are invalid. Within square brackets, ‘\’ is taken literally. Character classes are supported; for example ‘[[:digit:]]’ will match a single decimal digit.

GNU extensions are supported:

1. ‘\w’ matches a character within a word

2. ‘\W’ matches a character which is not within a word

3. ‘\<’ matches the beginning of a word

4. ‘\>’ matches the end of a word

5. ‘\b’ matches a word boundary

6. ‘\B’ matches characters which are not a word boundary

7. ‘\` ’ matches the beginning of the whole input

8. ‘\'’ matches the end of the whole input Grouping is performed with backslashes followed by parentheses ‘\(’, ‘\)’. A backslash

followed by a digit acts as a back-reference and matches the same thing as the previous grouped expression indicated by that number. For example ‘\2’ matches the second group expression. The order of group expressions is determined by the position of their opening parenthesis ‘\(’.

The character ‘^’ only represents the beginning of a string when it appears:

1. At the beginning of a regular expression

2. After an open-group, signified by ‘\(’ The character ‘$’ only represents the end of a string when it appears:

1. At the end of a regular expression

2. Before a close-group, signified by ‘\)’ Intervals are specified by ‘\{’ and ‘\}’. Invalid intervals such as ‘a\{1z’ are not accepted. The longest possible match is returned; this applies to the regular expression as a whole

and (subject to this constraint) to subexpressions within groups.

18.7.12 ‘sed’ regular expression syntax

This is a synonym for ed.

19 Build Infrastructure Modules

Gnulib has a couple of modules that don’t provide code, but rather extend the GNU Build System. That is, they are convenience facilities for use with GNU Automake (in particular).

19.1 Searching for Libraries

The following macros check for the presence or location of certain C, C++, or Fortran library archive files.

Simple Library Tests

The macros AC_CHECK_LIB, AC_SEARCH_LIBS from GNU Autoconf check for the presence of certain C, C++, or Fortran library archive files. The libraries are looked up in the default linker path—a system dependent list of directories, that usually contains the /usr/lib directory—and those directories given by -L options in the LDFLAGS variable.

Locating Libraries

The following macros, defined in the Gnulib module havelib, search for the location of certain C, C++, or Fortran library archive files and make the found location available to the compilation process and to further Autoconf tests.

[Macro] AC_LIB_LINKFLAGS(name, [dependencies])

Searches for lib<name> and the libraries corresponding to explicit and implicit dependencies. Sets and AC SUBSTs the LIB<NAME> and LTLIB<NAME> variables (with <NAME> in upper case) and augments the CPPFLAGS variable by -I options. This macro should be used when lib<name> is expected to be found.

[Macro] AC_LIB_HAVE_LINKFLAGS(name, [dependencies], [includes],
   [testcode], [missing-message])

Searches for lib<name> and the libraries corresponding to explicit and implicit dependencies, together with the specified include files and the ability to compile and link the specified testcode. The missing-message defaults to no and may contain additional hints for the user. If found, it sets and AC SUBSTs HAVE_LIB<NAME>=yes and the LIB<NAME> and LTLIB<NAME> variables (with <NAME> in upper case) and augments the CPPFLAGS variable by -I options, and #defines HAVE_LIB<NAME> to 1. Otherwise,

it sets and AC SUBSTs HAVE_LIB<NAME>=no and LIB<NAME> and LTLIB<NAME> to

empty.

These macros assume that when a library is installed in some_directory/lib, its include

files are installed in some_directory/include.
The complexities that AC_LIB_LINKFLAGS and AC_LIB_HAVE_LINKFLAGS deal with are

the following:

• The library is not necessarily already in the search path (CPPFLAGS for the include file search path, LDFLAGS for the library search path). The macro provides a ‘--with-lib<name>’ option. The user of the ‘configure’ script can use this option to indicate the location of the library and its include files. If not provided, the --prefix directory is searched as well.

• The library is not necessarily already in the run time library search path. To avoid the need for setting an environment variable like LD_LIBRARY_PATH, the macro adds the appropriate run time search path options to the LIB<NAME> variable. This works on most systems. It can also be inhibited: The user of ‘configure’ can use the --disable-rpath option to force an installation that doesn’t contain hardcoded library search paths but instead may require the use of an environment variable like LD_LIBRARY_

    PATH.

The macros also set a variable LTLIB<NAME>, that should be used when linking with libtool. Both LTLIB<NAME> and LIB<NAME> contain essentially the same option, but where LIB<NAME> contains platform dependent flags like ‘-Wl,-rpath’, LTLIB<NAME> contains platform independent flags like ‘-R’.

If you, by mistake, use LIB<NAME> instead of LTLIB<NAME> when linking with libtool, you will observe that the binaries created in the build dir will prefer the shared libraries in the installation directories over the shared libraries in the build dir; this can lead to all sorts of build failures, test failures, or crashes!

If you, on the other hand, by mistake, use LTLIB<NAME> instead of LIB<NAME> when linking without libtool, you will observe build failures, because the ‘-R’ options contained in LTLIB<NAME> are not valid options to compilers such as GCC.

Example of using AC_LIB_LINKFLAGS

Suppose you want to use libz, the compression library.

1. In configure.ac you add the line

             AC_CONFIG_AUX_DIR([build-aux])
             AC_LIB_LINKFLAGS([z])

Note that since the AC_LIB_LINKFLAGS invocation modifies the CPPFLAGS, it should precede all tests that check for header files, declarations, structures or types.

2. To the package’s build-aux directory you add the file config.rpath, also part of the Gnulib havelib module. (gnulib-tool will usually do this for you automatically.)

3. In Makefile.in you add @LIBZ@ to the link command line of your program. Or, if you are using Automake, you add $(LIBZ) to the LDADD variable that corresponds to your program.

Dependencies

The dependencies list is a space separated list of library names that libname is known to depend upon. Example: If libfooy depends on libfoox, and libfooz depends on libfoox and libfooy, you can write:

      AC_LIB_LINKFLAGS([foox])
      AC_LIB_LINKFLAGS([fooy], [foox])
      AC_LIB_LINKFLAGS([fooz], [foox fooy])

Explicit dependencies are necessary if you cannot assume that a .la file, created by libtool, is installed. If you can assume that libfooy.la is installed by libtool (and has not been omitted by the package distributor!), you can omit the explicit dependency and just write

      AC_LIB_LINKFLAGS([fooy])

This way, you don’t need to know in advance which libraries the needed library depends upon.

Static vs. shared

The macros find the libraries regardless whether they are installed as shared or static libraries.

CPPFLAGS vs. LDFLAGS

The macros determine the directories that should be added to the compiler preprocessor’s search path and to the linker’s search path. For the compiler preprocessor, -I options with the necessary directories are added to the CPPFLAGS variable, for use by the whole package. For the linker, appropriate options are added to the LIB<NAME> and LTLIB<NAME> variables, for use during linking by those programs and libraries that need the dependency on lib<name>. You need to use the value of LIB<NAME> or LTLIB<NAME> in the Makefiles. LTLIB<NAME> is for use with libtool, whereas LIB<NAME> is for when libtool is not involved in linking.

The macros do not check whether the include files and the library found match. If you want to verify this at configure time, one technique is to have a version number in the include files and a version number in the library, like this:

        #define LIBNAME_VERSION 10203
        extern int libname_version; /* initialized to LIBNAME_VERSION */

and use a test like

        AC_TRY_RUN([int main () { return libname_version != LIBNAME_VERSION; }])

Bi-arch systems

A bi-arch system is one where

• the processor has a 32-bit execution mode and a 64-bit execution mode (for example, x86 64, ia64, sparc64, powerpc64), and

• 32-bit mode libraries and executables and 64-bit mode libraries are both installed, and

• 32-bit mode libraries and object files cannot be mixed with 64-bit mode ones.

On several types of such systems, for historical reasons, the 32-bit libraries are installed in prefix/lib, whereas the 64-bit libraries are installed in

• prefix/lib64 on many glibc systems,

• prefix/lib/64 on Solaris systems.

On such systems, in 64-bit mode, configure will search for the libraries in prefix/lib64 or prefix/lib/64, respectively, not in prefix/lib. A user can adhere to these systemwide conventions by using the ‘--libdir’ option when installing packages. When a user has already installed packages in 64-bit mode using the GNU default ‘--libdir=prefix/lib’, he can make this directory adhere to the system-wide convention by placing a symbolic link:

On glibc systems:

          ln -s lib prefix/lib64

On Solaris systems:

          ln -s . prefix/lib/64

19.2 Controlling the Exported Symbols of Shared Libraries

The lib-symbol-visibility module allows precise control of the symbols exported by a shared library. This is useful because

• It prevents abuse of undocumented APIs of your library. Symbols that are not exported from the library cannot be used. This eliminates the problem that when the maintainer of the library changes internals of the library, maintainers of other projects cry “breakage”. Instead, these maintainers are forced to negotiate the desired API from the maintainer of the library.

• It reduces the risk of symbol collision between your library and other libraries. For example, the symbol ‘readline’ is defined in several libraries, most of which don’t have the same semantics and the same calling convention as the GNU readline library.

• It reduces the startup time of programs linked to the library. This is because the dynamic loader has less symbols to process.

• It allows the compiler to generate better code. Within a shared library, a call to a function that is a global symbol costs a “call” instruction to a code location in the socalled PLT (procedure linkage table) which contains a “jump” instruction to the actual function’s code. (This is needed so that the function can be overridden, for example by a function with the same name in the executable or in a shared library interposed with LD_PRELOAD.) Whereas a call to a function for which the compiler can assume that it is in the same shared library is just a direct “call” instructions. Similarly for variables: A reference to a global variable fetches a pointer in the so-called GOT (global offset table); this is a pointer to the variable’s memory. So the code to access it is two memory load instructions. Whereas for a variable which is known to reside in the same shared library, it is just a direct memory access: one memory load instruction.

There are traditionally three ways to specify the exported symbols of a shared library.

• The programmer specifies the list of symbols to be exported when the shared library is created. Usually a command-line option is passed to the linker, with the name of a file containing the symbols. The upside of this approach is flexibility: it allows the same code to be used in different libraries with different export lists. The downsides are: 1. it’s a lot of maintenance overhead when the symbol list is platform dependent, 2. it doesn’t work well with C++, due to name mangling.

• The programmer specifies a “hidden” attribute for every variable and function that shall not be exported. The drawbacks of this approach are: Symbols are still exported from the library by default. It’s a lot of maintenance work to mark every non- exported variable and function. But usually the exported API is quite small, compared to the internal API of the library. And it’s the wrong paradigm: It doesn’t force thinking when introducing new exported API.

• The programmer specifies a “hidden” attribute for all files that make up the shared library, and an “exported” attribute for those symbols in these files that shall be exported. This is perfect: It burdens the maintainer only for exported API, not for library-internal API. And it keeps the annotations in the source code.

GNU libtool’s -export-symbols option implements the first approach. The script declared.sh from Gnulib can help to produce the list of symbols.

This gnulib module implements the third approach. For this it relies on GNU GCC 4.0 or newer, namely on its ‘-fvisibility=hidden’ command-line option and the “visibility” attribute. (The “visibility” attribute was already supported in GCC 3.4, but without the command line option, introduced in GCC 4.0, the third approach could not be used.)

More explanations on this subject can be found in https://gcc.gnu.org/wiki/ Visibility, which contains more details on the GCC features and additional advice for C++

libraries, and in Ulrich Drepper’s paper https://www.akkadia.org/drepper/dsohowto.

pdf, which also explains other tricks for reducing the startup time impact of shared libraries.

The gnulib autoconf macro gl_VISIBILITY tests for GCC 4.0 or newer. It defines a Makefile variable @CFLAG_VISIBILITY@ containing ‘-fvisibility=hidden’ or nothing. It also defines as a C macro and as a substituted variable: @HAVE VISIBILITY@. Its value is 1 when symbol visibility control is supported, and 0 otherwise.

As of 2022, symbol visibility control is supported on

• ELF platforms (glibc, Linux, *BSD, Solaris) with GCC or clang,

• macOS,

• AIX with gcc or xlclang.

It is not supported on • Other compilers on ELF platforms or AIX,

• Windows.

To use this module in a library, say libfoo, you will do these steps:

 1. Add @CFLAG_VISIBILITY@ or (in a Makefile.am) $(CFLAG_VISIBILITY) to the

CFLAGS for the compilation of the sources that make up the library.

2. Add a C macro definition, say ‘-DBUILDING_LIBFOO’, to the CPPFLAGS for the compilation of the sources that make up the library.

3. Define a macro specific to your library like this.

           #if HAVE_VISIBILITY && BUILDING_LIBFOO
           # define LIBFOO_SHLIB_EXPORTED __attribute__((__visibility__("default")))
           #else
           # define LIBFOO_SHLIB_EXPORTED
           #endif

This macro should be enabled in all public header files of your library.

4. Annotate all variable, function and class declarations in all public header files of your library with ‘LIBFOO_SHLIB_EXPORTED’. This annotation can occur at different locations: between the ‘extern’ and the type or return type, or just before the entity being declared, or after the entire declarator. My preference is to put it right after ‘extern’, so that the declarations in the header files remain halfway readable.

Note that the precise control of the exported symbols will not work with other compilers than GCC >= 4.0, and will not work on systems where the assembler or linker lack the support of “hidden” visibility. Therefore, it’s good if, in order to reduce the risk of collisions with symbols in other libraries, you continue to use a prefix specific to your library for all non-static variables and functions and for all C++ classes in your library.

Note about other compilers: MSVC support can be added easily, by extending the definition of the macro mentioned above, to something like this:

      #if HAVE_VISIBILITY && BUILDING_LIBFOO
      # define LIBFOO_SHLIB_EXPORTED __attribute__((__visibility__("default")))
      #elif (defined _WIN32 && !defined __CYGWIN__) && @BUILDING_SHARED@ && BUILDING_LIBFOO
      # if defined DLL_EXPORT
      #  define LIBFOO_SHLIB_EXPORTED __declspec(dllexport)
      # else
      #  define LIBFOO_SHLIB_EXPORTED
      # endif
      #elif (defined _WIN32 && !defined __CYGWIN__) && @BUILDING_SHARED@
      # define LIBFOO_SHLIB_EXPORTED __declspec(dllimport)
      #else
      # define LIBFOO_SHLIB_EXPORTED
      #endif

Here BUILDING_SHARED is an Autoconf variable that you have to define. It ought to evaluate to 1 in a build configured with ‘--enable-shared’, or to 0 in a build configured with ‘--disable-shared’. You may use the following ‘configure.ac’ snippet:

        if test "$enable_shared" = yes; then
          BUILDING_SHARED=1
        else
          BUILDING_SHARED=0
        fi
        AC_SUBST([BUILDING_SHARED])

And DLL_EXPORT is defined by Libtool, on Windows platforms, when compiling for a shared library (called DLL under Windows). It is not defined when Libtool compiles an object file meant to be linked statically into some executable.

19.3 LD Version Scripts

The lib-symbol-versions module can be used to add shared library versioning support. Currently, only GNU LD and the Solaris linker supports this.

Version scripts provides information that can be used by GNU/Linux distribution packaging tools. For example, Debian has a tool dpkg-shlibdeps that can determine the minimal required version of each dependency (by looking at the symbol list) and stuff the information into the Debian specific packaging files.

For more information and other uses of version scripts, see Ulrich Drepper’s paper

https://www.akkadia.org/drepper/dsohowto.pdf

You use the module by importing it to your library, and then add the following lines to the Makefile.am that builds the library:

      if HAVE_LD_VERSION_SCRIPT
      libfoo_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libfoo.map
      endif

The version script file format is documented in the GNU LD manual, but a small example would be:

      LIBFOO_1.0 {
        global:
          libfoo_init; libfoo_doit; libfoo_done;
        local:
          *;

      };

If you target platforms that do not support linker scripts (i.e., all platforms that doesn’t use GNU LD) you may want to consider a more portable but less powerful alternative: libtool -export-symbols. It will hide internal symbols from your library, but will not add ELF versioning symbols. Your usage would then be something like:

      if HAVE_LD_VERSION_SCRIPT
      libfoo_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libfoo.map
      else
      libfoo_la_LDFLAGS += -export-symbols $(srcdir)/libfoo.sym
      endif

See the Libtool manual for the file syntax, but a small example would be:

      libfoo_init
      libfoo_doit
      libfoo_done

To avoid the need for a *.sym file if your symbols are easily expressed using a regular

expression, you may use -export-symbols-regex:
      if HAVE_LD_VERSION_SCRIPT
      libfoo_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libfoo.map
      else
      libfoo_la_LDFLAGS += -export-symbols-regex '^libfoo_.*'
      endif

For more discussions about symbol visibility, rather than shared library versioning, see the lib-symbol-visibility module (see Section 19.2 [Exported Symbols of Shared Libraries], page 856).

19.4 configmake

The configmake module builds a C include file named configmake.h containing the usual installation directory values; for example, those specified by --prefix or --libdir to configure. Each variable is given a #define with an all-uppercase macro name, such as PREFIX and LIBDIR. (Automake cannot create this file directly because the user might override directory values at make time.)

Specifically, the module retrieves values of the variables through configure followed by make, not directly through configure, so that a user who sets some of these variables consistently on the make command line gets correct results.

One advantage of this approach, compared to the classical approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS, is that it protects against the use of undefined variables. That is, if, say, $(libdir) is not set in the Makefile, LIBDIR is not defined by this module, and code using LIBDIR gives a compilation error.

Another advantage is that make output is shorter.

For the complete list of variables which are #defined this way, see the file gnulib/modules/configmake, or inspect your resulting gnulib Makefile.

19.5 warnings

The warnings module allows to regularly build a package with more GCC warnings than the default warnings emitted by GCC. It is often used indirectly through the manywarnings module (see Section 19.6 [manywarnings], page 860).

It provides the following functionality:

• You can select some warning options, such as ‘-Wall’, to be enabled whenever building with a GCC version that supports these options. The user can choose to override these warning options by providing the opposite options in the CFLAGS variable at configuration time.

• You can make these warnings apply to selected directories only. In projects where subprojects are maintained by different people, or where parts of the source code are imported from external sources (for example from gnulib), it is useful to apply different warning options to different directories.

• It lets you use ‘-Werror’ at ‘make distcheck’ time, to verify that on the maintainer’s system, no warnings remain. (Note that use of ‘-Werror’ in CFLAGS does not work in general, because it may break autoconfiguration.)

• Similarly, it lets you use ‘-Werror’ when the builder runs configure with an option

such as --enable-gcc-warnings.

To use this module, you need the following:

1. In configure.ac, use for example

      gl_WARN_ADD([-Wall], [WARN_CFLAGS])
      gl_WARN_ADD([-Wpointer-arith], [WARN_CFLAGS])

2. In the directories which shall use WARN_CFLAGS, use it in the definition of AM_CFLAGS,

like this:

      AM_CFLAGS = $(WARN_CFLAGS)

Note that the AM_CFLAGS is used in combination with CFLAGS and before CFLAGS in build rules emitted by Automake. This allows the user to provide CFLAGS that override

the WARN_CFLAGS.

‘gl_WARN_ADD([-Werror])’ is intended for developers, and should be avoided in contexts where it would affect ordinary installation builds. The warnings emitted by GCC depend, to some extent, on the contents of the system header files, on the size and signedness of built-in types, etc. Use of ‘-Werror’ would cause frustration to all users on platforms that the maintainer has not tested before the release. It is better if ‘-Werror’ is off by default, and is enabled only by developers. For example, ‘-Werror’ could affect ‘make distcheck’

or ‘configure --enable-gcc-warnings’ as mentioned above.

19.6 manywarnings

The manywarnings module enables many GCC warnings for your package. Here is an example use:

  AC_ARG_ENABLE([gcc-warnings],
    [AS_HELP_STRING([[--enable-gcc-warnings[=TYPE]]],
      [control generation of GCC warnings.  The TYPE 'no' disables
       warnings; 'yes' (default) generates cheap warnings;
       'expensive' in addition generates expensive warnings.])])
  AS_IF([test "$enable_gcc_warnings" != no],
    [
     # Set up the list of unwanted warning options.
     nw=
     if test "$enable_gcc_warnings" != expensive; then

Chapter 19: Build Infrastructure Modules 861

  nw="$nw -fanalyzer"
fi
nw="$nw -Wbad-function-cast" # Casting a function's result is not more
                             # dangerous than casting any other value.
nw="$nw -Winline"            # It's OK to not inline.
nw="$nw -Wsign-compare"      # Too many false alarms.
nw="$nw -Wstrict-overflow"   # It's OK to optimize strictly.
nw="$nw -Wsystem-headers"    # Don't warn in system headers.
# Setup the list of meaningful warning options for the C compiler.
# The list comes from manywarnings.m4. Warning options that are not
# generally meaningful have already been filtered out (cf.
# build-aux/gcc-warning.spec).
gl_MANYWARN_ALL_GCC([possible_warning_options])
# Compute the list of warning options that are desired.
gl_MANYWARN_COMPLEMENT([desired_warning_options],
                       [$possible_warning_options], [$nw])
# Compute the list of remaining undesired warning options.
# Namely those, that were not in manywarnings.m4 because they were
# already listed in build-aux/gcc-warning.spec; this includes those
# that are implied by -Wall.
gl_MANYWARN_COMPLEMENT([remaining_undesired_warning_options],
                       [$nw], [$possible_warning_options])
# Add the desired warning options to WARN_CFLAGS.
for w in $desired_warning_options; do
  gl_WARN_ADD([$w])
done
# Add the opposites of the remaining undesired warning options to
# WARN_CFLAGS.
for w in ` echo "$remaining_undesired_warning_options" | sed -e 's/-W/-Wno-/g'` ; do
  gl_WARN_ADD([$w])
done
])

This module sets up many GCC warning options. When you use it for the first time, it is common practice to do it as follows:

• Start with the newest major release of GCC. This will save you time, because some warning options produce many false alarms with older versions of GCC (such as

-Wstrict-overflow or -Wunsafe-loop-optimizations).

• Consider the platforms commonly used when enabling GCC warnings. This includes not only target architectures and operating systems, but also optimization options, which can greatly affect the warnings generated. Makefiles generated by configure default to -O2 optimization. If you also commonly build with -O0 or other optimization options, you can compile again with those options. Using more optimizations catches more bugs, because the compiler does a better static analysis of the program when optimizing more. Also, some warning options that diagnose suboptimal code generation, such as -Winline, are not effective when not optimizing. On the other hand, if it’s frequent to build the package with warnings but without optimizations, for debugging purposes, then you don’t want to see undesired warnings in these phases of development either.

• Compile the package with an empty nw value, that is, with all possible warnings enabled.

• Then you will go through the list of warnings. Since there are likely many warnings,

the first time, it’s a good idea to sort them by warning option first:

      $ grep warning: make-output.log \
        | sed -e 's/^\(.*\) \[\(-W.*\)\]$/\2  \1/' | sort -k1

• You will likely deactivate warnings that occur often and don’t point to mistakes in the code, by adding them to the ‘nw’ variable, then reconfiguring and recompiling. When warnings point to real mistakes and bugs in the code, you will of course not disable them but fix your code to silence the warning instead. Many GCC warning options usually don’t point to mistakes in the code; these warnings enforce a certain programming style. It is a project management decision whether you want your code to follow any of these styles. Note that some of these programming styles are conflicting. You cannot have them all; you have to choose among them. When a warning option pinpoints real bugs occasionally, but it also whines about a few code locations which are fine, we recommend to leave the warning option enabled. Whether you then live with the remaining few warnings, or choose to dis-

able them one-by-one through #pragma GCC diagnostic ignored "option" (see Sec-

tion “Diagnostic Pragmas” in Using the GNU Compiler Collection, https://gcc.gnu.

org/onlinedocs/gcc/Diagnostic-Pragmas.html), is again a project management de-

cision.

When a new major version of GCC is released, the Gnulib maintainers add the newly available warning options into the gl_MANYWARN_ALL_GCC macro. You will then enjoy the benefits of the new warnings, simply by updating to the newest Gnulib. If some of the new warnings are undesired, you can add them to the ‘nw’ variable, as described above.

Comments on particular warning flags:

‘-fanalyzer’

The manywarnings module by default uses GCC’s -fanalyzer option, as this issues some useful warnings. (It can also help GCC generate better code.) However, -fanalyzer can greatly slow down compilation, and in programs with large modules it can be so slow as to be unusable, so it is common for configure to disable it unless configure is given an option like --enable-

      gcc-warnings=expensive.
‘-fstrict-aliasing’

Although the manywarnings module does not enable GCC’s -fstrict-aliasing option, it is enabled by default if you compile with -O2 or higher optimization, and can help GCC generate better warnings.

‘-Wanalyzer-malloc-leak’

The -fanalyzer option generates many false alarms about malloc leaks, which

      manywarnings suppresses by also using -Wno-analyzer-malloc-leak.
‘-fstrict-flex-arrays’
      The manywarnings module by default uses GCC’s -fstrict-flex-arrays op-

tion if available, so that GCC can warn about nonportable usage of flexible array members. In a few cases this can help GCC generate better code, so it is not strictly a warning option.

‘-Wsign-compare’

GCC and Clang generate too many false alarms with -Wsign-compare, and we don’t recommend that warning. You can disable it by using gl_WARN_ADD([- Wno-sign-compare]) as illustrated above. Programs using Gnulib generally don’t enable that warning when compiling Gnulib code. If you happen to find a real bug with that warning we’d like to know it.

19.7 Running self-tests under valgrind

For projects written in C or similar languages, running the self-tests under Valgrind can reveal hard to find memory issues. Gnulib supports two ways to make use of Valgrind: one that enables use of Valgrind at configure time, when configure found it to be present; and one at the discretion of the developer.

19.7.1 Using valgrind without developer intervention

The valgrind-tests module searches for Valgrind at configure time and declares the LOG_VALGRIND automake variable for use with automake’s LOG_COMPILER.

After importing the valgrind-tests module to your project, you use it by adding the following to the Makefile.am that runs the self-tests:

      LOG_COMPILER = $(LOG_VALGRIND)

This will run all self-checks under valgrind.

Replace LOG_COMPILER with TESTS_ENVIRONMENT if you are using the old serial test harness. The parallel test harness has been the default in automake since version 1.11.3, but if you are using an older automake, or put ‘serial-tests’ in ‘AM_INIT_AUTOMAKE’/‘AUTOMAKE_OPTIONS’ you would still be using the serial test harness.

If you desire a project-wide decision that valgrind is not enabled by default, but still allow users to enable it with --enable-valgrind-tests you may put the following in configure.ac before gl INIT.

      gl_VALGRIND_TESTS_DEFAULT_NO

19.7.2 Valgrind options

The VALGRIND variable holds the name of the valgrind binary and some options passed to valgrind. You may provide additional options that are passed to valgrind using the ‘VALGRINDFLAGS’ variable, for example:

      ./configure VALGRINDFLAGS="--suppressions=~/local.supp"

Alternatively during build phase:

      make check VALGRINDFLAGS="--suppressions=~/local.supp"

This is useful if you have a valgrind suppression files that are needed to avoid triggering errors for known errors, typically in system libraries.

The VALGRIND variable include options that are useful when valgrind is run non-interactively through the test harness. The default parameters are -q to silence the output, --error-exitcode=1 to cause valgrind errors to be treated as fatal errors, and --leak-check=full to check for memory leaks.

These options can be controlled through the DEFAULT_VALGRINDFLAGS variable. For example, when configuring the package:

      ./configure DEFAULT_VALGRINDFLAGS="--quiet"

Alternatively, during the build phase:

      make check DEFAULT_VALGRINDFLAGS="--quiet"
   That would have the effect of removing --error-exitcode=1 and --leak-check=full

from the default options, thus causing any valgrind errors to be silently ignored, instead of causing fatal test failures.

As a developer you may use the variables in configure.ac before calling gl_INIT, like this if your program has deeply-nested call chains:

      gl_EARLY
      ...
      VALGRINDFLAGS="$VALGRINDFLAGS --num-callers=42"
      ...
      gl_INIT

Note that any user-supplied VALGRINDFLAGS value is preserved, which is usually what you want.

Finally, as a developer you may want to provide additional per-directory options to valgrind and the AM_VALGRINDFLAGS variable can be used for this. For example:

      AM_VALGRINDFLAGS = --suppressions=$(srcdir)/local-valgrind.supp
      LOG_COMPILER = $(LOG_VALGRIND)

19.7.3 Using valgrind at the developer’s discretion

In this approach, you define a Makefile.am variable ‘VALGRIND’ (or, more abstractly, ‘CHECKER’), that is usually set to empty. When you have configured and built the package and you decide that you want to run the tests with valgrind, you do so by modifying the definition of ‘VALGRIND’ in the Makefile.

19.7.4 How to use Valgrind with shell scripts

It is not desirable to apply valgrind to shell scripts or other non-binaries, because

• It is wasteful, and you usually don’t want to look for memory leaks in bash.

• On a bi-arch system, you may get an error message such as "valgrind: wrong executable class (eg. 32-bit instead of 64-bit)".

There are two ways to avoid this:

• Using the Automake parallel-tests feature, you can use the following instead:

           TEST_EXTENSIONS = .pl .sh
           LOG_COMPILER = $(LOG_VALGRIND)

Then valgrind will only be used for the non-.sh and non-.pl tests.

For old automake (before 1.11.3), you will need AUTOMAKE_OPTIONS = parallel-tests to enable the parallel test harness.

• You can make use of the build-aux/run-test script from Gnulib. Add these lines to

    your Makefile.am:
           LOG_COMPILER += $(SHELL) $(top_srcdir)/build-aux/run-test '$(LOG_VALGRIND)'

Replace LOG_COMPILER with TESTS_ENVIRONMENT if you use the old serial test harness.

However, with this measure in place, binaries invoked through scripts will not be invoked under valgrind. This can be solved by defining environment variables in the TESTS_ ENVIRONMENT variable that are then used by the shell scripts. For example, add the following:

      TESTS_ENVIRONMENT = VALGRIND='$(LOG_VALGRIND)'

And then modify the shell scripts to invoke the binary prefixed with $VALGRIND.

19.8 VCS To ChangeLog

Gnulib provides the ‘vcs-to-changelog’ module to generate an output similar to the GNU ChangeLog format from metadata of source control software such as git. Here’s an example of using ‘vcs-to-changelog’:

     build-aux/vcs-to-changelog.py <from_ref> <to_ref>

where <from_ref> and <to_ref> refer to the range of commits to generate the output. VCS To ChangeLog currently recognises changes in C source code and can traverse

commits in git. Additional source frontends and source control backends may be added to the module. ‘vcs-to-changelog’ takes the following optional arguments:

• -d: Run the parser debugger, used for debugging ‘vcs-to-changelog’

• -q filename: Load filename as the quirks file for the project.

The quirks file is a python module that must minimally implement a get_project_ quirks function that returns an object of type ProjectQuirks or its subclass. The subclass may override the following members of ProjectQuirks:

• repo: Specify the project repo source control. The default value is git.

• IGNORE_LIST: A list of files to ignore in the changesets, either because they are not needed (such as the ChangeLog) or because they are not parseable. For example, the GNU C Library has a header file that is only assembly code, which breaks the C parser.

• MACRO_QUIRKS: A list of dictionary entries with indexes as orig and sub where orig is a Python regular expression pattern to match and sub is the substitution. These substitutions are used to work around C/C++ macros that are known to break parsing of C programs.

• C_MACROS: This is a list of C preprocessor macro definitions that are extensively used and are known to break parsing due to some characteristic, mainly the lack of a semicolon at the end.

19.9 gitlog-to-changelog

Gnulib have a module gitlog-to-changelog to parse git log output and generate

ChangeLog files, see https://www.gnu.org/prep/standards/html_node/Change-Logs.
html.

You would typically use it by extending the dist-hook in the top-level Makefile.am like this:

     dist-hook: gen-ChangeLog
     ...
     .PHONY: gen-ChangeLog
     gen-ChangeLog:
             $(AM_V_GEN)if test -e .git; then                               \
                     $(top_srcdir)/build-aux/gitlog-to-changelog >          \
                             $(distdir)/cl-t &&                             \
                     { rm -f $(distdir)/ChangeLog &&                        \
                       mv $(distdir)/cl-t $(distdir)/ChangeLog; }           \
             fi

See gitlog-to-changelog --help for complete documentation.

The tool prints timestamps using localtime, so its output may be different depending on what locale the developer that runs the tool is using. If your project desire reproducible ChangeLog files that doesn’t depend on locale settings, use something like the following.

gen-ChangeLog:
        $(AM_V_GEN)if test -e .git; then                               \
                env LC_ALL=en_US.UTF-8 TZ=UTC=0                        \
                        $(top_srcdir)/build-aux/gitlog-to-changelog >  \
                        $(distdir)/cl-t &&                             \
                { rm -f $(distdir)/ChangeLog &&                        \
                  mv $(distdir)/cl-t $(distdir)/ChangeLog; }           \
        fi

If you wish to limit the ChangeLog entries (perhaps for size issues) to only contain entries since a particular git tag, use something like the following:

dist-hook: gen-ChangeLog
...
gen_start_ver = 8.31
.PHONY: gen-ChangeLog
gen-ChangeLog:
        $(AM_V_GEN)if test -e .git; then                               \
          log_fix="$(srcdir)/build-aux/git-log-fix";                   \
          test -e "$$log_fix"                                          \
            && amend_git_log="--amend=$$log_fix"                       \
            || amend_git_log=;                                         \
          $(top_srcdir)/build-aux/gitlog-to-changelog $$amend_git_log  \
            -- v$(gen_start_ver)~.. > $(distdir)/cl-t &&               \
            { printf '\n\nSee the source repo for older entries\n'     \
              >> $(distdir)/cl-t &&                                    \
              rm -f $(distdir)/ChangeLog &&                            \
              mv $(distdir)/cl-t $(distdir)/ChangeLog; }               \
        fi

20 Build Infrastructure Files

Gnulib contains also a small number of files that are not part of modules. They are meant to be imported into packages by means of ‘gnulib-tool --copy-file’, not ‘gnulib-tool --import’. For example, the commands to import the files config.guess and config.sub are

      for file in config.guess config.sub; do
        $GNULIB_TOOL --copy-file build-aux/$file \
          && chmod a+x build-aux/$file \
          || exit $?
      done

Packages that don’t use Gnulib can get hold of these files through direct download from Gnulib’s git repository. The commands to do this look as follows:

      for file in config.guess config.sub; do
        echo "$0: getting $file..."
        wget -q --timeout=5 -O build-aux/$file.tmp "https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/${file};hb=HEAD" \
          && mv build-aux/$file.tmp build-aux/$file \
          && chmod a+x build-aux/$file
        retval=$?
        rm -f build-aux/$file.tmp
        test $retval -eq 0 || exit $retval
      done

20.1 Recognizing platforms

build-aux/config.guess
build-aux/config.sub

These files are helper scripts, invoked by the ‘configure’ script. config.guess recognizes the platform on which the script is running, and produces a triplet

          of the form cpu-type-vendor-operating_system. config.sub receives a pos-

sibly abbreviated triplet and produces a canonical triplet for a platform. For

          more information, see https://www.gnu.org/prep/standards/html_node/
          Configuration.html.

It is important that you always include the newest versions of these two files in your tarball, because people who work on emerging platforms otherwise have a hard time building your package.

20.2 Utilities for Makefiles

These programs can be used in Makefiles. Some of them are also described in https://

www.gnu.org/software/automake/manual/html_node/Auxiliary-Programs.html.
build-aux/ar-lib
build-aux/compile

These two scripts are necessary for supporting portability to native Windows with the MSVC compiler. compile is a wrapper script that invokes the compiler and provides a command-line interface compatible with Unix compilers. Similarly, ar-lib is a wrapper script that provides a command-line interface compatible with Unix ar.

build-aux/depcomp

This is a helper script, used by Makefile rules generated by GNU Automake. It generates Makefile dependencies while compiling a file.

build-aux/install-sh

This is a helper script, used by Makefile rules generated by GNU Automake. It installs files during the make install phase. In the Makefile, don’t use this

file directly; always use $(INSTALL_PROGRAM) or $(INSTALL_DATA) instead.
build-aux/mdate-sh

This script determines the modification time of a file and pretty-prints it. The typical use is to add a “Last modified” line to the documentation.

build-aux/mkinstalldirs

This is a helper script, used by Makefile rules generated by GNU Automake. It creates directories during the make install phase. It is roughly equivalent to ‘mkdir -p’ (except that the latter is not portable). In the Makefile, don’t use this file directly; always use $(MKDIR_P) instead.

build-aux/mktempd

This script creates a temporary directory. It is roughly equivalent to ‘mktemp -d’ (except that the latter is not portable).

build-aux/move-if-change

This script moves a freshly generated file to a destination file, with a special optimization for the case that both files are identical. In this case the freshly generated file is deleted, and the time stamp of the destination file is not changed. This is useful when updating a file that rarely actually changes and which many Makefile targets depend upon.

20.3 Programs for developing in Git checkouts

These programs can help when developing in a Git checkout. The maintainer of the package copies these programs into the version control of the package, so that co-developers can use these tools right away.

top/gitsub.sh

This program manages the subdirectories of a Git checkout that come from other packages, including Gnulib.

top/bootstrap
top/autopull.sh
top/autogen.sh
top/bootstrap-funclib.sh

This is a set of three programs and a function library, that manage the source directory of a package, preparing for the state where ‘./configure’ can be used. autopull.sh is a program for fetching dependencies that may require network accesses. It manages the Git submodules, including Gnulib – assuming that Gnulib is a Git submodule. It also can fetch the PO files for internationalized packages. autogen.sh is a program that is meant to be run after autopull.sh. It generates all autogeneratable files that are omitted from version control. Usually this means that it invokes gnulib-tool and automake, that generate files from other files. bootstrap is a wrapper around both: ./bootstrap --pull is equivalent

to ./autopull.sh, ./bootstrap --gen is equivalent to ./autogen.sh.

Plain ./bootstrap is equivalent to ./autopull.sh immediately followed by ./autogen.sh; however, because plain ./bootstrap mixes version control management and generation of files in non-obvious ways, it has a number of usability issues for the advanced developer. bootstrap-funclib.sh is a function library for these three programs. It is not meant to be used directly. All three programs make use of a configuration file, called bootstrap.conf.

build-aux/bootstrap

This acts like top/bootstrap, except it does not need the companion files

autogen.sh, autopull.sh, and bootstrap-funclib.sh so it avoids some clut-

ter in your project’s top level directory. With this approach, you update via

./bootstrap --pull and ./bootstrap --gen instead of via ./autopull.sh

and ./autogen.sh. Otherwise this approach acts similarly, and uses the same

bootstrap.conf file.
build-aux/bootstrap.conf

This is the template configuration file. After copying it into the top-level directory of your package, you need to customize it.

build-aux/po/Makefile.in.in
build-aux/po/remove-potcdate.sin

These are auxiliary files used by bootstrap. You don’t have to copy them yourself; bootstrap will do that.

20.4 Utilities for building documentation

These are auxiliary files for building documentation.

build-aux/texinfo.tex

This file is needed for the conversion of Texinfo-format documentation to PDF, PostScript, or DVI formats. It implements the GNU Texinfo commands on top of plain TeX.

build-aux/x-to-1.in

This file, once processed, gives a program x-to-1, that produces a manual page for a program, by combining a skeleton with the program’s --help output.

20.5 Utilities for building libraries

build-aux/declared.sh

This program extracts the declared global symbols of a C header file. It is useful when you want to control the set of symbols exported by a library. See Section 19.2 [Exported Symbols of Shared Libraries], page 856.

20.6 Utilities for running test suites

build-aux/run-test

This file is a test driver that supports running a test under valgrind.

build-aux/test-driver.diff

This is a patch, against Automake’s test driver, that supports running a test suite on Android.

21 Release Management Files

Gnulib also contain a few scripts that are useful for the release management of a package. They can be used directly off the Gnulib checkout; they don’t need to copied first.

21.1 Tools for releasing packages with shared libraries

build-aux/libtool-next-version

This program is a wizard that helps a maintainer update the libtool version of a shared library, without making mistakes in this process. For background

documentation, see https://www.gnu.org/software/libtool/manual/
html_node/Updating-version-info.html.

21.2 Tools for uploading release tarballs

build-aux/gnupload

This program is a user-friendly way to upload a release tarball to one of the GNU servers (ftp.gnu.org or alpha.gnu.org). It implements the in-

terface described in https://www.gnu.org/prep/maintain/html_node/
Automated-FTP-Uploads.html.
build-aux/ncftpput-ftp

This is a helper program that mimics the ncftpput program used by gnupload. If you want to use gnupload but don’t have ncftp installed, copy this file into your $PATH, renaming it to ncftpput.

Appendix A GNU Free Documentation License

Version 1.3, 3 November 2008

Copyright \begin{matrix}c \\ ◯ \end{matrix} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.

 https://fsf.org/

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTEX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.

The “publisher” means any person or entity that distributes copies of the Document to the public.

A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the

Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

C. State on the Title page the name of the publisher of the Modified Version, as the

publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other

copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public

permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections and required Cover

Texts given in the Document’s license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled “History”, Preserve its Title, and add to it an item

stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

K. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

M. Delete any section Entitled “Endorsements”. Such a section may not be included

in the Modified Version. N. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in

title with any Invariant Section. O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.”

6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

See https://www.gnu.org/licenses/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

11. RELICENSING “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site. “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

        Copyright (C)  year  your name.
        Permission is granted to copy, distribute and/or modify this document
        under the terms of the GNU Free Documentation License, Version 1.3
        or any later version published by the Free Software Foundation;
        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
        Texts.  A copy of the license is included in the section entitled `  ` GNU
        Free Documentation License''.

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with…Texts.” line with this:

          with the Invariant Sections being list their titles, with
          the Front-Cover Texts being list, and with the Back-Cover Texts
          being list.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Appendix B Gnulib history

In the beginning, Richard Stallman maintained the regular expression engine of GNU and made it available to other GNU packages, such as sed, awk, grep, so that they could use the same engine. Recall that there was no GNU C library at the time.

A couple of years later, Jim Meyering, who was maintaining the shell utilities, the file utilities, and the text processing utilities, collected the common parts of these three packages in the same repository. Paul Eggert joined in, with code coming from a few GNU packages that he maintained, and so did Bruno Haible, with reusable code from the GNU gettext package.

As they cared for portability, many changes in the C code were accompanied by changes in the build infrastructure. Copying these changes into packages — it was all done manually — became cumbersome. So they wrote a program, called ‘gnulib-tool’, that does this job of copying the requested shared code into a particular package. This was in 2002.

Providing a substitute / override for a system function was relatively easy. Providing a substitute / override for a system header file was significantly harder, but was done

successively: for stdint.h in 2004, for stdarg.h, sys/socket.h, sys/stat.h in 2006, for

sys/time.h, wchar.h in 2007, and the development of the corresponding idioms took until 2010.

Unicode string modules (that make up GNU libunistring) were added in 2007–2009. Modules for numeric functions (<math.h>) were added in 2010–2011. Modules for container data structures were added between 2006 and 2018. Versatile bit-set modules were added in 2018. POSIX threads on non-POSIX platforms, as well as ISO C threads on all platforms,

were added in 2019.

The posix_spawn facility was brought to completion on native Windows in 2022, providing the world’s first posix_spawn implementation for this platform.

Support for Android was added in 2023 and immediately used by GNU Emacs for Android.

Functions for working with Unicode characters in multibyte representation, based on mbrtoc32, were added in 2023.

Modules for manipulating the floating-point environment (fenv.h) were added in 2023. The ‘gnulib-tool’ rewrite in Python, that was started by Dmitry Selyutin in 2012 but

lay unfinished for many years, was completed by Collin Funk and Bruno Haible in 2024.

Index

$

$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834

(

( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832

)

) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832

*

‘*’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828

+

‘+’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828

–

‘-’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830

.

‘.’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827

=

‘=]’ in regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

?

‘?’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828

[

‘[’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 ‘[=’ in regex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831 ‘[^’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 ‘[colon’ in regex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

]

‘]’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830

ˆ ‘^’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830, 834

__attribute__. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 __libc_single_threaded . . . . . . . . . . . . . . . . . . . . . 725 __VA_ARGS__. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 _Exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 _exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 _Fork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 _GL_EXTERN_INLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 _GL_INLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803

_GL_INLINE_HEADER_BEGIN . . . . . . . . . . . . . . . . . . . . 803

_GL_INLINE_HEADER_END . . . . . . . . . . . . . . . . . . . . . . 803 _longjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 _Noreturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 _setjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 _tolower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 _toupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

\

\ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826, 830 ‘\'’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836 \( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 \) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 ‘\<’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\>’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\` ’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\{’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 ‘\}’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 \| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 ‘\b’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\B’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\s’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\S’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\w’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 ‘\W’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835

{

‘{’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829

}

‘}’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829

|

| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829

Index 882

A

a64l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 abort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Aborting execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 abs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

AC_LIB_HAVE_LINKFLAGS(name, [dependencies],
  [includes], [testcode],

[missing-message]) . . . . . . . . . . . . . . . . . . . . . . . 853

AC_LIB_LINKFLAGS(name, [dependencies]). . . 853

accept. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 accept4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 acct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 acos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 acosf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 acosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 acoshf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 acoshl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 acosl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 addmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 addseverity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 adjtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 adjtimex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 advance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 aio_cancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 aio_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 aio_fsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 aio_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 aio_read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 aio_return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 aio_suspend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 aio_write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 alarm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 aligned_alloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 ALLOC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 ALLOC_N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 ALLOC_N_UNINITIALIZED . . . . . . . . . . . . . . . . . . . . . . 791 alloca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 allocated initialization . . . . . . . . . . . . . . . . . . . . . . . 837 alphasort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 alternation operator . . . . . . . . . . . . . . . . . . . . . . . . . . 829 alternation operator and ‘^’ . . . . . . . . . . . . . . . . . . . 834 anchoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 anchors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 argp_err_exit_status . . . . . . . . . . . . . . . . . . . . . . . 522 argp_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 argp_failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 argp_help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 argp_parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

argp_program_bug_address. . . . . . . . . . . . . . . . . . . 523

argp_program_version . . . . . . . . . . . . . . . . . . . . . . . 523

argp_program_version_hook. . . . . . . . . . . . . . . . . . 524

argp_state_help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 argp_usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 argz_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 argz_add_sep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 argz_append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 argz_count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 argz_create. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 argz_create_sep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 argz_delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 argz_extract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 argz_insert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 argz_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 argz_replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 argz_stringify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 asctime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 asctime_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 asin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 asinf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 asinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 asinhf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 asinhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 asinl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 asprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 assert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 assertion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 atan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 atan2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 atan2f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 atan2l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 atanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 atanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 atanhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 atanhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 atanl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 atexit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 atof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 atoi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 atol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 atoll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 authdes_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 authdes_getucred . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 authdes_pk_create . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 authnone_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 authunix_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620

                                                authunix_create_default . . . . . . . . . . . . . . . . . . . . 620

autopoint, caveat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

B

back-references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833 backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 backtrace_symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 backtrace_symbols_fd . . . . . . . . . . . . . . . . . . . . . . . 544 backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828, 830 basename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 bcmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 bcopy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 bdflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 beginning-of-line operator . . . . . . . . . . . . . . . . . . . . . 834 bind. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

                                                bind_textdomain_codeset . . . . . . . . . . . . . . . . . . . . 558

bindresvport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 bindtextdomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 block size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 bracket expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 brk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 bsd_signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 bsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 bswap_16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 bswap_32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 bswap_64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 btowc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

buffer field, set by re_compile_pattern . . . . . . 837

buffer initialization . . . . . . . . . . . . . . . . . . . . . . . . . . 837 bzero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500

C

c16rtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 c32rtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 c8rtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 C++ header files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 C++ tests modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 cabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 cabsf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 cabsl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 cacos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 cacosf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 cacosh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 cacoshf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 cacoshl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 cacosl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 call_once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 calloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 callrpc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 canonicalize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 canonicalize_file_name . . . . . . . . . . . . . . . . . . . . . 689 canonicalizef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 canonicalizel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 capget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 capset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 carg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 cargf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 cargl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 casin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 casinf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 casinh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 casinhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 casinhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 casinl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 catan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 catanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 catanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 catanhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 catanhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 catanl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 catclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 catgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 catopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 cbrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 cbrtf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 cbrtl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 ccos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 ccosf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 ccosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 ccoshf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 ccoshl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 ccosl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 ceil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 ceilf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 ceill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 cexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 cexpf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 cexpl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 cfgetispeed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 cfgetospeed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 cfmakeraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 cfree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 cfsetispeed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 cfsetospeed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 cfsetspeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 character classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831 chdir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 chmod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 chown. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 cimag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 cimagf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 cimagl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 clearenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 clearerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 clearerr_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 clnt_broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 clnt_create. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 clnt_pcreateerror . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 clnt_perrno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 clnt_perror. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 clnt_spcreateerror. . . . . . . . . . . . . . . . . . . . . . . . . . 625 clnt_sperrno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 clnt_sperror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 clntraw_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 clnttcp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 clntudp_bufcreate . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 clntudp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 clntunix_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 clock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 clock_adjtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 clock_getcpuclockid . . . . . . . . . . . . . . . . . . . . . . . . 121 clock_getres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 clock_gettime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 clock_nanosleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 clock_settime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 clog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 clog10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 clog10f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 clog10l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 clogf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 clogl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 clone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 close. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 closedir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 closefrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 closelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 cnd_broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 cnd_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 cnd_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 cnd_signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 cnd_timedwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 cnd_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 ‘colon]’ in regex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831 comments describing functions . . . . . . . . . . . . . . . . . 39 conditional dependencies . . . . . . . . . . . . . . . . . . . . . . . 35 configmake module . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 configmake.h, module for updating . . . . . . . . . . . 859 confstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 conj. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 conjf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 conjl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 copy_file_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 copysign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 copysignf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 copysignl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 cosf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 cosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 coshf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 coshl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 cosl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 cpow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 cpowf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 cpowl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 cproj. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 cprojf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 cprojl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 creal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 crealf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 creall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 creat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 crypt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 csin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 csinf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 csinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 csinhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 csinhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 csinl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 csqrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 csqrtf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 csqrtl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 ctan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 ctanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 ctanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 ctanhf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 ctanhl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 ctanl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 ctermid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 ctime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 ctime_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 cuserid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681

D

daddl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 daylight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 dbm_clearerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 dbm_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 dbm_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 dbm_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 dbm_fetch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 dbm_firstkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 dbm_nextkey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 dbm_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 dbm_store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 dcgettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 dcngettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 ddivl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 DEF files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 describing functions, locating. . . . . . . . . . . . . . . . . . . 39 dgettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 difftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 dirent-safer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 dirfd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 dirname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 div . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 dl_iterate_phdr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 dladdr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 dladdr1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 dlclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 dlerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 dlinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 dlmopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 dlopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 dlsym. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 dlvsym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 dmull. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 dn_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 dn_expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 dn_skipname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 dngettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 double inclusion of header files . . . . . . . . . . . . . . . . . 37 dprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 drand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 drand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 drem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 dremf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 dreml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 dsubl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 dup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 dup2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 dup3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 duplocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 dysize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743

E

eaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 ecvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 ecvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 Egrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 encrypt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 end in struct re_registers . . . . . . . . . . . . . . . . . . 841 end-of-line operator . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 endaliasent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 endfsent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 endgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 endhostent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 endmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 endnetent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 endnetgrent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 endprotoent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 endpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 endrpcent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 endservent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 endsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 endspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 endttyent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 endusershell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 endutent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 endutxent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 environ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 envz_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 envz_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 envz_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 envz_merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 envz_remove. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 envz_strip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 epoll_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 epoll_create1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 epoll_ctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 epoll_pwait. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 epoll_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 equivalence class expression in regex . . . . . . . . . . 831 erand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 erand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 erf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 erfc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 erfcf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 erfcl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 erff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 erfl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 errno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541, 814 error_at_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 error_message_count . . . . . . . . . . . . . . . . . . . . . . . . 542 error_one_per_line. . . . . . . . . . . . . . . . . . . . . . . . . . 542 error_print_progname . . . . . . . . . . . . . . . . . . . . . . . 542 errx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 ether_aton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 ether_aton_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 ether_hostton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 ether_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 ether_ntoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 ether_ntoa_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 ether_ntohost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 euidaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 eventfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 eventfd_read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 eventfd_write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 execl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 execle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 execlp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 execv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 execve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 execveat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 execvp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 execvpe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749 exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 exp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 exp10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 exp10f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 exp10l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 exp2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 exp2f. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 exp2l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 expf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 expl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 explicit_bzero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 expm1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 expm1f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 expm1l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 EXPR_SIGNED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 extern inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 Extra tests modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

F

fabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 fabsf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 fabsl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 faccessat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 fadd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 faddl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 fallocate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 fanotify_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 fanotify_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 fastmap initialization . . . . . . . . . . . . . . . . . . . . . . . . . 837 fastmaps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 fattach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 fchdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 fchmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 fchmodat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 fchown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 fchownat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 fclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 fcloseall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 fcntl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 fcntl-safer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 fcvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 fcvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 FD_CLR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 FD_ISSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 FD_SET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 FD_ZERO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 fdatasync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 fdetach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 fdim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 fdimf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 fdiml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 fdiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 fdivl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 fdopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 fdopendir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 feclearexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 fedisableexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 feenableexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 fegetenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 fegetexcept. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 fegetexceptflag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 fegetmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 fegetround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 feholdexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 feof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 feof_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 feraiseexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 ferror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 ferror_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 fesetenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 fesetexcept. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 fesetexceptflag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 fesetmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 fesetround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 fetestexcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 fetestexceptflag . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 feupdateenv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 fexecve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 fflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 fflush_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 ffs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 ffsl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 ffsll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 fgetc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 fgetc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 fgetfilecon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 fgetgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 fgetgrent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 fgetpos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 fgetpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 fgetpwent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 fgets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 fgets_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 fgetsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 fgetsgent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 fgetspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 fgetspent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 fgetwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 fgetwc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763

fgetws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
fgetws_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
fgetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
fileno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
fileno_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Finding modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
finitef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
finitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
flistxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
flock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
flockfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
floor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
floorf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
floorl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
fma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
fmaf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
fmal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
fmax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
fmaxf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
fmaxl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
fmaxmag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
fmaxmagf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
fmaxmagl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
fmemopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
fmin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
fminf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
fminl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
fminmag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
fminmagf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
fminmagl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
fmod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
fmodf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
fmodl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
fmtmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
fmul. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
fmull. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
fnmatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
fopen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
fopen-safer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
fopencookie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
fork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
forkpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
fpathconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
fpclassify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
fprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
fputc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
fputc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
fputs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
fputs_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
fputwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
fputwc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
fputws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
fputws_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
fread. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
fread_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
free. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
freeaddrinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

freeifaddrs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 freelocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 FREE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 fremovexattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 freopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 freopen-safer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 frexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 frexpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 frexpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 fromfp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 fromfpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 fromfpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 fromfpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 fromfpxf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 fromfpxl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 fscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 fseek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 fseeko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 fsetpos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 fsetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 fstat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 fstatat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 fstatfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 fstatvfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 fsub. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 fsubl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 fsync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 ftell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 ftello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 ftime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 ftok. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 ftruncate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 ftrylockfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 fts_children . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 fts_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 fts_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 fts_read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 fts_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 ftw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 funlockfile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 futimens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 futimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 futimesat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 fwide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 fwprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 fwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 fwrite_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 fwscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

G

gai_strerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 gamma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 gammaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 gammal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 gcd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 gcvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 get_avphys_pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 get_current_dir_name . . . . . . . . . . . . . . . . . . . . . . . 749 get_myaddress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 get_nprocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 get_nprocs_conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 get_phys_pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 getaddrinfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 getaliasbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 getaliasbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 getaliasent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 getaliasent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 getauxval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 getc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 getc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 getchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 getchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 getcontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 getcpu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 getcwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 getdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 getdate_err. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 getdate_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 getdelim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 getdirentries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 getdomainname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 getdtablesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 getegid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 getentropy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722 getenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 geteuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 getfilecon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 getfsent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 getfsfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 getfsspec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 getgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 getgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 getgrent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 getgrgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 getgrgid_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 getgrnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 getgrnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 getgrouplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 getgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 gethostbyaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 gethostbyaddr_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 gethostbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 gethostbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 gethostbyname2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 gethostbyname2_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 gethostent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 gethostent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 gethostid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 gethostname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 getifaddrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 getipv4sourcefilter . . . . . . . . . . . . . . . . . . . . . . . . 592 getitimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 getline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 getloadavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 getlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 getlogin_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 getmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 getmntent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 getmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 getnameinfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 getnetbyaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 getnetbyaddr_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 getnetbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 getnetbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 getnetent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 getnetent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 getnetgrent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 getnetgrent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 getnetname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 getopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 getopt_long. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 getopt_long_only . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 getpagesize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 getpass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 getpayload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 getpayloadf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 getpayloadl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 getpeername. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 getpgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 getpgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 getpid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 getpmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 getppid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 getpriority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 getprogname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 getprotobyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 getprotobyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 getprotobynumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 getprotobynumber_r. . . . . . . . . . . . . . . . . . . . . . . . . . 586 getprotoent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 getprotoent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 getpt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 getpublickey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 getpw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 getpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 getpwent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 getpwnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 getpwnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 getpwuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 getpwuid_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 getrandom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722 getresgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 getresuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 getrlimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 getrpcbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 getrpcbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 getrpcbynumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 getrpcbynumber_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 getrpcent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 getrpcent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 getrpcport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 getrusage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 gets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

getsecretkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
getservbyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
getservbyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
getservbyport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
getservbyport_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
getservent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
getservent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
getsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
getsgent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
getsgnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
getsgnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
getsid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
getsockname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
getsockopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
getsourcefilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
getspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
getspent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
getspnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
getspnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
getsubopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
gettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
gettextize, caveat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
gettid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
gettimeofday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
getttyent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
getttynam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
getuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
getumask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
getusershell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
getutent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
getutent_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
getutid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
getutid_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
getutline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
getutline_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
getutmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
getutmpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
getutxent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
getutxid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
getutxline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
getw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
getwc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
getwc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
getwchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
getwchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
getwd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
getxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
gitlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
glob. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
glob_pattern_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
globfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
gmtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
gmtime_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
gnu_dev_major . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
gnu_dev_makedev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
gnu_dev_minor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
gnu_get_libc_release . . . . . . . . . . . . . . . . . . . . . . . 552
gnu_get_libc_version . . . . . . . . . . . . . . . . . . . . . . . 552

gnulib-tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 grantpt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 group_member . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 grouping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 gsignal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675

H

h_errno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 hasmntopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 hcreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 hcreate_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 hdestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 hdestroy_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 header file include protection . . . . . . . . . . . . . . . . . . . 37 Header files and C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 herror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 host2netname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 hsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 hsearch_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 hstrerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 htonl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 htons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 hypot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 hypotf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 hypotl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

I

iconv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 iconv_close. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 iconv_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 if_freenameindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 if_indextoname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 if_nameindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 if_nametoindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 ilogb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 ilogbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 ilogbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 imaxabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 imaxdiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 in6addr_any. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 in6addr_loopback . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 inet_addr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 inet_aton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 inet_lnaof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 inet_makeaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 inet_net_ntop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 inet_net_pton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 inet_netof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 inet_network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 inet_nsap_addr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 inet_nsap_ntoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 inet_ntoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 inet_ntop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 inet_pton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 inet6_opt_append . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 inet6_opt_find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 inet6_opt_finish . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 inet6_opt_get_val . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 inet6_opt_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 inet6_opt_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 inet6_opt_set_val . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 inet6_option_alloc. . . . . . . . . . . . . . . . . . . . . . . . . . 593 inet6_option_append . . . . . . . . . . . . . . . . . . . . . . . . 593 inet6_option_find . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 inet6_option_init . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 inet6_option_next . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 inet6_option_space. . . . . . . . . . . . . . . . . . . . . . . . . . 594 inet6_rth_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 inet6_rth_getaddr . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 inet6_rth_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 inet6_rth_reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 inet6_rth_segments. . . . . . . . . . . . . . . . . . . . . . . . . . 597 inet6_rth_space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 initgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 initial import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 initstate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 initstate_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692 inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 innetgr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 inotify_add_watch . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 inotify_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 inotify_init1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 inotify_rm_watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 insque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 INT_ADD_OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 INT_ADD_OVERFLOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800 INT_ADD_RANGE_OVERFLOW . . . . . . . . . . . . . . . . . . . . . 801 INT_ADD_WRAPV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798 INT_BUFSIZE_BOUND . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 INT_DIVIDE_OVERFLOW . . . . . . . . . . . . . . . . . . . . . . . . 800

INT_DIVIDE_RANGE_OVERFLOW. . . . . . . . . . . . . . . . . . 802
INT_LEFT_SHIFT_OVERFLOW . . . . . . . . . . . . . . . . . . . . 800
INT_LEFT_SHIFT_RANGE_OVERFLOW . . . . . . . . . . . . . 802

INT_MULTIPLY_OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 INT_MULTIPLY_OVERFLOW . . . . . . . . . . . . . . . . . . . . . . 800

INT_MULTIPLY_RANGE_OVERFLOW . . . . . . . . . . . . . . . 802

INT_MULTIPLY_WRAPV. . . . . . . . . . . . . . . . . . . . . . . . . . 798 INT_NEGATE_OVERFLOW . . . . . . . . . . . . . . . . . . . . . . . . 800

INT_NEGATE_RANGE_OVERFLOW. . . . . . . . . . . . . . . . . . 802

INT_REMAINDER_OVERFLOW . . . . . . . . . . . . . . . . . . . . . 800

INT_REMAINDER_RANGE_OVERFLOW . . . . . . . . . . . . . . 802

INT_STRLEN_BOUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 INT_SUBTRACT_OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 INT_SUBTRACT_OVERFLOW . . . . . . . . . . . . . . . . . . . . . . 800

INT_SUBTRACT_RANGE_OVERFLOW . . . . . . . . . . . . . . . 802

INT_SUBTRACT_WRAPV. . . . . . . . . . . . . . . . . . . . . . . . . . 798 integer arithmetic portability. . . . . . . . . . . . . . . . . . . 12 integer bounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 integer overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 integer overflow checking . . . . . . . . . . . . . . . . . . . . . . 796 integer properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 integer range overflow. . . . . . . . . . . . . . . . . . . . . . . . . 800 integer type overflow . . . . . . . . . . . . . . . . . . . . . . . . . . 799 interval expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 invoking gnulib-tool . . . . . . . . . . . . . . . . . . . . . . . . . . 18 ioctl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 ioperm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 iopl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 isalnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 isalnum_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 isalpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 isalpha_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 isascii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 isastream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 isatty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 isblank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 isblank_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 iscntrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 iscntrl_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 isctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 isdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 isdigit_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 isfdtype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 isfinite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 isgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 isgraph_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 isgreater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 isgreaterequal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 isinf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 isinff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 isinfl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 isless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 islessequal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 islessgreater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 islower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 islower_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 isnan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 isnanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 isnanl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 isnormal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 isprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 isprint_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 ispunct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 ispunct_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 isspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 isspace_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 isunordered. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 isupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 isupper_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 iswalnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 iswalnum_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 iswalpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 iswalpha_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 iswblank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 iswblank_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 iswcntrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 iswcntrl_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 iswctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 iswctype_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 iswdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 iswdigit_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 iswgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 iswgraph_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 iswlower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 iswlower_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 iswprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 iswprint_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 iswpunct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 iswpunct_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 iswspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 iswspace_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 iswupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 iswupper_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 iswxdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 iswxdigit_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 isxdigit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 isxdigit_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

J

j0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 j0f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 j0l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 j1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 j1f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 j1l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 jn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 jnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 jnl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 jrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 jrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692

K

key_decryptsession. . . . . . . . . . . . . . . . . . . . . . . . . . 621 key_decryptsession_pk . . . . . . . . . . . . . . . . . . . . . . 621 key_encryptsession. . . . . . . . . . . . . . . . . . . . . . . . . . 621 key_encryptsession_pk . . . . . . . . . . . . . . . . . . . . . . 621 key_gendes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 key_get_conv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 key_secretkey_is_set . . . . . . . . . . . . . . . . . . . . . . . 622 key_setsecret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 kill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 killpg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 klogctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716

L

l64a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 labs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 lchmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 lchown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 lckpwdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 lcong48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 lcong48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 LD DEF files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 ldexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 ldexpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 ldexpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 ldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 lfind. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 lgamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 lgamma_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 lgammaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 lgammaf_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 lgammal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 lgammal_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 lgetfilecon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 lgetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 link. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 linkat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 lio_listio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 listxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 llabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 lldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 llistxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 llogb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 llogbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 llogbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 llrint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 llrintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 llrintl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 llround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 llroundf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 llroundl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 loc1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 loc2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 localeconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 localtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 localtime_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 lockf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 locs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 log10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 log10f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 log10l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 log1p. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 log1pf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 log1pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 log2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 log2f. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 log2l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 logb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 logbf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 logbl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 logf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 login. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 login_tty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 logl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 long-running tests modules . . . . . . . . . . . . . . . . . . . . . 46 longjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 lrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 lrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 lremovexattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 lrint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 lrintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 lrintl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 lround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 lroundf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 lroundl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 lsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 lseek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 lsetxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 lstat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 lutimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733

M

madvise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 makecontext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 mallinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 mallinfo2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 malloc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271, 837 malloc_info. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 malloc_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 malloc_trim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 malloc_usable_size. . . . . . . . . . . . . . . . . . . . . . . . . . 563 mallopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 matching list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 matching newline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 matching with GNU functions . . . . . . . . . . . . . . . . 837 matherr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 mblen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 mbrlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 mbrtoc16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 mbrtoc32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 mbrtoc8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 mbrtowc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 mbsinit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 mbsnrtowcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 mbsrtowcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 mbstowcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 mbtowc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 mcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 mcheck_check_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 mcheck_pedantic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 memalign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 memccpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 memchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 memcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 memcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 memfd_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 memfrob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 memmem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 memmove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Memory allocation failure . . . . . . . . . . . . . . . . . . . . . . 46 mempcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 memrchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 memset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 memset_explicit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 mincore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 mkdir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 mkdirat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 mkdtemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 mkfifo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 mkfifoat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 mknod. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 mknodat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 mkostemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 mkostemps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 mkstemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 mkstemps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 mktemp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 mktime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 mlock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 mlock2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 mlockall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 mmap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 modf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 modff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 modfl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 monstartup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 mount. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 mprobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 mprotect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 mq_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 mq_getattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 mq_notify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 mq_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 mq_receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 mq_send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 mq_setattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 mq_timedreceive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 mq_timedsend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 mq_unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 mrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 mrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 mremap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 msgctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 msgget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 msgrcv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 msgsnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 msync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 mtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 mtx_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 mtx_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 mtx_lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 mtx_timedlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 mtx_trylock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 mtx_unlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 multibyte locale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778 munlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 munlockall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 munmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 muntrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

N

name_to_handle_at . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 nan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 nanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 nanl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 nanosleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 nearbyint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 nearbyintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 nearbyintl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 netname2host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 netname2user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 newlocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 nextafter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 nextafterf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 nextafterl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 nextdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 nextdownf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 nextdownl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 nexttoward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 nexttowardf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 nexttowardl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 nextup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 nextupf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 nextupl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 nftw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 ngettext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 nice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 nis_add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 nis_add_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 nis_addmember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 nis_checkpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 nis_clone_object . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 nis_creategroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 nis_destroy_object. . . . . . . . . . . . . . . . . . . . . . . . . . 651 nis_destroygroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 nis_dir_cmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 nis_domain_of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 nis_domain_of_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 nis_first_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 nis_freenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 nis_freeresult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 nis_freeservlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 nis_freetags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 nis_getnames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 nis_getservlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 nis_ismember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 nis_leaf_of. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 nis_leaf_of_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 nis_lerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 nis_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 nis_local_directory . . . . . . . . . . . . . . . . . . . . . . . . 654 nis_local_group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 nis_local_host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 nis_local_principal . . . . . . . . . . . . . . . . . . . . . . . . 655 nis_lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 nis_mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 nis_modify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 nis_modify_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 nis_name_of. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 nis_name_of_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 nis_next_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 nis_perror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 nis_ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 nis_print_directory . . . . . . . . . . . . . . . . . . . . . . . . 657 nis_print_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 nis_print_group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 nis_print_group_entry . . . . . . . . . . . . . . . . . . . . . . 657 nis_print_link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 nis_print_object . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 nis_print_result . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 nis_print_rights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 nis_print_table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 nis_remove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 nis_remove_entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 nis_removemember . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 nis_rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 nis_servstate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 nis_sperrno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 nis_sperror. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 nis_sperror_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 nis_stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 nis_verifygroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 nl_langinfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 nl_langinfo_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 nonmatching list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 noreturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 not_bol field in pattern buffer . . . . . . . . . . . . . . . . 834 nrand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 nrand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 ntohl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 ntohs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 ntp_adjtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 ntp_gettime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735 ntp_gettimex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735 null pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 null pointer type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

num_regs in struct re_registers . . . . . . . . . . . . 841

O

Obsolete modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

obstack_alloc_failed_handler . . . . . . . . . . . . . . 597

obstack_exit_failure . . . . . . . . . . . . . . . . . . . . . . . 598 obstack_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 obstack_printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 obstack_vprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 on_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 open. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 open-group operator and ‘^’. . . . . . . . . . . . . . . . . . . 834 open_by_handle_at . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 open_memstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 open_wmemstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 openat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 openat-safer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 opendir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 openlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 openpty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 optarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 opterr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 optind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 optopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 or operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 Out of Memory handling . . . . . . . . . . . . . . . . . . . . . . . 46 overflow, integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 overflow, integer range . . . . . . . . . . . . . . . . . . . . . . . . 800 overflow, integer type . . . . . . . . . . . . . . . . . . . . . . . . . 799

P

parenthesizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 parse_printf_format . . . . . . . . . . . . . . . . . . . . . . . . 601 pathconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 pattern buffer initialization . . . . . . . . . . . . . . . . . . . 837 pattern buffer, definition of . . . . . . . . . . . . . . . . . . . 836 pause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 pclose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 perror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 personality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 pipe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 pipe2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 pipe2-safer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 pkey_alloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 pkey_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 pkey_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 pkey_mprotect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 pkey_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 pmap_getmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 pmap_getport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 pmap_rmtcall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 pmap_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 pmap_unset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 poll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 popen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 popen-safer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 portability, integer arithmetic . . . . . . . . . . . . . . . . . . 12 posix_fadvise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 posix_fallocate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 posix_madvise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 posix_mem_offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 posix_memalign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 posix_openpt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 posix_spawn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

                                                posix_spawn_file_actions_addchdir_np . . . . . 679
                                                posix_spawn_file_actions_addclose . . . . . . . . 306
                                                posix_spawn_file_actions_addclosefrom_np. 679
                                                posix_spawn_file_actions_adddup2 . . . . . . . . . 306
                                                posix_spawn_file_actions_addfchdir_np . . . . 679

posix_spawn_file_actions_addopen . . . . . . . . . 306
posix_spawn_file_actions_destroy . . . . . . . . . 307
posix_spawn_file_actions_init . . . . . . . . . . . . . 307
posix_spawnattr_destroy . . . . . . . . . . . . . . . . . . . . 307
posix_spawnattr_getflags. . . . . . . . . . . . . . . . . . . 307
posix_spawnattr_getpgroup. . . . . . . . . . . . . . . . . . 308
posix_spawnattr_getschedparam . . . . . . . . . . . . . 308
posix_spawnattr_getschedpolicy . . . . . . . . . . . . 308
posix_spawnattr_getsigdefault . . . . . . . . . . . . . 308
posix_spawnattr_getsigmask . . . . . . . . . . . . . . . . 309

posix_spawnattr_init . . . . . . . . . . . . . . . . . . . . . . . 309

posix_spawnattr_setflags. . . . . . . . . . . . . . . . . . . 309
posix_spawnattr_setpgroup. . . . . . . . . . . . . . . . . . 310
posix_spawnattr_setschedparam . . . . . . . . . . . . . 310
posix_spawnattr_setschedpolicy . . . . . . . . . . . . 310
posix_spawnattr_setsigdefault . . . . . . . . . . . . . 310
posix_spawnattr_setsigmask . . . . . . . . . . . . . . . . 311

posix_spawnp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

posix_trace_attr_destroy. . . . . . . . . . . . . . . . . . . 311
posix_trace_attr_getclockres . . . . . . . . . . . . . . 312
posix_trace_attr_getcreatetime . . . . . . . . . . . . 312
posix_trace_attr_getgenversion . . . . . . . . . . . . 312
posix_trace_attr_getinherited . . . . . . . . . . . . . 313
posix_trace_attr_getlogfullpolicy . . . . . . . . 313
posix_trace_attr_getlogsize . . . . . . . . . . . . . . . 313
posix_trace_attr_getmaxdatasize. . . . . . . . . . . 313
posix_trace_attr_getmaxsystemeventsize. . . 314
posix_trace_attr_getmaxusereventsize . . . . . 314
posix_trace_attr_getname. . . . . . . . . . . . . . . . . . . 314
posix_trace_attr_getstreamfullpolicy . . . . . 315
posix_trace_attr_getstreamsize . . . . . . . . . . . . 315

posix_trace_attr_init . . . . . . . . . . . . . . . . . . . . . . 315

posix_trace_attr_setinherited . . . . . . . . . . . . . 315
posix_trace_attr_setlogfullpolicy . . . . . . . . 316
posix_trace_attr_setlogsize . . . . . . . . . . . . . . . 316
posix_trace_attr_setmaxdatasize. . . . . . . . . . . 316
posix_trace_attr_setname. . . . . . . . . . . . . . . . . . . 317
posix_trace_attr_setstreamfullpolicy . . . . . 317
posix_trace_attr_setstreamsize . . . . . . . . . . . . 317

posix_trace_clear . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 posix_trace_close . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 posix_trace_create. . . . . . . . . . . . . . . . . . . . . . . . . . 318

posix_trace_create_withlog . . . . . . . . . . . . . . . . 318

posix_trace_event . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

posix_trace_eventid_equal. . . . . . . . . . . . . . . . . . 319
posix_trace_eventid_get_name . . . . . . . . . . . . . . 319
posix_trace_eventid_open. . . . . . . . . . . . . . . . . . . 319
posix_trace_eventset_add. . . . . . . . . . . . . . . . . . . 320
posix_trace_eventset_del. . . . . . . . . . . . . . . . . . . 320
posix_trace_eventset_empty . . . . . . . . . . . . . . . . 320
posix_trace_eventset_fill. . . . . . . . . . . . . . . . . . 321
posix_trace_eventset_ismember . . . . . . . . . . . . . 321
posix_trace_eventtypelist_getnext_id . . . . . 321
posix_trace_eventtypelist_rewind . . . . . . . . . 321

posix_trace_flush . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 posix_trace_get_attr . . . . . . . . . . . . . . . . . . . . . . . 322 posix_trace_get_filter . . . . . . . . . . . . . . . . . . . . . 322 posix_trace_get_status . . . . . . . . . . . . . . . . . . . . . 323

                                                posix_trace_getnext_event. . . . . . . . . . . . . . . . . . 323

posix_trace_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 posix_trace_rewind. . . . . . . . . . . . . . . . . . . . . . . . . . 323 posix_trace_set_filter . . . . . . . . . . . . . . . . . . . . . 324 posix_trace_shutdown . . . . . . . . . . . . . . . . . . . . . . . 324 posix_trace_start . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 posix_trace_stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

                                                posix_trace_timedgetnext_event . . . . . . . . . . . . 325
                                                posix_trace_trid_eventid_open . . . . . . . . . . . . . 325
                                                posix_trace_trygetnext_event . . . . . . . . . . . . . . 325
                                                posix_typed_mem_get_info. . . . . . . . . . . . . . . . . . . 326

posix_typed_mem_open . . . . . . . . . . . . . . . . . . . . . . . 326 POSIX Awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 pow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 pow10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 pow10f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 pow10l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 powf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 powl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 ppoll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 prctl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 pread. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 preadv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735 preadv2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 printf_size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 printf_size_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 privileged tests modules . . . . . . . . . . . . . . . . . . . . . . . . 46 prlimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 process_vm_readv . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 process_vm_writev . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 progname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814

                                                program_invocation_name . . . . . . . . . . . . . . . . . . . . 540
                                                program_invocation_short_name . . . . . . . . . . . . . 541

program_name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 pselect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 psiginfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 psignal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 pthread_atfork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 pthread_attr_destroy . . . . . . . . . . . . . . . . . . . . . . . 330

                                                pthread_attr_getaffinity_np . . . . . . . . . . . . . . . 603
                                                pthread_attr_getdetachstate . . . . . . . . . . . . . . . 330
                                                pthread_attr_getguardsize. . . . . . . . . . . . . . . . . . 331
                                                pthread_attr_getinheritsched . . . . . . . . . . . . . . 331
                                                pthread_attr_getschedparam . . . . . . . . . . . . . . . . 331
                                                pthread_attr_getschedpolicy . . . . . . . . . . . . . . . 331

pthread_attr_getscope . . . . . . . . . . . . . . . . . . . . . . 332

                                                pthread_attr_getsigmask_np . . . . . . . . . . . . . . . . 604

pthread_attr_getstack . . . . . . . . . . . . . . . . . . . . . . 332

                                                pthread_attr_getstackaddr. . . . . . . . . . . . . . . . . . 503
                                                pthread_attr_getstacksize. . . . . . . . . . . . . . . . . . 332

pthread_attr_init . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

                                                pthread_attr_setaffinity_np . . . . . . . . . . . . . . . 603
                                                pthread_attr_setdetachstate . . . . . . . . . . . . . . . 333
                                                pthread_attr_setguardsize. . . . . . . . . . . . . . . . . . 333
                                                pthread_attr_setinheritsched . . . . . . . . . . . . . . 333
                                                pthread_attr_setschedparam . . . . . . . . . . . . . . . . 333

pthread_attr_setschedpolicy . . . . . . . . . . . . . . . 334

pthread_attr_setscope . . . . . . . . . . . . . . . . . . . . . . 334

pthread_attr_setsigmask_np . . . . . . . . . . . . . . . . 604

pthread_attr_setstack . . . . . . . . . . . . . . . . . . . . . . 334

pthread_attr_setstackaddr. . . . . . . . . . . . . . . . . . 503
pthread_attr_setstacksize. . . . . . . . . . . . . . . . . . 334
pthread_barrier_destroy . . . . . . . . . . . . . . . . . . . . 335

pthread_barrier_init . . . . . . . . . . . . . . . . . . . . . . . 335 pthread_barrier_wait . . . . . . . . . . . . . . . . . . . . . . . 335

pthread_barrierattr_destroy . . . . . . . . . . . . . . . 335
pthread_barrierattr_getpshared . . . . . . . . . . . . 336
pthread_barrierattr_init. . . . . . . . . . . . . . . . . . . 336
pthread_barrierattr_setpshared . . . . . . . . . . . . 336

pthread_cancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 pthread_cleanup_pop . . . . . . . . . . . . . . . . . . . . . . . . 337 pthread_cleanup_push . . . . . . . . . . . . . . . . . . . . . . . 337 pthread_clockjoin_np . . . . . . . . . . . . . . . . . . . . . . . 604 pthread_cond_broadcast . . . . . . . . . . . . . . . . . . . . . 337 pthread_cond_clockwait . . . . . . . . . . . . . . . . . . . . . 604 pthread_cond_destroy . . . . . . . . . . . . . . . . . . . . . . . 338 pthread_cond_init . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 pthread_cond_signal . . . . . . . . . . . . . . . . . . . . . . . . 338 pthread_cond_timedwait . . . . . . . . . . . . . . . . . . . . . 338 pthread_cond_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

pthread_condattr_destroy. . . . . . . . . . . . . . . . . . . 339
pthread_condattr_getclock. . . . . . . . . . . . . . . . . . 339
pthread_condattr_getpshared . . . . . . . . . . . . . . . 339

pthread_condattr_init . . . . . . . . . . . . . . . . . . . . . . 340

pthread_condattr_setclock. . . . . . . . . . . . . . . . . . 340
pthread_condattr_setpshared . . . . . . . . . . . . . . . 340

pthread_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 pthread_detach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 pthread_equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 pthread_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 pthread_getaffinity_np . . . . . . . . . . . . . . . . . . . . . 605

pthread_getattr_default_np . . . . . . . . . . . . . . . . 605

pthread_getattr_np. . . . . . . . . . . . . . . . . . . . . . . . . . 605 pthread_getconcurrency . . . . . . . . . . . . . . . . . . . . . 341 pthread_getcpuclockid . . . . . . . . . . . . . . . . . . . . . . 342 pthread_getname_np. . . . . . . . . . . . . . . . . . . . . . . . . . 606 pthread_getschedparam . . . . . . . . . . . . . . . . . . . . . . 342 pthread_getspecific . . . . . . . . . . . . . . . . . . . . . . . . 342 pthread_join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 pthread_key_create. . . . . . . . . . . . . . . . . . . . . . . . . . 343 pthread_key_delete. . . . . . . . . . . . . . . . . . . . . . . . . . 343 pthread_kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

pthread_kill_other_threads_np . . . . . . . . . . . . . 606
pthread_mutex_clocklock . . . . . . . . . . . . . . . . . . . . 606
pthread_mutex_consistent. . . . . . . . . . . . . . . . . . . 344

pthread_mutex_destroy . . . . . . . . . . . . . . . . . . . . . . 344

pthread_mutex_getprioceiling . . . . . . . . . . . . . . 344

pthread_mutex_init. . . . . . . . . . . . . . . . . . . . . . . . . . 344 pthread_mutex_lock. . . . . . . . . . . . . . . . . . . . . . . . . . 345

pthread_mutex_setprioceiling . . . . . . . . . . . . . . 345
pthread_mutex_timedlock . . . . . . . . . . . . . . . . . . . . 345

pthread_mutex_trylock . . . . . . . . . . . . . . . . . . . . . . 345 pthread_mutex_unlock . . . . . . . . . . . . . . . . . . . . . . . 346

pthread_mutexattr_destroy. . . . . . . . . . . . . . . . . . 346

                                                pthread_mutexattr_getprioceiling . . . . . . . . . 346
                                                pthread_mutexattr_getprotocol . . . . . . . . . . . . . 346
                                                pthread_mutexattr_getpshared . . . . . . . . . . . . . . 347
                                                pthread_mutexattr_getrobust . . . . . . . . . . . . . . . 347
                                                pthread_mutexattr_gettype. . . . . . . . . . . . . . . . . . 347

pthread_mutexattr_init . . . . . . . . . . . . . . . . . . . . . 347

                                                pthread_mutexattr_setprioceiling . . . . . . . . . 348
                                                pthread_mutexattr_setprotocol . . . . . . . . . . . . . 348
                                                pthread_mutexattr_setpshared . . . . . . . . . . . . . . 348
                                                pthread_mutexattr_setrobust . . . . . . . . . . . . . . . 348
                                                pthread_mutexattr_settype. . . . . . . . . . . . . . . . . . 349

pthread_once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

                                                pthread_rwlock_clockrdlock . . . . . . . . . . . . . . . . 606
                                                pthread_rwlock_clockwrlock . . . . . . . . . . . . . . . . 607

pthread_rwlock_destroy . . . . . . . . . . . . . . . . . . . . . 349 pthread_rwlock_init . . . . . . . . . . . . . . . . . . . . . . . . 349 pthread_rwlock_rdlock . . . . . . . . . . . . . . . . . . . . . . 350

                                                pthread_rwlock_timedrdlock . . . . . . . . . . . . . . . . 350
                                                pthread_rwlock_timedwrlock . . . . . . . . . . . . . . . . 350
                                                pthread_rwlock_tryrdlock. . . . . . . . . . . . . . . . . . . 351
                                                pthread_rwlock_trywrlock. . . . . . . . . . . . . . . . . . . 351

pthread_rwlock_unlock . . . . . . . . . . . . . . . . . . . . . . 351 pthread_rwlock_wrlock . . . . . . . . . . . . . . . . . . . . . . 352

                                                pthread_rwlockattr_destroy . . . . . . . . . . . . . . . . 352
                                                pthread_rwlockattr_getkind_np . . . . . . . . . . . . . 607
                                                pthread_rwlockattr_getpshared . . . . . . . . . . . . . 352
                                                pthread_rwlockattr_init . . . . . . . . . . . . . . . . . . . . 352
                                                pthread_rwlockattr_setkind_np . . . . . . . . . . . . . 607
                                                pthread_rwlockattr_setpshared . . . . . . . . . . . . . 353

pthread_self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 pthread_setaffinity_np . . . . . . . . . . . . . . . . . . . . . 608

                                                pthread_setattr_default_np . . . . . . . . . . . . . . . . 608

pthread_setcancelstate . . . . . . . . . . . . . . . . . . . . . 353 pthread_setcanceltype . . . . . . . . . . . . . . . . . . . . . . 353 pthread_setconcurrency . . . . . . . . . . . . . . . . . . . . . 354 pthread_setname_np. . . . . . . . . . . . . . . . . . . . . . . . . . 608 pthread_setschedparam . . . . . . . . . . . . . . . . . . . . . . 354 pthread_setschedprio . . . . . . . . . . . . . . . . . . . . . . . 354 pthread_setspecific . . . . . . . . . . . . . . . . . . . . . . . . 354 pthread_sigmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 pthread_sigqueue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 pthread_spin_destroy . . . . . . . . . . . . . . . . . . . . . . . 355 pthread_spin_init . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 pthread_spin_lock . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 pthread_spin_trylock . . . . . . . . . . . . . . . . . . . . . . . 356 pthread_spin_unlock . . . . . . . . . . . . . . . . . . . . . . . . 356 pthread_testcancel. . . . . . . . . . . . . . . . . . . . . . . . . . 357 pthread_timedjoin_np . . . . . . . . . . . . . . . . . . . . . . . 609 pthread_tryjoin_np. . . . . . . . . . . . . . . . . . . . . . . . . . 609 ptrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 ptsname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 ptsname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 putc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 putc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 putchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 putchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 putenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 putgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 putmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 putpmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 putpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 puts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 putsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 putspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 pututline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 pututxline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 putw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 putwc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 putwc_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 putwchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 putwchar_unlocked . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 pvalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 pwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 pwritev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 pwritev2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737

Q

qecvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 qecvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 qfcvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 qfcvt_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 qgcvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 qsort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 qsort_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 quick_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 quotactl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 quote. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 quote_n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 quotearg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 quotearg_alloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813

R

raise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 rand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 rand_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 random_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 range argument to re_search. . . . . . . . . . . . . . . . . 838 rawmemchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 rcmd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 rcmd_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 re_comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612, 843 re_compile_fastmap . . . . . . . . . . . . . . . . . . . . . 612, 840 re_compile_pattern . . . . . . . . . . . . . . . . . . . . . 612, 837 re_exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613, 844 re_match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613, 837 re_match_2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613, 839

re_nsub field, set by re_compile_pattern. . . . . 837

re_pattern_buffer definition . . . . . . . . . . . . . . . . . 836 re_registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841 re_search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613, 838 re_search_2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613, 839 re_set_registers . . . . . . . . . . . . . . . . . . . . . . . 614, 841 re_set_syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 re_syntax_options . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 re_syntax_options initialization. . . . . . . . . . . . . . 836

RE_BACKSLASH_ESCAPE_IN_LIST . . . . . . . . . . . . . . . 822

RE_BK_PLUS_QM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 RE_CHAR_CLASSES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822

RE_CONTEXT_INDEP_ANCHORS. . . . . . . . . . . . . . . . . . . 822
RE_CONTEXT_INDEP_ANCHORS (and ‘^’) . . . . . . . . . 834

RE_CONTEXT_INDEP_OPS . . . . . . . . . . . . . . . . . . . . . . . 822 RE_CONTEXT_INVALID_DUP . . . . . . . . . . . . . . . . . . . . . 822 RE_CONTEXT_INVALID_OPS . . . . . . . . . . . . . . . . . . . . . 823 RE_DEBUG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 RE_DOT_NEWLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 RE_DOT_NOT_NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823

RE_HAT_LISTS_NOT_NEWLINE. . . . . . . . . . . . . . . . . . . 823

RE_ICASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 RE_INTERVALS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823

RE_INVALID_INTERVAL_ORD . . . . . . . . . . . . . . . . . . . . 823

RE_LIMITED_OPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 RE_NEWLINE_ALT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 RE_NO_BK_BRACES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 RE_NO_BK_PARENS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 RE_NO_BK_REFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 RE_NO_BK_VBAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 RE_NO_EMPTY_RANGES. . . . . . . . . . . . . . . . . . . . . . . . . . 824 RE_NO_GNU_OPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

RE_NO_POSIX_BACKTRACKING. . . . . . . . . . . . . . . . . . . 824

RE_NO_SUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

RE_UNMATCHED_RIGHT_PAREN_ORD . . . . . . . . . . . . . . 824

read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 readahead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 readdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 readdir_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 readlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 readlinkat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 readv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 realloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 REALLOC_N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 realpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 reboot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 recv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 recvfrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 recvmmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 recvmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 regcomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 regerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 regex.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 regexec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 regexp anchoring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 regfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368, 843

register_printf_function. . . . . . . . . . . . . . . . . . . 602
register_printf_modifier. . . . . . . . . . . . . . . . . . . 602
register_printf_specifier. . . . . . . . . . . . . . . . . . 603

register_printf_type . . . . . . . . . . . . . . . . . . . . . . . 603 regular expressions, syntax of . . . . . . . . . . . . . . . . . 821 remainder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 remainderf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 remainderl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 remap_file_pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 remove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 removexattr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 remque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 remquo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 remquof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 remquol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 rename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 renameat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 renameat2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 res_dnok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 res_hnok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 res_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 res_mailok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 res_mkquery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 res_nmkquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 res_nquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 res_nquerydomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 res_nsearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 res_nsend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 res_ownok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 res_query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 res_querydomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 res_search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 res_send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 revoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 rewind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 rewinddir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 rexec. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 rexec_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 rindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 rint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 rintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 rintl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 rmdir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 round. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 roundeven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 roundevenf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 roundevenl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 roundf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 roundl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 rpc_createerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 rpmatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 rresvport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 rresvport_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 rtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 ruserok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 ruserok_af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590

S

sbrk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 scalb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 scalbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 scalbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 scalbln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 scalblnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 scalblnl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 scalbn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 scalbnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 scalbnl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 scandir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 scandirat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 scanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 sched_get_priority_max . . . . . . . . . . . . . . . . . . . . . 378 sched_get_priority_min . . . . . . . . . . . . . . . . . . . . . 378 sched_getaffinity . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 sched_getcpu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 sched_getparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 sched_getscheduler. . . . . . . . . . . . . . . . . . . . . . . . . . 379 sched_rr_get_interval . . . . . . . . . . . . . . . . . . . . . . 379 sched_setaffinity . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 sched_setparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 sched_setscheduler. . . . . . . . . . . . . . . . . . . . . . . . . . 380 sched_yield. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 searching with GNU functions . . . . . . . . . . . . . . . . 838 secure_getenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 seed48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 seed48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 seekdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 sem_clockwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 sem_close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 sem_destroy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 sem_getvalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 sem_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 sem_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 sem_post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 sem_timedwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 sem_trywait. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 sem_unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 sem_wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 semctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 semget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 semop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 semtimedop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 sendfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 sendmmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 sendmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 sendto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 setaliasent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 setbuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 setbuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 setcontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 setdomainname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 setegid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 setenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 seteuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 setfsent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 setfsgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 setfsuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713 setgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 setgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 setgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 sethostent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 sethostid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 sethostname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 setipv4sourcefilter . . . . . . . . . . . . . . . . . . . . . . . . 597 setitimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 setjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 setkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 setlinebuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 setlocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 setlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 setlogmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 setmntent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 setnetent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 setnetgrent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 setns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 setpayload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 setpayloadf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 setpayloadl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 setpayloadsig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 setpayloadsigf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 setpayloadsigl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 setpgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 setpgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 setpriority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 setprotoent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 setpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 setregid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 setresgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 setresuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 setreuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 setrlimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 setrpcent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 setservent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 setsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 setsid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 setsockopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 setsourcefilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 setspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 setstate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 setstate_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 settimeofday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 setttyent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 setuid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 setusershell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 setutent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 setutxent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 setvbuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 setxattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 sgetsgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 sgetsgent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 sgetspent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 sgetspent_r. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 shm_open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 shm_unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 shmat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 shmctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 shmdt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 shmget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

sigabbrev_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
sigaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
sigaddset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
sigaltstack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
sigandset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
sigblock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
sigdelset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
sigdescr_np. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
sigemptyset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
sigfillset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
siggetmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
sighold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
sigignore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
siginterrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
sigisemptyset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
sigismember. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
siglongjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
signalfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
signbit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
signgam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
significand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
significandf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
significandl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
sigorset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
sigpause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
sigpending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
sigprocmask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
sigqueue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
sigrelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
sigreturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
sigset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
sigsetjmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
sigsetmask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
sigstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
sigsuspend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
sigtimedwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
sigvec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
sigwait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
sigwaitinfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
sin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
sincos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
sincosf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
sincosl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
sinf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
sinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
sinhf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
sinhl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
sinl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
sleep. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
snprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
sockatmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
socketpair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
sprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
sprofil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
sqrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

sqrtf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 sqrtl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 srand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 srand48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 srand48_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 srandom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 srandom_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 sscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 ssignal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 ST_BLKSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 ST_NBLOCKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 ST_NBLOCKSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 start argument to re_search. . . . . . . . . . . . . . . . . 838

start in struct re_registers . . . . . . . . . . . . . . . . 841

stat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 statfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 static inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 statvfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 statx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 stdc_bit_ceil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 stdc_bit_floor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 stdc_bit_width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 stdc_count_ones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 stdc_count_zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 stdc_first_leading_one . . . . . . . . . . . . . . . . . . . . . 412

stdc_first_leading_zero . . . . . . . . . . . . . . . . . . . . 413
stdc_first_trailing_one . . . . . . . . . . . . . . . . . . . . 413
stdc_first_trailing_zero. . . . . . . . . . . . . . . . . . . 413

stdc_has_single_bit . . . . . . . . . . . . . . . . . . . . . . . . 414 stdc_leading_ones . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 stdc_leading_zeros. . . . . . . . . . . . . . . . . . . . . . . . . . 414 stdc_trailing_ones. . . . . . . . . . . . . . . . . . . . . . . . . . 414 stdc_trailing_zeros . . . . . . . . . . . . . . . . . . . . . . . . 415 stderr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 stdin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 stdlib-safer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 stdnoreturn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 stdopen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 stdout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 step. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 stime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 STP_BLKSIZE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 STP_NBLOCKS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 stpcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 stpncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 strcasecmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 strcasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 strcasestr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 strcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 strchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 strchrnul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 strcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 strcoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 strcoll_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 strcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 strcspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 strdup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 strerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 strerror_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 strerror_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 strerrordesc_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 strerrorname_np . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 strfmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 strfmon_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 strfromd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 strfromf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 strfroml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 strfry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 strftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 strftime_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 strlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 strncasecmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 strncasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 strncat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 strncmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 strncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 strndup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 strnlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 strpbrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 strptime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 strptime_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 strrchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 strsep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 strsignal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 strspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 strstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 strtod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 strtod_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 strtof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 strtof_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 strtoimax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 strtok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 strtok_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 strtol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 strtol_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 strtold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 strtold_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 strtoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 strtoll_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 strtoq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 strtoul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 strtoul_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 strtoull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 strtoull_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 strtoumax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 strtouq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702

                                                struct re_pattern_buffer definition . . . . . . . . . 836

strverscmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 strxfrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 strxfrm_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 subexpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 svc_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 svc_fdset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 svc_getreq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 svc_getreq_common . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 svc_getreq_poll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 svc_getreqset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 svc_max_pollfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 svc_pollfd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 svc_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 svc_run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 svc_sendreply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 svc_unregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 svcerr_auth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 svcerr_decode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 svcerr_noproc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 svcerr_noprog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 svcerr_progvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 svcerr_systemerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 svcerr_weakauth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 svcraw_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 svctcp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 svcudp_bufcreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 svcudp_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 svcunix_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 swab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 swapcontext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 swapoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 swapon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 swprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 swscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 symlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 symlinkat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 sync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 sync_file_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 syncfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 syntax bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822

syntax field, set by re_compile_pattern . . . . . . 837

syntax initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . 836 syntax of regular expressions . . . . . . . . . . . . . . . . . . 821 sys_errlist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 sys_nerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 sys_siglist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 syscall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 sysconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 sysctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 sysinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 sysv_signal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

T

tan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 tanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 tanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 tanhf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 tanhl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 tanl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 tcdrain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 tcflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 tcflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 tcgetattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 tcgetpgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 tcgetsid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 tcsendbreak. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 tcsetattr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 tcsetpgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 tdelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 tdestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 telldir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 tempnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 tests modules, C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 tests modules, long-running . . . . . . . . . . . . . . . . . . . . 46 tests modules, privileged . . . . . . . . . . . . . . . . . . . . . . . 46 tests modules, unportable . . . . . . . . . . . . . . . . . . . . . . 46 textdomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 tfind. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 tgamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 tgammaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 tgammal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 tgkill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 thrd_create. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 thrd_current . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 thrd_detach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 thrd_equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 thrd_exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 thrd_join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 thrd_sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 thrd_yield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 timegm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 timelocal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 timer_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 timer_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 timer_getoverrun . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 timer_gettime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 timer_settime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 timerfd_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 timerfd_gettime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 timerfd_settime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 times. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 timespec_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 timespec_getres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 timezone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 tmpfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 tmpfile-safer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 tmpnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 tmpnam_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 toascii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 tolower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 tolower_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 totalorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 totalorderf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 totalorderl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 totalordermag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 totalordermagf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 totalordermagl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 toupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 toupper_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 towctrans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 towctrans_l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 towlower . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 towlower_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 towupper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 towupper_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 translate initialization . . . . . . . . . . . . . . . . . . . . . . . 837 trunc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 truncate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 truncf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 truncl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 tsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 tss_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 tss_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 tss_get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 tss_set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 ttyname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 ttyname_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 ttyslot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 twalk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 twalk_r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 TYPE_IS_INTEGER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 TYPE_MAXIMUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 TYPE_MINIMUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 TYPE_SIGNED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 tzname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 tzset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

U

ualarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 ufromfp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 ufromfpf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 ufromfpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 ufromfpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 ufromfpxf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 ufromfpxl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 ulckpwdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 ulimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 umask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 umount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 umount2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 uname. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 ungetc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 ungetwc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 unibyte locale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778 unistd-safer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 unlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 unlinkat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 unlockpt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 unportable tests modules. . . . . . . . . . . . . . . . . . . . . . . 46 unsetenv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 updwtmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 updwtmpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762 uselocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 user2netname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 usleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 ustat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 utime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 utimensat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 utimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 utmpname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 utmpxname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762

V

va_arg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 va_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 va_end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 va_start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 valgrind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 valloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 vasprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688 vcs-to-changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 VCS To ChangeLog. . . . . . . . . . . . . . . . . . . . . . . . . . . 865 vdprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 verify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 verify_expr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 verr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 verrx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 versionsort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 vfork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 vfprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 vfscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 vfwprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 vfwscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 vhangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 vlimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 void. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 vprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 vscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 vsnprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 vsprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 vsscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 vswprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 vswscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 vsyslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 vwarn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 vwarnx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 vwprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 vwscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

W

wait. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 wait3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738 wait4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738 waitid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 waitpid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 warn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 warnx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 wcpcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 wcpncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 wcrtomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 wcscasecmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 wcscasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 wcscat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 wcschr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 wcschrnul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 wcscmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 wcscoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 wcscoll_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 wcscpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 wcscspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 wcsdup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 wcsftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 wcsftime_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 wcslen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 wcsncasecmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 wcsncasecmp_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 wcsncat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 wcsncmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 wcsncpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 wcsnlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 wcsnrtombs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 wcspbrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 wcsrchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 wcsrtombs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 wcsspn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 wcsstr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 wcstod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 wcstod_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 wcstof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 wcstof_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 wcstoimax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 wcstok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 wcstol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 wcstol_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 wcstold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 wcstold_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 wcstoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 wcstoll_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 wcstombs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 wcstoq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 wcstoul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 wcstoul_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 wcstoull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 wcstoull_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 wcstoumax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 wcstouq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 wcswcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 wcswidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 wcsxfrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 wcsxfrm_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 wctob. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 wctomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 wctrans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 wctrans_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 wctype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 wctype_l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 wcwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 wmemchr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 wmemcmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 wmemcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 wmemmove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 wmempcpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769 wmemset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 word boundaries, matching. . . . . . . . . . . . . . . . . . . . 835 wordexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 wordfree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 wprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 wraparound integer arithmetic . . . . . . . . . . . . . . . . 797 write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 writev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 wscanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

X

xalloc_die . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 xdr_array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 xdr_authunix_parms. . . . . . . . . . . . . . . . . . . . . . . . . . 624 xdr_bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 xdr_bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 xdr_callhdr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 xdr_callmsg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 xdr_cback_data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 xdr_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 xdr_cryptkeyarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 xdr_cryptkeyarg2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 xdr_cryptkeyres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 xdr_des_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 xdr_domainname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 xdr_double . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 xdr_enum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 xdr_float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 xdr_free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 xdr_getcredres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 xdr_hyper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 xdr_int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 xdr_int16_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 xdr_int32_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 xdr_int64_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 xdr_int8_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 xdr_key_netstarg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 xdr_key_netstres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 xdr_keybuf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 xdr_keydat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 xdr_keystatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 xdr_long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 xdr_longlong_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 xdr_netnamestr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 xdr_netobj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 xdr_obj_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 xdr_opaque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 xdr_opaque_auth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 xdr_pmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 xdr_pmaplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 xdr_pointer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 xdr_quad_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 xdr_reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 xdr_replymsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 xdr_rmtcall_args . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 xdr_rmtcallres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 xdr_short . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 xdr_sizeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 xdr_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 xdr_u_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 xdr_u_hyper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 xdr_u_int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 xdr_u_long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 xdr_u_longlong_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 xdr_u_quad_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 xdr_u_short. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 xdr_uint16_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 xdr_uint32_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 xdr_uint64_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 xdr_uint8_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 xdr_union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 xdr_unixcred . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 xdr_valdat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 xdr_vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 xdr_void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 xdr_wrapstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 xdr_ypbind_resptype . . . . . . . . . . . . . . . . . . . . . . . . 661 xdr_ypmap_parms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 xdr_ypmaplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 xdr_yppushresp_xfr. . . . . . . . . . . . . . . . . . . . . . . . . . 662 xdr_ypreq_key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 xdr_ypreq_nokey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 xdr_ypreq_xfr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 xdr_ypresp_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 xdr_ypresp_key_val. . . . . . . . . . . . . . . . . . . . . . . . . . 663 xdr_ypresp_maplist. . . . . . . . . . . . . . . . . . . . . . . . . . 663 xdr_ypresp_master . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 xdr_ypresp_order . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 xdr_ypresp_val . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 xdr_ypresp_xfr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 xdr_ypstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 xdr_ypxfrstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 xdrmem_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 xdrrec_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 xdrrec_endofrecord. . . . . . . . . . . . . . . . . . . . . . . . . . 649 xdrrec_eof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 xdrrec_skiprecord . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 xdrstdio_create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 xprt_register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 xprt_unregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 xstdopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803

Y

y0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 y0f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 y0l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 y1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 y1f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 y1l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 yn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 ynf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 ynl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 yp_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 yp_bind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 yp_first . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 yp_get_default_domain . . . . . . . . . . . . . . . . . . . . . . 665 yp_master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 yp_match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 yp_next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 yp_order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 yp_unbind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 ypbinderr_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 yperr_string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 ypprot_err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666