skip_sparse:
actual = write(fd, cp, fs->blocksize * d);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != fs->blocksize * d) {
*/
errcode_t ext2fs_image_inode_read(ext2_filsys fs, int fd, int flags)
{
- unsigned int group, i, c, left;
+ unsigned int group, c, left;
char *buf;
blk_t blk;
ssize_t actual;
for (group = 0; group < fs->group_desc_count; group++) {
blk = fs->group_desc[(unsigned)group].bg_inode_table;
- if (!blk)
- return EXT2_ET_MISSING_INODE_TABLE;
+ if (!blk) {
+ retval = EXT2_ET_MISSING_INODE_TABLE;
+ goto errout;
+ }
left = fs->inode_blocks_per_group;
while (left) {
c = BUF_BLOCKS;
c = left;
actual = read(fd, buf, fs->blocksize * c);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != fs->blocksize * c) {
*/
errcode_t ext2fs_image_super_write(ext2_filsys fs, int fd, int flags)
{
- unsigned int i;
char *buf, *cp;
- blk_t blk;
ssize_t actual;
errcode_t retval;
memcpy(buf, fs->super, SUPERBLOCK_SIZE);
actual = write(fd, buf, fs->blocksize);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != fs->blocksize) {
cp = (char *) fs->group_desc;
actual = write(fd, cp, fs->blocksize * fs->desc_blocks);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != fs->blocksize * fs->desc_blocks) {
*/
errcode_t ext2fs_image_super_read(ext2_filsys fs, int fd, int flags)
{
- unsigned int i;
- char *buf, *cp;
- blk_t blk;
+ char *buf;
ssize_t actual, size;
errcode_t retval;
*/
actual = read(fd, buf, size);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != size) {
actual = write(fd, ptr, size);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != size) {
c = sizeof(zero_buf);
actual = write(fd, zero_buf, c);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != c) {
errcode_t ext2fs_image_bitmap_read(ext2_filsys fs, int fd, int flags)
{
char *ptr, *buf = 0;
- int c, size;
- char zero_buf[1024];
+ int size;
ssize_t actual;
errcode_t retval;
actual = read(fd, buf, size);
if (actual == -1) {
- errno = retval;
+ retval = errno;
goto errout;
}
if (actual != size) {