diff --git a/client/ui.c b/client/ui.c index 56101cd80..31529a63f 100644 --- a/client/ui.c +++ b/client/ui.c @@ -22,6 +22,21 @@ bool showDemod = true; pthread_mutex_t print_lock = PTHREAD_MUTEX_INITIALIZER; static char *logfilename = "proxmark3.log"; +void PrintAndLogEx(logLevel_t level, char *fmt, ...) { + char buffer[MAX_PRINT_BUFFER] = {0}; + int size; + static char *prefix[7] = { "", "[+] ", "[=] ", "[-] ", "[!] ", "[!!] ", "[#] "}; + + size=strlen(prefix[level]); + strncpy(buffer, prefix[level], sizeof buffer); + + va_list args; + va_start(args,fmt); + vsnprintf(buffer + size, sizeof(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..83669d1d1 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, SUCCESS, INFO, FAILED, 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 *fmt, ...); extern void SetLogFilename(char *fn); extern double CursorScaleFactor;