xref: /lighttpd1.4/src/stat_cache.h (revision 9b7a32ea)
1 #ifndef _FILE_CACHE_H_
2 #define _FILE_CACHE_H_
3 #include "first.h"
4 
5 #include "base_decls.h"
6 #include "buffer.h"
7 #include "etag.h"
8 
9 #include <sys/types.h>
10 #include <sys/time.h>
11 #include <sys/stat.h>
12 
13 struct stat_cache;      /* declaration */
14 
15 typedef struct {
16 	buffer *name;
17 	buffer *etag;
18 
19 	struct stat st;
20 
21 	time_t stat_ts;
22 
23 #ifdef HAVE_LSTAT
24 	char is_symlink;
25 #endif
26 
27 #ifdef HAVE_FAM_H
28 	int    dir_version;
29 #endif
30 
31 	buffer *content_type;
32 } stat_cache_entry;
33 
34 int stat_cache_choose_engine (server *srv, const buffer *stat_cache_string);
35 struct stat_cache *stat_cache_init(server *srv);
36 void stat_cache_free(struct stat_cache *fc);
37 
38 const buffer * stat_cache_mimetype_by_ext(const connection *con, const char *name, size_t nlen);
39 const buffer * stat_cache_content_type_get(server *srv, connection *con, const buffer *name, stat_cache_entry *sce);
40 const buffer * stat_cache_etag_get(stat_cache_entry *sce, etag_flags_t flags);
41 handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_cache_entry **sce);
42 int stat_cache_open_rdonly_fstat (server *srv, connection *con, buffer *name, struct stat *st);
43 
44 int stat_cache_trigger_cleanup(server *srv);
45 #endif
46