GNU Gnulib

Table of Contents

Next: , Up: (dir)   [Contents][Index]

GNU Gnulib

This manual is for GNU Gnulib (updated 2017-05-03 05:43:19), which is a library of common routines intended to be shared at the source level.

Copyright © 2004–2017 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”.


Next: , Previous: , Up: Top   [Contents][Index]

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:


Next: , Up: Brief Overview   [Contents][Index]

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

Next: , Previous: , Up: Brief Overview   [Contents][Index]

1.2 Git Checkout

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

$ git clone git://git.sv.gnu.org/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 http://savannah.gnu.org/projects/gnulib. Then, instead of the URL git://git.sv.gnu.org/gnulib, use the URL ‘ssh://user@git.sv.gnu.org/srv/git/gnulib’ where user is your login name on savannah.gnu.org.

git resources:

Overview:

http://en.wikipedia.org/wiki/Git_(software)

Homepage:

http://git-scm.com/

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


Next: , Previous: , Up: Brief Overview   [Contents][Index]

1.3 Keeping Up-to-date

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

Subscribing to the bug-gnulib@gnu.org mailing list will help you to plan when to update your local copy of Gnulib (which you use to maintain your software) from git. You can review the archives, subscribe, etc., via https://lists.gnu.org/mailman/listinfo/bug-gnulib.

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


Next: , Previous: , Up: Brief Overview   [Contents][Index]

1.4 Contributing to Gnulib

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

If you have a piece of code that you would like to contribute, please email bug-gnulib@gnu.org.

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

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


Next: , Up: Contributing to Gnulib   [Contents][Index]

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.


Next: , Previous: , Up: Contributing to Gnulib   [Contents][Index]

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.


Previous: , Up: Contributing to Gnulib   [Contents][Index]

1.4.3 How to add a new module

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:


Next: , Previous: , Up: Brief Overview   [Contents][Index]

1.5 Portability guidelines

Gnulib code is intended to be portable to a wide variety of platforms, not just GNU platforms. Gnulib typically attempts to support a platform as long as it is still supported by its provider, even if the platform is not the latest version. See 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.


Next: , Up: Portability guidelines   [Contents][Index]

1.5.1 C language versions

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

Because of the freestanding C99 assumption, Gnulib code can include <float.h>, <limits.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, and <stdint.h> unconditionally. Gnulib code can also assume the existence of <ctype.h>, <errno.h>, <fcntl.h>, <locale.h>, <signal.h>, <stdio.h>, <stdlib.h>, <string.h>, and <time.h>. Similarly, many modules include <sys/types.h> even though it’s not even in C11; that’s OK since <sys/types.h> has been around nearly forever.

Even if the include files exist, they may not conform to the C standard. However, GCC has a fixincludes script that attempts to fix most 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.


Next: , Previous: , Up: Portability guidelines   [Contents][Index]

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:


Next: , Previous: , Up: Portability guidelines   [Contents][Index]

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.


Previous: , Up: Portability guidelines   [Contents][Index]

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 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:

The above assumptions are not required by the C or POSIX standards but hold on all practical porting targets that we’re familiar with. If you have a porting target where these assumptions are not true, we’d appreciate hearing of any fixes. We need fixes that do not increase runtime overhead on standard hosts and that are relatively easy to maintain.


Previous: , Up: Brief Overview   [Contents][Index]

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. All experimental work should be done on branches to help promote this.


Next: , Previous: , Up: Top   [Contents][Index]

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.


Next: , Up: Philosophy   [Contents][Index]

2.1 Benefits of using Gnulib

Gnulib is useful to enhance various aspects of a package:


Next: , Previous: , Up: Philosophy   [Contents][Index]

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.


Next: , Previous: , Up: Philosophy   [Contents][Index]

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.


Next: , Previous: , Up: Philosophy   [Contents][Index]

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.

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

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.

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.


Next: , Previous: , Up: Philosophy   [Contents][Index]

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:

    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.


Next: , Previous: , Up: Philosophy   [Contents][Index]

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 stdbool.h or 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.

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.


Next: , Previous: , Up: Philosophy   [Contents][Index]

2.7 Collaborative Development

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

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

All patches should be posted 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.


Next: , Previous: , Up: Philosophy   [Contents][Index]

2.8 Copyright

Most modules are under the GPL. Some, mostly modules which can reasonably be used in libraries, are under LGPL. The source files always say "GPL", but the real license specification is in the module description file. 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).

More precisely, the license specification in the module description file applies to the files in lib/ and build-aux/. 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 included in the section entitled “GNU Free Documentation License”.

If you want to use some Gnulib modules under LGPL, you can do so by passing the option ‘--lgpl’ to gnulib-tool. This will replace the GPL header with an LGPL header while copying the source files to your package. 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 for a "License: LGPL" information in the corresponding module description.


Next: , Previous: , Up: Philosophy   [Contents][Index]

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. Gnulib is available in two qualities:

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


Previous: , Up: Philosophy   [Contents][Index]

2.10 Openness

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

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

  1. locally patch or override files in Gnulib,
  2. locally add modules that are treated like Gnulib modules by gnulib-tool.

