]> git.pld-linux.org Git - packages/ash.git/blame - ash-echo.patch
- dropped pre-cvs changelog
[packages/ash.git] / ash-echo.patch
CommitLineData
cf7098dd
MM
1diff -urN netbsd-sh/bltin/echo.c ash-0.3.7.orig/bltin/echo.c
2--- netbsd-sh/bltin/echo.c Sun Nov 3 13:06:22 1996
3+++ ash-0.3.7.orig/bltin/echo.c Mon Apr 23 22:16:46 2001
4@@ -44,7 +44,13 @@
5
6 #define main echocmd
7
8+#ifdef _GNU_SOURCE
9+#include <stdio.h>
10+
11+#include "../mystring.h"
12+#else
13 #include "bltin.h"
14+#endif
15
16 /* #define eflag 1 */
17
18@@ -53,7 +59,6 @@
19 register char **ap;
20 register char *p;
21 register char c;
22- int count;
23 int nflag = 0;
24 #ifndef eflag
25 int eflag = 0;
26@@ -62,21 +67,26 @@
27 ap = argv;
28 if (argc)
29 ap++;
30- if ((p = *ap) != NULL) {
31+ while ((p = *ap) != NULL && *p == '-') {
32 if (equal(p, "-n")) {
33- nflag++;
34- ap++;
35+ nflag = 1;
36 } else if (equal(p, "-e")) {
37 #ifndef eflag
38- eflag++;
39+ eflag = 1;
40+#endif
41+ } else if (equal(p, "-E")) {
42+#ifndef eflag
43+ eflag = 0;
44 #endif
45- ap++;
46 }
47+ else break;
48+ ap++;
49 }
50 while ((p = *ap++) != NULL) {
51 while ((c = *p++) != '\0') {
52 if (c == '\\' && eflag) {
53- switch (*p++) {
54+ switch (c = *p++) {
55+ case 'a': c = '\007'; break;
56 case 'b': c = '\b'; break;
57 case 'c': return 0; /* exit */
58 case 'f': c = '\f'; break;
59@@ -85,11 +95,13 @@
60 case 't': c = '\t'; break;
61 case 'v': c = '\v'; break;
62 case '\\': break; /* c = '\\' */
63- case '0':
64- c = 0;
65- count = 3;
66- while (--count >= 0 && (unsigned)(*p - '0') < 8)
67- c = (c << 3) + (*p++ - '0');
68+ case '0': case '1': case '2': case '3':
69+ case '4': case '5': case '6': case '7':
70+ c -= '0';
71+ if (*p >= '0' && *p <= '7')
72+ c = c * 8 + (*p++ - '0');
73+ if (*p >= '0' && *p <= '7')
74+ c = c * 8 + (*p++ - '0');
75 break;
76 default:
77 p--;
78@@ -103,5 +115,12 @@
79 }
80 if (! nflag)
81 putchar('\n');
82+#ifdef _GNU_SOURCE
83+ fflush(stdout);
84+ if (ferror(stdout)) {
85+ clearerr(stdout);
86+ return 1;
87+ }
88+#endif
89 return 0;
90 }
91
This page took 0.044618 seconds and 4 git commands to generate.