#include "util.h"
#include <stdint.h>
+#include <inttypes.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
error += tcsetattr(STDIN_FILENO, TCSANOW, &Otty); // reset attributes
}
- return ( error == 0 ? cnt : -1 );
+ return cnt;
}
char getch(void)
const size_t min_str_len, const size_t spaces_between, bool uppercase) {
char *tmp = (char *)buf;
- size_t i;
- memset(tmp, 0x00, hex_max_len);
- int maxLen = ( hex_len > hex_max_len) ? hex_max_len : hex_len;
+ int maxLen = (hex_len > hex_max_len) ? hex_max_len : hex_len;
- for (i = 0; i < maxLen; ++i, tmp += 2 + spaces_between) {
+ for (int i = 0; i < maxLen; ++i, tmp += 2 + spaces_between) {
sprintf(tmp, (uppercase) ? "%02X" : "%02x", (unsigned int) hex_data[i]);
- for (int j = 0; j < spaces_between; j++)
- sprintf(tmp + 2 + j, " ");
+ if (i != maxLen - 1)
+ for (int j = 0; j < spaces_between; j++)
+ sprintf(tmp + 2 + j, " ");
}
- i *= (2 + spaces_between);
- int minStrLen = min_str_len > i ? min_str_len : 0;
+ size_t len = strlen(tmp);
+ int minStrLen = min_str_len > len ? min_str_len : 0;
if (minStrLen > hex_max_len)
minStrLen = hex_max_len;
- for(; i < minStrLen; i++, tmp += 1)
+ for (int i = len; i < minStrLen; i++, tmp += 1)
sprintf(tmp, " ");
return;
}
if (strlen(buf) >= 2) {
- sscanf(buf, "%x", &temp);
+ sscanf(buf, "%" SCNx32, &temp);
data[*datalen] = (uint8_t)(temp & 0xff);
*buf = 0;
(*datalen)++;