summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSkip Montanaro <skip@pobox.com>2000-07-19 16:54:53 (GMT)
committerSkip Montanaro <skip@pobox.com>2000-07-19 16:54:53 (GMT)
commit49bd24d4e4ce539c452e9ba43c6c0f7f1c6aff94 (patch)
tree71f9cb362c40773ef5e1b27ab1d89281bea015a9
parentbaf2663e44c2a143dac0d9477ea0d77286a6f1d0 (diff)
downloadcpython-49bd24d4e4ce539c452e9ba43c6c0f7f1c6aff94.zip
cpython-49bd24d4e4ce539c452e9ba43c6c0f7f1c6aff94.tar.gz
cpython-49bd24d4e4ce539c452e9ba43c6c0f7f1c6aff94.tar.bz2
added history file truncation based upon code from Johannes Zellner.
-rw-r--r--Modules/readline.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/Modules/readline.c b/Modules/readline.c
index 2986b9d..119f7f9 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -105,6 +105,7 @@ read_history_file(PyObject *self, PyObject *args)
return Py_None;
}
+static int history_length = -1; /* do not truncate history by default */
static char doc_read_history_file[] = "\
read_history_file([filename]) -> None\n\
Load a readline history file.\n\
@@ -121,6 +122,8 @@ write_history_file(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|z:write_history_file", &s))
return NULL;
errno = write_history(s);
+ if (!errno && history_length >= 0)
+ history_truncate_file(s, history_length);
if (errno)
return PyErr_SetFromErrno(PyExc_IOError);
Py_INCREF(Py_None);
@@ -134,6 +137,43 @@ The default filename is ~/.history.\
";
+static char set_history_length_doc[] = "\
+set_history_length(length) -> None\n\
+set the maximal number of items which will be written to\n\
+the history file. A negative length is used to inhibit\n\
+history truncation.\n\
+";
+
+static PyObject*
+set_history_length(PyObject *self, PyObject *args)
+{
+ int length = history_length;
+ PyObject* ob;
+ if (!PyArg_ParseTuple(args, "i:set_history_length", &length))
+ return NULL;
+ history_length = length;
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+
+
+static char get_history_length_doc[] = "\
+get_history_length() -> int\n\
+return the current history length value.\n\
+";
+
+static PyObject*
+get_history_length(PyObject *self, PyObject *args)
+{
+ PyObject* ob;
+ if (!PyArg_ParseTuple(args, ":get_history_length"))
+ return NULL;
+ return Py_BuildValue("i", history_length);
+}
+
+
+
/* Exported function to specify a word completer in Python */
static PyObject *completer = NULL;
@@ -289,6 +329,8 @@ static struct PyMethodDef readline_methods[] =
{"read_init_file", read_init_file, 1, doc_read_init_file},
{"read_history_file", read_history_file, 1, doc_read_history_file},
{"write_history_file", write_history_file, 1, doc_write_history_file},
+ {"set_history_length", set_history_length, 1, set_history_length_doc},
+ {"get_history_length", get_history_length, 1, get_history_length_doc},
{"set_completer", set_completer, 1, doc_set_completer},
{"get_begidx", get_begidx, 0, doc_get_begidx},
{"get_endidx", get_endidx, 0, doc_get_endidx},