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