Copyright (C) 2000-2012 |
GNU Info (libc.info)String ParametersString-Valued Parameters ======================== POSIX.2 defines a way to get string-valued parameters from the operating system with the function `confstr': - Function: size_t confstr (int PARAMETER, char *BUF, size_t LEN) This function reads the value of a string-valued system parameter, storing the string into LEN bytes of memory space starting at BUF. The PARAMETER argument should be one of the `_CS_' symbols listed below. The normal return value from `confstr' is the length of the string value that you asked for. If you supply a null pointer for BUF, then `confstr' does not try to store the string; it just returns its length. A value of `0' indicates an error. If the string you asked for is too long for the buffer (that is, longer than `LEN - 1'), then `confstr' stores just that much (leaving room for the terminating null character). You can tell that this has happened because `confstr' returns a value greater than or equal to LEN. The following `errno' error conditions are defined for this function: `EINVAL' The value of the PARAMETER is invalid. Currently there is just one parameter you can read with `confstr': `_CS_PATH' This parameter's value is the recommended default path for searching for executable files. This is the path that a user has by default just after logging in. `_CS_LFS_CFLAGS' The returned string specifies which additional flags must be given to the C compiler if a source is compiled using the `_LARGEFILE_SOURCE' feature select macro; Note: Feature Test Macros. `_CS_LFS_LDFLAGS' The returned string specifies which additional flags must be given to the linker if a source is compiled using the `_LARGEFILE_SOURCE' feature select macro; Note: Feature Test Macros. `_CS_LFS_LIBS' The returned string specifies which additional libraries must be linked to the application if a source is compiled using the `_LARGEFILE_SOURCE' feature select macro; Note: Feature Test Macros. `_CS_LFS_LINTFLAGS' The returned string specifies which additional flags must be given to the lint tool if a source is compiled using the `_LARGEFILE_SOURCE' feature select macro; Note: Feature Test Macros. `_CS_LFS64_CFLAGS' The returned string specifies which additional flags must be given to the C compiler if a source is compiled using the `_LARGEFILE64_SOURCE' feature select macro; Note: Feature Test Macros. `_CS_LFS64_LDFLAGS' The returned string specifies which additional flags must be given to the linker if a source is compiled using the `_LARGEFILE64_SOURCE' feature select macro; Note: Feature Test Macros. `_CS_LFS64_LIBS' The returned string specifies which additional libraries must be linked to the application if a source is compiled using the `_LARGEFILE64_SOURCE' feature select macro; Note: Feature Test Macros. `_CS_LFS64_LINTFLAGS' The returned string specifies which additional flags must be given to the lint tool if a source is compiled using the `_LARGEFILE64_SOURCE' feature select macro; Note: Feature Test Macros. The way to use `confstr' without any arbitrary limit on string size is to call it twice: first call it to get the length, allocate the buffer accordingly, and then call `confstr' again to fill the buffer, like this: char * get_default_path (void) { size_t len = confstr (_CS_PATH, NULL, 0); char *buffer = (char *) xmalloc (len); if (confstr (_CS_PATH, buf, len + 1) == 0) { free (buffer); return NULL; } return buffer; } automatically generated by info2www version 1.2.2.9 |