root/src/libsir/include/sir/filecache.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * filecache.h
   3  *
   4  * Version: 2.2.5
   5  *
   6  * -----------------------------------------------------------------------------
   7  *
   8  * SPDX-License-Identifier: MIT
   9  *
  10  * Copyright (c) 2018-2024 Ryan M. Lederman <lederman@gmail.com>
  11  * Copyright (c) 2018-2024 Jeffrey H. Johnson <trnsz@pobox.com>
  12  *
  13  * Permission is hereby granted, free of charge, to any person obtaining a copy of
  14  * this software and associated documentation files (the "Software"), to deal in
  15  * the Software without restriction, including without limitation the rights to
  16  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  17  * the Software, and to permit persons to whom the Software is furnished to do so,
  18  * subject to the following conditions:
  19  *
  20  * The above copyright notice and this permission notice shall be included in all
  21  * copies or substantial portions of the Software.
  22  *
  23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  24  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  25  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  26  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  27  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  28  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  29  *
  30  * -----------------------------------------------------------------------------
  31  */
  32 
  33 #ifndef _SIR_FILECACHE_H_INCLUDED
  34 # define _SIR_FILECACHE_H_INCLUDED
  35 
  36 # include "sir/types.h"
  37 
  38 typedef bool (*sir_fcache_pred)(const void* match, const sirfile* iter);
  39 
  40 sirfileid _sir_addfile(const char* path, sir_levels levels, sir_options opts);
  41 bool _sir_updatefile(sirfileid id, const sir_update_config_data* data);
  42 bool _sir_remfile(sirfileid id);
  43 
  44 sirfile* _sirfile_create(const char* path, sir_levels levels, sir_options opts);
  45 bool _sirfile_open(sirfile* sf);
  46 void _sirfile_close(sirfile* sf);
  47 bool _sirfile_write(sirfile* sf, const char* output);
  48 bool _sirfile_writeheader(sirfile* sf, const char* msg);
  49 bool _sirfile_needsroll(sirfile* sf);
  50 bool _sirfile_roll(sirfile* sf, char** newpath);
  51 void _sirfile_rollifneeded(sirfile* sf);
  52 bool _sirfile_archive(sirfile* sf, const char* newpath);
  53 bool _sirfile_splitpath(const sirfile* sf, char** name, char** ext);
  54 void _sirfile_destroy(sirfile** sf);
  55 bool _sirfile_validate(const sirfile* sf);
  56 bool _sirfile_update(sirfile* sf, const sir_update_config_data* data);
  57 
  58 sirfileid _sir_fcache_add(sirfcache* sfc, const char* path, sir_levels levels,
  59     sir_options opts);
  60 bool _sir_fcache_update(const sirfcache* sfc, sirfileid id, const sir_update_config_data* data);
  61 bool _sir_fcache_rem(sirfcache* sfc, sirfileid id);
  62 void _sir_fcache_shift(sirfcache* sfc, size_t idx);
  63 
  64 bool _sir_fcache_pred_path(const void* match, const sirfile* iter);
  65 bool _sir_fcache_pred_id(const void* match, const sirfile* iter);
  66 sirfile* _sir_fcache_find(const sirfcache* sfc, const void* match, sir_fcache_pred pred);
  67 
  68 bool _sir_fcache_destroy(sirfcache* sfc);
  69 bool _sir_fcache_dispatch(const sirfcache* sfc, sir_level level, sirbuf* buf,
  70     size_t* dispatched, size_t* wanted);
  71 
  72 void _sir_fflush(FILE* f);
  73 
  74 #endif /* !_SIR_FILECACHE_H_INCLUDED */

/* [previous][next][first][last][top][bottom][index][help] */