gboolean gedit_utils_is_valid_uri (const gchar *uri) { const guchar *p; if (uri == NULL) return FALSE; if (!has_valid_scheme (uri)) return FALSE; /* We expect to have a fully valid set of characters */ for (p = (const guchar *)uri; *p; p++) { if (*p == '%') { ++p; if (!g_ascii_isxdigit (*p)) return FALSE; ++p; if (!g_ascii_isxdigit (*p)) return FALSE; } else { if (*p <= 32 || *p >= 128) return FALSE; } } return TRUE; }
gboolean gedit_utils_is_valid_location (GFile *location) { const guchar *p; gchar *uri; gboolean is_valid; if (location == NULL) return FALSE; uri = g_file_get_uri (location); if (!has_valid_scheme (uri)) { g_free (uri); return FALSE; } is_valid = TRUE; /* We expect to have a fully valid set of characters */ for (p = (const guchar *)uri; *p; p++) { if (*p == '%') { ++p; if (!g_ascii_isxdigit (*p)) { is_valid = FALSE; break; } ++p; if (!g_ascii_isxdigit (*p)) { is_valid = FALSE; break; } } else { if (*p <= 32 || *p >= 128) { is_valid = FALSE; break; } } } g_free (uri); return is_valid; }