diff --git a/client/ui.c b/client/ui.c index 56101cd80..d0ed5d11e 100644 --- a/client/ui.c +++ b/client/ui.c @@ -22,6 +22,25 @@ bool showDemod = true; pthread_mutex_t print_lock = PTHREAD_MUTEX_INITIALIZER; static char *logfilename = "proxmark3.log"; +void PrintAndLogEx(logLevel_t level, char *filename, int lineno, char *func, char *fmt, ...) { + char buffer[MAX_PRINT_BUFFER] = {0}; + int size; + static char *prefix[5]; + prefix[0]=""; + prefix[1]=" [+] "; + prefix[2]=" [!] "; + prefix[3]=" [!!] "; + prefix[4]=" [#] "; + size=strlen(prefix[level]); + strncpy(buffer, prefix[level], MAX_PRINT_BUFFER); + + va_list args; + va_start(args,fmt); + vsprintf(buffer + size,fmt, args); + va_end(args); + PrintAndLog(buffer); +} + void PrintAndLog(char *fmt, ...) { char *saved_line; int saved_point; diff --git a/client/ui.h b/client/ui.h index 5c50b55db..6d554d3fc 100644 --- a/client/ui.h +++ b/client/ui.h @@ -28,11 +28,15 @@ #ifndef M_PI #define M_PI 3.14159265358979323846264338327 #endif +#define MAX_PRINT_BUFFER 2048 +typedef enum logLevel {NORMAL, INFO, WARNING, ERR, DEBUG} logLevel_t; + void ShowGui(void); void HideGraphWindow(void); void ShowGraphWindow(void); void RepaintGraphWindow(void); extern void PrintAndLog(char *fmt, ...); +void PrintAndLogEx(logLevel_t level, char *filename, int lineno, char *func, char *fmt, ...); extern void SetLogFilename(char *fn); extern double CursorScaleFactor;