Introduction to Library Functions AST(3)
NAME
ast - miscellaneous libast support
SYNOPSIS
#include <ast.h>
char* astconf(const char* name, const char* path, const char* value);
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
astconf is a string interface to the confstr(2), path-
conf(2), and sysconf(2) calls. If value is 0 then the con-
figuration parameter value for name is returned. Some name
configuration parameters may consult the path argument. In
this case if path is 0 then "/" is used. Otherwise if path
is not 0 then it must exist. The string return value for
name remains unchanged until the next astconf call on name.
If value is 0 then a valid string is always returned; "" is
returned if name has no configuration value. This simpli-
fies the programming interface:
if (!strcmp(astconf("PATH_RESOLVE", NiL, NiL), "logical"))
/* the logical way ... */
If value is not 0 then the configuration parameter value for
name is set to value. 0 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:
FS_3D
1 if 3d(1) viewpathing is enabled, 0 otherwise. This
is an alternative to the fs3d(3) interface.
PATH_RESOLVE
logical if symbolic links are followed during file tree
traversal, physical if symbolic links are not followed
during file tree traversal, and metaphysical if sym-
bolic links are followed at the top level during file
tree traversal. These correspond to the generic -L,
-P, and -H command options.
UNIVERSE
ucb for Berkeley style and att otherwise. This confi-
guration parameter controls the universe setting on
machines that support it (e.g., Pyramid). UNIVERSE
SunOS 5.10 Last change: 1
Introduction to Library Functions AST(3)
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.
astconfdisc 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 0 then
the configuration parameter value is not changed.
astconflist lists the current configuration names and values
of stream. If path is 0 then "/" is used where appropriate.
If flags is 0 or R_OK|W_OK then all configuration parameters
are listed. R_OK lists the readonly configuration parame-
ters and W_OK lists the settable configuration parameters.
X_OK lists the settable configuration parameters in a form
that can be snarfed for input to the getconf(1) command.
astcopy 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 imple-
mentations may bypass user buffer copies usually required by
the read(2)-write(2) paradigm.
astquery outputs an sfprintf(3) prompt specified by format,
... to the controlling terminal and reads a response from
the controlling terminal. Offirmative response returns 0,
EOF or quit response returns -1, otherwise 1 is returned.
If quit is greater than 0 then exit(quit) is called on a
quit response. The responses will eventually be locale
specific.
astwinsize 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 0. If
ioctl (2) methods fail then the environment variable LINES
is used to set *rows and the environment variable COLUMNS is
used to set *cols.
SEE ALSO
getconf(1), confstr(2), mmap(2), pathconf(2), read(2), sys-
conf(2), write(2)
SunOS 5.10 Last change: 2
Generated by GNU enscript 1.6.4.