modest_utils_file_exists (const gchar *filename)
{
gboolean result = FALSE;
- gchar *escaped;
+ gchar *path;
g_return_val_if_fail (filename, FALSE);
- escaped = g_uri_escape_string (filename, NULL, FALSE);
- if (g_access (escaped, F_OK) == 0)
+ path = strstr (filename, "file://");
+ if (!path)
+ path = (gchar *) filename;
+ else
+ path = (gchar *) filename + strlen ("file://");
+
+ if (g_access (path, F_OK) == 0)
result = TRUE;
- g_free (escaped);
return result;
}
/* hmmm... maybe we need a modest_text_utils_validate_file_name? */
g_return_val_if_fail (orig_name && strlen(orig_name) != 0, NULL);
- if (strlen(orig_name) > 200) {
+ tmp = g_uri_escape_string (orig_name, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT, FALSE);
+
+ if (strlen(tmp) > 200) {
+ g_free (tmp);
g_warning ("%s: filename too long ('%s')",
__FUNCTION__, orig_name);
return NULL;
}
- if (g_strstr_len (orig_name, strlen(orig_name), "/") != NULL) {
+ if (g_strstr_len (tmp, strlen (tmp), "/") != NULL) {
+ g_free (tmp);
g_warning ("%s: filename contains '/' character(s) (%s)",
__FUNCTION__, orig_name);
return NULL;
return NULL;
}
- tmp = g_uri_escape_string (orig_name, NULL, FALSE);
filepath = g_build_filename (tmpdir, tmp, NULL);
g_free (tmp);