Beispiel #1
0
static void test_sim()
{
	char *utf8;

	utf8 = sim_string_to_utf8(sim_7bit, sizeof(sim_7bit));

	g_assert(utf8);
	g_assert(strcmp(utf8, "oFono") == 0);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_80_1, sizeof(sim_80_1));
	g_assert(utf8);
	g_assert(strcmp(utf8, "ono") == 0);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_80_2, sizeof(sim_80_2));
	g_assert(utf8);
	g_assert(strcmp(utf8, "ono") == 0);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_80_3, sizeof(sim_80_3));
	g_assert(utf8);
	g_assert(strcmp(utf8, "ono") == 0);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_81_0, sizeof(sim_81_0));
	g_assert(utf8);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_81_2, sizeof(sim_81_2));
	g_assert(utf8);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_81_1, sizeof(sim_81_1));
	g_assert(utf8);
	g_assert(strcmp(utf8, "ono") == 0);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_82_0, sizeof(sim_82_0));
	g_assert(utf8);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_82_1, sizeof(sim_82_1));
	g_assert(utf8);
	g_free(utf8);

	utf8 = sim_string_to_utf8(sim_82_2, sizeof(sim_82_2));
	g_assert(utf8 == NULL);
}
Beispiel #2
0
static struct phonebook_entry *handle_adn(size_t len, const unsigned char *msg,
					struct pb_ref_rec *ref, int adn_idx)
{
	unsigned name_length = len - 14;
	unsigned number_start = name_length;
	unsigned number_length;
	unsigned extension_record = UNUSED;
	unsigned i, prefix;
	char *number = NULL;
	char *name = sim_string_to_utf8(msg, name_length);
	struct phonebook_entry *new_entry;

	/* Length contains also TON & NPI */
	number_length = msg[number_start];

	if (number_length != UNUSED && number_length != 0) {
		number_length--;
		/* '+' + number + terminator */
		number = g_try_malloc0(2 * number_length + 2);

		if (number) {
			prefix = 0;

			if ((msg[number_start + 1] & TON_MASK)
					== TON_INTERNATIONAL) {
				number[0] = '+';
				prefix = 1;
			}

			for (i = 0; i < number_length; i++) {

				number[2 * i + prefix] =
					digit_to_utf8[msg[number_start + 2 + i]
							& 0x0f];
				number[2 * i + 1 + prefix] =
					digit_to_utf8[msg[number_start + 2 + i]
							>> 4];
			}

			extension_record = msg[len - 1];
		}
	}