1.1 --- a/libe2access/include/e2access/image.h Sat Jan 08 00:16:20 2022 +0100
1.2 +++ b/libe2access/include/e2access/image.h Fri Jan 14 01:10:35 2022 +0100
1.3 @@ -62,13 +62,13 @@
1.4 ext2_ino_t ino_dir, __u16 mode, __u16 uid,
1.5 __u16 gid);
1.6
1.7 +errcode_t image_remove_by_inode(ext2_filsys fs, ext2_ino_t ino);
1.8 +
1.9 void image_set_metadata(struct ext2_inode *inode, int clean, __u16 mode,
1.10 __u16 uid, __u16 gid);
1.11
1.12 errcode_t image_stat_inode(ext2_filsys fs, ext2_ino_t ino, struct stat *st);
1.13
1.14 -errcode_t image_remove_by_inode(ext2_filsys fs, ext2_ino_t ino);
1.15 -
1.16 errcode_t image_unlink_by_name(ext2_filsys fs, ext2_ino_t ino_parent,
1.17 const char *basename);
1.18
2.1 --- a/libe2access/lib/src/image.c Sat Jan 08 00:16:20 2022 +0100
2.2 +++ b/libe2access/lib/src/image.c Fri Jan 14 01:10:35 2022 +0100
2.3 @@ -1,7 +1,7 @@
2.4 /*
2.5 * Filesystem access functions.
2.6 *
2.7 - * Copyright (C) 2019, 2021 Paul Boddie <paul@boddie.org.uk>
2.8 + * Copyright (C) 2019, 2021, 2022 Paul Boddie <paul@boddie.org.uk>
2.9 *
2.10 * This program is free software; you can redistribute it and/or
2.11 * modify it under the terms of the GNU General Public License as
2.12 @@ -77,19 +77,6 @@
2.13 return ext2fs_write_new_inode(fs, *ino_file, &inode_file);
2.14 }
2.15
2.16 -/* Set the mode, user and group metadata for a file. */
2.17 -
2.18 -void image_set_metadata(struct ext2_inode *inode, int clean, __u16 mode,
2.19 - __u16 uid, __u16 gid)
2.20 -{
2.21 - if (clean)
2.22 - memset(inode, 0, sizeof(*inode));
2.23 -
2.24 - inode->i_mode = mode;
2.25 - inode->i_uid = uid;
2.26 - inode->i_gid = gid;
2.27 -}
2.28 -
2.29 /* Find an object in the given directory with the given name in the filesystem
2.30 image, updating the name reference to refer to the next component. */
2.31
2.32 @@ -313,36 +300,6 @@
2.33 return 0;
2.34 }
2.35
2.36 -/* Copy file metadata into a stat structure. */
2.37 -
2.38 -errcode_t image_stat_inode(ext2_filsys fs, ext2_ino_t ino, struct stat *st)
2.39 -{
2.40 - struct ext2_inode inode;
2.41 - errcode_t retval = ext2fs_read_inode(fs, ino, &inode);
2.42 -
2.43 - if (retval)
2.44 - return retval;
2.45 -
2.46 - st->st_dev = 0; /* device identifier */
2.47 - st->st_ino = ino;
2.48 - st->st_mode = inode.i_mode;
2.49 - st->st_nlink = inode.i_links_count;
2.50 - st->st_uid = inode_uid(inode);
2.51 - st->st_gid = inode_gid(inode);
2.52 - st->st_rdev = 0; /* special file device identifier */
2.53 - st->st_size = EXT2_I_SIZE(&inode);
2.54 - st->st_blksize = fs->blocksize;
2.55 - st->st_blocks = 0; /* number of 512 byte blocks allocated */
2.56 - st->st_atim.tv_sec = inode.i_atime;
2.57 - st->st_atim.tv_nsec = 0; /* nanosecond resolution */
2.58 - st->st_mtim.tv_sec = inode.i_mtime;
2.59 - st->st_mtim.tv_nsec = 0;
2.60 - st->st_ctim.tv_sec = inode.i_ctime;
2.61 - st->st_ctim.tv_nsec = 0;
2.62 -
2.63 - return 0;
2.64 -}
2.65 -
2.66 /* Remove an inode. */
2.67
2.68 errcode_t image_remove_by_inode(ext2_filsys fs, ext2_ino_t ino)
2.69 @@ -391,6 +348,49 @@
2.70 sizeof(inode));
2.71 }
2.72
2.73 +/* Set the mode, user and group metadata for a file. */
2.74 +
2.75 +void image_set_metadata(struct ext2_inode *inode, int clean, __u16 mode,
2.76 + __u16 uid, __u16 gid)
2.77 +{
2.78 + if (clean)
2.79 + memset(inode, 0, sizeof(*inode));
2.80 +
2.81 + inode->i_mode = mode;
2.82 + inode->i_uid = uid;
2.83 + inode->i_gid = gid;
2.84 +}
2.85 +
2.86 +/* Copy file metadata into a stat structure. */
2.87 +
2.88 +errcode_t image_stat_inode(ext2_filsys fs, ext2_ino_t ino, struct stat *st)
2.89 +{
2.90 + struct ext2_inode inode;
2.91 + errcode_t retval = ext2fs_read_inode(fs, ino, &inode);
2.92 +
2.93 + if (retval)
2.94 + return retval;
2.95 +
2.96 + st->st_dev = 0; /* device identifier */
2.97 + st->st_ino = ino;
2.98 + st->st_mode = inode.i_mode;
2.99 + st->st_nlink = inode.i_links_count;
2.100 + st->st_uid = inode_uid(inode);
2.101 + st->st_gid = inode_gid(inode);
2.102 + st->st_rdev = 0; /* special file device identifier */
2.103 + st->st_size = EXT2_I_SIZE(&inode);
2.104 + st->st_blksize = fs->blocksize;
2.105 + st->st_blocks = 0; /* number of 512 byte blocks allocated */
2.106 + st->st_atim.tv_sec = inode.i_atime;
2.107 + st->st_atim.tv_nsec = 0; /* nanosecond resolution */
2.108 + st->st_mtim.tv_sec = inode.i_mtime;
2.109 + st->st_mtim.tv_nsec = 0;
2.110 + st->st_ctim.tv_sec = inode.i_ctime;
2.111 + st->st_ctim.tv_nsec = 0;
2.112 +
2.113 + return 0;
2.114 +}
2.115 +
2.116 /* Unlink a directory entry by name. */
2.117
2.118 errcode_t image_unlink_by_name(ext2_filsys fs, ext2_ino_t ino_parent,