Coverage Report

Created: 2025-07-18 06:08

/src/tinysparql/subprojects/glib-2.80.3/glib/gstdio.h
Line
Count
Source (jump to first uncovered line)
1
/* gstdio.h - GFilename wrappers for C library functions
2
 *
3
 * Copyright 2004 Tor Lillqvist
4
 *
5
 * SPDX-License-Identifier: LGPL-2.1-or-later
6
 *
7
 * This library is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * This library is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public License
18
 * along with this library; if not, see <http://www.gnu.org/licenses/>.
19
 */
20
21
#ifndef __G_STDIO_H__
22
#define __G_STDIO_H__
23
24
#include <glib/gprintf.h>
25
26
#include <errno.h>
27
#include <sys/stat.h>
28
29
G_BEGIN_DECLS
30
31
#if (defined (__MINGW64_VERSION_MAJOR) || defined (_MSC_VER)) && !defined(_WIN64)
32
33
/* Make it clear that we mean the struct with 32-bit st_size and
34
 * 32-bit st_*time fields as that is how the 32-bit GLib DLL normally
35
 * has been compiled. If you get a compiler warning when calling
36
 * g_stat(), do take it seriously and make sure that the type of
37
 * struct stat the code in GLib fills in matches the struct the type
38
 * of struct stat you pass to g_stat(). To avoid hassle, to get file
39
 * attributes just use the GIO API instead which doesn't use struct
40
 * stat.
41
 *
42
 * Sure, it would be nicer to use a struct with 64-bit st_size and
43
 * 64-bit st_*time fields, but changing that now would break ABI. And
44
 * in MinGW, a plain "struct stat" is the one with 32-bit st_size and
45
 * st_*time fields.
46
 */
47
48
typedef struct _stat32 GStatBuf;
49
50
#elif defined(__MINGW64_VERSION_MAJOR) && defined(_WIN64)
51
52
typedef struct _stat64 GStatBuf;
53
54
#else
55
56
typedef struct stat GStatBuf;
57
58
#endif
59
60
#if defined(G_OS_UNIX) && !defined(G_STDIO_WRAP_ON_UNIX) && !defined(__GI_SCANNER__)
61
62
/* Just pass on to the system functions, so there's no potential for data
63
 * format mismatches, especially with large file interfaces. 
64
 * A few functions can't be handled in this way, since they are not defined
65
 * in a portable system header that we could include here.
66
 *
67
 * G_STDIO_WRAP_ON_UNIX is not public API and its behaviour is not guaranteed
68
 * in future.
69
 */
70
71
#ifndef __GTK_DOC_IGNORE__
72
0
#define g_chmod   chmod
73
1
#define g_open    open
74
#define g_creat   creat
75
0
#define g_rename  rename
76
0
#define g_mkdir   mkdir
77
0
#define g_stat    stat
78
1
#define g_lstat   lstat
79
0
#define g_remove  remove
80
#define g_fopen   fopen
81
#define g_freopen freopen
82
0
#define g_fsync   fsync
83
#define g_utime   utime
84
#endif
85
86
GLIB_AVAILABLE_IN_ALL
87
int g_access (const gchar *filename,
88
        int          mode);
89
90
GLIB_AVAILABLE_IN_ALL
91
int g_chdir  (const gchar *path);
92
93
GLIB_AVAILABLE_IN_ALL
94
int g_unlink (const gchar *filename);
95
96
GLIB_AVAILABLE_IN_ALL
97
int g_rmdir  (const gchar *filename);
98
99
#else /* ! G_OS_UNIX */
100
101
/* Wrappers for C library functions that take pathname arguments. On
102
 * Unix, the pathname is a file name as it literally is in the file
103
 * system. On well-maintained systems with consistent users who know
104
 * what they are doing and no exchange of files with others this would
105
 * be a well-defined encoding, preferably UTF-8. On Windows, the
106
 * pathname is always in UTF-8, even if that is not the on-disk
107
 * encoding, and not the encoding accepted by the C library or Win32
108
 * API.
109
 */
110
111
GLIB_AVAILABLE_IN_ALL
112
int g_access    (const gchar *filename,
113
     int          mode);
114
115
GLIB_AVAILABLE_IN_ALL
116
int g_chmod     (const gchar *filename,
117
     int          mode);
118
119
GLIB_AVAILABLE_IN_ALL
120
int g_open      (const gchar *filename,
121
                 int          flags,
122
                 int          mode);
123
124
GLIB_AVAILABLE_IN_ALL
125
int g_creat     (const gchar *filename,
126
                 int          mode);
