Cente FileSystem

Cente FileSystem

・全角の大文字・小文字の表記が可能なコードの扱いに誤りがある不具合を修正(Cente障害情報:101-0092)

全角ファイル・ディレクトリ名に対し大文字/小文字の関係にあった場合、異なったファイル・ディレクトリであると判断してしまう不具合を修正。本修正はVer6.20で修正した「Cente障害情報:101-0092」について追加修正を行ったものです。以下の処理部を修正しています。

1.同一ファイルオープンの検出

2.rename(), rename_uni()実行時の同一ファイル検出

3.move(), move_uni()実行時の同一ファイル検出

・高速fseek時に異なる位置にシークしてしまう不具合を修正(Cente障害情報:101-0093)

高速fsek使用時において、クラスタ内移動セクタ数の算出方法に誤りがあり、以下の問題が発生する不具合を修正。

1.正しい位置にデータが書き込めない。

2.データが正しく読み出せない。

3.サイズ情報とFAT チェーン情報に不整合が発生してしまう。

・ハッシュによる検索時にCT_ENTRY_ERR(-71)エラーが発生する不具合を修正(Cente障害情報:101-0094)

ハッシュ機能有効時に、フルパス指定で且つディレクトリエントリ情報の変更を伴うAPIを実行した場合、CT_ENTRY_ERR(-71)エラーが発生する可能性がある不具合を修正。

・nullfat2による空き検索の不具合を修正(Cente障害情報:101-0095)

ファイル削除処理が一度行われた場合に(fopen w、w+モードによるファイルオープンを含む)、その後の書き込み処理において、容量に空きがあるのにも関わらずディスクフルエラー(CT_DISK_FULL:-11)が発生する可能性がある不具合を修正。

・ディレクトリ一括削除API追加

S-JIS用ディレクトリ一括削除API【rmdir_all()】、UNICODE用ディレクトリ一括削除API【rmdir_all_uni()】を追加しました。

・ディレクトリ内総数取得API追加

S-JIS用ディレクトリ内総数取得API【dinfo()】、UNICODE用ディレクトリ内総数取得API【dinfo_uni()】を追加しました。

・ワイルドカードを用いた検索APIを追加

S-JIS用ワイルドカードを用いた検索API【readdir_wc()】、UNICODE用ワイルドカードを用いた検索API【readdir_wc_uni()】を追加しました。

・文字列操作関数の追加/削除

「Cente障害情報:101-0092」の修正に伴い、以下の関数を追加/削除しました。

《追加》

 1.fs_fnaicmp()

 2.fs_fnanicmp()

 3.fs_fnaicmp_uni()

 4.fs_fnanicmp_uni()

《削除》

 1.fs_mbsncmp ()

 2.fs_unicodencmp()

・ini_journal()の戻り値修正

エラーコード「CT_ABN_FILE:-1」が戻される一部のケースにおいて、より解りやすいエラーコードへの置き換えを行いました。

・静的解析ツールの指摘事項修正

ルート上のファイル/ディレクトリ検索、作成を行う内部関数、fs_set_dir_entry_root()、fs_find_longer_entry_root()において、処理上の問題はないが、静的解析ツールを使用した場合に、型の違いによりワーニングが検出される問題を修正しました。

・ショートファイル名のチルダ後に付加する番号の仕様変更

ロングファイル名でファイル/ディレクトリを作成した際、重複回避のためにショートファイル名に付加させる「チルダ(~) + 番号」はエントリ情報に格納されている最大値に加算させる形で付加させています。上限値を超えた場合は即座にCT_OVER_SFILENAME(-66)エラーとしていましたが、エントリ情報の最小値を確認することで、削除済みの番号(最小値より若い番号)が再利用できるように改善を行いました。

Cente SD Card Driver

・多チャンネル対応

Cente SD Card Driver部に多チャンネル機能を追加

・物理フォーマット機能APIの仕様変更

多チャンネル対応に伴い、物理フォーマット時にドライブ名を指定するように変更

・物理フォーマット機能APIの機能追加

物理フォーマット機能にSDXCカード(64GB~)をFAT32フォーマットする機能を追加

・物理フォーマット機能にライトプロテクト検出機能を追加

