Skip to content

Latest commit

 

History

History
56 lines (54 loc) · 2.83 KB

File metadata and controls

56 lines (54 loc) · 2.83 KB

Things to be done

  • Test and fix library, so that it will also compile under linux
  • Provide necessary fallback stuff, so that library can also be used without c library
  • Finish FAT library read support
    • Finish implementation of fat_file_read
  • Add FAT library write support
    • Add test where cluster chain needs to be extended <= Within truncate tests
    • Extend test creating a folder to fail on second try
    • Add test creating a directory with long name
    • Add file write support
    • Add tests for file truncate
    • Add logic to support O_TRUNC on open
    • Add test for creating a plain file with O_CREAT
    • Add test for file truncation on open with O_TRUNC
    • Add test to ensure that read only is working correctly
    • Add test to read a write only opened file
    • Add test for write append with O_APPEND
    • Add test for writing a file
    • Add test creating a file with short name
    • Add test creating a file with long name
    • Add test creating a file with short name but long extension, e.g. foo.jpeg
  • Fix read out of directory via fat directory next when switching to new cluster
  • Implement fat_file_move
  • Implement fat_file_remove
  • Implement fat_directory_remove
  • Implement fat_directory_move
  • Check and add proper handling for empty files, which means start cluster is 0
    • Truncate with size 0 should free cluster chain
    • Write needs to be adjusted so that it requests a cluster on demand
  • Fix directory deletion to set deletion value instead of 0 overwrite
  • Copy file entry information on move like creation date
  • Adjust cluster of directory entry .. on folder move
  • Add test to ensure .. is changed correctly
  • Something in the implementation destroys the fat image
  • Add write transaction instead of direct writing with some sort of cache accessed
  • Add proper locking to library functions
  • Optimizations
    • Introduce some sort of read/write cache instead of transactions caching blocks until drain / flush
  • Cleanup
    • Check written code and simplify it once everything works
    • Check code and deduplicate similar code like file move or folder move
    • Extend functions by transactions where it might be necessary
  • Split up tests in single files
  • Create unit tests
    • Prepare unit testing with cmake and ctest
    • Prepare a test blockdev driver for unit testing
    • Add unit tests for specific functions
  • Add support for ext2
  • Fix and complete documentation
  • Add custom commands to test folder to create necessary images for tests
  • Check usages of block size and evaluate whether automatical adjustment is meaningful for fat
  • Add code coverage collection
    • Get ctest coverage command to run
    • Get html coverage output