%%HP: T(3)A(R)F(.);
@ FILE: FS (FILE SIZE)
@ DESIGNED FOR USE WITH "GLB"
@ SEE FILE "GLB" FOR DOCUMENTATION
\<<
0
\->
V
\<<
IF 0 == THEN @ we want PREORDER !
  IF \<-USR1 0 == THEN @ first call
    {} '\<-USR1' STO
  END

  @ DIR TITLE
  "DIR" PATH 2 \->LIST

  VARS 'V' STO
  IF V SIZE 0 > THEN
    1 V SIZE
    FOR I
      V I GET
      DUP BYTES SWAP DROP
      OVER IF VTYPE 15 == THEN 'd' ELSE 'f' END
        3 \->LIST
    NEXT
  END

  V SIZE 1 + \->LIST 1 \->LIST '\<-USR1' SWAP STO+

ELSE @ POSTORDER:

  IF \<-LVL 0 ==
     \<-USR2 0 ==
     AND                 @ work done ?
  THEN
    1 '\<-USR2' STO
    \<-USR1              @ yes: output
  END

END
\>>
\>>

