ASTSA(3)

πŸ“¦ version 93vu, in opensuse-leap 16.0

πŸ’– NAME πŸ’–

astsa β€” standalone libast support. Yep bestie, this is ASTSA(3) from the Library Functions Manual, and the whole page is about that standalone libast support vibe. ✨


✨ SYNOPSIS ✨

#include <ast.h>
#include <ccode.h>
#include <error.h>
#include <option.h>
#include <stk.h>

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so astsa is a standalone subset of ast(3) that requires only cdt(3) and sfio(3). Slay. 🫢

<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. Yes, <limits.h> really shows up twice in the original lore β€” we’re keeping every detail, no edits, periodt. πŸ’…

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 πŸŽ€

🌟 size_t elementsof(x)

Evaluates to the number of elements in the array variable x.

🌟 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 equivalent to (type*)calloc(1,sizeof(type)*elements+extra) otherwise. Exact same expressions, no cap. ✨

🌟 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 equivalent to (type*)malloc(1,sizeof(type)*elements+extra) otherwise. Lowkey the same shape as newof, but the otherwise branch is malloc, not calloc. πŸŽ€

🌟 size_t roundof(x,y)

Evaluates to x rounded up to the next power of 2 boundary y.

🌟 int ssizeof(x)

Equivalent to (int)sizeof(x).

🌟 int streq(a,b)

Equivalent to (*(a)==*(b)&&strcmp(a,b)==0).

🌟 int strneq(a,b,n)

Equivalent to (*(a)==*(b)&&strncmp(a,b,n)==0).


πŸ”₯ FUNCTIONS πŸ”₯

πŸ¦‹ 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. πŸ“

πŸ¦‹ char* fmterror(int errno)

Returns the error message text corresponding to the errno(3) errno.

πŸ¦‹ char* strerror(int errno)

Equivalent to fmterror(errno).

πŸ¦‹ 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:

  • STR_MAXIMAL β€” Maximal match. The default is minimal (first) match.
  • STR_LEFT β€” Implicit left anchor.
  • STR_RIGHT β€” Implicit right anchor.
  • STR_ICASE β€” Ignore case.
  • STR_GROUP β€” (|&) inside [@|*|+{n,m}](...) only.

πŸ¦‹ 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)


That’s the whole ASTSA(3) page from the Library Functions Manual, bestie β€” source/version stamp: ASTSA(3), and the date line isn’t printed in this copy, so no invented date, fr fr. Stay iconic, keep your macros close, and may all your boundaries be powers of 2. πŸ’…πŸŽ€βœ¨

πŸ“¦ where this page comes from