xtern char workbuffer[] ; extern struct textline *textpointer() ; struct textline *tp ; status = 0 ; /* assume the search will fail */ oldcurline = *curline ; /* save the old current line # */ offset = chposition+1 ; if ((pos=finstr(&workbuffer[offset],worklength-offset,srpat,srlen))==0) then { offset = 0 ; scunloadline() ; while ( ++(*curline) < stopline ) { tp = textpointer( *curline ) ; if (testcc() || read_only || (pos=finstr(tp->c,tp->len,srpat,srlen))) then break ; } } cantimerast() ; if ( pos == 0 ) then { *curline = oldcurline ; scloadline() ; scwarning( w_nopat ) ; status = 0 ; } else { if ( *curline > *lochigh ) then cnpage( *curline ) ; if ( *curline != oldcurline ) then scloadline() ; chposition = pos + offset - 1 ; fixposition() ; scmove() ; status = chposition+1 ; } return( status ) ; } xxflast(srpat,srlen) char *srpat ; int srlen ; { register int status ; extern int working() ; settimerast(2,working) ; status = flast(srpat,srlen) ; cantimerast() ; return( status ) ; } flast(srpat,srlen) char *srpat ; int srlen ; { register int i,size ; register char *cp ; int oldcurline,pos,status,temp ; extern int *curline,chposition,curposition,*loclow,*maxline,worklength ; extern char workbuffer[] ; status = 0 ; /* assume the search will fail */ oldcurline = *curline ; /* save the old current line # */ size = chposition ; scunloadline() ; scloadline() ; cp = workbuffer ; while ( *curline > 0 ) { if ((pos=finstr(cp,size,srpat,srlen)) != 0 || testcc()) break ; if ( --(*curline) > 0 ) then scloadline() ; size = worklength ; } if ( pos == 0 ) then { *curline = oldcurline ; scloadline() ; scwarning( w_nopat ) ; status = 0 ; } else { if ( *curline < *loclow ) then cnpage( *curline ) ; scloadline() ; temp = size ; size = 0 ; cp = &workbuffer[temp] ; for ( i=temp; i > 0; i-- ) if ((pos=finstr(--cp,++size,srpat,srlen)) != 0) then break ; if ( pos != 0 ) then { chposition = i - 1 ; fixposition() ; scmove() ; status = chposition ; } } return( status ) ; } /* REPNEXT replace next occurance of pattern */ repnext(old,new,stopline) struct patline *old,*new ; int stopline ; { extern int chposition,curposition,read_only ; register char *cp,*np ; register int i ; int oldchposition,pos ; char ch,savebuffer[64] ; if ( ( pos = fnext( old->c,old->len,stopline ) ) == 0 ) then return(0) ; else { if ( read_only ) then return(0) ; oldchposition = chposition ; pos-- ; cp = savebuffer ; for ( i=64; i>0; i-- ) *cp++ = 0 ; cp = savebuffer ; for ( i=old->len; i>0; i-- ) *cp++ = remchar(pos); cp = savebuffer ; np = new->c ; for ( i=new->len; i>0; i-- ) { if ( ( *np & 0300 ) == 0300 ) then ch = *cp++ ; else ch = *np++ ; svinsert(pos++,&ch,1) ; } chposition = oldchposition ; fixposition() ; scmove() ; lkill() ; partdump() ; chposition = oldchposition + new->len - 1 ; fixposition() ; scmove() ; return(1) ; } } vtdorep() { char savetext[64] ; register char *cp,*dp ; register int i ; int oldchposition,oldcurposition,oldcurline ; dp = savetext ; cp = patbuf.oldpat.c ; for (i=patbuf.oldpat.len; i>0; i--) *dp++ = *cp++ ; *dp = 0 ; if ( getoldpat(savetext) == 0 ) then return(0) ; dp = savetext ; cp = patbuf.newpat.c ; for (i=patbuf.newpat.len; i>0; i--) *dp++ = *cp++ ; *dp = 0 ; if ( getnewpat(savetext) == 0 ) then return(0) ; oldchposition = chposition ; oldcurposition = curposition ; oldcurline = *curline ; creset() ; while ( repnext(&patbuf.oldpat,&patbuf.newpat,(*lochigh)+1) ) ; scunloadline() ; chposition = oldchposition ; curposition = oldcurposition ; *curline = oldcurline ; scloadline() ; scmove() ; return(1) ; } static not_fnext(srpat,srlen,stopline) char *srpat ; int srlen,stopSCLOOKC [.050036]SCLOOK.C [.050036]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddfline ; { int status ; extern int *curline, *lochigh ; extern int read_only ; extern struct textline *textpointer() ; struct textline *tp ; status = 0 ; /* assume the search will fail */ scunloadline() ; while ( ++(*curline) < stopline ) { tp = textpointer( *curline ) ; if (testcc() || read_only || finstr(tp->c,tp->len,srpat,srlen) == 0 ) then break ; } ; creset() ; cantimerast() ; if ( *curline > *lochigh ) then cnpage( *curline ) ; scloadline() ; scmove() ; return( 1 ) ; }