Description: Adapt code to work with char being unsigned by default.
Author: Sascha Steinbiss <steinbiss@zbh.uni-hamburg.de>
--- a/src/core/safearith.c
+++ b/src/core/safearith.c
@@ -182,8 +182,10 @@
   gt_error_check(err);
 
   {
+    /* This is not always true, e.g. on PPC and ARM!
+       cf. http://www.network-theory.co.uk/docs/gccintro/gccintro_71.html
     gt_ensure(__MIN(char) == -128);
-    gt_ensure(__MAX(char) == 127);
+    gt_ensure(__MAX(char) == 127); */
     gt_ensure(__MIN(unsigned char) == 0);
     gt_ensure(__MAX(unsigned char) == 255);
 
--- a/src/core/tokenizer.c
+++ b/src/core/tokenizer.c
@@ -45,7 +45,9 @@
 
 GtStr* gt_tokenizer_get_token(GtTokenizer *t)
 {
-  char c = EOF;
+  char c;
+  bool has_eof = true;
+  int rval = 0;
   gt_assert(t);
 
   /* if we have no current token, get it if possible */
@@ -53,32 +55,44 @@
     if (t->skip_comment_lines && gt_io_line_start(t->io)) {
       for (;;) {
         gt_assert(gt_io_line_start(t->io));
-        if ((gt_io_get_char(t->io, &c) != -1)) {
-          if (c == '#') {
+        if ((gt_io_get_char(t->io, (char*) &c) != -1)) {
+          if ((char) c == '#') {
             /* skip line */
             while ((gt_io_get_char(t->io, &c) != -1) && c != '\n');
-            c = EOF;
+            has_eof = true;
           }
           else {
             gt_io_unget_char(t->io, c);
+            has_eof = false;
             break;
           }
         }
-        else
+        else {
+          c = EOF;
           break;
+        }
       }
-    }
-    while ((gt_io_get_char(t->io, &c) != -1) && c == ' '); /* skip blanks */
+    } /* skip blanks */
+    while (((rval = gt_io_get_char(t->io, &c)) != -1) && c == ' ');
+    if (rval == -1)
+      has_eof = true;
+    else
+      has_eof = false;
     do {
-      if (c != EOF) {
+      if (!has_eof) {
         if (!t->token)
           t->token = gt_str_new();
         if (c == '\n')
           break;
         gt_str_append_char(t->token, c);
       }
-    } while ((gt_io_get_char(t->io, &c) != -1) && c != ' ' && c != '\n');
-    if (c == '\n' && c != EOF) {
+    } while (((rval = gt_io_get_char(t->io, &c)) != -1)
+              && c != ' ' && c != '\n');
+    if (rval == -1)
+      has_eof = true;
+    else
+      has_eof = false;
+    if (c == '\n' && !has_eof) {
       gt_assert(t->token);
       gt_str_append_char(t->token, c);
     }
--- a/src/core/tokenizer.h
+++ b/src/core/tokenizer.h
@@ -33,7 +33,7 @@
 bool          gt_tokenizer_has_token(GtTokenizer*);
 bool          gt_tokenizer_line_start(const GtTokenizer*);
 void          gt_tokenizer_next_token(GtTokenizer*); /* go to the next token */
-GtUword gt_tokenizer_get_line_number(const GtTokenizer*);
+GtUword       gt_tokenizer_get_line_number(const GtTokenizer*);
 const char*   gt_tokenizer_get_filename(const GtTokenizer*);
 int           gt_tokenizer_unit_test(GtError*);
 void          gt_tokenizer_delete(GtTokenizer*);
--- a/src/core/trans_table.c
+++ b/src/core/trans_table.c
@@ -21,7 +21,7 @@
 #include "core/ma.h"
 #include "core/trans_table.h"
 
-#define GT_AMINOACIDFAIL            -1
+#define GT_AMINOACIDFAIL ((char) 0)
 
 /* The integer which a T is encoded to. */
 #define GT_T_CODE  0
--- a/src/extended/gff3_escaping.c
+++ b/src/extended/gff3_escaping.c
@@ -64,7 +64,8 @@
   unsigned char d;
   gt_assert(str && out);
   if (!(GtIsHexChar[(int) *(str+1)] & 2)
-        || !(GtIsHexChar[(int) *(str+2)] & 1)) {
+        || !(GtIsHexChar[(int) *(str+2)] & 1)
+        || !strncmp(str, "%7F", 3 * (sizeof (char)))) {
     return -1;
   }
   d = (GtHexToDec[(int) *(str+1)] << 4) | (GtHexToDec[(int) *(str+2)]);
