Imported Upstream version 21
[debian/pforth] / utils / load_file.fth
1 \ Load a file into an allocated memory image.
2 \
3 \ Author: Phil Burk
4 \ Copyright 3DO 1995
5
6 anew task-load_file.fth
7
8 : $LOAD.FILE { $filename | fid numbytes numread err data -- data-addr 0 | 0 err }
9         0 -> data
10 \ open file
11         $filename count r/o open-file -> err -> fid
12         err
13         IF
14                 ." $LOAD.FILE - Could not open input file!" cr
15         ELSE
16 \ determine size of file
17                 fid file-size -> err -> numbytes
18                 err
19                 IF
20                          ." $LOAD.FILE - File size failed!" cr
21                 ELSE
22                         ." File size = " numbytes . cr
23 \ allocate memory for sample, when done free memory using FREE
24                         numbytes allocate -> err -> data
25                         err
26                         IF
27                                 ." $LOAD.FILE - Memory allocation failed!" cr
28                         ELSE
29 \ read data
30                                 data numbytes fid read-file -> err
31                                 ." Read " . ." bytes from file " $filename count type cr
32                         THEN
33                 THEN
34                 fid close-file drop
35         THEN
36         data err
37 ;
38
39 \ Example:   c" myfile" $load.file   abort" Oops!"   free .