/contrib/groff/src/libs/libgroff/itoa.c

https://bitbucket.org/freebsd/freebsd-head/ · C · 64 lines · 38 code · 5 blank · 21 comment · 8 complexity · b72cce3a11edafc7b3684762a5962e47 MD5 · raw file

  1. /* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2002, 2004
  2. Free Software Foundation, Inc.
  3. Written by James Clark (jjc@jclark.com)
  4. This file is part of groff.
  5. groff is free software; you can redistribute it and/or modify it under
  6. the terms of the GNU General Public License as published by the Free
  7. Software Foundation; either version 2, or (at your option) any later
  8. version.
  9. groff is distributed in the hope that it will be useful, but WITHOUT ANY
  10. WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  12. for more details.
  13. You should have received a copy of the GNU General Public License along
  14. with groff; see the file COPYING. If not, write to the Free Software
  15. Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */
  16. #define INT_DIGITS 19 /* enough for 64 bit integer */
  17. #define UINT_DIGITS 20
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. char *i_to_a(int i)
  22. {
  23. /* Room for INT_DIGITS digits, - and '\0' */
  24. static char buf[INT_DIGITS + 2];
  25. char *p = buf + INT_DIGITS + 1; /* points to terminating '\0' */
  26. if (i >= 0) {
  27. do {
  28. *--p = '0' + (i % 10);
  29. i /= 10;
  30. } while (i != 0);
  31. return p;
  32. }
  33. else { /* i < 0 */
  34. do {
  35. *--p = '0' - (i % 10);
  36. i /= 10;
  37. } while (i != 0);
  38. *--p = '-';
  39. }
  40. return p;
  41. }
  42. char *ui_to_a(unsigned int i)
  43. {
  44. /* Room for UINT_DIGITS digits and '\0' */
  45. static char buf[UINT_DIGITS + 1];
  46. char *p = buf + UINT_DIGITS; /* points to terminating '\0' */
  47. do {
  48. *--p = '0' + (i % 10);
  49. i /= 10;
  50. } while (i != 0);
  51. return p;
  52. }
  53. #ifdef __cplusplus
  54. }
  55. #endif