xref: /php-src/ext/dom/lexbor/lexbor/core/fs.h (revision bffab33a)
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