mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* util.c (IEEE_BIG_ENDIAN): use configured value. [ruby-dev:31623]
* util.c (Llong): set to LONG_LONG if available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fa02a6cedd
commit
d4b9e9815b
2 changed files with 47 additions and 37 deletions
|
@ -1,3 +1,9 @@
|
|||
Mon Aug 27 15:33:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* util.c (IEEE_BIG_ENDIAN): use configured value. [ruby-dev:31623]
|
||||
|
||||
* util.c (Llong): set to LONG_LONG if available.
|
||||
|
||||
Mon Aug 27 13:11:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* string.c (tr_trans): wrong condition for mbmaxlen==1 strings.
|
||||
|
|
78
util.c
78
util.c
|
@ -21,6 +21,14 @@
|
|||
#ifdef _WIN32
|
||||
#include "missing/file.h"
|
||||
#endif
|
||||
#if defined(__CYGWIN32__)
|
||||
#define _open open
|
||||
#define _close close
|
||||
#define _unlink unlink
|
||||
#define _access access
|
||||
#elif defined(_WIN32)
|
||||
#include <io.h>
|
||||
#endif
|
||||
|
||||
#include "ruby/util.h"
|
||||
|
||||
|
@ -184,7 +192,7 @@ ruby_add_suffix(VALUE str, const char *suffix)
|
|||
p = t;
|
||||
|
||||
t = ext; extlen = 0;
|
||||
while (*t++ = *s++) extlen++;
|
||||
while ((*t++ = *s++) != 0) extlen++;
|
||||
if (extlen == 0) { ext[0] = '.'; ext[1] = 0; extlen++; }
|
||||
|
||||
if (*suffix == '.') { /* Style 1 */
|
||||
|
@ -814,7 +822,7 @@ ruby_getcwd(void)
|
|||
* the result overflows to +-Infinity or underflows to 0.
|
||||
*/
|
||||
|
||||
#ifdef __BIG_ENDIAN__
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define IEEE_LITTLE_ENDIAN
|
||||
|
@ -842,10 +850,8 @@ ruby_getcwd(void)
|
|||
#define ULong unsigned long int
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
||||
#define Long __int32
|
||||
#define ULong unsigned __int32
|
||||
#define IEEE_LITTLE_ENDIAN
|
||||
#if HAVE_LONG_LONG
|
||||
#define Llong LONG_LONG
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -1147,7 +1153,7 @@ Balloc(int k)
|
|||
#endif
|
||||
|
||||
ACQUIRE_DTOA_LOCK(0);
|
||||
if (rv = freelist[k]) {
|
||||
if ((rv = freelist[k]) != 0) {
|
||||
freelist[k] = rv->next;
|
||||
}
|
||||
else {
|
||||
|
@ -1391,7 +1397,7 @@ mult(Bigint *a, Bigint *b)
|
|||
xc0 = c->x;
|
||||
#ifdef ULLong
|
||||
for (; xb < xbe; xc0++) {
|
||||
if (y = *xb++) {
|
||||
if ((y = *xb++) != 0) {
|
||||
x = xa;
|
||||
xc = xc0;
|
||||
carry = 0;
|
||||
|
@ -1464,7 +1470,7 @@ pow5mult(Bigint *b, int k)
|
|||
int i;
|
||||
static int p05[3] = { 5, 25, 125 };
|
||||
|
||||
if (i = k & 3)
|
||||
if ((i = k & 3) != 0)
|
||||
b = multadd(b, p05[i-1], 0);
|
||||
|
||||
if (!(k >>= 2))
|
||||
|
@ -1539,7 +1545,7 @@ lshift(Bigint *b, int k)
|
|||
*x1++ = *x << k | z;
|
||||
z = *x++ >> k1;
|
||||
} while (x < xe);
|
||||
if (*x1 = z)
|
||||
if ((*x1 = z) != 0)
|
||||
++n1;
|
||||
}
|
||||
#else
|
||||
|
@ -1738,16 +1744,16 @@ b2d(Bigint *a, int *e)
|
|||
*e = 32 - k;
|
||||
#ifdef Pack_32
|
||||
if (k < Ebits) {
|
||||
d0 = Exp_1 | y >> Ebits - k;
|
||||
d0 = Exp_1 | y >> (Ebits - k);
|
||||
w = xa > xa0 ? *--xa : 0;
|
||||
d1 = y << (32-Ebits) + k | w >> Ebits - k;
|
||||
d1 = y << ((32-Ebits) + k) | w >> (Ebits - k);
|
||||
goto ret_d;
|
||||
}
|
||||
z = xa > xa0 ? *--xa : 0;
|
||||
if (k -= Ebits) {
|
||||
d0 = Exp_1 | y << k | z >> 32 - k;
|
||||
d0 = Exp_1 | y << k | z >> (32 - k);
|
||||
y = xa > xa0 ? *--xa : 0;
|
||||
d1 = z << k | y >> 32 - k;
|
||||
d1 = z << k | y >> (32 - k);
|
||||
}
|
||||
else {
|
||||
d0 = Exp_1 | y;
|
||||
|
@ -1813,13 +1819,13 @@ d2b(double d, int *e, int *bits)
|
|||
z |= Exp_msk11;
|
||||
#endif
|
||||
#else
|
||||
if (de = (int)(d0 >> Exp_shift))
|
||||
if ((de = (int)(d0 >> Exp_shift)) != 0)
|
||||
z |= Exp_msk1;
|
||||
#endif
|
||||
#ifdef Pack_32
|
||||
if (y = d1) {
|
||||
if (k = lo0bits(&y)) {
|
||||
x[0] = y | z << 32 - k;
|
||||
if ((y = d1) != 0) {
|
||||
if ((k = lo0bits(&y)) != 0) {
|
||||
x[0] = y | z << (32 - k);
|
||||
z >>= k;
|
||||
}
|
||||
else
|
||||
|
@ -2364,7 +2370,7 @@ vax_ovfl_check:
|
|||
/* Get starting approximation = rv * 10**e1 */
|
||||
|
||||
if (e1 > 0) {
|
||||
if (i = e1 & 15)
|
||||
if ((i = e1 & 15) != 0)
|
||||
dval(rv) *= tens[i];
|
||||
if (e1 &= ~15) {
|
||||
if (e1 > DBL_MAX_10_EXP) {
|
||||
|
@ -2424,7 +2430,7 @@ ovfl:
|
|||
}
|
||||
else if (e1 < 0) {
|
||||
e1 = -e1;
|
||||
if (i = e1 & 15)
|
||||
if ((i = e1 & 15) != 0)
|
||||
dval(rv) /= tens[i];
|
||||
if (e1 >>= 4) {
|
||||
if (e1 >= 1 << n_bigtens)
|
||||
|
@ -2443,7 +2449,7 @@ ovfl:
|
|||
if (j >= 53)
|
||||
word0(rv) = (P+2)*Exp_msk1;
|
||||
else
|
||||
word0(rv) &= 0xffffffff << j-32;
|
||||
word0(rv) &= 0xffffffff << (j-32);
|
||||
}
|
||||
else
|
||||
word1(rv) &= 0xffffffff << j;
|
||||
|
@ -3091,7 +3097,7 @@ nrv_alloc(char *s, char **rve, int n)
|
|||
char *rv, *t;
|
||||
|
||||
t = rv = rv_alloc(n);
|
||||
while (*t = *s++) t++;
|
||||
while ((*t = *s++) != 0) t++;
|
||||
if (rve)
|
||||
*rve = t;
|
||||
return rv;
|
||||
|
@ -3261,7 +3267,7 @@ dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve)
|
|||
#ifdef Sudden_Underflow
|
||||
i = (int)(word0(d) >> Exp_shift1 & (Exp_mask>>Exp_shift1));
|
||||
#else
|
||||
if (i = (int)(word0(d) >> Exp_shift1 & (Exp_mask>>Exp_shift1))) {
|
||||
if ((i = (int)(word0(d) >> Exp_shift1 & (Exp_mask>>Exp_shift1))) != 0) {
|
||||
#endif
|
||||
dval(d2) = dval(d);
|
||||
word0(d2) &= Frac_mask1;
|
||||
|
@ -3305,8 +3311,8 @@ dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve)
|
|||
/* d is denormalized */
|
||||
|
||||
i = bbits + be + (Bias + (P-1) - 1);
|
||||
x = i > 32 ? word0(d) << 64 - i | word1(d) >> i - 32
|
||||
: word1(d) << 32 - i;
|
||||
x = i > 32 ? word0(d) << (64 - i) | word1(d) >> (i - 32)
|
||||
: word1(d) << (32 - i);
|
||||
dval(d2) = x;
|
||||
word0(d2) -= 31*Exp_msk1; /* adjust exponent */
|
||||
i -= (Bias + (P-1) - 1) + 1;
|
||||
|
@ -3358,10 +3364,10 @@ dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve)
|
|||
try_quick = 0;
|
||||
}
|
||||
leftright = 1;
|
||||
ilim = ilim1 = -1;
|
||||
switch (mode) {
|
||||
case 0:
|
||||
case 1:
|
||||
ilim = ilim1 = -1;
|
||||
i = 18;
|
||||
ndigits = 0;
|
||||
break;
|
||||
|
@ -3415,7 +3421,7 @@ dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve)
|
|||
}
|
||||
dval(d) /= ds;
|
||||
}
|
||||
else if (j1 = -k) {
|
||||
else if ((j1 = -k) != 0) {
|
||||
dval(d) *= tens[j1 & 0xf];
|
||||
for (j = j1 >> 4; j; j >>= 1, i++)
|
||||
if (j & 1) {
|
||||
|
@ -3529,7 +3535,7 @@ fast_failed:
|
|||
}
|
||||
#endif
|
||||
dval(d) += dval(d);
|
||||
if (dval(d) > ds || dval(d) == ds && L & 1) {
|
||||
if (dval(d) > ds || (dval(d) == ds && (L & 1))) {
|
||||
bump_up:
|
||||
while (*--s == '9')
|
||||
if (s == s0) {
|
||||
|
@ -3576,7 +3582,7 @@ bump_up:
|
|||
Bfree(b);
|
||||
b = b1;
|
||||
}
|
||||
if (j = b5 - m5)
|
||||
if ((j = b5 - m5) != 0)
|
||||
b = pow5mult(b, j);
|
||||
}
|
||||
else
|
||||
|
@ -3614,10 +3620,10 @@ bump_up:
|
|||
* can do shifts and ors to compute the numerator for q.
|
||||
*/
|
||||
#ifdef Pack_32
|
||||
if (i = ((s5 ? 32 - hi0bits(S->x[S->wds-1]) : 1) + s2) & 0x1f)
|
||||
if ((i = ((s5 ? 32 - hi0bits(S->x[S->wds-1]) : 1) + s2) & 0x1f) != 0)
|
||||
i = 32 - i;
|
||||
#else
|
||||
if (i = ((s5 ? 32 - hi0bits(S->x[S->wds-1]) : 1) + s2) & 0xf)
|
||||
if ((i = ((s5 ? 32 - hi0bits(S->x[S->wds-1]) : 1) + s2) & 0xf) != 0)
|
||||
i = 16 - i;
|
||||
#endif
|
||||
if (i > 4) {
|
||||
|
@ -3699,11 +3705,11 @@ one_digit:
|
|||
goto ret;
|
||||
}
|
||||
#endif
|
||||
if (j < 0 || j == 0 && mode != 1
|
||||
if (j < 0 || (j == 0 && mode != 1
|
||||
#ifndef ROUND_BIASED
|
||||
&& !(word1(d) & 1)
|
||||
#endif
|
||||
) {
|
||||
)) {
|
||||
if (!b->x[0] && b->wds <= 1) {
|
||||
#ifdef SET_INEXACT
|
||||
inexact = 0;
|
||||
|
@ -3720,8 +3726,7 @@ one_digit:
|
|||
if (j1 > 0) {
|
||||
b = lshift(b, 1);
|
||||
j1 = cmp(b, S);
|
||||
if ((j1 > 0 || j1 == 0 && dig & 1)
|
||||
&& dig++ == '9')
|
||||
if ((j1 > 0 || (j1 == 0 && (dig & 1))) && dig++ == '9')
|
||||
goto round_9_up;
|
||||
}
|
||||
accept_dig:
|
||||
|
@ -3780,7 +3785,7 @@ keep_dig:
|
|||
#endif
|
||||
b = lshift(b, 1);
|
||||
j = cmp(b, S);
|
||||
if (j > 0 || j == 0 && dig & 1) {
|
||||
if (j > 0 || (j == 0 && (dig & 1))) {
|
||||
roundoff:
|
||||
while (*--s == '9')
|
||||
if (s == s0) {
|
||||
|
@ -3791,7 +3796,6 @@ keep_dig:
|
|||
++*s++;
|
||||
}
|
||||
else {
|
||||
trimzeros:
|
||||
while (*--s == '0') ;
|
||||
s++;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue