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 28G_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 50int g_access (const gchar *filename, 51 int mode); 52 53int g_chdir (const gchar *path); 54 55int g_unlink (const gchar *filename); 56 57int 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 71int g_access (const gchar *filename, 72 int mode); 73 74int g_chmod (const gchar *filename, 75 int mode); 76 77int g_open (const gchar *filename, 78 int flags, 79 int mode); 80 81int g_creat (const gchar *filename, 82 int mode); 83 84int g_rename (const gchar *oldfilename, 85 const gchar *newfilename); 86 87int g_mkdir (const gchar *filename, 88 int mode); 89 90int g_chdir (const gchar *path); 91 92int g_stat (const gchar *filename, 93 struct stat *buf); 94 95int g_lstat (const gchar *filename, 96 struct stat *buf); 97 98int g_unlink (const gchar *filename); 99 100int g_remove (const gchar *filename); 101 102int g_rmdir (const gchar *filename); 103 104FILE *g_fopen (const gchar *filename, 105 const gchar *mode); 106 107FILE *g_freopen (const gchar *filename, 108 const gchar *mode, 109 FILE *stream); 110 111struct utimbuf; /* Don't need the real definition of struct utimbuf when just 112 * including this header. 113 */ 114 115int g_utime (const gchar *filename, 116 struct utimbuf *utb); 117 118#endif /* G_OS_UNIX */ 119 120G_END_DECLS 121 122#endif /* __G_STDIO_H__ */ 123