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__. */
_______________________________________________
Python-3000-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000-checkins

Reply via email to