summaryrefslogtreecommitdiff
path: root/src/vdr-plugin/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vdr-plugin/common.c')
-rw-r--r--src/vdr-plugin/common.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/vdr-plugin/common.c b/src/vdr-plugin/common.c
index 12a5204..5ad2747 100644
--- a/src/vdr-plugin/common.c
+++ b/src/vdr-plugin/common.c
@@ -39,6 +39,36 @@ char *extensionFromUrl(const char *url) {
return NULL;
}
+cString parseDomain(const char *url) {
+ const char *schemesep = strstr(url, "://");
+ if (!schemesep)
+ return "";
+
+ const char *domainstart = schemesep+3;
+ const char *domainend = strchr(domainstart, '/');
+
+ int len = domainend-domainstart;
+ char *domain = (char *)malloc((len+1)*sizeof(char));
+ strncpy(domain, domainstart, len);
+ domain[len] = '\0';
+
+ const char *user = strchr(domain, '@');
+ if (user) {
+ len -= user+1 - domain;
+ memmove(domain, user+1, len+1);
+ }
+
+ const char *port = strchr(domain, ':');
+ if (port) {
+ len = port - domain;
+ domain[len] = '\0';
+ }
+
+ strlower(domain);
+
+ return cString(domain, true);
+}
+
char *validateFileName(const char *filename) {
if (!filename)
return NULL;
@@ -203,3 +233,15 @@ cString shellEscape(const char *s) {
return cString(buffer, true);
}
+
+char *strlower(char *s) {
+ if (!s) return NULL;
+
+ char *p = s;
+ while (*p) {
+ *p = tolower(*p);
+ p++;
+ }
+
+ return s;
+}