diff options
author | umbraticus@prosimetrum.com <umbraticus@prosimetrum.com> | 2022-04-16 06:53:35 +0000 |
---|---|---|
committer | qwx <qwx@sciops.net> | 2022-04-16 06:53:35 +0000 |
commit | d606d83ed85953a761f7e08ff3f18459d7b29c34 (patch) | |
tree | cefcda98f85b3286e260fb4a732b359f9d386420 /sys/src/cmd/sam/sam.c | |
parent | 78953b41e400ecc9854c0d66acc48380f1482d7c (diff) |
make = command's output plumbable
This patch makes sam's = cmd output what seems to me a more
useful (plumbable) format: /full/path/to/file:addr , where
addr is line(s) under = and rune(s) under =#.
Diffstat (limited to 'sys/src/cmd/sam/sam.c')
-rw-r--r-- | sys/src/cmd/sam/sam.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/sys/src/cmd/sam/sam.c b/sys/src/cmd/sam/sam.c index d1b53c2ff..14370bdf4 100644 --- a/sys/src/cmd/sam/sam.c +++ b/sys/src/cmd/sam/sam.c @@ -688,11 +688,27 @@ nlcount(File *f, Posn p0, Posn p1) } void -printposn(File *f, int charsonly) +printposn(File *f, int chars) { Posn l1, l2; + char *s; - if(!charsonly){ + if(f->name.s[0]){ + if(f->name.s[0]!='/'){ + getcurwd(); + s = Strtoc(&curwd); + dprint("%s", s); + free(s); + } + s = Strtoc(&f->name); + dprint("%s:", s); + free(s); + } + if(chars){ + dprint("#%lud", addr.r.p1); + if(addr.r.p2 != addr.r.p1) + dprint(",#%lud", addr.r.p2); + }else{ l1 = 1+nlcount(f, (Posn)0, addr.r.p1); l2 = l1+nlcount(f, addr.r.p1, addr.r.p2); /* check if addr ends with '\n' */ @@ -701,11 +717,7 @@ printposn(File *f, int charsonly) dprint("%lud", l1); if(l2 != l1) dprint(",%lud", l2); - dprint("; "); } - dprint("#%lud", addr.r.p1); - if(addr.r.p2 != addr.r.p1) - dprint(",#%lud", addr.r.p2); dprint("\n"); } |