diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-05-06 00:39:44 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-05-06 00:39:44 -0400 |
commit | d8f2c10b7108fff6b7e437291093a1cadc15ab9f (patch) | |
tree | 3fc50a19d6fbb9c94a8fe147cd2a6c4ba7f59b8d /src/commands/echo.c | |
parent | ansii c (diff) | |
download | lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.tar.gz lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.tar.bz2 lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.zip |
refactor
Diffstat (limited to 'src/commands/echo.c')
-rw-r--r-- | src/commands/echo.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/src/commands/echo.c b/src/commands/echo.c deleted file mode 100644 index fe70a6a..0000000 --- a/src/commands/echo.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "../command.h" - -static struct { - bool escape_codes; - bool newline; -} flags; - -static void print_with_escape_codes(const char* str) { - - size_t index = 0; - char n; - - while (true) { - char c = str[index]; - index++; - - if (c == '\0') break; - if (c != '\\') { - putchar(c); - continue; - } - - n = str[index]; - index++; - - switch (n) { - case '\\': - putchar('\\'); - break; - case 'b': - putchar('\b'); - break; - case 'c': - exit(EXIT_SUCCESS); - case 'n': - putchar('\n'); - break; - case 'r': - putchar('\r'); - break; - case 't': - putchar('\t'); - break; - case 'v': - putchar('\v'); - break; - default: - putchar(c); - putchar(n); - } - } -} - -static int short_arg(char c, char* next) { - UNUSED(next); - switch (c) { - case 'e': - flags.escape_codes = true; - break; - case 'E': - flags.escape_codes = false; - break; - case 'n': - flags.newline = false; - break; - default: - flags.newline = true; - flags.escape_codes = false; - return ARG_IGNORE; - }; - return ARG_UNUSED; -} - -COMMAND(echo) { - - int start, i; - - if (argc < 1) { - return EXIT_SUCCESS; - } - - flags.escape_codes = false; - flags.newline = true; - - start = parse_args(argc, argv, NULL, short_arg, NULL); - - for (i = start; i < argc; i++) { - if (flags.escape_codes) { - print_with_escape_codes(argv[i]); - } else { - printf("%s", argv[i]); - } - - if (i + 1 != argc) { - putchar(' '); - } - } - - if (flags.newline) { - putchar('\n'); - } - - return EXIT_SUCCESS; -} |