From 81c2c5e775d83896f25981cf4c4e486c5cc91180 Mon Sep 17 00:00:00 2001 From: Marius Eriksen Date: Sun, 21 Oct 2012 16:52:08 -0400 Subject: acme: add $acmeshell to control execution shell R=rsc CC=plan9port.codebot http://codereview.appspot.com/6614056 --- man/man1/acme.1 | 6 ++++++ src/cmd/acme/acme.c | 3 +++ src/cmd/acme/dat.h | 1 + src/cmd/acme/exec.c | 10 ++++++++-- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/man/man1/acme.1 b/man/man1/acme.1 index 2d24f331..3dc1f2af 100644 --- a/man/man1/acme.1 +++ b/man/man1/acme.1 @@ -533,6 +533,12 @@ and set to the window's id number (see .IR acme (4)). +.PP +The environment variable +.B $acmeshell +determines which shell is used to execute such commands; the +.IR rc (1) +shell is used by default. .SS "Mouse button 3 Pointing at text with button 3 instructs .I acme diff --git a/src/cmd/acme/acme.c b/src/cmd/acme/acme.c index 740f3617..75745aff 100644 --- a/src/cmd/acme/acme.c +++ b/src/cmd/acme/acme.c @@ -133,6 +133,9 @@ threadmain(int argc, char *argv[]) cputype = getenv("cputype"); objtype = getenv("objtype"); home = getenv("HOME"); + acmeshell = getenv("acmeshell"); + if(acmeshell && *acmeshell == '\0') + acmeshell = nil; p = getenv("tabstop"); if(p != nil){ maxtab = strtoul(p, nil, 0); diff --git a/src/cmd/acme/dat.h b/src/cmd/acme/dat.h index 0539d1ac..72860db3 100644 --- a/src/cmd/acme/dat.h +++ b/src/cmd/acme/dat.h @@ -535,6 +535,7 @@ int fsyspid; char *cputype; char *objtype; char *home; +char *acmeshell; char *fontnames[2]; Image *tagcols[NCOL]; Image *textcols[NCOL]; diff --git a/src/cmd/acme/exec.c b/src/cmd/acme/exec.c index 8262be4a..81a2fcd9 100644 --- a/src/cmd/acme/exec.c +++ b/src/cmd/acme/exec.c @@ -1358,6 +1358,7 @@ runproc(void *argvp) char *rcarg[4]; void **argv; CFsys *fs; + char *shell; threadsetname("runproc"); @@ -1467,6 +1468,8 @@ runproc(void *argvp) if(argaddr) putenv("acmeaddr", argaddr); + if(acmeshell != nil) + goto Hard; if(strlen(t) > sizeof buf-10) /* may need to print into stack */ goto Hard; inarg = FALSE; @@ -1576,7 +1579,10 @@ Hard: chdir(dir); /* ignore error: probably app. window */ free(dir); } - rcarg[0] = "rc"; + shell = acmeshell; + if(shell == nil) + shell = "rc"; + rcarg[0] = shell; rcarg[1] = "-c"; rcarg[2] = t; rcarg[3] = nil; @@ -1590,7 +1596,7 @@ Hard: sendul(cpid, ret); threadexits(nil); } - warning(nil, "exec rc: %r\n"); + warning(nil, "exec %s: %r\n", shell); Fail: /* threadexec hasn't happened, so send a zero */ -- cgit v1.2.3