summaryrefslogtreecommitdiff
path: root/src/commands/echo.c
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-05-06 00:39:44 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-05-06 00:39:44 -0400
commitd8f2c10b7108fff6b7e437291093a1cadc15ab9f (patch)
tree3fc50a19d6fbb9c94a8fe147cd2a6c4ba7f59b8d /src/commands/echo.c
parentansii c (diff)
downloadlazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.tar.gz
lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.tar.bz2
lazysphere-d8f2c10b7108fff6b7e437291093a1cadc15ab9f.zip
refactor
Diffstat (limited to 'src/commands/echo.c')
-rw-r--r--src/commands/echo.c104
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;
-}