root/src/bin/debug/strace/util.cpp
/*
 * Copyright 2025, Haiku Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 */


#include "util.h"


string
format_timespec(Context &context, timespec time)
{
        if ((time.tv_sec == 0 && time.tv_nsec == 0) || time.tv_nsec > 999999999)
                return "timespec error";
        time_t t = (time_t)time.tv_sec;
        const struct tm *timep = localtime(&t);
        char buf[64];
        size_t bytes = strftime(buf, sizeof(buf), "%FT%T", timep);
        if (bytes == 0)
                return "strftime error";
        char tmp[256];
        snprintf(tmp, sizeof(tmp), "{tv_sec=%" B_PRIdTIME " /* %s */, tv_nsec=%ld}",
                time.tv_sec, buf, time.tv_nsec);
        return tmp;
}


string
format_unsigned(uint32 value)
{
        char tmp[12];
        snprintf(tmp, sizeof(tmp), "%" B_PRIu32, value);
        return tmp;
}


string
format_unsigned64(uint64 value)
{
        char tmp[24];
        snprintf(tmp, sizeof(tmp), "%" B_PRIu64, value);
        return tmp;
}