mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-02 17:26:17 +01:00
Make g_file_test() behave on Windows more like as on POSIX
Patch from bug #572252.
This commit is contained in:
parent
22d026d344
commit
b64ee1f020
@ -204,19 +204,26 @@ g_file_test (const gchar *filename,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if (test & G_FILE_TEST_IS_REGULAR)
|
if (test & G_FILE_TEST_IS_REGULAR)
|
||||||
return (attributes & (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_DEVICE)) == 0;
|
{
|
||||||
|
if ((attributes & (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_DEVICE)) == 0)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (test & G_FILE_TEST_IS_DIR)
|
if (test & G_FILE_TEST_IS_DIR)
|
||||||
return (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
|
{
|
||||||
|
if ((attributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (test & G_FILE_TEST_IS_EXECUTABLE)
|
/* "while" so that we can exit this "loop" with a simple "break" */
|
||||||
|
while (test & G_FILE_TEST_IS_EXECUTABLE)
|
||||||
{
|
{
|
||||||
const gchar *lastdot = strrchr (filename, '.');
|
const gchar *lastdot = strrchr (filename, '.');
|
||||||
const gchar *pathext = NULL, *p;
|
const gchar *pathext = NULL, *p;
|
||||||
int extlen;
|
int extlen;
|
||||||
|
|
||||||
if (lastdot == NULL)
|
if (lastdot == NULL)
|
||||||
return FALSE;
|
break;
|
||||||
|
|
||||||
if (_stricmp (lastdot, ".exe") == 0 ||
|
if (_stricmp (lastdot, ".exe") == 0 ||
|
||||||
_stricmp (lastdot, ".cmd") == 0 ||
|
_stricmp (lastdot, ".cmd") == 0 ||
|
||||||
@ -228,7 +235,7 @@ g_file_test (const gchar *filename,
|
|||||||
|
|
||||||
pathext = g_getenv ("PATHEXT");
|
pathext = g_getenv ("PATHEXT");
|
||||||
if (pathext == NULL)
|
if (pathext == NULL)
|
||||||
return FALSE;
|
break;
|
||||||
|
|
||||||
pathext = g_utf8_casefold (pathext, -1);
|
pathext = g_utf8_casefold (pathext, -1);
|
||||||
|
|
||||||
@ -256,7 +263,7 @@ g_file_test (const gchar *filename,
|
|||||||
|
|
||||||
g_free ((gchar *) pathext);
|
g_free ((gchar *) pathext);
|
||||||
g_free ((gchar *) lastdot);
|
g_free ((gchar *) lastdot);
|
||||||
return FALSE;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
Loading…
Reference in New Issue
Block a user