fmt.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*
  2. * Copyright (c) 2010-2017 Richard Braun.
  3. *
  4. * This program is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation, either version 3 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. *
  17. * Upstream site with license notes :
  18. * http://git.sceen.net/rbraun/librbraun.git/
  19. *
  20. *
  21. * Formatted string functions.
  22. *
  23. * The functions provided by this module implement a subset of the standard
  24. * sprintf- and sscanf-like functions.
  25. *
  26. * sprintf:
  27. * - flags: # 0 - ' ' (space) +
  28. * - field width is supported
  29. * - precision is supported
  30. *
  31. * sscanf:
  32. * - flags: *
  33. * - field width is supported
  34. *
  35. * common:
  36. * - modifiers: hh h l ll z t
  37. * - specifiers: d i o u x X c s p n %
  38. */
  39. #ifndef KERN_FMT_H
  40. #define KERN_FMT_H
  41. #include <stdarg.h>
  42. #include <stddef.h>
  43. #include <kern/stream.h>
  44. int fmt_xprintf (struct stream *stream, const char *format, ...)
  45. __attribute__ ((format (printf, 2, 3)));
  46. int fmt_vxprintf (struct stream *stream, const char *format, va_list ap)
  47. __attribute__ ((format (printf, 2, 0)));
  48. int fmt_sprintf (char *str, const char *format, ...)
  49. __attribute__ ((format (printf, 2, 3)));
  50. int fmt_vsprintf (char *str, const char *format, va_list ap)
  51. __attribute__ ((format (printf, 2, 0)));
  52. int fmt_snprintf (char *str, size_t size, const char *format, ...)
  53. __attribute__ ((format (printf, 3, 4)));
  54. int fmt_vsnprintf (char *str, size_t size, const char *format, va_list ap)
  55. __attribute__ ((format (printf, 3, 0)));
  56. int fmt_xscanf (struct stream *stream, const char *format, ...)
  57. __attribute__ ((format (printf, 2, 3)));
  58. int fmt_vxscanf (struct stream *stream, const char *format, va_list ap)
  59. __attribute__ ((format (printf, 2, 0)));
  60. int fmt_sscanf (const char *str, const char *format, ...)
  61. __attribute__ ((format (scanf, 2, 3)));
  62. int fmt_vsscanf (const char *str, const char *format, va_list ap)
  63. __attribute__ ((format (scanf, 2, 0)));
  64. #endif