GNU Gnulib 1 Brief Overview 1.1 Gnulib Basics 1.2 Git Checkout 1.3 Keeping Up-to-date 1.4 Contributing to Gnulib 1.4.1 Gnulib licensing 1.4.2 Indent with spaces not TABs 1.4.3 How to add a new module 1.5 Portability guidelines 1.5.1 C language versions 1.5.2 C99 features assumed by Gnulib 1.5.3 C99 features avoided by Gnulib 1.5.4 Other portability assumptions made by Gnulib 1.6 High Quality 1.6.1 Stable Branches 1.6.2 Writing reliable code 1.7 Join the GNU Project 2 Philosophy 2.1 Benefits of using Gnulib 2.2 Library vs. Reusable Code 2.3 Portability and Application Code 2.4 Target Platforms 2.4.1 Supported Platforms 2.4.2 Formerly Supported Platforms 2.4.3 Unsupported Platforms 2.5 Modules 2.6 Various Kinds of Modules 2.6.1 Support for ISO C or POSIX functions. 2.6.2 Enhancements of ISO C or POSIX functions 2.6.3 Portable general use facilities 2.6.4 Reusable application code 2.6.5 Object oriented classes 2.6.6 Interfaces to external libraries 2.6.7 Build / maintenance infrastructure 2.7 Collaborative Development 2.8 Copyright 2.9 Steady Development 2.10 Openness 3 Invoking gnulib-tool 3.1 Finding modules 3.2 Initial import 3.3 Modified imports 3.4 Simple update 3.5 Changing your sources for use with Gnulib 3.6 Changing your link commands for use with Gnulib 3.7 Finding recommended ISO C and POSIX function substitutes 3.8 Modifying the build rules of a Gnulib import directory 3.9 Building directly from the top-level directory 3.10 Using Gnulib for both a library and a program 3.11 Caveat: ‘gettextize’ and ‘autopoint’ users 3.12 Handling Gnulib’s own message translations 3.13 Integration with Version Control Systems 3.14 Bundling the unit tests of the Gnulib modules 3.15 Avoiding unnecessary checks and compilations 4 Writing modules 4.1 Source code files 4.2 Header files 4.3 Implementation files 4.4 Specification 4.5 Module description 4.6 Autoconf macros 4.7 Making proper use of ‘AC_LIBOBJ’ 4.8 Unit test modules 4.9 Incompatible changes 5 Extending Gnulib 6 Miscellaneous Notes 6.1 Out of memory handling 6.2 Obsolete modules 6.3 Extra tests modules 6.4 Modules that modify the way other modules work 6.5 A C++ namespace for gnulib 6.6 License Texinfo sources 6.7 Building gnulib 7 Building the ISO C and POSIX Substitutes 8 ISO C Keyword Substitutes 8.1 ‘alignof’ and ‘alignas’ 8.2 ‘bool’ 8.3 ‘nullptr’ 8.4 ‘static_assert’ 9 ISO C and POSIX Header File Substitutes 9.1 ‘aio.h’ 9.2 ‘arpa/inet.h’ 9.3 ‘assert.h’ 9.4 ‘complex.h’ 9.5 ‘cpio.h’ 9.6 ‘ctype.h’ 9.7 ‘dirent.h’ 9.8 ‘dlfcn.h’ 9.9 ‘errno.h’ 9.10 ‘fcntl.h’ 9.11 ‘fenv.h’ 9.12 ‘float.h’ 9.13 ‘fmtmsg.h’ 9.14 ‘fnmatch.h’ 9.15 ‘ftw.h’ 9.16 ‘glob.h’ 9.17 ‘grp.h’ 9.18 ‘iconv.h’ 9.19 ‘inttypes.h’ 9.20 ‘iso646.h’ 9.21 ‘langinfo.h’ 9.22 ‘libgen.h’ 9.23 ‘limits.h’ 9.24 ‘locale.h’ 9.25 ‘math.h’ 9.26 ‘monetary.h’ 9.27 ‘mqueue.h’ 9.28 ‘ndbm.h’ 9.29 ‘net/if.h’ 9.30 ‘netdb.h’ 9.31 ‘netinet/in.h’ 9.32 ‘netinet/tcp.h’ 9.33 ‘nl_types.h’ 9.34 ‘poll.h’ 9.35 ‘pthread.h’ 9.36 ‘pwd.h’ 9.37 ‘regex.h’ 9.38 ‘sched.h’ 9.39 ‘search.h’ 9.40 ‘semaphore.h’ 9.41 ‘setjmp.h’ 9.42 ‘signal.h’ 9.43 ‘spawn.h’ 9.44 ‘stdalign.h’ 9.45 ‘stdarg.h’ 9.46 ‘stdatomic.h’ 9.47 ‘stdbool.h’ 9.48 ‘stdckdint.h’ 9.49 ‘stddef.h’ 9.50 ‘stdint.h’ 9.51 ‘stdio.h’ 9.52 ‘stdlib.h’ 9.53 ‘stdnoreturn.h’ 9.54 ‘string.h’ 9.55 ‘strings.h’ 9.56 ‘stropts.h’ 9.57 ‘sys/ipc.h’ 9.58 ‘sys/mman.h’ 9.59 ‘sys/msg.h’ 9.60 ‘sys/resource.h’ 9.61 ‘sys/select.h’ 9.62 ‘sys/sem.h’ 9.63 ‘sys/shm.h’ 9.64 ‘sys/socket.h’ 9.65 ‘sys/stat.h’ 9.66 ‘sys/statvfs.h’ 9.67 ‘sys/time.h’ 9.68 ‘sys/timeb.h’ 9.69 ‘sys/times.h’ 9.70 ‘sys/types.h’ 9.71 ‘sys/uio.h’ 9.72 ‘sys/un.h’ 9.73 ‘sys/utsname.h’ 9.74 ‘sys/wait.h’ 9.75 ‘syslog.h’ 9.76 ‘tar.h’ 9.77 ‘termios.h’ 9.78 ‘tgmath.h’ 9.79 ‘threads.h’ 9.80 ‘time.h’ 9.81 ‘trace.h’ 9.82 ‘uchar.h’ 9.83 ‘ucontext.h’ 9.84 ‘ulimit.h’ 9.85 ‘unistd.h’ 9.86 ‘utime.h’ 9.87 ‘utmpx.h’ 9.88 ‘wchar.h’ 9.89 ‘wctype.h’ 9.90 ‘wordexp.h’ 10 ISO C and POSIX Function Substitutes 10.1 ‘FD_CLR’ 10.2 ‘FD_ISSET’ 10.3 ‘FD_SET’ 10.4 ‘FD_ZERO’ 10.5 ‘_Exit’ 10.6 ‘_exit’ 10.7 ‘_longjmp’ 10.8 ‘_setjmp’ 10.9 ‘_tolower’ 10.10 ‘_toupper’ 10.11 ‘a64l’ 10.12 ‘abort’ 10.13 ‘abs’ 10.14 ‘accept’ 10.15 ‘access’ 10.16 ‘acos’ 10.17 ‘acosf’ 10.18 ‘acosh’ 10.19 ‘acoshf’ 10.20 ‘acoshl’ 10.21 ‘acosl’ 10.22 ‘aio_cancel’ 10.23 ‘aio_error’ 10.24 ‘aio_fsync’ 10.25 ‘aio_read’ 10.26 ‘aio_return’ 10.27 ‘aio_suspend’ 10.28 ‘aio_write’ 10.29 ‘alarm’ 10.30 ‘aligned_alloc’ 10.31 ‘alphasort’ 10.32 ‘asctime’ 10.33 ‘asctime_r’ 10.34 ‘asin’ 10.35 ‘asinf’ 10.36 ‘asinh’ 10.37 ‘asinhf’ 10.38 ‘asinhl’ 10.39 ‘asinl’ 10.40 ‘assert’ 10.41 ‘atan’ 10.42 ‘atan2’ 10.43 ‘atan2f’ 10.44 ‘atan2l’ 10.45 ‘atanf’ 10.46 ‘atanh’ 10.47 ‘atanhf’ 10.48 ‘atanhl’ 10.49 ‘atanl’ 10.50 ‘atexit’ 10.51 ‘atof’ 10.52 ‘atoi’ 10.53 ‘atol’ 10.54 ‘atoll’ 10.55 ‘basename’ 10.56 ‘bind’ 10.57 ‘bsearch’ 10.58 ‘btowc’ 10.59 ‘c8rtomb’ 10.60 ‘c16rtomb’ 10.61 ‘c32rtomb’ 10.62 ‘cabs’ 10.63 ‘cabsf’ 10.64 ‘cabsl’ 10.65 ‘cacos’ 10.66 ‘cacosf’ 10.67 ‘cacosh’ 10.68 ‘cacoshf’ 10.69 ‘cacoshl’ 10.70 ‘cacosl’ 10.71 ‘calloc’ 10.72 ‘call_once’ 10.73 ‘canonicalize’ 10.74 ‘canonicalizef’ 10.75 ‘canonicalizel’ 10.76 ‘carg’ 10.77 ‘cargf’ 10.78 ‘cargl’ 10.79 ‘casin’ 10.80 ‘casinf’ 10.81 ‘casinh’ 10.82 ‘casinhf’ 10.83 ‘casinhl’ 10.84 ‘casinl’ 10.85 ‘catan’ 10.86 ‘catanf’ 10.87 ‘catanh’ 10.88 ‘catanhf’ 10.89 ‘catanhl’ 10.90 ‘catanl’ 10.91 ‘catclose’ 10.92 ‘catgets’ 10.93 ‘catopen’ 10.94 ‘cbrt’ 10.95 ‘cbrtf’ 10.96 ‘cbrtl’ 10.97 ‘ccos’ 10.98 ‘ccosf’ 10.99 ‘ccosh’ 10.100 ‘ccoshf’ 10.101 ‘ccoshl’ 10.102 ‘ccosl’ 10.103 ‘ceil’ 10.104 ‘ceilf’ 10.105 ‘ceill’ 10.106 ‘cexp’ 10.107 ‘cexpf’ 10.108 ‘cexpl’ 10.109 ‘cfgetispeed’ 10.110 ‘cfgetospeed’ 10.111 ‘cfsetispeed’ 10.112 ‘cfsetospeed’ 10.113 ‘chdir’ 10.114 ‘chmod’ 10.115 ‘chown’ 10.116 ‘cimag’ 10.117 ‘cimagf’ 10.118 ‘cimagl’ 10.119 ‘clearerr’ 10.120 ‘clock’ 10.121 ‘clock_getcpuclockid’ 10.122 ‘clock_getres’ 10.123 ‘clock_gettime’ 10.124 ‘clock_nanosleep’ 10.125 ‘clock_settime’ 10.126 ‘clog’ 10.127 ‘clogf’ 10.128 ‘clogl’ 10.129 ‘close’ 10.130 ‘closedir’ 10.131 ‘closelog’ 10.132 ‘cnd_broadcast’ 10.133 ‘cnd_destroy’ 10.134 ‘cnd_init’ 10.135 ‘cnd_signal’ 10.136 ‘cnd_timedwait’ 10.137 ‘cnd_wait’ 10.138 ‘confstr’ 10.139 ‘conj’ 10.140 ‘conjf’ 10.141 ‘conjl’ 10.142 ‘connect’ 10.143 ‘copysign’ 10.144 ‘copysignf’ 10.145 ‘copysignl’ 10.146 ‘cos’ 10.147 ‘cosf’ 10.148 ‘cosh’ 10.149 ‘coshf’ 10.150 ‘coshl’ 10.151 ‘cosl’ 10.152 ‘cpow’ 10.153 ‘cpowf’ 10.154 ‘cpowl’ 10.155 ‘cproj’ 10.156 ‘cprojf’ 10.157 ‘cprojl’ 10.158 ‘creal’ 10.159 ‘crealf’ 10.160 ‘creall’ 10.161 ‘creat’ 10.162 ‘crypt’ 10.163 ‘csin’ 10.164 ‘csinf’ 10.165 ‘csinh’ 10.166 ‘csinhf’ 10.167 ‘csinhl’ 10.168 ‘csinl’ 10.169 ‘csqrt’ 10.170 ‘csqrtf’ 10.171 ‘csqrtl’ 10.172 ‘ctan’ 10.173 ‘ctanf’ 10.174 ‘ctanh’ 10.175 ‘ctanhf’ 10.176 ‘ctanhl’ 10.177 ‘ctanl’ 10.178 ‘ctermid’ 10.179 ‘ctime’ 10.180 ‘ctime_r’ 10.181 ‘daddl’ 10.182 ‘daylight’ 10.183 ‘dbm_clearerr’ 10.184 ‘dbm_close’ 10.185 ‘dbm_delete’ 10.186 ‘dbm_error’ 10.187 ‘dbm_fetch’ 10.188 ‘dbm_firstkey’ 10.189 ‘dbm_nextkey’ 10.190 ‘dbm_open’ 10.191 ‘dbm_store’ 10.192 ‘ddivl’ 10.193 ‘difftime’ 10.194 ‘dirfd’ 10.195 ‘dirname’ 10.196 ‘div’ 10.197 ‘dlclose’ 10.198 ‘dlerror’ 10.199 ‘dlopen’ 10.200 ‘dlsym’ 10.201 ‘dmull’ 10.202 ‘dprintf’ 10.203 ‘drand48’ 10.204 ‘dsubl’ 10.205 ‘dup’ 10.206 ‘dup2’ 10.207 ‘duplocale’ 10.208 ‘encrypt’ 10.209 ‘endgrent’ 10.210 ‘endhostent’ 10.211 ‘endnetent’ 10.212 ‘endprotoent’ 10.213 ‘endpwent’ 10.214 ‘endservent’ 10.215 ‘endutxent’ 10.216 ‘environ’ 10.217 ‘erand48’ 10.218 ‘erf’ 10.219 ‘erfc’ 10.220 ‘erfcf’ 10.221 ‘erfcl’ 10.222 ‘erff’ 10.223 ‘erfl’ 10.224 ‘errno’ 10.225 ‘execl’ 10.226 ‘execle’ 10.227 ‘execlp’ 10.228 ‘execv’ 10.229 ‘execve’ 10.230 ‘execvp’ 10.231 ‘exit’ 10.232 ‘exp’ 10.233 ‘exp2’ 10.234 ‘exp2f’ 10.235 ‘exp2l’ 10.236 ‘expf’ 10.237 ‘expl’ 10.238 ‘expm1’ 10.239 ‘expm1f’ 10.240 ‘expm1l’ 10.241 ‘fabs’ 10.242 ‘fabsf’ 10.243 ‘fabsl’ 10.244 ‘faccessat’ 10.245 ‘fadd’ 10.246 ‘faddl’ 10.247 ‘fattach’ 10.248 ‘fchdir’ 10.249 ‘fchmod’ 10.250 ‘fchmodat’ 10.251 ‘fchown’ 10.252 ‘fchownat’ 10.253 ‘fclose’ 10.254 ‘fcntl’ 10.255 ‘fdatasync’ 10.256 ‘fdetach’ 10.257 ‘fdim’ 10.258 ‘fdimf’ 10.259 ‘fdiml’ 10.260 ‘fdiv’ 10.261 ‘fdivl’ 10.262 ‘fdopen’ 10.263 ‘fdopendir’ 10.264 ‘feclearexcept’ 10.265 ‘fegetenv’ 10.266 ‘fegetexceptflag’ 10.267 ‘fegetmode’ 10.268 ‘fegetround’ 10.269 ‘feholdexcept’ 10.270 ‘feof’ 10.271 ‘feraiseexcept’ 10.272 ‘ferror’ 10.273 ‘fesetenv’ 10.274 ‘fesetexcept’ 10.275 ‘fesetexceptflag’ 10.276 ‘fesetmode’ 10.277 ‘fesetround’ 10.278 ‘fetestexcept’ 10.279 ‘fetestexceptflag’ 10.280 ‘feupdateenv’ 10.281 ‘fexecve’ 10.282 ‘fflush’ 10.283 ‘ffs’ 10.284 ‘fgetc’ 10.285 ‘fgetpos’ 10.286 ‘fgets’ 10.287 ‘fgetwc’ 10.288 ‘fgetws’ 10.289 ‘fileno’ 10.290 ‘flockfile’ 10.291 ‘floor’ 10.292 ‘floorf’ 10.293 ‘floorl’ 10.294 ‘fma’ 10.295 ‘fmaf’ 10.296 ‘fmal’ 10.297 ‘fmax’ 10.298 ‘fmaxf’ 10.299 ‘fmaxl’ 10.300 ‘fmaxmag’ 10.301 ‘fmaxmagf’ 10.302 ‘fmaxmagl’ 10.303 ‘fmemopen’ 10.304 ‘fmin’ 10.305 ‘fminf’ 10.306 ‘fminl’ 10.307 ‘fminmag’ 10.308 ‘fminmagf’ 10.309 ‘fminmagl’ 10.310 ‘fmod’ 10.311 ‘fmodf’ 10.312 ‘fmodl’ 10.313 ‘fmtmsg’ 10.314 ‘fmul’ 10.315 ‘fmull’ 10.316 ‘fnmatch’ 10.317 ‘fopen’ 10.318 ‘fork’ 10.319 ‘fpathconf’ 10.320 ‘fpclassify’ 10.321 ‘fprintf’ 10.322 ‘fputc’ 10.323 ‘fputs’ 10.324 ‘fputwc’ 10.325 ‘fputws’ 10.326 ‘fread’ 10.327 ‘free’ 10.328 ‘freeaddrinfo’ 10.329 ‘freelocale’ 10.330 ‘freopen’ 10.331 ‘frexp’ 10.332 ‘frexpf’ 10.333 ‘frexpl’ 10.334 ‘fromfp’ 10.335 ‘fromfpf’ 10.336 ‘fromfpl’ 10.337 ‘fromfpx’ 10.338 ‘fromfpxf’ 10.339 ‘fromfpxl’ 10.340 ‘fscanf’ 10.341 ‘fseek’ 10.342 ‘fseeko’ 10.343 ‘fsetpos’ 10.344 ‘fstat’ 10.345 ‘fstatat’ 10.346 ‘fstatvfs’ 10.347 ‘fsub’ 10.348 ‘fsubl’ 10.349 ‘fsync’ 10.350 ‘ftell’ 10.351 ‘ftello’ 10.352 ‘ftok’ 10.353 ‘ftruncate’ 10.354 ‘ftrylockfile’ 10.355 ‘ftw’ 10.356 ‘funlockfile’ 10.357 ‘futimens’ 10.358 ‘fwide’ 10.359 ‘fwprintf’ 10.360 ‘fwrite’ 10.361 ‘fwscanf’ 10.362 ‘gai_strerror’ 10.363 ‘getaddrinfo’ 10.364 ‘getc’ 10.365 ‘getc_unlocked’ 10.366 ‘getchar’ 10.367 ‘getchar_unlocked’ 10.368 ‘getcwd’ 10.369 ‘getdate’ 10.370 ‘getdate_err’ 10.371 ‘getdelim’ 10.372 ‘getegid’ 10.373 ‘getenv’ 10.374 ‘geteuid’ 10.375 ‘getgid’ 10.376 ‘getgrent’ 10.377 ‘getgrgid’ 10.378 ‘getgrgid_r’ 10.379 ‘getgrnam’ 10.380 ‘getgrnam_r’ 10.381 ‘getgroups’ 10.382 ‘gethostent’ 10.383 ‘gethostid’ 10.384 ‘gethostname’ 10.385 ‘getitimer’ 10.386 ‘getline’ 10.387 ‘getlogin’ 10.388 ‘getlogin_r’ 10.389 ‘getmsg’ 10.390 ‘getnameinfo’ 10.391 ‘getnetbyaddr’ 10.392 ‘getnetbyname’ 10.393 ‘getnetent’ 10.394 ‘getopt’ 10.395 ‘getpayload’ 10.396 ‘getpayloadf’ 10.397 ‘getpayloadl’ 10.398 ‘getpeername’ 10.399 ‘getpgid’ 10.400 ‘getpgrp’ 10.401 ‘getpid’ 10.402 ‘getpmsg’ 10.403 ‘getppid’ 10.404 ‘getpriority’ 10.405 ‘getprotobyname’ 10.406 ‘getprotobynumber’ 10.407 ‘getprotoent’ 10.408 ‘getpwent’ 10.409 ‘getpwnam’ 10.410 ‘getpwnam_r’ 10.411 ‘getpwuid’ 10.412 ‘getpwuid_r’ 10.413 ‘getrlimit’ 10.414 ‘getrusage’ 10.415 ‘gets’ 10.416 ‘getservbyname’ 10.417 ‘getservbyport’ 10.418 ‘getservent’ 10.419 ‘getsid’ 10.420 ‘getsockname’ 10.421 ‘getsockopt’ 10.422 ‘getsubopt’ 10.423 ‘gettimeofday’ 10.424 ‘getuid’ 10.425 ‘getutxent’ 10.426 ‘getutxid’ 10.427 ‘getutxline’ 10.428 ‘getwc’ 10.429 ‘getwchar’ 10.430 ‘glob’ 10.431 ‘globfree’ 10.432 ‘gmtime’ 10.433 ‘gmtime_r’ 10.434 ‘grantpt’ 10.435 ‘hcreate’ 10.436 ‘hdestroy’ 10.437 ‘hsearch’ 10.438 ‘htonl’ 10.439 ‘htons’ 10.440 ‘hypot’ 10.441 ‘hypotf’ 10.442 ‘hypotl’ 10.443 ‘iconv’ 10.444 ‘iconv_close’ 10.445 ‘iconv_open’ 10.446 ‘if_freenameindex’ 10.447 ‘if_indextoname’ 10.448 ‘if_nameindex’ 10.449 ‘if_nametoindex’ 10.450 ‘ilogb’ 10.451 ‘ilogbf’ 10.452 ‘ilogbl’ 10.453 ‘imaxabs’ 10.454 ‘imaxdiv’ 10.455 ‘inet_addr’ 10.456 ‘inet_ntoa’ 10.457 ‘inet_ntop’ 10.458 ‘inet_pton’ 10.459 ‘initstate’ 10.460 ‘insque’ 10.461 ‘ioctl’ 10.462 ‘isalnum’ 10.463 ‘isalnum_l’ 10.464 ‘isalpha’ 10.465 ‘isalpha_l’ 10.466 ‘isascii’ 10.467 ‘isastream’ 10.468 ‘isatty’ 10.469 ‘isblank’ 10.470 ‘isblank_l’ 10.471 ‘iscntrl’ 10.472 ‘iscntrl_l’ 10.473 ‘isdigit’ 10.474 ‘isdigit_l’ 10.475 ‘isfinite’ 10.476 ‘isgraph’ 10.477 ‘isgraph_l’ 10.478 ‘isgreater’ 10.479 ‘isgreaterequal’ 10.480 ‘isinf’ 10.481 ‘isless’ 10.482 ‘islessequal’ 10.483 ‘islessgreater’ 10.484 ‘islower’ 10.485 ‘islower_l’ 10.486 ‘isnan’ 10.487 ‘isnormal’ 10.488 ‘isprint’ 10.489 ‘isprint_l’ 10.490 ‘ispunct’ 10.491 ‘ispunct_l’ 10.492 ‘isspace’ 10.493 ‘isspace_l’ 10.494 ‘isunordered’ 10.495 ‘isupper’ 10.496 ‘isupper_l’ 10.497 ‘iswalnum’ 10.498 ‘iswalnum_l’ 10.499 ‘iswalpha’ 10.500 ‘iswalpha_l’ 10.501 ‘iswblank’ 10.502 ‘iswblank_l’ 10.503 ‘iswcntrl’ 10.504 ‘iswcntrl_l’ 10.505 ‘iswctype’ 10.506 ‘iswctype_l’ 10.507 ‘iswdigit’ 10.508 ‘iswdigit_l’ 10.509 ‘iswgraph’ 10.510 ‘iswgraph_l’ 10.511 ‘iswlower’ 10.512 ‘iswlower_l’ 10.513 ‘iswprint’ 10.514 ‘iswprint_l’ 10.515 ‘iswpunct’ 10.516 ‘iswpunct_l’ 10.517 ‘iswspace’ 10.518 ‘iswspace_l’ 10.519 ‘iswupper’ 10.520 ‘iswupper_l’ 10.521 ‘iswxdigit’ 10.522 ‘iswxdigit_l’ 10.523 ‘isxdigit’ 10.524 ‘isxdigit_l’ 10.525 ‘j0’ 10.526 ‘j1’ 10.527 ‘jn’ 10.528 ‘jrand48’ 10.529 ‘kill’ 10.530 ‘killpg’ 10.531 ‘l64a’ 10.532 ‘labs’ 10.533 ‘lchown’ 10.534 ‘lcong48’ 10.535 ‘ldexp’ 10.536 ‘ldexpf’ 10.537 ‘ldexpl’ 10.538 ‘ldiv’ 10.539 ‘lfind’ 10.540 ‘lgamma’ 10.541 ‘lgammaf’ 10.542 ‘lgammal’ 10.543 ‘link’ 10.544 ‘linkat’ 10.545 ‘lio_listio’ 10.546 ‘listen’ 10.547 ‘llabs’ 10.548 ‘lldiv’ 10.549 ‘llogb’ 10.550 ‘llogbf’ 10.551 ‘llogbl’ 10.552 ‘llrint’ 10.553 ‘llrintf’ 10.554 ‘llrintl’ 10.555 ‘llround’ 10.556 ‘llroundf’ 10.557 ‘llroundl’ 10.558 ‘localeconv’ 10.559 ‘localtime’ 10.560 ‘localtime_r’ 10.561 ‘lockf’ 10.562 ‘log’ 10.563 ‘log10’ 10.564 ‘log10f’ 10.565 ‘log10l’ 10.566 ‘log1p’ 10.567 ‘log1pf’ 10.568 ‘log1pl’ 10.569 ‘log2’ 10.570 ‘log2f’ 10.571 ‘log2l’ 10.572 ‘logb’ 10.573 ‘logbf’ 10.574 ‘logbl’ 10.575 ‘logf’ 10.576 ‘logl’ 10.577 ‘longjmp’ 10.578 ‘lrand48’ 10.579 ‘lrint’ 10.580 ‘lrintf’ 10.581 ‘lrintl’ 10.582 ‘lround’ 10.583 ‘lroundf’ 10.584 ‘lroundl’ 10.585 ‘lsearch’ 10.586 ‘lseek’ 10.587 ‘lstat’ 10.588 ‘malloc’ 10.589 ‘mblen’ 10.590 ‘mbrlen’ 10.591 ‘mbrtoc8’ 10.592 ‘mbrtoc16’ 10.593 ‘mbrtoc32’ 10.594 ‘mbrtowc’ 10.595 ‘mbsinit’ 10.596 ‘mbsnrtowcs’ 10.597 ‘mbsrtowcs’ 10.598 ‘mbstowcs’ 10.599 ‘mbtowc’ 10.600 ‘memccpy’ 10.601 ‘memchr’ 10.602 ‘memcmp’ 10.603 ‘memcpy’ 10.604 ‘memmove’ 10.605 ‘memset’ 10.606 ‘memset_explicit’ 10.607 ‘mkdir’ 10.608 ‘mkdirat’ 10.609 ‘mkdtemp’ 10.610 ‘mkfifo’ 10.611 ‘mkfifoat’ 10.612 ‘mknod’ 10.613 ‘mknodat’ 10.614 ‘mkstemp’ 10.615 ‘mktime’ 10.616 ‘mlock’ 10.617 ‘mlockall’ 10.618 ‘mmap’ 10.619 ‘modf’ 10.620 ‘modff’ 10.621 ‘modfl’ 10.622 ‘mprotect’ 10.623 ‘mq_close’ 10.624 ‘mq_getattr’ 10.625 ‘mq_notify’ 10.626 ‘mq_open’ 10.627 ‘mq_receive’ 10.628 ‘mq_send’ 10.629 ‘mq_setattr’ 10.630 ‘mq_timedreceive’ 10.631 ‘mq_timedsend’ 10.632 ‘mq_unlink’ 10.633 ‘mrand48’ 10.634 ‘msgctl’ 10.635 ‘msgget’ 10.636 ‘msgrcv’ 10.637 ‘msgsnd’ 10.638 ‘msync’ 10.639 ‘mtx_destroy’ 10.640 ‘mtx_init’ 10.641 ‘mtx_lock’ 10.642 ‘mtx_timedlock’ 10.643 ‘mtx_trylock’ 10.644 ‘mtx_unlock’ 10.645 ‘munlock’ 10.646 ‘munlockall’ 10.647 ‘munmap’ 10.648 ‘nan’ 10.649 ‘nanf’ 10.650 ‘nanl’ 10.651 ‘nanosleep’ 10.652 ‘nearbyint’ 10.653 ‘nearbyintf’ 10.654 ‘nearbyintl’ 10.655 ‘newlocale’ 10.656 ‘nextafter’ 10.657 ‘nextafterf’ 10.658 ‘nextafterl’ 10.659 ‘nextdown’ 10.660 ‘nextdownf’ 10.661 ‘nextdownl’ 10.662 ‘nexttoward’ 10.663 ‘nexttowardf’ 10.664 ‘nexttowardl’ 10.665 ‘nextup’ 10.666 ‘nextupf’ 10.667 ‘nextupl’ 10.668 ‘nftw’ 10.669 ‘nice’ 10.670 ‘nl_langinfo’ 10.671 ‘nl_langinfo_l’ 10.672 ‘nrand48’ 10.673 ‘ntohl’ 10.674 ‘ntohs’ 10.675 ‘open’ 10.676 ‘openat’ 10.677 ‘opendir’ 10.678 ‘openlog’ 10.679 ‘open_memstream’ 10.680 ‘open_wmemstream’ 10.681 ‘optarg’ 10.682 ‘opterr’ 10.683 ‘optind’ 10.684 ‘optopt’ 10.685 ‘pathconf’ 10.686 ‘pause’ 10.687 ‘pclose’ 10.688 ‘perror’ 10.689 ‘pipe’ 10.690 ‘poll’ 10.691 ‘popen’ 10.692 ‘posix_fadvise’ 10.693 ‘posix_fallocate’ 10.694 ‘posix_madvise’ 10.695 ‘posix_mem_offset’ 10.696 ‘posix_memalign’ 10.697 ‘posix_openpt’ 10.698 ‘posix_spawn’ 10.699 ‘posix_spawn_file_actions_addclose’ 10.700 ‘posix_spawn_file_actions_adddup2’ 10.701 ‘posix_spawn_file_actions_addopen’ 10.702 ‘posix_spawn_file_actions_destroy’ 10.703 ‘posix_spawn_file_actions_init’ 10.704 ‘posix_spawnattr_destroy’ 10.705 ‘posix_spawnattr_getflags’ 10.706 ‘posix_spawnattr_getpgroup’ 10.707 ‘posix_spawnattr_getschedparam’ 10.708 ‘posix_spawnattr_getschedpolicy’ 10.709 ‘posix_spawnattr_getsigdefault’ 10.710 ‘posix_spawnattr_getsigmask’ 10.711 ‘posix_spawnattr_init’ 10.712 ‘posix_spawnattr_setflags’ 10.713 ‘posix_spawnattr_setpgroup’ 10.714 ‘posix_spawnattr_setschedparam’ 10.715 ‘posix_spawnattr_setschedpolicy’ 10.716 ‘posix_spawnattr_setsigdefault’ 10.717 ‘posix_spawnattr_setsigmask’ 10.718 ‘posix_spawnp’ 10.719 ‘posix_trace_attr_destroy’ 10.720 ‘posix_trace_attr_getclockres’ 10.721 ‘posix_trace_attr_getcreatetime’ 10.722 ‘posix_trace_attr_getgenversion’ 10.723 ‘posix_trace_attr_getinherited’ 10.724 ‘posix_trace_attr_getlogfullpolicy’ 10.725 ‘posix_trace_attr_getlogsize’ 10.726 ‘posix_trace_attr_getmaxdatasize’ 10.727 ‘posix_trace_attr_getmaxsystemeventsize’ 10.728 ‘posix_trace_attr_getmaxusereventsize’ 10.729 ‘posix_trace_attr_getname’ 10.730 ‘posix_trace_attr_getstreamfullpolicy’ 10.731 ‘posix_trace_attr_getstreamsize’ 10.732 ‘posix_trace_attr_init’ 10.733 ‘posix_trace_attr_setinherited’ 10.734 ‘posix_trace_attr_setlogfullpolicy’ 10.735 ‘posix_trace_attr_setlogsize’ 10.736 ‘posix_trace_attr_setmaxdatasize’ 10.737 ‘posix_trace_attr_setname’ 10.738 ‘posix_trace_attr_setstreamfullpolicy’ 10.739 ‘posix_trace_attr_setstreamsize’ 10.740 ‘posix_trace_clear’ 10.741 ‘posix_trace_close’ 10.742 ‘posix_trace_create’ 10.743 ‘posix_trace_create_withlog’ 10.744 ‘posix_trace_event’ 10.745 ‘posix_trace_eventid_equal’ 10.746 ‘posix_trace_eventid_get_name’ 10.747 ‘posix_trace_eventid_open’ 10.748 ‘posix_trace_eventset_add’ 10.749 ‘posix_trace_eventset_del’ 10.750 ‘posix_trace_eventset_empty’ 10.751 ‘posix_trace_eventset_fill’ 10.752 ‘posix_trace_eventset_ismember’ 10.753 ‘posix_trace_eventtypelist_getnext_id’ 10.754 ‘posix_trace_eventtypelist_rewind’ 10.755 ‘posix_trace_flush’ 10.756 ‘posix_trace_get_attr’ 10.757 ‘posix_trace_get_filter’ 10.758 ‘posix_trace_get_status’ 10.759 ‘posix_trace_getnext_event’ 10.760 ‘posix_trace_open’ 10.761 ‘posix_trace_rewind’ 10.762 ‘posix_trace_set_filter’ 10.763 ‘posix_trace_shutdown’ 10.764 ‘posix_trace_start’ 10.765 ‘posix_trace_stop’ 10.766 ‘posix_trace_timedgetnext_event’ 10.767 ‘posix_trace_trid_eventid_open’ 10.768 ‘posix_trace_trygetnext_event’ 10.769 ‘posix_typed_mem_get_info’ 10.770 ‘posix_typed_mem_open’ 10.771 ‘pow’ 10.772 ‘powf’ 10.773 ‘powl’ 10.774 ‘pread’ 10.775 ‘printf’ 10.776 ‘pselect’ 10.777 ‘psiginfo’ 10.778 ‘psignal’ 10.779 ‘pthread_atfork’ 10.780 ‘pthread_attr_destroy’ 10.781 ‘pthread_attr_getdetachstate’ 10.782 ‘pthread_attr_getguardsize’ 10.783 ‘pthread_attr_getinheritsched’ 10.784 ‘pthread_attr_getschedparam’ 10.785 ‘pthread_attr_getschedpolicy’ 10.786 ‘pthread_attr_getscope’ 10.787 ‘pthread_attr_getstack’ 10.788 ‘pthread_attr_getstacksize’ 10.789 ‘pthread_attr_init’ 10.790 ‘pthread_attr_setdetachstate’ 10.791 ‘pthread_attr_setguardsize’ 10.792 ‘pthread_attr_setinheritsched’ 10.793 ‘pthread_attr_setschedparam’ 10.794 ‘pthread_attr_setschedpolicy’ 10.795 ‘pthread_attr_setscope’ 10.796 ‘pthread_attr_setstack’ 10.797 ‘pthread_attr_setstacksize’ 10.798 ‘pthread_barrier_destroy’ 10.799 ‘pthread_barrier_init’ 10.800 ‘pthread_barrier_wait’ 10.801 ‘pthread_barrierattr_destroy’ 10.802 ‘pthread_barrierattr_getpshared’ 10.803 ‘pthread_barrierattr_init’ 10.804 ‘pthread_barrierattr_setpshared’ 10.805 ‘pthread_cancel’ 10.806 ‘pthread_cleanup_pop’ 10.807 ‘pthread_cleanup_push’ 10.808 ‘pthread_cond_broadcast’ 10.809 ‘pthread_cond_destroy’ 10.810 ‘pthread_cond_init’ 10.811 ‘pthread_cond_signal’ 10.812 ‘pthread_cond_timedwait’ 10.813 ‘pthread_cond_wait’ 10.814 ‘pthread_condattr_destroy’ 10.815 ‘pthread_condattr_getclock’ 10.816 ‘pthread_condattr_getpshared’ 10.817 ‘pthread_condattr_init’ 10.818 ‘pthread_condattr_setclock’ 10.819 ‘pthread_condattr_setpshared’ 10.820 ‘pthread_create’ 10.821 ‘pthread_detach’ 10.822 ‘pthread_equal’ 10.823 ‘pthread_exit’ 10.824 ‘pthread_getconcurrency’ 10.825 ‘pthread_getcpuclockid’ 10.826 ‘pthread_getschedparam’ 10.827 ‘pthread_getspecific’ 10.828 ‘pthread_join’ 10.829 ‘pthread_key_create’ 10.830 ‘pthread_key_delete’ 10.831 ‘pthread_kill’ 10.832 ‘pthread_mutex_consistent’ 10.833 ‘pthread_mutex_destroy’ 10.834 ‘pthread_mutex_getprioceiling’ 10.835 ‘pthread_mutex_init’ 10.836 ‘pthread_mutex_lock’ 10.837 ‘pthread_mutex_setprioceiling’ 10.838 ‘pthread_mutex_timedlock’ 10.839 ‘pthread_mutex_trylock’ 10.840 ‘pthread_mutex_unlock’ 10.841 ‘pthread_mutexattr_destroy’ 10.842 ‘pthread_mutexattr_getprioceiling’ 10.843 ‘pthread_mutexattr_getprotocol’ 10.844 ‘pthread_mutexattr_getpshared’ 10.845 ‘pthread_mutexattr_getrobust’ 10.846 ‘pthread_mutexattr_gettype’ 10.847 ‘pthread_mutexattr_init’ 10.848 ‘pthread_mutexattr_setprioceiling’ 10.849 ‘pthread_mutexattr_setprotocol’ 10.850 ‘pthread_mutexattr_setpshared’ 10.851 ‘pthread_mutexattr_setrobust’ 10.852 ‘pthread_mutexattr_settype’ 10.853 ‘pthread_once’ 10.854 ‘pthread_rwlock_destroy’ 10.855 ‘pthread_rwlock_init’ 10.856 ‘pthread_rwlock_rdlock’ 10.857 ‘pthread_rwlock_timedrdlock’ 10.858 ‘pthread_rwlock_timedwrlock’ 10.859 ‘pthread_rwlock_tryrdlock’ 10.860 ‘pthread_rwlock_trywrlock’ 10.861 ‘pthread_rwlock_unlock’ 10.862 ‘pthread_rwlock_wrlock’ 10.863 ‘pthread_rwlockattr_destroy’ 10.864 ‘pthread_rwlockattr_getpshared’ 10.865 ‘pthread_rwlockattr_init’ 10.866 ‘pthread_rwlockattr_setpshared’ 10.867 ‘pthread_self’ 10.868 ‘pthread_setcancelstate’ 10.869 ‘pthread_setcanceltype’ 10.870 ‘pthread_setconcurrency’ 10.871 ‘pthread_setschedparam’ 10.872 ‘pthread_setschedprio’ 10.873 ‘pthread_setspecific’ 10.874 ‘pthread_sigmask’ 10.875 ‘pthread_spin_destroy’ 10.876 ‘pthread_spin_init’ 10.877 ‘pthread_spin_lock’ 10.878 ‘pthread_spin_trylock’ 10.879 ‘pthread_spin_unlock’ 10.880 ‘pthread_testcancel’ 10.881 ‘ptsname’ 10.882 ‘putc’ 10.883 ‘putc_unlocked’ 10.884 ‘putchar’ 10.885 ‘putchar_unlocked’ 10.886 ‘putenv’ 10.887 ‘putmsg’ 10.888 ‘putpmsg’ 10.889 ‘puts’ 10.890 ‘pututxline’ 10.891 ‘putwc’ 10.892 ‘putwchar’ 10.893 ‘pwrite’ 10.894 ‘qsort’ 10.895 ‘quick_exit’ 10.896 ‘raise’ 10.897 ‘rand’ 10.898 ‘rand_r’ 10.899 ‘random’ 10.900 ‘read’ 10.901 ‘readdir’ 10.902 ‘readdir_r’ 10.903 ‘readlink’ 10.904 ‘readlinkat’ 10.905 ‘readv’ 10.906 ‘realloc’ 10.907 ‘realpath’ 10.908 ‘recv’ 10.909 ‘recvfrom’ 10.910 ‘recvmsg’ 10.911 ‘regcomp’ 10.912 ‘regerror’ 10.913 ‘regexec’ 10.914 ‘regfree’ 10.915 ‘remainder’ 10.916 ‘remainderf’ 10.917 ‘remainderl’ 10.918 ‘remove’ 10.919 ‘remque’ 10.920 ‘remquo’ 10.921 ‘remquof’ 10.922 ‘remquol’ 10.923 ‘rename’ 10.924 ‘renameat’ 10.925 ‘rewind’ 10.926 ‘rewinddir’ 10.927 ‘rint’ 10.928 ‘rintf’ 10.929 ‘rintl’ 10.930 ‘rmdir’ 10.931 ‘round’ 10.932 ‘roundeven’ 10.933 ‘roundevenf’ 10.934 ‘roundevenl’ 10.935 ‘roundf’ 10.936 ‘roundl’ 10.937 ‘scalbln’ 10.938 ‘scalblnf’ 10.939 ‘scalblnl’ 10.940 ‘scalbn’ 10.941 ‘scalbnf’ 10.942 ‘scalbnl’ 10.943 ‘scandir’ 10.944 ‘scanf’ 10.945 ‘sched_get_priority_max’ 10.946 ‘sched_get_priority_min’ 10.947 ‘sched_getparam’ 10.948 ‘sched_getscheduler’ 10.949 ‘sched_rr_get_interval’ 10.950 ‘sched_setparam’ 10.951 ‘sched_setscheduler’ 10.952 ‘sched_yield’ 10.953 ‘seed48’ 10.954 ‘seekdir’ 10.955 ‘select’ 10.956 ‘sem_close’ 10.957 ‘sem_destroy’ 10.958 ‘sem_getvalue’ 10.959 ‘sem_init’ 10.960 ‘sem_open’ 10.961 ‘sem_post’ 10.962 ‘sem_timedwait’ 10.963 ‘sem_trywait’ 10.964 ‘sem_unlink’ 10.965 ‘sem_wait’ 10.966 ‘semctl’ 10.967 ‘semget’ 10.968 ‘semop’ 10.969 ‘send’ 10.970 ‘sendmsg’ 10.971 ‘sendto’ 10.972 ‘setbuf’ 10.973 ‘setegid’ 10.974 ‘setenv’ 10.975 ‘seteuid’ 10.976 ‘setgid’ 10.977 ‘setgrent’ 10.978 ‘sethostent’ 10.979 ‘setitimer’ 10.980 ‘setjmp’ 10.981 ‘setkey’ 10.982 ‘setlocale’ 10.983 ‘setlogmask’ 10.984 ‘setnetent’ 10.985 ‘setpayload’ 10.986 ‘setpayloadf’ 10.987 ‘setpayloadl’ 10.988 ‘setpayloadsig’ 10.989 ‘setpayloadsigf’ 10.990 ‘setpayloadsigl’ 10.991 ‘setpgid’ 10.992 ‘setpgrp’ 10.993 ‘setpriority’ 10.994 ‘setprotoent’ 10.995 ‘setpwent’ 10.996 ‘setregid’ 10.997 ‘setreuid’ 10.998 ‘setrlimit’ 10.999 ‘setservent’ 10.1000 ‘setsid’ 10.1001 ‘setsockopt’ 10.1002 ‘setstate’ 10.1003 ‘setuid’ 10.1004 ‘setutxent’ 10.1005 ‘setvbuf’ 10.1006 ‘shm_open’ 10.1007 ‘shm_unlink’ 10.1008 ‘shmat’ 10.1009 ‘shmctl’ 10.1010 ‘shmdt’ 10.1011 ‘shmget’ 10.1012 ‘shutdown’ 10.1013 ‘sigaction’ 10.1014 ‘sigaddset’ 10.1015 ‘sigaltstack’ 10.1016 ‘sigdelset’ 10.1017 ‘sigemptyset’ 10.1018 ‘sigfillset’ 10.1019 ‘sighold’ 10.1020 ‘sigignore’ 10.1021 ‘siginterrupt’ 10.1022 ‘sigismember’ 10.1023 ‘siglongjmp’ 10.1024 ‘signal’ 10.1025 ‘signbit’ 10.1026 ‘signgam’ 10.1027 ‘sigpause’ 10.1028 ‘sigpending’ 10.1029 ‘sigprocmask’ 10.1030 ‘sigqueue’ 10.1031 ‘sigrelse’ 10.1032 ‘sigset’ 10.1033 ‘sigsetjmp’ 10.1034 ‘sigsuspend’ 10.1035 ‘sigtimedwait’ 10.1036 ‘sigwait’ 10.1037 ‘sigwaitinfo’ 10.1038 ‘sin’ 10.1039 ‘sinf’ 10.1040 ‘sinh’ 10.1041 ‘sinhf’ 10.1042 ‘sinhl’ 10.1043 ‘sinl’ 10.1044 ‘sleep’ 10.1045 ‘snprintf’ 10.1046 ‘sockatmark’ 10.1047 ‘socket’ 10.1048 ‘socketpair’ 10.1049 ‘sprintf’ 10.1050 ‘sqrt’ 10.1051 ‘sqrtf’ 10.1052 ‘sqrtl’ 10.1053 ‘srand’ 10.1054 ‘srand48’ 10.1055 ‘srandom’ 10.1056 ‘sscanf’ 10.1057 ‘stat’ 10.1058 ‘statvfs’ 10.1059 ‘stderr’ 10.1060 ‘stdin’ 10.1061 ‘stdout’ 10.1062 ‘stpcpy’ 10.1063 ‘stpncpy’ 10.1064 ‘strcasecmp’ 10.1065 ‘strcasecmp_l’ 10.1066 ‘strcat’ 10.1067 ‘strchr’ 10.1068 ‘strcmp’ 10.1069 ‘strcoll’ 10.1070 ‘strcoll_l’ 10.1071 ‘strcpy’ 10.1072 ‘strcspn’ 10.1073 ‘strdup’ 10.1074 ‘strerror’ 10.1075 ‘strerror_l’ 10.1076 ‘strerror_r’ 10.1077 ‘strfmon’ 10.1078 ‘strfmon_l’ 10.1079 ‘strfromd’ 10.1080 ‘strfromf’ 10.1081 ‘strfroml’ 10.1082 ‘strftime’ 10.1083 ‘strftime_l’ 10.1084 ‘strlen’ 10.1085 ‘strncasecmp’ 10.1086 ‘strncasecmp_l’ 10.1087 ‘strncat’ 10.1088 ‘strncmp’ 10.1089 ‘strncpy’ 10.1090 ‘strndup’ 10.1091 ‘strnlen’ 10.1092 ‘strpbrk’ 10.1093 ‘strptime’ 10.1094 ‘strrchr’ 10.1095 ‘strsignal’ 10.1096 ‘strspn’ 10.1097 ‘strstr’ 10.1098 ‘strtod’ 10.1099 ‘strtof’ 10.1100 ‘strtoimax’ 10.1101 ‘strtok’ 10.1102 ‘strtok_r’ 10.1103 ‘strtol’ 10.1104 ‘strtold’ 10.1105 ‘strtoll’ 10.1106 ‘strtoul’ 10.1107 ‘strtoull’ 10.1108 ‘strtoumax’ 10.1109 ‘strxfrm’ 10.1110 ‘strxfrm_l’ 10.1111 ‘swab’ 10.1112 ‘swprintf’ 10.1113 ‘swscanf’ 10.1114 ‘symlink’ 10.1115 ‘symlinkat’ 10.1116 ‘sync’ 10.1117 ‘sysconf’ 10.1118 ‘syslog’ 10.1119 ‘system’ 10.1120 ‘tan’ 10.1121 ‘tanf’ 10.1122 ‘tanh’ 10.1123 ‘tanhf’ 10.1124 ‘tanhl’ 10.1125 ‘tanl’ 10.1126 ‘tcdrain’ 10.1127 ‘tcflow’ 10.1128 ‘tcflush’ 10.1129 ‘tcgetattr’ 10.1130 ‘tcgetpgrp’ 10.1131 ‘tcgetsid’ 10.1132 ‘tcsendbreak’ 10.1133 ‘tcsetattr’ 10.1134 ‘tcsetpgrp’ 10.1135 ‘tdelete’ 10.1136 ‘telldir’ 10.1137 ‘tempnam’ 10.1138 ‘tfind’ 10.1139 ‘tgamma’ 10.1140 ‘tgammaf’ 10.1141 ‘tgammal’ 10.1142 ‘thrd_create’ 10.1143 ‘thrd_current’ 10.1144 ‘thrd_detach’ 10.1145 ‘thrd_equal’ 10.1146 ‘thrd_exit’ 10.1147 ‘thrd_join’ 10.1148 ‘thrd_sleep’ 10.1149 ‘thrd_yield’ 10.1150 ‘time’ 10.1151 ‘timegm’ 10.1152 ‘timer_create’ 10.1153 ‘timer_delete’ 10.1154 ‘timer_getoverrun’ 10.1155 ‘timer_gettime’ 10.1156 ‘timer_settime’ 10.1157 ‘times’ 10.1158 ‘timespec_getres’ 10.1159 ‘timezone’ 10.1160 ‘tmpfile’ 10.1161 ‘tmpnam’ 10.1162 ‘toascii’ 10.1163 ‘tolower’ 10.1164 ‘tolower_l’ 10.1165 ‘totalorder’ 10.1166 ‘totalorderf’ 10.1167 ‘totalorderl’ 10.1168 ‘totalordermag’ 10.1169 ‘totalordermagf’ 10.1170 ‘totalordermagl’ 10.1171 ‘toupper’ 10.1172 ‘toupper_l’ 10.1173 ‘towctrans’ 10.1174 ‘towctrans_l’ 10.1175 ‘towlower’ 10.1176 ‘towlower_l’ 10.1177 ‘towupper’ 10.1178 ‘towupper_l’ 10.1179 ‘trunc’ 10.1180 ‘truncate’ 10.1181 ‘truncf’ 10.1182 ‘truncl’ 10.1183 ‘tsearch’ 10.1184 ‘tss_create’ 10.1185 ‘tss_delete’ 10.1186 ‘tss_get’ 10.1187 ‘tss_set’ 10.1188 ‘ttyname’ 10.1189 ‘ttyname_r’ 10.1190 ‘twalk’ 10.1191 ‘tzname’ 10.1192 ‘tzset’ 10.1193 ‘ufromfp’ 10.1194 ‘ufromfpf’ 10.1195 ‘ufromfpl’ 10.1196 ‘ufromfpx’ 10.1197 ‘ufromfpxf’ 10.1198 ‘ufromfpxl’ 10.1199 ‘ulimit’ 10.1200 ‘umask’ 10.1201 ‘uname’ 10.1202 ‘ungetc’ 10.1203 ‘ungetwc’ 10.1204 ‘unlink’ 10.1205 ‘unlinkat’ 10.1206 ‘unlockpt’ 10.1207 ‘unsetenv’ 10.1208 ‘uselocale’ 10.1209 ‘utime’ 10.1210 ‘utimensat’ 10.1211 ‘utimes’ 10.1212 ‘va_arg’ 10.1213 ‘va_copy’ 10.1214 ‘va_end’ 10.1215 ‘va_start’ 10.1216 ‘vdprintf’ 10.1217 ‘vfprintf’ 10.1218 ‘vfscanf’ 10.1219 ‘vfwprintf’ 10.1220 ‘vfwscanf’ 10.1221 ‘vprintf’ 10.1222 ‘vscanf’ 10.1223 ‘vsnprintf’ 10.1224 ‘vsprintf’ 10.1225 ‘vsscanf’ 10.1226 ‘vswprintf’ 10.1227 ‘vswscanf’ 10.1228 ‘vwprintf’ 10.1229 ‘vwscanf’ 10.1230 ‘wait’ 10.1231 ‘waitid’ 10.1232 ‘waitpid’ 10.1233 ‘wcpcpy’ 10.1234 ‘wcpncpy’ 10.1235 ‘wcrtomb’ 10.1236 ‘wcscasecmp’ 10.1237 ‘wcscasecmp_l’ 10.1238 ‘wcscat’ 10.1239 ‘wcschr’ 10.1240 ‘wcscmp’ 10.1241 ‘wcscoll’ 10.1242 ‘wcscoll_l’ 10.1243 ‘wcscpy’ 10.1244 ‘wcscspn’ 10.1245 ‘wcsdup’ 10.1246 ‘wcsftime’ 10.1247 ‘wcslen’ 10.1248 ‘wcsncasecmp’ 10.1249 ‘wcsncasecmp_l’ 10.1250 ‘wcsncat’ 10.1251 ‘wcsncmp’ 10.1252 ‘wcsncpy’ 10.1253 ‘wcsnlen’ 10.1254 ‘wcsnrtombs’ 10.1255 ‘wcspbrk’ 10.1256 ‘wcsrchr’ 10.1257 ‘wcsrtombs’ 10.1258 ‘wcsspn’ 10.1259 ‘wcsstr’ 10.1260 ‘wcstod’ 10.1261 ‘wcstof’ 10.1262 ‘wcstoimax’ 10.1263 ‘wcstok’ 10.1264 ‘wcstol’ 10.1265 ‘wcstold’ 10.1266 ‘wcstoll’ 10.1267 ‘wcstombs’ 10.1268 ‘wcstoul’ 10.1269 ‘wcstoull’ 10.1270 ‘wcstoumax’ 10.1271 ‘wcswidth’ 10.1272 ‘wcsxfrm’ 10.1273 ‘wcsxfrm_l’ 10.1274 ‘wctob’ 10.1275 ‘wctomb’ 10.1276 ‘wctrans’ 10.1277 ‘wctrans_l’ 10.1278 ‘wctype’ 10.1279 ‘wctype_l’ 10.1280 ‘wcwidth’ 10.1281 ‘wmemchr’ 10.1282 ‘wmemcmp’ 10.1283 ‘wmemcpy’ 10.1284 ‘wmemmove’ 10.1285 ‘wmemset’ 10.1286 ‘wordexp’ 10.1287 ‘wordfree’ 10.1288 ‘wprintf’ 10.1289 ‘write’ 10.1290 ‘writev’ 10.1291 ‘wscanf’ 10.1292 ‘y0’ 10.1293 ‘y1’ 10.1294 ‘yn’ 11 Past POSIX Function Substitutes 11.1 ‘bcmp’ 11.2 ‘bcopy’ 11.3 ‘bsd_signal’ 11.4 ‘bzero’ 11.5 ‘ecvt’ 11.6 ‘fcvt’ 11.7 ‘ftime’ 11.8 ‘gcvt’ 11.9 ‘getcontext’ 11.10 ‘gethostbyaddr’ 11.11 ‘gethostbyname’ 11.12 ‘getwd’ 11.13 ‘h_errno’ 11.14 ‘index’ 11.15 ‘makecontext’ 11.16 ‘mktemp’ 11.17 ‘pthread_attr_getstackaddr’ 11.18 ‘pthread_attr_setstackaddr’ 11.19 ‘rindex’ 11.20 ‘scalb’ 11.21 ‘setcontext’ 11.22 ‘swapcontext’ 11.23 ‘ualarm’ 11.24 ‘usleep’ 11.25 ‘vfork’ 11.26 ‘wcswcs’ 12 Glibc Header File Substitutes 12.1 ‘a.out.h’ 12.2 ‘aliases.h’ 12.3 ‘alloca.h’ 12.4 ‘ar.h’ 12.5 ‘argp.h’ 12.6 ‘argz.h’ 12.7 ‘byteswap.h’ 12.8 ‘crypt.h’ 12.9 ‘endian.h’ 12.10 ‘envz.h’ 12.11 ‘err.h’ 12.12 ‘error.h’ 12.13 ‘execinfo.h’ 12.14 ‘fpu_control.h’ 12.15 ‘fstab.h’ 12.16 ‘fts.h’ 12.17 ‘getopt.h’ 12.18 ‘gshadow.h’ 12.19 ‘ieee754.h’ 12.20 ‘ifaddrs.h’ 12.21 ‘libintl.h’ 12.22 ‘link.h’ 12.23 ‘malloc.h’ 12.24 ‘mcheck.h’ 12.25 ‘mntent.h’ 12.26 ‘obstack.h’ 12.27 ‘paths.h’ 12.28 ‘printf.h’ 12.29 ‘pty.h’ 12.30 ‘resolv.h’ 12.31 ‘shadow.h’ 12.32 ‘sys/file.h’ 12.33 ‘sys/ioctl.h’ 12.34 ‘sys/random.h’ 12.35 ‘sysexits.h’ 12.36 ‘ttyent.h’ 12.37 ‘utmp.h’ 13 Glibc Function Substitutes 13.1 Glibc Extensions to ‘’ 13.1.1 ‘aio_init’ 13.2 Glibc ‘’ 13.2.1 ‘endaliasent’ 13.2.2 ‘getaliasbyname’ 13.2.3 ‘getaliasbyname_r’ 13.2.4 ‘getaliasent’ 13.2.5 ‘getaliasent_r’ 13.2.6 ‘setaliasent’ 13.3 Glibc ‘’ 13.3.1 ‘argp_err_exit_status’ 13.3.2 ‘argp_error’ 13.3.3 ‘argp_failure’ 13.3.4 ‘argp_help’ 13.3.5 ‘argp_parse’ 13.3.6 ‘argp_program_bug_address’ 13.3.7 ‘argp_program_version’ 13.3.8 ‘argp_program_version_hook’ 13.3.9 ‘argp_state_help’ 13.3.10 ‘argp_usage’ 13.4 Glibc ‘’ 13.4.1 ‘argz_add’ 13.4.2 ‘argz_add_sep’ 13.4.3 ‘argz_append’ 13.4.4 ‘argz_count’ 13.4.5 ‘argz_create’ 13.4.6 ‘argz_create_sep’ 13.4.7 ‘argz_delete’ 13.4.8 ‘argz_extract’ 13.4.9 ‘argz_insert’ 13.4.10 ‘argz_next’ 13.4.11 ‘argz_replace’ 13.4.12 ‘argz_stringify’ 13.5 Glibc Extensions to ‘’ 13.5.1 ‘inet_aton’ 13.5.2 ‘inet_lnaof’ 13.5.3 ‘inet_makeaddr’ 13.5.4 ‘inet_net_ntop’ 13.5.5 ‘inet_net_pton’ 13.5.6 ‘inet_netof’ 13.5.7 ‘inet_network’ 13.5.8 ‘inet_nsap_addr’ 13.5.9 ‘inet_nsap_ntoa’ 13.6 Glibc ‘’ 13.6.1 ‘bswap_16’ 13.6.2 ‘bswap_32’ 13.6.3 ‘bswap_64’ 13.7 Glibc Extensions to ‘’ 13.7.1 ‘clog10’ 13.7.2 ‘clog10f’ 13.7.3 ‘clog10l’ 13.8 Glibc Extensions to ‘’ 13.8.1 ‘isctype’ 13.9 Glibc Extensions to ‘’ 13.9.1 ‘getdirentries’ 13.9.2 ‘scandirat’ 13.9.3 ‘versionsort’ 13.10 Glibc Extensions to ‘’ 13.10.1 ‘dladdr’ 13.10.2 ‘dladdr1’ 13.10.3 ‘dlinfo’ 13.10.4 ‘dlmopen’ 13.10.5 ‘dlvsym’ 13.11 Glibc ‘’ 13.11.1 ‘envz_add’ 13.11.2 ‘envz_entry’ 13.11.3 ‘envz_get’ 13.11.4 ‘envz_merge’ 13.11.5 ‘envz_remove’ 13.11.6 ‘envz_strip’ 13.12 Glibc ‘’ 13.12.1 ‘err’ 13.12.2 ‘errx’ 13.12.3 ‘verr’ 13.12.4 ‘verrx’ 13.12.5 ‘vwarn’ 13.12.6 ‘vwarnx’ 13.12.7 ‘warn’ 13.12.8 ‘warnx’ 13.13 Glibc Extensions to ‘’ 13.13.1 ‘program_invocation_name’ 13.13.2 ‘program_invocation_short_name’ 13.14 Glibc ‘’ 13.14.1 ‘error’ 13.14.2 ‘error_at_line’ 13.14.3 ‘error_message_count’ 13.14.4 ‘error_one_per_line’ 13.14.5 ‘error_print_progname’ 13.15 Glibc ‘’ 13.15.1 ‘backtrace’ 13.15.2 ‘backtrace_symbols’ 13.15.3 ‘backtrace_symbols_fd’ 13.16 Glibc Extensions to ‘’ 13.16.1 ‘fallocate’ 13.16.2 ‘name_to_handle_at’ 13.16.3 ‘readahead’ 13.16.4 ‘open_by_handle_at’ 13.16.5 ‘sync_file_range’ 13.17 Glibc Extensions to ‘’ 13.17.1 ‘fedisableexcept’ 13.17.2 ‘feenableexcept’ 13.17.3 ‘fegetexcept’ 13.18 Glibc Extensions to ‘’ 13.18.1 ‘addseverity’ 13.19 Glibc ‘’ 13.19.1 ‘endfsent’ 13.19.2 ‘getfsent’ 13.19.3 ‘getfsfile’ 13.19.4 ‘getfsspec’ 13.19.5 ‘setfsent’ 13.20 Glibc ‘’ 13.20.1 ‘fts_children’ 13.20.2 ‘fts_close’ 13.20.3 ‘fts_open’ 13.20.4 ‘fts_read’ 13.20.5 ‘fts_set’ 13.21 Glibc ‘’ 13.21.1 ‘getopt_long’ 13.21.2 ‘getopt_long_only’ 13.22 Glibc Extensions to ‘’ 13.22.1 ‘glob_pattern_p’ 13.23 Glibc Extensions to ‘’ 13.23.1 ‘gnu_get_libc_release’ 13.23.2 ‘gnu_get_libc_version’ 13.24 Glibc Extensions to ‘’ 13.24.1 ‘fgetgrent’ 13.24.2 ‘fgetgrent_r’ 13.24.3 ‘getgrent_r’ 13.24.4 ‘getgrouplist’ 13.24.5 ‘initgroups’ 13.24.6 ‘putgrent’ 13.24.7 ‘setgroups’ 13.25 Glibc ‘’ 13.25.1 ‘endsgent’ 13.25.2 ‘fgetsgent’ 13.25.3 ‘fgetsgent_r’ 13.25.4 ‘getsgent’ 13.25.5 ‘getsgent_r’ 13.25.6 ‘getsgnam’ 13.25.7 ‘getsgnam_r’ 13.25.8 ‘putsgent’ 13.25.9 ‘setsgent’ 13.25.10 ‘sgetsgent’ 13.25.11 ‘sgetsgent_r’ 13.26 Glibc ‘’ 13.26.1 ‘getifaddrs’ 13.26.2 ‘freeifaddrs’ 13.27 Glibc ‘’ 13.27.1 ‘bind_textdomain_codeset’ 13.27.2 ‘bindtextdomain’ 13.27.3 ‘dcgettext’ 13.27.4 ‘dcngettext’ 13.27.5 ‘dgettext’ 13.27.6 ‘dngettext’ 13.27.7 ‘gettext’ 13.27.8 ‘ngettext’ 13.27.9 ‘textdomain’ 13.28 Glibc ‘’ 13.28.1 ‘dl_iterate_phdr’ 13.29 Glibc ‘’ 13.29.1 ‘mallinfo’ 13.29.2 ‘mallinfo2’ 13.29.3 ‘malloc_info’ 13.29.4 ‘malloc_stats’ 13.29.5 ‘malloc_trim’ 13.29.6 ‘malloc_usable_size’ 13.29.7 ‘mallopt’ 13.29.8 ‘memalign’ 13.29.9 ‘pvalloc’ 13.30 Glibc Extensions to ‘’ 13.30.1 ‘drem’ 13.30.2 ‘dremf’ 13.30.3 ‘dreml’ 13.30.4 ‘exp10’ 13.30.5 ‘exp10f’ 13.30.6 ‘exp10l’ 13.30.7 ‘finite’ 13.30.8 ‘finitef’ 13.30.9 ‘finitel’ 13.30.10 ‘gamma’ 13.30.11 ‘gammaf’ 13.30.12 ‘gammal’ 13.30.13 ‘isinff’ 13.30.14 ‘isinfl’ 13.30.15 ‘isnanf’ 13.30.16 ‘isnanl’ 13.30.17 ‘j0f’ 13.30.18 ‘j0l’ 13.30.19 ‘j1f’ 13.30.20 ‘j1l’ 13.30.21 ‘jnf’ 13.30.22 ‘jnl’ 13.30.23 ‘lgamma_r’ 13.30.24 ‘lgammaf_r’ 13.30.25 ‘lgammal_r’ 13.30.26 ‘matherr’ 13.30.27 ‘pow10’ 13.30.28 ‘pow10f’ 13.30.29 ‘pow10l’ 13.30.30 ‘scalbf’ 13.30.31 ‘scalbl’ 13.30.32 ‘significand’ 13.30.33 ‘significandf’ 13.30.34 ‘significandl’ 13.30.35 ‘sincos’ 13.30.36 ‘sincosf’ 13.30.37 ‘sincosl’ 13.30.38 ‘y0f’ 13.30.39 ‘y0l’ 13.30.40 ‘y1f’ 13.30.41 ‘y1l’ 13.30.42 ‘ynf’ 13.30.43 ‘ynl’ 13.31 Glibc ‘’ 13.31.1 ‘mcheck’ 13.31.2 ‘mcheck_check_all’ 13.31.3 ‘mcheck_pedantic’ 13.31.4 ‘mprobe’ 13.31.5 ‘mtrace’ 13.31.6 ‘muntrace’ 13.32 Glibc ‘’ 13.32.1 ‘addmntent’ 13.32.2 ‘endmntent’ 13.32.3 ‘getmntent’ 13.32.4 ‘getmntent_r’ 13.32.5 ‘hasmntopt’ 13.32.6 ‘setmntent’ 13.33 Glibc Extensions to ‘’ 13.33.1 ‘endnetgrent’ 13.33.2 ‘gethostbyaddr_r’ 13.33.3 ‘gethostbyname2’ 13.33.4 ‘gethostbyname2_r’ 13.33.5 ‘gethostbyname_r’ 13.33.6 ‘gethostent_r’ 13.33.7 ‘getnetbyaddr_r’ 13.33.8 ‘getnetbyname_r’ 13.33.9 ‘getnetent_r’ 13.33.10 ‘getnetgrent’ 13.33.11 ‘getnetgrent_r’ 13.33.12 ‘getprotobyname_r’ 13.33.13 ‘getprotobynumber_r’ 13.33.14 ‘getprotoent_r’ 13.33.15 ‘getservbyname_r’ 13.33.16 ‘getservbyport_r’ 13.33.17 ‘getservent_r’ 13.33.18 ‘herror’ 13.33.19 ‘hstrerror’ 13.33.20 ‘innetgr’ 13.33.21 ‘rcmd’ 13.33.22 ‘rcmd_af’ 13.33.23 ‘rexec’ 13.33.24 ‘rexec_af’ 13.33.25 ‘rresvport’ 13.33.26 ‘rresvport_af’ 13.33.27 ‘ruserok’ 13.33.28 ‘ruserok_af’ 13.33.29 ‘setnetgrent’ 13.34 Glibc ‘’ 13.34.1 ‘ether_aton’ 13.34.2 ‘ether_aton_r’ 13.34.3 ‘ether_hostton’ 13.34.4 ‘ether_line’ 13.34.5 ‘ether_ntoa’ 13.34.6 ‘ether_ntoa_r’ 13.34.7 ‘ether_ntohost’ 13.35 Glibc Extensions to ‘’ 13.35.1 ‘bindresvport’ 13.35.2 ‘getipv4sourcefilter’ 13.35.3 ‘getsourcefilter’ 13.35.4 ‘in6addr_any’ 13.35.5 ‘in6addr_loopback’ 13.35.6 ‘inet6_option_alloc’ 13.35.7 ‘inet6_option_append’ 13.35.8 ‘inet6_option_find’ 13.35.9 ‘inet6_option_init’ 13.35.10 ‘inet6_option_next’ 13.35.11 ‘inet6_option_space’ 13.35.12 ‘inet6_opt_append’ 13.35.13 ‘inet6_opt_find’ 13.35.14 ‘inet6_opt_finish’ 13.35.15 ‘inet6_opt_get_val’ 13.35.16 ‘inet6_opt_init’ 13.35.17 ‘inet6_opt_next’ 13.35.18 ‘inet6_opt_set_val’ 13.35.19 ‘inet6_rth_add’ 13.35.20 ‘inet6_rth_getaddr’ 13.35.21 ‘inet6_rth_init’ 13.35.22 ‘inet6_rth_reverse’ 13.35.23 ‘inet6_rth_segments’ 13.35.24 ‘inet6_rth_space’ 13.35.25 ‘setipv4sourcefilter’ 13.35.26 ‘setsourcefilter’ 13.36 Glibc ‘’ 13.36.1 ‘obstack_alloc_failed_handler’ 13.36.2 ‘obstack_exit_failure’ 13.36.3 ‘obstack_free’ 13.36.4 ‘obstack_printf’ 13.36.5 ‘obstack_vprintf’ 13.37 Glibc Extensions to ‘’ 13.37.1 ‘ppoll’ 13.38 Glibc ‘’ 13.38.1 ‘parse_printf_format’ 13.38.2 ‘printf_size’ 13.38.3 ‘printf_size_info’ 13.38.4 ‘register_printf_function’ 13.38.5 ‘register_printf_modifier’ 13.38.6 ‘register_printf_specifier’ 13.38.7 ‘register_printf_type’ 13.39 Glibc Extensions to ‘’ 13.39.1 ‘pthread_attr_getaffinity_np’ 13.39.2 ‘pthread_attr_setaffinity_np’ 13.39.3 ‘pthread_attr_getsigmask_np’ 13.39.4 ‘pthread_attr_setsigmask_np’ 13.39.5 ‘pthread_clockjoin_np’ 13.39.6 ‘pthread_cond_clockwait’ 13.39.7 ‘pthread_getaffinity_np’ 13.39.8 ‘pthread_getattr_default_np’ 13.39.9 ‘pthread_getattr_np’ 13.39.10 ‘pthread_getname_np’ 13.39.11 ‘pthread_kill_other_threads_np’ 13.39.12 ‘pthread_mutex_clocklock’ 13.39.13 ‘pthread_rwlock_clockrdlock’ 13.39.14 ‘pthread_rwlock_clockwrlock’ 13.39.15 ‘pthread_rwlockattr_getkind_np’ 13.39.16 ‘pthread_rwlockattr_setkind_np’ 13.39.17 ‘pthread_setaffinity_np’ 13.39.18 ‘pthread_setattr_default_np’ 13.39.19 ‘pthread_setname_np’ 13.39.20 ‘pthread_sigqueue’ 13.39.21 ‘pthread_timedjoin_np’ 13.39.22 ‘pthread_tryjoin_np’ 13.40 Glibc ‘’ 13.40.1 ‘forkpty’ 13.40.2 ‘openpty’ 13.41 Glibc Extensions to ‘’ 13.41.1 ‘fgetpwent’ 13.41.2 ‘fgetpwent_r’ 13.41.3 ‘getpw’ 13.41.4 ‘getpwent_r’ 13.41.5 ‘putpwent’ 13.42 Glibc Extensions to ‘’ 13.42.1 ‘re_comp’ 13.42.2 ‘re_compile_fastmap’ 13.42.3 ‘re_compile_pattern’ 13.42.4 ‘re_exec’ 13.42.5 ‘re_match’ 13.42.6 ‘re_match_2’ 13.42.7 ‘re_search’ 13.42.8 ‘re_search_2’ 13.42.9 ‘re_set_registers’ 13.42.10 ‘re_set_syntax’ 13.42.11 ‘re_syntax_options’ 13.43 Glibc ‘’ 13.43.1 ‘advance’ 13.43.2 ‘loc1’ 13.43.3 ‘loc2’ 13.43.4 ‘locs’ 13.43.5 ‘step’ 13.44 Glibc ‘’ 13.44.1 ‘dn_comp’ 13.44.2 ‘dn_expand’ 13.44.3 ‘dn_skipname’ 13.44.4 ‘res_dnok’ 13.44.5 ‘res_hnok’ 13.44.6 ‘res_init’ 13.44.7 ‘res_mailok’ 13.44.8 ‘res_mkquery’ 13.44.9 ‘res_nmkquery’ 13.44.10 ‘res_nquery’ 13.44.11 ‘res_nquerydomain’ 13.44.12 ‘res_nsearch’ 13.44.13 ‘res_nsend’ 13.44.14 ‘res_ownok’ 13.44.15 ‘res_query’ 13.44.16 ‘res_querydomain’ 13.44.17 ‘res_search’ 13.44.18 ‘res_send’ 13.45 Glibc ‘’ 13.45.1 ‘authdes_create’ 13.45.2 ‘authdes_pk_create’ 13.45.3 ‘authnone_create’ 13.45.4 ‘authunix_create’ 13.45.5 ‘authunix_create_default’ 13.45.6 ‘getnetname’ 13.45.7 ‘host2netname’ 13.45.8 ‘key_decryptsession’ 13.45.9 ‘key_decryptsession_pk’ 13.45.10 ‘key_encryptsession’ 13.45.11 ‘key_encryptsession_pk’ 13.45.12 ‘key_gendes’ 13.45.13 ‘key_get_conv’ 13.45.14 ‘key_secretkey_is_set’ 13.45.15 ‘key_setsecret’ 13.45.16 ‘netname2host’ 13.45.17 ‘netname2user’ 13.45.18 ‘user2netname’ 13.45.19 ‘xdr_des_block’ 13.45.20 ‘xdr_opaque_auth’ 13.46 Glibc ‘’ 13.46.1 ‘authdes_getucred’ 13.46.2 ‘getpublickey’ 13.46.3 ‘getsecretkey’ 13.46.4 ‘rtime’ 13.47 Glibc ‘’ 13.47.1 ‘xdr_authunix_parms’ 13.48 Glibc ‘’ 13.48.1 ‘callrpc’ 13.48.2 ‘clnt_create’ 13.48.3 ‘clnt_pcreateerror’ 13.48.4 ‘clnt_perrno’ 13.48.5 ‘clnt_perror’ 13.48.6 ‘clnt_spcreateerror’ 13.48.7 ‘clnt_sperrno’ 13.48.8 ‘clnt_sperror’ 13.48.9 ‘clntraw_create’ 13.48.10 ‘clnttcp_create’ 13.48.11 ‘clntudp_bufcreate’ 13.48.12 ‘clntudp_create’ 13.48.13 ‘clntunix_create’ 13.48.14 ‘get_myaddress’ 13.48.15 ‘getrpcport’ 13.48.16 ‘rpc_createerr’ 13.49 Glibc ‘’ 13.49.1 ‘xdr_cryptkeyarg’ 13.49.2 ‘xdr_cryptkeyarg2’ 13.49.3 ‘xdr_cryptkeyres’ 13.49.4 ‘xdr_getcredres’ 13.49.5 ‘xdr_key_netstarg’ 13.49.6 ‘xdr_key_netstres’ 13.49.7 ‘xdr_keybuf’ 13.49.8 ‘xdr_keystatus’ 13.49.9 ‘xdr_netnamestr’ 13.49.10 ‘xdr_unixcred’ 13.50 Glibc ‘’ 13.50.1 ‘endrpcent’ 13.50.2 ‘getrpcbyname’ 13.50.3 ‘getrpcbyname_r’ 13.50.4 ‘getrpcbynumber’ 13.50.5 ‘getrpcbynumber_r’ 13.50.6 ‘getrpcent’ 13.50.7 ‘getrpcent_r’ 13.50.8 ‘setrpcent’ 13.51 Glibc ‘’ 13.51.1 ‘clnt_broadcast’ 13.51.2 ‘pmap_getmaps’ 13.51.3 ‘pmap_getport’ 13.51.4 ‘pmap_rmtcall’ 13.51.5 ‘pmap_set’ 13.51.6 ‘pmap_unset’ 13.52 Glibc ‘’ 13.52.1 ‘xdr_pmap’ 13.52.2 ‘xdr_pmaplist’ 13.53 Glibc ‘’ 13.53.1 ‘xdr_rmtcall_args’ 13.53.2 ‘xdr_rmtcallres’ 13.54 Glibc ‘’ 13.54.1 ‘xdr_callhdr’ 13.54.2 ‘xdr_callmsg’ 13.54.3 ‘xdr_replymsg’ 13.55 Glibc ‘’ 13.55.1 ‘svc_exit’ 13.55.2 ‘svc_fdset’ 13.55.3 ‘svc_getreq’ 13.55.4 ‘svc_getreq_common’ 13.55.5 ‘svc_getreq_poll’ 13.55.6 ‘svc_getreqset’ 13.55.7 ‘svc_max_pollfd’ 13.55.8 ‘svc_pollfd’ 13.55.9 ‘svc_register’ 13.55.10 ‘svc_run’ 13.55.11 ‘svc_sendreply’ 13.55.12 ‘svc_unregister’ 13.55.13 ‘svcerr_auth’ 13.55.14 ‘svcerr_decode’ 13.55.15 ‘svcerr_noproc’ 13.55.16 ‘svcerr_noprog’ 13.55.17 ‘svcerr_progvers’ 13.55.18 ‘svcerr_systemerr’ 13.55.19 ‘svcerr_weakauth’ 13.55.20 ‘svcraw_create’ 13.55.21 ‘svctcp_create’ 13.55.22 ‘svcudp_bufcreate’ 13.55.23 ‘svcudp_create’ 13.55.24 ‘svcunix_create’ 13.55.25 ‘xprt_register’ 13.55.26 ‘xprt_unregister’ 13.56 Glibc ‘’ 13.56.1 ‘xdr_array’ 13.56.2 ‘xdr_bool’ 13.56.3 ‘xdr_bytes’ 13.56.4 ‘xdr_char’ 13.56.5 ‘xdr_double’ 13.56.6 ‘xdr_enum’ 13.56.7 ‘xdr_float’ 13.56.8 ‘xdr_free’ 13.56.9 ‘xdr_hyper’ 13.56.10 ‘xdr_int’ 13.56.11 ‘xdr_int16_t’ 13.56.12 ‘xdr_int32_t’ 13.56.13 ‘xdr_int64_t’ 13.56.14 ‘xdr_int8_t’ 13.56.15 ‘xdr_long’ 13.56.16 ‘xdr_longlong_t’ 13.56.17 ‘xdr_netobj’ 13.56.18 ‘xdr_opaque’ 13.56.19 ‘xdr_pointer’ 13.56.20 ‘xdr_quad_t’ 13.56.21 ‘xdr_reference’ 13.56.22 ‘xdr_short’ 13.56.23 ‘xdr_sizeof’ 13.56.24 ‘xdr_string’ 13.56.25 ‘xdr_u_char’ 13.56.26 ‘xdr_u_hyper’ 13.56.27 ‘xdr_u_int’ 13.56.28 ‘xdr_u_long’ 13.56.29 ‘xdr_u_longlong_t’ 13.56.30 ‘xdr_u_quad_t’ 13.56.31 ‘xdr_u_short’ 13.56.32 ‘xdr_uint16_t’ 13.56.33 ‘xdr_uint32_t’ 13.56.34 ‘xdr_uint64_t’ 13.56.35 ‘xdr_uint8_t’ 13.56.36 ‘xdr_union’ 13.56.37 ‘xdr_vector’ 13.56.38 ‘xdr_void’ 13.56.39 ‘xdr_wrapstring’ 13.56.40 ‘xdrmem_create’ 13.56.41 ‘xdrrec_create’ 13.56.42 ‘xdrrec_endofrecord’ 13.56.43 ‘xdrrec_eof’ 13.56.44 ‘xdrrec_skiprecord’ 13.56.45 ‘xdrstdio_create’ 13.57 Glibc ‘’ 13.57.1 ‘nis_add’ 13.57.2 ‘nis_add_entry’ 13.57.3 ‘nis_addmember’ 13.57.4 ‘nis_checkpoint’ 13.57.5 ‘nis_clone_object’ 13.57.6 ‘nis_creategroup’ 13.57.7 ‘nis_destroy_object’ 13.57.8 ‘nis_destroygroup’ 13.57.9 ‘nis_dir_cmp’ 13.57.10 ‘nis_domain_of’ 13.57.11 ‘nis_domain_of_r’ 13.57.12 ‘nis_first_entry’ 13.57.13 ‘nis_freenames’ 13.57.14 ‘nis_freeresult’ 13.57.15 ‘nis_freeservlist’ 13.57.16 ‘nis_freetags’ 13.57.17 ‘nis_getnames’ 13.57.18 ‘nis_getservlist’ 13.57.19 ‘nis_ismember’ 13.57.20 ‘nis_leaf_of’ 13.57.21 ‘nis_leaf_of_r’ 13.57.22 ‘nis_lerror’ 13.57.23 ‘nis_list’ 13.57.24 ‘nis_local_directory’ 13.57.25 ‘nis_local_group’ 13.57.26 ‘nis_local_host’ 13.57.27 ‘nis_local_principal’ 13.57.28 ‘nis_lookup’ 13.57.29 ‘nis_mkdir’ 13.57.30 ‘nis_modify’ 13.57.31 ‘nis_modify_entry’ 13.57.32 ‘nis_name_of’ 13.57.33 ‘nis_name_of_r’ 13.57.34 ‘nis_next_entry’ 13.57.35 ‘nis_perror’ 13.57.36 ‘nis_ping’ 13.57.37 ‘nis_print_directory’ 13.57.38 ‘nis_print_entry’ 13.57.39 ‘nis_print_group’ 13.57.40 ‘nis_print_group_entry’ 13.57.41 ‘nis_print_link’ 13.57.42 ‘nis_print_object’ 13.57.43 ‘nis_print_result’ 13.57.44 ‘nis_print_rights’ 13.57.45 ‘nis_print_table’ 13.57.46 ‘nis_remove’ 13.57.47 ‘nis_remove_entry’ 13.57.48 ‘nis_removemember’ 13.57.49 ‘nis_rmdir’ 13.57.50 ‘nis_servstate’ 13.57.51 ‘nis_sperrno’ 13.57.52 ‘nis_sperror’ 13.57.53 ‘nis_sperror_r’ 13.57.54 ‘nis_stats’ 13.57.55 ‘nis_verifygroup’ 13.58 Glibc ‘’ 13.58.1 ‘xdr_cback_data’ 13.58.2 ‘xdr_obj_p’ 13.59 Glibc ‘’ 13.59.1 ‘xdr_domainname’ 13.59.2 ‘xdr_keydat’ 13.59.3 ‘xdr_valdat’ 13.59.4 ‘xdr_ypbind_resptype’ 13.59.5 ‘xdr_ypmap_parms’ 13.59.6 ‘xdr_ypmaplist’ 13.59.7 ‘xdr_yppushresp_xfr’ 13.59.8 ‘xdr_ypreq_key’ 13.59.9 ‘xdr_ypreq_nokey’ 13.59.10 ‘xdr_ypreq_xfr’ 13.59.11 ‘xdr_ypresp_all’ 13.59.12 ‘xdr_ypresp_key_val’ 13.59.13 ‘xdr_ypresp_maplist’ 13.59.14 ‘xdr_ypresp_master’ 13.59.15 ‘xdr_ypresp_order’ 13.59.16 ‘xdr_ypresp_val’ 13.59.17 ‘xdr_ypresp_xfr’ 13.59.18 ‘xdr_ypstat’ 13.59.19 ‘xdr_ypxfrstat’ 13.60 Glibc ‘’ 13.60.1 ‘yp_all’ 13.60.2 ‘yp_bind’ 13.60.3 ‘yp_first’ 13.60.4 ‘yp_get_default_domain’ 13.60.5 ‘yp_master’ 13.60.6 ‘yp_match’ 13.60.7 ‘yp_next’ 13.60.8 ‘yp_order’ 13.60.9 ‘yp_unbind’ 13.60.10 ‘ypbinderr_string’ 13.60.11 ‘yperr_string’ 13.60.12 ‘ypprot_err’ 13.61 Glibc Extensions to ‘’ 13.61.1 ‘clone’ 13.61.2 ‘getcpu’ 13.61.3 ‘sched_getaffinity’ 13.61.4 ‘sched_getcpu’ 13.61.5 ‘sched_setaffinity’ 13.61.6 ‘setns’ 13.62 Glibc Extensions to ‘’ 13.62.1 ‘hcreate_r’ 13.62.2 ‘hdestroy_r’ 13.62.3 ‘hsearch_r’ 13.62.4 ‘tdestroy’ 13.62.5 ‘twalk_r’ 13.63 Glibc Extensions to ‘’ 13.63.1 ‘fgetfilecon’ 13.63.2 ‘getfilecon’ 13.63.3 ‘lgetfilecon’ 13.64 Glibc Extensions to ‘’ 13.64.1 ‘sem_clockwait’ 13.65 Glibc ‘’ 13.65.1 ‘endspent’ 13.65.2 ‘fgetspent’ 13.65.3 ‘fgetspent_r’ 13.65.4 ‘getspent’ 13.65.5 ‘getspent_r’ 13.65.6 ‘getspnam’ 13.65.7 ‘getspnam_r’ 13.65.8 ‘lckpwdf’ 13.65.9 ‘putspent’ 13.65.10 ‘setspent’ 13.65.11 ‘sgetspent’ 13.65.12 ‘sgetspent_r’ 13.65.13 ‘ulckpwdf’ 13.66 Glibc Extensions to ‘’ 13.66.1 ‘gsignal’ 13.66.2 ‘sigandset’ 13.66.3 ‘sigblock’ 13.66.4 ‘siggetmask’ 13.66.5 ‘sigisemptyset’ 13.66.6 ‘sigorset’ 13.66.7 ‘sigreturn’ 13.66.8 ‘sigsetmask’ 13.66.9 ‘sigstack’ 13.66.10 ‘sigvec’ 13.66.11 ‘ssignal’ 13.66.12 ‘sys_siglist’ 13.66.13 ‘sysv_signal’ 13.66.14 ‘tgkill’ 13.67 Glibc Extensions to ‘’ 13.67.1 ‘posix_spawn_file_actions_addchdir_np’ 13.67.2 ‘posix_spawn_file_actions_addclosefrom_np’ 13.67.3 ‘posix_spawn_file_actions_addfchdir_np’ 13.68 Glibc Extensions to ‘’ 13.68.1 ‘asprintf’ 13.68.2 ‘cuserid’ 13.68.3 ‘clearerr_unlocked’ 13.68.4 ‘fcloseall’ 13.68.5 ‘feof_unlocked’ 13.68.6 ‘ferror_unlocked’ 13.68.7 ‘fflush_unlocked’ 13.68.8 ‘fgetc_unlocked’ 13.68.9 ‘fgets_unlocked’ 13.68.10 ‘fileno_unlocked’ 13.68.11 ‘fopencookie’ 13.68.12 ‘fputc_unlocked’ 13.68.13 ‘fputs_unlocked’ 13.68.14 ‘fread_unlocked’ 13.68.15 ‘fwrite_unlocked’ 13.68.16 ‘getw’ 13.68.17 ‘putw’ 13.68.18 ‘renameat2’ 13.68.19 ‘setbuffer’ 13.68.20 ‘setlinebuf’ 13.68.21 ‘sys_errlist’ 13.68.22 ‘sys_nerr’ 13.68.23 ‘tmpnam_r’ 13.68.24 ‘vasprintf’ 13.69 Glibc Extensions to ‘’ 13.69.1 ‘canonicalize_file_name’ 13.69.2 ‘cfree’ 13.69.3 ‘clearenv’ 13.69.4 ‘drand48_r’ 13.69.5 ‘ecvt_r’ 13.69.6 ‘erand48_r’ 13.69.7 ‘fcvt_r’ 13.69.8 ‘getloadavg’ 13.69.9 ‘getpt’ 13.69.10 ‘initstate_r’ 13.69.11 ‘jrand48_r’ 13.69.12 ‘lcong48_r’ 13.69.13 ‘lrand48_r’ 13.69.14 ‘mkostemp’ 13.69.15 ‘mkostemps’ 13.69.16 ‘mkstemps’ 13.69.17 ‘mrand48_r’ 13.69.18 ‘nrand48_r’ 13.69.19 ‘on_exit’ 13.69.20 ‘ptsname_r’ 13.69.21 ‘qecvt’ 13.69.22 ‘qecvt_r’ 13.69.23 ‘qfcvt’ 13.69.24 ‘qfcvt_r’ 13.69.25 ‘qgcvt’ 13.69.26 ‘qsort_r’ 13.69.27 ‘random_r’ 13.69.28 ‘rpmatch’ 13.69.29 ‘secure_getenv’ 13.69.30 ‘seed48_r’ 13.69.31 ‘setstate_r’ 13.69.32 ‘srand48_r’ 13.69.33 ‘srandom_r’ 13.69.34 ‘strtod_l’ 13.69.35 ‘strtof_l’ 13.69.36 ‘strtol_l’ 13.69.37 ‘strtold_l’ 13.69.38 ‘strtoll_l’ 13.69.39 ‘strtoq’ 13.69.40 ‘strtoul_l’ 13.69.41 ‘strtoull_l’ 13.69.42 ‘strtouq’ 13.69.43 ‘valloc’ 13.70 Glibc Extensions to ‘’ 13.70.1 ‘explicit_bzero’ 13.70.2 ‘ffsl’ 13.70.3 ‘ffsll’ 13.70.4 ‘memfrob’ 13.70.5 ‘memmem’ 13.70.6 ‘mempcpy’ 13.70.7 ‘memrchr’ 13.70.8 ‘rawmemchr’ 13.70.9 ‘sigabbrev_np’ 13.70.10 ‘sigdescr_np’ 13.70.11 ‘strcasestr’ 13.70.12 ‘strchrnul’ 13.70.13 ‘strerrordesc_np’ 13.70.14 ‘strerrorname_np’ 13.70.15 ‘strfry’ 13.70.16 ‘strsep’ 13.70.17 ‘strverscmp’ 13.71 Glibc ‘’ 13.71.1 ‘getauxval’ 13.72 Glibc ‘’ 13.72.1 ‘capget’ 13.72.2 ‘capset’ 13.73 Glibc ‘’ 13.73.1 ‘epoll_create’ 13.73.2 ‘epoll_create1’ 13.73.3 ‘epoll_ctl’ 13.73.4 ‘epoll_pwait’ 13.73.5 ‘epoll_wait’ 13.74 Glibc ‘’ 13.74.1 ‘eventfd’ 13.74.2 ‘eventfd_read’ 13.74.3 ‘eventfd_write’ 13.75 Glibc ‘’ 13.75.1 ‘fanotify_init’ 13.75.2 ‘fanotify_mark’ 13.76 Glibc ‘’ 13.76.1 ‘flock’ 13.77 Glibc ‘’ 13.77.1 ‘setfsgid’ 13.77.2 ‘setfsuid’ 13.78 Glibc ‘’ 13.78.1 ‘monstartup’ 13.79 Glibc ‘’ 13.79.1 ‘inotify_add_watch’ 13.79.2 ‘inotify_init’ 13.79.3 ‘inotify_init1’ 13.79.4 ‘inotify_rm_watch’ 13.80 Glibc ‘’, ‘’ 13.80.1 ‘ioperm’ 13.80.2 ‘iopl’ 13.81 Glibc ‘’ 13.81.1 ‘bdflush’ 13.82 Glibc ‘’ 13.82.1 ‘klogctl’ 13.83 Glibc Extensions to ‘’ 13.83.1 ‘madvise’ 13.83.2 ‘memfd_create’ 13.83.3 ‘mincore’ 13.83.4 ‘mlock2’ 13.83.5 ‘mremap’ 13.83.6 ‘pkey_alloc’ 13.83.7 ‘pkey_free’ 13.83.8 ‘pkey_get’ 13.83.9 ‘pkey_mprotect’ 13.83.10 ‘pkey_set’ 13.83.11 ‘remap_file_pages’ 13.84 Glibc ‘’ 13.84.1 ‘mount’ 13.84.2 ‘umount’ 13.84.3 ‘umount2’ 13.85 Glibc ‘’ 13.85.1 ‘personality’ 13.86 Glibc ‘’ 13.86.1 ‘prctl’ 13.87 Glibc ‘’ 13.87.1 ‘sprofil’ 13.88 Glibc ‘’ 13.88.1 ‘ptrace’ 13.89 Glibc ‘’ 13.89.1 ‘quotactl’ 13.90 Glibc ‘’ 13.90.1 ‘getentropy’ 13.90.2 ‘getrandom’ 13.91 Glibc ‘’ 13.91.1 ‘reboot’ 13.92 Glibc Extensions to ‘’ 13.92.1 ‘prlimit’ 13.93 Glibc Extensions to ‘’ 13.93.1 ‘semtimedop’ 13.94 Glibc ‘’ 13.94.1 ‘sendfile’ 13.95 Glibc ‘’ 13.95.1 ‘signalfd’ 13.96 Glibc ‘’ 13.96.1 ‘__libc_single_threaded’ 13.97 Glibc Extensions to ‘’ 13.97.1 ‘accept4’ 13.97.2 ‘isfdtype’ 13.97.3 ‘recvmmsg’ 13.97.4 ‘sendmmsg’ 13.98 Glibc Extensions to ‘’ 13.98.1 ‘getumask’ 13.98.2 ‘lchmod’ 13.98.3 ‘statx’ 13.99 Glibc ‘’ 13.99.1 ‘fstatfs’ 13.99.2 ‘statfs’ 13.100 Glibc ‘’ 13.100.1 ‘swapoff’ 13.100.2 ‘swapon’ 13.101 Glibc ‘’ 13.101.1 ‘sysctl’ 13.102 Glibc ‘’ 13.102.1 ‘get_avphys_pages’ 13.102.2 ‘get_nprocs’ 13.102.3 ‘get_nprocs_conf’ 13.102.4 ‘get_phys_pages’ 13.102.5 ‘sysinfo’ 13.103 Glibc ‘’ 13.103.1 ‘vsyslog’ 13.104 Glibc ‘’ 13.104.1 ‘gnu_dev_major’ 13.104.2 ‘gnu_dev_makedev’ 13.104.3 ‘gnu_dev_minor’ 13.105 Glibc Extensions to ‘’ 13.105.1 ‘adjtime’ 13.105.2 ‘futimes’ 13.105.3 ‘futimesat’ 13.105.4 ‘lutimes’ 13.105.5 ‘settimeofday’ 13.106 Glibc ‘’ 13.106.1 ‘timerfd_create’ 13.106.2 ‘timerfd_gettime’ 13.106.3 ‘timerfd_settime’ 13.107 Glibc ‘’ 13.107.1 ‘adjtimex’ 13.107.2 ‘ntp_adjtime’ 13.107.3 ‘ntp_gettime’ 13.107.4 ‘ntp_gettimex’ 13.108 Glibc Extensions to ‘’ 13.108.1 ‘preadv’ 13.108.2 ‘preadv2’ 13.108.3 ‘process_vm_readv’ 13.108.4 ‘process_vm_writev’ 13.108.5 ‘pwritev’ 13.108.6 ‘pwritev2’ 13.109 Glibc ‘’ 13.109.1 ‘ustat’ 13.110 Glibc ‘’ 13.110.1 ‘vlimit’ 13.111 Glibc Extensions to ‘’ 13.111.1 ‘wait3’ 13.111.2 ‘wait4’ 13.112 Glibc ‘’ 13.112.1 ‘fgetxattr’ 13.112.2 ‘flistxattr’ 13.112.3 ‘fremovexattr’ 13.112.4 ‘fsetxattr’ 13.112.5 ‘getxattr’ 13.112.6 ‘lgetxattr’ 13.112.7 ‘listxattr’ 13.112.8 ‘llistxattr’ 13.112.9 ‘lremovexattr’ 13.112.10 ‘lsetxattr’ 13.112.11 ‘removexattr’ 13.112.12 ‘setxattr’ 13.113 Glibc Extensions to ‘’ 13.113.1 ‘cfmakeraw’ 13.113.2 ‘cfsetspeed’ 13.114 Glibc Extensions to ‘’ 13.114.1 ‘clock_adjtime’ 13.114.2 ‘dysize’ 13.114.3 ‘getdate_r’ 13.114.4 ‘stime’ 13.114.5 ‘strptime_l’ 13.114.6 ‘timelocal’ 13.114.7 ‘timespec_get’ 13.115 Glibc ‘’ 13.115.1 ‘endttyent’ 13.115.2 ‘getttyent’ 13.115.3 ‘getttynam’ 13.115.4 ‘setttyent’ 13.116 Glibc Extensions to ‘’ 13.116.1 ‘_Fork’ 13.116.2 ‘acct’ 13.116.3 ‘brk’ 13.116.4 ‘chroot’ 13.116.5 ‘closefrom’ 13.116.6 ‘copy_file_range’ 13.116.7 ‘daemon’ 13.116.8 ‘dup3’ 13.116.9 ‘eaccess’ 13.116.10 ‘endusershell’ 13.116.11 ‘euidaccess’ 13.116.12 ‘execveat’ 13.116.13 ‘execvpe’ 13.116.14 ‘get_current_dir_name’ 13.116.15 ‘getdomainname’ 13.116.16 ‘getdtablesize’ 13.116.17 ‘getpagesize’ 13.116.18 ‘getpass’ 13.116.19 ‘getresgid’ 13.116.20 ‘getresuid’ 13.116.21 ‘gettid’ 13.116.22 ‘getusershell’ 13.116.23 ‘group_member’ 13.116.24 ‘pipe2’ 13.116.25 ‘profil’ 13.116.26 ‘revoke’ 13.116.27 ‘sbrk’ 13.116.28 ‘setlogin’ 13.116.29 ‘setdomainname’ 13.116.30 ‘sethostid’ 13.116.31 ‘sethostname’ 13.116.32 ‘setresgid’ 13.116.33 ‘setresuid’ 13.116.34 ‘setusershell’ 13.116.35 ‘syncfs’ 13.116.36 ‘syscall’ 13.116.37 ‘ttyslot’ 13.116.38 ‘vhangup’ 13.117 Glibc ‘’ 13.117.1 ‘endutent’ 13.117.2 ‘getutent’ 13.117.3 ‘getutent_r’ 13.117.4 ‘getutid’ 13.117.5 ‘getutid_r’ 13.117.6 ‘getutline’ 13.117.7 ‘getutline_r’ 13.117.8 ‘pututline’ 13.117.9 ‘setutent’ 13.117.10 ‘updwtmp’ 13.117.11 ‘utmpname’ 13.117.12 ‘login’ 13.117.13 ‘login_tty’ 13.118 Glibc Extensions to ‘’ 13.118.1 ‘getutmp’ 13.118.2 ‘getutmpx’ 13.118.3 ‘updwtmpx’ 13.118.4 ‘utmpxname’ 13.119 Glibc Extensions to ‘’ 13.119.1 ‘fgetwc_unlocked’ 13.119.2 ‘fgetws_unlocked’ 13.119.3 ‘fputwc_unlocked’ 13.119.4 ‘fputws_unlocked’ 13.119.5 ‘getwc_unlocked’ 13.119.6 ‘getwchar_unlocked’ 13.119.7 ‘putwc_unlocked’ 13.119.8 ‘putwchar_unlocked’ 13.119.9 ‘wcschrnul’ 13.119.10 ‘wcsftime_l’ 13.119.11 ‘wcstod_l’ 13.119.12 ‘wcstof_l’ 13.119.13 ‘wcstol_l’ 13.119.14 ‘wcstold_l’ 13.119.15 ‘wcstoll_l’ 13.119.16 ‘wcstoq’ 13.119.17 ‘wcstoul_l’ 13.119.18 ‘wcstoull_l’ 13.119.19 ‘wcstouq’ 13.119.20 ‘wmempcpy’ 14 Native Windows Support 14.1 Libtool and Windows 14.2 Large File Support 14.3 Inode numbers on Windows 14.4 Precise file timestamps on Windows 14.5 Avoiding the year 2038 problem 14.6 Windows sockets 14.6.1 Getaddrinfo and WINVER 14.7 Native Windows Support without MSVC Support 14.8 Visual Studio Compatibility 15 Multithreading 15.1 The three multithreading APIs 15.2 Choosing the right multithreading API 15.3 The POSIX multithreading API 15.4 The ISO C multithreading API 15.5 The Gnulib multithreading API 15.6 Optimizations of multithreaded code 16 Strings and Characters 16.1 Strings 16.1.1 The C string representation 16.1.1.1 Iterating through strings 16.1.2 Strings with NUL characters 16.1.3 Character and String Functions in C Locale 16.1.3.1 c-ctype 16.1.3.2 c-strcase 16.1.3.3 c-strcaseeq 16.1.3.4 c-strcasestr 16.1.3.5 c-strstr 16.1.3.6 c-strtod 16.1.3.7 c-strtold 16.1.4 Comparison of string APIs 16.2 Characters 16.2.1 The ‘char’ type 16.2.2 The ‘wchar_t’ type 16.2.3 The ‘char32_t’ type 16.2.4 The ‘mbchar_t’ type 16.2.4.1 Reading multibyte strings 16.2.5 Comparison of character APIs 17 Particular Modules 17.1 alloca 17.2 alloca-opt 17.3 Safe Allocation Macros 17.4 Attributes 17.5 Compile-time Assertions 17.6 Non-returning Functions 17.7 Integer Properties 17.7.1 Arithmetic Type Properties 17.7.2 Integer Bounds 17.7.3 Checking Integer Overflow 17.7.4 Wraparound Arithmetic with Integers 17.7.5 Integer Type Overflow 17.7.6 Integer Range Overflow 17.8 Static inline functions 17.9 Extern inline functions 17.10 Handling closed standard file descriptors 17.11 Handling strings with NUL characters 17.12 Container data types 17.12.1 Ordinary container data types 17.12.2 Specialized container data types 17.13 Recognizing Option Arguments 17.14 Quoting 17.15 progname and getprogname 17.16 gcd: greatest common divisor 17.17 Profiling of program phases 17.18 Library version handling 17.19 Supporting Relocation 17.20 func 17.21 stat-size 18 Regular expressions 18.1 Overview 18.2 Regular Expression Syntax 18.2.1 Syntax Bits 18.2.2 Predefined Syntaxes 18.2.3 Collating Elements vs. Characters 18.2.4 The Backslash Character 18.3 Common Operators 18.3.1 The Match-self Operator (ORDINARY CHARACTER) 18.3.2 The Match-any-character Operator (‘.’) 18.3.3 The Concatenation Operator 18.3.4 Repetition Operators 18.3.4.1 The Match-zero-or-more Operator (‘*’) 18.3.4.2 The Match-one-or-more Operator (‘+’ or ‘\+’) 18.3.4.3 The Match-zero-or-one Operator (‘?’ or ‘\?’) 18.3.4.4 Interval Operators (‘{’ ... ‘}’ or ‘\{’ ... ‘\}’) 18.3.5 The Alternation Operator (‘|’ or ‘\|’) 18.3.6 List Operators (‘[’ ... ‘]’ and ‘[^’ ... ‘]’) 18.3.6.1 Collating Symbol Operators (‘[.’ ... ‘.]’) 18.3.6.2 Equivalence Class Operators (‘[=’ ... ‘=]’) 18.3.6.3 Character Class Operators (‘[:’ ... ‘:]’) 18.3.6.4 The Range Operator (‘-’) 18.3.7 Grouping Operators (‘(’ ... ‘)’ or ‘\(’ ... ‘\)’) 18.3.8 The Back-reference Operator (“\”DIGIT) 18.3.9 Anchoring Operators 18.3.9.1 The Match-beginning-of-line Operator (‘^’) 18.3.9.2 The Match-end-of-line Operator (‘$’) 18.4 GNU Operators 18.4.1 Word Operators 18.4.1.1 The Match-word-boundary Operator (‘\b’) 18.4.1.2 The Match-within-word Operator (‘\B’) 18.4.1.3 The Match-beginning-of-word Operator (‘\<’) 18.4.1.4 The Match-end-of-word Operator (‘\>’) 18.4.1.5 The Match-word-constituent Operator (‘\w’) 18.4.1.6 The Match-non-word-constituent Operator (‘\W’) 18.4.2 Space Operators 18.4.2.1 The Match-space Operator (‘\s’) 18.4.2.2 The Match-non-space Operator (‘\S’) 18.4.3 Whole-string Operators 18.4.3.1 The Match-beginning-of-string Operator (‘\`’) 18.4.3.2 The Match-end-of-string Operator (‘\'’) 18.5 What Gets Matched? 18.6 Programming with Regex 18.6.1 GNU Regex Functions 18.6.1.1 GNU Pattern Buffers 18.6.1.2 GNU Regular Expression Compiling 18.6.1.3 GNU Matching 18.6.1.4 GNU Searching 18.6.1.5 Matching and Searching with Split Data 18.6.1.6 Searching with Fastmaps 18.6.1.7 GNU Translate Tables 18.6.1.8 Using Registers 18.6.1.9 Freeing GNU Pattern Buffers 18.6.2 BSD Regex Functions 18.6.2.1 BSD Regular Expression Compiling 18.6.2.2 BSD Searching 18.7 Regular expression syntaxes 18.7.1 ‘awk’ regular expression syntax 18.7.2 ‘egrep’ regular expression syntax 18.7.3 ‘ed’ regular expression syntax 18.7.4 ‘emacs’ regular expression syntax 18.7.5 ‘gnu-awk’ regular expression syntax 18.7.6 ‘grep’ regular expression syntax 18.7.7 ‘posix-awk’ regular expression syntax 18.7.8 ‘posix-basic’ regular expression syntax 18.7.9 ‘posix-egrep’ regular expression syntax 18.7.10 ‘posix-extended’ regular expression syntax 18.7.11 ‘posix-minimal-basic’ regular expression syntax 18.7.12 ‘sed’ regular expression syntax 19 Build Infrastructure Modules 19.1 Searching for Libraries Simple Library Tests Locating Libraries Example of using ‘AC_LIB_LINKFLAGS’ Dependencies Static vs. shared ‘CPPFLAGS’ vs. ‘LDFLAGS’ Bi-arch systems 19.2 Controlling the Exported Symbols of Shared Libraries 19.3 LD Version Scripts 19.4 configmake 19.5 warnings 19.6 manywarnings 19.7 Running self-tests under valgrind 19.7.1 Using valgrind without developer intervention 19.7.2 Valgrind options 19.7.3 Using valgrind at the developer’s discretion 19.7.4 How to use Valgrind with shell scripts 19.8 VCS To ChangeLog 20 Build Infrastructure Files 20.1 Recognizing platforms 20.2 Utilities for Makefiles 20.3 Programs for developing in Git checkouts 20.4 Utilities for building documentation 20.5 Utilities for building libraries 20.6 Utilities for running test suites 21 Release Management Files 21.1 Tools for releasing packages with shared libraries 21.2 Tools for uploading release tarballs Appendix A GNU Free Documentation License Index GNU Gnulib ********** This manual is for GNU Gnulib (updated 2023-07-01 10:15:58), which is a library of common routines intended to be shared at the source level. Copyright © 2004–2023 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”. 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: . Get the sources through Git from there. • The Gnulib home page: . 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 . Then, instead of the URL , 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: Homepage: 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 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 . 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 . 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 . • 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 ’ or ‘’ 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. *Note Target Platforms::. 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 ‘NULL’ 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 ‘’, ‘’, ‘’, ‘’, and ‘’ unconditionally; ‘’ is also in the C99 freestanding list but is obsolescent as of C23. Gnulib code can also assume the existence of ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, and ‘’. Similarly, many modules include ‘’ even though it’s not even in C11; that’s OK since ‘’ 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 C89-conformance problems. Gnulib currently assumes include files largely conform to C89 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’. • ‘’, although Gnulib code no longer uses it directly, preferring plain ‘bool’ via the ‘stdbool’ module instead. *Note stdbool.h::. • ‘’, assuming the ‘stdint’ module is used. *Note stdint.h::. • Compound literals and designated initializers. • Variadic macros. • ‘static inline’ functions. • ‘__func__’, assuming the ‘func’ module is used. *Note func::. • 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. • ‘extern inline’ functions, without checking whether they are supported. *Note extern inline::. • Type-generic math functions. • Universal character names in source code. • ‘’, 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 -------------------------------------------------- The GNU coding standards allow one departure from strict C: Gnulib code can assume that standard internal types like ‘ptrdiff_t’ and ‘size_t’ are no wider than ‘long’. 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. Gnulib code makes the following additional assumptions: • ‘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. *Note Integer Properties::. Although some Gnulib modules contain explicit support for the other signed integer representations allowed by the C standard (ones’ complement and signed magnitude), these modules are the exception rather than the rule. All practical Gnulib targets use two’s complement. • 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. • Objects with all bits zero are treated as 0 or NULL. For example, ‘memset (A, 0, sizeof A)’ initializes an array ‘A’ of pointers to NULL. • 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. *Note Unsupported Platforms::. 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 four stable branches: ‘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. ‘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 (*note manywarnings::). 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’ (*note Running self-tests under valgrind::). 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 2023, 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 13.0 or newer is occasionally tested. • OpenBSD 7.0 or newer is occasionally tested. • NetBSD 9.0 or newer is occasionally tested. • AIX 7.1 and 7.2 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 is occasionally tested. Cygwin 1.7.x is rarely 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 Windows that are supported are Windows 10 and newer. • GNU Hurd 0.9 is rarely tested. • IRIX 6.5 is very 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.4 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. *Note Other portability assumptions::. 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 ‘’. 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 © 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 © 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 © 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 . 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’ (*note Extending Gnulib::). 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.am’s 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 . • If you are looking for POSIX function replacements that you don’t know about yet, follow the procedure described in section *note Finding POSIX substitutes::. • If you are looking for a particular POSIX header or function replacement, look in the chapters *note Header File Substitutes:: and *note Function Substitutes::. For headers and functions that are provided by Glibc but not standardized by POSIX, look in the chapters *note Glibc Header File Substitutes:: and *note Glibc Function Substitutes::. • 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 *note Source changes::). 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 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, - 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 override 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 directory 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 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 ’ 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_MODULES’ The argument is a space separated list of the requested modules, not including dependencies. ‘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_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_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_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. 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 ============================================= 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/’. These Gnulib substitute header files rely on ‘’ being already included. Furthermore ‘’ 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 ’ 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, ‘’ 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.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 *note Initial import::, 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 *note Function Substitutes::. 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 *note Changing Automake’s Behavior: (automake)Options. 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 *note Extending Gnulib::. 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 . 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’ (*note Unit tests::). 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 ‘version-etc’, 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 *note Unit tests::, 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 *note Initial import:: 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 *note Initial import:: 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 . 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 *note Modified imports::, 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 *note Developer tools::) 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 *note Developer tools::. ‘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 (*note Extending Gnulib::), or for inclusion in gnulib proper. The guidelines in this chapter do not necessarily need to be followed for using ‘gnulib-tool’. 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 ’. 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 ’ 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 . • 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.am’s. 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 *note Copyright:: 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. 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 ’. • 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 ‘gnulib-tool’, 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. ‘gnulib-tool’ 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 ‘’ 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 ‘’ and use it in a compilation unit that does not include ‘’, 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 ). 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 . 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 top-level 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 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-megatestdir --with-tests --dir=... Note: The created directory uses ca. 512 MB on disk. 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, ‘’ must be included before using ‘alignas’ or ‘alignof’. *Note stdalign.h::. 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 ‘’ 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. 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 ‘’ to be like standard C. *Note assert.h::. Portability problems fixed by Gnulib: • Pre-C11 platforms lack ‘static_assert’. • On pre-C23 platforms, ‘’ 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 ‘’. 9.1 ‘aio.h’ =========== POSIX specification: 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, Android 9.0. 9.2 ‘arpa/inet.h’ ================= POSIX specification: 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: Gnulib module: assert-h See also the Gnulib modules ‘assert’ and ‘verify’. Portability problems fixed by Gnulib: • On older C platforms ‘’ 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: 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, IRIX 6.5, Cygwin 1.7.7, mingw, MSVC 9. 9.5 ‘cpio.h’ ============ POSIX specification: 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: Gnulib module: ctype Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 9.7 ‘dirent.h’ ============== POSIX specification: 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, IRIX 6.5, 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 9.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: 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: 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 9. • 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.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, 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: 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. • ‘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, IRIX 6.5, 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, IRIX 6.5, 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, IRIX 6.5, 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, IRIX 6.5, 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: 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 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5, Cygwin 1.7.7, MSVC 9. 9.12 ‘float.h’ ============== POSIX specification: 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, on AIX 7.1 with GCC 4.2, and on IRIX 6.5, 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: 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: Gnulib module: fnmatch-h Portability problems fixed by Gnulib: • This header file is missing on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib: 9.15 ‘ftw.h’ ============ POSIX specification: 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: 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: 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: Gnulib module: iconv Portability problems fixed by Gnulib: • The 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: 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, IRIX 6.5. • 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: 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, IRIX 6.5, Cygwin, mingw. 9.21 ‘langinfo.h’ ================= POSIX specification: 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, IRIX 6.5, 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. Portability problems not fixed by Gnulib: 9.22 ‘libgen.h’ =============== POSIX specification: 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: 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, IRIX 6.5, 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 9.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 13.0, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5. • 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, IRIX 6.5, Solaris 9, MSVC 9. • The macros ‘FP_ILOGB0’ and ‘FP_ILOGBNAN’ are not defined on some platforms: NetBSD 5.1, AIX 5.1, IRIX 6.5, 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: OpenVMS. 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, IRIX 6.5, Cygwin 1.7.9, mingw, MSVC 9. 9.26 ‘monetary.h’ ================= POSIX specification: 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: 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: 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: 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 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: 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 the type ‘socklen_t’ on some platforms: IRIX 6.5. • This header file does not define ‘AI_ALL’, ‘AI_V4MAPPED’ on some platforms: NetBSD 9.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: 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 ‘’ to be included first): OpenBSD 4.6. Portability problems not fixed by Gnulib: 9.32 ‘netinet/tcp.h’ ==================== POSIX specification: 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: 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: 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: 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: • This header file lacks the declaration of ‘pthread_atfork’ on some platforms: IRIX 6.5. 9.36 ‘pwd.h’ ============ POSIX specification: 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: 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 ‘’ to be included first. 9.38 ‘sched.h’ ============== POSIX specification: 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: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 9.42 ‘signal.h’ =============== POSIX specification: 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 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: NonStop. • The type ‘sighandler_t’ (a GNU extension) is not defined on most non-glibc platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, HP-UX 11, IRIX 6.5, 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: 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, IRIX 6.5, 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 ) sections 6.5.3.4, 6.7.5, 7.15. C++11 (latest free draft ) section 18.10. Gnulib module: alignasof Portability problems fixed by Gnulib: • On older C platforms ‘’ 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, ‘’ has no effect and need not be included. (Gnulib-using code should not include ‘’ 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, IRIX 6.5, Solaris 11.3, mingw, MSVC 14, Android 9.0. • Clang 3.0’s ‘’ 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, ‘’ 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 now-deprecated ‘stdalign’ module defines these two macros.) 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: 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 ) 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, IRIX 6.5, Solaris 11.3 with Oracle Studio 12.4 (Sun C 5.13), Cygwin 1.5.19, mingw, MSVC 14. 9.47 ‘stdbool.h’ ================ POSIX specification: 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, IRIX 6.5. • 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 ‘’ 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.48 ‘stdckdint.h’ ================== POSIX specification: Not in POSIX yet, but we expect it will be. ISO draft C23 () section 7.20. Gnulib module: stdckdint Portability problems fixed by Gnulib: • This header file is missing on many platforms. Portability problems not fixed by Gnulib: • In draft C23, arguments of ‘stdckdint.h’ macros can have side effects. 9.49 ‘stddef.h’ =============== POSIX specification: 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 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.50 ‘stdint.h’ =============== POSIX specification: 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, IRIX 6.5, MSVC 14. • 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 ‘’, are replaced by empty values when ‘’ or ‘’ 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 ‘’ (only in ‘’) 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 9.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 ‘’ 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 ' > idn-int.h; \ fi 9.51 ‘stdio.h’ ============== POSIX specification: Gnulib module: stdio Portability problems fixed by Gnulib: • The type ‘off_t’ is missing on some platforms: glibc 2.8, eglibc 2.11.2 and others. • The type ‘ssize_t’ is missing on some platforms: glibc 2.8, Mac OS X 10.5, Solaris 10, MSVC 14, and others. • The type ‘va_list’ is missing on some platforms: glibc 2.8, OpenBSD 4.0, Solaris 11.4, and others. • Some platforms provide a ‘NULL’ macro that cannot be used in arbitrary expressions: NetBSD 5.0 Portability problems not fixed by Gnulib: 9.52 ‘stdlib.h’ =============== POSIX specification: 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 ‘’) 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 ‘’ rather than ‘’. • System status macros such as ‘WEXITSTATUS’ require an lvalue argument on some platforms. macOS 11.1. 9.53 ‘stdnoreturn.h’ ==================== POSIX specification: Not in POSIX yet, but we expect it will be. ISO C11 (latest free draft ) 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9.0, mingw, MSVC 14, Android 9.0. • This file conflicts with some system header files, such as ‘’ and ‘’, on some platforms: MSVC/clang. Portability problems not fixed by Gnulib: • ‘’ and the ‘noreturn’ macro are obsolescent in C23. • ‘’ cannot be #included in C++ mode on some platforms: FreeBSD 13.1. • ‘’ 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.54 ‘string.h’ =============== POSIX specification: 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.55 ‘strings.h’ ================ POSIX specification: 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.56 ‘stropts.h’ ================ POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin, mingw, MSVC 14, Android 9.0. 9.57 ‘sys/ipc.h’ ================ POSIX specification: 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.58 ‘sys/mman.h’ ================= POSIX specification: 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/msg.h’ ================ POSIX specification: 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.60 ‘sys/resource.h’ ===================== POSIX specification: 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 and 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.61 ‘sys/select.h’ =================== POSIX specification: 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 ‘’ to be included first. • This header file is not self-contained—it requires ‘’ before ‘FD_ZERO’ can be used—on some platforms: AIX 7.1, Solaris 11.4. Portability problems not fixed by Gnulib: 9.62 ‘sys/sem.h’ ================ POSIX specification: 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.63 ‘sys/shm.h’ ================ POSIX specification: 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.64 ‘sys/socket.h’ =================== POSIX specification: 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 ‘’ to be included first. • This header file does not define the type ‘socklen_t’ on some platforms: IRIX 6.5. • 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.65 ‘sys/stat.h’ ================= POSIX specification: 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. *Note Avoiding the year 2038 problem::, 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. • To partially work around the previous two problems, you can test for nonzero ‘st_ino’ and use the Gnulib ‘same-inode’ module to compare nonzero values. For example, ‘SAME_INODE (a, b)’ is true if the ‘struct stat’ values ‘a’ and ‘b’ are known to represent the same file, ‘(a.st_ino && !SAME_INODE (a, b))’ is true if they are known to represent different files, and ‘!a.st_ino’ is true if it is not known whether they represent different files. • 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. One partial workaround is to compare other file metadata such as ‘st_mode’ and ‘st_mtime’ to detect this bug, but this approach does not work on files whose metadata are being changed by other programs. • 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. 9.66 ‘sys/statvfs.h’ ==================== POSIX specification: 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.67 ‘sys/time.h’ ================= POSIX specification: 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. *Note Avoiding the year 2038 problem::, 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.68 ‘sys/timeb.h’ ================== POSIX specification: 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.69 ‘sys/times.h’ ================== POSIX specification: 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.70 ‘sys/types.h’ ================== POSIX specification: 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. • 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. *Note Avoiding the year 2038 problem::, 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.71 ‘sys/uio.h’ ================ POSIX specification: 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 ‘’ to be included first) on some platforms: OpenBSD 4.4. Portability problems not fixed by Gnulib: 9.72 ‘sys/un.h’ =============== POSIX specification: 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 sys/socket.h to be included first on some platforms: Cygwin 1.7.18. 9.73 ‘sys/utsname.h’ ==================== POSIX specification: 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.74 ‘sys/wait.h’ ================= POSIX specification: 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.75 ‘syslog.h’ =============== POSIX specification: 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.76 ‘tar.h’ ============ POSIX specification: 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.77 ‘termios.h’ ================ POSIX specification: 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.78 ‘tgmath.h’ =============== POSIX specification: 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 9.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Cygwin 1.7.9, mingw, MSVC 14, Android 9.0. 9.79 ‘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, IRIX 6.5, 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), • IRIX 6.5, • Android 4.3. 9.80 ‘time.h’ ============= POSIX specification: 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, IRIX 6.5, 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. *Note Avoiding the year 2038 problem::. 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. *Note Avoiding the year 2038 problem::. • 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.81 ‘trace.h’ ============== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin, mingw, MSVC 14, Android 9.0. 9.82 ‘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 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, 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.83 ‘ucontext.h’ ================= POSIX specification: 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.84 ‘ulimit.h’ =============== POSIX specification: 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.85 ‘unistd.h’ =============== POSIX specification: Gnulib module: unistd Portability problems fixed by Gnulib: • This header file is missing on some platforms: MSVC 14. • 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.86 ‘utime.h’ ============== POSIX specification: 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: 9.87 ‘utmpx.h’ ============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: 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, Android 9.0. 9.88 ‘wchar.h’ ============== POSIX specification: 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.89 ‘wctype.h’ =============== POSIX specification: 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. • The function ‘iswblank’ is declared but not defined on some platforms: IRIX 6.5.30. Portability problems not fixed by Gnulib: 9.90 ‘wordexp.h’ ================ POSIX specification: 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 ‘’. 10.1 ‘FD_CLR’ ============= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.2 ‘FD_ISSET’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.3 ‘FD_SET’ ============= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.4 ‘FD_ZERO’ ============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.5 ‘_Exit’ ============ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, Android 4.4. Portability problems not fixed by Gnulib: 10.6 ‘_exit’ ============ POSIX specification: Gnulib module: unistd Portability problems fixed by Gnulib: • This function is declared in a different header file (namely, ‘’) on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.7 ‘_longjmp’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. Note: A future revision of POSIX later than the 2008/2009 one may drop the functions ‘_setjmp’ and ‘_longjmp’. Still, in 2008, 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’ ============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: Note: A future revision of POSIX later than the 2008/2009 one may drop the functions ‘_setjmp’ and ‘_longjmp’. Still, in 2008, 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’ =============== POSIX specification: 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. 10.10 ‘_toupper’ ================ POSIX specification: 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. 10.11 ‘a64l’ ============ POSIX specification: 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: 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: 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: 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: Gnulib module: access Portability problems fixed by Gnulib: • This function does not support the ‘X_OK’ mode on some platforms: MSVC 14. 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 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: Gnulib module: acos Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.17 ‘acosf’ ============= POSIX specification: 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. Portability problems not fixed by Gnulib: 10.18 ‘acosh’ ============= POSIX specification: 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: 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, IRIX 6.5, Solaris 9, mingw, MSVC 9. 10.20 ‘acoshl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. 10.21 ‘acosl’ ============= POSIX specification: 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, IRIX 6.5, 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: 10.22 ‘aio_cancel’ ================== POSIX specification: 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. *Note Large File Support::. 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: 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. *Note Large File Support::. 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: 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. *Note Large File Support::. 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: 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. *Note Large File Support::. 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: 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. *Note Large File Support::. 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: 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. *Note Large File Support::. 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: 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. *Note Large File Support::. 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function has no impact if SIGALRM is inherited as ignored; programs should use signal (SIGALRM, SIG_DFL) 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 ‘’ 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.2. 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, IRIX 6.5, 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 AddressSanitizer 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is deprecated in C23. Portable applications can use ‘strftime’ (or even ‘sprintf’) instead. • This function may overflow its internal buffer if an invalid year is passed. 10.33 ‘asctime_r’ ================= POSIX specification: Future POSIX removal: 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 may put more than 26 bytes into the argument buffer if an invalid year is passed. 10.34 ‘asin’ ============ POSIX specification: Gnulib module: asin Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.35 ‘asinf’ ============= POSIX specification: 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: 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: 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, IRIX 6.5, Solaris 9, mingw, MSVC 9. 10.38 ‘asinhl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. 10.39 ‘asinl’ ============= POSIX specification: 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, IRIX 6.5, 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: 10.40 ‘assert’ ============== POSIX specification: 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: Gnulib module: atan Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.42 ‘atan2’ ============= POSIX specification: Gnulib module: atan2 Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.43 ‘atan2f’ ============== POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, Android 4.4. • This function is only defined as a macro with arguments on some platforms: MSVC 14. 10.45 ‘atanf’ ============= POSIX specification: 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: 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: 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, IRIX 6.5, Solaris 9, mingw, MSVC 9. 10.48 ‘atanhl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. 10.49 ‘atanl’ ============= POSIX specification: 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, IRIX 6.5, 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: 10.50 ‘atexit’ ============== POSIX specification: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.53 ‘atol’ ============ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.54 ‘atoll’ ============= POSIX specification: 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: LSB specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: IRIX 6.5, 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.58 ‘btowc’ ============= POSIX specification: 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. • This function does not return WEOF for an EOF argument on some platforms: IRIX 6.5. • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, 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 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.3, Cygwin 2.9, 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 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.3, Cygwin 2.9, 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: 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: 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: 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.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1. 10.65 ‘cacos’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.66 ‘cacosf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.67 ‘cacosh’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.68 ‘cacoshf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.69 ‘cacoshl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.70 ‘cacosl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.71 ‘calloc’ ============== POSIX specification: 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: *note Call Once: (libc)Call Once. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: • This function does not work on some platforms: Haiku. 10.73 ‘canonicalize’ ==================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.74 ‘canonicalizef’ ===================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.75 ‘canonicalizel’ ===================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.76 ‘carg’ ============ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.77 ‘cargf’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.78 ‘cargl’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1. 10.79 ‘casin’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.80 ‘casinf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.81 ‘casinh’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.82 ‘casinhf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.83 ‘casinhl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.84 ‘casinl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.85 ‘catan’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.86 ‘catanf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.87 ‘catanh’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.88 ‘catanhf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 5.1. 10.89 ‘catanhl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.90 ‘catanl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.91 ‘catclose’ ================ POSIX specification: 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: 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: 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: 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: 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. • This function is not declared on some platforms: IRIX 6.5. • This function returns a wrong value for a minus zero on some platforms: IRIX 6.5. Portability problems not fixed by Gnulib: 10.96 ‘cbrtl’ ============= POSIX specification: 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 is not declared on some platforms: IRIX 6.5. • This function produces grossly wrong results on some platforms: OpenBSD 5.1/SPARC. Portability problems fixed by Gnulib module ‘cbrtl-ieee’: • This function returns a positive zero for a minus zero argument on some platforms: IRIX 6.5. Portability problems not fixed by Gnulib: 10.97 ‘ccos’ ============ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.98 ‘ccosf’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.99 ‘ccosh’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.100 ‘ccoshf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.101 ‘ccoshl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.102 ‘ccosl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.103 ‘ceil’ ============= POSIX specification: 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: 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.107 ‘cexpf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.108 ‘cexpl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.109 ‘cfgetispeed’ ==================== POSIX specification: 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: 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: 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: 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: Gnulib module: chdir Portability problems fixed by Gnulib: • This function is declared in different header files (namely, ‘’ or ‘’) on some platforms: mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.114 ‘chmod’ ============== POSIX specification: 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, IRIX 6.5. • 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: 10.115 ‘chown’ ============== POSIX specification: 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)’: FreeBSD 7.2, AIX 7.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 6.7. • 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. • When applied to a symbolic link, some implementations don’t dereference the symlink, i.e. they behave like ‘lchown’. • This function is missing on some platforms; however, the replacement always fails with ‘ENOSYS’: mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.116 ‘cimag’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.117 ‘cimagf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.118 ‘cimagl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1. 10.119 ‘clearerr’ ================= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.120 ‘clock’ ============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.121 ‘clock_getcpuclockid’ ============================ POSIX specification: 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, IRIX 6.5, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14, Android 5.1. 10.122 ‘clock_getres’ ===================== POSIX specification: 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: 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. 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14. 10.125 ‘clock_settime’ ====================== POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1. 10.127 ‘clogf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1. 10.128 ‘clogl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.129 ‘close’ ============== POSIX specification: Gnulib module: close Portability problems fixed by Gnulib: • This function is declared in a different header file (namely, ‘’) 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: 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: 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: *note Condition Variables: (libc)ISO C Condition Variables. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.133 ‘cnd_destroy’ ==================== Documentation: *note Condition Variables: (libc)ISO C Condition Variables. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.134 ‘cnd_init’ ================= Documentation: *note Condition Variables: (libc)ISO C Condition Variables. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.135 ‘cnd_signal’ =================== Documentation: *note Condition Variables: (libc)ISO C Condition Variables. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.136 ‘cnd_timedwait’ ====================== Documentation: *note Condition Variables: (libc)ISO C Condition Variables. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.137 ‘cnd_wait’ ================= Documentation: *note Condition Variables: (libc)ISO C Condition Variables. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.138 ‘confstr’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.140 ‘conjf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.141 ‘conjl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1. 10.142 ‘connect’ ================ POSIX specification: 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: 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: Gnulib module: copysignf Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, AIX 5.1, older IRIX 6.5, Solaris 9, MSVC 9. • This function is not declared on some platforms: IRIX 6.5. Portability problems not fixed by Gnulib: 10.145 ‘copysignl’ ================== POSIX specification: 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, older IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. Portability problems not fixed by Gnulib: 10.146 ‘cos’ ============ POSIX specification: Gnulib module: cos Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.147 ‘cosf’ ============= POSIX specification: 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: Gnulib module: cosh Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.149 ‘coshf’ ============== POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, Android 4.4. • This function is only defined as a macro with arguments on some platforms: MSVC 14. 10.151 ‘cosl’ ============= POSIX specification: 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, IRIX 6.5, 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: 10.152 ‘cpow’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1. 10.153 ‘cpowf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9, Android 7.1. 10.154 ‘cpowl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.155 ‘cproj’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. • The glibc implementation is or was broken. 10.156 ‘cprojf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. • The glibc implementation is or was broken. 10.157 ‘cprojl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1. • The glibc implementation is or was broken. 10.158 ‘creal’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.159 ‘crealf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.160 ‘creall’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1. 10.161 ‘creat’ ============== POSIX specification: 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. *Note Large File Support::. • 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: 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 ‘’ (without ‘-D_GNU_SOURCE’) on some platforms: glibc (at least 2.11–2.13). 10.163 ‘csin’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.164 ‘csinf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.165 ‘csinh’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.166 ‘csinhf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.167 ‘csinhl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.168 ‘csinl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.169 ‘csqrt’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.170 ‘csqrtf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.171 ‘csqrtl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 5.1. 10.172 ‘ctan’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.173 ‘ctanf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.174 ‘ctanh’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.175 ‘ctanhf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, mingw, MSVC 9. 10.176 ‘ctanhl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.177 ‘ctanl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 7.1. 10.178 ‘ctermid’ ================ POSIX specification: 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: 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. Portable applications can use ‘localtime_r’ and ‘strftime’ (or even ‘sprintf’) instead. • This function may overflow its internal buffer if an invalid year is passed. • 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. There is a reentrant interface ‘ctime_r’. • Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. *Note tzset::. A more flexible function is ‘strftime’. However, note that it is locale dependent. 10.180 ‘ctime_r’ ================ POSIX specification: Future POSIX removal: 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 may put more than 26 bytes into the argument buffer if an invalid year is passed. ‘ctime_r’ takes a pre-allocated buffer and length of the buffer, and returns ‘NULL’ on errors. The input buffer should be at least 26 bytes in size. The output string is locale-independent. However, years can have more than 4 digits if ‘time_t’ is sufficiently wide, so the length of the required output buffer is not easy to determine. Increasing the buffer size when ‘ctime_r’ returns ‘NULL’ is not necessarily sufficient. The ‘NULL’ return value could mean some other error condition, which will not go away by increasing the buffer size. A more flexible function is ‘strftime’. However, note that it is locale dependent. 10.181 ‘daddl’ ============== Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.182 ‘daylight’ ================= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This variable is missing on some platforms: FreeBSD 13.0, OpenBSD 3.8, IRIX 6.5. • 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. *Note tzset::. A more portable way of getting the UTC offset is to use ‘strftime’ with the ‘%z’ format. *Note strftime::. 10.183 ‘dbm_clearerr’ ===================== POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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: 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: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.193 ‘difftime’ ================= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.194 ‘dirfd’ ============== POSIX specification: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: IRIX 6.5, 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.197 ‘dlclose’ ================ POSIX specification: 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: 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: LSB specification: 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: LSB specification: 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: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.202 ‘dprintf’ ================ POSIX specification: 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, IRIX 6.5, 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.1, NetBSD 9.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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0. • This function does not support the ‘n’ directive on some platforms: glibc when used with ‘_FORTIFY_SOURCE >= 2’ (set by default on Ubuntu), macOS 11.1. • 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. • This function does not support precisions larger than 512 or 1024 in integer, floating-point 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. Portability problems fixed by Gnulib module ‘dprintf-gnu’: • This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.1, NetBSD 9.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. • 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: 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: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.205 ‘dup’ ============ POSIX specification: Gnulib module: dup Portability problems fixed by Gnulib: • This function is declared in a different header file (namely, ‘’) on some platforms: MSVC 14. • This function crashes when invoked with invalid arguments on some platforms: MSVC 14. Portability problems not fixed by Gnulib: 10.206 ‘dup2’ ============= POSIX specification: Gnulib module: dup2 Portability problems fixed by Gnulib: • This function is declared in a different header file (namely, ‘’) 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: 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, IRIX 6.5, 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: 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 ‘’ (without ‘-D_GNU_SOURCE’) on some platforms: glibc (at least 2.11–2.13). 10.209 ‘endgrent’ ================= POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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 13.0, NetBSD 5.0, OpenBSD 3.8, IRIX 6.5, 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 #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: 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: 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: 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: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.221 ‘erfcl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. 10.222 ‘erff’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.223 ‘erfl’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. 10.224 ‘errno’ ============== POSIX specification: 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: 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: 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: 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: 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: 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: 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: Gnulib module: stdlib Portability problems fixed by Gnulib: • Some problems with the macros ‘EXIT_SUCCESS’ and ‘EXIT_FAILURE’, see *note stdlib.h::. Portability problems not fixed by Gnulib: 10.232 ‘exp’ ============ POSIX specification: Gnulib module: exp Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.233 ‘exp2’ ============= POSIX specification: 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, older IRIX 6.5, Solaris 9, MSVC 9. • This function is not declared on some platforms: IRIX 6.5. • This function returns grossly wrong results on some platforms: OpenBSD 4.9. Portability problems not fixed by Gnulib: 10.234 ‘exp2f’ ============== POSIX specification: 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, older IRIX 6.5, Solaris 9, MSVC 9. • This function is not declared on some platforms: IRIX 6.5. Portability problems not fixed by Gnulib: 10.235 ‘exp2l’ ============== POSIX specification: 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, older IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4. • This function is not declared on some platforms: IRIX 6.5. • This function produces results which are accurate to only 16 digits on some platforms: NetBSD 9.0. Portability problems fixed by Gnulib module ‘exp2l-ieee’: • This function returns a wrong value for a NaN argument on some platforms: OpenBSD 4.9. • This function returns a wrong value for a negative infinity argument on some platforms: IRIX 6.5. Portability problems not fixed by Gnulib: 10.236 ‘expf’ ============= POSIX specification: 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: 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, IRIX 6.5, 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 9.0. Portability problems not fixed by Gnulib: 10.238 ‘expm1’ ============== POSIX specification: 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: 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. • This function produces wrong results for arguments <= −17.32868 on some platforms: IRIX 6.5. 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: Gnulib module: expm1l Portability problems fixed by Gnulib: • This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. • This function is not declared on some platforms: IRIX 6.5. • 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 8.0. Portability problems not fixed by Gnulib: 10.241 ‘fabs’ ============= POSIX specification: Gnulib module: fabs Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.242 ‘fabsf’ ============== POSIX specification: 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: 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, IRIX 6.5, 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 minus zero for a minus zero argument on some platforms: IRIX 6.5 with gcc 4.2.4. Portability problems not fixed by Gnulib: 10.244 ‘faccessat’ ================== POSIX specification: 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, IRIX 6.5, 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: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.246 ‘faddl’ ============== Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.247 ‘fattach’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.248 ‘fchdir’ =============== POSIX specification: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.250 ‘fchmodat’ ================= POSIX specification: 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, IRIX 6.5, 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. 10.251 ‘fchown’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.252 ‘fchownat’ ================= POSIX specification: 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, IRIX 6.5, 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 ‘’, not in ‘’, 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: 10.253 ‘fclose’ =============== POSIX specification: 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: LSB specification: 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, IRIX 6.5, 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 9.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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.257 ‘fdim’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.258 ‘fdimf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.259 ‘fdiml’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. 10.260 ‘fdiv’ ============= Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.261 ‘fdivl’ ============== Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.262 ‘fdopen’ =============== POSIX specification: 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.265 ‘fegetenv’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.266 ‘fegetexceptflag’ ======================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.267 ‘fegetmode’ ================== Documentation: *note Floating-Point Control Functions: (libc)Control Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.268 ‘fegetround’ =================== POSIX specification: 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, AIX 5.1, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.269 ‘feholdexcept’ ===================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.270 ‘feof’ ============= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.271 ‘feraiseexcept’ ====================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 14, Android 4.4. 10.272 ‘ferror’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.273 ‘fesetenv’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.274 ‘fesetexcept’ ==================== Documentation: *note Examining the FPU status word: (libc)Status bit operations. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.275 ‘fesetexceptflag’ ======================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.276 ‘fesetmode’ ================== Documentation: *note Floating-Point Control Functions: (libc)Control Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.277 ‘fesetround’ =================== POSIX specification: 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, AIX 5.1, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.278 ‘fetestexcept’ ===================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4. 10.279 ‘fetestexceptflag’ ========================= Documentation: *note Examining the FPU status word: (libc)Status bit operations. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.280 ‘feupdateenv’ ==================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 14, Android 4.4. 10.281 ‘fexecve’ ================ POSIX specification: 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, IRIX 6.5, Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 14, Android 8.1. 10.282 ‘fflush’ =============== POSIX specification: 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 13.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 9.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, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 14. 10.283 ‘ffs’ ============ POSIX specification: 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: 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: 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. *Note Large File Support::. 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: 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: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.290 ‘flockfile’ ================== POSIX specification: 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: 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: 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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, Cygwin 1.5, mingw. Portability problems not fixed by Gnulib: 10.295 ‘fmaf’ ============= POSIX specification: 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, IRIX 6.5, 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, 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: 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, IRIX 6.5, 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, mingw. Portability problems not fixed by Gnulib: 10.297 ‘fmax’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.298 ‘fmaxf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.299 ‘fmaxl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. 10.300 ‘fmaxmag’ ================ Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.301 ‘fmaxmagf’ ================= Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.302 ‘fmaxmagl’ ================= Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.303 ‘fmemopen’ ================= POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.5.x, mingw, MSVC 14, Android 5.1. 10.304 ‘fmin’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.305 ‘fminf’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.306 ‘fminl’ ============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. 10.307 ‘fminmag’ ================ Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.308 ‘fminmagf’ ================= Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.309 ‘fminmagl’ ================= Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.310 ‘fmod’ ============= POSIX specification: 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: 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: 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, IRIX 6.5, 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: 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: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.315 ‘fmull’ ============== Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.316 ‘fnmatch’ ================ POSIX specification: LSB specification: Gnulib module: fnmatch or fnmatch-gnu Portability problems fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. • This function is broken on some platforms: some versions of glibc, NetBSD 7.1, some versions of Solaris. Portability problems not fixed by Gnulib: 10.317 ‘fopen’ ============== POSIX specification: 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. *Note Large File Support::. • 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, IRIX 6.5, 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 , 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, IRIX 6.5, 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: 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: 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: 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, IRIX 6.5, Solaris 11.4, Android 9.0. 10.321 ‘fprintf’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, 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), macOS 11.1, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. 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: 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: 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: 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: 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: 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: 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, IRIX, Cygwin, mingw, MSVC. Portability problems not fixed by Gnulib: 10.328 ‘freeaddrinfo’ ===================== POSIX specification: Gnulib module: getaddrinfo Portability problems fixed by Gnulib: • This function is missing on some platforms: HP-UX 11.11, IRIX 6.5, Cygwin 1.5.x, mingw, MSVC 14. • On Windows, this function is declared in ‘’ rather than in ‘’. • 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: 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, IRIX 6.5, 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: 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. *Note Large File Support::. • 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, IRIX 6.5, 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: 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: IRIX 6.5, mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.332 ‘frexpf’ =============== POSIX specification: 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, older IRIX 6.5, 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: IRIX 6.5, mingw. Portability problems not fixed by Gnulib: 10.333 ‘frexpl’ =============== POSIX specification: 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, IRIX 6.5, 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: IRIX 6.5, mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.334 ‘fromfp’ =============== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.335 ‘fromfpf’ ================ Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.336 ‘fromfpl’ ================ Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.337 ‘fromfpx’ ================ Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.338 ‘fromfpxf’ ================= Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.339 ‘fromfpxl’ ================= Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.340 ‘fscanf’ =============== POSIX specification: LSB specification: 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: 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: Gnulib module: fseeko Portability problems fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. • The declaration of ‘fseeko’ in ‘’ 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. *Note Large File Support::. Portability problems not fixed by Gnulib: 10.343 ‘fsetpos’ ================ POSIX specification: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: 10.344 ‘fstat’ ============== POSIX specification: 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.. *Note Large File Support::. • 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. *Note Large File Support::. • On Solaris 11.4, when this function yields a timestamp with a nonpositive ‘tv_sec’ value, ‘tv_nsec’ might be in the range −1000000000..−1, representing a negative nanoseconds offset from ‘tv_sec’. • 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: • *Note sys/stat.h::, 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: 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, IRIX 6.5, 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. *Note Large File Support::. • 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 Solaris 11.4, when this function yields a timestamp with a nonpositive ‘tv_sec’ value, ‘tv_nsec’ might be in the range −1000000000..−1, representing a negative nanoseconds offset from ‘tv_sec’. 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. • *Note sys/stat.h::, for general portability problems with ‘struct stat’. 10.346 ‘fstatvfs’ ================= POSIX specification: 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. *Note Large File Support::. 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: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.348 ‘fsubl’ ============== Documentation: *note Miscellaneous FP arithmetic functions: (libc)Misc FP Arithmetic. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.349 ‘fsync’ ============== POSIX specification: 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: 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: Gnulib module: ftello Portability problems fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. • The declaration of ‘ftello’ in ‘’ 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. *Note Large File Support::. 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: 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: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: 10.354 ‘ftrylockfile’ ===================== POSIX specification: 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: 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. *Note Large File Support::. 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.356 ‘funlockfile’ ==================== POSIX specification: 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: 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, IRIX 6.5, 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 9.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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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.1, NetBSD 9.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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14. • 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: 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: LSB specification: 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, IRIX 6.5, 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: Gnulib module: getaddrinfo Portability problems fixed by Gnulib: • This function is missing on some platforms: HP-UX 11.11, IRIX 6.5, Cygwin 1.5.x. • This function is only available in ‘’ 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: Gnulib module: getaddrinfo Portability problems fixed by Gnulib: • This function is missing on some platforms: HP-UX 11.11, IRIX 6.5, Cygwin 1.5.x, mingw, MSVC 14. • On Windows, this function is declared in ‘’ rather than in ‘’. • 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: 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: 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: 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: 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: LSB specification: 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, ‘’ or ‘’) 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 ‘’: 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 9.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: 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 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This variable is missing on some platforms: macOS 10.13, FreeBSD 13.0, NetBSD 5.0, OpenBSD 6.7, Minix 3.1.8, IRIX 6.5, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.371 ‘getdelim’ ================= POSIX specification: 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, IRIX 6.5, 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.374 ‘geteuid’ ================ POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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 multi-threaded. • 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: 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: 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: Gnulib module: gethostname Portability problems fixed by Gnulib: • This function is declared in a different header file (namely, ‘’) 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.386 ‘getline’ ================ POSIX specification: 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, IRIX 6.5, 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: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.390 ‘getnameinfo’ ==================== POSIX specification: Gnulib module: getaddrinfo Portability problems fixed by Gnulib: • This function is missing on some platforms: HP-UX 11.11, IRIX 6.5, Cygwin 1.5.x, mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.391 ‘getnetbyaddr’ ===================== POSIX specification: 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: 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: 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: LSB specification: 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 ‘’ 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, IRIX 6.5, 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, IRIX 6.5, Solaris 11 2010-11, Cygwin 1.5.x. • The function ‘getopt_long’ is missing on some platforms: AIX 5.1, HP-UX 11, IRIX 6.5, 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 9.0, AIX 5.1, HP-UX 11, IRIX 6.5, 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 re-checking 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: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.396 ‘getpayloadf’ ==================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.397 ‘getpayloadl’ ==================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.398 ‘getpeername’ ==================== POSIX specification: 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: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.402 ‘getpmsg’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.403 ‘getppid’ ================ POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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: 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 ‘getpwuid_r’ prior to forking. • This function is missing on some platforms: mingw, MSVC 14. 10.412 ‘getpwuid_r’ =================== POSIX specification: 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 multi-threaded. 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: LSB specification: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.414 ‘getrusage’ ================== POSIX specification: 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’ ============= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • 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: 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: 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: 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: 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: 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: LSB specification: 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: 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’ ===================== POSIX specification: 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’. 10.424 ‘getuid’ =============== POSIX specification: 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: 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: 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: 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: 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: 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: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: • Some platforms may store additional flags in the ‘gl_flags’ field. 10.431 ‘globfree’ ================= POSIX specification: 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: 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. 10.433 ‘gmtime_r’ ================= POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 14, Android 4.4. • This function produces very imprecise results on some platforms: NetBSD 9.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: 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: 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: 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: 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, IRIX 6.5, 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, IRIX 6.5. 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, Cygwin 1.5.x, mingw, MSVC 14. 10.448 ‘if_nameindex’ ===================== POSIX specification: 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, IRIX 6.5, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0. 10.449 ‘if_nametoindex’ ======================= POSIX specification: 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, IRIX 6.5, Cygwin 1.5.x, mingw, MSVC 14. 10.450 ‘ilogb’ ============== POSIX specification: 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: 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, Solaris 9, MSVC 9, Android 4.3. Portability problems not fixed by Gnulib: 10.454 ‘imaxdiv’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9, Android 4.3. Portability problems not fixed by Gnulib: 10.455 ‘inet_addr’ ================== POSIX specification: 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 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. • 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: 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 ‘’ instead of ‘’ on some platforms: NonStop Kernel. • This function is declared in ‘’, 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: 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 ‘’ instead of ‘’ on some platforms: NonStop Kernel. • This function is declared in ‘’, with a POSIX incompatible declaration, on some platforms: MSVC 14 on Windows >= Vista. Portability problems not fixed by Gnulib: 10.459 ‘initstate’ ================== POSIX specification: 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: 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: LSB specification: • 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 13.0, NetBSD 9.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: 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_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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.464 ‘isalpha’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.466 ‘isascii’ ================ POSIX specification: 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 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.468 ‘isatty’ =============== POSIX specification: Gnulib module: isatty Portability problems fixed by Gnulib: • This function is declared in a different header file (namely, ‘’) 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: Gnulib module: isblank Portability problems fixed by Gnulib: • This function is missing on some platforms: IRIX 6.5, 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.471 ‘iscntrl’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.473 ‘isdigit’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.475 ‘isfinite’ ================= POSIX specification: Gnulib module: isfinite Portability problems fixed by Gnulib: • This macro is missing on some platforms: macOS 11.1, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.4. • This macro incorrectly yields true for some ‘double’ arguments, on some platforms: Linux/ia64 (signalling 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 pseudo-zeroes. 10.476 ‘isgraph’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.478 ‘isgreater’ ================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.4, Android 9.0. 10.479 ‘isgreaterequal’ ======================= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.4, Android 9.0. 10.480 ‘isinf’ ============== POSIX specification: Gnulib module: isinf Portability problems fixed by Gnulib: • This macro is missing on some platforms: AIX 5.1, IRIX 6.5, 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 pseudo-zeroes. 10.481 ‘isless’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.4, Android 9.0. 10.482 ‘islessequal’ ==================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.4, Android 9.0. 10.483 ‘islessgreater’ ====================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.4, Android 9.0. 10.484 ‘islower’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.486 ‘isnan’ ============== POSIX specification: 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: IRIX 6.5, Solaris 11.4. • This macro does not work on some platforms: MSVC 14. • On IRIX 6.5 with ‘cc’, ‘isnan’ does not recognize some NaNs. 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 pseudo-zeroes. 10.487 ‘isnormal’ ================= POSIX specification: 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, IRIX 6.5, Solaris 11.4, Android 4.4. 10.488 ‘isprint’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.490 ‘ispunct’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.492 ‘isspace’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.494 ‘isunordered’ ==================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, NetBSD 9.0, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.4, Android 9.0. 10.495 ‘isupper’ ================ POSIX specification: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.497 ‘iswalnum’ ================= POSIX specification: 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: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, 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: Gnulib module: iswblank Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, IRIX 6.5, Solaris 9, mingw, MSVC 9, Android 4.4. • This function is declared but not defined on some platforms: IRIX 6.5.30. • 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: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, 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: Gnulib module: iswctype Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8. • This function is declared in ‘’, not in ‘’, 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. 10.506 ‘iswctype_l’ =================== POSIX specification: 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, IRIX 6.5, 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: 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 is not ISO C 99 compliant on some platforms: FreeBSD 13.0, NetBSD 9.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: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, 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: 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 ‘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: 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, IRIX 6.5, 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: 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 ‘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: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, 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: 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 is not ISO C 99 compliant on some platforms: FreeBSD 13.0, NetBSD 9.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: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.525 ‘j0’ =========== POSIX specification: 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: 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: 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: 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: LSB specification: 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: 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: 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: 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: Gnulib module: lchown Portability problems fixed by Gnulib: • Some platforms fail to detect trailing slash on non-directories, as in ‘lchown("link-to-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. • This function is missing on some platforms; however, the replacement fails on symlinks if ‘chown’ is supported, and fails altogether with ‘ENOSYS’ otherwise: Minix 3.1.8, mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.534 ‘lcong48’ ================ POSIX specification: 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: Gnulib module: ldexp Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.536 ‘ldexpf’ =============== POSIX specification: 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, older IRIX 6.5, 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: 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, IRIX 6.5, 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 ‘’ 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.539 ‘lfind’ ============== POSIX specification: 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: 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: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.542 ‘lgammal’ ================ POSIX specification: 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.0, OpenBSD 3.8, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4. 10.543 ‘link’ ============= POSIX specification: LSB specification: 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. • When the second argument is a dangling symlink, some platforms follow that link and create the destination rather than failing: IRIX 6.5. 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: 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, IRIX 6.5, 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: 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. *Note Large File Support::. 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: 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: 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: 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: *note Exponentiation and Logarithms: (libc)Exponents and Logarithms. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.550 ‘llogbf’ =============== Documentation: *note Exponentiation and Logarithms: (libc)Exponents and Logarithms. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.551 ‘llogbl’ =============== Documentation: *note Exponentiation and Logarithms: (libc)Exponents and Logarithms. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.552 ‘llrint’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, MSVC 9. 10.553 ‘llrintf’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, MSVC 9. 10.554 ‘llrintl’ ================ POSIX specification: 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.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4. 10.555 ‘llround’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9. 10.556 ‘llroundf’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.7, MSVC 9. 10.557 ‘llroundl’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. 10.558 ‘localeconv’ =================== POSIX specification: 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, IRIX 6.5, 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: 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^56), 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. • Native Windows platforms (mingw, MSVC) support only a subset of time zones supported by GNU or specified by POSIX. *Note tzset::. 10.560 ‘localtime_r’ ==================== POSIX specification: 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^56), 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: 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. *Note Large File Support::. 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: 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: 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: 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: 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, older IRIX 6.5, 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 returns an unnormalized negative infinity for a minus zero argument on some platforms: IRIX 6.5. • This function returns an unnormalized positive infinity for a positive infinite argument on some platforms: IRIX 6.5. • 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 9.0. Portability problems not fixed by Gnulib: 10.566 ‘log1p’ ============== POSIX specification: 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: 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. • This function returns a wrong value for the argument ‘-1.0f’ on some platforms: IRIX 6.5. 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: 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.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, 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. Portability problems fixed by Gnulib module ‘log1pl-ieee’: • This function has problems when the argument is minus zero on some platforms: AIX 7.1, IRIX 6.5. Portability problems not fixed by Gnulib: 10.569 ‘log2’ ============= POSIX specification: 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, older IRIX 6.5, Solaris 9, MSVC 9, Android 4.2. • This function is not declared on some platforms: IRIX 6.5. • 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: 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, older IRIX 6.5, Solaris 9, MSVC 9, Android 4.2. • This function is not declared on some platforms: IRIX 6.5. • 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: Gnulib module: log2l Portability problems fixed by Gnulib: • This function is missing on some platforms: FreeBSD 6.0, NetBSD 9.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.2. • This function is not declared on some platforms: IRIX 6.5. • 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. Portability problems not fixed by Gnulib: 10.572 ‘logb’ ============= POSIX specification: 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. Portability problems not fixed by Gnulib: 10.573 ‘logbf’ ============== POSIX specification: 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, IRIX 6.5, 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: 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, older IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.2. • 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: 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. Portability problems not fixed by Gnulib: 10.576 ‘logl’ ============= POSIX specification: 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, IRIX 6.5, 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 9.0. Portability problems not fixed by Gnulib: 10.577 ‘longjmp’ ================ POSIX specification: 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: 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: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.580 ‘lrintf’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.581 ‘lrintl’ =============== POSIX specification: 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.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.5.x, MSVC 9, Android 4.4. 10.582 ‘lround’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.583 ‘lroundf’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.584 ‘lroundl’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. 10.585 ‘lsearch’ ================ POSIX specification: 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: 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, ‘’) 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. *Note Large File Support::. • 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. • When the third argument is invalid, POSIX says that ‘lseek’ should set ‘errno’ to ‘EINVAL’ and return −1, but in this situation a ‘SIGSYS’ signal is raised on some platforms: IRIX 6.5. • Some systems do not support ‘SEEK_DATA’ and ‘SEEK_HOLE’: AIX, HP-UX, Microsoft Windows, NetBSD, OpenBSD. • 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: 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. *Note Large File Support::. • 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. *Note Large File Support::. • 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 Solaris 11.4, when this function yields a timestamp with a nonpositive ‘tv_sec’ value, ‘tv_nsec’ might be in the range −1000000000..−1, representing a negative nanoseconds offset from ‘tv_sec’. • On Windows platforms (excluding Cygwin), symlinks are not supported, so ‘lstat’ does not exist. Portability problems not fixed by Gnulib: • *Note sys/stat.h::, for general portability problems with ‘struct stat’. 10.588 ‘malloc’ =============== POSIX specification: 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: 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: Gnulib module: mbrlen Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, 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 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.3, Cygwin 2.9, 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 Portability problems fixed by Gnulib: • This function is missing on most non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 6.4, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.3, Cygwin 2.9, 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. 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: Gnulib module: mbrtowc Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, 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: Gnulib module: mbsinit Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, 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: 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, IRIX 6.5, 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: Gnulib module: mbsrtowcs Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, 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: 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: 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 ). • 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.601 ‘memchr’ =============== POSIX specification: 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: 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: 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: 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: 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: • *note Erasing Sensitive Data: (libc)Erasing Sensitive Data, 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 9.3, OpenBSD 7.2, macOS 13, Solaris 11.4, Android 13, 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: 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, ‘’ or ‘’) 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: 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, IRIX 6.5, 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: Gnulib module: mkdtemp Portability problems fixed by Gnulib: • This function is missing on some platforms: AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 10, mingw, MSVC 14. Portability problems not fixed by Gnulib: 10.610 ‘mkfifo’ =============== POSIX specification: 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: 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, IRIX 6.5, 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. 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: 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 super-user 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: 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, IRIX 6.5, 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: 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. *Note Large File Support::. • 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: 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. *Note tzset::. 10.616 ‘mlock’ ============== POSIX specification: 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: 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: 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. *Note Large File Support::. 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: 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, IRIX 6.5. Portability problems not fixed by Gnulib: 10.620 ‘modff’ ============== POSIX specification: 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: IRIX 6.5, mingw. Portability problems not fixed by Gnulib: 10.621 ‘modfl’ ============== POSIX specification: 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, IRIX 6.5, 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 fixed by Gnulib module ‘modfl-ieee’: • This function has problems with infinite arguments on some platforms: IRIX 6.5, mingw. Portability problems not fixed by Gnulib: 10.622 ‘mprotect’ ================= POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0. 10.631 ‘mq_timedsend’ ===================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14, Android 9.0. 10.632 ‘mq_unlink’ ================== POSIX specification: 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: 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: 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: 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: 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: 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: 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: *note Mutexes: (libc)ISO C Mutexes. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.640 ‘mtx_init’ ================= Documentation: *note Mutexes: (libc)ISO C Mutexes. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.641 ‘mtx_lock’ ================= Documentation: *note Mutexes: (libc)ISO C Mutexes. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.642 ‘mtx_timedlock’ ====================== Documentation: *note Mutexes: (libc)ISO C Mutexes. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.643 ‘mtx_trylock’ ==================== Documentation: *note Mutexes: (libc)ISO C Mutexes. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.644 ‘mtx_unlock’ =================== Documentation: *note Mutexes: (libc)ISO C Mutexes. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.645 ‘munlock’ ================ POSIX specification: 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: 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: 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: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.649 ‘nanf’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.650 ‘nanl’ ============= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 3.1. 10.651 ‘nanosleep’ ================== POSIX specification: 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: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.653 ‘nearbyintf’ =================== POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.654 ‘nearbyintl’ =================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4. 10.655 ‘newlocale’ ================== POSIX specification: 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, IRIX 6.5, 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: 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: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.658 ‘nextafterl’ =================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. 10.659 ‘nextdown’ ================= Documentation: • *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.660 ‘nextdownf’ ================== Documentation: • *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.661 ‘nextdownl’ ================== Documentation: • *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.662 ‘nexttoward’ =================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.2. 10.663 ‘nexttowardf’ ==================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9. 10.664 ‘nexttowardl’ ==================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 9, Android 4.2. 10.665 ‘nextup’ =============== Documentation: • *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.666 ‘nextupf’ ================ Documentation: • *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.667 ‘nextupl’ ================ Documentation: • *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.668 ‘nftw’ ============= POSIX specification: 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. *Note Large File Support::. 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: 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: 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, IRIX 6.5, Solaris 11.4, Haiku, Cygwin 2.9. • The constants ‘ERA’, ‘ERA_D_FMT’, ‘ERA_D_T_FMT’, ‘ERA_T_FMT’, ‘ALT_DIGITS’ are not supported on some platforms: OpenBSD 6.7. • The constants ‘YESEXPR’ and ‘NOEXPR’ do not return a valid string on some platforms: IRIX 6.5. • 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 7.1. 10.672 ‘nrand48’ ================ POSIX specification: 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: 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: 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: 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, IRIX 6.5, 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. *Note Large File Support::. • 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: 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, IRIX 6.5, 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. *Note Large File Support::. • 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: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: 10.678 ‘openlog’ ================ POSIX specification: 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, MSVC 14. 10.682 ‘opterr’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This variable is missing on some platforms: IRIX 6.5, MSVC 14. 10.683 ‘optind’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This variable is missing on some platforms: IRIX 6.5, MSVC 14. 10.684 ‘optopt’ =============== POSIX specification: 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, IRIX 6.5, MSVC 14. 10.685 ‘pathconf’ ================= POSIX specification: 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: 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: 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: 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, IRIX 6.5. 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: 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: 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, HP NonStop, mingw, MSVC. 10.691 ‘popen’ ============== POSIX specification: 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: 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. *Note Large File Support::. 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, IRIX 6.5, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4. 10.693 ‘posix_fallocate’ ======================== POSIX specification: 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. *Note Large File Support::. 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, IRIX 6.5, 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: 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, IRIX 6.5, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 5.1. 10.695 ‘posix_mem_offset’ ========================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.696 ‘posix_memalign’ ======================= POSIX specification: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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.702 ‘posix_spawn_file_actions_destroy’ ========================================= POSIX specification: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1. Portability problems not fixed by Gnulib: 10.713 ‘posix_spawnattr_setpgroup’ ================================== POSIX specification: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1. Portability problems not fixed by Gnulib: 10.718 ‘posix_spawnp’ ===================== POSIX specification: 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, IRIX 6.5, 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 13.2, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 3.4.x. 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: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.720 ‘posix_trace_attr_getclockres’ ===================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.721 ‘posix_trace_attr_getcreatetime’ ======================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.722 ‘posix_trace_attr_getgenversion’ ======================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.723 ‘posix_trace_attr_getinherited’ ====================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.724 ‘posix_trace_attr_getlogfullpolicy’ ========================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.725 ‘posix_trace_attr_getlogsize’ ==================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.726 ‘posix_trace_attr_getmaxdatasize’ ======================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.727 ‘posix_trace_attr_getmaxsystemeventsize’ =============================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.728 ‘posix_trace_attr_getmaxusereventsize’ ============================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.729 ‘posix_trace_attr_getname’ ================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.730 ‘posix_trace_attr_getstreamfullpolicy’ ============================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.731 ‘posix_trace_attr_getstreamsize’ ======================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.732 ‘posix_trace_attr_init’ ============================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.733 ‘posix_trace_attr_setinherited’ ====================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.734 ‘posix_trace_attr_setlogfullpolicy’ ========================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.735 ‘posix_trace_attr_setlogsize’ ==================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.736 ‘posix_trace_attr_setmaxdatasize’ ======================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.737 ‘posix_trace_attr_setname’ ================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.738 ‘posix_trace_attr_setstreamfullpolicy’ ============================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.739 ‘posix_trace_attr_setstreamsize’ ======================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.740 ‘posix_trace_clear’ ========================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.741 ‘posix_trace_close’ ========================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.742 ‘posix_trace_create’ =========================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.743 ‘posix_trace_create_withlog’ =================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.744 ‘posix_trace_event’ ========================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.745 ‘posix_trace_eventid_equal’ ================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.746 ‘posix_trace_eventid_get_name’ ===================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.747 ‘posix_trace_eventid_open’ ================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.748 ‘posix_trace_eventset_add’ ================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.749 ‘posix_trace_eventset_del’ ================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.750 ‘posix_trace_eventset_empty’ =================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.751 ‘posix_trace_eventset_fill’ ================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.752 ‘posix_trace_eventset_ismember’ ====================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.753 ‘posix_trace_eventtypelist_getnext_id’ ============================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.754 ‘posix_trace_eventtypelist_rewind’ ========================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.755 ‘posix_trace_flush’ ========================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.756 ‘posix_trace_get_attr’ ============================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.757 ‘posix_trace_get_filter’ =============================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.758 ‘posix_trace_get_status’ =============================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.759 ‘posix_trace_getnext_event’ ================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.760 ‘posix_trace_open’ ========================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.761 ‘posix_trace_rewind’ =========================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.762 ‘posix_trace_set_filter’ =============================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.763 ‘posix_trace_shutdown’ ============================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.764 ‘posix_trace_start’ ========================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.765 ‘posix_trace_stop’ ========================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.766 ‘posix_trace_timedgetnext_event’ ======================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.767 ‘posix_trace_trid_eventid_open’ ====================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.768 ‘posix_trace_trygetnext_event’ ===================================== POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.769 ‘posix_typed_mem_get_info’ ================================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.770 ‘posix_typed_mem_open’ ============================= POSIX specification: 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.771 ‘pow’ ============ POSIX specification: Gnulib module: pow Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.772 ‘powf’ ============= POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, Android 4.4. • This function is only defined as a macro with arguments on some platforms: MSVC 14. 10.774 ‘pread’ ============== POSIX specification: 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. *Note Large File Support::. • 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, 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), macOS 11.1, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. 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: 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, IRIX 6.5, 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: glibc 2.9, macOS 11.1, FreeBSD 13.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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14. 10.788 ‘pthread_attr_getstacksize’ ================================== POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14. 10.797 ‘pthread_attr_setstacksize’ ================================== POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0. 10.799 ‘pthread_barrier_init’ ============================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0. 10.800 ‘pthread_barrier_wait’ ============================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0. 10.801 ‘pthread_barrierattr_destroy’ ==================================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0. 10.802 ‘pthread_barrierattr_getpshared’ ======================================= POSIX specification: 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 9.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0. 10.803 ‘pthread_barrierattr_init’ ================================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0. 10.804 ‘pthread_barrierattr_setpshared’ ======================================= POSIX specification: 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 9.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 6.0. 10.805 ‘pthread_cancel’ ======================= POSIX specification: 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: 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 9.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.807 ‘pthread_cleanup_push’ ============================= POSIX specification: 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 9.0, Minix 3.1.8, HP-UX 11, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.808 ‘pthread_cond_broadcast’ =============================== POSIX specification: 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.809 ‘pthread_cond_destroy’ ============================= POSIX specification: 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: 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: 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: 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.813 ‘pthread_cond_wait’ ========================== POSIX specification: 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: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 4.4. 10.816 ‘pthread_condattr_getpshared’ ==================================== POSIX specification: 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.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14. 10.817 ‘pthread_condattr_init’ ============================== POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 4.4. 10.819 ‘pthread_condattr_setpshared’ ==================================== POSIX specification: 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.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14. 10.820 ‘pthread_create’ ======================= POSIX specification: 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: 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: 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: 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’ =============================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: NetBSD 9.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0. 10.825 ‘pthread_getcpuclockid’ ============================== POSIX specification: 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, IRIX 6.5, Solaris 11.4, Cygwin 1.7.9, mingw, MSVC 14. 10.826 ‘pthread_getschedparam’ ============================== POSIX specification: 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: 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: 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: 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: 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: 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: 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 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.833 ‘pthread_mutex_destroy’ ============================== POSIX specification: 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: 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: 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: 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: 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: 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, IRIX 6.5, 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: 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: 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: 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: 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: 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: 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.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14. 10.845 ‘pthread_mutexattr_getrobust’ ==================================== POSIX specification: 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 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, 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: 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: 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: 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: 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: 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.0, OpenBSD 6.7, Minix 3.1.8, mingw, MSVC 14. 10.851 ‘pthread_mutexattr_setrobust’ ==================================== POSIX specification: 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 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, 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: 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: 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. Portability problems not fixed by Gnulib: 10.854 ‘pthread_rwlock_destroy’ =============================== POSIX specification: 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: 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: 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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: 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: 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.862 ‘pthread_rwlock_wrlock’ ============================== POSIX specification: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: NetBSD 9.0, Minix 3.1.8, mingw, MSVC 14. 10.865 ‘pthread_rwlockattr_init’ ================================ POSIX specification: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: NetBSD 9.0, Minix 3.1.8, mingw, MSVC 14. 10.867 ‘pthread_self’ ===================== POSIX specification: 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: 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: 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’ =============================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: NetBSD 9.0, Minix 3.1.8, mingw, MSVC 14, Android 9.0. 10.871 ‘pthread_setschedparam’ ============================== POSIX specification: 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: 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 13.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.7.9, mingw, MSVC 14, Android 8.1. 10.873 ‘pthread_setspecific’ ============================ POSIX specification: 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: 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 ‘’ instead of ‘’ 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 13.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. • This function does not immediately raise signals that were pending before the call and unblocked by the call on some platforms: IRIX 6.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.0 when libpthread is not in use. 10.875 ‘pthread_spin_destroy’ ============================= POSIX specification: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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: 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, IRIX 6.5, 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.880 ‘pthread_testcancel’ =========================== POSIX specification: 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: 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: 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: 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: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: Extension: Gnulib provides a module ‘putenv’ that substitutes a ‘putenv’ implementation that can also be used to remove environment variables. 10.887 ‘putmsg’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.888 ‘putpmsg’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.889 ‘puts’ ============= POSIX specification: 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: 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: 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: 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: 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. *Note Large File Support::. • 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: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 9, Android 4.4. 10.896 ‘raise’ ============== POSIX specification: 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: 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. 10.898 ‘rand_r’ =============== POSIX specification: 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. 10.899 ‘random’ =============== POSIX specification: 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 ‘int’ instead of ‘long’) on some platforms: Cygwin 1.5.25, Haiku. 10.900 ‘read’ ============= POSIX specification: Gnulib module: read, stdio, nonblocking Portability problems fixed by Gnulib module ‘read’: • This function is declared in a different header file (namely, ‘’) 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: 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. *Note Large File Support::. 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: 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. *Note Large File Support::. 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: 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: IRIX may set ‘errno’ to ‘ENXIO’ instead of ‘EINVAL’. 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: 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, IRIX 6.5, 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: IRIX may set ‘errno’ to ‘ENXIO’ instead of ‘EINVAL’. 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: 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: 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: 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: 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: 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: 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: 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: 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: LSB specification: 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: 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: 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: 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, older IRIX 6.5, Solaris 9, MSVC 9. • This function is not declared on some platforms: IRIX 6.5. • This function may go into an endless loop on some platforms: IRIX 6.5. Portability problems fixed by Gnulib module ‘remainderf-ieee’: Portability problems not fixed by Gnulib: 10.917 ‘remainderl’ =================== POSIX specification: 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.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4. • This function is not declared on some platforms: IRIX 6.5. • 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. Portability problems fixed by Gnulib module ‘remainderl-ieee’: Portability problems not fixed by Gnulib: 10.918 ‘remove’ =============== POSIX specification: 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: 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: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.921 ‘remquof’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.922 ‘remquol’ ================ POSIX specification: 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.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4. 10.923 ‘rename’ =============== POSIX specification: 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: 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, IRIX 6.5, 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 ‘’, not in ‘’, on some platforms: NetBSD 7.0, Solaris 11.4. • This function is declared in ‘’, not in ‘’, 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")’ rename ‘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: 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: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: 10.927 ‘rint’ ============= POSIX specification: 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: 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, older IRIX 6.5, Solaris 9, MSVC 9. • This function is not declared on some platforms: IRIX 6.5. Portability problems not fixed by Gnulib: 10.929 ‘rintl’ ============== POSIX specification: 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, IRIX 6.5, 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: Gnulib module: rmdir Portability problems fixed by Gnulib: • This function is declared in different header files (namely, ‘’ or ‘’) 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: 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, older IRIX 6.5, Solaris 9, MSVC 9. • This function is not declared on some platforms: glibc 2.8, IRIX 6.5. • 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: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.933 ‘roundevenf’ =================== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.934 ‘roundevenl’ =================== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.935 ‘roundf’ =============== POSIX specification: 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, older IRIX 6.5, Solaris 9, MSVC 9. • This function is not declared on some platforms: glibc 2.8, IRIX 6.5. • 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. Portability problems not fixed by Gnulib: 10.936 ‘roundl’ =============== POSIX specification: 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, older IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. • This function is not declared on some platforms: glibc 2.8, IRIX 6.5. 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: 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, IRIX 6.5, Solaris 9, MSVC 9, Android 9.0. 10.938 ‘scalblnf’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9, Android 9.0. 10.939 ‘scalblnl’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 9.0. 10.940 ‘scalbn’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: AIX 5.1, IRIX 6.5, MSVC 9. 10.941 ‘scalbnf’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.942 ‘scalbnl’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9. 10.943 ‘scandir’ ================ POSIX specification: 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. *Note Large File Support::. 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: LSB specification: 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: 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: 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: 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: 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: 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: 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: LSB specification: 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: 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: 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: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: • This function is missing on some platforms: MSVC 14, Android 5.1. 10.955 ‘select’ =============== POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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, IRIX 6.5, Solaris 9, mingw, MSVC 14. 10.963 ‘sem_trywait’ ==================== POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.973 ‘setegid’ ================ POSIX specification: 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: Gnulib module: setenv Portability problems fixed by Gnulib: • This function is missing on some platforms: HP-UX 11.23, IRIX 6.5, 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: 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: 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: 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: 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: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.980 ‘setjmp’ =============== POSIX specification: 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: 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 ‘’ (without ‘-D_GNU_SOURCE’) on some platforms: glibc (at least 2.11–2.13). 10.982 ‘setlocale’ ================== POSIX specification: Gnulib module: setlocale, setlocale-null Portability problems fixed by Gnulib module ‘setlocale’: • On Windows platforms (excluding Cygwin), ‘setlocale(CATEGORY,NULL)’ ignores 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: 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: 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: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.986 ‘setpayloadf’ ==================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.987 ‘setpayloadl’ ==================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.988 ‘setpayloadsig’ ====================== Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.989 ‘setpayloadsigf’ ======================= Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.990 ‘setpayloadsigl’ ======================= Documentation: *note Setting and modifying single bits of FP values: (libc)FP Bit Twiddling. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.991 ‘setpgid’ ================ POSIX specification: 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’ ================ POSIX specification: 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.993 ‘setpriority’ ==================== POSIX specification: 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: 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: 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: 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: 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: LSB specification: 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. *Note Large File Support::. 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: 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: 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: LSB specification: 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: 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, IRIX 6.5, Solaris 11.4, Solaris 11 OpenIndiana. 10.1003 ‘setuid’ ================ POSIX specification: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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. • This function interprets the ‘ss_sp’ member of ‘stack_t’ as the upper bound instead of the lower bound of the alternate stack on some platforms: IRIX 6.5 10.1016 ‘sigdelset’ =================== POSIX specification: 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: 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: 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’ ================= POSIX specification: 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. 10.1020 ‘sigignore’ =================== POSIX specification: 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. 10.1021 ‘siginterrupt’ ====================== POSIX specification: 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. Note: POSIX recommends using ‘sigaction’ with SA_RESTART instead of ‘siginterrupt (sig, 0)’. 10.1022 ‘sigismember’ ===================== POSIX specification: 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: 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: 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 14. • 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: Gnulib module: signbit Portability problems fixed by Gnulib: • This function is missing on some platforms: macOS 11.1, OpenBSD 6.7, AIX 5.1, IRIX 6.5, Solaris 11.0, MSVC 9, Android 9.0. Portability problems not fixed by Gnulib: 10.1026 ‘signgam’ ================= POSIX specification: 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, IRIX 6.5, mingw, MSVC 14. 10.1027 ‘sigpause’ ================== POSIX specification: LSB specification: 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.1028 ‘sigpending’ ==================== POSIX specification: 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: 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 9.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, IRIX. 10.1030 ‘sigqueue’ ================== POSIX specification: 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’ ================== POSIX specification: 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. 10.1032 ‘sigset’ ================ POSIX specification: 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. 10.1033 ‘sigsetjmp’ =================== POSIX specification: 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: 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: 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: 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: 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: Gnulib module: sin Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1039 ‘sinf’ ============== POSIX specification: 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: Gnulib module: sinh Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1041 ‘sinhf’ =============== POSIX specification: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, Android 4.4. • This function is only defined as a macro with arguments on some platforms: MSVC 14. 10.1043 ‘sinl’ ============== POSIX specification: 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, IRIX 6.5, 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: 10.1044 ‘sleep’ =============== POSIX specification: 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: 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, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, 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), macOS 11.1, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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, MSVC 14. Portability problems fixed by Gnulib module ‘snprintf-gnu’: • This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.1, NetBSD 9.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. • 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0. 10.1047 ‘socket’ ================ POSIX specification: 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: 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: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, 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), macOS 11.1, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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.1, NetBSD 9.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. • 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: Gnulib module: sqrt Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1051 ‘sqrtf’ =============== POSIX specification: 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: 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, IRIX 6.5, 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: 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. 10.1054 ‘srand48’ ================= POSIX specification: 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: 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. 10.1056 ‘sscanf’ ================ POSIX specification: LSB specification: 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: 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. *Note Large File Support::. • 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. *Note Large File Support::. • 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 Solaris 11.4, when this function yields a timestamp with a nonpositive ‘tv_sec’ value, ‘tv_nsec’ might be in the range −1000000000..−1, representing a negative nanoseconds offset from ‘tv_sec’. Portability problems not fixed by Gnulib: • *Note sys/stat.h::, for general portability problems with ‘struct stat’. • Cygwin’s ‘stat’ function sometimes sets ‘errno’ to ‘EACCES’ when ‘ENOENT’ would be more appropriate. • 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: 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. *Note Large File Support::. 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 ‘stderr’ ================ POSIX specification: 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.1060 ‘stdin’ =============== POSIX specification: 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.1061 ‘stdout’ ================ POSIX specification: 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.1062 ‘stpcpy’ ================ POSIX specification: 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, IRIX 6.5, 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.1063 ‘stpncpy’ ================= POSIX specification: 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, IRIX 6.5, 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. Portability problems not fixed by Gnulib: 10.1064 ‘strcasecmp’ ==================== POSIX specification: 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.1065 ‘strcasecmp_l’ ====================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on many platforms: FreeBSD 6.0, NetBSD 9.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1. 10.1066 ‘strcat’ ================ POSIX specification: 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.1067 ‘strchr’ ================ POSIX specification: 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.1068 ‘strcmp’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1069 ‘strcoll’ ================= POSIX specification: 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.1070 ‘strcoll_l’ =================== POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.1071 ‘strcpy’ ================ POSIX specification: 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.1072 ‘strcspn’ ================= POSIX specification: 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.1073 ‘strdup’ ================ POSIX specification: Gnulib module: strdup or strdup-posix Portability problems fixed by either Gnulib module ‘strdup’ or ‘strdup-posix’: • This function has no prototype in ‘’ 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.1074 ‘strerror’ ================== POSIX specification: 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 9.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, IRIX 6.5. (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’.) Portability problems not fixed by Gnulib: 10.1075 ‘strerror_l’ ==================== POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1. 10.1076 ‘strerror_r’ ==================== POSIX specification: LSB specification: • 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, IRIX 6.5, 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 ‘’ 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 ‘’ 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: 10.1077 ‘strfmon’ ================= POSIX specification: 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.1078 ‘strfmon_l’ =================== POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0. 10.1079 ‘strfromd’ ================== Documentation: • *note Printing of Floats: (libc)Printing of Floats, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1080 ‘strfromf’ ================== Documentation: • *note Printing of Floats: (libc)Printing of Floats, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1081 ‘strfroml’ ================== Documentation: • *note Printing of Floats: (libc)Printing of Floats, • 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1082 ‘strftime’ ================== POSIX specification: 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 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. *Note tzset::. Extension: Gnulib offers a module ‘nstrftime’ that provides an ‘nstrftime’ function with various GNU extensions. 10.1083 ‘strftime_l’ ==================== POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.1084 ‘strlen’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1085 ‘strncasecmp’ ===================== POSIX specification: 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.1086 ‘strncasecmp_l’ ======================= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on many platforms: FreeBSD 6.0, NetBSD 9.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 5.1. 10.1087 ‘strncat’ ================= POSIX specification: 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.1088 ‘strncmp’ ================= POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1089 ‘strncpy’ ================= POSIX specification: 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 NUL-terminated. 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 . 10.1090 ‘strndup’ ================= POSIX specification: 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, IRIX 6.5, 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.1091 ‘strnlen’ ================= POSIX specification: 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, IRIX 6.5, Solaris 10, mingw. Portability problems not fixed by Gnulib: 10.1092 ‘strpbrk’ ================= POSIX specification: 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.1093 ‘strptime’ ================== POSIX specification: LSB specification: 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.1094 ‘strrchr’ ================= POSIX specification: 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.1095 ‘strsignal’ =================== POSIX specification: Gnulib module: strsignal Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, HP-UX 11, IRIX 6.5, 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.1096 ‘strspn’ ================ POSIX specification: 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.1097 ‘strstr’ ================ POSIX specification: 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 9.0, OpenBSD 6.1, AIX 7.2, HP-UX 11, IRIX 6.5, 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.1098 ‘strtod’ ================ POSIX specification: 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 consumes whitespace even when there is nothing that should be parsed on some platforms: IRIX 6.5. • This function allows whitespace between ‘e’ and the exponent on some platforms: HP-UX 11.11, IRIX 6.5. • 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 returns +0.0 (not −0.0) for ‘-0’ on some platforms: IRIX 6.5. • This function fails to parse Infinities and plain NaNs on some platforms: OpenBSD 4.0, HP-UX 11.11, IRIX 6.5, 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, IRIX 6.5, 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, IRIX 6.5, 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, IRIX 6.5, 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, IRIX 6.5, 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, IRIX 6.5, Cygwin, mingw, MSVC 14. • The replacement function does not always return correctly rounded results. 10.1099 ‘strtof’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9, Android 4.4. 10.1100 ‘strtoimax’ =================== POSIX specification: Gnulib module: strtoimax Portability problems fixed by Gnulib: • This function is missing on some platforms: OpenBSD 3.8, Minix 3.1.8, IRIX 6.5, 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.1101 ‘strtok’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1102 ‘strtok_r’ ================== POSIX specification: 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.1103 ‘strtol’ ================ POSIX specification: 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.1104 ‘strtold’ ================= POSIX specification: 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, older IRIX 6.5, 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 consumes whitespace even when there is nothing that should be parsed on some platforms: IRIX 6.5. • This function allows whitespace between ‘e’ and the exponent on some platforms: HP-UX 11.31/ia64, IRIX 6.5. • This function returns the wrong end pointer for ‘-0x’ on some platforms: glibc-2.3.2, Mac OS X 10.5, Haiku. • This function returns +0.0 (not −0.0) for ‘-0’ on some platforms: IRIX 6.5. • This function fails to parse Infinities and plain NaNs on some platforms: HP-UX 11.31/ia64, IRIX 6.5. • This function fails to parse ‘NaN()’ on some platforms: glibc-2.3.2, IRIX 6.5, mingw, Haiku. • This function fails to parse ‘NaN(N-CHAR-SEQUENCE)’ on some platforms: IRIX 6.5. • 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: IRIX 6.5, 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.1105 ‘strtoll’ ================= POSIX specification: 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.1106 ‘strtoul’ ================= POSIX specification: 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.1107 ‘strtoull’ ================== POSIX specification: 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. Portability problems not fixed by Gnulib: 10.1108 ‘strtoumax’ =================== POSIX specification: 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, IRIX 6.5, 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.1109 ‘strxfrm’ ================= POSIX specification: 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.1110 ‘strxfrm_l’ =================== POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.1111 ‘swab’ ============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: Android 8.1. 10.1112 ‘swprintf’ ================== POSIX specification: 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, IRIX 6.5, 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), 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. • 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.1, NetBSD 9.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 9.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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14. • 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 9.3, OpenBSD 7.2, Cygwin 2.9.0. • The ‘%lc’ directive may fail on some platforms: musl libc 1.2.4, FreeBSD 13.2, NetBSD 9.3, 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.1113 ‘swscanf’ ================= POSIX specification: LSB specification: 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, IRIX 6.5, 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.1114 ‘symlink’ ================= POSIX specification: 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.1115 ‘symlinkat’ =================== POSIX specification: 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, IRIX 6.5, 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.1116 ‘sync’ ============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.1117 ‘sysconf’ ================= POSIX specification: LSB specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.1118 ‘syslog’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.1119 ‘system’ ================ POSIX specification: LSB specification: Gnulib module: system-posix Portability problems fixed by Gnulib: • The macros ‘WIFSIGNALED’, ‘WIFEXITED’, ‘WIFSTOPPED’, ‘WTERMSIG’, ‘WEXITSTATUS’, ‘WNOHANG’, ‘WUNTRACED’, ‘WSTOPSIG’ are not defined in ‘’ (only in ‘’) 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.1120 ‘tan’ ============= POSIX specification: Gnulib module: tan Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1121 ‘tanf’ ============== POSIX specification: 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.1122 ‘tanh’ ============== POSIX specification: Gnulib module: tanh Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1123 ‘tanhf’ =============== POSIX specification: 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.1124 ‘tanhl’ =============== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.7.x, Android 4.4. • This function is only defined as a macro with arguments on some platforms: MSVC 14. 10.1125 ‘tanl’ ============== POSIX specification: 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, IRIX 6.5, 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: 10.1126 ‘tcdrain’ ================= POSIX specification: 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.1127 ‘tcflow’ ================ POSIX specification: 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.1128 ‘tcflush’ ================= POSIX specification: 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 IRIX, also ‘ENOSYS’, or, on Mac OS X, also ‘EOPNOTSUPP’ or ‘ENODEV’, rather than ‘ENOTTY’. 10.1129 ‘tcgetattr’ =================== POSIX specification: 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.1130 ‘tcgetpgrp’ =================== POSIX specification: 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.1131 ‘tcgetsid’ ================== POSIX specification: 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.1132 ‘tcsendbreak’ ===================== POSIX specification: 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.1133 ‘tcsetattr’ =================== POSIX specification: 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.1134 ‘tcsetpgrp’ =================== POSIX specification: 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.1135 ‘tdelete’ ================= POSIX specification: 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.1136 ‘telldir’ ================= POSIX specification: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: • This function is missing on some platforms: MSVC 14, Android 5.1. 10.1137 ‘tempnam’ ================= POSIX specification: 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 not appropriate for creating temporary files. (It has security risks.) Better use ‘mkstemp’ instead. 10.1138 ‘tfind’ =============== POSIX specification: 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.1139 ‘tgamma’ ================ POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.1140 ‘tgammaf’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, MSVC 9. 10.1141 ‘tgammal’ ================= POSIX specification: 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.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin 1.7.x, MSVC 9, Android 4.4. 10.1142 ‘thrd_create’ ===================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function uses an incorrectly defined ‘thrd_start_t’ on some platforms: AIX 7.2. Portability problems not fixed by Gnulib: 10.1143 ‘thrd_current’ ====================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1144 ‘thrd_detach’ ===================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1145 ‘thrd_equal’ ==================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1146 ‘thrd_exit’ =================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1147 ‘thrd_join’ =================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function never stores an exit code on some platforms: AIX 7.2. • This function crashes when the second argument is NULL on some platforms: Solaris 11.4. Portability problems not fixed by Gnulib: 10.1148 ‘thrd_sleep’ ==================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1149 ‘thrd_yield’ ==================== Documentation: *note Creation and Control: (libc)ISO C Thread Management. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1150 ‘time’ ============== POSIX specification: 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, 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.1151 ‘timegm’ ================ Documentation: • *note Broken-down Time: (libc)Broken-down Time, • man timegm. Gnulib module: timegm Portability problems fixed by Gnulib: • This function is missing on some platforms: AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11.3, mingw, MSVC 14, Android 3.0. Portability problems not fixed by Gnulib: 10.1152 ‘timer_create’ ====================== POSIX specification: 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.1153 ‘timer_delete’ ====================== POSIX specification: 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.1154 ‘timer_getoverrun’ ========================== POSIX specification: 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.1155 ‘timer_gettime’ ======================= POSIX specification: 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.1156 ‘timer_settime’ ======================= POSIX specification: 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.1157 ‘times’ =============== POSIX specification: 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.1158 ‘timespec_getres’ ========================= ISO C23 specification: 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 13.0, NetBSD 9.2, OpenBSD 7.0, Minix 3.3.0, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 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.1159 ‘timezone’ ================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This variable is missing on some platforms: IRIX 6.5, 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. *Note tzset::. A more portable way of getting the UTC offset is to use ‘strftime’ with the ‘%z’ format. *Note strftime::. 10.1160 ‘tmpfile’ ================= POSIX specification: 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. *Note Large File Support::. Portability problems not fixed by Gnulib: 10.1161 ‘tmpnam’ ================ POSIX specification: 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.1162 ‘toascii’ ================= POSIX specification: 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: 10.1163 ‘tolower’ ================= POSIX specification: 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.1164 ‘tolower_l’ =================== POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.1165 ‘totalorder’ ==================== Documentation: *note Floating-Point Comparison Functions: (libc)FP Comparison Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function has a different signature on some platforms: glibc 2.30. 10.1166 ‘totalorderf’ ===================== Documentation: *note Floating-Point Comparison Functions: (libc)FP Comparison Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function has a different signature on some platforms: glibc 2.30. 10.1167 ‘totalorderl’ ===================== Documentation: *note Floating-Point Comparison Functions: (libc)FP Comparison Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function has a different signature on some platforms: glibc 2.30. 10.1168 ‘totalordermag’ ======================= Documentation: *note Floating-Point Comparison Functions: (libc)FP Comparison Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function has a different signature on some platforms: glibc 2.30. 10.1169 ‘totalordermagf’ ======================== Documentation: *note Floating-Point Comparison Functions: (libc)FP Comparison Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function has a different signature on some platforms: glibc 2.30. 10.1170 ‘totalordermagl’ ======================== Documentation: *note Floating-Point Comparison Functions: (libc)FP Comparison Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. • This function has a different signature on some platforms: glibc 2.30. 10.1171 ‘toupper’ ================= POSIX specification: 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.1172 ‘toupper_l’ =================== POSIX specification: 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, IRIX 6.5, Solaris 11.3, Cygwin 1.7.x, mingw, MSVC 14, Android 4.4. 10.1173 ‘towctrans’ =================== POSIX specification: Gnulib module: towctrans Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, 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. 10.1174 ‘towctrans_l’ ===================== POSIX specification: 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, IRIX 6.5, 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.1175 ‘towlower’ ================== POSIX specification: 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 9.0. 10.1176 ‘towlower_l’ ==================== POSIX specification: 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, IRIX 6.5, 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.1177 ‘towupper’ ================== POSIX specification: 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 9.0. 10.1178 ‘towupper_l’ ==================== POSIX specification: 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, IRIX 6.5, 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.1179 ‘trunc’ =============== POSIX specification: 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’: Portability problems not fixed by Gnulib: 10.1180 ‘truncate’ ================== POSIX specification: 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. *Note Large File Support::. • 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.1181 ‘truncf’ ================ POSIX specification: 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.1182 ‘truncl’ ================ POSIX specification: 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, IRIX 6.5, 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.1183 ‘tsearch’ ================= POSIX specification: 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.1184 ‘tss_create’ ==================== Documentation: *note Thread-local Storage: (libc)ISO C Thread-local Storage. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1185 ‘tss_delete’ ==================== Documentation: *note Thread-local Storage: (libc)ISO C Thread-local Storage. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1186 ‘tss_get’ ================= Documentation: *note Thread-local Storage: (libc)ISO C Thread-local Storage. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1187 ‘tss_set’ ================= Documentation: *note Thread-local Storage: (libc)ISO C Thread-local Storage. 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, IRIX 6.5, Solaris 11.3, Cygwin 2.9, mingw, MSVC 14, Android 9.0. Portability problems not fixed by Gnulib: 10.1188 ‘ttyname’ ================= POSIX specification: 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.1189 ‘ttyname_r’ =================== POSIX specification: 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. Portability problems not fixed by Gnulib: 10.1190 ‘twalk’ =============== POSIX specification: 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.1191 ‘tzname’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This variable is missing on some platforms: IRIX 6.5, 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. *Note tzset::. A more portable way of getting the time zone abbreviation is to use ‘strftime’ with the ‘%Z’ format. *Note strftime::. 10.1192 ‘tzset’ =============== POSIX specification: 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.1193 ‘ufromfp’ ================= Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1194 ‘ufromfpf’ ================== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1195 ‘ufromfpl’ ================== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1196 ‘ufromfpx’ ================== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1197 ‘ufromfpxf’ =================== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1198 ‘ufromfpxl’ =================== Documentation: *note Rounding Functions: (libc)Rounding Functions. 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 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. 10.1199 ‘ulimit’ ================ POSIX specification: 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.1200 ‘umask’ =============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1201 ‘uname’ =============== POSIX specification: 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.1202 ‘ungetc’ ================ POSIX specification: 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.1203 ‘ungetwc’ ================= POSIX specification: 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.1204 ‘unlink’ ================ POSIX specification: LSB specification: Gnulib module: unlink Portability problems fixed by Gnulib: • This function is declared in a different header file (namely, ‘’) 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("symlink-to-dir/")’ remove ‘dir’ and leave ‘symlink-to-dir’ dangling; this behavior is counter-intuitive. 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.1205 ‘unlinkat’ ================== POSIX specification: 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, IRIX 6.5, 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 ‘’, not in ‘’, 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,"symlink-to-dir/",0)’ remove ‘dir’ and leave ‘symlink-to-dir’ dangling; this behavior is counter-intuitive. 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.1206 ‘unlockpt’ ================== POSIX specification: 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.1207 ‘unsetenv’ ================== POSIX specification: Gnulib module: unsetenv Portability problems fixed by Gnulib: • This function is missing on some platforms: AIX 5.1, HP-UX 11.23, IRIX 6.5, 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.1208 ‘uselocale’ =================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on many platforms: FreeBSD 9.0, NetBSD 9.0, OpenBSD 6.1, Minix 3.1.8, AIX 6.1, HP-UX 11, IRIX 6.5, Solaris 11.3, Cygwin 2.5.x, mingw, MSVC 14, Android 4.4. • 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 6.3. 10.1209 ‘utime’ =============== POSIX specification: 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. 10.1210 ‘utimensat’ =================== POSIX specification: 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, IRIX 6.5, 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 9.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. • 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.1211 ‘utimes’ ================ POSIX specification: 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.1212 ‘va_arg’ ================ POSIX specification: 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.1213 ‘va_copy’ ================= POSIX specification: 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, IRIX 6.5 with cc. Portability problems not fixed by Gnulib: 10.1214 ‘va_end’ ================ POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1215 ‘va_start’ ================== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: 10.1216 ‘vdprintf’ ================== POSIX specification: 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, IRIX 6.5, 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.1, NetBSD 9.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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, Solaris 11.4, Cygwin 2.9.0. • This function does not support the ‘n’ directive on some platforms: glibc when used with ‘_FORTIFY_SOURCE >= 2’ (set by default on Ubuntu), macOS 11.1. • 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. • This function does not support precisions larger than 512 or 1024 in integer, floating-point 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. Portability problems fixed by Gnulib module ‘vdprintf-gnu’: • This function does not support the ‘B’ directive on some platforms: glibc 2.34, FreeBSD 13.1, NetBSD 9.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. • 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.1217 ‘vfprintf’ ================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, 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), macOS 11.1, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. Portability problems fixed by Gnulib module ‘stdio’ or ‘vfprintf-posix’ or ‘vfprintf-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 ‘vfprintf-posix’ or ‘vfprintf-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.1218 ‘vfscanf’ ================= POSIX specification: LSB specification: 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, IRIX 6.5. • 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.1219 ‘vfwprintf’ =================== POSIX specification: 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, IRIX 6.5, 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.1, NetBSD 9.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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14. • 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.1220 ‘vfwscanf’ ================== POSIX specification: LSB specification: 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, IRIX 6.5, 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.1221 ‘vprintf’ ================= POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, 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), macOS 11.1, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. 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.1222 ‘vscanf’ ================ POSIX specification: LSB specification: 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: • This function is missing on some platforms: IRIX 6.5. • 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.1223 ‘vsnprintf’ =================== POSIX specification: 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, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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: glibc when used with ‘_FORTIFY_SOURCE >= 2’ (set by default on Ubuntu), macOS 11.1, HP-UX 11, 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.1, NetBSD 9.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. • 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.1224 ‘vsprintf’ ================== POSIX specification: 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, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14. • 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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 9.0, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, 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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, IRIX 6.5, 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, IRIX 6.5, Solaris 9, Cygwin 1.5.x, mingw, 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), macOS 11.1, MSVC 14. • This function does not support the ‘ls’ directive on some platforms: OpenBSD 4.0, IRIX 6.5, 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 13.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, IRIX 6.5, Solaris 11.4, Cygwin 1.5.x, mingw, MSVC/clang. • 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: glibc 2.35, FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2, Solaris 11.4, and others. • This function can crash in out-of-memory conditions on some platforms: FreeBSD 13.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.1, NetBSD 9.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. • 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.1225 ‘vsscanf’ ================= POSIX specification: LSB specification: 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.1226 ‘vswprintf’ =================== POSIX specification: 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, IRIX 6.5, 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.1, NetBSD 9.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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14. • 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.1227 ‘vswscanf’ ================== POSIX specification: LSB specification: 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, IRIX 6.5, 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.1228 ‘vwprintf’ ================== POSIX specification: 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, IRIX 6.5, 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.1, NetBSD 9.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.1, NetBSD 9.0, OpenBSD 7.2, AIX 7.2, HP-UX 11, Solaris 11.4, Cygwin 2.9.0, mingw, MSVC 14. • 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.1229 ‘vwscanf’ ================= POSIX specification: LSB specification: 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, IRIX 6.5, 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.1230 ‘wait’ ============== POSIX specification: Gnulib module: — Portability problems fixed by Gnulib: Portability problems not fixed by Gnulib: • This function is missing on some platforms: mingw, MSVC 14. 10.1231 ‘waitid’ ================ POSIX specification: 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.1232 ‘waitpid’ ================= POSIX specification: LSB specification: 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.1233 ‘wcpcpy’ ================ POSIX specification: Gnulib module: wcpcpy Portability problems fixed by Gnulib: • This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, IRIX 6.5, 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.1234 ‘wcpncpy’ ================= POSIX specification: Gnulib module: wcpncpy Portability problems fixed by Gnulib: • This function is missing on some platforms: Mac OS X 10.5, FreeBSD 6.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, HP-UX 11, IRIX 6.5, 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.1235 ‘wcrtomb’ ================= POSIX specification: Gnulib module: wcrtomb Portability problems fixed by Gnulib: • This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, 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.1236 ‘wcscasecmp’ ==================== POSIX specification: 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, IRIX 6.5, 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.1237 ‘wcscasecmp_l’ ====================== POSIX specification: 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 13.0, NetBSD 5.0, OpenBSD 6.0, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, 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.1238 ‘wcscat’ ================ POSIX specification: 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.1239 ‘wcschr’ ================ POSIX specification: 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.1240 ‘wcscmp’ ================ POSIX specification: 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 9.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.1241 ‘wcscoll’ ================= POSIX specification: 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.1242 ‘wcscoll_l’ =================== POSIX specification: 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, IRIX 6.5, 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.1243 ‘wcscpy’ ================ POSIX specification: Gnulib module: wcscpy Portability problems fixed by Gnulib: Portability pro