Document of c-modernization-kit (util) 1.0.0

Loading...
Searching...
No Matches
Macros | Typedefs | Functions
fmtio-util.h File Reference
`#include <stdarg.h>`
`#include <stdint.h>`
`#include <stdio.h>`
`#include <sys/stat.h>`
`#include <time.h>`
Include dependency graph for fmtio-util.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Macros
#define | FMTIO_F_OK 0
| ファイルの存在を確認するモード定数。
#define | FMTIO_R_OK 4
| ファイルの読み取り権限を確認するモード定数。
#define | FMTIO_W_OK 2
| ファイルの書き込み権限を確認するモード定数。
#define | FMTIO_UTIL_EXPORT
| DLL エクスポート/インポート制御マクロ。
#define | FMTIO_UTIL_API
| 呼び出し規約マクロ。

## Typedefs
typedef struct stat | file_stat_t

## Functions
FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API | fopenf (const char *modes, int *errno_out, const char *format,...)
| printf 形式でファイル名を指定してファイルを開きます。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | statf (file_stat_t *buf, const char *format,...)
| printf 形式でファイル名を指定する stat ラッパー関数
FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API | vfopenf (const char *modes, int *errno_out, const char *format, va_list args)
| printf 形式でファイル名を指定してファイルを開きます (va_list 版)。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | vstatf (file_stat_t *buf, const char *format, va_list args)
| printf 形式でファイル名を指定する stat ラッパー関数 (va_list 版)。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | removef (const char *format,...)
| printf 形式でファイル名を指定してファイルを削除します。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | vremovef (const char *format, va_list args)
| printf 形式でファイル名を指定してファイルを削除します (va_list 版)。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | openf (int flags, int mode, const char *format,...)
| printf 形式でファイル名を指定してファイルを開きます (低レベル)。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | vopenf (int flags, int mode, const char *format, va_list args)
| printf 形式でファイル名を指定してファイルを開きます (低レベル、va_list 版)。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | accessf (int mode, const char *format,...)
| printf 形式でファイル名を指定してアクセス可否を確認します。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | vaccessf (int mode, const char *format, va_list args)
| printf 形式でファイル名を指定してアクセス可否を確認します (va_list 版)。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | mkdirf (const char *format,...)
| printf 形式でディレクトリ名を指定してディレクトリを作成します。
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API | vmkdirf (const char *format, va_list args)
| printf 形式でディレクトリ名を指定してディレクトリを作成します (va_list 版)。

## Macro Definition Documentation

## ◆ FMTIO_F_OK

#define FMTIO_F_OK 0

ファイルの存在を確認するモード定数。

accessf() の mode 引数に使用します。

Definition at line 51 of file fmtio-util.h.

## ◆ FMTIO_R_OK

#define FMTIO_R_OK 4

ファイルの読み取り権限を確認するモード定数。

accessf() の mode 引数に使用します。

Definition at line 58 of file fmtio-util.h.

## ◆ FMTIO_W_OK

#define FMTIO_W_OK 2

ファイルの書き込み権限を確認するモード定数。

accessf() の mode 引数に使用します。

Definition at line 65 of file fmtio-util.h.

## ◆ FMTIO_UTIL_EXPORT

#define FMTIO_UTIL_EXPORT

DLL エクスポート/インポート制御マクロ。

ビルド条件に応じて以下の値を取ります。

条件 | 値
--- | ---
Linux (非 Windows) | (空)
Windows / __INTELLISENSE__ 定義時 | (空)
Windows / FMTIO_UTIL_STATIC 定義時 (静的リンク) | (空)
Windows / FMTIO_UTIL_EXPORTS 定義時 (DLL ビルド) | __declspec(dllexport)
Windows / FMTIO_UTIL_EXPORTS 未定義時 (DLL 利用側) | __declspec(dllimport)

Definition at line 93 of file fmtio-util.h.

## ◆ FMTIO_UTIL_API

#define FMTIO_UTIL_API

呼び出し規約マクロ。

Windows 環境では __stdcall 呼び出し規約を指定します。
Linux (非 Windows) 環境では空に展開されます。
既に定義済みの場合は再定義されません。

Definition at line 102 of file fmtio-util.h.

Referenced by accessf(), fopenf(), mkdirf(), openf(), removef(), statf(), vaccessf(), vfopenf(), vmkdirf(), vopenf(), vremovef(), and vstatf().

## Typedef Documentation

## ◆ file_stat_t

typedef struct stat file_stat_t

Definition at line 12 of file fmtio-util.h.

## Function Documentation

## ◆ fopenf()

FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API fopenf | ( | const char * | modes,
|  | int * | errno_out,
|  | const char * | format,
|  |  | ... )

printf 形式でファイル名を指定してファイルを開きます。

本関数は、呼び出し元が printf と同様の書式指定を用いてファイル名を組み立てられるようにするための fopen ラッパー関数です。

指定された書式文字列 (format) と可変引数 (...) からファイル名を生成し、その結果を用いてファイルをオープンします。

書式展開には vsnprintf を使用し、生成されたファイル名が OS の制限や内部バッファ長に収まらない場合、またはファイルのオープンに失敗した場合は NULL を返します。

失敗理由の取得が必要な場合は errno_out を指定してください。 指定された場合、環境に応じたエラーコードを格納します。

Parameters

  [in] | modes | ファイルのオープン モード ("r", "w", "a", "rb", "wb" など)。
  [out] | errno_out | エラー コードの格納先。 Linux では errno の値、Windows では fopen_s の戻り値を格納します。 NULL を指定した場合、エラー コードの取得は行いません。
  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | ... | 書式文字列に対応する可変引数。

Returns
  成功した場合は FILE* を返します。失敗した場合は NULL を返します。

Note
  ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。

使用例 (エラー コードの取得なし)
  FILE *fp = fopenf("r", NULL, "data_%d.txt", 123);
  fopenf
  FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API fopenf(const char *modes, int *errno_out, const char *format,...)
  printf 形式でファイル名を指定してファイルを開きます。
  Definition fmtio-util.c:97

使用例 (エラー コードの取得あり)
  int err;
  FILE *fp = fopenf("r", &err, "data_%d.txt", 123);

Definition at line 97 of file fmtio-util.c.

References FMTIO_UTIL_API, and vfopenf().

Here is the call graph for this function:

## ◆ statf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API statf | ( | file_stat_t * | buf,
|  | const char * | format,
|  |  | ... )

printf 形式でファイル名を指定する stat ラッパー関数

この関数は、printf と同じ形式でファイル名を指定してファイル情報を取得します。 内部で vsnprintf を使用してファイル名をフォーマットし、stat を呼び出します。

Parameters

  [out] | buf | ファイル情報を格納する構造体へのポインタ (file_stat_t 型)
  [in] | format | ファイル名のフォーマット文字列 (printf 形式)
  [in] | ... | フォーマット文字列の可変引数

Returns
  成功時は 0、失敗時は -1

Note
  ファイル名の最大長は OS の規定値です (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)
  file_stat_t は、Linux では struct stat、Windows では struct _stat64 の typedef です

使用例
  file_stat_t st; int ret = statf(&st, "data_%d.txt", 123);
  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

Note
  Linux では stat()、Windows では _stat64() を使用します

Warning
  Linux と Windows では構造体のフィールドが異なるため、プラットフォーム固有のコードが必要です
  - Windows には st_blksize, st_blocks フィールドがありません
  - st_ctime は Linux ではメタデータ変更時刻、Windows では作成時刻を表します

Definition at line 132 of file fmtio-util.c.

References FMTIO_UTIL_API, and vstatf().

Here is the call graph for this function:

## ◆ vfopenf()

FMTIO_UTIL_EXPORT 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 を転送する場合に使用します。

Parameters

  [in] | modes | ファイルのオープン モード ("r", "w", "a", "rb", "wb" など)。
  [out] | errno_out | エラー コードの格納先。NULL を指定した場合、エラー コードの取得は行いません。
  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | args | 書式文字列に対応する可変引数リスト。

Returns
  成功した場合は FILE* を返します。失敗した場合は NULL を返します。

See also
  fopenf

Definition at line 34 of file fmtio-util.c.

References FMTIO_UTIL_API.

Referenced by fopenf().

Here is the caller graph for this function:

## ◆ vstatf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vstatf | ( | file_stat_t * | buf,
|  | const char * | format,
|  | va_list | args )

printf 形式でファイル名を指定する stat ラッパー関数 (va_list 版)。

statf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。

