storagedir.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /* Copyright (c) 2017-2018, The Tor Project, Inc. */
  2. /* See LICENSE for licensing information */
  3. #ifndef TOR_STORAGEDIR_H
  4. #define TOR_STORAGEDIR_H
  5. #include "lib/cc/torint.h"
  6. #include <stddef.h>
  7. typedef struct storage_dir_t storage_dir_t;
  8. struct config_line_t;
  9. struct sandbox_cfg_elem;
  10. struct tor_mmap_t;
  11. struct smartlist_t;
  12. storage_dir_t * storage_dir_new(const char *dirname, int n_files);
  13. void storage_dir_free_(storage_dir_t *d);
  14. #define storage_dir_free(d) \
  15. FREE_AND_NULL(storage_dir_t, storage_dir_free_, (d))
  16. int storage_dir_register_with_sandbox(storage_dir_t *d,
  17. struct sandbox_cfg_elem **cfg);
  18. const struct smartlist_t *storage_dir_list(storage_dir_t *d);
  19. uint64_t storage_dir_get_usage(storage_dir_t *d);
  20. struct tor_mmap_t *storage_dir_map(storage_dir_t *d, const char *fname);
  21. uint8_t *storage_dir_read(storage_dir_t *d, const char *fname, int bin,
  22. size_t *sz_out);
  23. int storage_dir_save_bytes_to_file(storage_dir_t *d,
  24. const uint8_t *data,
  25. size_t length,
  26. int binary,
  27. char **fname_out);
  28. int storage_dir_save_string_to_file(storage_dir_t *d,
  29. const char *data,
  30. int binary,
  31. char **fname_out);
  32. int storage_dir_save_labeled_to_file(storage_dir_t *d,
  33. const struct config_line_t *labels,
  34. const uint8_t *data,
  35. size_t length,
  36. char **fname_out);
  37. struct tor_mmap_t *storage_dir_map_labeled(storage_dir_t *dir,
  38. const char *fname,
  39. struct config_line_t **labels_out,
  40. const uint8_t **data_out,
  41. size_t *size_out);
  42. uint8_t *storage_dir_read_labeled(storage_dir_t *d, const char *fname,
  43. struct config_line_t **labels_out,
  44. size_t *sz_out);
  45. void storage_dir_remove_file(storage_dir_t *d,
  46. const char *fname);
  47. int storage_dir_shrink(storage_dir_t *d,
  48. uint64_t target_size,
  49. int min_to_remove);
  50. int storage_dir_remove_all(storage_dir_t *d);
  51. int storage_dir_get_max_files(storage_dir_t *d);
  52. #endif /* !defined(TOR_STORAGEDIR_H) */