Beispiel #1
0
static void show_oem_info(struct oem_info *oem)
{
	println("flags = 0x%02x", oem->flags);
	println("sn = %s", text_header(oem->sn, MAX_SN_LEN));
	println("wifi_mac = %s", text_header(oem->wifi_mac, WIFI_MAC_LEN));
	println("bt_mac = %s", get_text_region(oem->bt_mac, 8, BT_MAC_LEN));
}
Beispiel #2
0
bool Calculator::execute(const char *formula, const char *formula_end, double &result)
{
	double value;

#if CAVAN_MATH_DEBUG
	println("formula = %s", text_header(formula, formula_end - formula));
#endif

	mStackOperand.clear();
	mStackOperator.clear();
	mLastFieldType = FIELD_TYPE_NONE;

	while (formula < formula_end) {
		Operator *op = matchOperator(formula);
		if (op) {
			Operator *top;
			if (mStackOperator.top(top)) {
				if (top->getPriority() <= op->getPriority()) {
					if (!top->execute(mStackOperand)) {
						setErrMsg(top->getErrMsg());
						return false;
					}

					mStackOperator.pop(top);
				}
			}

			if (op->getOmitMul() && mLastFieldType == FIELD_TYPE_VALUE && mStackOperand.hasData()) {
				Operator *mul = matchOperator("*");
				if (mul) {
					mStackOperator.push(mul);
				}
			}

			switch (op->getType()) {
			case OPERATOR_TYPE2:
			case OPERATOR_TYPE1_RIGHT:
				if (!mStackOperator.push(op)) {
					setErrMsg("Operator stack overfrow");
					return false;
				}

				formula += op->getLength();
				break;

			case OPERATOR_TYPE1_LEFT:
			case OPERATOR_TYPE_CONSTANT:
				if (!op->execute(mStackOperand)) {
					setErrMsg(op->getErrMsg());
					return false;
				}

				formula += op->getLength();
				break;

			case OPERATOR_TYPE_LIST: {
				Stack<double> stack(200);
				if (!parseDataList(formula + op->getLength(), formula_end, &formula, stack)) {
					return false;
				}

				if (!op->execute(stack, mStackOperand)) {
					setErrMsg(op->getErrMsg());
					return false;
				}
				break;
			}

			default:
				setErrMsg("Invalid operator");
				return false;
			}

			mLastFieldType = FIELD_TYPE_OPERATOR;
		} else {
			switch (*formula) {
			case ' ':
			case '\r':
			case '\n':
			case '\t':
			case '\f':
				formula++;
				break;

			case '0' ... '9':
				value = text2double_unsigned(formula, formula_end, &formula, 10);
				if (mLastFieldType == FIELD_TYPE_OPERATOR && mStackOperator.count() == 1 && mStackOperand.isEmpty()) {
					Operator *op;
					if (mStackOperator.top(op) && strcmp(op->getSymbol(), "-") == 0) {
						value = -value;
						mStackOperator.pop(op);
					}
				}

				if (!mStackOperand.push(value)) {
					setErrMsg("Operand stack overfrow");
					return false;
				}
				mLastFieldType = FIELD_TYPE_VALUE;
				break;

			case '(':
			case '[':
			case '{':
			{
				const char *p = get_bracket_pair(formula, formula_end);
				if (p == NULL) {
					setErrMsg("No matching brackets");
					return false;
				}

				Calculator calculator;
				if (!calculator.execute(formula + 1, p, value)) {
					setErrMsg(calculator.getErrMsg());
					return false;
				}

				if (!mStackOperand.push(value)) {
					setErrMsg("Operand stack overfrow");
					return false;
				}

				formula = p + 1;
				mLastFieldType = FIELD_TYPE_BRACKET;
				break;
			}

			default:
				setErrMsg("Invalid symbol");
				return false;
			}
		}
	}

	while (1) {
		Operator *op;
		if (!mStackOperator.pop(op)) {
			break;
		}

		if (!op->execute(mStackOperand)) {
			setErrMsg(op->getErrMsg());
			return false;
		}
	}

	if (!mStackOperand.pop(result)) {
		setErrMsg("Missing operand");
		return false;
	}

	if (mStackOperand.hasData()) {
		setErrMsg("Too much operand");
		return false;
	}

	return true;
}
Beispiel #3
0
void show_ext2_super_block(const struct ext2_super_block *super_block)
{
	print_sep(60);
	pr_bold_info("ext2 super block %p", super_block);

	println("inodes_count = %d", super_block->inodes_count);
	println("blocks_count = %d", super_block->blocks_count);
	println("reserved_blocks_count = %d", super_block->reserved_blocks_count);
	println("free_blocks_count = %d", super_block->free_blocks_count);
	println("free_inodes_count = %d", super_block->free_inodes_count);
	println("first_data_block = %d", super_block->first_data_block);
	println("log_block_size = %d", super_block->log_block_size);
	println("log_frag_size = %d", super_block->log_frag_size);
	println("blocks_per_group = %d", super_block->blocks_per_group);
	println("frags_per_group = %d", super_block->frags_per_group);
	println("inodes_per_group = %d", super_block->inodes_per_group);
	println("mtime = %d", super_block->mtime);
	println("wtime = %d", super_block->wtime);
	println("mnt_count = %d", super_block->mnt_count);
	println("max_mnt_count = %d", super_block->max_mnt_count);
	println("magic_number = 0x%04x", super_block->magic_number);
	println("state = %d", super_block->state);
	println("errors = %d", super_block->errors);
	println("minor_rev_level = %d", super_block->minor_rev_level);
	println("lastcheck = %d", super_block->lastcheck);
	println("checkinterval = %d", super_block->checkinterval);
	println("creator_os = %d", super_block->creator_os);
	println("rev_level = %d", super_block->rev_level);
	println("def_resuid = %d", super_block->def_resuid);
	println("def_resgid = %d", super_block->def_resgid);
	println("first_inode = %d", super_block->first_inode);
	println("inode_size = %d", super_block->inode_size);
	println("block_group_nr = %d", super_block->block_group_nr);
	println("feature_compat = 0x%08x", super_block->feature_compat);
	println("feature_incompat = 0x%08x", super_block->feature_incompat);
	println("feature_ro_compat = 0x%08x", super_block->feature_ro_compat);
	println("uuid[16] = %s", text_header((char *) super_block->uuid, 16));
	println("volume_name[16] = %s", text_header(super_block->volume_name, 16));
	println("last_mounted[64] = %s", text_header(super_block->last_mounted, 64));
	println("algorithm_usage_bitmap = %d", super_block->algorithm_usage_bitmap);
	println("prealloc_blocks = %d", super_block->prealloc_blocks);
	println("prealloc_dir_blocks = %d", super_block->prealloc_dir_blocks);

	println("reserved_gdt_blocks = %d", super_block->reserved_gdt_blocks);
	// println("journal_uuid[16] = %d", super_block->journal_uuid[16]);
	println("journal_inum = %d", super_block->journal_inum);
	println("journal_dev = %d", super_block->journal_dev);
	println("last_orphan = %d", super_block->last_orphan);
	// println("hash_seed[4] = %d", super_block->hash_seed[4]);
	println("def_hash_version = %d", super_block->def_hash_version);
	println("jnl_backup_type = %d", super_block->jnl_backup_type);
	println("desc_size = %d", super_block->desc_size);
	println("default_mount_opts = %d", super_block->default_mount_opts);
	println("first_meta_bg = %d", super_block->first_meta_bg);
	println("mkfs_time = %d", super_block->mkfs_time);
	// println("jnl_blocks[17] = %d", super_block->jnl_blocks[17]);
	println("blocks_count_hi = %d", super_block->blocks_count_hi);
	println("r_blocks_count_hi = %d", super_block->r_blocks_count_hi);
	println("free_blocks_hi = %d", super_block->free_blocks_hi);
	println("min_extra_isize = %d", super_block->min_extra_isize);
	println("want_extra_isize = %d", super_block->want_extra_isize);
	println("flags = %d", super_block->flags);
	println("raid_stride = %d", super_block->raid_stride);
	println("mmp_update_interval = %d", super_block->mmp_update_interval);
	println("mmp_block = %" PRINT_FORMAT_INT64, super_block->mmp_block);
	println("raid_stripe_width = %d", super_block->raid_stripe_width);
	println("log_groups_per_flex = %d", super_block->log_groups_per_flex);
	println("reserved_char_pad = %d", super_block->reserved_char_pad);
	println("reserved_pad = %d", super_block->reserved_pad);
	println("kbytes_written = %" PRINT_FORMAT_INT64, super_block->kbytes_written);
	println("snapshot_inum = %d", super_block->snapshot_inum);
	println("snapshot_id = %d", super_block->snapshot_id);
	println("snapshot_r_blocks_count = %" PRINT_FORMAT_INT64, super_block->snapshot_r_blocks_count);
	println("snapshot_list = %d", super_block->snapshot_list);
	println("error_count = %d", super_block->error_count);
	println("first_error_time = %d", super_block->first_error_time);
	println("first_error_ino = %d", super_block->first_error_ino);
	println("first_error_block = %" PRINT_FORMAT_INT64, super_block->first_error_block);
	// println("first_error_func[32] = %d", super_block->first_error_func[32]);
	println("first_error_line = %d", super_block->first_error_line);
	println("last_error_time = %d", super_block->last_error_time);
	println("last_error_ino = %d", super_block->last_error_ino);
	println("last_error_line = %d", super_block->last_error_line);
	println("last_error_block = %" PRINT_FORMAT_INT64, super_block->last_error_block);
	// println("last_error_func[32] = %d", super_block->last_error_func[32]);
	// println("mount_opts[64] = %d", super_block->mount_opts[64]);
	println("usr_quota_inum = %d", super_block->usr_quota_inum);
	println("grp_quota_inum = %d", super_block->grp_quota_inum);
	println("overhead_blocks = %d", super_block->overhead_blocks);
	// println("backup_bgs[2] = %d", super_block->backup_bgs[2]);
	// println("reserved[106] = %d", super_block->reserved[106]);
	println("checksum = %d", super_block->checksum);
}