[Python-3000-checkins] r55715 - python/branches/py3k-struni/Modules/datetimemodule.c
walter.doerwald
python-3000-checkins at python.org
Thu May 31 20:42:53 CEST 2007
Author: walter.doerwald
Date: Thu May 31 20:42:47 2007
New Revision: 55715
Modified:
python/branches/py3k-struni/Modules/datetimemodule.c
Log:
Change timedelta.__str__() to return a unicode object.
Modified: python/branches/py3k-struni/Modules/datetimemodule.c
==============================================================================
--- python/branches/py3k-struni/Modules/datetimemodule.c (original)
+++ python/branches/py3k-struni/Modules/datetimemodule.c Thu May 31 20:42:47 2007
@@ -1987,47 +1987,30 @@
static PyObject *
delta_str(PyDateTime_Delta *self)
{
- int days = GET_TD_DAYS(self);
- int seconds = GET_TD_SECONDS(self);
int us = GET_TD_MICROSECONDS(self);
- int hours;
- int minutes;
- char buf[100];
- char *pbuf = buf;
- size_t buflen = sizeof(buf);
- int n;
-
- minutes = divmod(seconds, 60, &seconds);
- hours = divmod(minutes, 60, &minutes);
+ int seconds = GET_TD_SECONDS(self);
+ int minutes = divmod(seconds, 60, &seconds);
+ int hours = divmod(minutes, 60, &minutes);
+ int days = GET_TD_DAYS(self);
if (days) {
- n = PyOS_snprintf(pbuf, buflen, "%d day%s, ", days,
- (days == 1 || days == -1) ? "" : "s");
- if (n < 0 || (size_t)n >= buflen)
- goto Fail;
- pbuf += n;
- buflen -= (size_t)n;
- }
-
- n = PyOS_snprintf(pbuf, buflen, "%d:%02d:%02d",
- hours, minutes, seconds);
- if (n < 0 || (size_t)n >= buflen)
- goto Fail;
- pbuf += n;
- buflen -= (size_t)n;
-
- if (us) {
- n = PyOS_snprintf(pbuf, buflen, ".%06d", us);
- if (n < 0 || (size_t)n >= buflen)
- goto Fail;
- pbuf += n;
+ if (us)
+ return PyUnicode_FromFormat("%d day%s, %d:%02d:%02d.%06d",
+ days, (days == 1 || days == -1) ? "" : "s",
+ hours, minutes, seconds, us);
+ else
+ return PyUnicode_FromFormat("%d day%s, %d:%02d:%02d",
+ days, (days == 1 || days == -1) ? "" : "s",
+ hours, minutes, seconds);
+ } else {
+ if (us)
+ return PyUnicode_FromFormat("%d:%02d:%02d.%06d",
+ hours, minutes, seconds, us);
+ else
+ return PyUnicode_FromFormat("%d:%02d:%02d",
+ hours, minutes, seconds);
}
- return PyString_FromStringAndSize(buf, pbuf - buf);
-
- Fail:
- PyErr_SetString(PyExc_SystemError, "goofy result from PyOS_snprintf");
- return NULL;
}
/* Pickle support, a simple use of __reduce__. */
More information about the Python-3000-checkins
mailing list