1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 20:30:28 +02:00

(SCM_T_INTBUFLEN): Increased to cover

scm_t_intmax values.
(scm_uint2str): New, for scm_t_uintmax.
(scm_iint2str): Argument type changed to scm_t_intmax,
reimplemented in terms of scm_uint2str.
This commit is contained in:
Marius Vollmer 2004-10-22 13:50:39 +00:00
parent 77c2594f2f
commit 2881e77b5a
2 changed files with 27 additions and 15 deletions

View file

@ -2218,29 +2218,38 @@ iflo2str (SCM flt, char *str, int radix)
return i;
}
/* convert a long to a string (unterminated). returns the number of
/* convert a scm_t_intmax to a string (unterminated). returns the number of
characters in the result.
rad is output base
p is destination: worst case (base 2) is SCM_INTBUFLEN */
size_t
scm_iint2str (long num, int rad, char *p)
scm_iint2str (scm_t_intmax num, int rad, char *p)
{
if (num < 0)
{
*p++ = '-';
return scm_iuint2str (-num, rad, p) + 1;
}
else
return scm_iuint2str (num, rad, p);
}
/* convert a scm_t_intmax to a string (unterminated). returns the number of
characters in the result.
rad is output base
p is destination: worst case (base 2) is SCM_INTBUFLEN */
size_t
scm_iuint2str (scm_t_uintmax num, int rad, char *p)
{
size_t j = 1;
size_t i;
unsigned long n = (num < 0) ? -num : num;
scm_t_uintmax n = num;
for (n /= rad; n > 0; n /= rad)
j++;
i = j;
if (num < 0)
{
*p++ = '-';
j++;
n = -num;
}
else
n = num;
n = num;
while (i--)
{
int d = n % rad;