home | help
doc::unibi_run(3)		    unibilium		       doc::unibi_run(3)

NAME
     unibi_format, unibi_run - interpret a terminfo format string

SYNOPSIS
       #include <unibilium.h>

       void unibi_format(
	   unibi_var_t var_dyn[26],
	   unibi_var_t var_static[26],
	   const char *fmt,
	   unibi_var_t param[9],
	   void (*out)(void *, const char *, size_t),
	   void *ctx1,
	   void (*pad)(void *, size_t, int, int),
	   void *ctx2
       );

       size_t unibi_run(const char *fmt, unibi_var_t param[9], char *p, size_t n);

DESCRIPTION
     "unibi_format" takes a format string fmt and executes it. All output is
     done by (possibly repeated) calls to out. In the calls to out the first ar-
     gument is always ctx1, the second argument is a pointer to a chunk of data,
     and the third argument is a count specifying the size of the chunk in
     bytes.

     pad is used when the format string contains "$<...>" padding instructions.
     In the calls to pad the first argument is always ctx2, the second argument
     is the delay in tenths of milliseconds, the third argument is a boolean
     flag indicating whether "*" (proportional delay) was specified in the for-
     mat string, and the fourth argument is a boolean flag indicating whether
     "/" (forced padding) was specified in the format string. Thus a format
     string of "$<5/>" would translate into "pad(ctx2, 50, 0, 1)". You may pass
     a null pointer for pad; in that case padding instructions are silently
     skipped.

     The values of param are used for the format codes %p1 .. %p9; the values of
     var_dyn and var_static are used for the so-called dynamic/static variables
     %Pa .. %Pz and %PA .. %PZ, respectively.

     "unibi_run" is a wrapper around "unibi_format". It passes two arrays (each
     initialized to 26 zeroes) as var_dyn and var_static. fmt and param are
     passed on unchanged. It ignores padding and places all normal output in the
     buffer pointed to by p. n is the size of the buffer; at most n bytes will
     be written to p.

RETURN VALUE
     "unibi_run" returns the number of bytes that would have been written if the
     buffer was big enough. Thus the number of valid bytes in p after a call to
     "unibi_run" is the minimum of n and the return value of "unibi_run".

SEE ALSO
     unibi_var_from_num(3), unibi_var_from_str(3), unibilium.h(3)

unibilium-2.1.2 		   2024-09-13		       doc::unibi_run(3)

home | help