added PrintAndLogEx for merge commits between repo easier than now

This commit is contained in:
merlokk 2018-11-19 11:36:57 +02:00
commit d535391708
4 changed files with 117 additions and 0 deletions

View file

@ -16,6 +16,7 @@
#include "emv/dump.h" #include "emv/dump.h"
#include "asn1dump.h" #include "asn1dump.h"
#include "util.h" #include "util.h"
#include "ui.h" // PrintAndLog
int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval) { int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval) {
if (!signature || !signaturelen || !rval || !sval) if (!signature || !signaturelen || !rval || !sval)

View file

@ -16,6 +16,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <readline/readline.h> #include <readline/readline.h>
#include <pthread.h> #include <pthread.h>
#include "util.h"
#endif #endif
#include "ui.h" #include "ui.h"
@ -32,6 +33,77 @@ static char *logfilename = "proxmark3.log";
#ifndef EXTERNAL_PRINTANDLOG #ifndef EXTERNAL_PRINTANDLOG
static pthread_mutex_t print_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t print_lock = PTHREAD_MUTEX_INITIALIZER;
void PrintAndLogEx(logLevel_t level, char *fmt, ...) {
// skip debug messages if client debugging is turned off i.e. 'DATA SETDEBUG 0'
// if (g_debugMode == 0 && level == DEBUG)
// return;
char buffer[MAX_PRINT_BUFFER] = {0};
char buffer2[MAX_PRINT_BUFFER] = {0};
char prefix[20] = {0};
char *token = NULL;
int size = 0;
// {NORMAL, SUCCESS, INFO, FAILED, WARNING, ERR, DEBUG}
static char *prefixes[7] = { "", "", "INFO: ", "FAILED: ", "WARNING: ", "ERROR: ", "#: "};
switch( level ) {
case FAILED:
strncpy(prefix,_RED_(FAILED: ), sizeof(prefix)-1);
break;
case DEBUG:
strncpy(prefix,_BLUE_(#: ), sizeof(prefix)-1);
break;
case SUCCESS:
strncpy(prefix,_GREEN_( ), sizeof(prefix)-1);
break;
case WARNING:
strncpy(prefix,_CYAN_(WARNING: ), sizeof(prefix)-1);
break;
default:
strncpy(prefix, prefixes[level], sizeof(prefix)-1);
break;
}
va_list args;
va_start(args, fmt);
vsnprintf(buffer, sizeof(buffer), fmt, args);
va_end(args);
// no prefixes for normal
if ( level == NORMAL ) {
PrintAndLog(buffer);
return;
}
if (strchr(buffer, '\n')) {
const char delim[2] = "\n";
// line starts with newline
if (buffer[0] == '\n')
PrintAndLog("");
token = strtok(buffer, delim);
while (token != NULL) {
size = strlen(buffer2);
if (strlen(token))
snprintf(buffer2+size, sizeof(buffer2)-size, "%s%s\n", prefix, token);
else
snprintf(buffer2+size, sizeof(buffer2)-size, "\n");
token = strtok(NULL, delim);
}
PrintAndLog(buffer2);
} else {
snprintf(buffer2, sizeof(buffer2), "%s%s", prefix, buffer);
PrintAndLog(buffer2);
}
}
void PrintAndLog(char *fmt, ...) void PrintAndLog(char *fmt, ...)
{ {
char *saved_line; char *saved_line;

View file

@ -14,11 +14,15 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
#define MAX_PRINT_BUFFER 2048
typedef enum logLevel {NORMAL, SUCCESS, INFO, FAILED, WARNING, ERR, DEBUG} logLevel_t;
void ShowGui(void); void ShowGui(void);
void HideGraphWindow(void); void HideGraphWindow(void);
void ShowGraphWindow(void); void ShowGraphWindow(void);
void RepaintGraphWindow(void); void RepaintGraphWindow(void);
void PrintAndLog(char *fmt, ...); void PrintAndLog(char *fmt, ...);
void PrintAndLogEx(logLevel_t level, char *fmt, ...);
void SetLogFilename(char *fn); void SetLogFilename(char *fn);
void SetFlushAfterWrite(bool flush_after_write); void SetFlushAfterWrite(bool flush_after_write);

View file

@ -35,6 +35,46 @@
#define FILE_PATH_SIZE 2000 #define FILE_PATH_SIZE 2000
#endif #endif
#ifndef ARRAYLEN
# define ARRAYLEN(x) (sizeof(x)/sizeof((x)[0]))
#endif
#if defined(__linux__) || (__APPLE__)
# define _BLUE_(s) "\x1b[34m" #s "\x1b[0m "
#else
# define _BLUE_(s) #s " "
#endif
#if defined(__linux__) || (__APPLE__)
# define _RED_(s) "\x1b[31m" #s "\x1b[0m "
#else
# define _RED_(s) #s " "
#endif
#if defined(__linux__) || (__APPLE__)
# define _GREEN_(s) "\x1b[32m" #s "\x1b[0m "
#else
# define _GREEN_(s) #s " "
#endif
#if defined(__linux__) || (__APPLE__)
# define _YELLOW_(s) "\x1b[33m" #s "\x1b[0m "
#else
# define _YELLOW_(s) #s " "
#endif
#if defined(__linux__) || (__APPLE__)
# define _MAGENTA_(s) "\x1b[35m" #s "\x1b[0m "
#else
# define _MAGENTA_(s) #s " "
#endif
#if defined(__linux__) || (__APPLE__)
# define _CYAN_(s) "\x1b[36m" #s "\x1b[0m "
#else
# define _CYAN_(s) #s " "
#endif
extern int ukbhit(void); extern int ukbhit(void);
extern void AddLogLine(char *fileName, char *extData, char *c); extern void AddLogLine(char *fileName, char *extData, char *c);