mirror of
https://github.com/cc65/cc65.git
synced 2024-12-27 15:29:46 +00:00
ea2f5c1309
git-svn-id: svn://svn.cc65.org/cc65/trunk@88 b7a2c559-68d2-44c3-8de9-860c34a00d81
49 lines
736 B
C
49 lines
736 B
C
/*
|
|
* vsprintf.c
|
|
*
|
|
* Ullrich von Bassewitz, 11.08.1998
|
|
*/
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
#include <stdio.h>
|
|
#include "_printf.h"
|
|
|
|
|
|
|
|
static void out (struct outdesc* d, char* buf, unsigned count)
|
|
/* Routine used for writing */
|
|
{
|
|
/* String - be shure to check the size */
|
|
while (count-- && d->ccount < d->uns) {
|
|
((char*) d->ptr) [d->ccount] = *buf;
|
|
++buf;
|
|
++d->ccount;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int vsprintf (char* buf, char* format, va_list ap)
|
|
{
|
|
struct outdesc d;
|
|
|
|
/* Setup descriptor */
|
|
d.fout = out;
|
|
d.ptr = buf;
|
|
d.uns = 0x7FFF;
|
|
|
|
/* Do formatting and output */
|
|
_printf (&d, format, ap);
|
|
|
|
/* Terminate the result string */
|
|
buf [d.ccount++] = '\0';
|
|
|
|
/* Return bytes written */
|
|
return d.ccount;
|
|
}
|
|
|
|
|
|
|