1*98a68993SDavid du Colombier struct File{ 2*98a68993SDavid du Colombier int walked; 3*98a68993SDavid du Colombier Fs *fs; 4*98a68993SDavid du Colombier char *path; 5*98a68993SDavid du Colombier }; 6*98a68993SDavid du Colombier 7*98a68993SDavid du Colombier struct Fs{ 8*98a68993SDavid du Colombier int dev; /* device id */ 9*98a68993SDavid du Colombier long (*diskread)(Fs*, void*, long); /* disk read routine */ 10*98a68993SDavid du Colombier vlong (*diskseek)(Fs*, vlong); /* disk seek routine */ 11*98a68993SDavid du Colombier long (*read)(File*, void*, long); 12*98a68993SDavid du Colombier int (*walk)(File*, char*); 13*98a68993SDavid du Colombier File root; 14*98a68993SDavid du Colombier }; 15*98a68993SDavid du Colombier 16*98a68993SDavid du Colombier extern int chatty; 17*98a68993SDavid du Colombier extern int dotini(Fs*); 18*98a68993SDavid du Colombier extern int fswalk(Fs*, char*, File*); 19*98a68993SDavid du Colombier extern int fsread(File*, void*, long); 20*98a68993SDavid du Colombier extern int fsboot(Fs*, char*, Boot*); 21*98a68993SDavid du Colombier 22*98a68993SDavid du Colombier #define BADPTR(x) (0 && (ulong)x < 0x80000000) 23