AIX 시스템의 잘못된 패치 오류

AIX 시스템의 잘못된 패치 오류

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

관련 정보