sdphy_format()内でライトプロテクトのチェックを行うように変更

・異常検出が出来るように戻り値の型を変更

以下の関数内で異常を検出した場合にエラーが戻せるように、戻り値の型を「void」から「ct_int_fast16_t」型へ変更

SD_read_buf(), SD_Pow_ON()

・SD_TOUTのソフトウェアループで使用している変数の型を変更

ソフトウェアループで使用している変数を「ct_int_fast16_t tout;」(signed int)で宣言しているが、int=16bitの環境では桁溢れする可能性があるため「ct_uint32_t tout;」(unsigned long)へ変更

・SD_TranStateCheck()内の処理を変更

リード/ライト転送時に行っているSDカードのステートチェックにおいて、「Stand-by State」の場合に「Transfer State」へ遷移させる処理を追加

Cente Compact FileSystem

 ・サイズ0のファイルに対してfseek()によりセクタサイズ以下のファイル拡張が出来ない不具合を修正Cente障害情報:002-0014
FS_OVER_SZ_SEEKマクロに「1」または「2」を設定した環境下において、サイズ0のファイルに対してfseek()によりサイズを拡張する。その際、指定メディアのPartition Boot Sector(PBS)情報を壊してしまう不具合を修正しました。
・ファイルデータ用バッファサイズ境界(末尾)の位置へシーク後、正しくデータ読み書きを行うことが出来ない不具合を修正Cente障害情報:002-0015
fseek()に対してファイルデータ用バッファのサイズで割り切れる位置への移動を指定する。その後、ファイル操作を行うと本来アクセスするべきセクタより前のセクタにアクセスしてしまう不具合を修正しました。
・ディレクトリ削除時にエラーが発生した際、エラーの詳細コードを取得できない不具合を修正Cente障害情報:002-0016
ディレクトリ削除時にエラー「指定ディレクトリが存在しない」「デバイスドライバでリードエラー」「指定ディレクトリが空ではない」が発生した場合に、正しいエラーの詳細コードが取得できない不具合を修正しました。
FS_SJIS_API0」設定時にコンパイルエラーが発生する不具合を修正Cente障害情報:002-0017
fs_cfg.hファイル内のFS_SJIS_APIマクロが「0:無効」の状態で、FS_RMDIRマクロまたはFS_READDIRマクロを「1:有効」にした場合に、コンパイルエラーが検出されてしまう不具合を修正しました。
・ファイルを書き込みモードで多重オープンできてしまう不具合を修正Cente障害情報:101-0073
fopen()は書き込みモード(a, a+, w, w+, r+)の多重オープンを認めていませんが、オープン中ファイルより上の階層に存在するディレクトリの名前を変更すると、多重オープンができてしまう不具合を修正しました。
fseek()の移動先に4GBを越える位置を指定してもエラーを検出できない不具合を修正Cente障害情報:101-0077
FAT32の場合、fseek()に対して4GBを超える位置(後方)への移動を指定した場合は、エラーとして検出する必要がありますが、エラーを検出できずに正常終了してしまう不具合を修正しました。
・ショートエントリ検索で誤算出する場合がある不具合を修正Cente障害情報:101-0089
UNICODE API に対して以下の条件に該当する名前を指定した場合、ファイル・ディレクトリを誤検出してしまう不具合を修正しました。
1.ドットが複数ある場合。
2.12文字以内のUNICODE文字列中にASCII変換できないコード(全角文字)が含まれていた場合。
3.ショートエントリ中のスペースを含む名前と一致したUNICODE名を指定した場合。
MISRA-C 対応
C言語のためのソフトウェア設計標準規格であるMISRA-C:2004に対応しました。
・ツールの変更
RAM ディスクドライバ作成ツールを、Ver2.00以降の仕様に対応しました。これに伴い、「MKRAM.exe」から「CFS_MKRAM.exe」に名前を変更しました。
・標準ライブラリ関数追加、削除
memcmpを直接コールしていた箇所を独自のfs_memcmpに置き換えました。またMISRA-C対応に伴い、fs_memmoveをコールしている箇所をfs_memcpyに置き換え、fs_memmove

Page 6 of 27