summaryrefslogtreecommitdiff
path: root/sys/src/cmd/rc/plan9.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2022-01-03 18:41:48 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2022-01-03 18:41:48 +0000
commit189731aad01e09db1807c78af421c615ed3a3242 (patch)
tree4cec623654b4e4e9da03bb00f36ea49755c8ca98 /sys/src/cmd/rc/plan9.c
parentc51a5cfa06dd982da839c4cfcba1610259d27e38 (diff)
rc: make it portable (for UNIX)
Fixup remaining Plan9 dependencies (chartorune()). Add Makefile for UNIX-like systems (tested with Linux and APE). Make error printing consistent, use Errstr() explicitely. Get rid of NSTATUS buffer limit, just malloc it.
Diffstat (limited to 'sys/src/cmd/rc/plan9.c')
-rw-r--r--sys/src/cmd/rc/plan9.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/sys/src/cmd/rc/plan9.c b/sys/src/cmd/rc/plan9.c
index 215ac318a..ada169123 100644
--- a/sys/src/cmd/rc/plan9.c
+++ b/sys/src/cmd/rc/plan9.c
@@ -47,13 +47,17 @@ static char *syssigname[] = {
0
};
+/*
+ * finit could be removed but is kept for
+ * backwards compatibility, see: rcmain.plan9
+ */
static void
execfinit(void)
{
char *cmds = estrdup("for(i in '/env/fn#'*){. -bq $i}\n");
int line = runq->line;
poplist();
- execcmds(openiocore((uchar*)cmds, strlen(cmds)), estrdup(srcfile(runq)), runq->local, runq->redir);
+ execcmds(openiocore(cmds, strlen(cmds)), estrdup(srcfile(runq)), runq->local, runq->redir);
runq->lex->line = line;
runq->lex->qflag = 1;
}
@@ -131,7 +135,7 @@ Vinit(void)
dir = Open(Env("", 0), 0);
if(dir<0){
- pfmt(err, "%s: can't open: %r\n", argv0);
+ pfmt(err, "%s: can't open: %s\n", argv0, Errstr());
return;
}
for(;;){
@@ -169,7 +173,7 @@ Errstr(void)
}
int
-Waitfor(int pid, int)
+Waitfor(int pid)
{
thread *p;
Waitmsg *w;
@@ -187,7 +191,8 @@ Waitfor(int pid, int)
for(p = runq->ret;p;p = p->ret)
if(p->pid==w->pid){
p->pid=-1;
- strcpy(p->status, w->msg);
+ p->status = estrdup(w->msg);
+ break;
}
free(w);
}
@@ -206,7 +211,7 @@ addenv(var *v)
if(v->changed){
v->changed = 0;
if((fd = Creat(Env(v->name, 0)))<0)
- pfmt(err, "%s: can't open: %r\n", argv0);
+ pfmt(err, "%s: can't open: %s\n", argv0, Errstr());
else{
f = openiofd(fd);
for(w = v->val;w;w = w->next){
@@ -220,7 +225,7 @@ addenv(var *v)
if(v->fnchanged){
v->fnchanged = 0;
if((fd = Creat(Env(v->name, 1)))<0)
- pfmt(err, "%s: can't open: %r\n", argv0);
+ pfmt(err, "%s: can't open: %s\n", argv0, Errstr());
else{
f = openiofd(fd);
if(v->fn)
@@ -420,16 +425,15 @@ Dup(int a, int b)
}
int
-Dup1(int)
+Dup1(int a)
{
- return -1;
+ return dup(a, -1);
}
void
-Exit(char *stat)
+Exit(void)
{
Updenv();
- setstatus(stat);
exits(truestatus()?"":getstatus());
}
@@ -459,8 +463,7 @@ Isatty(int fd)
void
Abort(void)
{
- pfmt(err, "aborting\n");
- Exit("aborting");
+ abort();
}
static int newwdir;