14#define FMTIO_FORMAT_FILENAME(format, args, fail_return) \
15 char filename[FILE_PATH_MAX] = {0}; \
19 return (fail_return); \
21 written = vsnprintf(filename, sizeof(filename), format, args); \
24 return (fail_return); \
26 if (written >= (int)sizeof(filename)) \
28 return (fail_return); \
36 char filename[FILE_PATH_MAX] = {0};
40 if (modes == NULL || format == NULL)
42 if (errno_out != NULL)
50 written = vsnprintf(filename,
sizeof(filename), format, args);
55 if (errno_out != NULL)
63 if (written >= (
int)
sizeof(filename))
65 if (errno_out != NULL)
67 *errno_out = ENAMETOOLONG;
75 FILE *fp = fopen(filename, modes);
76 if (fp == NULL && errno_out != NULL)
83 errno_t err = fopen_s(&fp, filename, modes);
86 if (errno_out != NULL)
102 va_start(args, format);
103 result =
vfopenf(modes, errno_out, format, args);
124 return stat(filename, buf);
127 return _stat64(filename, buf);
137 va_start(args, format);
138 result =
vstatf(buf, format, args);
151 return remove(filename);
160 va_start(args, format);
175 return open(filename, flags, mode);
177 return _open(filename, flags, mode);
187 va_start(args, format);
188 result =
vopenf(flags, mode, format, args);
202 return access(filename, mode);
204 return _access(filename, mode);
214 va_start(args, format);
215 result =
vaccessf(mode, format, args);
229 return mkdir(filename, 0755);
231 return _mkdir(filename);
241 va_start(args, format);
242 result =
vmkdirf(format, args);
int FMTIO_UTIL_API vmkdirf(const char *format, va_list args)
printf 形式でディレクトリ名を指定してディレクトリを作成します (va_list 版)。
int FMTIO_UTIL_API accessf(int mode, const char *format,...)
printf 形式でファイル名を指定してアクセス可否を確認します。
int FMTIO_UTIL_API vopenf(int flags, int mode, const char *format, va_list args)
printf 形式でファイル名を指定してファイルを開きます (低レベル、va_list 版)。
int FMTIO_UTIL_API vremovef(const char *format, va_list args)
printf 形式でファイル名を指定してファイルを削除します (va_list 版)。
int FMTIO_UTIL_API removef(const char *format,...)
printf 形式でファイル名を指定してファイルを削除します。
FILE *FMTIO_UTIL_API vfopenf(const char *modes, int *errno_out, const char *format, va_list args)
printf 形式でファイル名を指定してファイルを開きます (va_list 版)。
int FMTIO_UTIL_API mkdirf(const char *format,...)
printf 形式でディレクトリ名を指定してディレクトリを作成します。
FILE *FMTIO_UTIL_API fopenf(const char *modes, int *errno_out, const char *format,...)
printf 形式でファイル名を指定してファイルを開きます。
#define FMTIO_FORMAT_FILENAME(format, args, fail_return)
ファイル名フォーマットの共通処理。 va_list から FILE_PATH_MAX バッファにファイル名を展開し、 失敗時は指定された値を返す。 成功時は filename[] に結果が格納される。
int FMTIO_UTIL_API statf(file_stat_t *buf, const char *format,...)
printf 形式でファイル名を指定する stat ラッパー関数
int FMTIO_UTIL_API vaccessf(int mode, const char *format, va_list args)
printf 形式でファイル名を指定してアクセス可否を確認します (va_list 版)。
int FMTIO_UTIL_API openf(int flags, int mode, const char *format,...)
printf 形式でファイル名を指定してファイルを開きます (低レベル)。
int FMTIO_UTIL_API vstatf(file_stat_t *buf, const char *format, va_list args)
printf 形式でファイル名を指定する stat ラッパー関数 (va_list 版)。
#define FMTIO_UTIL_API
呼び出し規約マクロ。