* tiny
[mascara-docs.git] / compilers / bcc / linux86-0.16.17 / bootblocks / fs.c
blobec3e0a6407f965e7f92adc0891aa024a517501d6
2 #include "monitor.h"
4 #ifndef SINGLEFS
6 int fs_type = 0;
8 open_file(fname)
9 char * fname;
11 #ifdef DEBUG
12 fprintf(stderr, "Open file %s\n", fname);
13 #endif
14 if( fs_type ) close_file();
16 /* If we can't read the boot sector there is a _real_ problem */
17 if (read_sector(0) == 0) return -1;
19 if( tar_open_file(fname) >= 0 ) { fs_type = 1; return 0; }
20 if( min_open_file(fname) >= 0 ) { fs_type = 2; return 0; }
21 if( dos_open_file(fname) >= 0 ) { fs_type = 3; return 0; }
22 return -1;
25 rewind_file()
27 #ifdef DEBUG
28 fprintf(stderr, "Rewind file (%d)\n", fs_type);
29 #endif
30 switch(fs_type)
32 case 1: return tar_rewind_file();
33 case 2: return min_rewind_file();
34 case 3: return dos_rewind_file();
36 return -1;
39 close_file()
41 int rv = -1;
42 #ifdef DEBUG
43 fprintf(stderr, "Close file (%d)\n", fs_type);
44 #endif
45 switch(fs_type)
47 case 1: rv = tar_close_file(); break;
48 case 2: rv = min_close_file(); break;
49 case 3: rv = dos_close_file(); break;
51 fs_type = 0;
52 return rv;
55 long
56 file_length()
58 #ifdef DEBUG
59 fprintf(stderr, "File length (%d)\n", fs_type);
60 #endif
61 switch(fs_type)
63 case 1: return tar_file_length();
64 case 2: return min_file_length();
65 case 3: return dos_file_length();
67 return -1;
70 read_block(buffer)
71 char * buffer;
73 #ifdef DEBUG
74 fprintf(stderr, "read block into (%d) (%d)\n", buffer, fs_type);
75 #endif
76 switch(fs_type)
78 case 1: return tar_read_block(buffer);
79 case 2: return min_read_block(buffer);
80 case 3: return dos_read_block(buffer);
82 return -1;
85 #endif