/* CheckFTPScript v1.32 by Grzegorz Fitrzyk SP9WUN (sp9wun@sr9zaa.ampr.org)
   fixed problem with DIR parametr.

   usage:    rx rexx:CheckFTPScript.rexx SOURCE/K DEST/K DIR/K
   ex.:      rx rexx:CheckFTPScript.rexx ram:script ram:script_new ram:download

*/

parse arg source destin direc
parse var direc ' ' direct
dire=pos(right(direct,1),'/')
dir2=pos(right(direct,1),':')
dirl=length(direct)
extd='/'
if dire~=0 then direct=left(direct,dirl-1)
if dir2~=0 then extd=''

MODE=''
miss=0

options results

say 'Please wait, checking directory.'
say 'Missed files:'
say

address command 'list 'direct||extd'#? files quick >t:list_temp'

if Open(loadit, source, 'Read') then do	/* Open source file.*/
  if Open(Saveit, destin, 'Write') then do /* Open destination file. */
    do forever
      line=Readln(loadit)
      if line="" then leave
      call makeline
      end
  end; else call error_write
end; else call error_read

say
say 'Total number of missed files: 'miss

quitit:
call close(saveit)
call close(loadit)
address command 'delete t:list_temp force quiet'
exit

error_read:
say 'Cant find source file: 'source
call quitit

error_write:
say 'Cant write destination file 'dest
call quitit

makeline:
parse var line nctemp " " ncaddr ":" rest
do while tt~=0
  parse var rest "/" fname '0a'x
  tt=pos('/',fname)
  rest=fname
end
tt=5
call open(loadit2,'t:list_temp',read)
fin=0
do while rt~=""
  rt=readln(loadit2)
  if rt=rest then do
    fin=1
  end
end
if fin=0 then call writedest
call close(loadit2)
rt="."
return

writedest:
call writeln(saveit,line)
say fname
miss=miss+1
return
