summaryrefslogtreecommitdiff
path: root/sys/src/cmd/sam/sam.c
diff options
context:
space:
mode:
authorumbraticus@prosimetrum.com <umbraticus@prosimetrum.com>2022-04-16 06:53:35 +0000
committerqwx <qwx@sciops.net>2022-04-16 06:53:35 +0000
commitd606d83ed85953a761f7e08ff3f18459d7b29c34 (patch)
treecefcda98f85b3286e260fb4a732b359f9d386420 /sys/src/cmd/sam/sam.c
parent78953b41e400ecc9854c0d66acc48380f1482d7c (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.c24
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");
}