stdio.c 752 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // SPDX-License-Identifier: BSD-2-Clause
  2. /*
  3. * Copyright (c) 2022 Matthias Schiffer <[email protected]>
  4. */
  5. #include <stdio.h>
  6. int puts(const char *s)
  7. {
  8. while (*s)
  9. putchar(*s++);
  10. return 0;
  11. }
  12. void put_u4(uint8_t v)
  13. {
  14. v &= 0xf;
  15. switch (v) {
  16. case 0x0 ... 0x9:
  17. putchar('0' + v);
  18. break;
  19. case 0xa ... 0xf:
  20. putchar('a' + (v - 0xa));
  21. }
  22. }
  23. void put_u8(uint8_t v)
  24. {
  25. put_u4(v >> 4);
  26. put_u4(v);
  27. }
  28. void put_u16(uint16_t v)
  29. {
  30. put_u8(v >> 8);
  31. put_u8(v);
  32. }
  33. void put_u32(uint32_t v)
  34. {
  35. put_u16(v >> 16);
  36. put_u16(v);
  37. }
  38. void put_ptr(const void *p)
  39. {
  40. put_u32((uint32_t)p);
  41. }
  42. void put_array(const void *p, size_t l)
  43. {
  44. const uint8_t *c = p;
  45. size_t i;
  46. for (i = 0; i < l; i++) {
  47. put_u8(c[i]);
  48. putchar(' ');
  49. }
  50. putchar('\n');
  51. }