> I've applied portions of this patch. I omitted the parts which use the > "byte" type, which isn't going to work on all platforms.
I've changed these to use 'char'. Hopefully that will be more portable. Mike Lambert Index: misc.c =================================================================== RCS file: /cvs/public/parrot/misc.c,v retrieving revision 1.19 diff -u -r1.19 misc.c --- misc.c 17 Mar 2002 06:44:41 -0000 1.19 +++ misc.c 30 Mar 2002 01:15:30 -0000 @@ -89,38 +89,40 @@ void int_to_str(char *, char *, HUGEINTVAL, INTVAL ); */ -void gen_sprintf_call(char *, char *, SpfInfo, int); +void gen_sprintf_call(char *, char *, SpfInfo, char); static void -uint_to_str(char *buf1, char *buf2, UHUGEINTVAL num, INTVAL base) +uint_to_str(char *buf1, char *buf2, UHUGEINTVAL num, char base) { - int i = 0, cur; + int i = 0, cur2; + char cur; do { - cur = num % base; + cur = (char)(num % base); if (cur < 10) { - buf2[i] = '0' + cur; + buf2[i] = (char)('0' + cur); } else { - buf2[i] = 'a' + cur; + buf2[i] = (char)('a' + cur); } i++; } while (num /= base); - cur = i; + cur2 = i; - for (i = 0; i <= cur; i++) { - buf1[i] = buf2[cur - i]; + for (i = 0; i <= cur2; i++) { + buf1[i] = buf2[cur2 - i]; } } static void -int_to_str(char *buf1, char *buf2, HUGEINTVAL num, INTVAL base) +int_to_str(char *buf1, char *buf2, HUGEINTVAL num, char base) { BOOLVAL neg; - int i = 0, cur; + int i = 0, cur2; + char cur; if (num < 0) { neg = 1; @@ -131,13 +133,13 @@ } do { - cur = num % base; + cur = (char)(num % base); if (cur < 10) { - buf2[i] = '0' + cur; + buf2[i] = (char)('0' + cur); } else { - buf2[i] = 'a' + cur; + buf2[i] = (char)('a' + cur); } i++; @@ -147,10 +149,10 @@ buf2[i++] = '-'; } - cur = i; + cur2 = i; - for (i = 0; i < cur; i++) { - buf1[i] = buf2[cur - i - 1]; + for (i = 0; i < cur2; i++) { + buf1[i] = buf2[cur2 - i - 1]; } buf1[i] = 0; @@ -186,7 +188,7 @@ } void -gen_sprintf_call(char *buf, char *buf2, SpfInfo info, int thingy) +gen_sprintf_call(char *buf, char *buf2, SpfInfo info, char thingy) { int i = 0; buf[i++] = '%'; @@ -251,7 +253,7 @@ for (i++; i < (INTVAL)string_length(pat) && info.phase != PHASE_DONE; i++) { - char ch = string_ord(pat, i); + INTVAL ch = string_ord(pat, i); switch (info.phase) { /*@fallthrough@ */ case PHASE_FLAGS: @@ -411,7 +413,7 @@ case 'f': dbl = va_arg(*args, double); - gen_sprintf_call(t1, t2, &info, (char)'f'); + gen_sprintf_call(t1, t2, &info, 'f'); sprintf(t2, t1, dbl); targ = string_concat(interpreter, targ, cstr2pstr(t2), 0); Index: string.c =================================================================== RCS file: /cvs/public/parrot/string.c,v retrieving revision 1.64 diff -u -r1.64 string.c --- string.c 24 Mar 2002 06:57:28 -0000 1.64 +++ string.c 30 Mar 2002 01:15:32 -0000 @@ -434,8 +434,6 @@ * end of our piece */ UINTVAL true_offset; UINTVAL true_length; - UINTVAL new_length; - UINTVAL new_size; INTVAL diff; true_offset = (UINTVAL)offset; @@ -791,7 +789,7 @@ * would approach 128 characters in the buffer. */ do { - *--ptr = '0' + i % 10; + *--ptr = (char)('0' + i % 10); } while(i /= 10);