Tema: Parches
Ver Mensaje Individual
  #1  
Antiguo 29-02-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita