Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.

This commit is contained in:
Eric Smith 2008-01-27 21:07:59 +00:00
parent 412dc9c88f
commit 7b69c6c3af
3 changed files with 23 additions and 86 deletions

View file

@ -788,37 +788,6 @@ FORMAT_STRING(PyObject* value, PyObject* args)
/* no type conversion needed, already a string. do the formatting */
result = format_string_internal(value, &format);
break;
#if 0
case 'b':
case 'c':
case 'd':
case 'o':
case 'x':
case 'X':
/* convert to integer */
/* XXX: make a stringlib function to do this when backporting,
since FromUnicode differs from FromString */
tmp = PyLong_FromUnicode(STRINGLIB_STR(value), STRINGLIB_LEN(value), 0);
if (tmp == NULL)
goto done;
result = format_long_internal(tmp, &format);
break;
case 'e':
case 'E':
case 'f':
case 'F':
case 'g':
case 'G':
case 'n':
case '%':
/* convert to float */
tmp = PyFloat_FromString(value);
if (tmp == NULL)
goto done;
result = format_float_internal(tmp, &format);
break;
#endif
default:
/* unknown */
PyErr_Format(PyExc_ValueError, "Unknown conversion type %c",
@ -855,15 +824,6 @@ FORMAT_LONG(PyObject* value, PyObject* args)
/* type conversion? */
switch (format.type) {
#if 0
case 's':
/* convert to string/unicode */
tmp = STRINGLIB_TOSTR(value);
if (tmp == NULL)
goto done;
result = format_string_internal(tmp, &format);
break;
#endif
case 'b':
case 'c':
case 'd':
@ -874,21 +834,6 @@ FORMAT_LONG(PyObject* value, PyObject* args)
result = format_long_internal(value, &format);
break;
case 'e':
case 'E':
case 'f':
case 'F':
case 'g':
case 'G':
case 'n':
case '%':
/* convert to float */
tmp = PyNumber_Float(value);
if (tmp == NULL)
goto done;
result = format_float_internal(value, &format);
break;
default:
/* unknown */
PyErr_Format(PyExc_ValueError, "Unknown conversion type %c",
@ -925,28 +870,6 @@ FORMAT_FLOAT(PyObject *value, PyObject *args)
/* type conversion? */
switch (format.type) {
#if 0
case 's':
/* convert to string/unicode */
tmp = STRINGLIB_TOSTR(value);
if (tmp == NULL)
goto done;
result = format_string_internal(tmp, &format);
break;
#endif
case 'b':
case 'c':
case 'd':
case 'o':
case 'x':
case 'X':
/* convert to integer */
tmp = PyNumber_Long(value);
if (tmp == NULL)
goto done;
result = format_long_internal(tmp, &format);
break;
case 'e':
case 'E':
case 'f':