stdio.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #include <stdarg.h>
  2. #include <stddef.h>
  3. typedef struct FILE FILE;
  4. // TODO: Can be implemented in rust when cbindgen supports "..." syntax
  5. int vasprintf(char ** strp, const char * fmt, va_list ap);
  6. int asprintf(char ** strp, const char * fmt, ...) {
  7. int ret;
  8. va_list ap;
  9. va_start(ap, fmt);
  10. ret = vasprintf(strp, fmt, ap);
  11. va_end(ap);
  12. return ret;
  13. }
  14. int vfprintf(FILE * stream, const char * fmt, va_list ap);
  15. int fprintf(FILE * stream, const char * fmt, ...) {
  16. int ret;
  17. va_list ap;
  18. va_start(ap, fmt);
  19. ret = vfprintf(stream, fmt, ap);
  20. va_end(ap);
  21. return ret;
  22. }
  23. int vprintf(const char * fmt, va_list ap);
  24. int printf(const char * fmt, ...) {
  25. int ret;
  26. va_list ap;
  27. va_start(ap, fmt);
  28. ret = vprintf(fmt, ap);
  29. va_end(ap);
  30. return ret;
  31. }
  32. int vsnprintf(char * s, size_t n, const char * fmt, va_list ap);
  33. int snprintf(char * s, size_t n, const char * fmt, ...) {
  34. int ret;
  35. va_list ap;
  36. va_start(ap, fmt);
  37. ret = vsnprintf(s, n, fmt, ap);
  38. va_end(ap);
  39. return ret;
  40. }
  41. int vsprintf(char * s, const char * fmt, va_list ap);
  42. int sprintf(char *s, const char * fmt, ...) {
  43. int ret;
  44. va_list ap;
  45. va_start(ap, fmt);
  46. ret = vsprintf(s, fmt, ap);
  47. va_end(ap);
  48. return ret;
  49. }
  50. int vfscanf(FILE * stream, const char * fmt, va_list ap);
  51. int fscanf(FILE * stream, const char * fmt, ...) {
  52. int ret;
  53. va_list ap;
  54. va_start(ap, fmt);
  55. ret = vfscanf(stream, fmt, ap);
  56. va_end(ap);
  57. return ret;
  58. }
  59. int vscanf(const char * fmt, va_list ap);
  60. int scanf(const char * fmt, ...) {
  61. int ret;
  62. va_list ap;
  63. va_start(ap, fmt);
  64. ret = vscanf(fmt, ap);
  65. va_end(ap);
  66. return ret;
  67. }
  68. int vsscanf(const char * input, const char * fmt, va_list ap);
  69. int sscanf(const char * input, const char * fmt, ...) {
  70. int ret;
  71. va_list ap;
  72. va_start(ap, fmt);
  73. ret = vsscanf(input, fmt, ap);
  74. va_end(ap);
  75. return ret;
  76. }