aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2022-01-01 14:57:37 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2022-01-01 14:57:37 +0100
commit840cad2daa6294ff6d452c649ef8ba352414a9e4 (patch)
tree13022777d1e5536776a69830c006a99c234a4035
parent587842835405e8debb220fd874e5b29e829a29f9 (diff)
downloaduwu-nolambda-840cad2daa6294ff6d452c649ef8ba352414a9e4.tar.xz
Use uwuutil functions for argument number checking
-rw-r--r--flow.c7
-rw-r--r--io.c10
2 files changed, 8 insertions, 9 deletions
diff --git a/flow.c b/flow.c
index 40ea012..9bcecb7 100644
--- a/flow.c
+++ b/flow.c
@@ -4,11 +4,11 @@
#include "api/vm.h"
#include "api/nil.h"
#include "api/str.h"
+#include "api/util.h"
UwUVMValue uwu_linear(UwUVMArgs *args)
{
- if (args->num < 1)
- error("error: nolambda:flow:linear requires at least one argument\n");
+ uwuutil_require_min("nolambda:flow:linear", args, 1);
size_t return_arg = args->num - 1;
@@ -20,8 +20,7 @@ UwUVMValue uwu_linear(UwUVMArgs *args)
UwUVMValue uwu_error(UwUVMArgs *args)
{
- if (args->num != 1)
- error("error: nolambda:flow:error requires exactly one argument\n");
+ uwuutil_require_exact("nolambda:flow:error", args, 1);
char *err = uwustr_get(uwuvm_get_arg(args, 0));
fprintf(stderr, "%s\n", err);
diff --git a/io.c b/io.c
index 0f178fa..7896237 100644
--- a/io.c
+++ b/io.c
@@ -5,11 +5,11 @@
#include "common/err.h"
#include "api/vm.h"
#include "api/str.h"
+#include "api/util.h"
UwUVMValue uwu_print(UwUVMArgs *args)
{
- if (args->num != 1)
- error("error: nolambda:io:print requires exactly one argument\n");
+ uwuutil_require_exact("nolambda:io:print", args, 1);
UwUVMValue value = uwuvm_get_arg(args, 0);
@@ -22,14 +22,14 @@ UwUVMValue uwu_print(UwUVMArgs *args)
UwUVMValue uwu_scan(UwUVMArgs *args)
{
+ uwuutil_require_max("nolambda:io:scan", args, 1);
+
char *prompt = NULL;
if (args->num == 0)
prompt = strdup("");
- else if (args->num == 1)
- prompt = uwustr_get(uwuvm_get_arg(args, 0));
else
- error("error: nolambda:io:scan requires exactly one or zero arguments\n");
+ prompt = uwustr_get(uwuvm_get_arg(args, 0));
char *return_string = linenoise(prompt);