Document of c-modernization-kit (util) 1.0.0

Loading...
Searching...
No Matches
fmtio-util.h
Go to the documentation of this file.
1#ifndef FMTIO_UTIL_H
2#define FMTIO_UTIL_H
3
4#include <stdarg.h>
5#include <stdint.h>
6#include <stdio.h>
7#include <sys/stat.h>
8#include <time.h>
9
10/* プラットフォーム固有の stat 構造体の typedef */
11#ifndef _WIN32
12 typedef struct stat file_stat_t;
13#else /* _WIN32 */
14 typedef struct _stat64 file_stat_t;
15#endif /* _WIN32 */
16
17/* OS 固有のパス最大長を定義 */
18
19#ifdef DOXYGEN
25#else /* !DOXYGEN */
26 #ifndef _WIN32
27 #include <limits.h>
28 #include <sys/stat.h>
29 #include <fcntl.h>
30 #include <unistd.h>
31 #define FILE_PATH_MAX PATH_MAX
32 #else /* _WIN32 */
33 #include <sys/stat.h>
34 #include <fcntl.h>
35 #include <io.h>
36 #include <direct.h>
37 /* MAX_PATH (= 260) 相当。<windows.h> は C++17 の std::byte と
38 Windows SDK の byte typedef が衝突するためインクルードしない。 */
39 #define FILE_PATH_MAX 260
40 #endif /* _WIN32 */
41#endif /* DOXYGEN */
42
43/* accessf 用のモード定数 */
44
45#ifdef DOXYGEN
51 #define FMTIO_F_OK 0
52
58 #define FMTIO_R_OK 4
59
65 #define FMTIO_W_OK 2
66#else /* !DOXYGEN */
67 #ifndef _WIN32
68 #define FMTIO_F_OK F_OK
69 #define FMTIO_R_OK R_OK
70 #define FMTIO_W_OK W_OK
71 #else /* _WIN32 */
72 #define FMTIO_F_OK 0
73 #define FMTIO_R_OK 4
74 #define FMTIO_W_OK 2
75 #endif /* _WIN32 */
76#endif /* DOXYGEN */
77
78#ifdef DOXYGEN
79
93 #define FMTIO_UTIL_EXPORT
94
102 #define FMTIO_UTIL_API
103
104#else /* !DOXYGEN */
105
106 #ifndef _WIN32
107 #define FMTIO_UTIL_EXPORT
108 #define FMTIO_UTIL_API
109 #else /* _WIN32 */
110 #ifndef __INTELLISENSE__
111 #ifndef FMTIO_UTIL_STATIC
112 #ifdef FMTIO_UTIL_EXPORTS
113 #define FMTIO_UTIL_EXPORT __declspec(dllexport)
114 #else /* !FMTIO_UTIL_EXPORTS */
115 #define FMTIO_UTIL_EXPORT __declspec(dllimport)
116 #endif /* FMTIO_UTIL_EXPORTS */
117 #else /* FMTIO_UTIL_STATIC */
118 #define FMTIO_UTIL_EXPORT
119 #endif /* FMTIO_UTIL_STATIC */
120 #else /* __INTELLISENSE__ */
121 #define FMTIO_UTIL_EXPORT
122 #endif /* __INTELLISENSE__ */
123 #ifndef FMTIO_UTIL_API
124 #define FMTIO_UTIL_API __stdcall
125 #endif /* FMTIO_UTIL_API */
126 #endif /* _WIN32 */
127
128#endif /* DOXYGEN */
129
130#ifdef __cplusplus
131 extern "C"
132{
133#endif /* __cplusplus */
134
179 FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API fopenf(const char *modes, int *errno_out, const char *format, ...)
180#ifdef __GNUC__
181 __attribute__((format(printf, 3, 4)))
182#endif /* __GNUC__ */
183 ;
184
207 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API statf(file_stat_t *buf, const char *format, ...)
208#ifdef __GNUC__
209 __attribute__((format(printf, 2, 3)))
210#endif /* __GNUC__ */
211 ;
212
235 FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API vfopenf(const char *modes, int *errno_out, const char *format, va_list args)
236#ifdef __GNUC__
237 __attribute__((format(printf, 3, 0)))
238#endif /* __GNUC__ */
239 ;
240
253 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vstatf(file_stat_t *buf, const char *format, va_list args)
254#ifdef __GNUC__
255 __attribute__((format(printf, 2, 0)))
256#endif /* __GNUC__ */
257 ;
258
285 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API removef(const char *format, ...)
286#ifdef __GNUC__
287 __attribute__((format(printf, 1, 2)))
288#endif /* __GNUC__ */
289 ;
290
306 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vremovef(const char *format, va_list args)
307#ifdef __GNUC__
308 __attribute__((format(printf, 1, 0)))
309#endif /* __GNUC__ */
310 ;
311
347 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API openf(int flags, int mode, const char *format, ...)
348#ifdef __GNUC__
349 __attribute__((format(printf, 3, 4)))
350#endif /* __GNUC__ */
351 ;
352
374 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vopenf(int flags, int mode, const char *format, va_list args)
375#ifdef __GNUC__
376 __attribute__((format(printf, 3, 0)))
377#endif /* __GNUC__ */
378 ;
379
416 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API accessf(int mode, const char *format, ...)
417#ifdef __GNUC__
418 __attribute__((format(printf, 2, 3)))
419#endif /* __GNUC__ */
420 ;
421
440 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vaccessf(int mode, const char *format, va_list args)
441#ifdef __GNUC__
442 __attribute__((format(printf, 2, 0)))
443#endif /* __GNUC__ */
444 ;
445
473 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API mkdirf(const char *format, ...)
474#ifdef __GNUC__
475 __attribute__((format(printf, 1, 2)))
476#endif /* __GNUC__ */
477 ;
478
494 FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vmkdirf(const char *format, va_list args)
495#ifdef __GNUC__
496 __attribute__((format(printf, 1, 0)))
497#endif /* __GNUC__ */
498 ;
499
500#ifdef __cplusplus
501}
502#endif /* __cplusplus */
503
504#endif /* FMTIO_UTIL_H */
FMTIO_UTIL_EXPORT
#define FMTIO_UTIL_EXPORT
DLL エクスポート/インポート制御マクロ。
Definition fmtio-util.h:93
file_stat_t
struct stat file_stat_t
Definition fmtio-util.h:12
statf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API statf(file_stat_t *buf, const char *format,...)
printf 形式でファイル名を指定する stat ラッパー関数
Definition fmtio-util.c:132
mkdirf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API mkdirf(const char *format,...)
printf 形式でディレクトリ名を指定してディレクトリを作成します。
Definition fmtio-util.c:236
vaccessf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vaccessf(int mode, const char *format, va_list args)
printf 形式でファイル名を指定してアクセス可否を確認します (va_list 版)。
Definition fmtio-util.c:197
FMTIO_UTIL_API
#define FMTIO_UTIL_API
呼び出し規約マクロ。
Definition fmtio-util.h:102
vfopenf
FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API vfopenf(const char *modes, int *errno_out, const char *format, va_list args)
printf 形式でファイル名を指定してファイルを開きます (va_list 版)。
Definition fmtio-util.c:34
fopenf
FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API fopenf(const char *modes, int *errno_out, const char *format,...)
printf 形式でファイル名を指定してファイルを開きます。
Definition fmtio-util.c:97
removef
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API removef(const char *format,...)
printf 形式でファイル名を指定してファイルを削除します。
Definition fmtio-util.c:155
vremovef
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vremovef(const char *format, va_list args)
printf 形式でファイル名を指定してファイルを削除します (va_list 版)。
Definition fmtio-util.c:147
vopenf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vopenf(int flags, int mode, const char *format, va_list args)
printf 形式でファイル名を指定してファイルを開きます (低レベル、va_list 版)。
Definition fmtio-util.c:170
vmkdirf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vmkdirf(const char *format, va_list args)
printf 形式でディレクトリ名を指定してディレクトリを作成します (va_list 版)。
Definition fmtio-util.c:224
vstatf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vstatf(file_stat_t *buf, const char *format, va_list args)
printf 形式でファイル名を指定する stat ラッパー関数 (va_list 版)。
Definition fmtio-util.c:112
openf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API openf(int flags, int mode, const char *format,...)
printf 形式でファイル名を指定してファイルを開きます (低レベル)。
Definition fmtio-util.c:182
accessf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API accessf(int mode, const char *format,...)
printf 形式でファイル名を指定してアクセス可否を確認します。
Definition fmtio-util.c:209