home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
EFFO
/
forum16.lzh
/
SOFTWARE
/
C
/
HEXED
/
hexed.doc
< prev
next >
Wrap
Text File
|
1991-03-25
|
3KB
|
75 lines
'hexed' dient zum Editieren von Dateien mit binaeren Daten.
In der Regel arbeiten die mir bekannten Hex-Editoren direkt auf
Disk-Sektoren oder nur mit Modulen (also nicht beliebigen binaeren
Dateien); allen gemeinsam ist, dass sie nur "patchen" koennen, also
keine Daten einfuegen oder loeschen koennen. Diesem Manko soll
'hexed' abhelfen.
Grundidee von 'hexed' ist es, fuer die Editierarbeit einen beliebigen
Texteditor zu benutzen, um nicht die gesamte Bildschirmsteuerung und
Datenverwaltung noch einmal neu zu erfinden. Dazu besteht 'hexed' im
wesentlichen aus drei Teilen:
- Erzeugung der Hexdump-Datei(en) aus den Binaerdatei(en),
- Editieren der Hexdump-Datei(en) mittels eines Texteditors unter
Beachtung gewisser Regeln fuer die Hexdump-Zeilen,
- Ruecktransformation der Hexdump-Datei(en).
Nachteil dieser Vorgehensweise ist sicher, dass z.B. beim Aendern der
Hex-Repraesentation eines Bytes sich die ASCII-Darstellung nicht mit-
aendert. Weiterhin muss ein bestimmtes Format der Dump-Zeilen eingehalten
werden, damit die Ruecktransformation einwandfrei ablaeuft. Auch ist
diese Vorgehensweise nicht sehr schnell, da erst der Dump generiert
und spaeter wieder rueckuebersetzt werden muss; zudem wird jede Datei
als Dump circa um den Faktor 5 groesser.
Von Vorteil ist jedoch, dass man mit dem gewohnten Texteditor arbeiten
kann und sich nicht wieder neue Kommandos merken muss.
'hexed' wird mit mindestens einem Filenamen aufgerufen. Es wird dann die
Dump-Datei mit dem gleichen Filenamen plus Suffix ".hd" in einem
Temp-Directory erzeugt. Der Default fuer dieses Directory ist "/r0", ist
aber mit der Option "-t=<dir>" aenderbar. Anschliessend wird der Editor
(per Default "vi" (siehe Forum 13) ohne Optionen) mit allen ".hd"-Datei(en)
aufgerufen. Ein anderer Editor kann mit der Option "-e=<editor>" gewaehlt
werden, evtl. gewuenschte Editoroptionen mit "-eo=<opts>".
Nach dem Beenden des Editors werden alle ".hd"-Dateien rueckuebersetzt.
Wird dabei ein fehlerhaftes Format in der Dumpzeile erkannt, wird der
Editor mit der entsprechenden Dump-Datei und -sofern vorhanden- mit einer
"goto line"-Option erneut aufgerufen, um Korrekturen zu ermoeglichen.
Diese "goto line"-Option ist (fuer den "vi") per Default "+", kann aber
mit der "-eg=<goto-opt>" modifiziert werden.
Alle Defaults sind im Sourcecode aenderbar in den #defines:
TEMPDIR_DEFAULT, EDITOR_DEFAULT, EDOPTS_DEFAULT und EDGOTO_DEFAULT .
Der Dumpteil von 'hexed' erzeugt einen Hexdump und rechts daneben die
ASCII-Repraesentation der Daten, sofern moeglich.
Zum Rueckuebersetzen sind zwei Formate moeglich, die beim Editieren
beachtet werden muessen:
1) Dumpzeile:
- optionale Hexnummer (i.a. Bytecount), mindestens aber ein Blank,
- Hex-Bytes (jeweils aus einem oder zwei Hexdigits bestehend),
getrennt durch Blank(s),
- Semikolon, gefolgt von beliebigem Text als Kommentar (i.a. ASCII-
Darstellung).
2) ASCII-Zeile:
- die zwei Zeichen ".a" als erste Zeichen der Zeile,
- beliebige Anzahl von Blank(s) (auch 0 Blanks),
- beliebiges Zeichen != Blank als Delimiter,
- beliebiger ASCII-Text (ohne Delimiter) fuer die Uebernahme
in die Binaerdatei,
- optional Delimiter und Kommentartext.
Beispiele:
0070 12 34 56 ; affe --> 12 34 56
12 34 56 7 89 0a --> 12 34 56 07 89 0a
.a?affe?emil --> 61 66 66 65
.a /123 --> 31 32 33