10年ぶりくらい(もっとかも)で、パッチファイルを編集して適用するなんていう作業をしてたら、こんなエラーが出てきました。
patch: **** malformed patch at line 123: @@ -456,78 +901,23 @@
これを見て、「ははーん、旧ファイルの456行目からと新ファイルの901行目からのパッチが何かおかしいんだな。」
↓
「malformedってってことはおおかた、hunkの行数(旧ファイルが78行、新ファイルが23行)を正しい値にしてやれば良いんだろ?」
↓
「patch完全に理解したわw」
と思ったんですが、何回直しても同じエラーになります。
小一時間ほどぐぐりながら悩んでたんですが、この場合修正するべきなのはこれのひとつ前のhunkでしたorz
どういうことかと言うと、ひとつ前のhunkで差分の一部を削除していたのに行数を直していなかったため、
そちらを処理していたpatchコマンド君は
「指定された行数まで読んどらんのに次のhunkのヘッダ行(?)が出てきたがな。エラーメッセージ出しとこか」
この行なんか変やで> @@ -456,78 +901,23 @@
という挙動をしてくれているようです*1
紛らわしいわwww
llvmが(というかclangがというべきか?)出てきて、ようやくgccの意味不明なエラーメッセージが罪であるということが世間に広く認識されたわけですが*2GNUのこの辺のソフトも誰か1から書き直してくれないかなぁ?