summaryrefslogtreecommitdiffstats
path: root/src/include/readline/readline.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/readline/readline.h')
-rw-r--r--src/include/readline/readline.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/include/readline/readline.h b/src/include/readline/readline.h
index 700b7aa2..42dfd8c4 100644
--- a/src/include/readline/readline.h
+++ b/src/include/readline/readline.h
@@ -9,6 +9,49 @@
FILE_LICENCE ( GPL2_OR_LATER );
+/** 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 char * __malloc readline_history ( const char *prompt,
+ struct readline_history *history );
extern char * __malloc readline ( const char *prompt );
#endif /* _READLINE_H */