added history file truncation based upon code from Johannes Zellner.
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 @@
 	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 @@
 	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 @@
 ";
 
 
+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 @@
 	{"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},