da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.fp 5 CW
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de Af
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de aF
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ie \\$3 .ft \\$1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.el \{\
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ds ;G \&
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.nr ;G \\n(.f
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin\\*(;G
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft \\n(;G \}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de L
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de LR
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de RL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EX \" start example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ta 1i 2i 3i 4i 5i 6i
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.RS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PD 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft 5
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.nf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.de EE \" end example
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.fi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.ft
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.RE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin..
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.TH AST 3
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH NAME
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinast \- miscellaneous libast support
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH SYNOPSIS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.EX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
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.EE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.SH DESCRIPTION
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astconf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis a string interface to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR confstr (2),
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR pathconf (2),
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR sysconf (2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincalls.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I value
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen the configuration parameter value for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I name
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinSome
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I name
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinconfiguration parameters may consult the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I path
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinargument.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIn this case if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I path
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin\f5"/"\fP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis used.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinOtherwise if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I path
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis not
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen it must exist.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe string return value for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I name
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinremains unchanged until the next
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astconf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincall on
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR name .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I value
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen a valid string is always returned;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin\f5""\fP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I name
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinhas no configuration value.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis simplifies the programming interface:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.EX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif (!strcmp(astconf("PATH_RESOLVE", NiL, NiL), "logical"))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* the logical way ... */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.EE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I value
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis not
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen the configuration parameter value for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I name
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis set to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR value .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned if the value cannot be set.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe paradigm is:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.EX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinuniverse = astconf("UNIVERSE", 0, "att");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin\|.\|.\|.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinastconf("UNIVERSE", 0, universe);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.EE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe settable configuration names are:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.TP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L FS_3D
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR 3d (1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinviewpathing is enabled,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinotherwise.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis is an alternative to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR fs3d (3)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininterface.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.TP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L PATH_RESOLVE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L logical
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif symbolic links are followed during file tree traversal,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L physical
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif symbolic links are not followed during file tree traversal,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L metaphysical
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif symbolic links are followed at the top level during file tree traversal.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThese correspond to the generic
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR \-L ,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR \-P ,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L \-H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincommand options.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.TP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L UNIVERSE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L ucb
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I Berkeley
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstyle and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L att
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinotherwise.
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)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR echo (1).
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinUser defined
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I name
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.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astconfdisc
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinregisters a discipline function
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.EX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint (*notify)(const char* \fIname\fP, const char* \fIpath\fP, const char* \fIvalue\fP);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.EE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthat is called just before the configuration parameter
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I name
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis set to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I value
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinrelative to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR path .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I notify
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinreturns
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen the configuration parameter value is not changed.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astconflist
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the current configuration names and values of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR stream .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I path
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen \f5"/"\fP is used where appropriate.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I flags
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L R_OK|W_OK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen all configuration parameters are listed.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L R_OK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the readonly configuration parameters and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L W_OK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the settable configuration parameters.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L X_OK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlists the settable configuration parameters in a form that can be
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinsnarfed for input to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR getconf (1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincommand.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astcopy
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinefficiently copies up to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I n
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinbytes from the file descriptor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I rfd
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinto the file descriptor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR wfd .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe actual number of bytes copied is returned; \-1 is returned on error.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I n
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis 0 then an optimal number of bytes (with respect to both
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I rfd
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR wfd )
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis copied.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
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)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinparadigm.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astquery
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinoutputs an
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
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR 0 ,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L EOF
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinor quit response returns
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR \-1 ,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinotherwise
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis returned.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I quit
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis greater than
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I exit(quit)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis called on a quit response.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe responses will eventually be locale specific.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.PP
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L astwinsize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinreturns the number of rows in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I *rows
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand the number of columns
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I *col
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfor the terminal file descriptor
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.IR fd .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf the number of rows or columns cannot be determined or if
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I fd
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis not a terminal then
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I *rows
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I *cols
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinare set to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.LR 0 .
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I ioctl (2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmethods fail then the environment variable
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L LINES
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinis used to set
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.I *rows
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinand the environment variable
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin.L COLUMNS
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)