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-の書庫が操作できるように
なる。