This is achieved by the ‘--local-dir’ option of gnulib-tool (see Extending Gnulib).


Next: , Previous: , Up: Top   [Contents][Index]

3 Invoking gnulib-tool

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

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

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

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


Next: , Up: Invoking gnulib-tool   [Contents][Index]

3.1 Finding modules

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


Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

3.2 Initial import

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

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

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

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

~/src/libfoo$ gnulib-tool --import strdup
Module list with included dependencies:
  absolute-header
  extensions
  strdup
  string
File list:
  lib/dummy.c
  lib/strdup.c
  lib/string.in.h
  m4/absolute-header.m4
  m4/extensions.m4
  m4/gnulib-common.m4
  m4/strdup.m4
  m4/string_h.m4
Creating directory ./lib
Creating directory ./m4
Copying file lib/dummy.c
Copying file lib/strdup.c
Copying file lib/string.in.h
Copying file m4/absolute-header.m4
Copying file m4/extensions.m4
Copying file m4/gnulib-common.m4
Copying file m4/gnulib-tool.m4
Copying file m4/strdup.m4
Copying file m4/string_h.m4
Creating lib/Makefile.am
Creating m4/gnulib-cache.m4
Creating m4/gnulib-comp.m4
Finished.

You may need to add #include directives for the following .h files.
  #include <string.h>

Don't forget to
  - add "lib/Makefile" to AC_CONFIG_FILES in ./configure.ac,
  - mention "lib" in SUBDIRS in Makefile.am,
  - mention "-I m4" in ACLOCAL_AMFLAGS in Makefile.am,
  - 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 pre-existing 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
...

If you are using AC_PROG_CC_STDC, the macro gl_EARLY must be called after it, like this:

...
AC_PROG_CC
AC_PROG_CC_STDC
gl_EARLY
...

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

...
# For gnulib.
gl_INIT
...

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

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

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

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

SUBDIRS = lib

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

SUBDIRS += lib

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

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

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

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

Finally, note that you cannot use AC_LIBOBJ or AC_REPLACE_FUNCS in your configure.ac and expect the resulting object files to be automatically added to lib/libgnu.a. This is because your AC_LIBOBJ and AC_REPLACE_FUNCS invocations from configure.ac augment a variable @LIBOBJS@ (and/or @LTLIBOBJS@ if using Libtool), whereas lib/libgnu.a is built from the contents of a different variable, usually @gl_LIBOBJS@ (or @gl_LTLIBOBJS@ if using Libtool).


Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

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.


Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

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.


Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

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

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


Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

3.6 Using Gnulib for both a library and a binary

Your project might build both a library and some accompanying binaries in the same source tree. In that case you might want to use different modules for the library than for the binaries. Typically the binaries 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 binaries 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

Integration with your code is basically the same as outlined in 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 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 binary you will have to add something along the lines of to the following:

...
AM_CPPFLAGS = -I$(top_srcdir)/src/gnulib -I$(top_builddir)/src/gnulib
...
LIBADD = $(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.


Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

3.7 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 http://ftp.gnu.org/gnu/gettext/. For an older Gnulib snapshot, it is the release that was the most recent release at the time the Gnulib snapshot was taken.
  2. After running gettextize, invoke gnulib-tool and import the gettext module. Also, copy the latest version of gnulib’s build-aux/po/Makefile.in.in to your po/ directory (this is done for you if you use gnulib’s bootstrap 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 bootstrap 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
    

Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

3.8 Handling Gnulib’s own message translations

Gnulib provides some functions that emit translatable messages using GNU gettext. The ‘gnulib’ domain at the Translation Project 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.


Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

3.9 Issues 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 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:

    Gnulib includes the file build-aux/bootstrap to aid a developer in using this setup. Furthermore, in projects that use git for version control, it is possible to use a git submodule containing the precise commit of the gnulib repository, so that each developer running bootstrap will get the same version of all gnulib-provided files. 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:

    $ dir=.gnulib
    $ git submodule add -- git://git.sv.gnu.org/gnulib.git $dir
    $ git config alias.syncsub "submodule foreach git pull origin master"
    

    Thereafter, bootstrap can run this command to update the submodule to the recorded checkout level:

    git submodule update --init $dir
    

    and a developer can use this sequence to update to a newer version of gnulib:

    $ git syncsub
    $ git add $dir
    $ ./bootstrap
    
  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.

Next: , Previous: , Up: Invoking gnulib-tool   [Contents][Index]

3.10 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.


Previous: , Up: Invoking gnulib-tool   [Contents][Index]

3.11 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.


Next: , Previous: , Up: Top   [Contents][Index]

4 Writing modules

This chapter explains how to write modules of your own, either to extend Gnulib for your own package (see 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.


Next: , Up: Writing modules   [Contents][Index]

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).


Next: , Previous: , Up: Writing modules   [Contents][Index]

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, OSF/1, IRIX). For this reason, it is recommended to place the #include before the extern "C" block.


Next: , Previous: , Up: Writing modules   [Contents][Index]

4.3 Implementation files

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

Include ordering

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

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

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

In summary:


Next: , Previous: , Up: Writing modules   [Contents][Index]

4.4 Specification

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

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

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 2010), half of gnulib uses the first practice, nearly half of gnulib uses the second practice, and a small minority uses the texinfo practice.


