Program StripSpaces_100;

Uses Crt,DOS;

{$I style.inc}

Const
  VNM='1.00';
  VDT='08-Jul-95';

Var
  IFN,OFN:String;

Procedure Information;
Begin
  Style(0,1);
  Style(1,1);
  Style(3,1);
  WriteLn('StripSpaces v',VNM,' by Zebedee ©1995 Carnage!Cybertek (',VDT,')');
  Style(0,1);
  WriteLn;
  WriteLn('Usage: StripS <infile> <outfile>');
  WriteLn;
  WriteLn('StripS will go through the <infile> which MUST be an ASCII file, removing');
  WriteLn('ALL leading spaces writing the output to a new file <outfile>.');
  Halt(20);
  Write('$VER: StripS v1.00 (08-Jul-95) ');
End;

Procedure GetParams;
Begin
  If ParamCount=0 Then
  Begin
    WriteLn('Usage: ',ParamStr(0),' <infile> <outfile>');
    Halt(20);
  End;
  If ParamStr(1)='?' Then Information;
  If ParamCount=1 Then
  Begin
    WriteLn(ParamStr(0),': Required argument missing');
    Halt(20);
  End;
  If ParamCount>2 Then
  Begin
    WriteLn(ParamStr(0),': Too many arguments');
    Halt(20);
  End;
  IFN:=ParamStr(1);
  OFN:=ParamStr(2);
End;

Function Truncate(TXT:String):String;
Var
  CTR,LNG:Integer;
Begin
  LNG:=Length(TXT);
  Repeat
    Dec(LNG);
  Until TXT[LNG]<>' ';
  Delete(TXT,LNG+1,Length(TXT)-LNG);
  Truncate:=TXT;
End;

Procedure ProcessFile;
Var
  IFS,OFS:Text;
  TXT:String;
Begin
  Reset(IFS,IFN);
  If IOResult<>0 Then
  Begin
    WriteLn(ParamStr(0),': Can''t locate the infile (',IFN,')');
    Halt(20);
  End;
  ReWrite(OFS,OFN);
  If IOResult<>0 Then
  Begin
    WriteLn(ParamStr(0),': Can''t create the outfile (',OFN,')');
    Close(IFS);
    Halt(20);
  End;
  While not Eof(IFS) Do
  Begin
    ReadLn(IFS,TXT);
    WriteLn(OFS,Truncate(TXT));
  End;
  Close(OFS);
  Close(IFS);
End;

Begin
  GetParams;
  ProcessFile;
End.