#pragma once

#include "fastfetch.h"
#include "common/time.h"

static inline const char* ffFindFileName(const char* file)
{
    const char* lastSlash = __builtin_strrchr(file, '/');
    #ifdef _WIN32
    if (lastSlash == NULL)
        lastSlash = __builtin_strrchr(file, '\\');
    #endif
    if (lastSlash != NULL)
        return lastSlash + 1;
    return file;
}

#ifndef NDEBUG
    #define FF_DEBUG_PRINT(file_, line_, format_, ...) \
        do { \
            if (instance.config.display.debugMode) \
                fprintf(stderr, "[%s%4d, %s] " format_ "\n", ffFindFileName(file_), line_, ffTimeToTimeStr(ffTimeGetNow()), ##__VA_ARGS__); \
        } while (0)
#else
    #define FF_DEBUG_PRINT(file_, line_, format_, ...) \
        do { } while (0)
#endif

#define FF_DEBUG(format, ...) FF_DEBUG_PRINT(__FILE__, __LINE__, format, ##__VA_ARGS__)

#if _WIN32
const char* ffDebugWin32Error(unsigned long errorCode);
#endif
