// Shawn Nematbakhsh // lab wed. 6-9 // 12/5/02 // file system - this program manipluates a MSDOS floppy disk #include #include #include #include #include #include #include #include // mode flags for open files #define WRITE 0 #define READ 1 // bytes per sector #define BPS 512 // location of root sector #define ROOT_SECTOR 19*BPS // file/directory for f_or_d function #define FILE_TYPE 0 #define DIRECTORY_TYPE 1 // directory entry - keep track of position + cluster struct dir_t { int sector; int cluster; }; // file descriptor struct file_t { char *name; int mode; int cluster; int offset; int base; long size; }; // use ints as file desciptors typedef int FD_Handle; int fd_load(char driveLetter); int fd_ls(); char* get_file_name(unsigned char buf[32]); int fd_cd(char *); int f_or_d(char *file,unsigned char buf[32],int type); int is_empty(unsigned char buf[32]); int fd_rm(char *name); int next_empty_cluster(); int fd_mkdir(char *name); int fat_lookup(int cluster); void sector_clear(int sector); void fat_set(int cluster,int value); int fd_mv(char *source,char *destination); FD_Handle fd_open(char *filename, int mode); void fd_close(FD_Handle fdHandle); int fd_read(FD_Handle fdHandle,char *buffer,int length); int fd_write(FD_Handle fdHandle,char *buffer,int length); int fd_lseek(FD_Handle fdHandle,int offset);