diff --git a/include/arg.h b/include/arg.h index 138a44b..2b18791 100644 --- a/include/arg.h +++ b/include/arg.h @@ -2,7 +2,7 @@ #define ARG_H #include -#define LAT_VERSION "0.9.2" +#define LAT_VERSION "0.9.3" struct config { bool stdin; @@ -10,7 +10,7 @@ struct config { bool color; bool lines; bool headers; - bool force_binary; + int force_binary; bool has_read_stdin; }; diff --git a/src/lib/arg.c b/src/lib/arg.c index 6f4d714..e25b1db 100644 --- a/src/lib/arg.c +++ b/src/lib/arg.c @@ -17,19 +17,26 @@ void help(void) { "\t-n, --lines\t toggle whether to print line numbers or not\n" "\t-t, --headers\t toggle whether to print file headers or not\n" "\t-b, --binary\t toggle whether to force the data to be treated as " - "binary or not\n" + "binary or not. see examples\n" "\t-V, --version\t show program version\n" "\t-h, --help\t display this help text\n\n"); printf("environment:\n" "\tNO_COLOR, see https://no-color.org/\n\n"); - printf("examples:\n" - "\tlat file1\n\t\t print the content of file1 witht default formatting\n" - "\tlat - file1\n\t\t read from stdin (the '-' character reads from stdin) " - "and then print the contents of stdin and file1\n" - "\tlat -nc file1 file2\n\t\t print the contents of file1 and file2 " - "without printing line numbers or colors\n" - "\tcurl example.com | lat\n\t\t pipe the results of 'curl example.com' " - "into lat\n"); + printf( + "examples:\n" + "\tlat file1\n\t\t print the content of file1 witht default formatting\n" + "\tlat - file1\n\t\t read from stdin (the '-' character reads from " + "stdin) " + "and then print the contents of stdin and file1\n" + "\tlat --lines --color file1 file2\n\t\t print the contents of file1 and " + "file2 " + "without printing line numbers or colors\n" + "\tlat --binary file.txt\n\t\t force file.txt to be treated as a binary " + "file\n" + "\tlat -bb file.txt\n\t\t force file.txt to NOT be treated as a binary " + "file\n" + "\tcurl example.com | lat\n\t\t pipe the results of 'curl example.com' " + "into lat\n"); } void version(void) { @@ -62,7 +69,10 @@ void parselongarg(char *arg) { } if (strcmp(arg, "--binary") == 0) { - conf.force_binary = !conf.force_binary; + if (conf.force_binary < 0) + conf.force_binary = 1; + else + conf.force_binary = !conf.force_binary; return; } @@ -96,7 +106,10 @@ void parseshortarg(char *arg) { conf.headers = !conf.headers; break; case 'b': - conf.force_binary = !conf.force_binary; + if (conf.force_binary < 0) + conf.force_binary = 1; + else + conf.force_binary = !conf.force_binary; break; case 'V': version(); diff --git a/src/main.c b/src/main.c index 72b4e9d..0ea8c0c 100644 --- a/src/main.c +++ b/src/main.c @@ -23,8 +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 (conf.force_binary > 0) { + f.binary = true; + } else if (conf.force_binary == 0) { + f.binary = false; } conf.headers = conf.headers && tty; // tty still overrides user @@ -72,7 +74,7 @@ void run(FILE *fp, char *filename, bool tty) { void initconf(void) { conf.stdin = false; - conf.force_binary = false; + conf.force_binary = -1; conf.has_read_stdin = false; conf.process = true; conf.headers = true;