[Python-checkins] python/dist/src/Modules readline.c,2.72,2.73
montanaro at users.sourceforge.net
montanaro at users.sourceforge.net
Sun Aug 15 16:32:09 CEST 2004
Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28578/Modules
Modified Files:
readline.c
Log Message:
Add get_history_item and replace_history_item functions to the readline
module. Closes patch #675551. My apologies to Michal Vitecek for taking so
long to process this.
Index: readline.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/readline.c,v
retrieving revision 2.72
retrieving revision 2.73
diff -C2 -d -r2.72 -r2.73
*** readline.c 8 Jul 2004 15:28:18 -0000 2.72
--- readline.c 15 Aug 2004 14:31:57 -0000 2.73
***************
*** 295,298 ****
--- 295,363 ----
set the readline word delimiters for tab-completion");
+ static PyObject *
+ py_remove_history(PyObject *self, PyObject *args)
+ {
+ int entry_number;
+ HIST_ENTRY *entry;
+
+ if (!PyArg_ParseTuple(args, "i:remove_history", &entry_number))
+ return NULL;
+ entry = remove_history(entry_number);
+ if (!entry) {
+ char buf[80];
+ PyOS_snprintf(buf, sizeof(buf),
+ "No history item at position %i",
+ entry_number);
+ PyErr_SetString(PyExc_ValueError, buf);
+ return NULL;
+ }
+ /* free memory allocated for the history entry */
+ if (entry->line)
+ free(entry->line);
+ if (entry->data)
+ free(entry->data);
+ free(entry);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ PyDoc_STRVAR(doc_remove_history,
+ "remove_history(pos) -> None\n\
+ remove history item given by its position");
+
+ static PyObject *
+ py_replace_history(PyObject *self, PyObject *args)
+ {
+ int entry_number;
+ char *line;
+ HIST_ENTRY *old_entry;
+
+ if (!PyArg_ParseTuple(args, "is:replace_history", &entry_number, &line)) {
+ return NULL;
+ }
+ old_entry = replace_history_entry(entry_number, line, (void *)NULL);
+ if (!old_entry) {
+ char buf[80];
+ PyOS_snprintf(buf, sizeof(buf),
+ "No history item at position %i",
+ entry_number);
+ PyErr_SetString(PyExc_ValueError, buf);
+ return NULL;
+ }
+ /* free memory allocated for the old history entry */
+ if (old_entry->line)
+ free(old_entry->line);
+ if (old_entry->data)
+ free(old_entry->data);
+ free(old_entry);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ PyDoc_STRVAR(doc_replace_history,
+ "replace_history(pos, line) -> None\n\
+ replaces history item given by its position with contents of line");
/* Add a line to the history buffer */
***************
*** 494,497 ****
--- 559,564 ----
METH_VARARGS, doc_set_completer_delims},
{"add_history", py_add_history, METH_VARARGS, doc_add_history},
+ {"remove_history_item", py_remove_history, METH_VARARGS, doc_remove_history},
+ {"replace_history_item", py_replace_history, METH_VARARGS, doc_replace_history},
{"get_completer_delims", get_completer_delims,
METH_NOARGS, doc_get_completer_delims},
More information about the Python-checkins
mailing list