Este es un ejemplo de lo que NO se debe hacer al diseñar un software.
[Sun Dec 20 14:37:42 -0800 -- alvarezp@octavio:~/patch-test] $ ls -l total 24 -rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.bak -rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.c -rw-r--r-- 1 alvarezp alvarezp 7232 Dec 20 14:37 slpcall.c.2 [Sun Dec 20 14:37:43 -0800 -- alvarezp@octavio:~/patch-test] $ diff -u slpcall.c slpcall.c.2 > p [Sun Dec 20 14:37:57 -0800 -- alvarezp@octavio:~/patch-test] $ cat p --- slpcall.c 2009-12-20 14:37:36.000000000 -0800 +++ slpcall.c.2 2009-12-20 14:37:36.000000000 -0800 @@ -66,6 +66,11 @@ slpcall->slplink = slplink; + slpcall->wait_for_socket = FALSE; + slpcall->xfer = NULL; + slpcall->dc = NULL; + slpcall->branch = NULL; + msn_slplink_add_slpcall(slplink, slpcall); slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall); [Sun Dec 20 14:38:00 -0800 -- alvarezp@octavio:~/patch-test] $ diff -u slpcall.bak slpcall.c # .bak is a backup of original [Sun Dec 20 14:38:19 -0800 -- alvarezp@octavio:~/patch-test] $ patch < p patching file slpcall.c
Hasta aquí, todo bien.
[Sun Dec 20 14:38:53 -0800 -- alvarezp@octavio:~/patch-test] $ cp slpcall.bak slpcall.c [Sun Dec 20 14:39:02 -0800 -- alvarezp@octavio:~/patch-test] $ mkdir x [Sun Dec 20 14:39:04 -0800 -- alvarezp@octavio:~/patch-test] $ mv slpcall* x/ [Sun Dec 20 14:39:06 -0800 -- alvarezp@octavio:~/patch-test] $ ls -l total 8 -rw-r--r-- 1 alvarezp alvarezp 410 Dec 20 14:37 p drwxr-xr-x 2 alvarezp alvarezp 4096 Dec 20 14:39 x [Sun Dec 20 14:39:08 -0800 -- alvarezp@octavio:~/patch-test] $ diff -u x/slpcall.c x/slpcall.c.2 > px [Sun Dec 20 14:39:20 -0800 -- alvarezp@octavio:~/patch-test] $ cat px --- x/slpcall.c 2009-12-20 14:39:02.000000000 -0800 +++ x/slpcall.c.2 2009-12-20 14:37:36.000000000 -0800 @@ -66,6 +66,11 @@ slpcall->slplink = slplink; + slpcall->wait_for_socket = FALSE; + slpcall->xfer = NULL; + slpcall->dc = NULL; + slpcall->branch = NULL; + msn_slplink_add_slpcall(slplink, slpcall); slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall); [Sun Dec 20 14:39:22 -0800 -- alvarezp@octavio:~/patch-test] $ patch < px patching file slpcall.c.2 Hunk #1 FAILED at 66. 1 out of 1 hunk FAILED -- saving rejects to file slpcall.c.2.rej
¿La solución?
patch -p0 < px
mmm no veo donde es el error al diseñar el software el parche para que software es? al hacer el patch
mic: el problema es en el comando «patch», donde si no le pones -p0, no te respeta los directorios especificados en el parche para aplicarlo. Desde mi punto de vista, no deberías necesitar de -p0 para aplicar el parche si los directorios corresponden exactamente.