LinuxサーバーからAIXサーバーに移植するためのSVNパッチを作成しました。
SVNで生成されたパッチは次のとおりです。
Index: cas/cm/cmsee.c
===================================================================
--- cas/cm/cmsee.c (revision 19)
+++ cas/cm/cmsee.c (working copy)
@@ -769,14 +769,23 @@
CE_CEXPFCT CE_VOID cm_seet(CE_VOID)
{
+#ifndef TRACE
+ TT_OWNTYPE *phh;
+ TT_OWNTYPE *phhe;
+#elif FINAL_CHECKS
TT_OWNTYPE *phh;
TT_OWNTYPE *phhe;
+#endif
TRACE(I,"cm_seet");
+#ifndef TRACE
phh = cm_fp->fp_hh_ptr;
phhe = phh + cm_fp->cp_hh_cnt;
-
+#elif FINAL_CHECKS
+ phh = bm_fp->fp_hh_ptr;
+ phhe = pht + bm_fp->fp_hh_cnt;
+#endif
TRACE(I, fstr("init: phh %x phhe %x\n", phh, phhe););
#ifdef FINAL_CHECKS
私がコマンドを実行すると
patch -p0 -i Modified.patch
次のエラーが発生します。
Hmm... Looks like a unified context diff to me...
The text leading up to this was:
--------------------------
|Index: cas/cm/cmsee.c
|===================================================================
|--- cas/cm/cmsee.c (revision 19)
|+++ cas/cm/cmsee.c (working copy)
--------------------------
Patching file cas/cm/cmsee.c using Plan A...
Malformed patch at line 7: CE_CEXPFCT CE_VOID cm_seet(CE_VOID)
Googleを試してStackExchangeを確認しましたが、問題を解決するソリューションはありません。誰でも私を助けることができますか?
答え1
現在経験している問題はAIX実装のバグですpatch
。特に、AIX実装の少なくとも一部のバージョンでは、patch
統合コンテキストdiffファイルがAIXユーティリティー(少なくとも一部のバージョン)によって生成された誤った形式であると予想されますdiff
。指定されたエラー形式はPOSIXと互換性がなく、コンテキスト内のすべての行と追加または削除されたすべての行の2番目の列にスペースが含まれています。
影響を受けるAIXユーティリティーのバージョンに対して一様なコンテキスト差(POSIX記述形式)を使用するには、patch
コンテキスト、追加、または削除を示す各行の2番目の列にスペースを挿入します。
Modified.patch
説明するファイルに対して、次のコマンドを使用して調整されたパッチファイルを生成できます。
( head -n 4 Modified.patch; tail -n +5 Modified.patch |
sed 's/^$/ /; s/^\([ +-]\)/\1 /;' ) > Adjusted.patch