X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-utils.c;h=8df81afb8ad49ae00cae307ebd3d3f3e141ac612;hp=8507fd5bf952acfaf027083d299ec0770bbd3694;hb=b3519aba2993cb110980a68ec408bc0dd7318269;hpb=8ad36d3e8950c17e87ec346f1afed9a2eb1a8c6e diff --git a/src/modest-utils.c b/src/modest-utils.c index 8507fd5..8df81af 100644 --- a/src/modest-utils.c +++ b/src/modest-utils.c @@ -107,14 +107,18 @@ gboolean 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; } @@ -130,13 +134,17 @@ modest_utils_create_temp_stream (const gchar *orig_name, const gchar *hash_base, /* 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; @@ -156,7 +164,6 @@ modest_utils_create_temp_stream (const gchar *orig_name, const gchar *hash_base, return NULL; } - tmp = g_uri_escape_string (orig_name, NULL, FALSE); filepath = g_build_filename (tmpdir, tmp, NULL); g_free (tmp);