libbb: introduce and use strftime_[YYYYMMDD]HHMMSS()

function                                             old     new   delta
strftime_fmt                                           -      53     +53
strftime_YYYYMMDDHHMMSS                                -      12     +12
strftime_HHMMSS                                        -      12     +12
human_time                                            44      43      -1
fmtstr_t                                               9       -      -9
step_time                                            361     345     -16
watch_main                                           261     232     -29
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 0/3 up/down: 77/-55)             Total: 22 bytes
   text	   data	    bss	    dec	    hex	filename
 919203	    932	  17692	 937827	  e4f63	busybox_old
 919209	    932	  17692	 937833	  e4f69	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2013-03-29 12:30:33 +01:00
parent 6c852bfcad
commit 8f2cb7ab26
7 changed files with 35 additions and 12 deletions

View File

@ -16,7 +16,6 @@
#define LOGIN " login: "
static const char fmtstr_d[] ALIGN1 = "%A, %d %B %Y";
static const char fmtstr_t[] ALIGN1 = "%H:%M:%S";
void FAST_FUNC print_login_issue(const char *issue_file, const char *tty)
{
@ -73,7 +72,7 @@ void FAST_FUNC print_login_issue(const char *issue_file, const char *tty)
strftime(buf, sizeof(buf), fmtstr_d, localtime(&t));
break;
case 't':
strftime(buf, sizeof(buf), fmtstr_t, localtime(&t));
strftime_HHMMSS(buf, sizeof(buf), &t);
break;
case 'l':
outbuf = tty;

View File

@ -187,6 +187,27 @@ time_t FAST_FUNC validate_tm_time(const char *date_str, struct tm *ptm)
return t;
}
static char* strftime_fmt(char *buf, unsigned len, time_t *tp, const char *fmt)
{
time_t t;
if (!tp) {
tp = &t;
time(tp);
}
/* Returns pointer to NUL */
return buf + strftime(buf, len, fmt, localtime(tp));
}
char* FAST_FUNC strftime_HHMMSS(char *buf, unsigned len, time_t *tp)
{
return strftime_fmt(buf, len, tp, "%H:%M:%S");
}
char* FAST_FUNC strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp)
{
return strftime_fmt(buf, len, tp, "%Y-%m-%d %H:%M:%S");
}
#if ENABLE_MONOTONIC_SYSCALL
#include <sys/syscall.h>