.fp 5 CW
..
.nr ;G \\n(.f
.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
\\*(;G
..
.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
..
.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
..
.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
..
0
..
.. .fl
.. .fl
"\\$1"
..
ASTSA 3
NAME
astsa - standalone libast support
SYNOPSIS
.EX
#include <ast.h>
#include <ccode.h>
#include <error.h>
#include <option.h>
#include <stk.h>
DESCRIPTION
astsa is a standalone subset of
ast (3) that requires only
cdt (3) and
sfio (3). <ast.h> includes <ast_common.h> , <stdarg.h> or <varargs.h> , <sfio.h> , <limits.h> , and <limits.h> and <unistd.h> if supported by the local system.
The macros and functions provided by <ast.h> are described below. The other headers are described in ccode (3), error (3), optget (3), and stk (3).
MACROS
.Ss "size_t elementsof(x)"
Evaluates to the number of elements in the array variable
x . .Ss "type* newof(void* old, type, size_t elements, size_t extra)"
Equivalent to (type*)realloc((char*)old,sizeof(type)*elements+extra)
if old!=0 and
(type*)calloc(1,sizeof(type)*elements+extra)
otherwise.
.Ss "type* oldof(void* old, type, size_t elements, size_t extra)"
Equivalent to (type*)realloc((char*)old,sizeof(type)*elements+extra)
if old!=0 and
(type*)malloc(1,sizeof(type)*elements+extra)
otherwise.
.Ss "size_t roundof(x,y)"
Evaluates to x rounded up to the next power of 2 boundary y.
.Ss "int ssizeof(x)"
Equivalent to (int)sizeof(x).
.Ss "int streq(a,b)"
Equivalent to (*(a)==*(b)&&strcmp(a,b)==0).
.Ss "int strneq(a,b,n)"
Equivalent to (*(a)==*(b)&&strncmp(a,b,n)==0).
FUNCTIONS
.Ss "void astwinsize(int fd, int* plines, int* pcolumns)"
If plines!=0 then *plines is set to the number of lines on the
tty device corresponding to fd.
If pcolumns!=0 then *pcolumns is set to the number of columns
on the tty device corresponding to fd.
The default if fd is not a terminal device, or if fd queries fail,
is 24 lines and 80 columns.
.Ss "char* fmterror(int errno)"
Returns the error message text corresponding to the
errno (3) errno.
.Ss "char* strerror(int errno)"
Equivalent to fmterror(errno).
.Ss "int strgrpmatch(const char* string, const char* pattern, int* sub, int nsub, int flags)"
Matches the null terminated string against the null terminated
ksh (1) augmented pattern.
If sub!=0 then sub[2*i] is set to the start offset and sub[2*i+1] is set
to the end offset of the i-th parenthesized subexpression.
nsub is 1/2 the number of elements in sub.
flags controls the matching:
.Tp
\f5STR_MAXIMAL:
Maximal match.
The default is minimal (first) match.
.Tp
\f5STR_LEFT:
Implicit left anchor.
.Tp
\f5STR_RIGHT:
Implicit right anchor.
.Tp
\f5STR_ICASE:
Ignore case.
.Tp
\f5STR_GROUP:
(|&) inside [@|*|+{n,m}](...) only.
.Ss "int strmatch(const char* string, const char* pattern, int* sub, int nsub, int flags)"
Equivalent to strgrpmatch(string,pattern,0,0,STR_MAXIMAL|STR_LEFT|STR_RIGHT).
"SEE ALSO"
ast (3), ccode (3), cdt (3), error (3), malloc (3), option (3), sfio (3), stk (3)