[EFL] Add Web Inspector to EWebLauncher
[WebKit-https.git] / Tools / EWebLauncher / url_utils.c
1 /*
2  * Copyright (C) 2012 Intel Corporation. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "url_utils.h"
27
28 #include <Ecore_File.h>
29 #include <string.h>
30 #include <sys/statvfs.h>
31
32 Eina_Bool
33 has_scheme(const char *url)
34 {
35     return !!strstr(url, "://");
36 }
37
38 char *
39 url_from_user_input(const char *arg)
40 {
41     /* If it is already a URL, return the argument as is. */
42     if (has_scheme(arg))
43         return strdup(arg);
44
45     Eina_Strbuf *buf = eina_strbuf_manage_new(eina_file_path_sanitize(arg));
46
47     /* Check if the path exists. */
48     if (ecore_file_exists(eina_strbuf_string_get(buf))) {
49         /* File exists, convert local path to a URL. */
50         eina_strbuf_prepend(buf, "file://");
51     } else {
52         /* The path does not exist, convert it to a URL by
53            prepending http:// scheme:
54            www.google.com -> http://www.google.com */
55          eina_strbuf_string_free(buf);
56          eina_strbuf_append_printf(buf, "http://%s", arg);
57     }
58     char *url = eina_strbuf_string_steal(buf);
59     eina_strbuf_free(buf);
60
61     return url;
62 }