From 444fc7c90cf210ec72f1c4204310f659263b6f75 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 26 Oct 1993 15:25:16 +0000 Subject: Add some necessary casts; use double quotes to represent strings in some cases. --- Objects/stringobject.c | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/Objects/stringobject.c b/Objects/stringobject.c index f66a82c..61863b6 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -67,14 +67,14 @@ newsizedstringobject(str, size) null_strings++; #endif INCREF(op); - return op; + return (object *)op; } if (size == 1 && str != NULL && (op = characters[*str & UCHAR_MAX]) != NULL) { #ifdef COUNT_ALLOCS one_strings++; #endif INCREF(op); - return op; + return (object *)op; } op = (stringobject *) malloc(sizeof(stringobject) + size * sizeof(char)); @@ -110,14 +110,14 @@ newstringobject(str) null_strings++; #endif INCREF(op); - return op; + return (object *)op; } if (size == 1 && (op = characters[*str & UCHAR_MAX]) != NULL) { #ifdef COUNT_ALLOCS one_strings++; #endif INCREF(op); - return op; + return (object *)op; } op = (stringobject *) malloc(sizeof(stringobject) + size * sizeof(char)); @@ -179,22 +179,29 @@ string_print(op, fp, flags) { int i; char c; + int quote; /* XXX Ought to check for interrupts when writing long strings */ if (flags & PRINT_RAW) { fwrite(op->ob_sval, 1, (int) op->ob_size, fp); return 0; } - fprintf(fp, "'"); + + /* figure out which quote to use; single is prefered */ + quote = '\''; + if (strchr(op->ob_sval, '\'') && !strchr(op->ob_sval, '"')) + quote = '"'; + + fputc(quote, fp); for (i = 0; i < op->ob_size; i++) { c = op->ob_sval[i]; - if (c == '\'' || c == '\\') + if (c == quote || c == '\\') fprintf(fp, "\\%c", c); else if (c < ' ' || c >= 0177) - fprintf(fp, "\\%03o", c&0377); + fprintf(fp, "\\%03o", c & 0377); else - putc(c, fp); + fputc(c, fp); } - fprintf(fp, "'"); + fputc(quote, fp); return 0; } @@ -212,22 +219,28 @@ string_repr(op) register int i; register char c; register char *p; + int quote; + + /* figure out which quote to use; single is prefered */ + quote = '\''; + if (strchr(op->ob_sval, '\'') && !strchr(op->ob_sval, '"')) + quote = '"'; + p = ((stringobject *)v)->ob_sval; - *p++ = '\''; + *p++ = quote; for (i = 0; i < op->ob_size; i++) { c = op->ob_sval[i]; - if (c == '\'' || c == '\\') + if (c == quote || c == '\\') *p++ = '\\', *p++ = c; else if (c < ' ' || c >= 0177) { - sprintf(p, "\\%03o", c&0377); + sprintf(p, "\\%03o", c & 0377); while (*p != '\0') p++; - } else *p++ = c; } - *p++ = '\''; + *p++ = quote; *p = '\0'; resizestring(&v, (int) (p - ((stringobject *)v)->ob_sval)); return v; -- cgit v0.12