]> granicus.if.org Git - python/commitdiff
Patch by Ero Carrera to get rid of PyString in timemodule.c.
authorGuido van Rossum <guido@python.org>
Fri, 24 Aug 2007 03:51:52 +0000 (03:51 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 24 Aug 2007 03:51:52 +0000 (03:51 +0000)
Modules/timemodule.c

index 45002a1b182549c34679b20ada198e94f7749e13..8ce6667cb601bf0ae1735728386734e8e2faed10 100644 (file)
@@ -377,13 +377,17 @@ time_strftime(PyObject *self, PyObject *args)
        PyObject *tup = NULL;
        struct tm buf;
        const char *fmt;
+       PyObject *format;
        size_t fmtlen, buflen;
        char *outbuf = 0;
        size_t i;
 
        memset((void *) &buf, '\0', sizeof(buf));
 
-       if (!PyArg_ParseTuple(args, "s|O:strftime", &fmt, &tup))
+       /* Will always expect a unicode string to be passed as format.
+          Given that there's no str type anymore in py3k this seems safe.
+       */
+       if (!PyArg_ParseTuple(args, "U|O:strftime", &format, &tup))
                return NULL;
 
        if (tup == NULL) {
@@ -458,6 +462,9 @@ time_strftime(PyObject *self, PyObject *args)
             return NULL;
         }
 
+    /* Convert the unicode string to an ascii one */
+    fmt = PyUnicode_AsString(format);
+
        fmtlen = strlen(fmt);
 
        /* I hate these functions that presume you know how big the output
@@ -535,7 +542,7 @@ time_asctime(PyObject *self, PyObject *args)
        p = asctime(&buf);
        if (p[24] == '\n')
                p[24] = '\0';
-       return PyString_FromString(p);
+       return PyUnicode_FromString(p);
 }
 
 PyDoc_STRVAR(asctime_doc,
@@ -571,7 +578,7 @@ time_ctime(PyObject *self, PyObject *args)
        }
        if (p[24] == '\n')
                p[24] = '\0';
-       return PyString_FromString(p);
+       return PyUnicode_FromString(p);
 }
 
 PyDoc_STRVAR(ctime_doc,