replace *a lot* of file related calls by their GLib counterparts. This is necessary...
[obnox/wireshark/wip.git] / wiretap / file_util.h
1 /* file_util.h\r
2  * File utility definitions\r
3  *\r
4  * $Id: file_util.h 15244 2005-08-06 14:03:14Z jmayer $\r
5  *\r
6  * Ethereal - Network traffic analyzer\r
7  * By Gerald Combs <gerald@ethereal.com>\r
8  * Copyright 1998 Gerald Combs\r
9  *\r
10  * This program is free software; you can redistribute it and/or\r
11  * modify it under the terms of the GNU General Public License\r
12  * as published by the Free Software Foundation; either version 2\r
13  * of the License, or (at your option) any later version.\r
14  *\r
15  * This program is distributed in the hope that it will be useful,\r
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
18  * GNU General Public License for more details.\r
19  *\r
20  * You should have received a copy of the GNU General Public License\r
21  * along with this program; if not, write to the Free Software\r
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
23  */\r
24 \r
25 #ifndef __FILE_UTIL_H__\r
26 #define __FILE_UTIL_H__\r
27 \r
28 #ifdef __cplusplus\r
29 extern "C" {\r
30 #endif /* __cplusplus */\r
31 \r
32 #include <glib.h>\r
33 #include <glib/gstdio.h>        /* XXX - is this file GLib 2.6 only? */\r
34 \r
35 #ifdef _WIN32\r
36 #include <io.h>\r
37 #endif\r
38 \r
39 #ifdef HAVE_SYS_STAT_H\r
40 #include <sys/stat.h>\r
41 #endif\r
42 \r
43 \r
44 /* Since GLib2.6, wrappers were added around functions which provides filenames to library functions, \r
45         like open() does. */\r
46 #if GLIB_MAJOR_VERSION > 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 6)\r
47 \r
48 /* GLib2.6 or above, using new wrapper functions */\r
49 #define eth_mkstemp g_mkstemp\r
50 #define eth_open        g_open\r
51 #define eth_rename      g_rename\r
52 #define eth_mkdir       g_mkdir\r
53 #define eth_stat        g_stat\r
54 #define eth_unlink      g_unlink\r
55 #define eth_remove      g_remove\r
56 #define eth_fopen       g_fopen\r
57 #define eth_freopen     g_freopen\r
58 \r
59 #else   /* GLIB_MAJOR_VERSION */\r
60 \r
61 /* GLib 2.4 or below, using "old school" functions */\r
62 #ifdef _WIN32\r
63 #define eth_open        _open\r
64 #define eth_stat        _stat\r
65 #define eth_unlink      _unlink\r
66 #else\r
67 #define eth_open        open\r
68 #define eth_stat        stat\r
69 #define eth_unlink      unlink\r
70 #endif\r
71 \r
72 #include "mkstemp.h"\r
73 #define eth_mkstemp mkstemp\r
74 #define eth_rename      rename\r
75 #define eth_mkdir       mkdir\r
76 #define eth_remove      remove\r
77 #define eth_fopen       fopen\r
78 #define eth_freopen     freopen\r
79 \r
80 #endif  /* GLIB_MAJOR_VERSION */\r
81 \r
82 \r
83 /* some common differences between UNIX and WIN32 */\r
84 #ifdef _WIN32\r
85 /* the Win32 API prepends underscores for whatever reasons */\r
86 #define eth_read  _read\r
87 #define eth_write _write\r
88 #define eth_close _close\r
89 #define eth_dup   _dup\r
90 #define eth_lseek _lseek\r
91 #else\r
92 #define eth_read  read\r
93 #define eth_write write\r
94 #define eth_close close\r
95 #define eth_dup   dup\r
96 #define eth_lseek lseek\r
97 #define O_BINARY        0               /* Win32 needs the O_BINARY flag for open() */\r
98 #endif\r
99 \r
100 #if GLIB_MAJOR_VERSION >= 2\r
101 #define ETH_DIR                                                 GDir\r
102 #define ETH_DIRENT                                              const char\r
103 #define eth_dir_open                                    g_dir_open\r
104 #define eth_dir_read_name                               g_dir_read_name\r
105 #define eth_dir_get_name(dirent)                dirent\r
106 #define eth_dir_rewind                                  g_dir_rewind\r
107 #define eth_dir_close                                   g_dir_close\r
108 #else\r
109 #define ETH_DIR                                                 DIR\r
110 #define ETH_DIRENT                                              struct dirent\r
111 #define eth_dir_open(name,flags,error)  opendir(name)\r
112 #define eth_dir_read_name                               readdir\r
113 #define eth_dir_get_name(dirent)                (gchar *)file->d_name\r
114 #define eth_dir_rewind                                  g_dir_rewind\r
115 #define eth_dir_close                                   close_dir\r
116 #endif\r
117 \r
118 /* XXX - remove include "dirent.h" */\r
119 /* XXX - remove include "direct.h" */\r
120 /* XXX - remove include "sys/stat.h" */\r
121 /* XXX - remove O_BINARY */\r
122 \r
123 #ifdef __cplusplus\r
124 }\r
125 #endif /* __cplusplus */\r
126 \r
127 #endif /* __FILE_UTIL_H__ */\r