*zdiffの動作が異常 [#i026bd16]
違う内容のfile1とfile2をgzipしたfile1.gzとfile2.gzをzdiffで比較しても何も表示されません。
$ zdiff file1.gz file2.gz
$ echo $?
2 (何らかのエラーが起こった)
他にも類似障害は無いでしょうか?
% diff -c /usr/bin/zdiff ./zdiff.new *** /usr/bin/zdiff 2009-08-17 09:00:00.000000000 +0900 --- ./zdiff.new 2009-09-27 23:58:00.000000000 +0900 *************** *** 22,29 **** case $1 in --__cmp) shift ! prog=cmp; cmp='${CMP-cmp}' ;; ! *) prog=diff; cmp='${DIFF-diff}';; esac version="z$prog (gzip) 1.3.12 --- 22,29 ---- case $1 in --__cmp) shift ! prog=cmp; cmp=${CMP-cmp} ;; ! *) prog=diff; cmp=${DIFF-diff};; esac version="z$prog (gzip) 1.3.12 *************** *** 106,115 **** ( (gzip -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null | eval "$cmp" /dev/fd/5 -) 5<&0 ) ! case $gzip_status in ! *[1-9]*) gzip_status=1;; ! *) gzip_status=0;; ! esac else F=`expr "/$2" : '.*/\(.*\)[-.][zZtga]*$'` || F=$prog tmp= --- 106,112 ---- ( (gzip -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null | eval "$cmp" /dev/fd/5 -) 5<&0 ) ! cmp_status=$? else F=`expr "/$2" : '.*/\(.*\)[-.][zZtga]*$'` || F=$prog tmp= *************** *** 156,161 **** exit 2 fi ! cmp_status=$? ! test "$gzip_status" -eq 0 || exit 2 exit $cmp_status --- 153,160 ---- exit 2 fi ! if [ "$cmp_status" = "1" ]; then ! echo "$gzip_status" | sed "1,2d" ! fi ! exit $cmp_status
22から29行めはコマンドをクォートしているのが間違いで、このままだと$cmp が ${CMP-diff} になって、 command not found で、エラー終了(return code 2)するみたい。 106-115行目はよく分からないけど、本来、diffの結果が入っているgzip_resultを終了コードが入ると思って、 整理しようとしているのかな? -- kojima 2009-09-28 (月) 00:01:34
./dir1: file.gz ./dir2: file.gz
のような配置でzdiff -r dir1 dir2を実行すると、「ファイルdir1/file.gzとdir2/file.gzは違います」となります。エラーコードは2(何らかのエラーが起こった)です。 -- azuki 2010-08-28 (土) 17:37:56