home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
308.lha
/
AFilter_II
/
AFilter2.MOD
< prev
next >
Wrap
Text File
|
1980-12-06
|
5KB
|
153 lines
(****************************************************************************
* AmigaDos MSDos Text File Filter *
* 1989 By Robert Wilcox *
* Written in BenchMark Modula2 *
* Freely Redistributable *
* PLINK Bob*CT CIS 70107,717 *
* 10/30/89 *
****************************************************************************)
MODULE AFilter2;
FROM System IMPORT argc, argv;
FROM Terminal IMPORT WriteLn, WriteString;
FROM FileSystem IMPORT Close, Delete, File, Lookup, ReadChar, Response, WriteChar;
FROM Strings IMPORT ConvStringToUpperCase, CompareString, equal, StringLength;
VAR
Source, Destination, NewDest : File;
CurChar, LastChar, NextChar : CHAR;
DestStr, TempStr1, TempStr2 : ARRAY[0..255] OF CHAR;
StripTabs : BOOLEAN;
PROCEDURE ConCat(StringA, StringB :ARRAY OF CHAR; VAR NewStr :ARRAY OF CHAR);
VAR i, j : CARDINAL;
BEGIN
i := 0;
WHILE ( i < StringLength(StringA)) DO
NewStr[i] := StringA[i]; INC(i);
END;
j := 0;
WHILE ( j < StringLength(StringB)) DO
NewStr[i + j] := StringB[j]; INC(j);
END;
NewStr[j + i] := 0C;
END ConCat;
BEGIN
NextChar := 12C;
IF argc > 0 THEN
ConvStringToUpperCase(argv^[1]^);
END;
IF (argc # 4) OR ((CompareString(argv^[1]^, "-I") <> equal) AND (CompareString(argv^[1]^, "-A") <> equal ))
AND (CompareString(argv^[1]^, "-T") <> equal )THEN
WriteLn; WriteString(" Usage: AFilter <Switch> <Source File> <Destination File>\n");
WriteLn; WriteString(" -A Strip Carriage Returns and Line Feeds");
WriteLn; WriteString(" -I Convert Line Feeds to Carriage Returns and Line Feeds");
WriteLn; WriteString(" -T Convert Tabs to Spaces");
WriteLn; WriteLn; HALT;
END;
Lookup(Source, argv^[2]^, FALSE);
IF (Source.res # done) THEN
IF (Source.res # nomemory) THEN
WriteString("Can't find "); WriteString(argv^[2]^); WriteLn; HALT;
ELSE WriteString("Out of Memory "); WriteLn; HALT;
END;
END;
ConCat(argv^[2]^, "", TempStr1);ConCat(argv^[3]^, "", TempStr2);
DestStr := TempStr2;
ConvStringToUpperCase(TempStr1); ConvStringToUpperCase(TempStr2);
IF CompareString(TempStr1, TempStr2) = equal THEN
DestStr := "T:AFilter.TMP";
END;
Lookup(Destination, DestStr, TRUE);
IF (Destination.res # done) THEN
Close(Source);
IF (Source.res # nomemory) THEN
WriteString("Can't open "); WriteString(DestStr); WriteLn; HALT;
ELSE WriteString("Out of Memory "); WriteLn; HALT;
END;
END;
WriteString("Amiga-IBM Text Filter: ");
IF (CompareString(argv^[1]^,"-I" ) = equal ) THEN
WriteString("Adding CR + LF to "); WriteString(argv^[2]^);
WriteString(" ----> "); WriteString(argv^[3]^); WriteLn;
LOOP
ReadChar(Source, CurChar);
IF (Source.eof) THEN EXIT; END;
IF (CurChar = 12C) THEN
CurChar := 15C;
WriteChar(Destination, CurChar); WriteChar(Destination, NextChar );
ELSE
WriteChar(Destination, CurChar);
END;
END;
WriteChar(Destination, 32C);
ELSIF (CompareString(argv^[1]^,"-A" ) = equal ) THEN
WriteString("Removing CR + LF from "); WriteString(argv^[2]^);
WriteString(" ----> "); WriteString(argv^[3]^); WriteLn;
LastChar := 32C;
LOOP
ReadChar(Source, CurChar); NextChar := CurChar;
IF (Source.eof) THEN EXIT; END;
IF (CurChar = 12C) AND (LastChar = 15C) THEN
NextChar := 0C;
END;
IF (CurChar = 32C) THEN NextChar := 0C; END;
IF (CurChar = 15C) THEN
IF (LastChar = 15C) THEN
NextChar := 0C;
ELSE NextChar := 12C;
END;
END;
IF NextChar <> 0C THEN WriteChar(Destination, NextChar); END;
LastChar := CurChar;
END;
ELSIF (CompareString(argv^[1]^,"-T" ) = equal ) THEN
WriteString("Replacing Tabs in "); WriteString(argv^[2]^);
WriteString(" ----> "); WriteString(argv^[3]^); WriteLn;
LOOP
ReadChar(Source, CurChar);
IF (Source.eof) THEN EXIT; END;
IF (CurChar = 11C) THEN
CurChar := 40C;
NextChar := 40C;
WriteChar(Destination, CurChar); WriteChar(Destination, NextChar );
ELSE
WriteChar(Destination, CurChar);
END;
END;
END;
Close(Destination);
Close(Source);
IF CompareString(TempStr1, TempStr2) = equal THEN
Lookup(Destination, DestStr, FALSE);
IF (Destination.res # done) THEN
IF (Destination.res # nomemory) THEN
WriteString("Can't open "); WriteString(DestStr); WriteLn; HALT;
ELSE WriteString("Out of Memory "); WriteLn; HALT;
END;
END;
Delete(argv^[2]^);
Lookup(NewDest, argv^[2]^, TRUE);
IF (NewDest.res # done) THEN
Close(Destination);
IF (NewDest.res # nomemory) THEN
WriteString("Can't open2 "); WriteString(argv^[2]^); WriteLn; HALT;
ELSE WriteString("Out of Memory "); WriteLn; HALT;
END;
END;
LOOP
ReadChar(Destination, CurChar);
IF (Destination.eof) THEN EXIT; END;
WriteChar(NewDest, CurChar);
END;
Close(NewDest);
Close(Destination);
Delete(DestStr);
END;
END AFilter2.