31 lines
758 B
Text
31 lines
758 B
Text
include 'std/std.fa'
|
|
include 'std/mem/gmem.fa'
|
|
|
|
macro NAME_LEN 256 end
|
|
|
|
fun main [ str str int ] eo
|
|
%NAME_LEN #malloc as name -- Allocate NAME_LEN buffer
|
|
|
|
"Enter your name: " %STDOUT
|
|
%fputs -- fputs("...", stdout) => null
|
|
|
|
%NAME_LEN @name deref %STDIN
|
|
%SYS_read sys 4 -- read(STDIN, *name, NAME_LEN) => <bytes_read>
|
|
|
|
copy 2 grt if
|
|
"Empty names are not allowed" %error
|
|
end
|
|
|
|
"Your name is " %STDOUT
|
|
%fputs -- fputs("...", stdout) => null
|
|
|
|
1 swap sub @name deref
|
|
%puts -- puts(string) => null
|
|
|
|
%NAME_LEN @name deref
|
|
#mfree pop -- free(name) => null
|
|
|
|
%EXIT_SUCCESS %exit
|
|
end
|
|
|
|
#main
|