Ulrich, Thanks for the input. That is helpful to know.
H Ulrich Berning-2 wrote: > > Heracles wrote: > >>Hello, >> >>I am working on a patch to add to the _cursesmodule.c file of the Python >>core libraries. I figured I would take on one of the implemented functions >>to try to get my feet wet contributing to the project. At any rate, I have >>the following function defined in the 2.7.a version updated from SVN this >>morning: >> >>------------- Snippet --------------------------- >>// Insert new method color_set Steve Owens 2/24/2009 >>// The curses library color_set function has the following signature: >>// int color_set(short color_pair_number, void* opts); >>static PyObject * >>PyCurses_color_set(PyObject *self, PyObject *args) >>{ >> short color_pair_number; >> void * opts; >> int erg; >> >> // These macros ought to be documented in the API docs >> // but they aren't yet. >> PyCursesInitialised >> PyCursesInitialisedColor >> >> // Per ncurses Man Page: >> // The routine color_set sets the current color of the given window >> to >> // the foreground/background combination described by the >>color_pair_number. >> // The parameter opts is reserved for future use, applications must >>supply a >> // null pointer. >> switch(PyTuple_Size(args)) >> { >> case 1: >> // Dont make them pass a useless null pointer. >> if (!PyArg_ParseTuple(args, "h", &color_pair_number)) return NULL; >> break; >> case 2: >> // Allow them to pass the opts pointer so that when ncurses is later >>updated. >> // This method will still work. >> if (!PyArg_ParseTuple(args, "hO&", &color_pair_number, &opts)) return >>NULL; >> break; >> default: >> PyErr_SetString(PyExc_TypeError, "color_set requires 1 or 2 >> arguments >>(color_pair_number[, opts]?)"); >> return NULL; >> } >> >> erg = color_set(color_pair_number, opts); // Debating on forcing null >>here. >> >> if (erg == ERR) >> return PyCursesCheckERR(erg, "color_set"); >> else >> PyInt_FromLong((long) 1L); >>} >>-------------End Snippet --------------------------- >> >>I also have the following added in (see last line of the snippet): >> >>------------- Snippet --------------------------- >>static PyMethodDef PyCurses_methods[] = { >> {"baudrate", (PyCFunction)PyCurses_baudrate, METH_NOARGS}, >> {"beep", (PyCFunction)PyCurses_beep, METH_NOARGS}, >> {"can_change_color", (PyCFunction)PyCurses_can_change_color, >>METH_NOARGS}, >> {"cbreak", (PyCFunction)PyCurses_cbreak, METH_VARARGS}, >> {"color_content", (PyCFunction)PyCurses_Color_Content, >>METH_VARARGS}, >> {"color_pair", (PyCFunction)PyCurses_color_pair, METH_VARARGS}, >> {"color_set", (PyCFunction)PyCurses_color_set, METH_VARARGS}, >>-------------End Snippet --------------------------- >> >>The code compiles and installs fine, but when I run the following unit test, >>I get a segmentation fault: >> >>------------- Snippet --------------------------- >>import unittest, curses >>from test import test_support >> >>def testCursesColorSet(stdscrn): >> curses.init_pair(1, curses.COLOR_RED, curses.COLOR_WHITE) >> curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLUE); >> i = curses.color_set(1, NULL); >> stdscrn.addstr("RED/BLACK (%0)\n".format(i)) >> i = curses.color_set(2, NULL); >> stdscrn.print("WHITE/BLUE (%0)\n".format(i)) >> i = curses.color_set(0, NULL); >> stdscrn.print("Default (%0)\n".format(i)) >> >> >>def test_main(stdscrn): >> curses.savetty() >> if curses.has_color(): >> testCursesColorSet(stdscrn) >> else >> stdscr.addstr( "Test Aborted: Color not supported on this >> terminal.") >> >> >>if __name__ == '__main__': >> curses.wrapper(test_main) >>-------------End Snippet --------------------------- >> >>It turns out that by commenting out this line in the _cursesmodule.c code, >>allows the unit test to run >>obviously reporting the error as expected: >> >>------------- Snippet --------------------------- >>//erg = color_set(color_pair_number, opts); // Debating on forcing null >>here. >>-------------End Snippet --------------------------- >> >>At any rate I am stuck. I am still trying to build just a plain C file >>which will test the color_set function >>outside of python, but that is another task. >> >>Any suggestions? >> >> >> >> > As long as Python is written in C, please don't use C++ comments, some C > compilers don't like them. > > Ulli > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/lists%40nabble.com > > -- View this message in context: http://www.nabble.com/Adding-support-to-curses-library-tp22191916p22203820.html Sent from the Python - python-dev mailing list archive at Nabble.com. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com