Lines Matching refs:sce
805 stat_cache_entry *sce = ck_calloc(1, sizeof(*sce)); in stat_cache_entry_init() local
806 sce->fd = -1; in stat_cache_entry_init()
807 sce->refcnt = 1; in stat_cache_entry_init()
808 return sce; in stat_cache_entry_init()
812 stat_cache_entry *sce = data; in stat_cache_entry_free() local
813 if (!sce) return; in stat_cache_entry_free()
815 if (--sce->refcnt) return; in stat_cache_entry_free()
820 if (sce->fam_dir) --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_entry_free()
823 free(sce->name.ptr); in stat_cache_entry_free()
824 free(sce->etag.ptr); in stat_cache_entry_free()
825 if (sce->content_type.size) free(sce->content_type.ptr); in stat_cache_entry_free()
826 if (sce->fd >= 0) close(sce->fd); in stat_cache_entry_free()
828 free(sce); in stat_cache_entry_free()
833 stat_cache_entry * const sce = data; in stat_cache_entry_refchg() local
834 if (mod < 0 && 1 == sce->refcnt) in stat_cache_entry_refchg()
837 sce->refcnt += mod; in stat_cache_entry_refchg()
1006 const buffer * stat_cache_content_type_get_by_xattr(stat_cache_entry *sce, const array *mimetypes, … in stat_cache_content_type_get_by_xattr() argument
1010 if (!buffer_is_blank(&sce->content_type)) return &sce->content_type; in stat_cache_content_type_get_by_xattr()
1012 if (!S_ISREG(sce->st.st_mode)) return NULL; in stat_cache_content_type_get_by_xattr()
1016 (use_xattr) ? stat_cache_mimetype_by_xattr(sce->name.ptr) : NULL; in stat_cache_content_type_get_by_xattr()
1018 mtype = stat_cache_mimetype_by_ext(mimetypes, BUF_PTR_LEN(&sce->name)); in stat_cache_content_type_get_by_xattr()
1020 if (sce->content_type.size) { in stat_cache_content_type_get_by_xattr()
1021 buffer_copy_buffer(&sce->content_type, mtype); in stat_cache_content_type_get_by_xattr()
1024 sce->content_type.ptr = NULL; in stat_cache_content_type_get_by_xattr()
1025 buffer_copy_buffer(&sce->content_type, mtype); in stat_cache_content_type_get_by_xattr()
1029 sce->content_type.ptr = mtype->ptr; in stat_cache_content_type_get_by_xattr()
1030 sce->content_type.used = mtype->used; in stat_cache_content_type_get_by_xattr()
1035 buffer_clear(&sce->content_type); in stat_cache_content_type_get_by_xattr()
1037 return &sce->content_type; in stat_cache_content_type_get_by_xattr()
1042 const buffer * stat_cache_content_type_get_by_ext(stat_cache_entry *sce, const array *mimetypes) in stat_cache_content_type_get_by_ext() argument
1046 if (!buffer_is_blank(&sce->content_type)) return &sce->content_type; in stat_cache_content_type_get_by_ext()
1048 if (!S_ISREG(sce->st.st_mode)) return NULL; in stat_cache_content_type_get_by_ext()
1052 stat_cache_mimetype_by_ext(mimetypes, BUF_PTR_LEN(&sce->name)); in stat_cache_content_type_get_by_ext()
1055 sce->content_type.ptr = mtype->ptr; in stat_cache_content_type_get_by_ext()
1056 sce->content_type.used = mtype->used; in stat_cache_content_type_get_by_ext()
1060 buffer_clear(&sce->content_type); in stat_cache_content_type_get_by_ext()
1062 return &sce->content_type; in stat_cache_content_type_get_by_ext()
1067 const buffer * stat_cache_etag_get(stat_cache_entry *sce, int flags) { in stat_cache_etag_get() argument
1070 if (!buffer_is_blank(&sce->etag)) return &sce->etag; in stat_cache_etag_get()
1072 if (S_ISREG(sce->st.st_mode) || S_ISDIR(sce->st.st_mode)) { in stat_cache_etag_get()
1074 http_etag_create(&sce->etag, &sce->st, flags); in stat_cache_etag_get()
1075 return &sce->etag; in stat_cache_etag_get()
1106 stat_cache_entry *sce = in stat_cache_update_entry() local
1108 if (sce && buffer_is_equal_string(&sce->name, name, len)) { in stat_cache_update_entry()
1109 if (!stat_cache_stat_eq(&sce->st, st)) { in stat_cache_update_entry()
1111 buffer_clear(&sce->etag); in stat_cache_update_entry()
1113 buffer_copy_string_len(&sce->etag, BUF_PTR_LEN(etagb)); in stat_cache_update_entry()
1115 buffer_clear(&sce->content_type); in stat_cache_update_entry()
1117 if (sce->fd >= 0) { in stat_cache_update_entry()
1118 if (1 == sce->refcnt) { in stat_cache_update_entry()
1119 close(sce->fd); in stat_cache_update_entry()
1120 sce->fd = -1; in stat_cache_update_entry()
1123 --sce->refcnt; /* stat_cache_entry_free(sce); */ in stat_cache_update_entry()
1124 (*sptree)->data = sce = stat_cache_entry_init(); in stat_cache_update_entry()
1125 buffer_copy_string_len(&sce->name, name, len); in stat_cache_update_entry()
1128 sce->st = *st; in stat_cache_update_entry()
1130 sce->stat_ts = log_monotonic_secs; in stat_cache_update_entry()
1140 stat_cache_entry *sce = stat_cache_sptree_find(sptree, name, len); in stat_cache_delete_entry() local
1141 if (sce && buffer_is_equal_string(&sce->name, name, len)) { in stat_cache_delete_entry()
1142 stat_cache_entry_free(sce); in stat_cache_delete_entry()
1150 stat_cache_entry *sce = stat_cache_sptree_find(sptree, name, len); in stat_cache_invalidate_entry() local
1151 if (sce && buffer_is_equal_string(&sce->name, name, len)) { in stat_cache_invalidate_entry()
1152 sce->stat_ts = 0; in stat_cache_invalidate_entry()
1154 if (sce->fam_dir != NULL) { in stat_cache_invalidate_entry()
1155 --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_invalidate_entry()
1156 sce->fam_dir = NULL; in stat_cache_invalidate_entry()
1173 stat_cache_entry *sce = t->data; in stat_cache_invalidate_dir_tree_walk() local
1174 sce->stat_ts = 0; in stat_cache_invalidate_dir_tree_walk()
1175 if (sce->fam_dir != NULL) { in stat_cache_invalidate_dir_tree_walk()
1176 --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_invalidate_dir_tree_walk()
1177 sce->fam_dir = NULL; in stat_cache_invalidate_dir_tree_walk()
1264 stat_cache_entry *sce = NULL; in stat_cache_get_entry() local
1293 sce = sptree->data; in stat_cache_get_entry()
1297 if (buffer_is_equal_string(&sce->name, name->ptr, len)) { in stat_cache_get_entry()
1299 if (sce->stat_ts == cur_ts) { in stat_cache_get_entry()
1300 if (final_slash && !S_ISDIR(sce->st.st_mode)) { in stat_cache_get_entry()
1304 return sce; in stat_cache_get_entry()
1309 && sce->fam_dir) { /* entry is in monitored dir */ in stat_cache_get_entry()
1313 if (cur_ts - sce->stat_ts < 16) { in stat_cache_get_entry()
1314 if (final_slash && !S_ISDIR(sce->st.st_mode)) { in stat_cache_get_entry()
1318 return sce; in stat_cache_get_entry()
1324 sce = NULL; in stat_cache_get_entry()
1333 if (NULL == sce) { in stat_cache_get_entry()
1341 sce = stat_cache_entry_init(); in stat_cache_get_entry()
1342 buffer_copy_string_len(&sce->name, name->ptr, len); in stat_cache_get_entry()
1348 sptree->data = sce; in stat_cache_get_entry()
1350 /*sptree =*/ sc.files = splaytree_insert(sptree, file_ndx, sce); in stat_cache_get_entry()
1355 buffer_clear(&sce->etag); in stat_cache_get_entry()
1357 buffer_clear(&sce->content_type); in stat_cache_get_entry()
1361 if (sce->fd >= 0 && !stat_cache_stat_eq(&sce->st, &st)) { in stat_cache_get_entry()
1362 if (1 == sce->refcnt) { in stat_cache_get_entry()
1363 close(sce->fd); in stat_cache_get_entry()
1364 sce->fd = -1; in stat_cache_get_entry()
1367 --sce->refcnt; /* stat_cache_entry_free(sce); */ in stat_cache_get_entry()
1368 sptree->data = sce = stat_cache_entry_init(); in stat_cache_get_entry()
1369 buffer_copy_string_len(&sce->name, name->ptr, len); in stat_cache_get_entry()
1374 sce->st = st; /*(copy prior to calling fam_dir_monitor())*/ in stat_cache_get_entry()
1378 if (sce->fam_dir) --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_get_entry()
1379 sce->fam_dir = in stat_cache_get_entry()
1382 if (NULL != sce->fam_dir) { in stat_cache_get_entry()
1384 sce->stat_ts = cur_ts; in stat_cache_get_entry()
1390 sce->stat_ts = cur_ts; in stat_cache_get_entry()
1391 return sce; in stat_cache_get_entry()
1395 stat_cache_entry * const sce = stat_cache_get_entry(name); in stat_cache_get_entry_open() local
1396 if (NULL == sce) return NULL; in stat_cache_get_entry_open()
1397 if (sce->fd >= 0) return sce; in stat_cache_get_entry_open()
1398 if (sce->st.st_size > 0) { in stat_cache_get_entry_open()
1399 sce->fd = stat_cache_open_rdonly_fstat(name, &sce->st, symlinks); in stat_cache_get_entry_open()
1400 buffer_clear(&sce->etag); in stat_cache_get_entry_open()
1402 return sce; /* (note: sce->fd might still be -1 if open() failed) */ in stat_cache_get_entry_open()
1406 const stat_cache_entry * const sce = stat_cache_get_entry(name); in stat_cache_path_stat() local
1407 return sce ? &sce->st : NULL; in stat_cache_path_stat()
1411 const stat_cache_entry * const sce = stat_cache_get_entry(name); in stat_cache_path_isdir() local
1412 return (sce && (S_ISDIR(sce->st.st_mode) ? 1 : (errno = ENOTDIR, 0))); in stat_cache_path_isdir()
1493 const stat_cache_entry * const sce = t->data; in stat_cache_tag_old_entries() local
1494 if (cur_ts - sce->stat_ts > max_age) in stat_cache_tag_old_entries()