1 /* 2 * Copyright (C) 2018 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #ifndef LEXBOR_FS_H 8 #define LEXBOR_FS_H 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #include "lexbor/core/base.h" 15 16 17 typedef lexbor_action_t (*lexbor_fs_dir_file_f)(const lxb_char_t *fullpath, 18 size_t fullpath_len, 19 const lxb_char_t *filename, 20 size_t filename_len, void *ctx); 21 22 typedef int lexbor_fs_dir_opt_t; 23 24 enum lexbor_fs_dir_opt { 25 LEXBOR_FS_DIR_OPT_UNDEF = 0x00, 26 LEXBOR_FS_DIR_OPT_WITHOUT_DIR = 0x01, 27 LEXBOR_FS_DIR_OPT_WITHOUT_FILE = 0x02, 28 LEXBOR_FS_DIR_OPT_WITHOUT_HIDDEN = 0x04, 29 }; 30 31 typedef enum { 32 LEXBOR_FS_FILE_TYPE_UNDEF = 0x00, 33 LEXBOR_FS_FILE_TYPE_FILE = 0x01, 34 LEXBOR_FS_FILE_TYPE_DIRECTORY = 0x02, 35 LEXBOR_FS_FILE_TYPE_BLOCK_DEVICE = 0x03, 36 LEXBOR_FS_FILE_TYPE_CHARACTER_DEVICE = 0x04, 37 LEXBOR_FS_FILE_TYPE_PIPE = 0x05, 38 LEXBOR_FS_FILE_TYPE_SYMLINK = 0x06, 39 LEXBOR_FS_FILE_TYPE_SOCKET = 0x07 40 } 41 lexbor_fs_file_type_t; 42 43 44 LXB_API lxb_status_t 45 lexbor_fs_dir_read(const lxb_char_t *dirpath, lexbor_fs_dir_opt_t opt, 46 lexbor_fs_dir_file_f callback, void *ctx); 47 48 LXB_API lexbor_fs_file_type_t 49 lexbor_fs_file_type(const lxb_char_t *full_path); 50 51 LXB_API lxb_char_t * 52 lexbor_fs_file_easy_read(const lxb_char_t *full_path, size_t *len); 53 54 55 #ifdef __cplusplus 56 } /* extern "C" */ 57 #endif 58 59 #endif /* LEXBOR_FS_H */ 60 61