Next: , Previous: , Up: Writing modules   [Contents][Index]

4.5 Module description

For the module description, you can start from an existing module’s description, or from a blank one: module/TEMPLATE for a normal module, or module/TEMPLATE-TESTS for a unit test module. Some more fields are possible but rarely used. Use module/TEMPLATE-EXTENDED if you want to use one of them.

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

Description

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

Status

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

Notice

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

Applicability

This field is either empty/absent, or contains the word ‘all’. It describes to which Makefile.am the module is applied. By default, a normal module is applied to source_base/Makefile.am (normally lib/Makefile.am), whereas a module ending in -tests is applied to tests_base/Makefile.am (normally tests/Makefile.am). If this field is ‘all’, it is applied to both Makefile.ams. This is useful for modules which provide Makefile.am macros rather than compiled source code.

Files

This field contains a newline separated list of the files that are part of the module. gnulib-tool copies these files into the package that uses the module.

This list is typically ordered by importance: First comes the header file, then the implementation files, then other files.

It is possible to have the same file mentioned in multiple modules. That is, if the maintainers of that module agree on the purpose and future of said file.

Depends-on

This field contains a newline separated list of the modules that are required for the proper working of this module. gnulib-tool includes each required module automatically, unless it is specified with option --avoid or it is marked as obsolete and the option --with-obsolete is not given.

A test modules foo-tests implicitly depends on the corresponding non-test module foo. foo implicitly depends on foo-tests if the latter exists and if the option --with-tests has been given.

Tests modules can depend on non-tests modules. Non-tests modules should not depend on tests modules. (Recall that tests modules are built in a separate directory.)

Each listed required module may be declared a conditional dependency. This is indicated by placing the condition for the dependency on the same line, enclosed in brackets, after the name of the required module. The condition is a shell expression that is run after the module’s configure.ac statements. For example:

strtoull   [test $ac_cv_func_strtoumax = no]

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

configure.ac-early

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

configure.ac

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

It is forbidden to add items to the CPPFLAGS variable here, other than temporarily, as these could affect the results of other Autoconf macros.

We avoid adding items to the LIBS variable, other than temporarily. Instead, the module can export an Autoconf-substituted variable that contains link options. The user of the module can then decide to which executables to apply which link options. Recall that a package can build executables of different kinds and purposes; having all executables link against all libraries is inappropriate.

If the statements in this section grow larger than a couple of lines, we recommend moving them to a .m4 file of their own.

Makefile.am

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

lib_SOURCES += foo.c
Include

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

"foo.h"
Link

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

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

This field specifies the license that governs the source code parts of this module. See Copyright for details.

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.


