tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

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) */