mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-26 22:16:16 +01:00
glocalfile: fix error code when opening a directory on win32
g_file_read() was returning G_IO_ERROR_IS_DIRECTORY when you tried to open a directory on unix, but G_IO_ERROR_PERMISSION_DENIED on win32. Fix that, and add a test to tests/file.c Pointed out on IRC by Paweł Forysiuk. https://bugzilla.gnome.org/show_bug.cgi?id=669330
This commit is contained in:
parent
a067df5d72
commit
ca5ed93fde
@ -1314,6 +1314,20 @@ g_local_file_read (GFile *file,
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (errsv == EACCES)
|
||||
{
|
||||
ret = _stati64 (local->filename, &buf);
|
||||
if (ret == 0 && S_ISDIR (buf.st_mode))
|
||||
{
|
||||
g_set_error_literal (error, G_IO_ERROR,
|
||||
G_IO_ERROR_IS_DIRECTORY,
|
||||
_("Can't open directory"));
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error opening file: %s"),
|
||||
|
@ -78,6 +78,7 @@ test_type (void)
|
||||
{
|
||||
GFile *file;
|
||||
GFileType type;
|
||||
GError *error = NULL;
|
||||
|
||||
file = g_file_new_for_path (SRCDIR "/file.c");
|
||||
type = g_file_query_file_type (file, 0, NULL);
|
||||
@ -87,6 +88,10 @@ test_type (void)
|
||||
file = g_file_new_for_path (SRCDIR "/schema-tests");
|
||||
type = g_file_query_file_type (file, 0, NULL);
|
||||
g_assert_cmpint (type, ==, G_FILE_TYPE_DIRECTORY);
|
||||
|
||||
g_file_read (file, NULL, &error);
|
||||
g_assert_error (error, G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY);
|
||||
g_error_free (error);
|
||||
g_object_unref (file);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user