L4Re/departure

libe2access/include/e2access/image.h

248:dfd7946310c2
2022-02-16 Paul Boddie Added separate functions for testing empty directories and updating parent directory reference counts.
     1 /*     2  * Filesystem image access functions.     3  *     4  * Copyright (C) 2019, 2021, 2022 Paul Boddie <paul@boddie.org.uk>     5  *     6  * This program is free software; you can redistribute it and/or     7  * modify it under the terms of the GNU General Public License as     8  * published by the Free Software Foundation; either version 2 of     9  * the License, or (at your option) any later version.    10  *    11  * This program is distributed in the hope that it will be useful,    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    14  * GNU General Public License for more details.    15  *    16  * You should have received a copy of the GNU General Public License    17  * along with this program; if not, write to the Free Software    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor,    19  * Boston, MA  02110-1301, USA    20  */    21     22 #ifndef __IMAGE_H__    23 #define __IMAGE_H__    24     25 #include <ext2fs/ext2fs.h>    26 #include <sys/stat.h>    27     28 #ifdef __cplusplus    29 extern "C" {    30 #endif    31     32 /* Filesystem operations. */    33     34 errcode_t image_create_file(ext2_filsys fs, ext2_ino_t ino_target,    35                             const char *basename, __u16 mode,    36                             __u16 uid, __u16 gid, ext2_ino_t *ino_file);    37     38 int image_file_type(int mode);    39     40 errcode_t image_find_next(ext2_filsys fs, ext2_ino_t ino_dir,    41                           const char **basename, char *buf, ext2_ino_t *ino);    42     43 errcode_t image_find_path(ext2_filsys fs, const char **pathname,    44                           ext2_ino_t *ino);    45     46 errcode_t image_find_file(ext2_filsys fs, const char *dirname,    47                           const char *basename, ext2_ino_t *ino);    48     49 errcode_t image_inode(ext2_filsys fs, const char *pathname,    50                       struct ext2_inode *inode);    51     52 errcode_t image_list_dir(ext2_filsys fs, const char *path,    53                          int (*proc)(struct ext2_dir_entry *, int, int, char *,    54                                      void *),    55                          void *data);    56     57 errcode_t image_make_dir(ext2_filsys fs, ext2_ino_t ino_dir,    58                          const char *basename, __u16 mode,    59                          __u16 uid, __u16 gid, ext2_ino_t *ino);    60     61 errcode_t image_make_next_dir(ext2_filsys fs, ext2_ino_t ino_dir,    62                               const char **basename, __u16 mode, __u16 uid,    63                               __u16 gid, ext2_ino_t *ino);    64     65 errcode_t image_make_dirs(ext2_filsys fs, const char **pathname,    66                           ext2_ino_t ino_dir, __u16 mode, __u16 uid,    67                           __u16 gid);    68     69 errcode_t image_remove_by_inode(ext2_filsys fs, ext2_ino_t ino);    70     71 errcode_t image_remove_by_path(ext2_filsys fs, const char *path);    72     73 errcode_t image_remove_directory_test(ext2_filsys fs, ext2_ino_t ino);    74     75 errcode_t image_remove_parent_decrement(ext2_filsys fs, ext2_ino_t ino);    76     77 errcode_t image_rename(ext2_filsys fs, ext2_ino_t source,    78                        ext2_ino_t source_parent, const char *source_basename,    79                        ext2_ino_t target_parent, const char *target_basename);    80     81 void image_set_metadata(struct ext2_inode *inode, int clean, __u16 mode,    82                         __u16 uid, __u16 gid);    83     84 errcode_t image_stat_inode(ext2_filsys fs, ext2_ino_t ino, struct stat *st);    85     86 errcode_t image_unlink_by_name(ext2_filsys fs, ext2_ino_t ino_parent,    87                                const char *basename);    88     89 errcode_t image_unlink_by_path(ext2_filsys fs, const char *path);    90     91 errcode_t image_unlink_by_inode(ext2_filsys fs, ext2_ino_t ino_parent,    92                                 ext2_ino_t ino);    93     94 /* Presence and type tests. */    95     96 int image_exists(ext2_filsys fs, const char *name);    97     98 int _image_isdir(ext2_filsys fs, ext2_ino_t ino);    99    100 int image_isdir(ext2_filsys fs, const char *name);   101    102 int _image_isfile(ext2_filsys fs, ext2_ino_t ino);   103    104 int image_isfile(ext2_filsys fs, const char *name);   105    106 #ifdef __cplusplus   107 }   108 #endif   109    110    111 #endif /* __IMAGE_H__ */