Parameters

  [out] | buf | ファイル情報を格納する構造体へのポインタ (file_stat_t 型)
  [in] | format | ファイル名のフォーマット文字列 (printf 形式)
  [in] | args | フォーマット文字列に対応する可変引数リスト

Returns
  成功時は 0、失敗時は -1

See also
  statf

Definition at line 112 of file fmtio-util.c.

References FMTIO_FORMAT_FILENAME, and FMTIO_UTIL_API.

Referenced by statf().

Here is the caller graph for this function:

## ◆ removef()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API removef | ( | const char * | format,
|  |  | ... )

printf 形式でファイル名を指定してファイルを削除します。

本関数は、printf と同じ形式でファイル名を指定してファイルを削除するための remove ラッパー関数です。

指定された書式文字列 (format) と可変引数 (...) からファイル名を生成し、その結果を用いてファイルを削除します。

Parameters

  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | ... | 書式文字列に対応する可変引数。

Returns
  成功時は 0、失敗時は非ゼロ値を返します。

Note
  ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。

使用例
  int ret = removef("data_%d.txt", 123);
  removef
  FMTIO_UTIL_EXPORT int FMTIO_UTIL_API removef(const char *format,...)
  printf 形式でファイル名を指定してファイルを削除します。
  Definition fmtio-util.c:155

See also
  vremovef

Definition at line 155 of file fmtio-util.c.

References FMTIO_UTIL_API, and vremovef().

Here is the call graph for this function:

## ◆ vremovef()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vremovef | ( | const char * | format,
|  | va_list | args )

printf 形式でファイル名を指定してファイルを削除します (va_list 版)。

removef() と同等ですが、可変引数リストの代わりに va_list を受け取ります。

Parameters

  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | args | 書式文字列に対応する可変引数リスト。

Returns
  成功時は 0、失敗時は非ゼロ値を返します。

See also
  removef

Definition at line 147 of file fmtio-util.c.

References FMTIO_FORMAT_FILENAME, and FMTIO_UTIL_API.

Referenced by removef().

Here is the caller graph for this function:

## ◆ openf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API openf | ( | int | flags,
|  | int | mode,
|  | const char * | format,
|  |  | ... )

printf 形式でファイル名を指定してファイルを開きます (低レベル)。

本関数は、printf と同じ形式でファイル名を指定して低レベルファイルオープンを行うための open ラッパー関数です。

Linux では open()、Windows では _open() を使用します。

Parameters

  [in] | flags | ファイルオープンフラグ (O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, O_APPEND など)。
  [in] | mode | ファイル作成時のパーミッション (O_CREAT 指定時に使用)。 Linux では 0644 など、Windows では _S_IREAD | _S_IWRITE など。 O_CREAT を指定しない場合は 0 を渡してください。
  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | ... | 書式文字列に対応する可変引数。

Returns
  成功時はファイルディスクリプタ (0 以上の整数)、失敗時は -1 を返します。

Note
  ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。
  Windows の CreateFileA が提供する FILE_SHARE_DELETE や FILE_FLAG_WRITE_THROUGH 等の 高度な機能は本関数ではサポートしません。

使用例
  int fd = openf(O_WRONLY | O_CREAT | O_TRUNC, 0644, "log_%d.txt", pid);
  openf
  FMTIO_UTIL_EXPORT int FMTIO_UTIL_API openf(int flags, int mode, const char *format,...)
  printf 形式でファイル名を指定してファイルを開きます (低レベル)。
  Definition fmtio-util.c:182

See also
  vopenf

Definition at line 182 of file fmtio-util.c.

References FMTIO_UTIL_API, and vopenf().

Here is the call graph for this function:

## ◆ vopenf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vopenf | ( | int | flags,
|  | int | mode,
|  | const char * | format,
|  | va_list | args )

printf 形式でファイル名を指定してファイルを開きます (低レベル、va_list 版)。

openf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。

Parameters

  [in] | flags | ファイルオープンフラグ。
  [in] | mode | ファイル作成時のパーミッション。
  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | args | 書式文字列に対応する可変引数リスト。

Returns
  成功時はファイルディスクリプタ、失敗時は -1 を返します。

See also
  openf

Definition at line 170 of file fmtio-util.c.

References FMTIO_FORMAT_FILENAME, and FMTIO_UTIL_API.

