scc

Simple C99 Compiler
Log | Files | Refs | README | LICENSE

commit 4647857edbfea51d3d55f8a6d938d7430a86c71f
parent 344fd675a32ccd273bc4e4ffccd938ebeefa941c
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Wed, 20 Jan 2016 17:40:41 +0100

Remove added blank lines

This lines were added because update.sh added an additional newline
to ensure that . was at the beginning of the line. It is not needed
because every line line will contain it (or you should change of editor)
This change makes that test010 is ok now.

Diffstat:
cc1/tests/chktest.sh | 2+-
cc1/tests/test001.c | 2--
cc1/tests/test002.c | 2--
cc1/tests/test003.c | 2--
cc1/tests/test004.c | 2--
cc1/tests/test005.c | 2--
cc1/tests/test006.c | 2--
cc1/tests/test007.c | 2--
cc1/tests/test008.c | 2--
cc1/tests/test009.c | 2--
cc1/tests/test010.c | 2--
cc1/tests/test011.c | 2--
cc1/tests/test012.c | 2--
cc1/tests/test013.c | 2--
cc1/tests/test014.c | 2--
cc1/tests/test015.c | 4+---
cc1/tests/test016.c | 2--
cc1/tests/test017.c | 2--
cc1/tests/test018.c | 2--
cc1/tests/test019.c | 2--
cc1/tests/test020.c | 6++----
cc1/tests/test021.c | 2--
cc1/tests/test022.c | 2--
cc1/tests/test023.c | 2--
cc1/tests/test024.c | 2--
cc1/tests/test025.c | 2--
cc1/tests/test026.c | 4+---
cc1/tests/test027.c | 2--
cc1/tests/test028.c | 2--
cc1/tests/test029.c | 6++----
cc1/tests/test030.c | 2--
cc1/tests/test031.c | 2+-
cc1/tests/test032.c | 2--
cc1/tests/test033.c | 2--
cc1/tests/test034.c | 6++----
cc1/tests/test035.c | 2--
cc1/tests/test036.c | 4+---
cc1/tests/test037.c | 4+---
cc1/tests/test038.c | 4+---
cc1/tests/test039.c | 2--
cc1/tests/test040.c | 2--
cc1/tests/test041.c | 14++++++--------
cc1/tests/test042.c | 4+---
cc1/tests/test043.c | 2--
cc1/tests/test044.c | 12+++++-------
cc1/tests/test045.c | 2--
cc1/tests/test046.c | 2--
cc1/tests/test047.c | 2--
cc1/tests/test048.c | 2--
cc1/tests/test049.c | 2--
cc1/tests/test050.c | 3+--
cc1/tests/test051.c | 2--
cc1/tests/test052.c | 2--
cc1/tests/test053.c | 2--
cc1/tests/test056.c | 2--
cc1/tests/test057.c | 2--
cc1/tests/test058.c | 2--
cc1/tests/test059.c | 6++----
cc1/tests/update.sh | 4++--
59 files changed, 30 insertions(+), 141 deletions(-)

