Home
       vsnprintf.c - scc - simple c99 compiler
  HTML git clone git://git.simple-cc.org/scc
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
       vsnprintf.c (407B)
       ---
            1 #include <stdarg.h>
            2 #include <stdio.h>
            3 
            4 #undef vsnprintf
            5 
            6 int
            7 vsnprintf(char *restrict buf, size_t siz, const char *restrict fmt, va_list ap)
            8 {
            9         FILE f;
           10         int r;
           11         unsigned char *s = (unsigned char *) buf;
           12 
           13         f.flags = _IORW | _IOSTRG;
           14         f.len = siz;
           15         f.buf = s;
           16         f.wp = s;
           17         f.rp = s + siz;
           18 
           19         r = vfprintf(&f, fmt, ap);
           20         if (s) {
           21                 if (f.wp == f.rp)
           22                         --f.wp;
           23                 if (siz != 0)
           24                         *f.wp = '\0';
           25         }
           26 
           27         return r;
           28 }