aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2014-12-02 16:32:56 +0000
committerRon Yorston <rmy@pobox.com>2014-12-02 16:32:56 +0000
commita85d49580e2c1251d7ea9eebad672f802d82ec40 (patch)
treeec103aca9e39eb690a92a2ad5e5f03c97af25ae6
parent7ef60bda00dc4b2fbccf67a40885569ab45eb7aa (diff)
downloadbusybox-w32-a85d49580e2c1251d7ea9eebad672f802d82ec40.tar.gz
busybox-w32-a85d49580e2c1251d7ea9eebad672f802d82ec40.tar.bz2
busybox-w32-a85d49580e2c1251d7ea9eebad672f802d82ec40.zip
date: add support for %s format
-rw-r--r--win32/mingw.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/win32/mingw.c b/win32/mingw.c
index eeafd7d75..8a124147a 100644
--- a/win32/mingw.c
+++ b/win32/mingw.c
@@ -837,11 +837,14 @@ size_t mingw_strftime(char *buf, size_t max, const char *format, const struct tm
837 size_t ret; 837 size_t ret;
838 char day[3]; 838 char day[3];
839 char *t; 839 char *t;
840 char *fmt; 840 char *fmt, *newfmt;
841 struct tm tm2;
842 int m;
841 843
842 /* 844 /*
843 * Emulate the '%e' format that Windows' strftime lacks. Happily, the 845 * Emulate the '%e' and '%s' formats that Windows' strftime lacks.
844 * string that replaces '%e' is always two characters long. 846 * Happily, the string that replaces '%e' is two characters long.
847 * '%s' is a bit more complicated.
845 */ 848 */
846 fmt = xstrdup(format); 849 fmt = xstrdup(format);
847 for ( t=fmt; *t; ++t ) { 850 for ( t=fmt; *t; ++t ) {
@@ -855,6 +858,15 @@ size_t mingw_strftime(char *buf, size_t max, const char *format, const struct tm
855 } 858 }
856 memcpy(t++, day, 2); 859 memcpy(t++, day, 2);
857 } 860 }
861 else if ( t[1] == 's' ) {
862 *t = '\0';
863 m = t - fmt;
864 tm2 = *tm;
865 newfmt = xasprintf("%s%d%s", fmt, (int)mktime(&tm2), t+2);
866 free(fmt);
867 t = newfmt + m + 1;
868 fmt = newfmt;
869 }
858 else if ( t[1] != '\0' ) { 870 else if ( t[1] != '\0' ) {
859 ++t; 871 ++t;
860 } 872 }