diff options
Diffstat (limited to 'protocols/SkypeWeb/src/skype_utils.cpp')
-rw-r--r-- | protocols/SkypeWeb/src/skype_utils.cpp | 84 |
1 files changed, 17 insertions, 67 deletions
diff --git a/protocols/SkypeWeb/src/skype_utils.cpp b/protocols/SkypeWeb/src/skype_utils.cpp index d7e119874c..38ca985b24 100644 --- a/protocols/SkypeWeb/src/skype_utils.cpp +++ b/protocols/SkypeWeb/src/skype_utils.cpp @@ -153,86 +153,36 @@ bool CSkypeProto::IsFileExists(std::tstring path) return _taccess(path.c_str(), 0) == 0;
}
-char *CSkypeProto::ContactUrlToName(const char *url)
-{
- char *tempname = NULL;
- const char *start, *end;
- start = strstr(url, "/8:");
+// url parsing
- if (!start)
+char *ParseUrl(const char *url, const char *token)
+{
+ const char *start = strstr(url, token);
+ if (start == NULL)
return NULL;
- start = start + 3;
- if ((end = strchr(start, '/')))
- {
- mir_free(tempname);
- tempname = mir_strndup(start, end - start);
- return tempname;
- }
- mir_free(tempname);
- tempname = mir_strdup(start);
+ start = start + mir_strlen(token);
+ const char *end = strchr(start, '/');
+ if (start == NULL)
+ return mir_strdup(start);
+ return mir_strndup(start, end - start);
+}
- return tempname;
+char *CSkypeProto::ContactUrlToName(const char *url)
+{
+ return ParseUrl(url, "/8:");
}
char *CSkypeProto::SelfUrlToName(const char *url)
{
- char *tempname = NULL;
- const char *start, *end;
- start = strstr(url, "/1:");
-
- if (!start)
- return NULL;
- start = start + 3;
- if ((end = strchr(start, '/')))
- {
- mir_free(tempname);
- tempname = mir_strndup(start, end - start);
- return tempname;
- }
- mir_free(tempname);
- tempname = mir_strdup(start);
-
- return tempname;
+ return ParseUrl(url, "/1:");
}
char *CSkypeProto::ChatUrlToName(const char *url)
{
- char *tempname = NULL;
- const char *start, *end;
- start = strstr(url, "/19:");
-
- if (!start)
- return NULL;
- start = start + 4;
- if ((end = strchr(start, '/')))
- {
- mir_free(tempname);
- tempname = mir_strndup(start, end - start);
- return tempname;
- }
- mir_free(tempname);
- tempname = mir_strdup(start);
-
- return tempname;
+ return ParseUrl(url, "/19:");
}
char *CSkypeProto::GetServerFromUrl(const char *url)
{
- char *tempname = NULL;
- const char *start, *end;
- start = strstr(url, "://");
-
- if (!start)
- return NULL;
- start = start + 3;
- if ((end = strchr(start, '/')))
- {
- mir_free(tempname);
- tempname = mir_strndup(start, end - start);
- return tempname;
- }
- mir_free(tempname);
- tempname = mir_strdup(start);
-
- return tempname;
+ return ParseUrl(url, "://");
}
\ No newline at end of file |