]> git.sur5r.net Git - cc65/commitdiff
Fixed %W/%U
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 13 Nov 2002 18:08:36 +0000 (18:08 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 13 Nov 2002 18:08:36 +0000 (18:08 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1517 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/strftime.c

index 467d13516452c958f896503434a2dbf77298d289..803c3d8cd0d8803dde4e9b5b29672274d0912f68 100644 (file)
@@ -67,7 +67,6 @@ size_t __fastcall__ strftime (char* buf, size_t bufsize, const char* format,
     char        c;
     char        arg[40];
     const char* argptr;
-    unsigned    week;
 
     /* Copy until we reach the end of the format string or a format specifier */
     count = 0;
@@ -132,20 +131,12 @@ size_t __fastcall__ strftime (char* buf, size_t bufsize, const char* format,
                     break;
 
                 case 'U':
-                    week = tm->tm_yday / 7;
-                    if (tm->tm_mday % 7 > tm->tm_wday) {
-                        ++week;
-                    }
-                    sprintf (arg, "%02u", week);
+                    sprintf (arg, "%02d", (tm->tm_yday + 7 - tm->tm_wday) / 7);
                     break;
 
                 case 'W':
-                    /* ### This one is buggy */
-                    week = tm->tm_yday / 7;
-                    if (tm->tm_mday % 7 > tm->tm_wday) {
-                        ++week;
-                    }
-                    sprintf (arg, "%2u", week);
+                    sprintf (arg, "%02d", 
+                             (tm->tm_yday + 7 - (tm->tm_wday? tm->tm_wday - 1 : 6)) / 7);
                     break;
 
                 case 'X':