Add module zero.c/zero.h
diff --git a/display_args.c b/display_args.c
index 4a1747d..82f4385 100644
--- a/display_args.c
+++ b/display_args.c
@@ -34,6 +34,7 @@
 #include "expr.h"
 #include "type.h"
 #include "common.h"
+#include "zero.h"
 
 #define READER(NAME, TYPE)						\
 	static int							\
@@ -272,9 +273,8 @@
 	 * space.  */
 	typedef char assert__long_enough_long[-(sizeof(long) < sizeof(void *))];
 	long l = options.strlen;
-	if (length != NULL) /* XXX emulate node ZERO before it lands */
-		if (expr_eval_word(length, value, arguments, &l) < 0)
-			return -1;
+	if (expr_eval_word(length, value, arguments, &l) < 0)
+		return -1;
 	size_t len = (size_t)l;
 
 	int written = 0;
@@ -295,8 +295,6 @@
 		struct value element;
 		if (value_init_element(&element, value, i) < 0)
 			return -1;
-		if (value_is_zero(&element, arguments)) /* XXX emulate ZERO */
-			break;
 		int o = format_argument(stream, &element, arguments);
 		if (o < 0)
 			return -1;
@@ -313,7 +311,7 @@
 int
 format_argument(FILE *stream, struct value *value, struct value_dict *arguments)
 {
-	struct expr_node *length = NULL;
+	struct expr_node *length = expr_node_zero();
 	switch (value->type->type) {
 	case ARGTYPE_VOID:
 		return fprintf(stream, "<void>");