static int internal_dump_operand(struct STREAM *stream, struct INSTRUCTION *instr, int op_index) { struct OPERAND *op; if (op_index > 3 || op_index < 0) return -1; op = instr ->ops + op_index; if (op ->flags & OPERAND_FLAG_PRESENT) { switch (op ->flags & OPERAND_TYPE_MASK) { case OPERAND_TYPE_REG: dump_reg(stream, op ->value.reg.type, op ->value.reg.code, op ->size); break; case OPERAND_TYPE_MEM: dump_addr(stream, instr, op); break; case OPERAND_TYPE_IMM: dump_imm(stream, op); break; case OPERAND_TYPE_DIR: dump_dir(stream, op); break; default: safe_unistrncpy(stream, _UT("internal error")); break; } } return stream ->reallen; }
void dump_inode (tree_s *tree, u64 rec_key, void *rec, unint len) { inode_s *inode = rec; printf("%lld %c %lld %s\n", inode->i_no, S_ISDIR(inode->i_mode) ? 'd' : 'f', inode->i_root, inode->i_name); if (S_ISDIR(inode->i_mode)) { dump_dir(tree, inode->i_root); } }