> 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);



Reply via email to