sprintf.osf.c 1019 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. static const char ident[] = "$Id: sprintf.osf.c,v 1.2 2002/11/21 16:13:10 legoater Exp $";
  2. /* Includes
  3. ******************************************************************************/
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <stdarg.h>
  7. /******************************************************************************/
  8. extern int snprintf(char* s, size_t maxlen, const char* fmt, ...)
  9. {
  10. int len;
  11. va_list args;
  12. va_start(args, fmt);
  13. len = vsnprintf(s, maxlen, fmt, args);
  14. va_end(args);
  15. return len;
  16. }
  17. /******************************************************************************/
  18. extern int vsnprintf(char* s, size_t maxlen, const char* fmt, va_list args)
  19. {
  20. int len;
  21. FILE f;
  22. if (maxlen == 0)
  23. return 0;
  24. memset(&f, 0, sizeof(f));
  25. f._flag = _IOWRT + _IOSTRG;
  26. f._bufsiz = f._cnt = maxlen - 1;
  27. f._base = f._ptr = (unsigned char*) s;
  28. //f._bufendp = f._base + f._bufsiz;
  29. len = vfprintf(&f, fmt, args);
  30. *f._ptr = '\0';
  31. return len;
  32. }