REM
REM Recursive walk through directories starting at current directory.
REM
REM Created August 8-15, 2009 by PvE - GPL
REM Revised May 2010.
REM
REM -----------------------------------------------------------------------------------------------------------

SUB Recurse_Dir(STRING curdir$, NUMBER level, NUMBER new)

    LOCAL mydir TYPE DIR*
    LOCAL item$, newdir$

    REM Open current directory
    OPEN curdir$ FOR DIRECTORY AS mydir

    INCR level

    REPEAT

        REM Get subsequent files
        GETFILE item$ FROM mydir

        newdir$ = CONCAT$(curdir$, "/", item$)

        REM Check if we have a directory other than '.' and '..'
        IF ISTRUE(LEN(item$)) AND FILETYPE(newdir$) EQ 2 AND NOT(EQUAL(item$, ".")) AND NOT(EQUAL(item$, "..")) THEN

            IF ISTRUE(new) THEN
                PRINT TAB$(level), "|"
            END IF

            PRINT TAB$(level), "+------", item$
            new = 1

            Recurse_Dir(newdir$, level, 1)

        END IF

    REM Last entry in current directory?
    UNTIL ISFALSE(LEN(item$))

    CLOSE DIRECTORY mydir

END SUB

REM Start with current directory
Recurse_Dir(".", -1, 0)