aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShav Kinderlehrer <[email protected]>2023-04-17 21:07:24 -0400
committerShav Kinderlehrer <[email protected]>2023-04-17 21:13:20 -0400
commit2abab7c9e85ccda8abf12f0bdf70f2a6a1c1ffa0 (patch)
tree11eaa6d8c5a69b4844f0b1bd70ec2859e5b0a398 /src
parentf853dabe7f3585ec856669c6711df08087b65cd8 (diff)
downloadlat-2abab7c9e85ccda8abf12f0bdf70f2a6a1c1ffa0.tar.gz
lat-2abab7c9e85ccda8abf12f0bdf70f2a6a1c1ffa0.zip
Add argsv0.8.0
- --binary
Diffstat (limited to 'src')
-rw-r--r--src/lib/arg.c19
-rw-r--r--src/main.c13
2 files changed, 24 insertions, 8 deletions
diff --git a/src/lib/arg.c b/src/lib/arg.c
index 104b836..95badbb 100644
--- a/src/lib/arg.c
+++ b/src/lib/arg.c
@@ -4,15 +4,18 @@
#include <stdlib.h>
#include <string.h>
-#define LAT_USAGE "usage: lat [-cnVh] [files..]"
+#define LAT_USAGE "usage: lat [-cnbVh] [files..]"
void help(void) {
printf("%s\n", LAT_USAGE);
printf("options:\n"
"\t-c, --color\t toggle whether to print color or not\n"
"\t-n, --lines\t toggle whether to print line numbers or not\n"
+ "\t-b, --binary\t toggle whether to force the data to be treated as "
+ "binary or not\n"
"\t-V, --version\t show program version\n"
"\t-h, --help\t display this help text\n");
+ printf("");
}
void version(void) {
@@ -37,6 +40,11 @@ void parselongarg(char *arg) {
return;
}
+ if (strcmp(arg, "--binary") == 0) {
+ conf.force_binary = !conf.force_binary;
+ return;
+ }
+
if (strcmp(arg, "--help") == 0) {
help();
exit(EXIT_SUCCESS);
@@ -63,14 +71,17 @@ void parseshortarg(char *arg) {
case 'n':
conf.lines = !conf.lines;
break;
- case 'h':
- help();
- exit(EXIT_SUCCESS);
+ case 'b':
+ conf.force_binary = !conf.force_binary;
break;
case 'V':
version();
exit(EXIT_SUCCESS);
break;
+ case 'h':
+ help();
+ exit(EXIT_SUCCESS);
+ break;
default: {
char *str = malloc(2);
str[0] = c;
diff --git a/src/main.c b/src/main.c
index 3478b71..13d0bf8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -23,6 +23,10 @@ void run(FILE *fp, char *filename, bool tty) {
struct filedata f;
f = readfile(fp, conf.stdin);
+ if (conf.force_binary) {
+ f.binary = !f.binary;
+ }
+
if (tty) {
char *addon = f.binary ? "<binary>" : "";
fprintf(stderr, "\r\x1b[2K%s%s%s%s\r\n", invert_t, basename(filename),
@@ -35,18 +39,18 @@ void run(FILE *fp, char *filename, bool tty) {
}
if (conf.process) {
- int linecount = 0;
-
+ int linecount = 1;
for (int i = 0; i < f.lc; i++) {
if (conf.lines) {
char *padding = linepad(linecount, f.lc);
- printf("%s%s%d:%s %s\n", grey, padding, i + 1, reset, f.lines[i].buf);
+ printf("%s%s%d:%s ", grey, padding, i + 1, reset);
+ fwrite(f.lines[i].buf, 1, f.lines[i].len, stdout);
+ printf("\n");
free(padding);
linecount++;
} else {
printf("%s\n", f.lines[i].buf);
}
-
free(f.lines[i].buf);
}
} else {
@@ -66,6 +70,7 @@ void run(FILE *fp, char *filename, bool tty) {
void initconf(void) {
conf.stdin = false;
+ conf.force_binary = false;
conf.process = true;
conf.color = true;
conf.lines = true;