char * url_from_user_input(const char *arg) { /* If it is already a URL, return the argument as is. */ if (has_scheme(arg) || !strcasecmp(arg, "about:blank")) return strdup(arg); Eina_Strbuf *buf = eina_strbuf_manage_new(eina_file_path_sanitize(arg)); /* Check if the path exists. */ if (ecore_file_exists(eina_strbuf_string_get(buf))) { /* File exists, convert local path to a URL. */ eina_strbuf_prepend(buf, "file://"); } else { /* The path does not exist, convert it to a URL by prepending http:// scheme: www.google.com -> http://www.google.com */ eina_strbuf_string_free(buf); eina_strbuf_append_printf(buf, "http://%s", arg); } char *url = eina_strbuf_string_steal(buf); eina_strbuf_free(buf); return url; }
EAPI Eina_Strbuf * eina_strbuf_substr_get(Eina_Strbuf *buf, size_t pos, size_t len) { char *str; if ((!buf) || ((pos + len) > buf->len)) return NULL; str = calloc(1, len + 1); strncpy(str,((char *)(buf->buf)) + pos, len); return eina_strbuf_manage_new(str); }