Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #133593

Re: Quick file handling

From dxf <dxforth@gmail.com>
Newsgroups comp.lang.forth
Subject Re: Quick file handling
Date 2025-06-06 21:39 +1000
Organization i2pn2 (i2pn.org)
Message-ID <e31ed9c71e24247aa19b56ec90f4a2bf9b2f151c@i2pn2.org> (permalink)
References <64c0aee9cd512ac490923f15b3cd2c0533b7bf3b@i2pn2.org> <nnd$33be0d63$62d07b84@31279367604044df>

Show all headers | View raw


On 6/06/2025 9:05 pm, albert@spenarnc.xs4all.nl wrote:
> 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?

For whom?  This suited my circumstances.  YMMV  

>>
>> \ 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.?

Certainly ior needs to be handled.  THROW is no good to me as it will
just print a number.  Other systems may not even have THROW.
 
> <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" )

I never claimed what I posted would suit you.

Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Quick file handling dxf <dxforth@gmail.com> - 2025-06-06 20:53 +1000
  Re: Quick file handling albert@spenarnc.xs4all.nl - 2025-06-06 13:05 +0200
    Re: Quick file handling dxf <dxforth@gmail.com> - 2025-06-06 21:39 +1000
  Re: Quick file handling dxf <dxforth@gmail.com> - 2025-07-20 12:35 +1000
    Re: Quick file handling dxf <dxforth@gmail.com> - 2025-07-21 13:38 +1000

csiph-web