|
cfg_subsys_defaults_all(3)
Contents
|
cfg_subsys_defaults_all - determine the /etc/sysconfigtab
value for all attributes of a subsystem
#include <cfg.h>
cfg_status_t cfg_subsys_defaults_all(
cfg_handle_t *handle,
caddr_t subsys,
cfg_attr_t **attributes,
int *nattributes );
Configuration Management Library (libcfg.a)
Structure identifying the means of communications between
your application 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
information 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 information has been returned.
Use the cfg_subsys_defaults_all() routine to get the value
of all attributes of a subsystem as specified in the
/etc/sysconfigtab database. For information about the
/etc/sysconfigtab database, see sysconfigtab(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 application 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 information
about this structure, see libcfg(3).
The following list describes the information returned to
your application 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/sysconfigtab 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 application 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.
Upon successful completion, cfg_subsys_defaults_all()
returns CFG_SUCCESS. Other return values indicate that an
error has occurred. For information about handling return
values from routines in the configuration management
library, see libcfg(3).
The following example illustrates the use of the cfg_subsys_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 database. 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_subsys_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.
Commands: cfgmgr(8), sysconfig(8)
Routines: cfg_connect(3), cfg_subsys_defaults(3),
libcfg(3)
Files: sysconfigtab(4)
cfg_subsys_defaults_all(3)
[ Back ] |