gplv3/sysvinit/sysvinit/log_timestamp.patch

36 lines
1.0 KiB
Diff

---
sysvinit-2.88dsf/src/bootlogd.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
--- a/sysvinit-2.88dsf/src/bootlogd.c
+++ b/sysvinit-2.88dsf/src/bootlogd.c
@@ -352,17 +352,26 @@ int consolename(char *res, int rlen)
void writelog(FILE *fp, unsigned char *ptr, int len)
{
time_t t;
+ struct timespec ts;
char *s;
char tmp[8];
+ char time_buf[64];
int olen = len;
int dosync = 0;
int tlen;
+ int pos;
while (len > 0) {
tmp[0] = 0;
if (didnl) {
- time(&t);
- s = ctime(&t);
+ clock_gettime(CLOCK_REALTIME, &ts);
+ pos = strftime(time_buf, sizeof(time_buf), "%FT%T", localtime(&ts.tv_sec));
+ if (pos > 0) {
+ snprintf(&time_buf[pos], sizeof(time_buf) - pos, ".%03ld", ts.tv_nsec/1000000);
+ s = time_buf;
+ }
+ else
+ s = ctime(&ts.tv_sec);
fprintf(fp, "%.24s: ", s);
didnl = 0;
}