stdio.cpp 848 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. #include <sys/types.h>
  4. #include <string.h>
  5. #include <errno.h>
  6. #include <unistd.h>
  7. #include <Kernel/Syscall.h>
  8. #include <AK/printf.cpp>
  9. extern "C" {
  10. int putchar(int ch)
  11. {
  12. write(0, &ch, 1);
  13. return (byte)ch;
  14. }
  15. static void sys_putch(char*&, char ch)
  16. {
  17. putchar(ch);
  18. }
  19. int printf(const char* fmt, ...)
  20. {
  21. va_list ap;
  22. va_start(ap, fmt);
  23. int ret = printfInternal(sys_putch, nullptr, fmt, ap);
  24. va_end(ap);
  25. return ret;
  26. }
  27. static void buffer_putch(char*& bufptr, char ch)
  28. {
  29. *bufptr++ = ch;
  30. }
  31. int sprintf(char* buffer, const char* fmt, ...)
  32. {
  33. va_list ap;
  34. va_start(ap, fmt);
  35. int ret = printfInternal(buffer_putch, buffer, fmt, ap);
  36. buffer[ret] = '\0';
  37. va_end(ap);
  38. return ret;
  39. }
  40. void perror(const char* s)
  41. {
  42. printf("%s: %s\n", s, strerror(errno));
  43. }
  44. }