manifest.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma once
  2. #include <storage/storage.h>
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. typedef enum {
  9. ResourceManifestEntryTypeUnknown = 0,
  10. ResourceManifestEntryTypeVersion,
  11. ResourceManifestEntryTypeTimestamp,
  12. ResourceManifestEntryTypeDirectory,
  13. ResourceManifestEntryTypeFile,
  14. } ResourceManifestEntryType;
  15. typedef struct {
  16. ResourceManifestEntryType type;
  17. FuriString* name;
  18. uint32_t size;
  19. uint8_t hash[16];
  20. } ResourceManifestEntry;
  21. typedef struct ResourceManifestReader ResourceManifestReader;
  22. /**
  23. * @brief Initialize resource manifest reader
  24. * @param storage Storage API pointer
  25. * @return allocated object
  26. */
  27. ResourceManifestReader* resource_manifest_reader_alloc(Storage* storage);
  28. /**
  29. * @brief Release resource manifest reader
  30. * @param resource_manifest allocated object
  31. */
  32. void resource_manifest_reader_free(ResourceManifestReader* resource_manifest);
  33. /**
  34. * @brief Initialize resource manifest reader iteration
  35. * @param resource_manifest allocated object
  36. * @param filename manifest file name
  37. * @return true if file opened
  38. */
  39. bool resource_manifest_reader_open(ResourceManifestReader* resource_manifest, const char* filename);
  40. /**
  41. * @brief Read next file/dir entry from manifest
  42. * @param resource_manifest allocated object
  43. * @return entry or NULL if end of file
  44. */
  45. ResourceManifestEntry* resource_manifest_reader_next(ResourceManifestReader* resource_manifest);
  46. /** Read previous file/dir entry from manifest
  47. *
  48. * You must be at the end of the manifest to use this function.
  49. * Intended to be used after reaching end with resource_manifest_reader_next
  50. *
  51. * @param resource_manifest Pointer to the ResourceManifestReader instance
  52. *
  53. * @return entry or NULL if end of file
  54. */
  55. ResourceManifestEntry*
  56. resource_manifest_reader_previous(ResourceManifestReader* resource_manifest);
  57. #ifdef __cplusplus
  58. } // extern "C"
  59. #endif