Next: , Previous: , Up: Writing modules   [Contents][Index]

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 using AC_LIBOBJ (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.

Next: , Previous: , Up: Writing modules   [Contents][Index]

4.7 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:

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:


Previous: , Up: Writing modules   [Contents][Index]

4.8 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.

Next: , Previous: , Up: Top   [Contents][Index]

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:

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:

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.


Next: , Previous: , Up: Top   [Contents][Index]

6 Miscellaneous Notes


Next: , Up: Miscellaneous Notes   [Contents][Index]

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.


Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

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.

Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

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.


Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

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:

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.


Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

6.5 A C++ namespace for gnulib

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

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

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

#define GNULIB_NAMESPACE gnulib

at the beginning of a compilation unit, Gnulib’s <fcntl.h> header file will make available the open function as gnulib::open. The symbol open will still refer to the system’s open function, with its platform specific bugs and limitations.

The symbols provided in the Gnulib namespace are those for which the corresponding header file contains a _GL_CXXALIAS_RPL or _GL_CXXALIAS_SYS macro invocation.

The benefits of this namespace mode are:

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.


Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

6.6 Library version handling

The module ‘check-version’ can be useful when your gnulib application is a system library. You will typically wrap the call to the check_version function through a library API, your library header file may contain:

#define STRINGPREP_VERSION "0.5.18"
...
  extern const char *stringprep_check_version (const char *req_version);

To avoid ELF symbol collisions with other libraries that use the ‘check-version’ module, add to config.h through a AC_DEFINE something like:

AC_DEFINE(check_version, stringprep_check_version,
          [Rename check_version.])

The stringprep_check_version function will thus be implemented by the check_version module.

There are two uses of the interface. The first is a way to provide for applications to find out the version number of the library it uses. The application may contain diagnostic code such as:

  printf ("Stringprep version: header %s library %s",
          STRINGPREP_VERSION,
          stringprep_check_version (NULL));

Separating the library and header file version can be useful when searching for version mismatch related problems.

The second uses is as a rudimentary test of proper library version, by making sure the application get a library version that is the same, or newer, than the header file used when building the application. This doesn’t catch all problems, libraries may change backwards incompatibly in later versions, but enable applications to require a certain minimum version before it may proceed.

Typical uses look like:

       /* Check version of libgcrypt. */
       if (!gcry_check_version (GCRYPT_VERSION))
         die ("version mismatch\n");

Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

6.7 Windows sockets

There are several issues when building applications that should work under Windows. The most problematic part is for applications that use sockets.

Hopefully, we can add helpful notes to this section that will help you port your application to Windows using gnulib.

6.7.1 Getaddrinfo and WINVER

This was written for the getaddrinfo module, but may be applicable to other functions too.

The getaddrinfo function exists in ws2tcpip.h and -lws2_32 on Windows XP. The function declaration is present if WINVER >= 0x0501. Windows 2000 does not have getaddrinfo in its WS2_32.DLL.

Thus, if you want to assume Windows XP or later, you can add AC_DEFINE(WINVER, 0x0501) to avoid compiling the (partial) getaddrinfo implementation.

If you want to support Windows 2000, don’t do anything. The replacement function will open WS2_32.DLL during run-time to see if there is a getaddrinfo function available, and use it when available.


Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

6.8 Libtool and Windows

If you want it to be possible to cross-compile your program to MinGW and you use Libtool, you need to use the win32-dll option of LT_INIT. In other words, put:

LT_INIT([win32-dll])

in your configure.ac. This sets the correct names for the OBJDUMP, DLLTOOL, and AS tools for the build.

If you are building a library, you will also need to pass -no-undefined to make sure Libtool produces a DLL for your library. From a Makefile.am:

libgsasl_la_LDFLAGS += -no-undefined

Next: , Previous: , Up: Miscellaneous Notes   [Contents][Index]

6.9 License Texinfo sources

Gnulib provides copies of the GNU GPL, GNU LGPL, and GNU FDL licenses in Texinfo form. (The master location is http://www.gnu.org/licenses/). These Texinfo documents do not have any node names and structures built into them; for your manual, you should @include them in an appropriate @node.

The conventional name for the GPL node is ‘Copying’ and for the FDL ‘GNU Free Documentation License’. The LGPL doesn’t seem to have a conventional node name.

Of course the license texts themselves should not be changed at all.


Previous: , Up: Miscellaneous Notes   [Contents][Index]

6.10 Build robot for gnulib

To simplify testing on a wide set of platforms, gnulib is built on many platforms every day and the results are uploaded to:

http://autobuild.josefsson.org/gnulib/

If you wish to help the gnulib development effort with build logs for your favorite platform, you may perform these steps:

  1. 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.

  2. 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.

  3. 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.

  4. Submit build logs

    Submit each log file to Simon’s site, either through a

    mail `echo gnulib__at__autobuild.josefsson.org | sed -e s/__at__/@/`
    

    or through netcat

    autobuild-submit logs/*
    

Next: , Previous: , Up: Top   [Contents][Index]

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).


Next: , Previous: , Up: Top   [Contents][Index]

8 ISO C and POSIX Header File Substitutes

This chapter describes which header files specified by ISO C or POSIX are substituted by Gnulib, which portability pitfalls are fixed by Gnulib, and which (known) portability problems are not worked around by Gnulib.

The notation “Gnulib module: —” means that Gnulib does not provide a module providing a substitute for the header file. When the list “Portability problems not fixed by Gnulib” is empty, such a module is not needed: No portability problems are known. Otherwise, it indicates that such a module would be useful but is not available: No one so far found this header file important enough to contribute a substitute for it. If you need this particular header file, you may write to <bug-gnulib at gnu dot org>.


Next: , Up: Header File Substitutes   [Contents][Index]

8.1 aio.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/aio.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.2 arpa/inet.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/arpa_inet.h.html

Gnulib module: arpa_inet

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.3 assert.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/assert.h.html

Gnulib module: assert-h

See also the Gnulib module assert.

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.4 complex.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/complex.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.5 cpio.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/cpio.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.6 ctype.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/ctype.h.html

Gnulib module: ctype

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.7 dirent.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/dirent.h.html

Gnulib module: dirent

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.8 dlfcn.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/dlfcn.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.9 errno.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html

Gnulib module: errno

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.10 fcntl.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html

Gnulib module: fcntl-h

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.11 fenv.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/fenv.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.12 float.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/float.h.html

Gnulib module: float

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.13 fmtmsg.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/fmtmsg.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.14 fnmatch.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/fnmatch.h.html

Gnulib module: fnmatch-posix or fnmatch-gnu

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.15 ftw.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/ftw.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.16 glob.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/glob.h.html

Gnulib module: glob

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.17 grp.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/grp.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.18 iconv.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/iconv.h.html

Gnulib module: iconv

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.19 inttypes.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html

Gnulib module: inttypes

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.20 iso646.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/iso646.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.21 langinfo.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html

Gnulib module: langinfo

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.22 libgen.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/libgen.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

The Gnulib module dirname provides similar API, with functions base_name and dir_name that also work with Windows file names.


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.23 limits.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html

Gnulib module: gethostname

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

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.


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.24 locale.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/locale.h.html

Gnulib module: locale

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.25 math.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html

Gnulib module: math

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.26 monetary.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/monetary.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.27 mqueue.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.28 ndbm.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/ndbm.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.29 net/if.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/net_if.h.html

Gnulib module: net_if

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.30 netdb.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html

Gnulib module: netdb

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.31 netinet/in.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html

Gnulib module: netinet_in

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.32 netinet/tcp.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.33 nl_types.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/nl_types.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.34 poll.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html

Gnulib module: poll-h

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.35 pthread.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html

Gnulib module: pthread

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.36 pwd.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/pwd.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.37 regex.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/regex.h.html

Gnulib module: regex

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.38 sched.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sched.h.html

Gnulib module: sched

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.39 search.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/search.h.html

Gnulib module: search

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.40 semaphore.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/semaphore.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.41 setjmp.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/setjmp.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.42 signal.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html

Gnulib module: signal-h

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.43 spawn.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/spawn.h.html

Gnulib module: spawn

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.44 stdalign.h

POSIX specification:
Not in POSIX yet, but we expect it will be. ISO C11 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) sections 6.5.3.4, 6.7.5, 7.15. C++11 (latest free draft http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf) section 18.10.

Gnulib module: stdalign

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.45 stdarg.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stdarg.h.html

Gnulib module: stdarg

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.46 stdbool.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stdbool.h.html

Gnulib module: stdbool

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.47 stddef.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html

Gnulib module: stddef

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.48 stdint.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html

Gnulib module: stdint

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

The stdint.h module uses #include_next. If you wish to install the generated stdint.h file under another name, typically in order to be able to use some of the types defined by stdint.h in your public header file, you could use the following Makefile.am-snippet:


BUILT_SOURCES += idn-int.h
DISTCLEANFILES += idn-int.h
nodist_include_HEADERS += idn-int.h

idn-int.h:
	if test -n "$(STDINT_H)"; then \
		sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \
	else \
		echo '#include <stdint.h>' > idn-int.h; \
	fi

Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.49 stdio.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stdio.h.html

Gnulib module: stdio

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.50 stdlib.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stdlib.h.html

Gnulib module: stdlib, system-posix

Portability problems fixed by the Gnulib module stdlib:

Portability problems fixed by the Gnulib module system-posix:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.51 stdnoreturn.h

POSIX specification:
Not in POSIX yet, but we expect it will be. ISO C11 (latest free draft http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf) sections 7.23.

Gnulib module: stdnoreturn

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.52 string.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/string.h.html

Gnulib module: string

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.53 strings.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/strings.h.html

Gnulib module: strings

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.54 stropts.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/stropts.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.55 sys/ipc.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_ipc.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.56 sys/mman.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_mman.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.57 sys/msg.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_msg.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.58 sys/resource.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_resource.h.html

Gnulib module: sys_resource

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.59 sys/select.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_select.h.html

Gnulib module: sys_select

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.60 sys/sem.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_sem.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.61 sys/shm.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_shm.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.62 sys/socket.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html

Gnulib module: sys_socket

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.63 sys/stat.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html

Gnulib module: sys_stat

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.64 sys/statvfs.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_statvfs.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.65 sys/time.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_time.h.html

Gnulib module: sys_time

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.66 sys/timeb.h

POSIX specification:
http://www.opengroup.org/susv3xbd/sys/timeb.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.67 sys/times.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_times.h.html

Gnulib module: sys_times

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.68 sys/types.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html

Gnulib module: sys_types

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

This module, together with the module largefile, also defines the type off_t to a 64-bit integer type on some platforms: mingw (except mingw64), MSVC 9.


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.69 sys/uio.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_uio.h.html

Gnulib module: sys_uio

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.70 sys/un.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_un.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.71 sys/utsname.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_utsname.h.html

Gnulib module: sys_utsname

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.72 sys/wait.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_wait.h.html

Gnulib module: sys_wait

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.73 syslog.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/syslog.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.74 tar.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/tar.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.75 termios.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/termios.h.html

Gnulib module: termios

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.76 tgmath.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/tgmath.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.77 time.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/time.h.html

Gnulib module: time

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.78 trace.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/trace.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.79 uchar.h

Defines the types char16_t, char32_t and declares the functions mbrtoc16, c16rtomb, mbrtoc32, c32rtomb.

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.80 ucontext.h

POSIX specification:
http://www.opengroup.org/susv3xbd/ucontext.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.81 ulimit.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/ulimit.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.82 unistd.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html

Gnulib module: unistd

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.83 utime.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/utime.h.html

Gnulib module: utime-h

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.84 utmpx.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/utmpx.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.85 wchar.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html

Gnulib module: wchar

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Header File Substitutes   [Contents][Index]

8.86 wctype.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/wctype.h.html

Gnulib module: wctype-h

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Previous: , Up: Header File Substitutes   [Contents][Index]

8.87 wordexp.h

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/basedefs/wordexp.h.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Top   [Contents][Index]

9 ISO C and POSIX Function Substitutes

This chapter describes which functions and function-like macros 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 function. When the list “Portability problems not fixed by Gnulib” is empty, such a module is not needed: No portability problems are known. Otherwise, it indicates that such a module would be useful but is not available: No one so far found this function important enough to contribute a substitute for it. If you need this particular function, you may write to <bug-gnulib at gnu dot org>.


Next: , Up: Function Substitutes   [Contents][Index]

9.1 FD_CLR

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/FD_CLR.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.2 FD_ISSET

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/FD_ISSET.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.3 FD_SET

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/FD_SET.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.4 FD_ZERO

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/FD_ZERO.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.5 _Exit

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/_Exit.html

Gnulib module: _Exit

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.6 _exit

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/_exit.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.7 _longjmp

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/_longjmp.html

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).


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.8 _setjmp

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/_setjmp.html

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).


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.9 _tolower

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/_tolower.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.10 _toupper

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/_toupper.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.11 a64l

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/a64l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.12 abort

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/abort.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.13 abs

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/abs.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.14 accept

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/accept.html

Gnulib module: accept

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.15 access

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/access.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

Other problems of this function:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.16 acos

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/acos.html

Gnulib module: acos

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.17 acosf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/acosf.html

Gnulib module: acosf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.18 acosh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/acosh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.19 acoshf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/acoshf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.20 acoshl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/acoshl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.21 acosl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/acosl.html

Gnulib module: acosl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.22 aio_cancel

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/aio_cancel.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.23 aio_error

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/aio_error.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.24 aio_fsync

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/aio_fsync.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.25 aio_read

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/aio_read.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.26 aio_return

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/aio_return.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.27 aio_suspend

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/aio_suspend.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.28 aio_write

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/aio_write.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.29 alarm

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/alarm.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.30 aligned_alloc

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.31 alphasort

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/alphasort.html

Gnulib module: alphasort

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.32 asctime

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asctime.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.33 asctime_r

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asctime_r.html

Gnulib module: extensions

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.34 asin

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asin.html

Gnulib module: asin

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.35 asinf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asinf.html

Gnulib module: asinf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.36 asinh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asinh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.37 asinhf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asinhf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.38 asinhl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asinhl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.39 asinl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/asinl.html

Gnulib module: asinl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.40 assert

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/assert.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

Extension: Gnulib offers a module ‘assert’ that allows the installer to disable assertions through a ‘configure’ option: ‘--disable-assert’.


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.41 atan

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atan.html

Gnulib module: atan

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.42 atan2

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atan2.html

Gnulib module: atan2

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.43 atan2f

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atan2f.html

Gnulib module: atan2f

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.44 atan2l

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atan2l.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.45 atanf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atanf.html

Gnulib module: atanf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.46 atanh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atanh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.47 atanhf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atanhf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.48 atanhl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atanhl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.49 atanl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atanl.html

Gnulib module: atanl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.50 atexit

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atexit.html

Gnulib module: atexit

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.51 atof

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atof.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.52 atoi

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atoi.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.53 atol

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atol.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.54 atoll

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/atoll.html

Gnulib module: atoll

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.55 basename

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/basename.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

The Gnulib module dirname provides similar API, with function base_name, that also works with Windows file names.


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.56 bind

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/bind.html

Gnulib module: bind

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.57 bsearch

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/bsearch.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.58 btowc

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/btowc.html

Gnulib module: btowc

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.59 c16rtomb

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.60 c32rtomb

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.61 cabs

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cabs.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.62 cabsf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cabsf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.63 cabsl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cabsl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.64 cacos

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cacos.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.65 cacosf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cacosf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.66 cacosh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cacosh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.67 cacoshf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cacoshf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.68 cacoshl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cacoshl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.69 cacosl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cacosl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.70 calloc

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/calloc.html

Gnulib module: calloc-posix

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

Extension: Gnulib provides a module ‘calloc-gnu’ that substitutes a calloc implementation that behaves more like the glibc implementation.


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.71 carg

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/carg.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.72 cargf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cargf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.73 cargl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cargl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.74 casin

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/casin.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.75 casinf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/casinf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.76 casinh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/casinh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.77 casinhf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/casinhf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.78 casinhl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/casinhl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.79 casinl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/casinl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.80 catan

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catan.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.81 catanf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catanf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.82 catanh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catanh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.83 catanhf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catanhf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.84 catanhl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catanhl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.85 catanl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catanl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.86 catclose

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catclose.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.87 catgets

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catgets.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.88 catopen

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/catopen.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.89 cbrt

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cbrt.html

Gnulib module: cbrt

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.90 cbrtf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cbrtf.html

Gnulib module: cbrtf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.91 cbrtl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cbrtl.html

Gnulib module: cbrtl or cbrtl-ieee

Portability problems fixed by either Gnulib module cbrtl or cbrtl-ieee

Portability problems fixed by Gnulib module cbrtl-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.92 ccos

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ccos.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.93 ccosf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ccosf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.94 ccosh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ccosh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.95 ccoshf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ccoshf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.96 ccoshl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ccoshl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.97 ccosl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ccosl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.98 ceil

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ceil.html

Gnulib module: ceil or ceil-ieee

Portability problems fixed by either Gnulib module ceil or ceil-ieee:

Portability problems fixed by Gnulib module ceil-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.99 ceilf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ceilf.html

Gnulib module: ceilf or ceilf-ieee

Portability problems fixed by either Gnulib module ceilf or ceilf-ieee:

Portability problems fixed by Gnulib module ceilf-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.100 ceill

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ceill.html

Gnulib module: ceill or ceill-ieee

Portability problems fixed by either Gnulib module ceill or ceill-ieee:

Portability problems fixed by Gnulib module ceill-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.101 cexp

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cexp.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.102 cexpf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cexpf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.103 cexpl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cexpl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.104 cfgetispeed

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cfgetispeed.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.105 cfgetospeed

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cfgetospeed.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.106 cfsetispeed

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cfsetispeed.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.107 cfsetospeed

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cfsetospeed.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.108 chdir

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/chdir.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.109 chmod

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/chmod.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.110 chown

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/chown.html

Gnulib module: chown

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.111 cimag

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cimag.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.112 cimagf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cimagf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.113 cimagl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cimagl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.114 clearerr

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clearerr.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.115 clock

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clock.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.116 clock_getcpuclockid

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clock_getcpuclockid.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.117 clock_getres

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.118 clock_gettime

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clock_gettime.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.119 clock_nanosleep

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clock_nanosleep.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.120 clock_settime

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clock_settime.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.121 clog

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clog.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.122 clogf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clogf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.123 clogl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/clogl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.124 close

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/close.html

Gnulib module: close

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.125 closedir

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/closedir.html

Gnulib module: closedir

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.126 closelog

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/closelog.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.127 confstr

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/confstr.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.128 conj

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/conj.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.129 conjf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/conjf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.130 conjl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/conjl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.131 connect

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/connect.html

Gnulib module: connect

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.132 copysign

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/copysign.html

Gnulib module: copysign

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.133 copysignf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/copysignf.html

Gnulib module: copysignf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.134 copysignl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/copysignl.html

Gnulib module: copysignl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.135 cos

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cos.html

Gnulib module: cos

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.136 cosf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cosf.html

Gnulib module: cosf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.137 cosh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cosh.html

Gnulib module: cosh

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.138 coshf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/coshf.html

Gnulib module: coshf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.139 coshl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/coshl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.140 cosl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cosl.html

Gnulib module: cosl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.141 cpow

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cpow.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.142 cpowf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cpowf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.143 cpowl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cpowl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.144 cproj

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cproj.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.145 cprojf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cprojf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.146 cprojl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/cprojl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.147 creal

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/creal.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.148 crealf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/crealf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.149 creall

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/creall.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.150 creat

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/creat.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.151 crypt

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/crypt.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.152 csin

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csin.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.153 csinf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csinf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.154 csinh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csinh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.155 csinhf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csinhf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.156 csinhl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csinhl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.157 csinl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csinl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.158 csqrt

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csqrt.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.159 csqrtf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csqrtf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.160 csqrtl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/csqrtl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.161 ctan

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctan.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.162 ctanf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctanf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.163 ctanh

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctanh.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.164 ctanhf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctanhf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.165 ctanhl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctanhl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.166 ctanl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctanl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.167 ctermid

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctermid.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.168 ctime

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctime.html

Gnulib module: ctime

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

A more flexible function is strftime. However, note that it is locale dependent.


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.169 ctime_r

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ctime_r.html

Gnulib module: extensions

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

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.


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.170 daylight

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/daylight.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

A more portable way of getting the UTC offset is to use strftime with the %z format. See strftime.


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.171 dbm_clearerr

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_clearerr.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.172 dbm_close

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_close.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.173 dbm_delete

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_delete.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.174 dbm_error

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_error.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.175 dbm_fetch

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_fetch.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.176 dbm_firstkey

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_firstkey.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.177 dbm_nextkey

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_nextkey.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.178 dbm_open

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_open.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.179 dbm_store

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dbm_store.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.180 difftime

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/difftime.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.181 dirfd

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dirfd.html

Gnulib module: dirfd

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

With the dirfd module, this functions always sets errno when it fails. (POSIX does not require that dirfd sets errno when it fails.)


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.182 dirname

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dirname.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

The Gnulib module dirname provides similar API, with functions dir_name and mdir_name, that also works with Windows file names.


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.183 div

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/div.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.184 dlclose

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dlclose.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.185 dlerror

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dlerror.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.186 dlopen

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dlopen.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.187 dlsym

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dlsym.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.188 dprintf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dprintf.html

Gnulib module: dprintf or dprintf-posix

Portability problems fixed by either Gnulib module dprintf or dprintf-posix:

Portability problems fixed by Gnulib module dprintf-posix:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.189 drand48

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/drand48.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.190 dup

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dup.html

Gnulib module: dup

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.191 dup2

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/dup2.html

Gnulib module: dup2 or dup2-obsolete

Portability problems fixed by either Gnulib module dup2 or dup2-obsolete:

Portability problems fixed by Gnulib module dup2-obsolete:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.192 duplocale

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/duplocale.html

Gnulib module: duplocale

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.193 encrypt

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/encrypt.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.194 endgrent

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/endgrent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.195 endhostent

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/endhostent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.196 endnetent

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/endnetent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.197 endprotoent

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/endprotoent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.198 endpwent

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/endpwent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.199 endservent

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/endservent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.200 endutxent

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/endutxent.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.201 environ

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/environ.html

Gnulib module: environ

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.202 erand48

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/erand48.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.203 erf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/erf.html

Gnulib module: erf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.204 erfc

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/erfc.html

Gnulib module: erfc

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.205 erfcf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/erfcf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.206 erfcl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/erfcl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.207 erff

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/erff.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.208 erfl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/erfl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.209 errno

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/errno.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.210 execl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/execl.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.211 execle

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/execle.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.212 execlp

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/execlp.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.213 execv

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/execv.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.214 execve

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/execve.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.215 execvp

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/execvp.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.216 exit

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/exit.html

Gnulib module: stdlib

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.217 exp

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/exp.html

Gnulib module: exp

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.218 exp2

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/exp2.html

Gnulib module: exp2

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.219 exp2f

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/exp2f.html

Gnulib module: exp2f

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.220 exp2l

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/exp2l.html

Gnulib module: exp2l or exp2l-ieee

Portability problems fixed by either Gnulib module exp2l or exp2l-ieee:

Portability problems fixed by Gnulib module exp2l-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.221 expf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/expf.html

Gnulib module: expf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.222 expl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/expl.html

Gnulib module: expl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.223 expm1

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/expm1.html

Gnulib module: expm1 or expm1-ieee

Portability problems fixed by either Gnulib module expm1 or expm1-ieee:

Portability problems fixed by Gnulib module expm1-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.224 expm1f

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/expm1f.html

Gnulib module: expm1f

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.225 expm1l

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/expm1l.html

Gnulib module: expm1l

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.226 fabs

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fabs.html

Gnulib module: fabs

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.227 fabsf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fabsf.html

Gnulib module: fabsf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.228 fabsl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fabsl.html

Gnulib module: fabsl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.229 faccessat

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/faccessat.html

Gnulib module: faccessat

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:

Other problems of this function:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.230 fattach

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fattach.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.231 fchdir

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fchdir.html

Gnulib module: fchdir

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.232 fchmod

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fchmod.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.233 fchmodat

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fchmodat.html

Gnulib module: fchmodat

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.234 fchown

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fchown.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.235 fchownat

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fchownat.html

Gnulib module: fchownat

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.236 fclose

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fclose.html

Gnulib module: fclose

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.237 fcntl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fcntl.html

Gnulib module: fcntl

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.238 fdatasync

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html

Gnulib module: fdatasync

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.239 fdetach

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fdetach.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.240 fdim

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fdim.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.241 fdimf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fdimf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.242 fdiml

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fdiml.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.243 fdopen

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fdopen.html

Gnulib module: fdopen

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.244 fdopendir

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fdopendir.html

Gnulib module: fdopendir

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.245 feclearexcept

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/feclearexcept.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.246 fegetenv

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fegetenv.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.247 fegetexceptflag

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fegetexceptflag.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.248 fegetround

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fegetround.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.249 feholdexcept

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/feholdexcept.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.250 feof

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/feof.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.251 feraiseexcept

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/feraiseexcept.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.252 ferror

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ferror.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.253 fesetenv

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fesetenv.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.254 fesetexceptflag

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fesetexceptflag.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.255 fesetround

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fesetround.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.256 fetestexcept

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fetestexcept.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.257 feupdateenv

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/feupdateenv.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.258 fexecve

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fexecve.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.259 fflush

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fflush.html

Gnulib module: fflush

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.260 ffs

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/ffs.html

Gnulib module: ffs

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.261 fgetc

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fgetc.html

Gnulib module: stdio, nonblocking

Portability problems fixed by Gnulib module stdio, together with module nonblocking:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.262 fgetpos

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fgetpos.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.263 fgets

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fgets.html

Gnulib module: stdio, nonblocking

Portability problems fixed by Gnulib module stdio, together with module nonblocking:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.264 fgetwc

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fgetwc.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.265 fgetws

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fgetws.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.266 fileno

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fileno.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.267 flockfile

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/flockfile.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.268 floor

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/floor.html

Gnulib module: floor or floor-ieee

Portability problems fixed by either Gnulib module floor or floor-ieee:

Portability problems fixed by Gnulib module floor-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.269 floorf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/floorf.html

Gnulib module: floorf or floorf-ieee

Portability problems fixed by either Gnulib module floorf or floorf-ieee:

Portability problems fixed by Gnulib module floorf-ieee:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.270 floorl

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/floorl.html

Gnulib module: floorl or floorl-ieee

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.271 fma

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fma.html

Gnulib module: fma

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.272 fmaf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fmaf.html

Gnulib module: fmaf

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.273 fmal

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fmal.html

Gnulib module: fmal

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.274 fmax

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fmax.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not fixed by Gnulib:


Next: , Previous: , Up: Function Substitutes   [Contents][Index]

9.275 fmaxf

POSIX specification:
http://www.opengroup.org/onlinepubs/9699919799/functions/fmaxf.html

Gnulib module: —

Portability problems fixed by Gnulib:

Portability problems not