lha for unix ver 1.14gで対処 lha for unix ver 1.14f bugs ■■■■■■■■■■ 報告 ■■■■■■■■■■ (23) ■問題 chown,lchownの使い方が間違っていた。 lchownのあるシステムでは、symbolic link先の ファイルのownerを変更しようとしていた。 ■原因 chown()はlchwon()があるシステムと無いシステムで 挙動が異なる。展開したファイルがsymbolic link のファイルである場合、下記のようにしなくては いけなかったが、逆にしていた。 lchown()があるシステム:lchown()を使う lchown()がないシステム:chown()を使う ■対処 原因はlchown()かchown()を選択するかの条件が逆に なっていたので、lhext.cの条件を逆にした。 ■対処確認 ■■■■■■■■■■ 報告 ■■■■■■■■■■ (24) ■場所 #define SJC_SECOND_P のunsigned charのスペルを間違えていた。 ■対処 ungigned→unsignedに直した。 ■■■■■■■■■■ 報告 ■■■■■■■■■■ (25) ■問題 Header Level 2で作成したファイルの場合に、 ファイルの長さを正常に計算していなかった。 ■対処 level2ヘッダでfilenameを取得している箇所に name_length = header_size - 3; を追加した。 ■■■■■■■■■■ 不都合 ■■■■■■■■■■ (26) ■場所 Header Level 2で作成した書庫のヘッダの読み込み時に 正常にヘッダ長の計算が行われていなかった。 下位バイトしか計算していなかった。 ■対処 上位バイトもヘッダ長に含めて計算することにした。 ■■■■■■■■■■ 報告 ■■■■■■■■■■ (27) ■問題 level2ヘッダのappendがうまくいかず、エラーが 発生する。 ■原因 Header Level 2で作成した書庫のヘッダの読み込み時に 正常にヘッダ長の計算が行われていなかった。 書庫への追加の際に、コピーするサイズの計算が level 0,1と異なることを考慮していなかった。 ■対処 level0,1とlevel2のヘッダ長計算の箇所を場合わけした。 ■■■■■■■■■■ 報告 ■■■■■■■■■■ (28) ■問題 書庫内のsymbolic linkのファイルと、 同じ名前のsymbolic linkファイルのappendが うまくいかず、重なってしまう。 ■原因 ファイル名比較で、symbolic linkファイル名どうしの 比較アルゴリズムが間違えていた。 ■対処 正常に計算できるように修正した。 ■■■■■■■■■■ 追加 ■■■■■■■■■■ (29) ■機能 -lh7-の書庫を生成/展開ができる機能を追加した。 ■その他 Makefileで-DSUPPORT_LH7のオプションを追加して コンパイルすることで-lh7-の書庫が操作できるように なる。