[evolution-data-server] Bug 735659 - EBookSqlite: Revert ABI change introduced by commit 8231f94
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug 735659 - EBookSqlite: Revert ABI change introduced by commit 8231f94
- Date: Wed, 19 Nov 2014 14:00:44 +0000 (UTC)
commit 21a172db8e687f0684543f0d66003697d6894811
Author: Mateusz Polrola <mateusz polrola gmail com>
Date: Wed Nov 19 14:58:24 2014 +0100
Bug 735659 - EBookSqlite: Revert ABI change introduced by commit 8231f94
Commit 8231f94 broken ABI, by adding additional parameter to
e_phone_number_get_national_number function.
This patch is implementing fix for bug 735659 without breaking ABI, by
removing leading zeros from phone numbers in EBookSqlite directly.
.../libebook-contacts/e-phone-number-private.cpp | 15 ++--------
.../libebook-contacts/e-phone-number-private.h | 3 +-
addressbook/libebook-contacts/e-phone-number.c | 6 +---
addressbook/libebook-contacts/e-phone-number.h | 3 +-
.../libedata-book/e-book-backend-sqlitedb.c | 2 +-
addressbook/libedata-book/e-book-sqlite.c | 29 +++++++++++++++----
tests/libebook-contacts/test-phone-number.c | 4 +-
7 files changed, 33 insertions(+), 29 deletions(-)
---
diff --git a/addressbook/libebook-contacts/e-phone-number-private.cpp
b/addressbook/libebook-contacts/e-phone-number-private.cpp
index 01e3e60..b539bc4 100644
--- a/addressbook/libebook-contacts/e-phone-number-private.cpp
+++ b/addressbook/libebook-contacts/e-phone-number-private.cpp
@@ -29,7 +29,6 @@
/* C++ standard library */
#include <string>
-#include <sstream>
/* system headers */
#include <langinfo.h>
@@ -250,22 +249,14 @@ _e_phone_number_cxx_get_country_code (const EPhoneNumber *phone_number,
}
gchar *
-_e_phone_number_cxx_get_national_number (const EPhoneNumber *phone_number,
- gboolean with_leading_zeros)
+_e_phone_number_cxx_get_national_number (const EPhoneNumber *phone_number)
{
g_return_val_if_fail (NULL != phone_number, NULL);
std::string national_number;
- if (with_leading_zeros) {
- e_phone_number_util_get_instance ()->GetNationalSignificantNumber (
- phone_number->priv, &national_number);
- } else {
- std::ostringstream oss;
- oss << phone_number->priv.national_number();
- national_number = oss.str();
- }
-
+ e_phone_number_util_get_instance ()->GetNationalSignificantNumber (
+ phone_number->priv, &national_number);
if (!national_number.empty ())
return g_strdup (national_number.c_str ());
diff --git a/addressbook/libebook-contacts/e-phone-number-private.h
b/addressbook/libebook-contacts/e-phone-number-private.h
index 35ef201..537c4c5 100644
--- a/addressbook/libebook-contacts/e-phone-number-private.h
+++ b/addressbook/libebook-contacts/e-phone-number-private.h
@@ -61,8 +61,7 @@ E_PHONE_NUMBER_LOCAL gchar * _e_phone_number_cxx_to_string (const
EPhoneNumber
EPhoneNumberFormat format);
E_PHONE_NUMBER_LOCAL gint _e_phone_number_cxx_get_country_code (const EPhoneNumber
*phone_number,
EPhoneNumberCountrySource
*source);
-E_PHONE_NUMBER_LOCAL gchar * _e_phone_number_cxx_get_national_number (const EPhoneNumber
*phone_number,
- gboolean with_leading_zeros);
+E_PHONE_NUMBER_LOCAL gchar * _e_phone_number_cxx_get_national_number (const EPhoneNumber
*phone_number);
E_PHONE_NUMBER_LOCAL EPhoneNumberMatch _e_phone_number_cxx_compare (const EPhoneNumber
*first_number,
const EPhoneNumber
*second_number);
diff --git a/addressbook/libebook-contacts/e-phone-number.c b/addressbook/libebook-contacts/e-phone-number.c
index 44ff715..60f1741 100644
--- a/addressbook/libebook-contacts/e-phone-number.c
+++ b/addressbook/libebook-contacts/e-phone-number.c
@@ -271,13 +271,11 @@ e_phone_number_get_country_code (const EPhoneNumber *phone_number,
* Since: 3.8
**/
gchar *
-e_phone_number_get_national_number (const EPhoneNumber *phone_number,
- gboolean with_leading_zeros)
+e_phone_number_get_national_number (const EPhoneNumber *phone_number)
{
#ifdef ENABLE_PHONENUMBER
- return _e_phone_number_cxx_get_national_number (phone_number,
- with_leading_zeros);
+ return _e_phone_number_cxx_get_national_number (phone_number);
#else /* ENABLE_PHONENUMBER */
diff --git a/addressbook/libebook-contacts/e-phone-number.h b/addressbook/libebook-contacts/e-phone-number.h
index c070766..376e95c 100644
--- a/addressbook/libebook-contacts/e-phone-number.h
+++ b/addressbook/libebook-contacts/e-phone-number.h
@@ -220,8 +220,7 @@ gchar * e_phone_number_to_string (const EPhoneNumber
*phone_number,
gint e_phone_number_get_country_code (const EPhoneNumber *phone_number,
EPhoneNumberCountrySource *source);
gchar * e_phone_number_get_national_number
- (const EPhoneNumber *phone_number,
- gboolean with_leading_zeros);
+ (const EPhoneNumber *phone_number);
EPhoneNumberMatch e_phone_number_compare (const EPhoneNumber *first_number,
const EPhoneNumber *second_number);
diff --git a/addressbook/libedata-book/e-book-backend-sqlitedb.c
b/addressbook/libedata-book/e-book-backend-sqlitedb.c
index fa32132..6c85dad 100644
--- a/addressbook/libedata-book/e-book-backend-sqlitedb.c
+++ b/addressbook/libedata-book/e-book-backend-sqlitedb.c
@@ -2045,7 +2045,7 @@ convert_phone (const gchar *normal,
if (number) {
EPhoneNumberCountrySource source;
- national_number = e_phone_number_get_national_number (number, TRUE);
+ national_number = e_phone_number_get_national_number (number);
country_code = e_phone_number_get_country_code (number, &source);
e_phone_number_free (number);
diff --git a/addressbook/libedata-book/e-book-sqlite.c b/addressbook/libedata-book/e-book-sqlite.c
index 682f9d6..05f68c4 100644
--- a/addressbook/libedata-book/e-book-sqlite.c
+++ b/addressbook/libedata-book/e-book-sqlite.c
@@ -3057,7 +3057,6 @@ ebsql_new_internal (const gchar *path,
static gchar *
convert_phone (const gchar *normal,
const gchar *region_code,
- gboolean with_leading_zeros,
gint *out_country_code)
{
EPhoneNumber *number = NULL;
@@ -3074,7 +3073,7 @@ convert_phone (const gchar *normal,
if (number) {
EPhoneNumberCountrySource source;
- national_number = e_phone_number_get_national_number (number, with_leading_zeros);
+ national_number = e_phone_number_get_national_number (number);
country_code = e_phone_number_get_country_code (number, &source);
e_phone_number_free (number);
@@ -3088,6 +3087,22 @@ convert_phone (const gchar *normal,
return national_number;
}
+static gchar *
+remove_leading_zeros (gchar *number)
+{
+ gchar *trimmed = NULL;
+ gchar *tmp = number;
+
+ g_return_val_if_fail (NULL != number, NULL);
+
+ while ('0' == *tmp)
+ tmp++;
+ trimmed = g_strdup (tmp);
+ g_free (number);
+
+ return trimmed;
+}
+
typedef struct {
gint country_code;
gchar *national;
@@ -3236,7 +3251,6 @@ update_e164_attribute_params (EBookSqlite *ebsql,
number.national = convert_phone (
original_number,
ebsql->priv->region_code,
- TRUE,
&(number.country_code));
}
@@ -3410,7 +3424,8 @@ ebsql_run_multi_insert_one (EBookSqlite *ebsql,
str = convert_phone (
normal, ebsql->priv->region_code,
- FALSE, &country_code);
+ &country_code);
+ str = remove_leading_zeros (str);
/* :value_phone */
ret = sqlite3_bind_text (stmt, param_idx++, str, -1, g_free);
@@ -3699,7 +3714,8 @@ ebsql_run_insert (EBookSqlite *ebsql,
str = convert_phone (
normal, ebsql->priv->region_code,
- FALSE, &country_code);
+ &country_code);
+ str = remove_leading_zeros (str);
ret = sqlite3_bind_text (stmt, param_idx++, str, -1, g_free);
if (ret == SQLITE_OK)
@@ -4809,8 +4825,9 @@ query_preflight_check (PreflightContext *context,
/* Collect values we'll need later while generating field
* tests, no need to parse the phone number more than once
*/
- phone_test->national = e_phone_number_get_national_number (number,
FALSE);
+ phone_test->national = e_phone_number_get_national_number (number);
phone_test->country = e_phone_number_get_country_code (number,
&source);
+ phone_test->national = remove_leading_zeros (phone_test->national);
if (source == E_PHONE_NUMBER_COUNTRY_FROM_DEFAULT)
phone_test->country = 0;
diff --git a/tests/libebook-contacts/test-phone-number.c b/tests/libebook-contacts/test-phone-number.c
index 4822fb3..fb4dcbc 100644
--- a/tests/libebook-contacts/test-phone-number.c
+++ b/tests/libebook-contacts/test-phone-number.c
@@ -200,7 +200,7 @@ test_parse_and_format (gconstpointer data)
test_data->country_code);
g_assert_cmpuint (source, ==, test_data->country_source);
- national = e_phone_number_get_national_number (parsed, TRUE);
+ national = e_phone_number_get_national_number (parsed);
g_assert_cmpstr (national, ==, test_data->national_number);
g_free (national);
@@ -272,7 +272,7 @@ test_parse_auto_region (void)
g_assert_cmpint (e_phone_number_get_country_code (parsed, &source), ==, 1);
g_assert_cmpuint (source, ==, E_PHONE_NUMBER_COUNTRY_FROM_DEFAULT);
- national = e_phone_number_get_national_number (parsed, TRUE);
+ national = e_phone_number_get_national_number (parsed);
g_assert_cmpstr (national, ==, "2125423789");
g_free (national);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]