From 2cc76088c7526f3991fc6495090b64bfc6847060 Mon Sep 17 00:00:00 2001 From: "Zeeshan Ali (Khattak)" Date: Tue, 8 Mar 2011 16:12:46 +0200 Subject: [PATCH] Refactor a function Refactor create_target_regex(). --- libgssdp/gssdp-resource-group.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/libgssdp/gssdp-resource-group.c b/libgssdp/gssdp-resource-group.c index 5e8aab9..af5c8f5 100644 --- a/libgssdp/gssdp-resource-group.c +++ b/libgssdp/gssdp-resource-group.c @@ -97,6 +97,7 @@ typedef struct { } DiscoveryResponse; #define DEFAULT_MESSAGE_DELAY 20 +#define VERSION_PATTERN "[0-9]+$" /* Function prototypes */ static void @@ -123,6 +124,8 @@ static void discovery_response_free (DiscoveryResponse *response); static gboolean process_queue (gpointer data); +static char * +get_version_for_target (char *target); static GRegex * create_target_regex (const char *target, GError **error); @@ -1060,29 +1063,39 @@ resource_free (Resource *resource) g_slice_free (Resource, resource); } +/* Gets you the pointer to the version part in the target string */ +static char * +get_version_for_target (char *target) +{ + char *version; + + if (strncmp (target, "urn:", 4) != 0) { + /* target is not a URN so no version. */ + return NULL; + } + + version = g_strrstr (target, ":") + 1; + if (version == NULL || + !g_regex_match_simple (VERSION_PATTERN, version, 0, 0)) + return NULL; + + return version; +} + static GRegex * create_target_regex (const char *target, GError **error) { GRegex *regex; char *pattern; char *version; - char *version_pattern; - if (strncmp (target, "urn:", 4) != 0) { - /* target is not a URN, No need to deal with version. */ - return g_regex_new (target, 0, 0, error); - } - - version_pattern = "[0-9]+$"; /* Make sure we have enough room for version pattern */ pattern = g_strndup (target, - strlen (target) + strlen (version_pattern)); + strlen (target) + strlen (VERSION_PATTERN)); - version = g_strrstr (pattern, ":") + 1; - if (version != NULL && - g_regex_match_simple (version_pattern, version, 0, 0)) { - strcpy (version, version_pattern); - } + version = get_version_for_target (pattern); + if (version != NULL) + strcpy (version, VERSION_PATTERN); regex = g_regex_new (pattern, 0, 0, error); -- 2.7.4