readline / Gnu readline
bachmeier
no at spam.net
Wed Jan 29 22:10:04 UTC 2020
On Wednesday, 29 January 2020 at 21:15:08 UTC, Adam D. Ruppe
wrote:
> On Wednesday, 29 January 2020 at 20:01:32 UTC, Michael wrote:
>> I am new to D.
>> I would like to use the Gnu readline function in D. Is there a
>> module that i can use?
>
> just define it yourself
>
> ---
>
> // this line right here is all you need to call the function
> extern(C) char* readline(const char*);
>
> import core.stdc.stdio;
>
> void main() {
> char* a = readline("prompt> ");
> printf("%s\n", a);
> }
>
> ---
>
> # and also link it in at the command line with -L-lreadline
> dmd rl -L-lreadline
>
>
>
> readline is so simple you don't need to do anything fancier. If
> you need history and such too you just define those functions
> as well.
That's pretty cool. I didn't know anything about this. Taking the
example from here:
https://eli.thegreenplace.net/2016/basics-of-using-the-readline-library/
You can basically run the same code (I modified it to end on
empty input. This is complete with history:
extern(C) {
char* readline(const char*);
void add_history(const char *string);
}
import core.stdc.stdio;
import core.stdc.string;
import core.stdc.stdlib;
void main() {
char* buf;
while ((buf = readline(">> ")) !is null) {
if (strlen(buf) > 0) {
add_history(buf);
printf("[%s]\n", buf);
free(buf);
} else {
break;
}
}
}
More information about the Digitalmars-d-learn
mailing list