hush: use ash's read builtin

function                                             old     new   delta
shell_builtin_read                                     -    1000   +1000
set_local_var_from_halves                              -      24     +24
setvar2                                                -       7      +7
...
popstring                                            140     134      -6
ash_main                                            1375    1368      -7
setvar                                               184     174     -10
arith_set_local_var                                   36       -     -36
builtin_read                                        1096     185    -911
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 5/23 up/down: 1038/-1007)        Total: 31 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/shell/builtin_read.c b/shell/builtin_read.c
index 24cfe08..412bcf8 100644
--- a/shell/builtin_read.c
+++ b/shell/builtin_read.c
@@ -21,7 +21,7 @@
 #include "builtin_read.h"
 
 const char* FAST_FUNC
-builtin_read(void (*setvar)(const char *name, const char *val, int flags),
+shell_builtin_read(void FAST_FUNC (*setvar)(const char *name, const char *val),
 	char       **argv,
 	const char *ifs,
 	int        read_flags,
@@ -178,7 +178,7 @@
 			if (argv[1] != NULL && is_ifs) {
 				buffer[bufpos] = '\0';
 				bufpos = 0;
-				setvar(*argv, buffer, 0);
+				setvar(*argv, buffer);
 				argv++;
 				/* can we skip one non-space ifs char? (2: yes) */
 				startword = isspace(c) ? 2 : 1;
@@ -195,14 +195,14 @@
 			continue;
 		buffer[bufpos + 1] = '\0';
 		/* Use the remainder as a value for the next variable */
-		setvar(*argv, buffer, 0);
+		setvar(*argv, buffer);
 		/* Set the rest to "" */
 		while (*++argv)
-			setvar(*argv, "", 0);
+			setvar(*argv, "");
 	} else {
 		/* Note: no $IFS removal */
 		buffer[bufpos] = '\0';
-		setvar("REPLY", buffer, 0);
+		setvar("REPLY", buffer);
 	}
 
  ret: