FILE *FMTIO_UTIL_API vfopenf ( const char *modes, int *errno_out, const char *format, va_list args )printf 形式でファイル名を指定してファイルを開きます (va_list 版)。
fopenf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。 上位のラッパー関数やマクロから va_list を転送する場合に使用します。
成功した場合は FILE* を返します。失敗した場合は NULL を返します。
fopenf
FILE *FMTIO_UTIL_API fopenf ( const char *modes, int *errno_out, const char *format, ... )printf 形式でファイル名を指定してファイルを開きます。
本関数は、呼び出し元が printf と同様の書式指定を用いてファイル名を組み立てられるようにするための fopen ラッパー関数です。
指定された書式文字列 (format) と可変引数 (…) からファイル名を生成し、その結果を用いてファイルをオープンします。
書式展開には vsnprintf を使用し、生成されたファイル名が OS の制限や内部バッファ長に収まらない場合、またはファイルのオープンに失敗した場合は NULL を返します。
失敗理由の取得が必要な場合は errno_out を指定してください。 指定された場合、環境に応じたエラーコードを格納します。
成功した場合は FILE* を返します。失敗した場合は NULL を返します。
ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。
FILE *fp = fopenf("r", NULL, "data_%d.txt", 123);int err;
FILE *fp = fopenf("r", &err, "data_%d.txt", 123);int FMTIO_UTIL_API vstatf ( file_stat_t *buf, const char *format, va_list args )printf 形式でファイル名を指定する stat ラッパー関数 (va_list 版)。
statf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時は 0、失敗時は -1
statf
int FMTIO_UTIL_API statf ( file_stat_t *buf, const char *format, ... )printf 形式でファイル名を指定する stat ラッパー関数
この関数は、printf と同じ形式でファイル名を指定してファイル情報を取得します。 内部で vsnprintf を使用してファイル名をフォーマットし、stat を呼び出します。
成功時は 0、失敗時は -1
Linux と Windows では構造体のフィールドが異なるため、プラットフォーム固有のコードが必要です
file_stat_t st; int ret = statf(&st, "data_%d.txt", 123);int FMTIO_UTIL_API vremovef ( const char *format, va_list args )printf 形式でファイル名を指定してファイルを削除します (va_list 版)。
removef() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時は 0、失敗時は非ゼロ値を返します。
removef
int FMTIO_UTIL_API removef ( const char *format, ... )printf 形式でファイル名を指定してファイルを削除します。
本関数は、printf と同じ形式でファイル名を指定してファイルを削除するための remove ラッパー関数です。
指定された書式文字列 (format) と可変引数 (…) からファイル名を生成し、その結果を用いてファイルを削除します。
成功時は 0、失敗時は非ゼロ値を返します。
ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。
int ret = removef("data_%d.txt", 123);vremovef
int FMTIO_UTIL_API vopenf ( int flags, int mode, const char *format, va_list args )printf 形式でファイル名を指定してファイルを開きます (低レベル、va_list 版)。
openf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時はファイルディスクリプタ、失敗時は -1 を返します。
openf
int FMTIO_UTIL_API openf ( int flags, int mode, const char *format, ... )printf 形式でファイル名を指定してファイルを開きます (低レベル)。
本関数は、printf と同じ形式でファイル名を指定して低レベルファイルオープンを行うための open ラッパー関数です。
Linux では open()、Windows では _open() を使用します。
成功時はファイルディスクリプタ (0 以上の整数)、失敗時は -1 を返します。
int fd = openf(O_WRONLY | O_CREAT | O_TRUNC, 0644, "log_%d.txt", pid);vopenf
int FMTIO_UTIL_API vaccessf ( int mode, const char *format, va_list args )printf 形式でファイル名を指定してアクセス可否を確認します (va_list 版)。
accessf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
アクセス可能な場合は 0、不可の場合は -1 を返します。
accessf
int FMTIO_UTIL_API accessf ( int mode, const char *format, ... )printf 形式でファイル名を指定してアクセス可否を確認します。
本関数は、printf と同じ形式でファイル名を指定してファイルの存在や アクセス権限を確認するための access ラッパー関数です。
Linux では access()、Windows では _access() を使用します。
アクセス可能な場合は 0、不可の場合は -1 を返します。
if (accessf(FMTIO_F_OK, "config_%d.txt", instance_id) == 0)
{
// ファイルが存在する
}vaccessf
int FMTIO_UTIL_API vmkdirf ( const char *format, va_list args )printf 形式でディレクトリ名を指定してディレクトリを作成します (va_list 版)。
mkdirf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時は 0、失敗時は -1 を返します。
mkdirf
int FMTIO_UTIL_API mkdirf ( const char *format, ... )printf 形式でディレクトリ名を指定してディレクトリを作成します。
本関数は、printf と同じ形式でディレクトリ名を指定してディレクトリを作成するための mkdir ラッパー関数です。
Linux では mkdir() をパーミッション 0755 で呼び出します。 Windows では _mkdir() を呼び出します (パーミッション指定はありません)。
成功時は 0、失敗時は -1 を返します。
int ret = mkdirf("logs_%04d", year);vmkdirf
#define FMTIO_FORMAT_FILENAME ( format, args, fail_return )
char filename[FILE_PATH_MAX] = {0}; \
int written; \
if (format == NULL) \
{ \
return (fail_return); \
} \
written = vsnprintf(filename, sizeof(filename), format, args); \
if (written < 0) \
{ \
return (fail_return); \
} \
if (written >= (int)sizeof(filename)) \
{ \
return (fail_return); \
}ファイル名フォーマットの共通処理。 va_list から FILE_PATH_MAX バッファにファイル名を展開し、 失敗時は指定された値を返す。 成功時は filename[] に結果が格納される。