Merge pull request 'while loop more efficient' (#2) from robyndrake/coreutils:main into main

Reviewed-on: https://codeberg.org/GRU/coreutils/pulls/2
This commit is contained in:
g1n 2021-12-25 10:28:16 +01:00
commit 804254fe2e
1 changed files with 59 additions and 59 deletions

View File

@ -3,63 +3,63 @@
#include <stdbool.h> #include <stdbool.h>
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
bool newline = true; // Enables newline in the end (to disable use arg -n) bool newline = true; // Enables newline in the end (to disable use arg -n)
bool escapes = false; // Enables backslash-escaped characters (to enable use arg -e) bool escapes = false; // Enables backslash-escaped characters (to enable use arg -e)
for (int i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-n")) { if (!strcmp(argv[i], "-n")) {
newline = false; newline = false;
} else if (!strcmp(argv[i], "-e")) { } else if (!strcmp(argv[i], "-e")) {
escapes = true; escapes = true;
} else if (!strcmp(argv[i], "-E")) { } else if (!strcmp(argv[i], "-E")) {
escapes = false; escapes = false;
} else { } else {
if (escapes) { if (escapes) {
for (size_t j = 0; j < strlen(argv[i]); j++) { for (size_t j = 0; j < strlen(argv[i]); j++) {
if (argv[i][j] == '\\') { if (argv[i][j] == '\\') {
j++; j++;
switch(argv[i][j]) { switch(argv[i][j]) {
case 'b': case 'b':
printf("\b"); putchar('\b');
break; break;
case 'c': case 'c':
return 0; return 0;
case 'e': case 'e':
printf("\e"); putchar('\e');
break; break;
case 'f': case 'f':
printf("\f"); putchar('\f');
break; break;
case 'n': case 'n':
printf("\n"); putchar('\n');
break; break;
case 'r': case 'r':
printf("\r"); putchar('\r');
break; break;
case 't': case 't':
printf("\t"); putchar('\t');
break; break;
case 'v': case 'v':
printf("\v"); putchar('\v');
break; break;
case '\\': case '\\':
printf("\\"); putchar("\\");
break; break;
default: default:
printf("\\%c", argv[i][j]); printf("\\%c", argv[i][j]);
} }
} else { } else {
printf("%c", argv[i][j]); printf("%c", argv[i][j]);
} }
} }
} else { } else {
printf("%s", argv[i]); printf("%s", argv[i]);
} }
if (i < argc - 1) if (i < argc - 1)
printf(" "); putchar(' ');
} }
} }
if (newline) { if (newline) {
printf("\n"); putchar('\n');
} }
return 0; return 0;
} }