X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/adec5584e13c63662fda18915280ec026063b29d..d056fbdff1c5a26be055c38eee4c273ee6a0cba7:/utils/gprintf.3?ds=sidebyside diff --git a/utils/gprintf.3 b/utils/gprintf.3 index c7f8652..13d2a1a 100644 --- a/utils/gprintf.3 +++ b/utils/gprintf.3 @@ -17,8 +17,18 @@ \h'-\w'\\$1\ 'u'\\$1\ \c .ft P .. -.ie t .ds o \(bu -.el .ds o o +.ie t \{\ +. ds o \(bu +. de VP +. sp .4v +.. +\} +.el \{\ +. ds o o +. de VP +. sp +.. +\} . .TH gprintf 3 "9 March 2024" "Straylight/Edgeware" "mLib utilities library" . @@ -28,25 +38,25 @@ gprintf \- generalized output formatting .SH SYNOPSIS .nf .B "#include " - +.PP .ta 2n .B "struct gprintf_ops {" .BI " int (*putch)(void *" out ", int " ch ");" .BI " int (*putm)(void *" out ", const char *" p ", size_t " sz ");" .BI " int (*nputf)(void *" out ", size_t " maxsz ", const char *" p ", ...);" .B "};" - +.PP .BI "int gprintf(const struct gprintf_ops *" ops ", void *" out "," .ta \w'\fBint gprintf('u .BI " const char *" p ", ...);" .BI "int vgprintf(const struct gprintf_ops *" ops ", void *" out "," .ta \w'\fBint vgprintf('u .BI " const char *" p ", va_list *" ap ");" - +.PP .BI "int gprintf_memputf(char **" buf_inout ", size_t *" sz_inout "," .ta \w'\fBint gprintf_memputf('u .BI " size_t " maxsz ", const char *" p ", va_list " ap ");" - +.PP .B "const struct gprintf_ops file_printops;" .fi . @@ -189,28 +199,28 @@ struct my_output { size_t sz; /* ...\& other members ...\& */ }; - +.VP /* ...\& define putch and putm ...\& */ - +.VP static int nputf(void *out, size_t maxsz, const char *p, ...) { struct my_output *myout = out; va_list ap; int n; - +.VP va_start(ap, p); n = gprintf_memputf(&myout->buf, &myout->sz, maxsz, p, ap); va_end(ap); if (n > 0) n = putm(myout, myout->buf, n); return (n); } - +.VP const struct gprintf_ops my_output_ops = { putch, putm, nputf }; - +.VP /* ...\& */ - +.VP struct my_output myout; - +.VP myout.buf = 0; myout.sz = 0; /* ...\& other initialization ...\& */ gprintf(&my_output_ops, &myout, "Hello, %s!", "world");