2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-30 13:58:14 +00:00

Use gmtime_r() and localtime_r() instead of non-thread-safe versions.

Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Ben Pfaff
2013-04-04 23:31:15 -05:00
parent d5155945e0
commit 9b6937eb1f
4 changed files with 14 additions and 10 deletions

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc. * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -184,21 +184,21 @@ ds_put_printable(struct ds *ds, const char *s, size_t n)
} }
/* Writes the current time to 'string' based on 'template'. /* Writes the current time to 'string' based on 'template'.
* The current time is either localtime or UTC based on 'utc'. */ * The current time is either local time or UTC based on 'utc'. */
void void
ds_put_strftime(struct ds *ds, const char *template, bool utc) ds_put_strftime(struct ds *ds, const char *template, bool utc)
{ {
const struct tm *tm; struct tm tm;
time_t now = time_wall(); time_t now = time_wall();
if (utc) { if (utc) {
tm = gmtime(&now); gmtime_r(&now, &tm);
} else { } else {
tm = localtime(&now); localtime_r(&now, &tm);
} }
for (;;) { for (;;) {
size_t avail = ds->string ? ds->allocated - ds->length + 1 : 0; size_t avail = ds->string ? ds->allocated - ds->length + 1 : 0;
size_t used = strftime(&ds->string[ds->length], avail, template, tm); size_t used = strftime(&ds->string[ds->length], avail, template, &tm);
if (used) { if (used) {
ds->length += used; ds->length += used;
return; return;

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. * Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -222,7 +222,8 @@ static void
table_format_timestamp__(char *s, size_t size) table_format_timestamp__(char *s, size_t size)
{ {
time_t now = time_wall(); time_t now = time_wall();
strftime(s, size, "%Y-%m-%d %H:%M:%S", gmtime(&now)); struct tm tm;
strftime(s, size, "%Y-%m-%d %H:%M:%S", gmtime_r(&now, &tm));
} }
static void static void

View File

@@ -519,9 +519,10 @@ do_show_log(int argc, char *argv[])
date = shash_find_data(json_object(json), "_date"); date = shash_find_data(json_object(json), "_date");
if (date && date->type == JSON_INTEGER) { if (date && date->type == JSON_INTEGER) {
time_t t = json_integer(date); time_t t = json_integer(date);
struct tm tm;
char s[128]; char s[128];
strftime(s, sizeof s, "%Y-%m-%d %H:%M:%S", gmtime(&t)); strftime(s, sizeof s, "%Y-%m-%d %H:%M:%S", gmtime_r(&t, &tm));
printf(" %s", s); printf(" %s", s);
} }

View File

@@ -1358,9 +1358,11 @@ monitor_vconn(struct vconn *vconn)
if (timestamp) { if (timestamp) {
time_t now = time_wall(); time_t now = time_wall();
struct tm tm;
char s[32]; char s[32];
strftime(s, sizeof s, "%Y-%m-%d %H:%M:%S: ", gmtime(&now)); strftime(s, sizeof s, "%Y-%m-%d %H:%M:%S: ",
gmtime_r(&now, &tm));
fputs(s, stderr); fputs(s, stderr);
} }