runevsnprint.c 330 B

12345678910111213141516171819202122
  1. #include <u.h>
  2. #include <libc.h>
  3. int
  4. runevsnprint(Rune *buf, int len, char *fmt, va_list args)
  5. {
  6. Fmt f;
  7. if(len <= 0)
  8. return -1;
  9. f.runes = 1;
  10. f.start = buf;
  11. f.to = buf;
  12. f.stop = buf + len - 1;
  13. f.flush = nil;
  14. f.farg = nil;
  15. f.nfmt = 0;
  16. f.args = args;
  17. dofmt(&f, fmt);
  18. *(Rune*)f.to = '\0';
  19. return (Rune*)f.to - buf;
  20. }