aboutsummaryrefslogtreecommitdiff
path: root/coreutils/tr.c
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2006-06-30 19:04:09 +0000
committerRob Landley <rob@landley.net>2006-06-30 19:04:09 +0000
commitab58d5cf8a0a59d6c3beafb519b1747b15fd9099 (patch)
tree94715062b854b2e24ecee457380f0b9ab9edbc46 /coreutils/tr.c
parent9c0e4f03d983c71b4810d36127014ea29b4d4197 (diff)
downloadbusybox-w32-ab58d5cf8a0a59d6c3beafb519b1747b15fd9099.tar.gz
busybox-w32-ab58d5cf8a0a59d6c3beafb519b1747b15fd9099.tar.bz2
busybox-w32-ab58d5cf8a0a59d6c3beafb519b1747b15fd9099.zip
Make warnings go away.
Diffstat (limited to 'coreutils/tr.c')
-rw-r--r--coreutils/tr.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/coreutils/tr.c b/coreutils/tr.c
index 594962f92..32f6f5966 100644
--- a/coreutils/tr.c
+++ b/coreutils/tr.c
@@ -18,14 +18,16 @@
18 18
19#include "busybox.h" 19#include "busybox.h"
20 20
21// Even with -funsigned-char, gcc still complains about char as an array index.
22
23#define GCC4_IS_STUPID int
24
21#define ASCII 0377 25#define ASCII 0377
22 26
23/* some "globals" shared across this file */ 27/* some "globals" shared across this file */
24static char com_fl, del_fl, sq_fl; 28static char com_fl, del_fl, sq_fl;
25/* these last are pointers to static buffers declared in tr_main */ 29/* these last are pointers to static buffers declared in tr_main */
26static unsigned char *poutput; 30static char *poutput, *pvector, *pinvec, *poutvec;
27static unsigned char *pvector;
28static unsigned char *pinvec, *poutvec;
29 31
30static void convert(void) 32static void convert(void)
31{ 33{
@@ -60,17 +62,17 @@ static void convert(void)
60 /* NOTREACHED */ 62 /* NOTREACHED */
61} 63}
62 64
63static void map(register unsigned char *string1, unsigned int string1_len, 65static void map(char *string1, unsigned int string1_len,
64 register unsigned char *string2, unsigned int string2_len) 66 char *string2, unsigned int string2_len)
65{ 67{
66 unsigned char last = '0'; 68 char last = '0';
67 unsigned int i, j; 69 unsigned int i, j;
68 70
69 for (j = 0, i = 0; i < string1_len; i++) { 71 for (j = 0, i = 0; i < string1_len; i++) {
70 if (string2_len <= j) 72 if (string2_len <= j)
71 pvector[string1[i]] = last; 73 pvector[(GCC4_IS_STUPID)string1[i]] = last;
72 else 74 else
73 pvector[string1[i]] = last = string2[j++]; 75 pvector[(GCC4_IS_STUPID)string1[i]] = last = string2[j++];
74 } 76 }
75} 77}
76 78
@@ -79,9 +81,9 @@ static void map(register unsigned char *string1, unsigned int string1_len,
79 * Escapes, e.g., \a ==> Control-G 81 * Escapes, e.g., \a ==> Control-G
80 * Character classes, e.g. [:upper:] ==> A ... Z 82 * Character classes, e.g. [:upper:] ==> A ... Z
81 */ 83 */
82static unsigned int expand(const char *arg, register unsigned char *buffer) 84static unsigned int expand(const char *arg, char *buffer)
83{ 85{
84 unsigned char *buffer_start = buffer; 86 char *buffer_start = buffer;
85 int i, ac; 87 int i, ac;
86 88
87 while (*arg) { 89 while (*arg) {
@@ -174,7 +176,7 @@ static unsigned int expand(const char *arg, register unsigned char *buffer)
174 return (buffer - buffer_start); 176 return (buffer - buffer_start);
175} 177}
176 178
177static int complement(unsigned char *buffer, int buffer_len) 179static int complement(char *buffer, int buffer_len)
178{ 180{
179 register short i, j, ix; 181 register short i, j, ix;
180 char conv[ASCII + 2]; 182 char conv[ASCII + 2];
@@ -203,10 +205,10 @@ int tr_main(int argc, char **argv)
203 RESERVE_CONFIG_BUFFER(outvec, ASCII+1); 205 RESERVE_CONFIG_BUFFER(outvec, ASCII+1);
204 206
205 /* ... but make them available globally */ 207 /* ... but make them available globally */
206 poutput = (unsigned char*)output; 208 poutput = output;
207 pvector = (unsigned char*)vector; 209 pvector = vector;
208 pinvec = (unsigned char*)invec; 210 pinvec = invec;
209 poutvec = (unsigned char*)outvec; 211 poutvec = outvec;
210 212
211 if (argc > 1 && argv[idx][0] == '-') { 213 if (argc > 1 && argv[idx][0] == '-') {
212 for (ptr = (unsigned char *) &argv[idx][1]; *ptr; ptr++) { 214 for (ptr = (unsigned char *) &argv[idx][1]; *ptr; ptr++) {
@@ -238,13 +240,13 @@ int tr_main(int argc, char **argv)
238 if (argv[idx] != NULL) { 240 if (argv[idx] != NULL) {
239 if (*argv[idx] == '\0') 241 if (*argv[idx] == '\0')
240 bb_error_msg_and_die("STRING2 cannot be empty"); 242 bb_error_msg_and_die("STRING2 cannot be empty");
241 output_length = expand(argv[idx], (unsigned char*)output); 243 output_length = expand(argv[idx], output);
242 map(bb_common_bufsiz1, input_length, (unsigned char*)output, output_length); 244 map(bb_common_bufsiz1, input_length, output, output_length);
243 } 245 }
244 for (i = 0; i < input_length; i++) 246 for (i = 0; i < input_length; i++)
245 invec[bb_common_bufsiz1[i]] = TRUE; 247 invec[(GCC4_IS_STUPID)bb_common_bufsiz1[i]] = TRUE;
246 for (i = 0; i < output_length; i++) 248 for (i = 0; i < output_length; i++)
247 outvec[(unsigned char)output[i]] = TRUE; 249 outvec[(GCC4_IS_STUPID)output[i]] = TRUE;
248 } 250 }
249 convert(); 251 convert();
250 return (0); 252 return (0);