diff packages/redboot/current/src/io.c @ 2614:6cbecf3cc2e4

* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c, src/xyzModem.c, include/redboot.h: more signed vs. unsigned char issues. * src/fs/e2fs.c (e2fs_mount): Avoid compiler strict aliasing problem. * include/fis.h (struct fis_image_desc): Make fis name be signed char to reduce warnings. * include/flash_config.h (struct _config): Make config_data be signed char to reduce warnings. * include/redboot.h: mon_write_char and mon_read_char_with_timeout take unsigned char, to reduce warnings. * src/parse.c: Add const to err_printf format. * src/fconfig.c: Many signed/unsigned warning cleanups. * src/io.c: Ditto. * src/xyzModem.c: Ditto. * src/load.c: Ditto. * src/flash.c: Ditto. * src/fconfig.c (flash_write_config): Warning cleanup. * src/net/net_io.c (do_ip_addr): Warning cleanup. * src/flash.c (fis_create): Warning cleanup. * include/net/net.h: Include redboot.h for tick functions. * include/net/net.h: Pull tick functions into redboot.h as they are used more widely than the net stack. * include/redboot.h: Declare tick functions. * src/main.c (cyg_start): Correctly compute workspace_end so it works even on high RAM values [bug #1000202]. Don't use workspace_end directly for context init - it gets modified. (do_go): Don't use workspace_end directly for context init - it gets modified.
author jlarmour
date Tue, 11 Nov 2008 04:32:10 +0000
parents 5d5572c64422
children 74dbf4c3f2e1
line wrap: on
line diff
--- a/packages/redboot/current/src/io.c
+++ b/packages/redboot/current/src/io.c
@@ -10,6 +10,7 @@
 // This file is part of eCos, the Embedded Configurable Operating System.
 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
 // Copyright (C) 2002, 2003, 2005 Gary Thomas
+// Copyright (C) 2004, 2008 eCosCentric Limited
 //
 // eCos is free software; you can redistribute it and/or modify it under
 // the terms of the GNU General Public License as published by the Free
@@ -119,7 +120,7 @@ do_channel(int argc, char *argv[])
 }
 
 void 
-mon_write_char(char c)
+mon_write_char(unsigned char c)
 {
     hal_virtual_comm_table_t *__chan;
 
@@ -148,7 +149,7 @@ mon_write_char(char c)
 }
 
 static void 
-mon_read_char(char *c)
+mon_read_char(unsigned char *c)
 {
     hal_virtual_comm_table_t* __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
     
@@ -165,7 +166,7 @@ static int _mon_timeout;
 #endif
 
 bool
-mon_read_char_with_timeout(char *c)
+mon_read_char_with_timeout(unsigned char *c)
 {
     bool res = false;
     hal_virtual_comm_table_t *__chan;
@@ -253,10 +254,10 @@ mon_set_read_char_timeout(int ms)
 bool
 _rb_break(int timeout)
 {
-    char c;
+    unsigned char c;
     mon_set_read_char_timeout(timeout);
     if (mon_read_char_with_timeout(&c)) {
-        if (c == 0x03) {  // Test for ^C
+        if (c == '\x03') {  // Test for ^C
             return true;
         }
     }
@@ -402,7 +403,7 @@ int
 #define CTRL(c) ((c)&0x1F)
 #ifdef CYGSEM_REDBOOT_CMD_LINE_ANSI_SEQUENCES
         // Special handling of ANSI keyboard sequences (arrows, etc)
-        if (c == 0x1B) {
+        if (c == '\x1B') {
             // Leadin for ANSI keyboard sequence
             ansi_state = 1;
             continue;
@@ -693,7 +694,7 @@ int
             }
 #endif
             if (console_echo) {
-                mon_write_char(c);
+                mon_write_char((unsigned char)c);
             }
             if (ip == eol) {
                 // Advance both pointers