add exitcode
diff --git a/include/libc.h b/include/libc.h
index 10000b5..980a8d2 100644
--- a/include/libc.h
+++ b/include/libc.h
@@ -376,6 +376,7 @@
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 5e7c88e..a17c25a 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 c5cdde1..7fcf0f3 100644
--- a/src/lib9/atexit.c
+++ b/src/lib9/atexit.c
@@ -50,5 +50,7 @@
onex[i].f = 0;
(*f)();
}
- exit(s && *s ? 1 : 0);
+ if(s == 0 || *s == 0)
+ exit(0);
+ exit(exitcode(s));
}