/* Unified header */
printf("%-16s", title);
ret = print_path_escaped(out_path);
- if (!fmt)
+ if (!fmt) {
+ putchar('\n');
return 0;
- /* Short paths ale aligned to 32 chars */
- while (ret++ < 32)
+ }
+ /* Short paths are aligned to 32 chars; longer paths get a single space */
+ do {
putchar(' ');
+ } while (++ret < 32);
va_start(args, fmt);
/* Operation specified ones */
vprintf(fmt, args);
static int sprintf_timespec(struct timespec *ts, char *dest, int max_size)
{
- struct tm *tm;
+ struct tm tm;
int ret;
- tm = localtime(&ts->tv_sec);
- if (!tm) {
+ if (!localtime_r(&ts->tv_sec, &tm)) {
error("failed to convert time %lld.%.9ld to local time",
(long long)ts->tv_sec, ts->tv_nsec);
return -EINVAL;
}
- ret = strftime(dest, max_size, "%FT%T%z", tm);
+ ret = strftime(dest, max_size, "%FT%T%z", &tm);
if (ret == 0) {
error(
"time %lld.%ld is too long to convert into readable string",