Colors everywhere

This commit is contained in:
xamidev
2024-06-02 12:30:56 +02:00
parent 9ae9cbf8b9
commit 8c0255d502
3 changed files with 9 additions and 16 deletions

23
hex.c
View File

@@ -1,11 +1,8 @@
#include <stdio.h> #include <stdio.h>
#include <ctype.h> #include <ctype.h>
// TODO: Position printing
// TODO: Stop appending garbage at file end // TODO: Stop appending garbage at file end
// TODO: Skip repeating lines // TODO: Skip repeating lines
// TODO: Coloring printable ASCII characters in output
// TODO: Stop scanning always for cmd & loc (for q and s commands)
#define BYTES 1024 #define BYTES 1024
#define BYTES_PER_LINE 20 #define BYTES_PER_LINE 20
@@ -14,7 +11,6 @@ void print_hex(unsigned char* buf, int byteno, int pos)
{ {
for (int i=0; i<byteno; i++) for (int i=0; i<byteno; i++)
{ {
// Print line number here
if (i % BYTES_PER_LINE == 0) if (i % BYTES_PER_LINE == 0)
{ {
//printf("%03d: ", lineno); //printf("%03d: ", lineno);
@@ -23,18 +19,15 @@ void print_hex(unsigned char* buf, int byteno, int pos)
printf(" "); printf(" ");
for (int j=i-BYTES_PER_LINE; j<i; j++) for (int j=i-BYTES_PER_LINE; j<i; j++)
{ {
if (isprint(buf[j])) printf("%c", buf[j]); if (isprint(buf[j])) printf("\x1b[33m%c\x1b[0m", buf[j]);
else printf("."); else printf(".");
} }
} }
puts(""); puts("");
// Here, we could print positions in hex but I prefer using integers. // Here, we could print positions in hex but I prefer using integers. printf("%04X ", i);
//printf("%04X ", i); if (pos == 0) printf("\x1b[1;34m%06d:\x1b[0m ", i);
else printf("\x1b[34m%06d:\x1b[0m ", pos);
if (pos == 0) printf("%06d: ", i);
else printf("%06d: ", pos);
} }
printf("%.2X ", buf[i]); printf("%.2X ", buf[i]);
} }
@@ -45,17 +38,15 @@ void print_hex(unsigned char* buf, int byteno, int pos)
for (int i=0; i<padding; i++) printf(" "); for (int i=0; i<padding; i++) printf(" ");
printf(" "); printf(" ");
} }
int start = byteno - (byteno % BYTES_PER_LINE); int start = byteno - (byteno % BYTES_PER_LINE);
for (int j = start; j < byteno; j++) { for (int j = start; j < byteno; j++) {
if (isprint(buf[j])) { if (isprint(buf[j])) {
printf("%c", buf[j]); printf("\x1b[33m%c\x1b[0m", buf[j]);
} }
else { else {
printf("."); printf(".");
} }
} }
puts(""); puts("");
} }
@@ -77,7 +68,9 @@ int main(int argc, char** argv)
char cmd; char cmd;
int loc; int loc;
scanf("%c%d", &cmd, &loc); scanf(" %c", &cmd);
if (cmd == 'p' || cmd == 'P' || cmd == 'e' || cmd == 'E') scanf("%d", &loc);
switch(cmd) switch(cmd)
{ {
case 'p': case 'p':

BIN
minihex

Binary file not shown.

View File

@@ -1,3 +1,3 @@
?ello, from a text file. ?eÿlo, from a text file.
This is a public service announcement This is a public service announcement
brought to you in part by Slim Shady lol brought to you in part by Slim Shady lol