summaryrefslogtreecommitdiffstats
path: root/src/common.c
diff options
context:
space:
mode:
authorRafael Ignacio Zurita <rafael.zurita@profusion.mobi>2011-01-25 11:02:38 -0300
committerDenis Kenzior <denkenz@gmail.com>2011-01-25 14:12:24 -0600
commit4eda451c033244e75972746a5d3b834833a37756 (patch)
treebcc3b1edd4d5f79f95a433f27ab4495de9a0fe1f /src/common.c
parent78c1e96bf9601b5e5d31d04413baa1265a1c284f (diff)
downloadofono-4eda451c033244e75972746a5d3b834833a37756.tar.bz2
common: add function to validate long numbers
Also, adapt voicecall to use the new function for outgoing calls.
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/common.c b/src/common.c
index 4d934888..8bf9dbba 100644
--- a/src/common.c
+++ b/src/common.c
@@ -234,7 +234,7 @@ struct error_entry ceer_errors[] = {
{ 127, "Interworking, unspecified" },
};
-gboolean valid_phone_number_format(const char *number)
+gboolean valid_number_format(const char *number, int length)
{
int len = strlen(number);
int begin = 0;
@@ -246,7 +246,7 @@ gboolean valid_phone_number_format(const char *number)
if (number[0] == '+')
begin = 1;
- if ((len - begin) > OFONO_MAX_PHONE_NUMBER_LENGTH)
+ if ((len - begin) > length)
return FALSE;
for (i = begin; i < len; i++) {
@@ -262,6 +262,22 @@ gboolean valid_phone_number_format(const char *number)
return TRUE;
}
+/*
+ * According to 3GPP TS 24.011 or 3GPP TS 31.102, some
+ * addresses (or numbers), like Service Centre address,
+ * Destination address, or EFADN (Abbreviated dialling numbers),
+ * are up 20 digits.
+ */
+gboolean valid_phone_number_format(const char *number)
+{
+ return valid_number_format(number, 20);
+}
+
+gboolean valid_long_phone_number_format(const char *number)
+{
+ return valid_number_format(number, OFONO_MAX_PHONE_NUMBER_LENGTH);
+}
+
gboolean valid_cdma_phone_number_format(const char *number)
{
int len = strlen(number);