mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-06-03 11:20:07 +02:00
glib/gstdio.h glib/gstdio.c Wrap also access() and chmod(). (#169623)
2005-04-08 Tor Lillqvist <tml@novell.com> * glib/gstdio.h * glib/gstdio.c * glib/glib.symbols (g_access, g_chmod): Wrap also access() and chmod(). (#169623)
This commit is contained in:
parent
5a88294fc3
commit
9099d64b3a
@ -1,3 +1,10 @@
|
|||||||
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
* glib/gstdio.h
|
||||||
|
* glib/gstdio.c
|
||||||
|
* glib/glib.symbols (g_access, g_chmod): Wrap also access() and
|
||||||
|
chmod(). (#169623)
|
||||||
|
|
||||||
2005-04-08 Tor Lillqvist <tml@novell.com>
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
Improve g_get_system_data_dirs() on Windows. A library that calls
|
Improve g_get_system_data_dirs() on Windows. A library that calls
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
* glib/gstdio.h
|
||||||
|
* glib/gstdio.c
|
||||||
|
* glib/glib.symbols (g_access, g_chmod): Wrap also access() and
|
||||||
|
chmod(). (#169623)
|
||||||
|
|
||||||
2005-04-08 Tor Lillqvist <tml@novell.com>
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
Improve g_get_system_data_dirs() on Windows. A library that calls
|
Improve g_get_system_data_dirs() on Windows. A library that calls
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
* glib/gstdio.h
|
||||||
|
* glib/gstdio.c
|
||||||
|
* glib/glib.symbols (g_access, g_chmod): Wrap also access() and
|
||||||
|
chmod(). (#169623)
|
||||||
|
|
||||||
2005-04-08 Tor Lillqvist <tml@novell.com>
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
Improve g_get_system_data_dirs() on Windows. A library that calls
|
Improve g_get_system_data_dirs() on Windows. A library that calls
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
* glib/gstdio.h
|
||||||
|
* glib/gstdio.c
|
||||||
|
* glib/glib.symbols (g_access, g_chmod): Wrap also access() and
|
||||||
|
chmod(). (#169623)
|
||||||
|
|
||||||
2005-04-08 Tor Lillqvist <tml@novell.com>
|
2005-04-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
Improve g_get_system_data_dirs() on Windows. A library that calls
|
Improve g_get_system_data_dirs() on Windows. A library that calls
|
||||||
|
@ -849,6 +849,8 @@ g_spawn_sync
|
|||||||
#if IN_FILE(__G_STDIO_C__)
|
#if IN_FILE(__G_STDIO_C__)
|
||||||
#if !defined(G_OS_UNIX) || defined(G_STDIO_NO_WRAP_ON_UNIX)
|
#if !defined(G_OS_UNIX) || defined(G_STDIO_NO_WRAP_ON_UNIX)
|
||||||
/* gstdio wrappers */
|
/* gstdio wrappers */
|
||||||
|
g_access
|
||||||
|
g_chmod
|
||||||
g_open
|
g_open
|
||||||
g_rename
|
g_rename
|
||||||
g_mkdir
|
g_mkdir
|
||||||
|
139
glib/gstdio.c
139
glib/gstdio.c
@ -48,6 +48,145 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_access:
|
||||||
|
* @filename: a pathname in the GLib file name encoding
|
||||||
|
* @mode: as in access()
|
||||||
|
*
|
||||||
|
* A wrapper for the POSIX access() function. This function is used to
|
||||||
|
* test a pathname for one or several of read, write or execute
|
||||||
|
* permissions, or just existence. On Windows, the underlying access()
|
||||||
|
* function in the C library only checks the READONLY attribute, and
|
||||||
|
* does not look at the ACL at all. Software that needs to handle file
|
||||||
|
* permisssions on Windows more exactly should use the Win32 API.
|
||||||
|
*
|
||||||
|
* See the C library manual for more details about access().
|
||||||
|
*
|
||||||
|
* Returns: zero if the pathname refers to an existing file system
|
||||||
|
* object that has all the tested permissions, or -1 otherwise or on
|
||||||
|
* error.
|
||||||
|
*
|
||||||
|
* Since: 2.7
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
g_access (const gchar *filename,
|
||||||
|
int mode)
|
||||||
|
{
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
if (G_WIN32_HAVE_WIDECHAR_API ())
|
||||||
|
{
|
||||||
|
wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
|
||||||
|
int retval;
|
||||||
|
int save_errno;
|
||||||
|
|
||||||
|
if (wfilename == NULL)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = _waccess (wfilename, mode);
|
||||||
|
save_errno = errno;
|
||||||
|
|
||||||
|
g_free (wfilename);
|
||||||
|
|
||||||
|
errno = save_errno;
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
|
||||||
|
int retval;
|
||||||
|
int save_errno;
|
||||||
|
|
||||||
|
if (cp_filename == NULL)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = access (cp_filename, mode);
|
||||||
|
save_errno = errno;
|
||||||
|
|
||||||
|
g_free (cp_filename);
|
||||||
|
|
||||||
|
errno = save_errno;
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return access (filename, mode);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_chmod:
|
||||||
|
* @filename: a pathname in the GLib file name encoding
|
||||||
|
* @mode: as in chmod()
|
||||||
|
*
|
||||||
|
* A wrapper for the POSIX chmod() function. The chmod() function is
|
||||||
|
* used to set the permissions of a file system object. Note that on
|
||||||
|
* Windows the file protection mechanism is not at all POSIX-like, and
|
||||||
|
* the underlying chmod() function in the C library just sets or
|
||||||
|
* clears the READONLY attribute. It does not touch any ACL. Software
|
||||||
|
* that needs to manage file permisssions on Windows exactly should
|
||||||
|
* use the Win32 API.
|
||||||
|
*
|
||||||
|
* See the C library manual for more details about chmod().
|
||||||
|
*
|
||||||
|
* Returns: zero if the operation succeedd, -1 on error.
|
||||||
|
*
|
||||||
|
* Since: 2.7
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
g_chmod (const gchar *filename,
|
||||||
|
int mode)
|
||||||
|
{
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
if (G_WIN32_HAVE_WIDECHAR_API ())
|
||||||
|
{
|
||||||
|
wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
|
||||||
|
int retval;
|
||||||
|
int save_errno;
|
||||||
|
|
||||||
|
if (wfilename == NULL)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = _wchmod (wfilename, mode);
|
||||||
|
save_errno = errno;
|
||||||
|
|
||||||
|
g_free (wfilename);
|
||||||
|
|
||||||
|
errno = save_errno;
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
|
||||||
|
int retval;
|
||||||
|
int save_errno;
|
||||||
|
|
||||||
|
if (cp_filename == NULL)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = chmod (cp_filename, mode);
|
||||||
|
save_errno = errno;
|
||||||
|
|
||||||
|
g_free (cp_filename);
|
||||||
|
|
||||||
|
errno = save_errno;
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return chmod (filename, mode);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* g_open:
|
* g_open:
|
||||||
* @filename: a pathname in the GLib file name encoding
|
* @filename: a pathname in the GLib file name encoding
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
* format mismatches, especially with large file interfaces.
|
* format mismatches, especially with large file interfaces.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define g_access access
|
||||||
|
#define g_chmod chmod
|
||||||
#define g_open open
|
#define g_open open
|
||||||
#define g_rename rename
|
#define g_rename rename
|
||||||
#define g_mkdir mkdir
|
#define g_mkdir mkdir
|
||||||
@ -54,6 +56,12 @@
|
|||||||
* API.
|
* API.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int g_access (const gchar *filename,
|
||||||
|
int mode);
|
||||||
|
|
||||||
|
int g_chmod (const gchar *filename,
|
||||||
|
int mode);
|
||||||
|
|
||||||
int g_open (const gchar *filename,
|
int g_open (const gchar *filename,
|
||||||
int flags,
|
int flags,
|
||||||
int mode);
|
int mode);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user