Patches für Programme
-
kingruedi schrieb:
das GNU diff Tool ist glaube ich eh nicht für Binarys geeignet.
Stimmt, dafür verwendet man xdelta.

-
@SirLant
nein, du stößt nicht auf das Problem, du scheinst mich nur nicht zu verstehen
-
Dann erklärs mir doch noch einmal

-
das ist ja nur eine Frage der Syntax deines diff-Formats, du kannst ja die Informationen so abspeichern
Byte=10 Insert=FF AA
dann weisst du ja, dass du einfach nur zwei bytes an der Position 10 einfügen sollst. Replace nimmst du dann wenn du ersetzen willst usw.
-
Habe jetzt lange darüber nach gedacht und glaube ich habe dich jetzt verstanden.
Bei meinem Beispiel würde das File dann so aussehen
Version1
4D 3F 43 12 FF 34 56 67 9A 1BVersion2
4D 3F 43 13 5B 7C 8A FF 34 56 67 9A 1BDas Patchfile
Byte = 4; Insert = 13 5B 7C 8A FF 34 56;
Also das Programm stoppt dort wo der erste Unterschied ist und liest anschließend
Byte für Byte das sich unterscheidet in das Patchfile, bis die Bytes wieder
gleich sind.Meinst du das so?
-
ich würde bei Insert einfach nur einfügen und am Ende einfach mit der normalen Datei fortfahren. Replace nimmt man dann fürs ersetzen oder so
-
Aber wie unterscheide ich wann ich einsetzen oder ersetzen soll, beim erstellen der Datei (beim patchen selber ist ja klar, da stehts dann in der datei
)
-
hmm, du könntest suchen ob das Muster was folgt innerhalb der nächsten n Bytes nocheinmal vorkommt

-
SirLant schrieb:
Aber wie unterscheide ich wann ich einsetzen oder ersetzen soll
Mach doch 2 Läufe.
Beim 1. Lauf wird nur eingefügt bzw. gelöscht.
Beim 2. Lauf wird dann aus eingefügt und danach gelöscht ein ersetzen.
Also quasi eine Optimierung
-
Hi
du solltest auch die 3. möglichkeit nicht vergessen. etwas entfernen. könnte ja mal vorkommen, das die datei kleiner wird.
somit gibts 3 möglichkeiten
1. einfügen
2. ersetzen
3. entfernenwobei 2 sich ja erste entfernen und einfügen zusammensetzen lässt.
wenn du erste einfügst oder entfernst musst du die adressen des 2. durchlaufen entsprechend mitziehen(verschieben). weiter würd ich die dateien von hinten nach vorhe durcharbeiten. da dadurch keine änderungen an den verbleibenden Adressen entstehen.
gruss Termite