src/printf.c

changeset 643
5700ba9154ab
parent 634
f78d3b77d456
child 644
fcaa0891ef28
     1.1 --- a/src/printf.c	Wed Feb 01 17:14:17 2023 +0100
     1.2 +++ b/src/printf.c	Wed Feb 01 18:06:50 2023 +0100
     1.3 @@ -31,9 +31,16 @@
     1.4  #include <stdio.h>
     1.5  #include <string.h>
     1.6  
     1.7 -#define CX_PRINTF_BUFSIZE 256
     1.8 +#ifndef CX_PRINTF_SBO_SIZE
     1.9 +#define CX_PRINTF_SBO_SIZE 512
    1.10 +#endif
    1.11  
    1.12 -int cx_fprintf(void *stream, cx_write_func wfc, char const *fmt, ...) {
    1.13 +int cx_fprintf(
    1.14 +        void *stream,
    1.15 +        cx_write_func wfc,
    1.16 +        char const *fmt,
    1.17 +        ...
    1.18 +) {
    1.19      int ret;
    1.20      va_list ap;
    1.21      va_start(ap, fmt);
    1.22 @@ -43,13 +50,13 @@
    1.23  }
    1.24  
    1.25  int cx_vfprintf(void *stream, cx_write_func wfc, char const *fmt, va_list ap) {
    1.26 -    char buf[CX_PRINTF_BUFSIZE];
    1.27 +    char buf[CX_PRINTF_SBO_SIZE];
    1.28      va_list ap2;
    1.29      va_copy(ap2, ap);
    1.30 -    int ret = vsnprintf(buf, CX_PRINTF_BUFSIZE, fmt, ap);
    1.31 +    int ret = vsnprintf(buf, CX_PRINTF_SBO_SIZE, fmt, ap);
    1.32      if (ret < 0) {
    1.33          return ret;
    1.34 -    } else if (ret < CX_PRINTF_BUFSIZE) {
    1.35 +    } else if (ret < CX_PRINTF_SBO_SIZE) {
    1.36          return (int) wfc(buf, 1, ret, stream);
    1.37      } else {
    1.38          int len = ret + 1;
    1.39 @@ -80,11 +87,11 @@
    1.40      cxmutstr s;
    1.41      s.ptr = NULL;
    1.42      s.length = 0;
    1.43 -    char buf[CX_PRINTF_BUFSIZE];
    1.44 +    char buf[CX_PRINTF_SBO_SIZE];
    1.45      va_list ap2;
    1.46      va_copy(ap2, ap);
    1.47 -    int ret = vsnprintf(buf, CX_PRINTF_BUFSIZE, fmt, ap);
    1.48 -    if (ret > 0 && ret < CX_PRINTF_BUFSIZE) {
    1.49 +    int ret = vsnprintf(buf, CX_PRINTF_SBO_SIZE, fmt, ap);
    1.50 +    if (ret > 0 && ret < CX_PRINTF_SBO_SIZE) {
    1.51          s.ptr = cxMalloc(a, ret + 1);
    1.52          if (s.ptr) {
    1.53              s.length = (size_t) ret;

mercurial