aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libc.h1
-rw-r--r--src/lib9/_exits.c6
-rw-r--r--src/lib9/atexit.c4
3 files changed, 7 insertions, 4 deletions
diff --git a/include/libc.h b/include/libc.h
index 10000b57..980a8d27 100644
--- a/include/libc.h
+++ b/include/libc.h
@@ -376,6 +376,7 @@ extern int dec16(uchar*, int, char*, int);
extern int enc16(char*, int, uchar*, int);
extern int encodefmt(Fmt*);
extern int dirmodefmt(Fmt*);
+extern int exitcode(char*);
extern void exits(char*);
extern double frexp(double, int*);
extern ulong getcallerpc(void*);
diff --git a/src/lib9/_exits.c b/src/lib9/_exits.c
index 5e7c88ed..a17c25aa 100644
--- a/src/lib9/_exits.c
+++ b/src/lib9/_exits.c
@@ -4,7 +4,7 @@
void
_exits(char *s)
{
- if(s && *s)
- _exit(1);
- _exit(0);
+ if(s == 0 || *s == 0)
+ _exit(0);
+ _exit(exitcode(s));
}
diff --git a/src/lib9/atexit.c b/src/lib9/atexit.c
index c5cdde1d..7fcf0f3c 100644
--- a/src/lib9/atexit.c
+++ b/src/lib9/atexit.c
@@ -50,5 +50,7 @@ exits(char *s)
onex[i].f = 0;
(*f)();
}
- exit(s && *s ? 1 : 0);
+ if(s == 0 || *s == 0)
+ exit(0);
+ exit(exitcode(s));
}