- while ((p = *ap++) != NULL) {
- while ((c = *p++) != '\0') {
- if (c == '\\' && eflag) {
- switch (c = *p++) {
- case 'a': c = '\007'; break;
- case 'b': c = '\b'; break;
- case 'c': exit( 0); /* exit */
- case 'f': c = '\f'; break;
- case 'n': c = '\n'; break;
- case 'r': c = '\r'; break;
- case 't': c = '\t'; break;
- case 'v': c = '\v'; break;
- case '\\': break; /* c = '\\' */
- case '0': case '1': case '2': case '3':
- case '4': case '5': case '6': case '7':
- c -= '0';
- if (*p >= '0' && *p <= '7')
- c = c * 8 + (*p++ - '0');
- if (*p >= '0' && *p <= '7')
- c = c * 8 + (*p++ - '0');
- break;
- default:
- p--;
- break;
+
+just_echo:
+ while (argc > 0) {
+ const char *arg = argv[0];
+ register int c;
+
+ while ((c = *arg++)) {
+
+ /* Check for escape sequence. */
+ if (c == '\\' && eflag && *arg) {
+ if (*arg == 'c') {
+ /* '\c' means cancel newline. */
+ nflag = 1;
+ arg++;
+ continue;
+ } else {
+ c = process_escape_sequence(&arg);