static int TEST_ATTRIBUTE_()

in troubleshooting/resources/vscode/scripts/acutest.h [530:589]


static int TEST_ATTRIBUTE_(format (printf, 2, 3))
test_print_in_color_(int color, const char* fmt, ...)
{
    va_list args;
    char buffer[256];
    int n;

    va_start(args, fmt);
    vsnprintf(buffer, sizeof(buffer), fmt, args);
    va_end(args);
    buffer[sizeof(buffer)-1] = '\0';

    if(!test_colorize_) {
        return printf("%s", buffer);
    }

#if defined ACUTEST_UNIX_
    {
        const char* col_str;
        switch(color) {
            case TEST_COLOR_GREEN_:             col_str = "\033[0;32m"; break;
            case TEST_COLOR_RED_:               col_str = "\033[0;31m"; break;
            case TEST_COLOR_GREEN_INTENSIVE_:   col_str = "\033[1;32m"; break;
            case TEST_COLOR_RED_INTENSIVE_:     col_str = "\033[1;31m"; break;
            case TEST_COLOR_DEFAULT_INTENSIVE_: col_str = "\033[1m"; break;
            default:                            col_str = "\033[0m"; break;
        }
        printf("%s", col_str);
        n = printf("%s", buffer);
        printf("\033[0m");
        return n;
    }
#elif defined ACUTEST_WIN_
    {
        HANDLE h;
        CONSOLE_SCREEN_BUFFER_INFO info;
        WORD attr;

        h = GetStdHandle(STD_OUTPUT_HANDLE);
        GetConsoleScreenBufferInfo(h, &info);

        switch(color) {
            case TEST_COLOR_GREEN_:             attr = FOREGROUND_GREEN; break;
            case TEST_COLOR_RED_:               attr = FOREGROUND_RED; break;
            case TEST_COLOR_GREEN_INTENSIVE_:   attr = FOREGROUND_GREEN | FOREGROUND_INTENSITY; break;
            case TEST_COLOR_RED_INTENSIVE_:     attr = FOREGROUND_RED | FOREGROUND_INTENSITY; break;
            case TEST_COLOR_DEFAULT_INTENSIVE_: attr = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY; break;
            default:                            attr = 0; break;
        }
        if(attr != 0)
            SetConsoleTextAttribute(h, attr);
        n = printf("%s", buffer);
        SetConsoleTextAttribute(h, info.wAttributes);
        return n;
    }
#else
    n = printf("%s", buffer);
    return n;
#endif
}