Referenced by openf().

Here is the caller graph for this function:

## ◆ accessf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API accessf | ( | int | mode,
|  | const char * | format,
|  |  | ... )

printf 形式でファイル名を指定してアクセス可否を確認します。

本関数は、printf と同じ形式でファイル名を指定してファイルの存在や アクセス権限を確認するための access ラッパー関数です。

Linux では access()、Windows では _access() を使用します。

Parameters

  [in] | mode | 確認するアクセスモード。以下の定数を使用してください。 FMTIO_F_OK: ファイルの存在を確認 FMTIO_R_OK: 読み取り権限を確認 FMTIO_W_OK: 書き込み権限を確認
  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | ... | 書式文字列に対応する可変引数。

Returns
  アクセス可能な場合は 0、不可の場合は -1 を返します。

Note
  ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。
  Windows の _access() は実行権限チェック (X_OK) をサポートしないため、 FMTIO_X_OK は提供しません。

使用例
  if (accessf(FMTIO_F_OK, "config_%d.txt", instance_id) == 0)
  {
  // ファイルが存在する
  }
  FMTIO_F_OK
  #define FMTIO_F_OK
  ファイルの存在を確認するモード定数。
  Definition fmtio-util.h:51
  accessf
  FMTIO_UTIL_EXPORT int FMTIO_UTIL_API accessf(int mode, const char *format,...)
  printf 形式でファイル名を指定してアクセス可否を確認します。
  Definition fmtio-util.c:209

See also
  vaccessf

Definition at line 209 of file fmtio-util.c.

References FMTIO_UTIL_API, and vaccessf().

Here is the call graph for this function:

## ◆ vaccessf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vaccessf | ( | int | mode,
|  | const char * | format,
|  | va_list | args )

printf 形式でファイル名を指定してアクセス可否を確認します (va_list 版)。

accessf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。

Parameters

  [in] | mode | 確認するアクセスモード (FMTIO_F_OK, FMTIO_R_OK, FMTIO_W_OK)。
  [in] | format | ファイル名の書式文字列 (printf 形式)。
  [in] | args | 書式文字列に対応する可変引数リスト。

Returns
  アクセス可能な場合は 0、不可の場合は -1 を返します。

See also
  accessf

Definition at line 197 of file fmtio-util.c.

References FMTIO_FORMAT_FILENAME, and FMTIO_UTIL_API.

Referenced by accessf().

Here is the caller graph for this function:

## ◆ mkdirf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API mkdirf | ( | const char * | format,
|  |  | ... )

printf 形式でディレクトリ名を指定してディレクトリを作成します。

本関数は、printf と同じ形式でディレクトリ名を指定してディレクトリを作成するための mkdir ラッパー関数です。

Linux では mkdir() をパーミッション 0755 で呼び出します。 Windows では _mkdir() を呼び出します (パーミッション指定はありません)。

Parameters

  [in] | format | ディレクトリ名の書式文字列 (printf 形式)。
  [in] | ... | 書式文字列に対応する可変引数。

Returns
  成功時は 0、失敗時は -1 を返します。

Note
  ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。
  親ディレクトリが存在しない場合は失敗します (再帰的なディレクトリ作成は行いません)。

使用例
  int ret = mkdirf("logs_%04d", year);
  mkdirf
  FMTIO_UTIL_EXPORT int FMTIO_UTIL_API mkdirf(const char *format,...)
  printf 形式でディレクトリ名を指定してディレクトリを作成します。
  Definition fmtio-util.c:236

See also
  vmkdirf

Definition at line 236 of file fmtio-util.c.

References FMTIO_UTIL_API, and vmkdirf().

Here is the call graph for this function:

## ◆ vmkdirf()

FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vmkdirf | ( | const char * | format,
|  | va_list | args )

printf 形式でディレクトリ名を指定してディレクトリを作成します (va_list 版)。

mkdirf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。

Parameters

  [in] | format | ディレクトリ名の書式文字列 (printf 形式)。
  [in] | args | 書式文字列に対応する可変引数リスト。

Returns
  成功時は 0、失敗時は -1 を返します。

See also
  mkdirf

Definition at line 224 of file fmtio-util.c.

References FMTIO_FORMAT_FILENAME, and FMTIO_UTIL_API.

Referenced by mkdirf().

Here is the caller graph for this function: