Annotation of freem/contrib/%ursea.m, revision 1.1
1.1 ! snw 1: %ursea ; FreeM Routine Search - version 0.5.0.1
! 2: ; Jon Diamond - 1993-03-31
! 3: ;
! 4: n error,device,search,replace,cnt
! 5: s error=$$init^%uxxxx,device=""
! 6: ;
! 7: s error=$$writen^%uxxxx($t(+1)_" "_$$^%uxdat)
! 8: k @%uwork
! 9: %rsel s error=$$rsel^%urxxx(%uwork) q:error<0
! 10: i $o(@%uwork@(""))="" s error=$$writep^%uxxxx("No Routines selected") q
! 11: ;
! 12: %device i device'="" s error=$$close^%ufxxx(device) i error<0 g %exit1
! 13: s error=$$select^%ufxxx(.device)
! 14: i error<0 g %rsel
! 15: ;
! 16: k search,replace
! 17: s cnt=0
! 18: %search s error=$$readn^%uxxxx("Search for ",.search)
! 19: i error<0 g %device
! 20: s error=$$readn^%uxxxx("Replace with ",.replace)
! 21: i error<0 g %search
! 22: ;
! 23: s cnt=cnt+1,search(cnt)=search i replace'="" s replace(cnt)=replace
! 24: g %search
! 25: ;
! 26: %go s error=$$go(device,%uwork,.search,.replace) i error<0 s a=$$error^%uxxxx(error) g %exit
! 27: s error=$$writep^%uxxxx("Routines modified - "_+error)
! 28: s error=$$writep^%uxxxx("Finished")
! 29: ;
! 30: %exit s error=$$close^%ufxxx(device) i error<0 ; ??? if error
! 31: %exit1 k @%uwork
! 32: q
! 33: ;
! 34: ; Executable entry point
! 35: ; Needs modifying to allow a selection mask (major changes!)
! 36: go(device,select,search,replace)
! 37: n a,c,cnt,error,f,mod,new,old,r,s
! 38: s error=$$write^%ufxxx(device,"Routine Search/Replace "_$$^%uxdat()) q:error<0
! 39: f r=1:1 q:'$d(search(r)) s error=$$write^%ufxxx(device,search(r)) q:error<0 s error=$$write^%ufxxx(device," >>> "_$g(replace(r))) q:error<0
! 40: s a=99999,cnt=0
! 41: f s a=$o(@select@(a)) q:a="" d q:error<0
! 42: . s error=$$write^%ufxxx(device,a) q:error<0
! 43: . s mod=0 k new
! 44: . f c=1:1 s (new,old)=$t(@("+"_c_"^"_a)) q:new="" d q:error<0
! 45: . . f r=1:1 q:'$d(search(r)) s s=search(r) i new[s d
! 46: . . . s f=$f(new,s),new=$e(new,1,f-$l(s)-1)_$g(replace(r))_$e(new,f,$l(new))
! 47: . . s new(c)=new
! 48: . . i new=old q
! 49: . . s error=$$write^%ufxxx(device,c_"^"_a_$j("",30-$l(c)-$l(a))_" "_old) q:error<0
! 50: . . i $o(replace("")) s error=$$write^%ufxxx(device,$j("",31)_new) q:error<0
! 51: . . s error=$$write^%ufxxx(device,"")
! 52: . . s mod=1,new(c)=new
! 53: . q:error<0
! 54: . i mod d
! 55: . . s error=$$save^%urxxx(a,.new)
! 56: . . i error<0 s error=$$write^%uxxxx(device,"*** Error in saving routine ***") q
! 57: . . s error=$$write^%ufxxx(device,""),cnt=cnt+1 q:error<0
! 58: i error<0 q error
! 59: q cnt_",go^%ursea"
! 60: ;
! 61: ;
! 62: ; Alternative entry point with Open/Close included
! 63: search(device,select,search,replace)
! 64: n error
! 65: s error=$$open^%ufxxx(device) q:error<0
! 66: s error=$$go(device,select,.search,.replace) q:error<0
! 67: s error=$$close^%ufxxx(device) q:error<0
! 68: q "0,search^%ursea"
! 69:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>