(PECL xdiff >= 0.2.0)
xdiff_file_patch — Patch a file with an unified diff
$file
,
$patch
,
$dest
,
$flags
= DIFF_PATCH_NORMAL
Patches a
file
with a
patch
and stores the result in a file.
patch
has to be an unified diff created by
xdiff_file_diff()
/
xdiff_string_diff()
function.
An optional
flags
parameter specifies mode of operation.
file
The original file.
patch
The unified patch file. It has to be created using xdiff_string_diff() , xdiff_file_diff() functions or compatible tools.
dest
Path of the resulting file.
flags
Can be either
XDIFF_PATCH_NORMAL
(default mode,
normal patch) or
XDIFF_PATCH_REVERSE
(reversed
patch).
Starting from versionen 1.5.0, you can also use binary OR to enable
XDIFF_PATCH_IGNORESPACE
flag.
Returns
false
if an internal error happened, string with rejected
chuncs if patch couldn't be applied or
true
if patch has been successfully applied.
Example #1 xdiff_file_patch() example
The following code applies unified diff to a file.
<?php
$old_version
=
'my_script-1.0.php'
;
$patch
=
'my_script.patch'
;
$errors
=
xdiff_file_patch
(
$old_version
,
$patch
,
'my_script-1.1.php'
);
if (
is_string
(
$errors
)) {
echo
"Rejects:\n"
;
echo
$errors
;
}
?>
Example #2 Patch reversing example
The following code reverses a patch.
<?php
$new_version
=
'my_script-1.1.php'
;
$patch
=
'my_script.patch'
;
$errors
=
xdiff_file_patch
(
$new_version
,
$patch
,
'my_script-1.0.php'
,
XDIFF_PATCH_REVERSE
);
if (
is_string
(
$errors
)) {
echo
"Rejects:\n"
;
echo
$errors
;
}
?>