btrfs-progs: send dump: use reentrant variant of localtime

Signed-off-by: David Sterba <dsterba@suse.com>
master
David Sterba 2016-11-07 12:00:28 +01:00
parent 798cec84dd
commit 590d8b2ee5
1 changed files with 3 additions and 4 deletions

View File

@ -271,16 +271,15 @@ static int print_chown(const char *path, u64 uid, u64 gid, void *user)
static int sprintf_timespec(struct timespec *ts, char *dest, int max_size) static int sprintf_timespec(struct timespec *ts, char *dest, int max_size)
{ {
struct tm *tm; struct tm tm;
int ret; int ret;
tm = localtime(&ts->tv_sec); if (!localtime_r(&ts->tv_sec, &tm)) {
if (!tm) {
error("failed to convert time %lld.%.9ld to local time", error("failed to convert time %lld.%.9ld to local time",
(long long)ts->tv_sec, ts->tv_nsec); (long long)ts->tv_sec, ts->tv_nsec);
return -EINVAL; return -EINVAL;
} }
ret = strftime(dest, max_size, "%FT%T%z", tm); ret = strftime(dest, max_size, "%FT%T%z", &tm);
if (ret == 0) { if (ret == 0) {
error( error(
"time %lld.%ld is too long to convert into readable string", "time %lld.%ld is too long to convert into readable string",