AST(3)

NAME
ast - miscellaneous libast support

SYNOPSIS
    #include <ast.h>
    char*          astconf(const char* name, const char* path, const char* value);
    long           astconf_long(arg);
    unsigned long  astconf_ulong(arg);
    Ast_confdisc_t astconfdisc(Ast_confdisc_t new_notify);
    void           astconflist(Sfio_t* stream, const char* path, int flags);
    off_t          astcopy(int rfd, int wfd, off_t n);
    int            astquery(int fd, const char* format , ...);

DESCRIPTION
is a string interface to the confstr(3), pathconf(2), and sysconf(3) calls. If value is then the configuration parameter value for name is returned. Some name configuration parameters may consult the path argument. In this case if path is then "/" is used. Otherwise if path is not then it must exist. The string return value for name remains unchanged until the next call on name. If value is then a valid string is always returned; "" is returned if name has no configuration value. This simplifies the programming interface:
    if (!strcmp(astconf("PATH_RESOLVE", NiL, NiL), "logical"))
    	/* the logical way ... */
If value is not then the configuration parameter value for name is set to value. is returned if the value cannot be set. The paradigm is:
    universe = astconf("UNIVERSE", 0, "att");
    ...
    astconf("UNIVERSE", 0, universe);
The settable configuration names are:

if symbolic links are followed during file tree traversal,
    if symbolic links are not followed during file tree traversal, and if symbolic links are followed at the top level during file tree traversal. These correspond to the generic and command options.

for Berkeley style and otherwise. This configuration parameter controls the universe setting on machines that support it (e.g., Pyramid). also controls the behavior of some commands like cat(1) and echo(1).

User defined name values may also be set and queried, but these should probably have some form of vendor prefix to avoid being stomped by future standards.

and are macros that call either sysconf or preferring sysconf if it's available. returns a signed long value while returns an unsigned long value. The argument passed to these macros may be one of the following:
    CONF_ARG_MAX
    CONF_CHILD_MAX
    CONF_CLK_TCK
    CONF_NGROUPS_MAX
    CONF_OPEN_MAX
    CONF_PAGESIZE

registers a discipline function
    int (*notify)(const char* name, const char* path, const char* value);
that is called just before the configuration parameter name is set to value relative to path. If notify returns then the configuration parameter value is not changed.

lists the current configuration names and values of stream. If path is then "/" is used where appropriate. If flags is or then all configuration parameters are listed. lists the readonly configuration parameters and lists the settable configuration parameters. lists the settable configuration parameters in a form that can be snarfed for input to the getconf(1) command.

efficiently copies up to n bytes from the file descriptor rfd to the file descriptor wfd. The actual number of bytes copied is returned; -1 is returned on error. If n is 0 then an optimal number of bytes (with respect to both rfd and wfd) is copied.

If possible mmap(2) is used to do the transfer. Some implementations may bypass user buffer copies usually required by the read(2)-write(2) paradigm.

outputs an sfprintf(3) prompt specified by format, ... to the controlling terminal and reads a response from the controlling terminal. Affirmative response returns or quit response returns otherwise is returned. If quit is greater than then exit(quit) is called on a quit response. The responses will eventually be locale specific.

returns the number of rows in *rows and the number of columns *col for the terminal file descriptor fd. If the number of rows or columns cannot be determined or if fd is not a terminal then *rows and *cols are set to If ioctl(2) methods fail then the environment variable is used to set *rows and the environment variable is used to set *cols.

SEE ALSO
getconf(1), confstr(3), mmap(2), pathconf(2), read(2), sysconf(3), write(2)