diff --git a/cc1/tests/chktest.sh b/cc1/tests/chktest.sh @@ -13,7 +13,7 @@ do rm -f $chk awk '/^name:/ {printf "Running %s ", $2} /^error:$/ {copyon=1; next} - /^$/ || /^output:$/ {next;} + /^output:$/ {next} /^\*\// {copyon=0; next} copyon==1 {print > "'$chk'"}' $i diff --git a/cc1/tests/test001.c b/cc1/tests/test001.c @@ -2,7 +2,6 @@ name: TEST001 description: Basic hello world test error: - output: F3 I P E X4 F3 printf @@ -13,7 +12,6 @@ G6 F5 main X4 "68656C6C6F20776F726C640A00 'P pP cI r #I0 } - */ #include <stdio.h> diff --git a/cc1/tests/test002.c b/cc1/tests/test002.c @@ -2,7 +2,6 @@ name: TEST002 description: Test forward references before definition of types error: - output: G4 P x F7 I @@ -27,7 +26,6 @@ L14 b L13 } - */ struct S *x; diff --git a/cc1/tests/test003.c b/cc1/tests/test003.c @@ -2,7 +2,6 @@ name: TEST003 description: Select function to call inside ternary operator error: - output: F1 I G2 F1 foo @@ -20,7 +19,6 @@ G4 F1 main \ r G2 cI } - */ int diff --git a/cc1/tests/test004.c b/cc1/tests/test004.c @@ -2,7 +2,6 @@ name: TEST004 description: Test integer operations error: - output: F1 I E G2 F1 main @@ -29,7 +28,6 @@ A3 I x L4 r #I0 } - */ int diff --git a/cc1/tests/test005.c b/cc1/tests/test005.c @@ -2,7 +2,6 @@ name: TEST005 description: Test unary integer operations error: - output: F1 I E G2 F1 main @@ -19,7 +18,6 @@ A3 I x L4 r #I0 } - */ diff --git a/cc1/tests/test006.c b/cc1/tests/test006.c @@ -5,7 +5,6 @@ error: test006.c:6: warning: conditional expression is constant test006.c:8: warning: conditional expression is constant test006.c:11: warning: conditional expression is constant - output: G1 K c F2 I E @@ -34,7 +33,6 @@ L7 L5 r #I1 } - */ char c; diff --git a/cc1/tests/test007.c b/cc1/tests/test007.c @@ -2,7 +2,6 @@ name: TEST007 description: basic while test error: - output: F1 I E G2 F1 main @@ -20,7 +19,6 @@ L6 L5 r A3 } - */ int diff --git a/cc1/tests/test008.c b/cc1/tests/test008.c @@ -2,7 +2,6 @@ name: TEST008 description: Basic do while loop error: - output: F1 I E G2 F1 main @@ -24,7 +23,6 @@ L6 L7 r A3 #I14 -I } - */ int diff --git a/cc1/tests/test009.c b/cc1/tests/test009.c @@ -2,7 +2,6 @@ name: TEST009 description: Basic test for loops error: - output: F1 I E G2 F1 main @@ -23,7 +22,6 @@ L5 L7 r #I0 } - */ int diff --git a/cc1/tests/test010.c b/cc1/tests/test010.c @@ -5,7 +5,6 @@ error: test010.c:9: warning: conditional expression is constant test010.c:11: warning: conditional expression is constant test010.c:31: warning: conditional expression is constant - output: F1 I E G2 F1 main @@ -59,7 +58,6 @@ L17 L16 r A3 #IF -I } - */ #line 1 diff --git a/cc1/tests/test011.c b/cc1/tests/test011.c @@ -4,7 +4,6 @@ description: Basic test for goto error: test011.c:14: warning: 'foo' defined but not used test011.c:14: warning: 'start' defined but not used - output: F1 I E G2 F1 main @@ -20,7 +19,6 @@ L6 j L5 r #I1 } - */ #line 1 diff --git a/cc1/tests/test012.c b/cc1/tests/test012.c @@ -3,7 +3,6 @@ name: TEST012 description: Basic switch test error: test012.c:39: warning: 'foo' defined but not used - output: F1 I E G2 F1 main @@ -71,7 +70,6 @@ L23 f L26 L22 } - */ #line 1 diff --git a/cc1/tests/test013.c b/cc1/tests/test013.c @@ -5,7 +5,6 @@ comments: This test depends of the configuration in the type system. With the current configuration char is equal to unsigned char, short is equal to int, and unsigned short is equal to unsigned. error: - output: G1 I a G2 N b @@ -133,7 +132,6 @@ G13 F12 main G11 G10 gN :N G11 G9 gN :N } - */ int a; diff --git a/cc1/tests/test014.c b/cc1/tests/test014.c @@ -18,7 +18,6 @@ test014.c:34: error: invalid type specification test014.c:35: warning: 'f' defined but not used test014.c:35: warning: 'par' defined but not used test014.c:38: error: conflicting types for 'd' - output: G1 I a Y2 K b @@ -46,7 +45,6 @@ T17 F13 func3 R16 I par \ } - */ #line 1 diff --git a/cc1/tests/test015.c b/cc1/tests/test015.c @@ -2,8 +2,7 @@ name: TEST015 description: Stress namespace mechanism error: -test015.c:55: error: label 's' already defined - +test015.c:53: error: label 's' already defined output: S8 s2 M9 I s @@ -23,7 +22,6 @@ A17 I s r A17 r A16 M11 .S5 M6 .I A16 M11 .S5 M10 .S8 M9 .I +I L15 - */ typedef struct s s; diff --git a/cc1/tests/test016.c b/cc1/tests/test016.c @@ -4,7 +4,6 @@ description: Basic pointer test error: test016.c:43: error: redefinition of 'func2' test016.c:47: error: incompatible types when assigning - output: G1 I g F2 I @@ -42,7 +41,6 @@ L14 A11 #P0 :P r A10 } - */ #line 1 diff --git a/cc1/tests/test017.c b/cc1/tests/test017.c @@ -2,7 +2,6 @@ name: TEST017 description: Basic test about pointers and structs error: - output: F9 I E G10 F9 main @@ -26,7 +25,6 @@ L13 L14 r #I0 } - */ #line 1 diff --git a/cc1/tests/test018.c b/cc1/tests/test018.c @@ -2,7 +2,6 @@ name: TEST018 description: Basic test for arrays error: - output: F1 I E G2 F1 main @@ -33,7 +32,6 @@ L15 L16 r #I0 } - */ #line 1 diff --git a/cc1/tests/test019.c b/cc1/tests/test019.c @@ -5,7 +5,6 @@ description: Basic test of constant folding in integer arithmetic operations error: test019.c:13: warning: division by 0 test019.c:14: warning: division by 0 - output: F1 I G2 F1 main @@ -32,7 +31,6 @@ A3 I i A3 #I1 :I A3 #I0 :I } - */ #line 1 diff --git a/cc1/tests/test020.c b/cc1/tests/test020.c @@ -3,9 +3,8 @@ name: TEST020 description: Basic test for integer algebraic identities error: -test020.c:84: warning: division by 0 -test020.c:85: warning: division by 0 - +test020.c:82: warning: division by 0 +test020.c:83: warning: division by 0 output: F1 I G2 F1 main @@ -44,7 +43,6 @@ A3 I i A3 A3 #I0 /I :I A3 A3 #I0 %I :I } - */ int diff --git a/cc1/tests/test021.c b/cc1/tests/test021.c @@ -4,7 +4,6 @@ name: TEST021 description: Basic test for char constants comments: This test is done for z80 implementation error: - output: F1 I G2 F1 main @@ -23,7 +22,6 @@ A4 C sc A4 #C1 :C A4 #C41 :C } - */ int diff --git a/cc1/tests/test022.c b/cc1/tests/test022.c @@ -4,7 +4,6 @@ name: TEST022 description: Basic test for int constants comments: This test is done for z80 data types error: - output: F1 I G2 F1 main @@ -30,7 +29,6 @@ A4 N u A4 #N0 :N r #I0 } - */ int diff --git a/cc1/tests/test023.c b/cc1/tests/test023.c @@ -4,7 +4,6 @@ name: TEST023 description: Basic test for long constants comments: This test is done for z80 data types error: - output: F1 I G2 F1 main @@ -30,7 +29,6 @@ A4 Z u A4 #Z0 :Z r #I0 } - */ int diff --git a/cc1/tests/test024.c b/cc1/tests/test024.c @@ -4,7 +4,6 @@ name: TEST024 description: Basic test for long long constants comments: This test is done for z80 data types error: - output: F1 I G2 F1 main @@ -28,7 +27,6 @@ A4 O u A4 #O0 :O r #I0 } - */ int diff --git a/cc1/tests/test025.c b/cc1/tests/test025.c @@ -3,7 +3,6 @@ name: TEST025 descritpion: Test of ifdef and ifndef error: - output: G1 I a G2 I b @@ -15,7 +14,6 @@ G7 I e_ G8 I f_ G9 I h G10 I i - */ #define FOO diff --git a/cc1/tests/test026.c b/cc1/tests/test026.c @@ -3,7 +3,6 @@ name: TEST026 descritpion: Test of predefined cpp macros error: - output: F2 I G3 F2 main @@ -12,13 +11,12 @@ G3 F2 main A4 I y A6 P p A6 "746573743032362E6300 'P :P - A4 #I21 :I + A4 #I1F :I A4 #I1 :I A4 #I1 :I A4 #I1 :I A4 #I1 :I } - */ #define x(y) (y) diff --git a/cc1/tests/test027.c b/cc1/tests/test027.c @@ -3,7 +3,6 @@ name: TEST027 description: Test of cpp stringizer error: - output: F2 I G3 F2 main @@ -13,7 +12,6 @@ A5 P p A5 "68656C6C6F20697320626574746572207468616E2062796500 'P :P r A5 @K gI } - */ #define x(y) #y diff --git a/cc1/tests/test028.c b/cc1/tests/test028.c @@ -3,7 +3,6 @@ name: TEST028 description: Test of reinterpretation in define error: - output: F5 P G6 F5 foo @@ -11,7 +10,6 @@ G6 F5 foo \ r "686900 'P } - */ diff --git a/cc1/tests/test029.c b/cc1/tests/test029.c @@ -6,9 +6,8 @@ comments: f(2) will expand to 2*g, which will expand to 2*f, and in this moment f will not be expanded because the macro definition is a function alike macro, and in this case there is no arguments. error: -test029.c:37: error: redefinition of 'f1' -test029.c:38: error: 'f' undeclared - +test029.c:35: error: redefinition of 'f1' +test029.c:36: error: 'f' undeclared output: F2 I G3 F2 f1 @@ -17,7 +16,6 @@ G3 F2 f1 A4 I f A4 #I2 *I } - */ diff --git a/cc1/tests/test030.c b/cc1/tests/test030.c @@ -3,7 +3,6 @@ name: TEST030 description: Basic test for vararg functions error: - output: F13 I S2 P I E G14 F13 f1 @@ -33,7 +32,6 @@ A18 S2 f G14 A18 pS2 A18 'P pP #I2 pI #I1 pI A18 pS2 A18 'P pP cI r #I0 } - */ struct foo { diff --git a/cc1/tests/test031.c b/cc1/tests/test031.c @@ -3,7 +3,7 @@ name: TEST031 description: Test concatenation in preprocessor error: - +TODO output: */ diff --git a/cc1/tests/test032.c b/cc1/tests/test032.c @@ -3,7 +3,6 @@ name: TEST032 description: test special characters @ and $ in macro definitions error: - output: F3 I G4 F3 main @@ -13,7 +12,6 @@ A6 P p A6 "54686973206973206120737472696E672024206F722023206F72202323616E64206974206973206F6B202100 'P :P r A6 #P0 !I } - */ #define M1(x) "This is a string $ or # or ##" ## #x diff --git a/cc1/tests/test033.c b/cc1/tests/test033.c @@ -2,10 +2,8 @@ name: TEST033 description: test for #if defined() error: - output: G1 I c - */ #if defined(FOO) diff --git a/cc1/tests/test034.c b/cc1/tests/test034.c @@ -3,9 +3,8 @@ name: TEST034 description: Basic test for incomplete structures error: -test034.c:48: error: declared variable 'bar' of incomplete type -test034.c:48: error: redeclaration of 'bar' - +test034.c:46: error: declared variable 'bar' of incomplete type +test034.c:46: error: redeclaration of 'bar' output: X3 S2 x F4 I E @@ -23,7 +22,6 @@ G5 F4 foo r X3 M9 .I } X13 S11 bar2 - */ extern struct X x; diff --git a/cc1/tests/test035.c b/cc1/tests/test035.c @@ -3,7 +3,6 @@ name: TEST035 description: Basic test for enumerations error: - output: F6 I E G7 F6 main @@ -25,7 +24,6 @@ L11 L12 r #I0 } - */ enum E { diff --git a/cc1/tests/test036.c b/cc1/tests/test036.c @@ -3,8 +3,7 @@ name: TEST036 description: Duff's device error: -test036.c:63: warning: type defaults to 'int' in declaration - +test036.c:61: warning: type defaults to 'int' in declaration output: F4 I E G5 F4 send @@ -50,7 +49,6 @@ L9 v L10 #I0 L8 } - */ /* Disgusting, no? But it compiles and runs just fine. I feel a combination of diff --git a/cc1/tests/test037.c b/cc1/tests/test037.c @@ -4,10 +4,9 @@ name: TEST037 description: Basic sizeof test comments: This test is based in z80 sizes error: +test037.c:30: warning: conditional expression is constant test037.c:32: warning: conditional expression is constant test037.c:34: warning: conditional expression is constant -test037.c:36: warning: conditional expression is constant - output: F1 I E G2 F1 main @@ -24,7 +23,6 @@ L4 L5 r #I0 } - */ int main() diff --git a/cc1/tests/test038.c b/cc1/tests/test038.c @@ -3,8 +3,7 @@ name: TEST038 description: Basic test for tentative definitions error: -test038.c:48: error: redeclaration of 'x' - +test038.c:46: error: redeclaration of 'x' output: G1 I x ( @@ -24,7 +23,6 @@ G3 F2 main G1 #I0 :I r G1 } - */ int x; diff --git a/cc1/tests/test039.c b/cc1/tests/test039.c @@ -4,7 +4,6 @@ name: TEST039 description: Test of integer constants comments: This test is done for z80 sizes error: - output: F1 I G2 F1 main @@ -31,7 +30,6 @@ A8 O ull A8 #O1 :O r #I0 } - */ int diff --git a/cc1/tests/test040.c b/cc1/tests/test040.c @@ -2,7 +2,6 @@ name: TEST040 description: Test for bug parsing typenames in struct definition error: - output: F8 I G9 F8 main @@ -15,7 +14,6 @@ M7 P back A10 S2 List r A10 M4 .I } - */ typedef struct List List; diff --git a/cc1/tests/test041.c b/cc1/tests/test041.c @@ -2,13 +2,12 @@ name: TEST041 description: Test for bug parsing ternary operators error: -test041.c:51: error: type mismatch in conditional expression -test041.c:51: error: incompatible types when assigning -test041.c:52: error: used struct/union type value where scalar is required -test041.c:53: warning: 'i' defined but not used -test041.c:53: warning: 'foo' defined but not used -test041.c:53: warning: 's' defined but not used - +test041.c:49: error: type mismatch in conditional expression +test041.c:49: error: incompatible types when assigning +test041.c:50: error: used struct/union type value where scalar is required +test041.c:51: warning: 'i' defined but not used +test041.c:51: warning: 'foo' defined but not used +test041.c:51: warning: 's' defined but not used output: F1 I G2 F1 main @@ -29,7 +28,6 @@ A12 S10 foo A5 A3 #I0 !I A8 #P0 ?P :P A5 A3 #I0 !I A5 #P0 ?P :P A5 A3 #I0 !I #P0 A5 ?P :P - */ int diff --git a/cc1/tests/test042.c b/cc1/tests/test042.c @@ -2,8 +2,7 @@ name: TEST042 description: Test for bug parsing ternary operators error: -test042.c:22: error: bad type convertion requested - +test042.c:20: error: bad type convertion requested output: F1 I G2 F1 main @@ -11,7 +10,6 @@ G2 F1 main \ F3 0 X4 F3 f - */ int diff --git a/cc1/tests/test043.c b/cc1/tests/test043.c @@ -2,7 +2,6 @@ name: TEST043 description: Test for double typedef (taken from plan9 kernel) error: - output: F4 0 S2 Clock0link @@ -16,7 +15,6 @@ G11 F10 main G9 M6 .P @F4 c0 r #I0 } - */ typedef struct Clock0link Clock0link; diff --git a/cc1/tests/test044.c b/cc1/tests/test044.c @@ -2,14 +2,12 @@ name: TEST044 description: Test of corner cases in #if error: -test044.c:17: warning: division by 0 -test044.c:21: warning: division by 0 -test044.c:25: warning: division by 0 -test044.c:31: error: parameter of #if is not an integer constant expression -test044.c:32: error: #error 3 != (1,2,3) - +test044.c:15: warning: division by 0 +test044.c:19: warning: division by 0 +test044.c:23: warning: division by 0 +test044.c:29: error: parameter of #if is not an integer constant expression +test044.c:30: error: #error 3 != (1,2,3) output: - */ /* These should be accepted */ diff --git a/cc1/tests/test045.c b/cc1/tests/test045.c @@ -2,7 +2,6 @@ name: TEST045 description: Basic test of initializers error: - output: G1 I x ( @@ -17,7 +16,6 @@ G3 F2 main L4 r #I0 } - */ diff --git a/cc1/tests/test046.c b/cc1/tests/test046.c @@ -2,7 +2,6 @@ name: TEST046 description: Basic test for initializators error: - output: V1 I #3 G2 V1 x @@ -26,7 +25,6 @@ L7 L8 r #I0 } - */ int x[3] = {1, 2, 3}; diff --git a/cc1/tests/test047.c b/cc1/tests/test047.c @@ -2,7 +2,6 @@ name: TEST047 description: Basic test for initializer error: - output: S2 S M3 I a @@ -29,7 +28,6 @@ L10 L11 r #I0 } - */ diff --git a/cc1/tests/test048.c b/cc1/tests/test048.c @@ -2,7 +2,6 @@ name: TEST048 description: Basic test for initializer error: - output: S2 S M3 I a @@ -25,7 +24,6 @@ L9 L11 r #I0 } - */ struct S { diff --git a/cc1/tests/test049.c b/cc1/tests/test049.c @@ -2,7 +2,6 @@ name: TEST049 description: Basic test for initializer error: - output: G1 I x ( @@ -21,7 +20,6 @@ G5 F4 main L6 r #I0 } - */ int x = 5; diff --git a/cc1/tests/test050.c b/cc1/tests/test050.c @@ -2,9 +2,8 @@ name: TEST050 description: Basic test for initializer error: -TODO +TODO: output: - */ struct S { int a; int b; }; diff --git a/cc1/tests/test051.c b/cc1/tests/test051.c @@ -2,7 +2,6 @@ name: TEST051 description: Basic test for initializer error: - output: V1 I #3 G2 V1 arr @@ -26,7 +25,6 @@ L7 L8 r #I0 } - */ int arr[3] = {[2] = 2, [0] = 0, [1] = 1}; diff --git a/cc1/tests/test052.c b/cc1/tests/test052.c @@ -2,7 +2,6 @@ name: TEST052 description: Basic test for initializer error: - output: S2 S M3 I a @@ -33,7 +32,6 @@ L12 L13 r #I0 } - */ struct S {int a; int b;}; diff --git a/cc1/tests/test053.c b/cc1/tests/test053.c @@ -2,7 +2,6 @@ name: TEST053 description: Basic test for initializer error: - output: S2 S M3 I a @@ -24,7 +23,6 @@ L8 L9 r #I0 } - */ struct S {int a; int b;}; diff --git a/cc1/tests/test056.c b/cc1/tests/test056.c @@ -2,7 +2,6 @@ name: TEST056 desciption: Test of overlaying designators error: - output: V6 K #3 S2 S @@ -30,7 +29,6 @@ A13 V12 m A13 :V12 r G9 M7 .V6 'P #P2 +P @K gI gN #N0 !I } - */ struct S { diff --git a/cc1/tests/test057.c b/cc1/tests/test057.c @@ -3,7 +3,6 @@ name: TEST057 description: test of initialization of incomplete arrays error: - output: V1 I #3 V2 V1 #2 @@ -31,7 +30,6 @@ G6 F5 main \ r G3 'P #P6 +P #P4 +P @I G4 'P #P6 +P #P6 +P @I !I } - */ int arr1[][3] = { diff --git a/cc1/tests/test058.c b/cc1/tests/test058.c @@ -2,7 +2,6 @@ name: TEST058 description: Test of initialization mixing dsignators and sequence error: - output: V1 I #5 V2 V1 #3 @@ -46,7 +45,6 @@ G6 F5 main \ r G4 'P #PA +P #P8 +P @I G4 'P #P1E +P #PA +P #P8 +P @I !I } - */ int arr[][3][5] = { diff --git a/cc1/tests/test059.c b/cc1/tests/test059.c @@ -2,9 +2,8 @@ name: TEST059 description: Test of initalizers for strings error: -test059.c:33: warning: initializer-string for array of chars is too long -test059.c:35: error: array of inappropriate type initialized from string constant - +test059.c:31: warning: initializer-string for array of chars is too long +test059.c:33: error: array of inappropriate type initialized from string constant output: V1 K #4 G2 V1 s0 @@ -25,7 +24,6 @@ G9 P p ( "666F6F00 'P ) - */ char s0[] = "foo"; diff --git a/cc1/tests/update.sh b/cc1/tests/update.sh @@ -16,10 +16,10 @@ case $# in ../cc1 -I./ -w $i >$out 2>$err (echo '/^error/+;/^output/-c' cat $err - printf "\n.\n" + printf ".\n" echo '/^output/+;/^\*\//-c' cat $out - printf "\n.\nw\n") | ed -s $i + printf ".\nw\n") | ed -s $i done ;; esac