127
128
GLIB_AVAILABLE_IN_ALL
129
int g_rename    (const gchar *oldfilename,
130
                 const gchar *newfilename);
131
132
GLIB_AVAILABLE_IN_ALL
133
int g_mkdir     (const gchar *filename,
134
                 int          mode);
135
136
GLIB_AVAILABLE_IN_ALL
137
int g_chdir     (const gchar *path);
138
139
GLIB_AVAILABLE_IN_ALL
140
int g_stat      (const gchar *filename,
141
                 GStatBuf    *buf);
142
143
GLIB_AVAILABLE_IN_ALL
144
int g_lstat     (const gchar *filename,
145
                 GStatBuf    *buf);
146
147
GLIB_AVAILABLE_IN_ALL
148
int g_unlink    (const gchar *filename);
149
150
GLIB_AVAILABLE_IN_ALL
151
int g_remove    (const gchar *filename);
152
153
GLIB_AVAILABLE_IN_ALL
154
int g_rmdir     (const gchar *filename);
155
156
GLIB_AVAILABLE_IN_ALL
157
FILE *g_fopen   (const gchar *filename,
158
                 const gchar *mode);
159
160
GLIB_AVAILABLE_IN_ALL
161
FILE *g_freopen (const gchar *filename,
162
                 const gchar *mode,
163
                 FILE        *stream);
164
165
GLIB_AVAILABLE_IN_2_64
166
gint g_fsync    (gint fd);
167
168
struct utimbuf;     /* Don't need the real definition of struct utimbuf when just
169
         * including this header.
170
         */
171
172
GLIB_AVAILABLE_IN_ALL
173
int g_utime     (const gchar    *filename,
174
     struct utimbuf *utb);
175
176
#endif /* G_OS_UNIX */
177
178
GLIB_AVAILABLE_IN_2_36
179
gboolean g_close (gint       fd,
180
                  GError   **error);
181
182
GLIB_AVAILABLE_STATIC_INLINE_IN_2_76
183
static inline gboolean
184
g_clear_fd (int     *fd_ptr,
185
            GError **error)
186
0
{
187
0
  int fd = *fd_ptr;
188
189
0
  *fd_ptr = -1;
190
191
0
  if (fd < 0)
192
0
    return TRUE;
193
194
  /* Suppress "Not available before" warning */
195
0
  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
196
0
  return g_close (fd, error);
197
0
  G_GNUC_END_IGNORE_DEPRECATIONS
198
0
}
Unexecuted instantiation: gfile.c:g_clear_fd
Unexecuted instantiation: gresource.c:g_clear_fd
Unexecuted instantiation: gdesktopappinfo.c:g_clear_fd
Unexecuted instantiation: gdbusprivate.c:g_clear_fd
Unexecuted instantiation: gdocumentportal.c:g_clear_fd
Unexecuted instantiation: glocalfile.c:g_clear_fd
Unexecuted instantiation: glocalfileenumerator.c:g_clear_fd
Unexecuted instantiation: glocalfileinfo.c:g_clear_fd
Unexecuted instantiation: glocalfileinputstream.c:g_clear_fd
Unexecuted instantiation: glocalfileoutputstream.c:g_clear_fd
Unexecuted instantiation: glocalfileiostream.c:g_clear_fd
Unexecuted instantiation: glocalvfs.c:g_clear_fd
Unexecuted instantiation: thumbnail-verify.c:g_clear_fd
Unexecuted instantiation: giomodule.c:g_clear_fd
Unexecuted instantiation: gmemorymonitordbus.c:g_clear_fd
Unexecuted instantiation: gpowerprofilemonitordbus.c:g_clear_fd
Unexecuted instantiation: gresourcefile.c:g_clear_fd
Unexecuted instantiation: gsocket.c:g_clear_fd
Unexecuted instantiation: gunixfdlist.c:g_clear_fd
Unexecuted instantiation: gunixmounts.c:g_clear_fd
Unexecuted instantiation: gnetworkmonitornetlink.c:g_clear_fd
Unexecuted instantiation: gnetworkmonitornm.c:g_clear_fd
Unexecuted instantiation: gapplicationimpl-dbus.c:g_clear_fd
Unexecuted instantiation: gdbusaddress.c:g_clear_fd
Unexecuted instantiation: gdbusauthmechanismsha1.c:g_clear_fd
Unexecuted instantiation: gopenuriportal.c:g_clear_fd
Unexecuted instantiation: gtrashportal.c:g_clear_fd
Unexecuted instantiation: gunixinputstream.c:g_clear_fd
Unexecuted instantiation: gsubprocess.c:g_clear_fd
Unexecuted instantiation: gunixoutputstream.c:g_clear_fd
Unexecuted instantiation: inotify-kernel.c:g_clear_fd
Unexecuted instantiation: gfileutils.c:g_clear_fd
Unexecuted instantiation: gkeyfile.c:g_clear_fd
Unexecuted instantiation: gmain.c:g_clear_fd
Unexecuted instantiation: gmappedfile.c:g_clear_fd
Unexecuted instantiation: gstdio.c:g_clear_fd
Unexecuted instantiation: gtestutils.c:g_clear_fd
Unexecuted instantiation: gtimezone.c:g_clear_fd
Unexecuted instantiation: gutils.c:g_clear_fd
Unexecuted instantiation: gwakeup.c:g_clear_fd
Unexecuted instantiation: glib-unix.c:g_clear_fd
Unexecuted instantiation: gspawn.c:g_clear_fd
Unexecuted instantiation: giounix.c:g_clear_fd
Unexecuted instantiation: gsourceclosure.c:g_clear_fd
Unexecuted instantiation: gmodule.c:g_clear_fd
Unexecuted instantiation: tracker-data-manager.c:g_clear_fd
Unexecuted instantiation: tracker-db-interface-sqlite.c:g_clear_fd
Unexecuted instantiation: tracker-db-manager.c:g_clear_fd
Unexecuted instantiation: tracker-file-utils.c:g_clear_fd
Unexecuted instantiation: gbookmarkfile.c:g_clear_fd
199
200
/* g_autofd should be defined on the same compilers where g_autofree is
201
 * This avoids duplicating the feature-detection here. */
