1 /* gstdio.h - GFilename wrappers for C library functions 2 * 3 * Copyright 2004 Tor Lillqvist 4 * 5 * GLib is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU Lesser General Public License as 7 * published by the Free Software Foundation; either version 2 of the 8 * License, or (at your option) any later version. 9 * 10 * GLib is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with GLib; see the file COPYING.LIB. If not, 17 * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 * Boston, MA 02111-1307, USA. 19 */ 20 21 #ifndef __G_STDIO_H__ 22 #define __G_STDIO_H__ 23 24 #include <glib/gprintf.h> 25 26 #include <sys/stat.h> 27 28 G_BEGIN_DECLS 29 30 #if defined(G_OS_UNIX) && !defined(G_STDIO_NO_WRAP_ON_UNIX) 31 32 /* Just pass on to the system functions, so there's no potential for data 33 * format mismatches, especially with large file interfaces. 34 * A few functions can't be handled in this way, since they are not defined 35 * in a portable system header that we could include here. 36 */ 37 38 #define g_chmod chmod 39 #define g_open open 40 #define g_creat creat 41 #define g_rename rename 42 #define g_mkdir mkdir 43 #define g_stat stat 44 #define g_lstat lstat 45 #define g_remove remove 46 #define g_fopen fopen 47 #define g_freopen freopen 48 #define g_utime utime 49 50 int g_access (const gchar *filename, 51 int mode); 52 53 int g_chdir (const gchar *path); 54 55 int g_unlink (const gchar *filename); 56 57 int g_rmdir (const gchar *filename); 58 59 #else /* ! G_OS_UNIX */ 60 61 /* Wrappers for C library functions that take pathname arguments. On 62 * Unix, the pathname is a file name as it literally is in the file 63 * system. On well-maintained systems with consistent users who know 64 * what they are doing and no exchange of files with others this would 65 * be a well-defined encoding, preferrably UTF-8. On Windows, the 66 * pathname is always in UTF-8, even if that is not the on-disk 67 * encoding, and not the encoding accepted by the C library or Win32 68 * API. 69 */ 70 71 int g_access (const gchar *filename, 72 int mode); 73 74 int g_chmod (const gchar *filename, 75 int mode); 76 77 int g_open (const gchar *filename, 78 int flags, 79 int mode); 80 81 int g_creat (const gchar *filename, 82 int mode); 83 84 int g_rename (const gchar *oldfilename, 85 const gchar *newfilename); 86 87 int g_mkdir (const gchar *filename, 88 int mode); 89 90 int g_chdir (const gchar *path); 91 92 int g_stat (const gchar *filename, 93 struct stat *buf); 94 95 int g_lstat (const gchar *filename, 96 struct stat *buf); 97 98 int g_unlink (const gchar *filename); 99 100 int g_remove (const gchar *filename); 101 102 int g_rmdir (const gchar *filename); 103 104 FILE *g_fopen (const gchar *filename, 105 const gchar *mode); 106 107 FILE *g_freopen (const gchar *filename, 108 const gchar *mode, 109 FILE *stream); 110 111 struct utimbuf; /* Don't need the real definition of struct utimbuf when just 112 * including this header. 113 */ 114 115 int g_utime (const gchar *filename, 116 struct utimbuf *utb); 117 118 #endif /* G_OS_UNIX */ 119 120 G_END_DECLS 121 122 #endif /* __G_STDIO_H__ */ 123