ast.3 revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ie \\$3 .ft \\$1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.nr ;G \\n(.f
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft \\n(;G \}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EX \" start example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ta 1i 2i 3i 4i 5i 6i
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EE \" end example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinast \- miscellaneous libast support
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH SYNOPSIS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinchar* astconf(const char* \fIname\fP, const char* \fIpath\fP, const char* \fIvalue\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinAst_confdisc_t astconfdisc(Ast_confdisc_t new_notify);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinvoid astconflist(Sfio_t* stream, const char* path, int flags);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinoff_t astcopy(int \fIrfd\fP, int \fIwfd\fP, off_t \fIn\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint astquery(int \fIfd\fP, const char* \fIformat\fP , ...);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH DESCRIPTION
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis a string interface to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR confstr (2),
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR pathconf (2),
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR sysconf (2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen the configuration parameter value for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinconfiguration parameters may consult the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIn this case if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinOtherwise if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen it must exist.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe string return value for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinremains unchanged until the next
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen a valid string is always returned;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinhas no configuration value.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis simplifies the programming interface:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif (!strcmp(astconf("PATH_RESOLVE", NiL, NiL), "logical"))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* the logical way ... */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen the configuration parameter value for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR value .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned if the value cannot be set.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe paradigm is:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinuniverse = astconf("UNIVERSE", 0, "att");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinastconf("UNIVERSE", 0, universe);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe settable configuration names are:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinviewpathing is enabled,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis is an alternative to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR fs3d (3)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L PATH_RESOLVE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif symbolic links are followed during file tree traversal,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L physical
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif symbolic links are not followed during file tree traversal,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L metaphysical
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif symbolic links are followed at the top level during file tree traversal.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThese correspond to the generic
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincommand options.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L UNIVERSE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I Berkeley
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis configuration parameter controls the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I universe
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsetting on machines that support it (e.g., Pyramid).
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L UNIVERSE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinalso controls the behavior of some commands like
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR cat (1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR echo (1).
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinUser defined
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinvalues may also be set and queried, but these should probably have
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsome form of vendor prefix to avoid being stomped by future standards.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astconfdisc
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinregisters a discipline function
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint (*notify)(const char* \fIname\fP, const char* \fIpath\fP, const char* \fIvalue\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthat is called just before the configuration parameter
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinrelative to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen the configuration parameter value is not changed.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astconflist
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the current configuration names and values of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR stream .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen \f5"/"\fP is used where appropriate.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L R_OK|W_OK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen all configuration parameters are listed.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the readonly configuration parameters and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the settable configuration parameters.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the settable configuration parameters in a form that can be
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsnarfed for input to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR getconf (1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinefficiently copies up to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbytes from the file descriptor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinto the file descriptor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe actual number of bytes copied is returned; \-1 is returned on error.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis 0 then an optimal number of bytes (with respect to both
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf possible
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR mmap (2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis used to do the transfer.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinSome implementations may bypass user buffer copies usually required by the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR read (2)- write (2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astquery
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR sfprintf (3)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinprompt specified by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I "format, .\|.\|."
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinto the controlling terminal and reads a response from the controlling terminal.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinOffirmative response returns
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinor quit response returns
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis greater than
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I exit(quit)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis called on a quit response.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe responses will eventually be locale specific.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astwinsize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinreturns the number of rows in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand the number of columns
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfor the terminal file descriptor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf the number of rows or columns cannot be determined or if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis not a terminal then
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I ioctl (2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmethods fail then the environment variable
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis used to set
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand the environment variable
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis used to set
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR *cols .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH "SEE ALSO"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chingetconf(1), confstr(2), mmap(2), pathconf(2), read(2), sysconf(2), write(2)