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와 호환되지 않으며 컨텍스트의 모든 행과 추가되거나 삭제된 모든 행의 두 번째 열에 공백이 포함되어 있습니다.
영향을 받는 AIX 유틸리티 버전에 대해 균일한 컨텍스트 차이(POSIX 설명 형식)를 사용하려면 patch
컨텍스트, 추가 또는 삭제를 나타내는 각 행의 두 번째 열에 공백을 삽입하십시오.
Modified.patch
설명하는 파일 에 대해 다음 명령을 사용하여 조정된 패치 파일을 생성할 수 있습니다.
( head -n 4 Modified.patch; tail -n +5 Modified.patch |
sed 's/^$/ /; s/^\([ +-]\)/\1 /;' ) > Adjusted.patch