Browse Source

ucode: respect all arguments passed to send()

Similar to ucode's print() this now prints any given values to stdout:
uhttpd.send(a, b, c, "\n");

Signed-off-by: Andre Heider <a.heider@gmail.com>
Andre Heider 1 year ago
parent
commit
63413578a8
1 changed files with 14 additions and 12 deletions
  1. 14 12
      ucode.c

+ 14 - 12
ucode.c

@@ -115,20 +115,22 @@ uh_ucode_recv(uc_vm_t *vm, size_t nargs)
 static uc_value_t *
 uh_ucode_send(uc_vm_t *vm, size_t nargs)
 {
-	uc_value_t *val = uc_fn_arg(0);
-	ssize_t len;
+	uc_value_t *val;
+	size_t arridx;
+	ssize_t len = 0;
 	char *p;
 
-	if (ucv_type(val) == UC_STRING) {
-		len = write(STDOUT_FILENO, ucv_string_get(val), ucv_string_length(val));
-	}
-	else if (val != NULL) {
-		p = ucv_to_string(vm, val);
-		len = p ? write(STDOUT_FILENO, p, strlen(p)) : 0;
-		free(p);
-	}
-	else {
-		len = 0;
+	for (arridx = 0; arridx < nargs; arridx++) {
+		val = uc_fn_arg(arridx);
+
+		if (ucv_type(val) == UC_STRING) {
+			len += write(STDOUT_FILENO, ucv_string_get(val), ucv_string_length(val));
+		}
+		else if (val != NULL) {
+			p = ucv_to_string(vm, val);
+			len += p ? write(STDOUT_FILENO, p, strlen(p)) : 0;
+			free(p);
+		}
 	}
 
 	return ucv_int64_new(len);