Skip to content

Commit 42c1876

Browse files
committed
printed warnings+errors in color
if stderr is terminal code adapted from MartinPulec/gjtiff
1 parent 37604d1 commit 42c1876

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

src/gpujpeg_common.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,14 @@
4141
#include <stdbool.h>
4242
#include <string.h> // for strcmp, strerror, strlen, strrchr
4343
#if defined(_MSC_VER)
44+
#include <io.h> // for _isatty
4445
#include <windows.h>
46+
#define isatty _isatty
47+
#define fileno _fileno
4548
#define strcasecmp _stricmp
4649
#else
4750
#include <strings.h>
51+
#include <unistd.h> // for isatty
4852
#endif
4953
#ifdef GPUJPEG_USE_OPENGL
5054
#define GL_GLEXT_PROTOTYPES
@@ -2245,4 +2249,23 @@ gpujpeg_cuda_memcpy_async_partially_pinned(void* dst, const void* src, size_t co
22452249
return err;
22462250
}
22472251

2252+
const char* gj_fg_red = "";
2253+
const char* gj_fg_yellow = "";
2254+
const char* gj_term_reset = "";
2255+
void
2256+
gpujpeg_init_term_colors()
2257+
{
2258+
static bool init;
2259+
if ( init ) {
2260+
return;
2261+
}
2262+
if ( isatty(fileno(stderr)) ) {
2263+
// gj_fg_bold = "\033[1m";
2264+
gj_fg_red = "\033[31m";
2265+
gj_fg_yellow = "\033[33m";
2266+
gj_term_reset = "\033[0m";
2267+
}
2268+
init = true;
2269+
}
2270+
22482271
/* vi: set expandtab sw=4 : */

src/gpujpeg_common_internal.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,21 @@ enum {
116116

117117
#define PRINTF(...) (void)fprintf(stderr, __VA_ARGS__)
118118

119+
extern const char *gj_fg_red;
120+
extern const char *gj_fg_yellow;
121+
extern const char *gj_term_reset;
122+
// check __VA_OPT__ presence
123+
#if __STDC_VERSION__ >= 202311L || __cplusplus >= 202002L || __GNUC__ >= 12 || \
124+
__clang_major__ >= 9
125+
#define ERROR_MSG(fmt, ...) \
126+
(void)fprintf(stderr, "%s[GPUJPEG] [Error] " fmt "%s", gj_fg_red __VA_OPT__(, ) __VA_ARGS__, gj_term_reset)
127+
#define WARN_MSG(fmt, ...) \
128+
(void)fprintf(stderr, "%s[GPUJPEG] [Warning] " fmt "%s", gj_fg_yellow __VA_OPT__(, ) __VA_ARGS__, \
129+
gj_term_reset)
130+
#else
119131
#define ERROR_MSG(...) (void)fprintf(stderr, "[GPUJPEG] [Error] " __VA_ARGS__)
120132
#define WARN_MSG(...) (void)fprintf(stderr, "[GPUJPEG] [Warning] " __VA_ARGS__)
133+
#endif
121134
#define VERBOSE_MSG(log_level, ...) \
122135
if ( log_level >= GPUJPEG_LL_VERBOSE ) \
123136
(void)fprintf(stderr, "[GPUJPEG] [Verbose] " __VA_ARGS__)
@@ -522,6 +535,8 @@ gpujpeg_cuda_memcpy_async_partially_pinned(void* dst, const void* src, size_t co
522535

523536
void*
524537
gpujpeg_cuda_malloc_host(size_t size);
538+
void
539+
gpujpeg_init_term_colors();
525540

526541
#ifdef __cplusplus
527542
} // extern "C"

src/gpujpeg_decoder.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ gpujpeg_decoder_output_set_custom_cuda(struct gpujpeg_decoder_output* output, ui
9595
struct gpujpeg_decoder*
9696
gpujpeg_decoder_create(cudaStream_t stream)
9797
{
98+
gpujpeg_init_term_colors();
9899
struct gpujpeg_decoder* decoder = (struct gpujpeg_decoder*) calloc(1, sizeof(struct gpujpeg_decoder));
99100
if ( decoder == NULL )
100101
return NULL;

src/gpujpeg_encoder.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @file
3-
* Copyright (c) 2011-2024, CESNET z.s.p.o
3+
* Copyright (c) 2011-2025, CESNET
44
* Copyright (c) 2011, Silicon Genome, LLC.
55
*
66
* All rights reserved.
@@ -97,6 +97,7 @@ gpujpeg_encoder_input_texture(struct gpujpeg_opengl_texture* texture)
9797
struct gpujpeg_encoder*
9898
gpujpeg_encoder_create(cudaStream_t stream)
9999
{
100+
gpujpeg_init_term_colors();
100101
struct gpujpeg_encoder* encoder = (struct gpujpeg_encoder*) calloc(1, sizeof(struct gpujpeg_encoder));
101102
if ( encoder == NULL ) {
102103
return NULL;

0 commit comments

Comments
 (0)