cfg_subsys_defaults_all(3)cfg_subsys_defaults_all(3)NAMEcfg_subsys_defaults_all - determine the /etc/sysconfigtab value for all
attributes of a subsystem
SYNOPSIS
#include <cfg.h>
cfg_status_t cfg_subsys_defaults_all(
cfg_handle_t *handle,
caddr_t subsys,
cfg_attr_t **attributes,
int *nattributes );
LIBRARY
Configuration Management Library (libcfg.a)
PARAMETERS
Structure identifying the means of communications between your applica‐
tion and the configuration management server. For local requests, pass
NULL in this parameter. For remote requests, pass the value returned
from the cfg_connect() routine. Specifies the name of the subsystem
for which you are getting default attribute values. Returns informa‐
tion about all attributes for the named subsystem. The information
includes the attribute-specific status of the query operation and the
default value of the attribute. The system allocates memory for this
array, which you should free when the information in the array is no
longer needed. Specifies the number of attributes for which informa‐
tion has been returned.
DESCRIPTION
Use the cfg_subsys_defaults_all() routine to get the value of all
attributes of a subsystem as specified in the /etc/sysconfigtab data‐
base. For information about the /etc/sysconfigtab database, see syscon‐
figtab(4).
In the call to the cfg_subsys_defaults_all() routine, your application
passes the name of the subsystem for which you want information. The
system reads the subsystem name and finds and collects the information
about its attributes. That information is then returned to your appli‐
cation in a buffer allocated by the cfg_subsys_defaults_all() routine.
(You should free the allocated buffer space when it is no longer
needed, as shown in the EXAMPLES section.)
The information returned from the cfg_subsys_defaults_all() routine is
passed in a structure of type cfg_attr_t. For subsystems with more
than one attribute, an array of structures is returned. For informa‐
tion about this structure, see libcfg(3).
The following list describes the information returned to your applica‐
tion when it calls the cfg_subsys_defaults_all() routine: Attributes
can be integer, string, or binary data. However, the system is unable
to determine the data type of attributes by reading the /etc/syscon‐
figtab database. Therefore, this field returns the CFG_ATTR_STRTYPE
data type for all attributes. The definition of each attribute in the
subsystem attribute table determines what operations you can perform on
the attribute. The system is unable to determine this information from
the /etc/sysconfigtab database, so this field is NULL on return from
the cfg_subsys_defaults_all() routine. During the processing of a
cfg_subsys_defaults_all() routine, the system assigns each attribute a
status. The following table describes the status values your applica‐
tion might receive on return from this routine:
────────────────────────────────────────────────────────────────────────
Status Code Meaning
────────────────────────────────────────────────────────────────────────
CFG_ATTR_SUC‐ Successful operation
CESS
CFG_ATTR_EEX‐ No attribute by that name exists
ISTS
CFG_ATTR_EOP Attribute does not support the query operation
CFG_ATTR_ESUB‐ Subsystem failure (code within the subsystem returned
SYS an error)
CFG_ATTR_EIN‐ The index for an indexed attribute is out of range
DEX
CFG_ATTR_EMEM Unable to allocate memory to return the attribute
value
────────────────────────────────────────────────────────────────────────
The value of each attribute is returned in a structure, which
contains a string representing the value of the attribute as it
is defined in the /etc/sysconfigtab database. If an attribute is
omitted from the database, the cfg_subsys_defaults_all() routine
returns a NULL attribute value.
The cfg_subsys_defaults_all() routine returns NULL for other
fields in the attribute value structure.
RETURN VALUES
Upon successful completion, cfg_subsys_defaults_all() returns CFG_SUC‐
CESS. Other return values indicate that an error has occurred. For
information about handling return values from routines in the configu‐
ration management library, see libcfg(3).
EXAMPLES
The following example illustrates the use of the cfg_sub‐
sys_defaults_all() library routine:
cfg_attr_t *attributes; cfg_status_t retval;
cfg_handle_t handle; int nattributes;
int i;
/**********************************************************/ /* Call
the cfg_subsys_defaults_all routine */
retval = cfg_subsys_defaults_all(&handle, "vfs",
&attributes, &nattributes);
if (retval != CFG_SUCCESS)
print_error (retval);
else {
/* Use data returned from the request */
for (i=0; i<nattributes; i++) {
printf ("%s", attributes[i].name);
if (attributes[i].status != CFG_ATTR_SUCCESS) {
switch (attributes[i].status){
case CFG_ATTR_EMEM:
printf(
"Unable to allocate memory to return attribute
value\n");
break;
default:
printf("unknown error\n");
break;
}
continue;
}
printf ("%s\n", attributes[i].attr.str.val);
}
/* Free the memory allocated by the configuration management */
/* library */
free(attributes); }
In this example, the application queries the values of all attributes
of the vfs subsystem as they are defined in the /etc/sysconfigtab data‐
base. When the cfg_subsys_defaults_all() routine returns information
about those attributes, the application tests the return status of the
routine. The application reports any errors returned. If cfg_sub‐
sys_defaults_all() returns CFG_SUCCESS, the status for each attribute
is tested and any errors are reported. The application displays the
default value of attributes that return CFG_ATTR_SUCCESS.
SEE ALSO
Commands: cfgmgr(8), sysconfig(8)
Routines: cfg_connect(3), cfg_subsys_defaults(3), libcfg(3)
Files: sysconfigtab(4)cfg_subsys_defaults_all(3)