• Re: Quick file handling

    From albert@spenarnc.xs4all.nl@21:1/5 to dxforth@gmail.com on Fri Jun 6 13:05:28 2025
    In article <64c0aee9cd512ac490923f15b3cd2c0533b7bf3b@i2pn2.org>,
    dxf <dxforth@gmail.com> wrote:
    I needed to do a quick file hack and came up with this. It's a
    cut down version of the library I use when writing applications.
    It will require customizing for other forths.


    \ FILEHACK.F
    \
    \ Simplified file handling (see example below)
    \
    \ N.B. This was written for DX-Forth and will require modification
    \ for others. E.g. SYS SYSTEM APPLICATION BEHEAD '$FF AND' etc can
    \ be omitted and the codes in ?DERR adjusted to match your system.
    \
    \ Public domain

    sys @ base @

    forth definitions decimal

    system
    \ Create file handle - holds file-id and filename
    : HANDLE create -1 , max-path 1+ allot ;
    application

    : !FNAME ( a u handle -- ) >r max-path min r> cell+ place ;
    : @FNAME ( handle -- a u ) cell+ count ;

    : ?derr ( ior -- ) ?dup if
    space $FF and case
    2 of ." file not found" endof
    3 of ." path not found" endof
    4 of ." too many open files" endof
    5 of ." access denied" endof
    6 of ." invalid handle" endof
    dup . ." DOS"
    endcase ." error" abort
    then ;

    How can it make sense to have a special error handling
    for file only?


    \ General functions using file-id
    : FREAD ( a u fid -- a u' ) 2>r dup 2r> read-file ?derr ;
    : FREADLN ( a u fid -- a u' n ) 2>r dup 2r> read-line ?derr ;
    : FWRITE ( a u fid -- ) write-file ?derr ;
    : FWRITELN ( a u fid -- ) write-line ?derr ;
    : FSEEK ( ud fid -- ) reposition-file ?derr ;
    : FPOS ( fid -- ud ) file-position ?derr ;
    : FCLOSE ( fid -- ) close-file drop ;

    How can it make sense to write wrappers around open-file close-file
    read-file etc.?

    <SNIP>

    I embrace strings with full cell length.
    GET-FILE PUT-FILE are sensible extensions.

    "tetris.cfg" GET-FILE EVALUATE

    (as are " type prefixes , "recognizers" )


    \ End

    --
    Temu exploits Christians: (Disclaimer, only 10 apostles)
    Last Supper Acrylic Suncatcher - 15Cm Round Stained Glass- Style Wall
    Art For Home, Office And Garden Decor - Perfect For Windows, Bars,
    And Gifts For Friends Family And Colleagues.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)