]> git.lizzy.rs Git - uwu-nolambda.git/blob - io.c
Fix typo in README.md
[uwu-nolambda.git] / io.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include "linenoise/linenoise.h"
5 #include "common/err.h"
6 #include "api/vm.h"
7 #include "api/str.h"
8 #include "api/util.h"
9
10 UwUVMValue uwu_print(UwUVMArgs *args)
11 {
12         uwuutil_require_exact("io.print", args, 1);
13
14         UwUVMValue value = uwuvm_get_arg(args, 0);
15
16         char *str = uwustr_get(value);
17         printf("%s\n", str);
18         free(str);
19
20         return uwuvm_clone_value(value);
21 }
22
23 UwUVMValue uwu_scan(UwUVMArgs *args)
24 {
25         uwuutil_require_max("io.scan", args, 1);
26
27         char *prompt = NULL;
28
29         if (args->num == 0)
30                 prompt = strdup("");
31         else
32                 prompt = uwustr_get(uwuvm_get_arg(args, 0));
33
34         char *return_string = linenoise(prompt);
35
36         if (! return_string)
37                 return_string = strdup("");
38
39         UwUVMValue return_value = uwustr_create(return_string);
40
41         linenoiseFree(return_string);
42         free(prompt);
43
44         return return_value;
45 }
46
47 #include "linenoise/linenoise.c"