tHandle non-ASCII characters properly by adding suitable casts; test for isascii() before using isprint() so as not to fail on systems for which isprint() is undefined for non-ASCII characters. - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit f652931011b761b1a5eb96ea1a2684c3a903d1b5
 (DIR) parent 6c413067e172ab887c46e24f73013700294d29bc
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Tue, 17 Sep 2002 09:33:04 +0000
       
       Handle non-ASCII characters properly by adding suitable casts; test for
       isascii() before using isprint() so as not to fail on systems for which
       isprint() is undefined for non-ASCII characters.
       
       
       Diffstat:
         M src/configfile.c                    |      11 ++++++-----
       
       1 file changed, 6 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/src/configfile.c b/src/configfile.c
       t@@ -48,12 +48,13 @@ static void PrintEscaped(FILE *fp, gchar *str)
          guint i;
        
          for (i = 0; i < strlen(str); i++) {
       -    switch(str[i]) {
       +    int ch = (int)(guchar)str[i];
       +    switch(ch) {
            case '"':
            case '\'':
            case '\\':
              fputc('\\', fp);
       -      fputc(str[i], fp);
       +      fputc(ch, fp);
              break;
            case '\n':
              fputs("\\n", fp);
       t@@ -71,10 +72,10 @@ static void PrintEscaped(FILE *fp, gchar *str)
              fputs("\\f", fp);
              break;
            default:
       -      if (isprint(str[i])) {
       -        fputc(str[i], fp);
       +      if (isascii(ch) && isprint(ch)) {
       +        fputc(ch, fp);
              } else {
       -        fprintf(fp, "\\%o", (int)(guchar)str[i]);
       +        fprintf(fp, "\\%o", ch);
              }
            }
          }