Я нахожусь в процессе создания оболочки на C ++. Я использую Readline GNU с функцией истории; пытаясь распечатать список истории с:
using_history();
int length = history_length;
for(int i = 0; i < length; i++) {
history_set_pos(0);
cout << HIST_ENTRY *current_history();
cout << "\n";
HIST_ENTRY *history_next();
}
При запуске этого в оболочке он печатает адреса записей истории в шестнадцатеричном виде. Как я могу разыменовать, чтобы я мог получить доступ к фактической линии, которая была вызвана. Я знаю, что функция истории для GNU использует структуру:
typedef struct _hist_entry {
char *line;
char *timestamp;
histdata_t data;
} HIST_ENTRY;
И документация для current_history:
HIST_ENTRY * current_history (void)
Return the history entry at the current position, as determined by where_history(). If there is no entry there, return a NULL pointer.
Задача ещё не решена.
Других решений пока нет …