summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libugly/asctime_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/libugly/asctime_r.c')
-rw-r--r--mdk-stage1/dietlibc/libugly/asctime_r.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libugly/asctime_r.c b/mdk-stage1/dietlibc/libugly/asctime_r.c
new file mode 100644
index 000000000..46325927c
--- /dev/null
+++ b/mdk-stage1/dietlibc/libugly/asctime_r.c
@@ -0,0 +1,29 @@
+#include <time.h>
+
+static const char days[] = "Sun Mon Tue Wed Thu Fri Sat ";
+static const char months[] = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ";
+
+static void num2str(char *c,int i) {
+ c[0]=i/10+'0';
+ c[1]=i%10+'0';
+}
+
+char *asctime_r(const struct tm *t, char *buf) {
+ /* "Wed Jun 30 21:49:08 1993\n" */
+ *(int*)buf=*(int*)(days+(t->tm_wday<<2));
+ *(int*)(buf+4)=*(int*)(months+(t->tm_mon<<2));
+ num2str(buf+8,t->tm_mday);
+ if (buf[8]=='0') buf[8]=' ';
+ buf[10]=' ';
+ num2str(buf+11,t->tm_hour);
+ if (buf[11]=='0') buf[11]=' ';
+ buf[13]=':';
+ num2str(buf+14,t->tm_min);
+ buf[16]=':';
+ num2str(buf+17,t->tm_sec);
+ buf[19]=' ';
+ num2str(buf+20,(t->tm_year+1900)/100);
+ num2str(buf+22,(t->tm_year+1900)%100);
+ buf[24]='\n';
+ return buf;
+}