diff options
Add tests on badwolf_ensure_uri_scheme
1 files changed, 39 insertions, 0 deletions
| -rw-r--r-- | uri.c | 39 |
@@ -0,0 +1,39 @@ +// BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser +// Copyright © 2019 Haelwenn (lanodan) Monnier <contact@hacktivis.me> +// SPDX-License-Identifier: BSD-3-Clause + +#include "uri.h" + +#include <glib/gprintf.h> /* g_fprintf() */ +#include <libsoup/soup.h> /* soup* */ +#include <unistd.h> /* access() */ + +const gchar * +badwolf_ensure_uri_scheme(const gchar *text, gboolean try_file) +{ + const gchar *fallback = "about:blank"; + SoupURI *uri; + + uri = soup_uri_new(text); + if(!uri) return fallback; + + //g_fprintf(stderr, "uri->scheme = %s, uri->path = %s\n", uri->scheme, uri->path); + + if(!uri->path) + { + soup_uri_free(uri); + return fallback; + } + + if(uri->scheme) + { + soup_uri_free(uri); + return text; + } + + soup_uri_free(uri); + + if(try_file && (access(text, R_OK) == 0)) return g_strdup_printf("file://%s", text); + + return g_strdup_printf("http://%s", text); +} |