This seems to be fixed with newer version of libxdiff (which is used by xdiff extension).
According to library changelog:
--------------------------------------
* Sun, Mar 26 2006 - Davide Libenzi
Fixed the missing end of line problem for text diff and patch.
--------------------------------------
xdiff 関数
目次
- xdiff_file_bdiff_size — バイナリ diff を適用して作成するファイルのサイズを読み込む
- xdiff_file_bdiff — 2 つのファイルのバイナリ diff を作成する
- xdiff_file_bpatch — ファイルにバイナリ diff 形式のパッチを適用する
- xdiff_file_diff_binary — xiff_file_bdiff のエイリアス
- xdiff_file_diff — 2 つのファイルの unified diff を作成する
- xdiff_file_merge3 — 3 つのファイルをひとつに統合する
- xdiff_file_patch_binary — xdiff_file_bpatch のエイリアス
- xdiff_file_patch — ファイルに unified diff 形式のパッチを適用する
- xdiff_file_rabdiff — 2 つのファイルのバイナリ diff を、Rabin の polynomial fingerprinting アルゴリズムで作成する
- xdiff_string_bdiff_size — バイナリ diff を適用して作成するファイルのサイズを読み込む
- xdiff_string_bdiff — 2 つの文字列のバイナリ diff を作成する
- xdiff_string_bpatch — 文字列にバイナリ diff 形式のパッチを適用する
- xdiff_string_diff_binary — xdiff_string_bdiff のエイリアス
- xdiff_string_diff — 2 つの文字列の unified diff を作成する
- xdiff_string_merge3 — 3 つの文字列をひとつに統合する
- xdiff_string_patch_binary — xdiff_string_bpatch のエイリアス
- xdiff_string_patch — 文字列に unified diff 形式のパッチを適用する
- xdiff_string_rabdiff — 2 つの文字列のバイナリ diff を、Rabin の polynomial fingerprinting アルゴリズムで作成する
xdiff 関数
mg
01-Jul-2008 07:00
01-Jul-2008 07:00
amir.laher
05-Apr-2005 12:09
05-Apr-2005 12:09
the xdiff functions require your initial string to end with a \n character.
When you use xdiff_string_diff, the initial string must either be zero-length or end with \n
eg. $patch= xdiff_string_diff($string,$string2);
if not, the patch will return an empty string.
xdiff_string_patch($string,$patch);
This will not normally affect xdiff_file_diff, but it's annoying nevertheless. To prevent this unexpected effect, I append a \n to the string before applying the initial diff, as follows.
if (!ereg("\n$",$string)) $string.="\n";
