Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   La Taberna (https://www.clubdelphi.com/foros/forumdisplay.php?f=40)
-   -   Parches (https://www.clubdelphi.com/foros/showthread.php?t=77847)

roman 29-02-2012 17:59:24

Parches
 
Hola,

Tengo una determinada biblioteca escrita en C que debemos compilar para Solaris. La biblioteca es muy antigua y ya no compila con las nuevas versiones.

En la red encontré algo así como un parche (y digo "algo así" porque además de no entender muy bien de qué va la cosa, está en ruso). El parche es este:

Código:

--- ./templates.orig/tmpl_lib.c 2011-06-17 00:39:42.312591830 +0400
+++ ./templates/tmpl_lib.c      2011-06-17 00:40:32.342594981 +0400
@@ -214,7 +214,7 @@
        buf_alloc = TMPL_MAX_TAG_LEN+4;
        buf = (uchar*)emalloc(buf_alloc);
        /* Searching algorythm will require larger buffer */
-      ZV(tmpl->original) = (char*)erealloc(ZV(tmpl->original),
+      Z_STRVAL_P(tmpl->original) = (char*)erealloc(ZV(tmpl->original),
                ZL(tmpl->original) + MAX(
                        ZL(tmpl->tag_left), MAX(
                                ZL(tmpl->tag_right), MAX(
@@ -697,7 +697,7 @@
                                        /* Make a recursive call */
                                        if(buf_alloc <= (unsigned)(ZL(path)+1+ZL(tag->name)+1)) {
                                                while(buf_alloc <= (unsigned)(ZL(path)+1+ZL(tag->name)+1)) buf_alloc <<= 1;
-                                              ZV(new_path) = (char*)erealloc(ZV(new_path), buf_alloc);
+                                              Z_STRVAL_P(new_path) = (char*)erealloc(ZV(new_path), buf_alloc);
                                        }
                                        sprintf(ZV(new_path), (1 == ZL(path) && '/' == ZV(path)[0]) ? "%s%s" : "%s/%s", ZV(path), ZV(tag->name));
                                        ZL(new_path) = ZL(path) + ZL(tag->name) + ((1 == ZL(path) && '/' == ZV(path)[0]) ? 0 : 1);
@@ -877,7 +877,10 @@
                        } else p = key;
                        ZVAL_STRINGL(new_value, p, (TMPL_LONG == mod) ? key_len-1 : key_len-1-(p-key), 1);
                        if((TMPL_TAG | TMPL_CONTEXT) == mask && TMPL_CONTEXT == tag->typ) {
-                              ZV(new_value) = (char*)erealloc(ZV(new_value), ZL(new_value)+2);
+                              Z_STRVAL_P(new_value) = (char*)erealloc(ZV(new_value), ZL(new_value)+2);
+
+
+
                                memcpy(ZV(new_value)+ZL(new_value), "/", 2);
                                ZL(new_value) += 1;
                        }

Donde quiero suponer que la líneas precedidas por un signo - hay que quitarlas y agregar las precedidas por un signo +.

La pregunta es: ¿hay que hacer esto a mano en un editor de texto o hay alguna herramienta para aplicar el parche al código?

// Gracias

Julián 29-02-2012 18:39:50

Lo que tienes es un patch, archivo generado con el comando diff, que puedes aplicar con el comando patch.



Un saludo!

roman 29-02-2012 18:49:37

Gracias Julián. Ahora me estaba peleando con eso y me marcaba algunos errores. Pero la administradora ya hizo los cambios a pie (eran pocos) y ya pudo compilar.

// Saludos


La franja horaria es GMT +2. Ahora son las 00:47:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi