From 651baeef2355d19e03ce04611830f154a0f36b30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E5=A9=A7=E6=95=8F?= <454254706@163.com> Date: Thu, 30 Mar 2017 16:27:11 -0700 Subject: [PATCH] revise README --- README.md | 70 +++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 9a2e1c7..65ff34f 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Virtual FAT32 disk ~~~ git clone git@github.com:Travelinglight/VHD.git ~~~ -2. Use Windows to generate a .vhd file. +2. use Windows to generate a .vhd file. * the format should be FunAT32 * the filesize should not be too large, 20MB is recommended * the number of bytes per block is recommended to be 512 @@ -29,10 +29,10 @@ Virtual FAT32 disk ~~~ ./VHD ~~~ - type "help" for instructions list + use "-help" for the instruction list ## Things you can do -1. list out the file list, with detailed infomation +1. list out the file list, with detailed information 2. remove a file from the VHD 3. copy a file from the VHD to the outside 4. move a file from outside into the VHD @@ -54,53 +54,53 @@ Virtual FAT32 disk ## Functions Specification ### Important functions 1. init - 1. read parameters from boot block - 2. read the whole FAT - 3. read root directory and initialize the fIndex array + * read parameters from boot block + * read the whole FAT + * read root directory and initialize the fIndex array 2. ls: list file infomation - 1. list the file id, file name, attribute, timestamp, and file size for each file in the fIndex + * list the file id, file name, attribute, timestamp, and file size for each file in the fIndex 3. cp: copy a file from vhd to outside - 1. generate the filename of the outside file, and open it - 2. read data area according to the FAT, write the destination file block by block + * generate the filename of the outside file, and open it + * read data area according to the FAT, write the destination file block by block 4. rm: remove a file from VHD - 1. clear the FAT chain (reset those half_word in FAT describing the clusters of the file to 0) - 2. put 0xE5 to the first byte of the filename in root directory - 3. free and clear the file struct in the fIndex array + * clear the FAT chain (reset those half_word in FAT describing the clusters of the file to 0) + * put 0xE5 to the first byte of the filename in root directory + * free and clear the file struct in the fIndex array 5. mv: move a file from outside into the VHD - 1. parse the filename and file_extention - 2. get the file size - 3. find and clear enough clusters that are not used, and record them in an array - 4. obtain other necessary attributes describing a file - 5. modify root directory with the attributes obtained before - 6. modify FAT according to the clusters array found out before - 7. read binary data from source file, and write them into the clusters found before, byte by byte + * parse the filename and file_extension + * get the file size + * find and clear enough clusters that are not used, and record them in an array + * obtain other necessary attributes describing a file + * modify root directory with the attributes obtained before + * modify FAT according to the clusters array found out before + * read binary data from source file, and write them into the clusters found before, byte by byte ### Complementary functions 1. readBlock: to read a block from .vhd file into buff_block 2. readByte: to read and return a byte from .vhd file 3. readHWord: to read and return a half_word from .vhd file. This function calls: - 1. readByte; + * readByte; 4. readWord: to read and return a word from .vhd file. This function calls: - 1. readHWord; + * readHWord; 5. readFAT: to read the while FAT from .vhd file into FAT 6. raedFileName: to read the filename from .vhd file, format it and handle special cases. This function calls: - 1. readByte; -7. readFileExt: to read the file extention from .vhd file and format it. This function calls: - 1. readByte; + * readByte; +7. readFileExt: to read the file extension from .vhd file and format it. This function calls: + * readByte; 8. readAttr: to read the attribute of a file from .vhd file. This function calls: - * readByte; + * readByte; 9. readFileTimeStamp: to read the time and date of the file from root directory in .vhd file. This function calls: - * readHWord; + * readHWord; 10. readFileStart: to read the id of start cluster of the file from .vhd file. This function calls: - * readHWord; + * readHWord; 11. readFileSize: to read the file size from the root directory in .vhd file. This function calls: - * readHWord; + * readHWord; 12. readRD: to read the info of all files. This function calls: - 1. readFileExt; - 2. readFileAttr; - 3. readFileTimeStamp; - 4. readFileStart; - 5. readFileSize; + * readFileExt; + * readFileAttr; + * readFileTimeStamp; + * readFileStart; + * readFileSize; 13. printFileName: to print the filename in normal way 14. printFileAttr: to print the file attribute in binary format 15. printFileTime: to print the time of the file vividly @@ -111,6 +111,6 @@ Virtual FAT32 disk 20. writeTime: to write the time and date into the root directory in .vhd file ## Bugs exist -1. After a .txt file is written into .vhd file, there would be an extra half_word (0x0AFF) appended to the original file. -2. The file of 2 bytes would become 512 bytes after being written into and extracted out from VHD. +1. After a .txt file is written into .vhd file, an extra half_word (0x0AFF) should be appended to the original file. +2. A 2-byte file would become 512-byte after being written into and extracted out from VHD. 3. Some constants are used in the program, so the program may not be universal to all FAT32 VHDs. \ No newline at end of file