202
#ifdef g_autofree
203
#ifndef __GTK_DOC_IGNORE__
204
/* Not public API */
205
static inline void
206
_g_clear_fd_ignore_error (int *fd_ptr)
207
0
{
208
0
  /* Don't overwrite thread-local errno if closing the fd fails */
209
0
  int errsv = errno;
210
0
211
0
  /* Suppress "Not available before" warning */
212
0
  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
213
0
214
0
  if (!g_clear_fd (fd_ptr, NULL))
215
0
    {
216
0
      /* Do nothing: we ignore all errors, except for EBADF which
217
0
       * is a programming error, checked for by g_close(). */
218
0
    }
219
0
220
0
  G_GNUC_END_IGNORE_DEPRECATIONS
221
0
222
0
  errno = errsv;
223
0
}
Unexecuted instantiation: gfile.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gresource.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gdesktopappinfo.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gdbusprivate.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gdocumentportal.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glocalfile.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glocalfileenumerator.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glocalfileinfo.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glocalfileinputstream.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glocalfileoutputstream.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glocalfileiostream.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glocalvfs.c:_g_clear_fd_ignore_error
Unexecuted instantiation: thumbnail-verify.c:_g_clear_fd_ignore_error
Unexecuted instantiation: giomodule.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gmemorymonitordbus.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gpowerprofilemonitordbus.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gresourcefile.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gsocket.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gunixfdlist.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gunixmounts.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gnetworkmonitornetlink.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gnetworkmonitornm.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gapplicationimpl-dbus.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gdbusaddress.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gdbusauthmechanismsha1.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gopenuriportal.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gtrashportal.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gunixinputstream.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gsubprocess.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gunixoutputstream.c:_g_clear_fd_ignore_error
Unexecuted instantiation: inotify-kernel.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gfileutils.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gkeyfile.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gmain.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gmappedfile.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gstdio.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gtestutils.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gtimezone.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gutils.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gwakeup.c:_g_clear_fd_ignore_error
Unexecuted instantiation: glib-unix.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gspawn.c:_g_clear_fd_ignore_error
Unexecuted instantiation: giounix.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gsourceclosure.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gmodule.c:_g_clear_fd_ignore_error
Unexecuted instantiation: tracker-data-manager.c:_g_clear_fd_ignore_error
Unexecuted instantiation: tracker-db-interface-sqlite.c:_g_clear_fd_ignore_error
Unexecuted instantiation: tracker-db-manager.c:_g_clear_fd_ignore_error
Unexecuted instantiation: tracker-file-utils.c:_g_clear_fd_ignore_error
Unexecuted instantiation: gbookmarkfile.c:_g_clear_fd_ignore_error
224
#endif
225
226
#define g_autofd _GLIB_CLEANUP(_g_clear_fd_ignore_error) GLIB_AVAILABLE_MACRO_IN_2_76
227
#endif
228
229
G_END_DECLS
230
231
#endif /* __G_STDIO_H__ */