home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
epm603b.zip
/
EPMSMP.ZIP
/
XC.E
< prev
Wrap
Text File
|
1994-11-10
|
2KB
|
54 lines
; XC.E (for heXChange), by Larry Margolis
; Lets you change occurrences of one string to another.
; Both strings are specified as strings of hex digits.
; Optional third parameter is the Change command options.
; E.g., xc 12df 34bc *
; The above is equivalent to XEDIT's
; set hex on
; c /x'12df'/x'34bc'/ *
const
hexdigits = '0123456789ABCDEF'
hexrange = \1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30 ||
\31\32\33\34\35\36\37\38\39\40\41\42\43\44\45\46\47\48\49\50 ||
\51\52\53\54\55\56\57\58\59\60\61\62\63\64\65\66\67\68\69\70 ||
\71\72\73\74\75\76\77\78\79\80\81\82\83\84\85\86\87\88\89\90 ||
\91\92\93\94\95\96\97\98\99\100\101\102\103\104\105\106\107\108\109\110 ||
\111\112\113\114\115\116\117\118\119\120\121\122\123\124\125\126\127\128\129\130 ||
\131\132\133\134\135\136\137\138\139\140\141\142\143\144\145\146\147\148\149\150 ||
\151\152\153\154\155\156\157\158\159\160\161\162\163\164\165\166\167\168\169\170 ||
\171\172\173\174\175\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190 ||
\191\192\193\194\195\196\197\198\199\200\101\102\103\104\105\106\107\108\209\210 ||
\211\212\213\214\215\216\217\218\219\220\221\222\223\224\225\226\227\228\229\230 ||
\231\232\233\234\235\236\237\238\239\240\241\242\243\244\245\246\247\248\249\250 ||
\251\252\253\254\255
defmain
'xc' arg(1)
defc xc -- heXChange
parse value upcase(arg(1)) with xfrom xto change_opts
if length(xfrom) // 2 then
xfrom = '0'xfrom
endif
if length(xto) // 2 then
xto = '0'xto
endif
if verify(xfrom||xto, hexdigits) then
sayerror 'Invalid hex string.'
return
endif
out_str = ''
hexstr = xfrom
do i=1 to 2
from_str = out_str
out_str = ''
do j=1 to length(hexstr) by 2
out_str = out_str || chr(16*(pos(substr(hexstr, j, 1), hexdigits)-1) + pos(substr(hexstr, j+1, 1), hexdigits)-1)
enddo
hexstr = xto
enddo
to_str = out_str
delim = substr(HEXRANGE, verify(HEXRANGE, from_str || to_str), 1)
'c' delim || from_str || delim || to_str || delim || change_opts