Subversion Repositories Kolibri OS

Rev

Rev 4874 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* Copyright 2005, 2007 Shaun Jackman
  2.  * Permission to use, copy, modify, and distribute this software
  3.  * is freely granted, provided that this notice is preserved.
  4.  */
  5. /* doc in dprintf.c */
  6.  
  7. #include <_ansi.h>
  8. #include <reent.h>
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <unistd.h>
  12. #include <stdarg.h>
  13. #include "local.h"
  14.  
  15. int
  16. _DEFUN(_vdprintf_r, (ptr, fd, format, ap),
  17.        struct _reent *ptr _AND
  18.        int fd _AND
  19.        const char *__restrict format _AND
  20.        va_list ap)
  21. {
  22.   char *p;
  23.   char buf[512];
  24.   size_t n = sizeof buf;
  25.  
  26.   _REENT_SMALL_CHECK_INIT (ptr);
  27.   p = _vasnprintf_r (ptr, buf, &n, format, ap);
  28.   if (!p)
  29.     return -1;
  30.   n = _write_r (ptr, fd, p, n);
  31.   if (p != buf)
  32.     _free_r (ptr, p);
  33.   return n;
  34. }
  35.  
  36. #ifndef _REENT_ONLY
  37.  
  38. int
  39. _DEFUN(vdprintf, (fd, format, ap),
  40.        int fd _AND
  41.        const char *__restrict format _AND
  42.        va_list ap)
  43. {
  44.   return _vdprintf_r (_REENT, fd, format, ap);
  45. }
  46.  
  47. #endif /* ! _REENT_ONLY */
  48.