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:
commit
804254fe2e
118
src/echo.c
118
src/echo.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue