summaryrefslogtreecommitdiff
path: root/sys/src/cmd/vt/main.c
diff options
context:
space:
mode:
authorSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2022-12-14 20:52:04 +0000
committerSigrid Solveig Haflínudóttir <sigrid@ftrv.se>2022-12-14 20:52:04 +0000
commit73e115aab038880a68c9f73b5c49d8fa12d0e5e2 (patch)
tree7fdedd441243591da9adf1fc2106200ae0f66e6b /sys/src/cmd/vt/main.c
parent827fdabbf912fa94b6472cf21cbdc5c82306af01 (diff)
vt: add OSC 7 support for plumbing of remote files without mount/bind magic
Diffstat (limited to 'sys/src/cmd/vt/main.c')
-rw-r--r--sys/src/cmd/vt/main.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/sys/src/cmd/vt/main.c b/sys/src/cmd/vt/main.c
index cdf2e2586..764b24591 100644
--- a/sys/src/cmd/vt/main.c
+++ b/sys/src/cmd/vt/main.c
@@ -1007,13 +1007,30 @@ snarfsel(void)
void
plumbsel(void)
{
- char *s, wdir[1024];
+ char *s, *e, wdir[WDIR];
+ Plumbmsg msg;
int plumb;
s = selection();
if(s == nil || *s == 0)
return;
- if(getwd(wdir, sizeof wdir) == nil){
+ memset(&msg, 0, sizeof(msg));
+ msg.src = "vt";
+ msg.type = "text";
+ msg.ndata = strlen(s);
+ msg.data = s;
+ msg.wdir = wdir;
+ if(*osc7cwd != 0){
+ strcpy(wdir, osc7cwd);
+ /* absolute path? adjust wdir and path */
+ if(*s == '/'){
+ if((e = strchr(wdir+3, '/')) != nil){
+ *e = 0;
+ msg.data++;
+ msg.ndata--;
+ }
+ }
+ }else if(getwd(wdir, sizeof wdir) == nil){
free(s);
return;
}
@@ -1021,7 +1038,7 @@ plumbsel(void)
free(s);
return;
}
- plumbsendtext(plumb, "vt", nil, wdir, s);
+ plumbsend(plumb, &msg);
close(plumb);
free(s);
}