From 40c54c33ebecd9f1eb11b450201376c425f26a8b Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Thu, 29 May 2008 18:05:26 +0000 Subject: [PATCH] glib/gstdio.h Add g_utime(). No need to include in gstdio.h, 2008-05-29 Tor Lillqvist * glib/gstdio.h * glib/gstdio.c: Add g_utime(). No need to include in gstdio.h, just use a forward struct declaration. * glib/glib.symbols: Add it. svn path=/trunk/; revision=6960 --- ChangeLog | 8 ++++++++ glib/glib.symbols | 1 + glib/gstdio.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ glib/gstdio.h | 8 ++++++++ 4 files changed, 61 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9f6147ec8..f6c9cee60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-05-29 Tor Lillqvist + + * glib/gstdio.h + * glib/gstdio.c: Add g_utime(). No need to include + in gstdio.h, just use a forward struct declaration. + + * glib/glib.symbols: Add it. + 2008-05-29 Tor Lillqvist * glib/gnulib/printf-args.c (printf_fetchargs): wint_t is short on diff --git a/glib/glib.symbols b/glib/glib.symbols index 257da5c56..57596863f 100644 --- a/glib/glib.symbols +++ b/glib/glib.symbols @@ -1090,6 +1090,7 @@ g_access g_chdir g_unlink g_rmdir +g_utime #endif #endif diff --git a/glib/gstdio.c b/glib/gstdio.c index 4b7a61168..09167a7ee 100644 --- a/glib/gstdio.c +++ b/glib/gstdio.c @@ -38,6 +38,7 @@ #include #include #include +#include #endif #include "gstdio.h" @@ -725,5 +726,48 @@ g_freopen (const gchar *filename, #endif } +/** + * g_utime: + * @filename: a pathname in the GLib file name encoding (UTF-8 on Windows) + * @utb: a pointer to a struct utimbuf. + * + * A wrapper for the POSIX utime() function. The utime() function + * sets the access and modification timestamps of a file. + * + * See your C library manual for more details about how utime() works + * on your system. + * + * Returns: 0 if the operation was successful, -1 if an error + * occurred + * + * Since: 2.18 + */ +int +g_utime (const gchar *filename, + struct utimbuf *utb) +{ +#ifdef G_OS_WIN32 + 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 = _wutime (wfilename, (struct _utimbuf*) utb); + save_errno = errno; + + g_free (wfilename); + + errno = save_errno; + return retval; +#else + return utime (filename, utb); +#endif +} + #define __G_STDIO_C__ #include "galiasdef.c" diff --git a/glib/gstdio.h b/glib/gstdio.h index dd9e82ad1..f71a4e3cd 100644 --- a/glib/gstdio.h +++ b/glib/gstdio.h @@ -45,6 +45,7 @@ G_BEGIN_DECLS #define g_remove remove #define g_fopen fopen #define g_freopen freopen +#define g_utime utime int g_access (const gchar *filename, int mode); @@ -107,6 +108,13 @@ FILE *g_freopen (const gchar *filename, const gchar *mode, FILE *stream); +struct utimbuf; /* Don't need the real definition of struct utimbuf when just + * including this header. + */ + +int g_utime (const gchar *filename, + struct utimbuf *utb); + #endif /* G_OS_UNIX */ G_END_DECLS