From: Guido van Rossum Date: Tue, 26 Oct 1993 15:25:16 +0000 (+0000) Subject: Add some necessary casts; use double quotes to represent strings in X-Git-Tag: v1.0.1~184 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=444fc7c90cf210ec72f1c4204310f659263b6f75;p=thirdparty%2FPython%2Fcpython.git Add some necessary casts; use double quotes to represent strings in some cases. --- diff --git a/Objects/stringobject.c b/Objects/stringobject.c index f66a82ccb892..61863b63d08b 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;