blob: 3caf28b47172630b1cacd5195a6e3572ce313b33 [file] [log] [blame]
#ifndef _READLINE_H
#define _READLINE_H
/** @file
*
* Minmal readline
*
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/** A readline history entry */
struct readline_history_entry {
/** Persistent copy of string */
char *string;
/** Temporary copy of string
*
* The temporary copy exists only during the call to
* readline().
*/
char *temp;
};
/** Maximum depth of a readline history buffer
*
* Must be one less than a power of two.
*/
#define READLINE_HISTORY_MAX_DEPTH ( ( 1 << 3 ) - 1 )
/** A readline history buffer */
struct readline_history {
/** History entries
*
* This is a circular buffer, with entries in chronological
* order. The "next" entry is always empty except during a
* call to readline().
*/
struct readline_history_entry entries[READLINE_HISTORY_MAX_DEPTH + 1];
/** Position of next entry within buffer
*
* This is incremented monotonically each time an entry is
* added to the buffer.
*/
unsigned int next;
/** Current depth within history buffer
*
* This is valid only during the call to readline()
*/
unsigned int depth;
};
extern void history_free ( struct readline_history *history );
extern int readline_history ( const char *prompt, const char *prefill,
struct readline_history *history,
unsigned long timeout, char **line );
extern char * __malloc readline ( const char *prompt );
#endif /* _READLINE_H */