FreeBSD "패치"가 널 바이트를 허용하도록 하려면 어떻게 해야 합니까?

FreeBSD "패치"가 널 바이트를 허용하도록 하려면 어떻게 해야 합니까?

패치의 마지막 줄은 FreeBSD 10.2에서는 실패하지만 GNU에서는 작동합니다.

#!/bin/sh
echo a > f1
printf '\0' >> f1
echo c >> f1
cp f1 f2
echo d >> f2
diff -au f1 f2 > diff
patch < diff

FreeBSD는 이것을 할 수 없나요? 매뉴얼 페이지에는 널 바이트가 언급되어 있지 않습니다.

답변1

patch텍스트 파일용으로 특별히 설계되었습니다. 보세요xxd, 바이너리를 패치할 수 있습니다. FreeBSD에서도 작동합니다.

답변2

Null 바이트는 텍스트 파일에서 사용되지 않으므로 이는 드문 제한 사항이 아닙니다. 물론 GNU 패치용 FreeBSD 포트도 있습니다.

맥락을 보려면 FreeBSD의 매뉴얼 페이지를 살펴보십시오.

GNU 패치와 FreeBSD 패치는 모두 Larry Wall의 패치 프로그램에서 시작되었지만 전자가 더 광범위하게 변경되었습니다. 특히, GNU 패치는 GNU diff에 의해 출력될 수 있는 내장된 널을 처리하도록 확장되었습니다. 아직도, 심지어저것오래전에 끝났어요(1992년경~에 따르면변경 로그).

어떤 이유로든 FreeBSD 개발자는 이 변경 사항을 병합하지 않았습니다. FreeBSD에서 기능이 필요한 경우 GNU 패치 포트(또는 미리 컴파일된 패키지)를 사용할 수 있습니다. 바라보다신선한 항구요약을 제공합니다.

관련 정보