Hallo,
ich habe diff/patch(aus der UNIX Welt her bekannt) nachprogrammiert. Nun habe ich folgendes Problem, welches ich nicht gerade elegant(fehlerhaft) gelöst habe:
Die Ursprungsdatei enthält Text welches die Zeilen von einander trennt, also \n,\r,\r\n(also newline, systemspez).
Nun muss mein patch Programm diese Sequenz erkennen, um die Datei wieder richtig zusammenzusetzen. Mittels der Ursprungsdatei und der patch Datei setzt es die gepatchte Datei wieder zusammen.
diff ursprungsdatei geänderteDatei >>> patch
patch ursprungsdatei patch >>> geänderteDatei
Ausgelesen wurde die Datei zeilenweise(readline()).
Mein Programm verfährt jetzt so, dass es die ersten paar Zeilen liest um diese Sequenz zu ermitteln.
Dummerweise entstehen dadurch gleich die nächsten Probleme: Was passiert wenn am Ende der Ursprungsdatei nur eine Zeile hinzugefügt wurde ohne Zeilenwechsel? Ein automatisches hinzufügen der Zeilenwechselsequenz(gibts dafür auch einen dt. Begriff?) ist somit nicht immer korrekt.
Hat jemand Ideen, wie das besser gelöst werden könnte?
ich habe diff/patch(aus der UNIX Welt her bekannt) nachprogrammiert. Nun habe ich folgendes Problem, welches ich nicht gerade elegant(fehlerhaft) gelöst habe:
Die Ursprungsdatei enthält Text welches die Zeilen von einander trennt, also \n,\r,\r\n(also newline, systemspez).
Nun muss mein patch Programm diese Sequenz erkennen, um die Datei wieder richtig zusammenzusetzen. Mittels der Ursprungsdatei und der patch Datei setzt es die gepatchte Datei wieder zusammen.
diff ursprungsdatei geänderteDatei >>> patch
patch ursprungsdatei patch >>> geänderteDatei
Ausgelesen wurde die Datei zeilenweise(readline()).
Mein Programm verfährt jetzt so, dass es die ersten paar Zeilen liest um diese Sequenz zu ermitteln.
Dummerweise entstehen dadurch gleich die nächsten Probleme: Was passiert wenn am Ende der Ursprungsdatei nur eine Zeile hinzugefügt wurde ohne Zeilenwechsel? Ein automatisches hinzufügen der Zeilenwechselsequenz(gibts dafür auch einen dt. Begriff?) ist somit nicht immer korrekt.
Hat jemand Ideen, wie das besser gelöst werden könnte?