ファイル処理に関するユーティリティAPIの実装
More...
ファイル処理に関するユーティリティAPIの実装
- Author
- chocolate-pie24
- Version
- 0.1
- Date
- 2025-12.26
- Todo:
- ターゲットコントローラに応じてFS_READ_UNIT_SIZEを変える
- Copyright
- Copyright (c) 2025 chocolate-pie24
- License
- MIT License. See LICENSE file in the project root for full license text.
◆ FS_READ_UNIT_SIZE
| #define FS_READ_UNIT_SIZE 512 |
ファイル読み込みの際に一度に読み込むバイト数(メモリの動的確保回数を減らすため,固定値にした)
◆ fs_utils_create()
fs_utils_t構造体インスタンスを生成し初期化する
- Warning
- 引数の値は以下に注意する
- filepath_の末尾には必ず'/'をつける
- extensionは必ず'.'から始めること
- Note
- filepath/filename.extentionのファイルがopen_mode_でopenされる
@ FILESYSTEM_MODE_READ
Definition: filesystem.h:60
fs_utils_result_t fs_utils_create(const char *filepath_, const char *filename_, const char *extension_, filesystem_open_mode_t open_mode_, fs_utils_t **fs_utils_)
fs_utils_t構造体インスタンスを生成し初期化する
Definition: fs_utils.c:91
fs_utils_result_t
ファイルシステムユーティリティ実行結果コード定義
Definition: fs_utils.h:37
ファイルシステムユーティリティ内部状態管理構造体
Definition: fs_utils.c:66
- Parameters
-
| filepath_ | ファイルパス |
| filename_ | ファイル名 |
| extension_ | 拡張子(拡張子がない場合はNULLを指定する) |
| open_mode_ | ファイルオープンモード filesystem_open_mode_t |
| fs_utils_ | 初期化対象構造体インスタンスへのダブルポインタ |
- Return values
-
| FS_UTILS_INVALID_ARGUMENT | 以下のいずれか
- filepath_ == NULL
- filename_ == NULL
- fs_utils_ == NULL
- *fs_utils_ != NULL
- open_mode_ == FILESYSTEM_MODE_NONE
- メモリシステム未初期化
|
| FS_UTILS_LIMIT_EXCEEDED | メモリシステムのシステム使用可能範囲上限を超過 |
| FS_UTILS_NO_MEMORY | メモリ割り当て失敗 |
| FS_UTILS_OVERFLOW | 文字列が長すぎてオーバーフロー |
| FS_UTILS_UNDEFINED_ERROR | 想定していないエラー(バグorエラー処理漏れ) |
| FS_UTILS_DATA_CORRUPTED | データメモリ破損,API誤用,初期化漏れ |
| FS_UTILS_FILE_OPEN_ERROR | ファイルオープンエラー |
| FS_UTILS_RUNTIME_ERROR | 既にオープン済みのファイルハンドル(初期化済みのハンドルは引数チェックで弾かれるため起こり得ない。発生したらバグ) |
| FS_UTILS_SUCCESS | メモリ確保と初期化に成功し、正常終了 |
◆ fs_utils_destroy()
fs_utils_が管理するメモリと自身のメモリを解放し、*fs_utils_=NULLにする
- Note
- 2重デストロイ許可
- fs_utils_ == NULLの場合はno-op
- *fs_utils_ == NULLの場合はno-op
- 内部でfilesystem_destroyが呼び出され、オープン中のファイルがクローズされる
void fs_utils_destroy(fs_utils_t **fs_utils_)
fs_utils_が管理するメモリと自身のメモリを解放し、*fs_utils_=NULLにする
Definition: fs_utils.c:188
- Parameters
-
| fs_utils_ | メモリ解放対象構造体インスタンスへのダブルポインタ |
◆ fs_utils_fullpath_get()
fs_utils_が保持するファイルパス,ファイル名,拡張子の文字列からフルパス文字列を生成する
- Note
- 処理に失敗した場合,out_fullpath_の内部データは変更される可能性がある
- Warning
- out_fullpath_は choco_string_default_create choco_string_create_from_c_string によって初期化されたインスタンスを渡すこと
- Parameters
-
| fs_utils_ | fs_utils_t構造体インスタンスへのポインタ |
| out_fullpath_ | フルパス格納先choco_string_t構造体インスタンスへのポインタ |
- Return values
-
| FS_UTILS_INVALID_ARGUMENT | 以下のいずれか
- fs_utils_がNULL
- out_fullpath_がNULL
- filepathの文字列をコピーする際にchoco_string_copyがCHOCO_STRING_INVALID_ARGUMENTを返した
- filenameの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_INVALID_ARGUMENTを返した
- extensionの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_INVALID_ARGUMENTを返した
|
| FS_UTILS_DATA_CORRUPTED | 以下のいずれか
- fs_utils_の内部状態が無効もしくは未初期化
- filepathの文字列をコピーする際にchoco_string_copyがCHOCO_STRING_DATA_CORRUPTEDを返した
- filenameの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_DATA_CORRUPTEDを返した
- extensionの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_DATA_CORRUPTEDを返した
|
| FS_UTILS_OVERFLOW | 以下のいずれか
- filepathの文字列をコピーする際にchoco_string_copyがCHOCO_STRING_OVERFLOWを返した
- filenameの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_OVERFLOWを返した
- extensionの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_OVERFLOWを返した
|
| FS_UTILS_NO_MEMORY | 以下のいずれか
- filepathの文字列をコピーする際にchoco_string_copyがCHOCO_STRING_NO_MEMORYを返した
- filenameの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_NO_MEMORYを返した
- extensionの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_NO_MEMORYを返した
|
| FS_UTILS_LIMIT_EXCEEDED | 以下のいずれか
- filepathの文字列をコピーする際にchoco_string_copyがCHOCO_STRING_LIMIT_EXCEEDEDを返した
- filenameの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_LIMIT_EXCEEDEDを返した
- extensionの文字列をコピーする際にchoco_string_concatがCHOCO_STRING_LIMIT_EXCEEDEDを返した
|
| FS_UTILS_UNDEFINED_ERROR | 処理過程において想定外のエラーコードを受け取った |
| FS_UTILS_SUCCESS | フルパス文字列の生成に成功し,正常終了 |
◆ fs_utils_text_file_read()
fs_utils_create で指定したファイルの中身を全て読み込む
- Warning
- 内部ではchoco_string_concat_from_c_stringを使用して文字列を連結する。各文字列処理には終端文字による判定処理が存在する。 ここで、バイナリファイルには終端文字(0)が普通に含まれるため、バイナリファイルの読み込みには使用してはいけない。
choco_string_result_t
文字列API実行結果コードリスト
Definition: choco_string.h:40
choco_string_result_t choco_string_default_create(choco_string_t **string_)
空の文字列コンテナを生成する
Definition: choco_string.c:92
fs_utils_result_t fs_utils_text_file_read(fs_utils_t *fs_utils_, choco_string_t *out_string_)
fs_utils_create で指定したファイルの中身を全て読み込む
Definition: fs_utils.c:203
文字列コンテナ内部状態管理構造体
Definition: choco_string.c:68
- Parameters
-
| fs_utils_ | fs_utils_t構造体インスタンスへのポインタ |
| out_string_ | 読み込んだ文字列の格納先 |
- Return values
-
| FS_UTILS_INVALID_ARGUMENT | 以下のいずれか
- fs_utils_ == NULL
- out_string_ == NULL
|
| FS_UTILS_DATA_CORRUPTED | データメモリ破損,API誤用,初期化漏れ |
| FS_UTILS_BAD_OPERATION | 読み込み用ではないファイルオープンモードが渡された |
| FS_UTILS_RUNTIME_ERROR | ファイル読み込み中にエラーが発生 |
| FS_UTILS_NO_MEMORY | メモリ確保に失敗 |
| FS_UTILS_OVERFLOW | 処理過程でオーバーフローが発生 |
| FS_UTILS_LIMIT_EXCEEDED | メモリ管理システムが管理するメモリ使用量上限超過 |
| FS_UTILS_SUCCESS | ファイルの読み込みに成功し、正常終了 |