/contrib/ntp/libntp/snprintf.c

https://bitbucket.org/freebsd/freebsd-head/ · C · 62 lines · 57 code · 5 blank · 0 comment · 0 complexity · c22681953e6780947149e4e41b95ded9 MD5 · raw file

  1. #include <config.h>
  2. #if !HAVE_SNPRINTF
  3. #include <sys/types.h>
  4. #ifdef __STDC__
  5. #include <stdarg.h>
  6. #else
  7. #include <varargs.h>
  8. #endif
  9. #include <stdio.h>
  10. #include "l_stdlib.h"
  11. #ifdef __STDC__
  12. int snprintf(char *str, size_t n, const char *fmt, ...)
  13. #else
  14. int snprintf(str, n, fmt, va_alist)
  15. char *str;
  16. size_t n;
  17. const char *fmt;
  18. va_dcl
  19. #endif
  20. {
  21. va_list ap;
  22. int rval;
  23. #ifdef VSPRINTF_CHARSTAR
  24. char *rp;
  25. #endif
  26. #ifdef __STDC__
  27. va_start(ap, fmt);
  28. #else
  29. va_start(ap);
  30. #endif
  31. #ifdef VSPRINTF_CHARSTAR
  32. rp = vsprintf(str, fmt, ap);
  33. va_end(ap);
  34. return (strlen(rp));
  35. #else
  36. rval = vsprintf(str, fmt, ap);
  37. va_end(ap);
  38. return (rval);
  39. #endif
  40. }
  41. int
  42. vsnprintf(
  43. char *str,
  44. size_t n,
  45. const char *fmt,
  46. va_list ap
  47. )
  48. {
  49. #ifdef VSPRINTF_CHARSTAR
  50. return (strlen(vsprintf(str, fmt, ap)));
  51. #else
  52. return (vsprintf(str, fmt, ap));
  53. #endif
  54. }
  55. #else
  56. int snprintf_bs;
  57. #endif