Subversion Repositories Kolibri OS

Rev

Rev 4921 | 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. #ifdef _NANO_FORMATTED_IO
  37. int
  38. _EXFUN(_vdiprintf_r, (struct _reent *, int, const char *, __VALIST)
  39.        _ATTRIBUTE ((__alias__("_vdprintf_r"))));
  40. #endif
  41.  
  42. #ifndef _REENT_ONLY
  43.  
  44. int
  45. _DEFUN(vdprintf, (fd, format, ap),
  46.        int fd _AND
  47.        const char *__restrict format _AND
  48.        va_list ap)
  49. {
  50.   return _vdprintf_r (_REENT, fd, format, ap);
  51. }
  52.  
  53. #ifdef _NANO_FORMATTED_IO
  54. int
  55. _EXFUN(vdiprintf, (int, const char *, __VALIST)
  56.        _ATTRIBUTE ((__alias__("vdprintf"))));
  57. #endif
  58. #endif /* ! _REENT_ONLY */
  59.