confstr

NAME

confstr - get configuration dependent string variables

SYNOPSIS

#define _POSIX_C_SOURCE 2
or
#define _XOPEN_SOURCE

#include <unistd.h> I size_t confstr(int name , char * buf , size_t len );

DESCRIPTION

R confstr () gets the value of configuration-dependent string variables.
The name argument is the system variable to be queried. The following variables are supported:
R _CS_GNU_LIBC_VERSION (GNU C library only; since glibc 2.3.2)
A string which identifies the GNU C library version on this system (e.g, "glibc 2.3.4").
R _CS_GNU_LIBPTHREAD_VERSION (GNU C library only; since glibc 2.3.2)
A string which identifies the POSIX implementation supplied by this C library (e.g, "NPTL 2.3.4" or "linuxthreads-0.10").
_CS_PATH
A value for the PATH variable which indicates where all the POSIX.2 standard utilities can be found.
If buf is not NULL and len is not zero, R confstr () copies the value of the string to buf truncated to len - 1 characters if necessary, with a null byte ('\0') as terminator. This can be detected by comparing the return value of R confstr () against R len .
If len is zero and buf is NULL, R confstr () just returns the value as defined below.

RETURN VALUE

If name is a valid configuration variable, R confstr () returns the number of bytes (including the terminating null byte) that would be required to hold the entire value of that variable. This value may be greater than R len , which means that the value in buf is truncated. If name is a valid configuration variable, but that variable does not have a value, then R confstr () returns 0. If name does not correspond to a valid configuration variable, R confstr () returns 0, and errno is set to R EINVAL .

ERRORS

R EINVAL
If the value of name is invalid.

CONFORMING TO

POSIX.1-2001

EXAMPLE

The following code fragment determines the path where to find the POSIX.2 system utilities:
char *pathbuf;
size_t n;

n = confstr(_CS_PATH,NULL,(size_t) 0);
pathbuf = malloc(n);
if (pathbuf == NULL)
    abort();
confstr(_CS_PATH, pathbuf, n);

SEE ALSO