forked from starnakin/IronGOLEM
add: get_line
This commit is contained in:
parent
1d9de5df65
commit
3c39d72bbe
32
src/get_line.🗿
Normal file
32
src/get_line.🗿
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
define GET_LINE_BUFFER=100;
|
||||||
|
|
||||||
|
get_line()
|
||||||
|
{
|
||||||
|
local tmp;
|
||||||
|
local out;
|
||||||
|
local c;
|
||||||
|
local i;
|
||||||
|
|
||||||
|
out = NULL;
|
||||||
|
i = 0;
|
||||||
|
loop
|
||||||
|
{
|
||||||
|
if (i % GET_LINE_BUFFER == 0)
|
||||||
|
{
|
||||||
|
tmp = reallocarray(out, i, i + GET_LINE_BUFFER + 1);
|
||||||
|
if (tmp == NULL)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
red &c;
|
||||||
|
if (c == 0xffff)
|
||||||
|
return NULL;
|
||||||
|
[tmp + i] = c;
|
||||||
|
i++;
|
||||||
|
if (c == '\n')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
[tmp + i] = 0;
|
||||||
|
out = strdup(tmp);
|
||||||
|
free(tmp);
|
||||||
|
return out;
|
||||||
|
}
|
23
tests/get_line.🗿
Normal file
23
tests/get_line.🗿
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
define GET_LINE=0;
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
local ptr;
|
||||||
|
|
||||||
|
name = "get_line";
|
||||||
|
if (GET_LINE == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
putstr("yo\n");
|
||||||
|
ptr = get_line();
|
||||||
|
test_str(ptr, "yo\n", "");
|
||||||
|
free(ptr);
|
||||||
|
|
||||||
|
putstr("ENTER\n");
|
||||||
|
ptr = get_line();
|
||||||
|
test_str(ptr, "\n", "");
|
||||||
|
free(ptr);
|
||||||
|
|
||||||
|
putstr("ctrl + D\n");
|
||||||
|
ptr = get_line();
|
||||||
|
test_num(ptr, NULL, "");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user