changeset 647:3258d9233753

Replace TOY_LIST_LEN with more generic ARRAY_LEN()
author Rob Landley <rob@landley.net>
date Tue, 14 Aug 2012 01:42:06 -0500
parents fb546cc2a022
children 131571cf708c
files main.c toys.h
diffstat 2 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/main.c	Sun Aug 05 23:05:16 2012 -0500
+++ b/main.c	Tue Aug 14 01:42:06 2012 -0500
@@ -17,8 +17,6 @@
 #include "generated/newtoys.h"
 };
 
-#define TOY_LIST_LEN (sizeof(toy_list)/sizeof(struct toy_list))
-
 // global context for this applet.
 
 struct toy_context toys;
@@ -37,7 +35,7 @@
 
 	// Binary search to find this applet.
 
-	top = TOY_LIST_LEN-1;
+	top = ARRAY_LEN(toy_list)-1;
 	for (;;) {
 		int result;
 
@@ -90,7 +88,8 @@
 	toys.argv = argv;
 	if (NEED_OPTIONS && which->options) get_optflags();
 	else toys.optargs = argv+1;
-	if (which->flags & TOYFLAG_UMASK) toys.old_umask = umask(0);
+	toys.old_umask = umask(0);
+	if (!(which->flags & TOYFLAG_UMASK)) umask(toys.old_umask);
 }
 
 // Like exec() but runs an internal toybox command instead of another file.
@@ -123,7 +122,7 @@
 	}
 
 	// Output list of applets.
-	for (i=1; i<TOY_LIST_LEN; i++) {
+	for (i=1; i<ARRAY_LEN(toy_list); i++) {
 		int fl = toy_list[i].flags;
 		if (fl & TOYMASK_LOCATION) {
 			if (toys.argv[1]) {
--- a/toys.h	Sun Aug 05 23:05:16 2012 -0500
+++ b/toys.h	Tue Aug 14 01:42:06 2012 -0500
@@ -108,3 +108,5 @@
 extern char toybuf[4096];
 
 #define DEFINE_GLOBALS(...)
+
+#define ARRAY_LEN(array) (sizeof(array)/sizeof(*array))