alias endread {
if (!$isid) return
if $0 > 2 {
if w isin $2 || r isin $2 { var %m = $v1, %l = 1, %s = $iif($4 isnum 2-,$4,1) }
else return
}
elseif $2 isnum 1- { var %m = l, %l = $2 }
else return
.fopen e $qt($1)
if ($ferr) return
var %p = $file($1) - 920, %i = 0
while %p > -920 {
if %p > 0 {
.fseek e %p
.fseek -n e
}
else .fseek e 0
var %d = $calc(919 - $fopen(e).pos + %p), %p = $fopen(e).pos - 920
if !%i {
var %n = $fread(e,$calc(%d + 1),&a)
if $bvar(&a,%n) == 10 { bset &a %n 13 }
}
else noop $fread(e,%d,&a)
var %t = $bvar(&a,1-).text, %n = $regex(%t,/\r?\n/g) + 1
inc %i %n
if %m == l {
if %l <= %i {
.fclose e $regex(e,%t,/(?<=^|\n)(.*?)(?=$|\r?\n)/g)
return $remove($regml(e,$calc(%i - %l + 1)),$cr)
}
}
elseif %s <= %i {
var %j = $regex(e,%t,/(?<=^|\n)(.*?)(?=$|\r?\n)/g)
if (%m == w) var %c = $!wildtok($regml(e,%j),$3,0,0)
else var %c = $!regex($regml(e,%j),$3)
while %j {
if $calc(%i - %j + 1) >= %s && $(%c,2) {
.fclose e
return $remove($regml(e,%j),$cr)
}
dec %j
}
}
}
.fclose e
}