*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



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:44