| 
\ 4tH ASCII cleaning utility
\ Copyright 2003,2004 - Hansoft & Partners
[needs lib/istype.4th]
  9 constant tab
 10 constant lf
/char string buffer
                                       \ emit char if c1 = c2
: ?emit over = if dup emit then ;      ( c1 c2 -- c1)
                                       \ duplicate char if char is printable
: char? dup is-print                   ( c -- c -n | c c )
  if dup else -1 then ;
: Usage abort" Usage: ascii7 infile outfile" ;
: Read-file buffer /char accept ;      \ read a character
: Process
    buffer c@                          \ put it on the stack
    lf    ?emit                        \ emit if it is a LF
    tab   ?emit                        \ emit if it is a TAB
    char? ?emit                        \ emit if it is printable
    drop                               \ now drop it
;
[needs lib/convert.4th]
 |