Итак, я пытаюсь набить текст по умолчанию в пользовательский ввод с использованием Readline, и возникли проблемы заставить его работать на OSX 10.5:с использованием Readline на OS X 10.5
// rl_insert_text_ex.c
// gcc -o rl_insert_text_ex rl_insert_text_ex.c -lreadline
#include <stdio.h>
#include <readline/readline.h>
int my_startup_hook(void) {
return rl_insert_text("ponycorns");
}
int main(int argc, char *argv[]) {
char *line;
rl_startup_hook = (Function*) my_startup_hook;
line = readline("What's your favorite mythical animal? ");
if (NULL == line || '\0' == *line) {
printf("Nothing given... :(\n");
}
else {
printf("That's funny, I love %s too!\n", line);
}
return 0;
}
Этот код Безразлично» t даже скомпилировать 10.4 (нет определения для _rl_insert_text
на 10.4, что немного облом), но компилируется на 10.5. Тем не менее, текст rl_insert_text()
'd никогда не отображается на экране и не возвращается как пользовательский ввод. Обратный вызов используется, и rl_insert_text()
возвращает правильное значение (спасибо, printf
), поэтому я не уверен, что здесь происходит.
Я проверил /usr/include/readline/readline.h
и rl_insert_text()
находится под:
/* supported functions */
, который под смешения:
/*
* The following is not implemented
*/
Так я такой SOL, или я просто делаю неправильно?
Почему это помечено как ruby? Код выглядит как код C. –
хороший вопрос! исправлено это. – rampion