]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/util.c
start updating 'hf mfu' commands (#818)
[proxmark3-svn] / client / util.c
index 242a8a2840fa150c8700443dbbc92daf4d5e10ea..eef97e2abc7d584f0a2b77b7ace367844151a3ff 100644 (file)
@@ -16,6 +16,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <time.h>
+#include <stdarg.h>
 
 #ifdef _WIN32
 #include <windows.h>
@@ -51,7 +52,22 @@ int ukbhit(void)
   return ( error == 0 ? cnt : -1 );
 }
 
-#else
+char getch(void)
+{
+       char c;
+       int error;
+       struct termios Otty, Ntty;
+       if ( tcgetattr(STDIN_FILENO, &Otty) == -1 ) return -1;
+       Ntty = Otty;
+       Ntty.c_lflag &= ~ICANON; /* disable buffered i/o */
+       if (0 == (error = tcsetattr(STDIN_FILENO, TCSANOW, &Ntty))) {   // set new attributes
+               c = getchar();
+               error += tcsetattr(STDIN_FILENO, TCSANOW, &Otty);           // reset attributes
+       }
+       return ( error == 0 ? c : -1 );
+}
+
+#else // _WIN32
 
 #include <conio.h>
 int ukbhit(void) {
@@ -139,6 +155,17 @@ int FillBuffer(uint8_t *data, size_t maxDataLength, size_t *dataLength, ...) {
        return 0;
 }
 
+bool CheckStringIsHEXValue(const char *value) {
+       for (int i = 0; i < strlen(value); i++)
+               if (!isxdigit(value[i]))
+                       return false;
+
+       if (strlen(value) % 2)
+               return false;
+       
+       return true;
+}
+
 void hex_to_buffer(const uint8_t *buf, const uint8_t *hex_data, const size_t hex_len, const size_t hex_max_len, 
        const size_t min_str_len, const size_t spaces_between, bool uppercase) {
                
@@ -241,6 +268,10 @@ char *sprint_ascii_ex(const uint8_t *data, const size_t len, const size_t min_st
        return buf;
 }
 
+char *sprint_ascii(const uint8_t *data, const size_t len) {
+    return sprint_ascii_ex(data, len, 0);
+}
+
 void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
 {
        while (len--) {
@@ -302,7 +333,7 @@ uint8_t *SwapEndian64(const uint8_t *src, const size_t len, const uint8_t blockS
 }
 
 //assumes little endian
-char * printBits(size_t const size, void const * const ptr)
+char *printBits(size_t const size, void const * const ptr)
 {
     unsigned char *b = (unsigned char*) ptr;   
     unsigned char byte;
Impressum, Datenschutz