void compress(char *src, char *dst, bool rev) { if (rev) strextr(src, dst); else strcompr(src, dst); }
//prefixes uri with http:// if it's misssing //resulting text should be freed when no longer needed gchar * sanitize_url(gchar *text) { gchar *out; gchar *scheme; gchar *tmptext = g_strdup(text); gchar *tmp = NULL; if (strcasestr(text, "file://")) return tmptext; /* extract feed component (usually first) */ if (strcasestr(text, "feed://")) tmptext = strextr(text, "feed://"); else if (strcasestr(text, "feed//")) tmptext = strextr(text, "feed//"); else if (strcasestr(text, "feed:")) tmptext = strextr(text, "feed:"); if (strcasestr(text, "http//")) { tmp = tmptext; tmptext = strextr(tmp, "http//"); } if (!strcasestr(tmptext, "http://") && !strcasestr(tmptext, "https://")) { gchar *safetext = g_strconcat("http://", tmptext, NULL); g_free(tmptext); tmptext=safetext; } scheme = g_uri_parse_scheme(tmptext); d("parsed scheme:%s\n", scheme); if (!scheme && !strstr (tmptext, "http://") && !strstr (tmptext, "https://")) { out = g_filename_to_uri(tmptext, NULL, NULL); } else out = g_strdup(tmptext); g_free(tmptext); g_free(scheme); if (tmp) g_free(tmp); return out; }