Commit Diff


commit - 5cc53af92d6bfae8b930d3c9154c8ed44e1feb09
commit + eadb18a3357b9b735b2f7da478854a39fb0c73c6
blob - 10000b5720ad1852b74ea0ea7c62b49ba42717f4
blob + 980a8d27c152da1ff5012dc156004ee7dd8e6802
--- include/libc.h
+++ 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*);
blob - 5e7c88ed2b1e4e79f6222d1440b8fa08e97b24de
blob + a17c25aa692138a3cf5c7404fab1593ab0c79ae2
--- src/lib9/_exits.c
+++ 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));
 }
blob - c5cdde1de9382672697ff6f5f57426be43ed6d46
blob + 7fcf0f3c96947ff010b020e83c86c77a0e1dfba6
--- src/lib9/atexit.c
+++ 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));
 }