![]() |
![]() |
![]() |
Get configuration-defined string values
#include <unistd.h> size_t confstr( int name, char * buf, size_t len );
libc
The confstr() functions lets applications get or set configuration-defined string values. This is similar to the sysconf() function, but is used where string values, rather than numeric values are returned. By default, the function queries and returns values in the system.
The name argument represents the system variable to query. The values are defined in <confname.h>; at least the following name values are valid:
Value | Description |
---|---|
_CS_ARCHITECTURE | The name of the instruction set architecture for this node's CPU(s). |
_CS_DOMAIN | The domain name. |
_CS_HOSTNAME | The name of this node in the network. |
_CS_HW_PROVIDER | The name of the hardware manufacturer. |
_CS_HW_SERIAL | Serial number associated with the hardware. |
_CS_LIBPATH | A value similar to the LD_LIBRARY_PATH environment variable that finds all standard libraries. |
_CS_MACHINE | This node's hardware type. |
_CS_PATH | A value similar to the PATH environment variable that finds all standard utilities. |
_CS_RELEASE | The current QNX OS release level. |
_CS_RESOLVE | The contents of the resolv.conf file excluding the domain name. |
_CS_SRPC_DOMAIN | The secure RPC domain. |
_CS_SYSNAME | The operating system name. |
_CS_TIMEZONE | Timezone string (TZ style) |
_CS_VERSION | The current QNX OS version number. |
The configuration-defined value is returned in the buffer pointed to by buf, and will be <= len bytes long, including the terminating NULL.
To find out the length of a configuration-defined value, call confstr() with buf set to NULL and len set to 0.
To set a configuration value:
A nonzero value (if a "get" is done, the value is the length of the configuration-defined value), or 0 if an error occurs (errno is set).
You can compare the confstr() return value against len to see if the configuration-defined value was truncated when retrieving a value, (this can't be done when setting a value).
Print information similar to that returned by the uname() function:
#include <unistd.h> #include <stdio.h> #include <limits.h> #define BUFF_SIZE (256 + 1) int main( void ) { char buff[BUFF_SIZE]; if( confstr( _CS_SYSNAME, buff, BUFF_SIZE ) > 0 ) { printf( "System name: %s\n", buff ); } if( confstr( _CS_HOSTNAME, buff, BUFF_SIZE ) > 0 ) { printf( "Host name: %s\n", buff ); } if( confstr( _CS_RELEASE, buff, BUFF_SIZE ) > 0 ) { printf( "Release: %s\n", buff ); } if( confstr( _CS_VERSION, buff, BUFF_SIZE ) > 0 ) { printf( "Version: %s\n", buff ); } if( confstr( _CS_MACHINE, buff, BUFF_SIZE ) > 0 ) { printf( "Machine: %s\n", buff ); } if( confstr( _CS_SET | _CS_HOSTNAME, "myhostname", 0 ) != 0 ) { printf( "Hostname set to: %s\n", "myhostname" ); } return 0; }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | Yes |
Signal handler | Yes |
Thread | Yes |
The confstr() function is part of a draft standard; its interface and/or behavior may change in the future.
![]() |
![]() |
![]() |