/* Return 1 on error and 0 on success */ uint8_t tsk_fs_dls(TSK_FS_INFO * fs, uint8_t lclflags, TSK_DADDR_T bstart, TSK_DADDR_T blast, TSK_FS_BLOCK_FLAG_ENUM flags) { if (lclflags & TSK_FS_DLS_SLACK) { /* get the info on each allocated inode */ if (fs->inode_walk(fs, fs->first_inum, fs->last_inum, TSK_FS_INODE_FLAG_ALLOC, slack_inode_act, NULL)) return 1; } else if (lclflags & TSK_FS_DLS_LIST) { if (print_list_head(fs)) return 1; if (fs->block_walk(fs, bstart, blast, flags, print_list, NULL)) return 1; } else { #ifdef TSK_WIN32 if (-1 == _setmode(_fileno(stdout), _O_BINARY)) { tsk_error_reset(); tsk_errno = TSK_ERR_FS_WRITE; snprintf(tsk_errstr, TSK_ERRSTR_L, "dls_lib: error setting stdout to binary: %s", strerror(errno)); return 1; } #endif if (fs->block_walk(fs, bstart, blast, flags, print_block, NULL)) return 1; } return 0; }
/* Return 1 on error and 0 on success */ uint8_t tsk_fs_blkls(TSK_FS_INFO * fs, TSK_FS_BLKLS_FLAG_ENUM a_blklsflags, TSK_DADDR_T bstart, TSK_DADDR_T blast, TSK_FS_BLOCK_WALK_FLAG_ENUM a_block_flags) { BLKLS_DATA data; if (a_blklsflags & TSK_FS_BLKLS_SLACK) { /* get the info on each allocated inode */ if (fs->inode_walk(fs, fs->first_inum, fs->last_inum, TSK_FS_META_FLAG_ALLOC, slack_inode_act, &data)) return 1; } else if (a_blklsflags & TSK_FS_BLKLS_LIST) { if (print_list_head(fs)) return 1; a_block_flags |= TSK_FS_BLOCK_WALK_FLAG_AONLY; if (tsk_fs_block_walk(fs, bstart, blast, a_block_flags, print_list, &data)) return 1; } else { #ifdef TSK_WIN32 if (-1 == _setmode(_fileno(stdout), _O_BINARY)) { tsk_error_reset(); tsk_error_set_errno(TSK_ERR_FS_WRITE); tsk_error_set_errstr ("blkls_lib: error setting stdout to binary: %s", strerror(errno)); return 1; } #endif if (tsk_fs_block_walk(fs, bstart, blast, a_block_flags, print_block, &data)) return 1; } return 0; }