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:
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user