diff -ruN newt-0.52.15.orig/fink/palette.original newt-0.52.15/fink/palette.original --- newt-0.52.15.orig/fink/palette.original 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/palette.original 2013-05-28 14:05:11.000000000 -0600 @@ -0,0 +1,2 @@ + + diff -ruN newt-0.52.15.orig/fink/patches/compiler-warnings.patch newt-0.52.15/fink/patches/compiler-warnings.patch --- newt-0.52.15.orig/fink/patches/compiler-warnings.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/compiler-warnings.patch 2013-05-28 13:32:16.000000000 -0600 @@ -0,0 +1,121 @@ +Index: newt-0.52.15/newt.c +=================================================================== +--- newt-0.52.15.orig/newt.c 2013-05-15 15:00:08.000000000 +0100 ++++ newt-0.52.15/newt.c 2013-05-15 15:11:45.000000000 +0100 +@@ -1,5 +1,6 @@ + #include "config.h" + ++#define ENABLE_SLFUTURE_CONST 1 + #include + #include + #include +Index: newt-0.52.15/whiptcl.c +=================================================================== +--- newt-0.52.15.orig/whiptcl.c 2013-03-25 14:16:36.000000000 +0000 ++++ newt-0.52.15/whiptcl.c 2013-05-15 15:23:38.000000000 +0100 +@@ -137,45 +137,44 @@ + + if (arg < -1) { + /* this could buffer oveflow, bug we're not setuid so I don't care */ +- interp->result = malloc(200); +- interp->freeProc = TCL_DYNAMIC; +- sprintf(interp->result, "%s: %s\n", ++ char *result = Tcl_Alloc(200); ++ sprintf(result, "%s: %s\n", + poptBadOption(optCon, POPT_BADOPTION_NOALIAS), + poptStrerror(arg)); +- ++ Tcl_SetResult(interp, result, TCL_DYNAMIC); + return TCL_ERROR; + } + + if (mode == MODE_NONE) { +- interp->result = "no dialog mode was specified"; ++ Tcl_SetResult(interp, "no dialog mode was specified", TCL_STATIC); + return TCL_ERROR; + } else if (rc) { +- interp->result = "multiple modes were specified"; ++ Tcl_SetResult(interp, "multiple modes were specified", TCL_STATIC); + return TCL_ERROR; + } + + if (!(text = poptGetArg(optCon))) { +- interp->result = "missing text parameter"; ++ Tcl_SetResult(interp, "missing text parameter", TCL_STATIC); + return TCL_ERROR; + } + + if (!(nextArg = poptGetArg(optCon))) { +- interp->result = "height missing"; ++ Tcl_setResult(interp,"height missing", TCL_STATIC); + return TCL_ERROR; + } + height = strtoul(nextArg, &end, 10); + if (*end) { +- interp->result = "height is not a number"; ++ Tcl_SetResult(interp,"height is not a number", TCL_STATIC); + return TCL_ERROR; + } + + if (!(nextArg = poptGetArg(optCon))) { +- interp->result = "width missing"; ++ Tcl_SetResult(interp, "width missing", TCL_STATIC); + return TCL_ERROR; + } + width = strtoul(nextArg, &end, 10); + if (*end) { +- interp->result = "width is not a number"; ++ Tcl_SetResult(interp, "width is not a number", TCL_STATIC); + return TCL_ERROR; + } + +@@ -195,36 +194,28 @@ + + case MODE_YESNO: + rc = messageBox(text, height, width, MSGBOX_YESNO, flags); +- if (rc == DLG_OKAY) +- interp->result = "yes"; +- else +- interp->result = "no"; ++ Tcl_SetResult( interp, rc == DLG_OKAY ? "yes " : "no" , TCL_STATIC); + if (rc == DLG_ERROR) rc = 0; + break; + + case MODE_INPUTBOX: + rc = inputBox(text, height, width, optCon, flags, &result); + if (rc ==DLG_OKAY) { +- interp->result = result; +- interp->freeProc = TCL_DYNAMIC; ++ Tcl_SetResult( interp, result, TCL_DYNAMIC); + } + break; + + case MODE_MENU: + rc = listBox(text, height, width, optCon, flags, default_item, &result); + if (rc==DLG_OKAY) { +- interp->result = result; +- interp->freeProc = TCL_DYNAMIC; ++ Tcl_SetResult(interp, result, TCL_DYNAMIC); + } + break; + + case MODE_RADIOLIST: + rc = checkList(text, height, width, optCon, 1, flags, &selections); + if (rc==DLG_OKAY) { +- interp->result = selections[0]; +- interp->freeProc = TCL_DYNAMIC; +- +- free(selections); ++ Tcl_SetResult( interp, selections[0], TCL_DYNAMIC); + } + break; + +@@ -247,7 +238,7 @@ + newtPopWindow(); + + if (rc == DLG_ERROR) { +- interp->result = "bad paramter for whiptcl dialog box"; ++ Tcl_SetResult(interp, "bad paramter for whiptcl dialog box", TCL_STATIC); + return TCL_ERROR; + } + diff -ruN newt-0.52.15.orig/fink/patches/endianness.patch newt-0.52.15/fink/patches/endianness.patch --- newt-0.52.15.orig/fink/patches/endianness.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/endianness.patch 2013-05-28 13:31:27.000000000 -0600 @@ -0,0 +1,18 @@ +Author: Alastair McKinstry +Description: Force .mo files to all be little-endian so that the libnewt package can be M-A: same +Last-Updated: 2013-05-14 +Forwarded: no + +Index: newt-0.52.15/po/Makefile +=================================================================== +--- newt-0.52.15.orig/po/Makefile 2013-03-25 14:16:36.000000000 +0000 ++++ newt-0.52.15/po/Makefile 2013-05-14 18:41:36.000000000 +0100 +@@ -41,7 +41,7 @@ + report: + @for cat in $(CATALOGS); do \ + echo -n "$$cat: "; \ +- msgfmt -v --statistics -o /dev/null $$cat; \ ++ msgfmt --endianness little -v --statistics -o /dev/null $$cat; \ + done + + clean: diff -ruN newt-0.52.15.orig/fink/patches/escape_key.patch newt-0.52.15/fink/patches/escape_key.patch --- newt-0.52.15.orig/fink/patches/escape_key.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/escape_key.patch 2013-05-28 13:46:19.000000000 -0600 @@ -0,0 +1,17 @@ +Author: Julien-externe BLACHE +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584098 +Description: Fix to allow ESC key to work in whiptail. +Last-Updated: 2010-06-21 +Forwarded: no + +diff -ruN newt-0.52.11-old/form.c newt-0.52.11/form.c +--- newt-0.52.11-old/form.c 2009-09-24 16:03:09.000000000 +0100 ++++ newt-0.52.11/form.c 2010-06-21 13:09:31.000000000 +0100 +@@ -473,6 +473,7 @@ + if (!(form->flags & NEWT_FLAG_NOF12)) { + newtFormAddHotKey(co, NEWT_KEY_F12); + } ++ newtFormAddHotKey (co, NEWT_KEY_ESCAPE); + + if (vertBar) + form->vertBar = vertBar; diff -ruN newt-0.52.15.orig/fink/patches/messagebox_escape.patch newt-0.52.15/fink/patches/messagebox_escape.patch --- newt-0.52.15.orig/fink/patches/messagebox_escape.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/messagebox_escape.patch 2013-05-28 13:29:08.000000000 -0600 @@ -0,0 +1,19 @@ +Author: Alastair McKinstry +Description: Fix for bug: incorrect result given for selected by ESC pressed in whiptail +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=#665784 +Last-Updated: 2012-05-16 +Forwarded: no + +Index: newt-0.52.14/dialogboxes.c +=================================================================== +--- newt-0.52.14.orig/dialogboxes.c 2012-05-16 12:15:50.000000000 +0100 ++++ newt-0.52.14/dialogboxes.c 2012-05-16 12:16:29.000000000 +0100 +@@ -568,7 +568,7 @@ + + answer = newtFormGetCurrent(form); + +- if (answer == no) ++ if ((rc == DLG_OKAY) && (answer == no)) + return DLG_CANCEL; + } + else { diff -ruN newt-0.52.15.orig/fink/patches/python3.patch newt-0.52.15/fink/patches/python3.patch --- newt-0.52.15.orig/fink/patches/python3.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/python3.patch 2013-05-28 13:47:01.000000000 -0600 @@ -0,0 +1,496 @@ +Author: Matthias Klose +Description: Patches for python3 support. +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=691240 +Last-Updated: 2013-05-15 +Forwarded: no + +Index: newt-0.52.15/peanuts.py +=================================================================== +--- newt-0.52.15.orig/peanuts.py 2013-05-15 16:05:52.000000000 +0100 ++++ newt-0.52.15/peanuts.py 2013-05-15 16:05:52.000000000 +0100 +@@ -2,6 +2,7 @@ + + # Demo program to show use of python-newt module + ++from __future__ import absolute_import, print_function, unicode_literals + from snack import * + + screen = SnackScreen() +@@ -38,8 +39,8 @@ + + screen.finish() + +-print result +-print "listbox:", li.current() +-print "rb:", rb.getSelection() +-print "bb:", bb.buttonPressed(result) +-print "checkboxtree:", ct.getSelection() ++print(result) ++print("listbox:", li.current()) ++print("rb:", rb.getSelection()) ++print("bb:", bb.buttonPressed(result)) ++print("checkboxtree:", ct.getSelection()) +Index: newt-0.52.15/popcorn.py +=================================================================== +--- newt-0.52.15.orig/popcorn.py 2013-05-15 16:05:52.000000000 +0100 ++++ newt-0.52.15/popcorn.py 2013-05-15 16:05:52.000000000 +0100 +@@ -1,5 +1,6 @@ + #!/usr/bin/python + ++from __future__ import absolute_import, print_function, unicode_literals + from snack import * + import sys + +@@ -45,7 +46,7 @@ + r2 = SingleRadioButton("Radio 2", r1) + + def something(): +- print hello ++ print(hello) + + screen = SnackScreen() + +@@ -99,14 +100,14 @@ + + screen.finish() + +-print "val", e.value() +-print "check", cb.value() +-print "r1", r1.selected() +-print "listbox", li.current() ++print("val", e.value()) ++print("check", cb.value()) ++print("r1", r1.selected()) ++print("listbox", li.current()) + # returns a tuple of the wrapped text, the actual width, and the actual height +-print res ++print(res) + +-print foo +-print 'lbcw', lbcw +-print "ct selected", ct.getSelection() +-print "ct current", ct.getCurrent() ++print(foo) ++print('lbcw', lbcw) ++print("ct selected", ct.getSelection()) ++print("ct current", ct.getCurrent()) +Index: newt-0.52.15/snackmodule.c +=================================================================== +--- newt-0.52.15.orig/snackmodule.c 2013-05-15 16:05:52.000000000 +0100 ++++ newt-0.52.15/snackmodule.c 2013-05-15 16:05:52.000000000 +0100 +@@ -12,10 +12,24 @@ + #include + + #include "Python.h" ++#include "structmember.h" + #include "nls.h" + #include "newt.h" + #include "newt_pr.h" + ++#if PY_MAJOR_VERSION >= 3 ++ #define PyInt_FromLong PyLong_FromLong ++ #define PyInt_AsLong PyLong_AsLong ++ #define PyString_FromString PyUnicode_FromString ++ #define MOD_ERROR_VAL NULL ++ #define MOD_SUCCESS_VAL(val) val ++ #define MOD_INIT(name) PyMODINIT_FUNC PyInit_##name(void) ++#else ++ #define MOD_ERROR_VAL ++ #define MOD_SUCCESS_VAL(val) ++ #define MOD_INIT(name) void init##name(void) ++#endif ++ + typedef struct snackWidget_s snackWidget; + typedef struct snackGrid_s snackGrid; + typedef struct snackForm_s snackForm; +@@ -68,6 +82,8 @@ + static PyObject * ternaryWindow(PyObject * s, PyObject * args); + static snackWidget * checkboxTreeWidget(PyObject * s, PyObject * args, PyObject * kwargs); + static PyObject * pywstrlen(PyObject * s, PyObject * args); ++static PyObject * widget_get_checkboxValue(PyObject *self, void *closure); ++static PyObject * widget_get_radioValue(PyObject *self, void *closure); + + static PyMethodDef snackModuleMethods[] = { + { "button", (PyCFunction) buttonWidget, METH_VARARGS, NULL }, +@@ -107,12 +123,31 @@ + { NULL } + } ; + ++#if PY_MAJOR_VERSION >= 3 ++static struct PyModuleDef moduledef = { ++ PyModuleDef_HEAD_INIT, ++ "_snack", /* m_name */ ++ NULL, /* m_doc */ ++ -1, /* m_size */ ++ snackModuleMethods, /* m_methods */ ++ NULL, /* m_reload */ ++ NULL, /* m_traverse */ ++ NULL, /* m_clear */ ++ NULL, /* m_free */ ++ }; ++#endif ++ ++static struct PyGetSetDef widget_getset[] = { ++ { "checkboxValue", widget_get_checkboxValue, 0, NULL, NULL }, ++ { "radioValue", widget_get_radioValue, 0, NULL, NULL }, ++ { NULL } ++}; ++ + struct snackGrid_s { + PyObject_HEAD + newtGrid grid; + } ; + +-static PyObject * gridGetAttr(PyObject * s, char * name); + static PyObject * gridPlace(snackGrid * s, PyObject * args); + static PyObject * gridSetField(snackGrid * s, PyObject * args); + +@@ -123,20 +158,34 @@ + }; + + static PyTypeObject snackGridType = { +- PyObject_HEAD_INIT(&PyType_Type) +- 0, /* ob_size */ ++ PyVarObject_HEAD_INIT(&PyType_Type, 0) + "snackgrid", /* tp_name */ + sizeof(snackGrid), /* tp_size */ + 0, /* tp_itemsize */ + emptyDestructor, /* tp_dealloc */ + 0, /* tp_print */ +- gridGetAttr, /* tp_getattr */ ++ 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ ++ 0, /* tp_hash */ ++ 0, /* tp_call */ ++ 0, /* tp_str */ ++ PyObject_GenericGetAttr, /* tp_getattro */ ++ 0, /* tp_setattro */ ++ 0, /* tp_as_buffer */ ++ Py_TPFLAGS_DEFAULT, /* tp_flags */ ++ 0, /* tp_doc */ ++ 0, /* tp_traverse */ ++ 0, /* tp_clear */ ++ 0, /* tp_richcompare */ ++ 0, /* tp_weaklistoffset */ ++ 0, /* tp_iter */ ++ 0, /* tp_iternext */ ++ gridMethods /* tp_methods */ + }; + + struct snackForm_s { +@@ -144,7 +193,6 @@ + newtComponent fo; + } ; + +-static PyObject * formGetAttr(PyObject * s, char * name); + static PyObject * formAdd(snackForm * s, PyObject * args); + static PyObject * formDraw(snackForm * s, PyObject * args); + static PyObject * formRun(snackForm * s, PyObject * args); +@@ -165,20 +213,34 @@ + }; + + static PyTypeObject snackFormType = { +- PyObject_HEAD_INIT(&PyType_Type) +- 0, /* ob_size */ ++ PyVarObject_HEAD_INIT(&PyType_Type, 0) + "snackform", /* tp_name */ + sizeof(snackForm), /* tp_size */ + 0, /* tp_itemsize */ + emptyDestructor, /* tp_dealloc */ + 0, /* tp_print */ +- formGetAttr, /* tp_getattr */ ++ 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ ++ 0, /* tp_hash */ ++ 0, /* tp_call */ ++ 0, /* tp_str */ ++ PyObject_GenericGetAttr, /* tp_getattro */ ++ 0, /* tp_setattro */ ++ 0, /* tp_as_buffer */ ++ Py_TPFLAGS_DEFAULT, /* tp_flags */ ++ 0, /* tp_doc */ ++ 0, /* tp_traverse */ ++ 0, /* tp_clear */ ++ 0, /* tp_richcompare */ ++ 0, /* tp_weaklistoffset */ ++ 0, /* tp_iter */ ++ 0, /* tp_iternext */ ++ formMethods /* tp_methods */ + }; + + struct snackWidget_s { +@@ -191,7 +253,6 @@ + } ; + + static PyObject * widgetAddCallback(snackWidget * s, PyObject * args); +-static PyObject * widgetGetAttr(PyObject * s, char * name); + static void widgetDestructor(PyObject * s); + static PyObject * widgetEntrySetValue(snackWidget * s, PyObject * args); + static PyObject * widgetLabelText(snackWidget * s, PyObject * args); +@@ -255,21 +316,43 @@ + { NULL } + }; + ++static PyMemberDef widget_members[] = { ++ { "key" , T_INT, offsetof(snackWidget, co), 0, NULL }, ++ { "entryValue", T_STRING, offsetof(snackWidget, apointer), 0, NULL }, ++ { NULL } ++}; ++ + static PyTypeObject snackWidgetType = { +- PyObject_HEAD_INIT(&PyType_Type) +- 0, /* ob_size */ ++ PyVarObject_HEAD_INIT(&PyType_Type, 0) + "snackwidget", /* tp_name */ + sizeof(snackWidget), /* tp_size */ + 0, /* tp_itemsize */ + widgetDestructor, /* tp_dealloc */ + 0, /* tp_print */ +- widgetGetAttr, /* tp_getattr */ ++ 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ ++ 0, /* tp_hash */ ++ 0, /* tp_call */ ++ 0, /* tp_str */ ++ PyObject_GenericGetAttr, /* tp_getattro */ ++ 0, /* tp_setattro */ ++ 0, /* tp_as_buffer */ ++ Py_TPFLAGS_DEFAULT, /* tp_flags */ ++ 0, /* tp_doc */ ++ 0, /* tp_traverse */ ++ 0, /* tp_clear */ ++ 0, /* tp_richcompare */ ++ 0, /* tp_weaklistoffset */ ++ 0, /* tp_iter */ ++ 0, /* tp_iternext */ ++ widgetMethods, /* tp_methods */ ++ widget_members, /* tp_members */ ++ widget_getset /* tp_getset */ + }; + + static snackWidget * snackWidgetNew (void) { +@@ -863,10 +946,6 @@ + return grid; + } + +-static PyObject * gridGetAttr(PyObject * s, char * name) { +- return Py_FindMethod(gridMethods, s, name); +-} +- + static PyObject * gridPlace(snackGrid * grid, PyObject * args) { + int x, y; + +@@ -890,7 +969,7 @@ + &anchorFlags, &growFlags)) + return NULL; + +- if (w->ob_type == &snackWidgetType) { ++ if (Py_TYPE(w) == &snackWidgetType) { + newtGridSetField(grid->grid, x, y, NEWT_GRID_COMPONENT, + w->co, pLeft, pTop, pRight, pBottom, anchorFlags, + growFlags); +@@ -905,10 +984,6 @@ + return Py_None; + } + +-static PyObject * formGetAttr(PyObject * s, char * name) { +- return Py_FindMethod(formMethods, s, name); +-} +- + static PyObject * formDraw(snackForm * s, PyObject * args) { + newtDrawForm(s->fo); + +@@ -1000,20 +1075,18 @@ + return Py_None; + } + +-static PyObject * widgetGetAttr(PyObject * s, char * name) { +- snackWidget * w = (snackWidget *) s; ++static PyObject * widget_get_checkboxValue(PyObject *self, void *closure) ++{ ++ snackWidget *w = (snackWidget *)self; + +- if (!strcmp(name, "key")) { +- return Py_BuildValue("i", w->co); +- } else if (!strcmp(name, "entryValue")) { +- return Py_BuildValue("s", w->apointer); +- } else if (!strcmp(name, "checkboxValue")) { + return Py_BuildValue("i", w->achar == ' ' ? 0 : 1); +- } else if (!strcmp(name, "radioValue")) { +- return Py_BuildValue("i", newtRadioGetCurrent(w->co)); +- } ++} ++ ++static PyObject * widget_get_radioValue(PyObject *self, void *closure) ++{ ++ snackWidget *w = (snackWidget *)self; + +- return Py_FindMethod(widgetMethods, s, name); ++ return Py_BuildValue("i", newtRadioGetCurrent(w->co)); + } + + static void widgetDestructor(PyObject * o) { +@@ -1355,10 +1428,19 @@ + Py_DECREF(o); + } + +-void init_snack(void) { ++MOD_INIT(_snack) ++{ + PyObject * d, * m; + ++#if PY_MAJOR_VERSION >= 3 ++ m = PyModule_Create(&moduledef); ++#else + m = Py_InitModule("_snack", snackModuleMethods); ++#endif ++ ++ if (! m) ++ return MOD_ERROR_VAL; ++ + d = PyModule_GetDict(m); + + setitemstring_decref(d, "ANCHOR_LEFT", PyInt_FromLong(NEWT_ANCHOR_LEFT)); +@@ -1435,4 +1517,6 @@ + setitemstring_decref(d, "COLORSET_COMPACTBUTTON", PyInt_FromLong(NEWT_COLORSET_COMPACTBUTTON)); + setitemstring_decref(d, "COLORSET_ACTSELLISTBOX", PyInt_FromLong(NEWT_COLORSET_ACTSELLISTBOX)); + setitemstring_decref(d, "COLORSET_SELLISTBOX", PyInt_FromLong(NEWT_COLORSET_SELLISTBOX)); ++ ++ return MOD_SUCCESS_VAL(m); + } +Index: newt-0.52.15/snack.py +=================================================================== +--- newt-0.52.15.orig/snack.py 2013-05-15 16:05:52.000000000 +0100 ++++ newt-0.52.15/snack.py 2013-05-15 16:05:52.000000000 +0100 +@@ -39,9 +39,11 @@ + - EntryWindow + """ + ++ ++from __future__ import absolute_import, print_function, unicode_literals + import _snack +-import types + import string ++import sys + + from _snack import FLAG_DISABLED, FLAGS_SET, FLAGS_RESET, FLAGS_TOGGLE, FD_READ, FD_WRITE, FD_EXCEPT + +@@ -304,7 +306,7 @@ + "INSERT": _snack.KEY_INSERT, + " " : ord(" ") } + +-for n in hotkeys.keys(): ++for n in list(hotkeys.keys()): + hotkeys[hotkeys[n]] = n + for o,c in [ (ord(c),c) for c in string.ascii_letters+string.digits ]: + hotkeys[c] = o +@@ -328,14 +330,14 @@ + self.w.addhotkey(hotkeys[keyname]) + + def add(self, widget): +- if widget.__dict__.has_key('hotkeys'): ++ if 'hotkeys' in widget.__dict__: + for key in widget.hotkeys.keys(): + self.addHotKey(key) + +- if widget.__dict__.has_key('gridmembers'): ++ if 'gridmembers' in widget.__dict__: + for w in widget.gridmembers: + self.add(w) +- elif widget.__dict__.has_key('w'): ++ elif 'w' in widget.__dict__: + self.trans[widget.w.key] = widget + return self.w.add(widget.w) + return None +@@ -408,14 +410,14 @@ + if (growy): + gridFlags = gridFlags | _snack.GRID_GROWY + +- if (what.__dict__.has_key('g')): ++ if 'g' in what.__dict__: + return self.g.setfield(col, row, what.g, padding, anchorFlags, + gridFlags) + else: + return self.g.setfield(col, row, what.w, padding, anchorFlags) + + def __init__(self, *args): +- self.g = apply(_snack.grid, args) ++ self.g = _snack.grid(*args) + self.gridmembers = [] + + colorsets = { "ROOT" : _snack.COLORSET_ROOT, +@@ -604,9 +606,9 @@ + self.item = 0 + Grid.__init__(self, len(buttonlist), 1) + for blist in buttonlist: +- if (type(blist) == types.StringType): ++ if isinstance(blist, str if sys.version >= '3' else basestring): + title = blist +- value = string.lower(blist) ++ value = blist.lower() + elif len(blist) == 2: + (title, value) = blist + else: +@@ -622,7 +624,7 @@ + self.item = self.item + 1 + + def buttonPressed(self, result): +- if self.hotkeys.has_key(result): ++ if result in self.hotkeys: + return self.hotkeys[result] + + for (button, value) in self.list: +@@ -657,7 +659,7 @@ + self.form_created = 0 + args = list(args) + args[:0] = [self] +- apply(Grid.__init__, tuple(args)) ++ Grid.__init__(*tuple(args)) + + def add(self, widget, col, row, padding = (0, 0, 0, 0), + anchorLeft = 0, anchorTop = 0, anchorRight = 0, +@@ -713,7 +715,7 @@ + """ + def __init__(self, screen, title, *args): + myargs = (self, screen, title, None) + args +- apply(GridFormHelp.__init__, myargs) ++ GridFormHelp.__init__(*myargs) + + class CheckboxTree(Widget): + """ CheckboxTree combo widget, +@@ -788,7 +790,7 @@ + l = Listbox(height, scroll = scroll, returnExit = 1) + count = 0 + for item in items: +- if (type(item) == types.TupleType): ++ if type(item) == tuple: + (text, key) = item + else: + text = item +@@ -848,9 +850,9 @@ + count = 0 + entryList = [] + for n in prompts: +- if (type(n) == types.TupleType): ++ if type(n) == tuple: + (n, e) = n +- if (type(e) in types.StringTypes): ++ if isinstance(e, str if sys.version >= '3' else basestring): + e = Entry(entryWidth, e) + else: + e = Entry(entryWidth) diff -ruN newt-0.52.15.orig/fink/patches/python_init_once.patch newt-0.52.15/fink/patches/python_init_once.patch --- newt-0.52.15.orig/fink/patches/python_init_once.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/python_init_once.patch 2013-05-28 13:26:54.000000000 -0600 @@ -0,0 +1,26 @@ +Author: Alastair McKinstry +Description: newtInit() should only be called once +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=557960 +Forwarded: no +Last-Updated: 2011-12-04 + +Index: newt-0.52.15/snackmodule.c +=================================================================== +--- newt-0.52.15.orig/snackmodule.c 2013-05-15 16:05:12.000000000 +0100 ++++ newt-0.52.15/snackmodule.c 2013-05-15 16:05:12.000000000 +0100 +@@ -286,10 +286,14 @@ + } + + static PyObject * initScreen(PyObject * s, PyObject * args) { ++ static int init_newt = 1; + suspend.cb = NULL; + suspend.data = NULL; + +- newtInit(); ++ if (init_newt) { ++ newtInit(); ++ init_newt = 0; ++ } + newtCls(); + + Py_INCREF(Py_None); diff -ruN newt-0.52.15.orig/fink/patches/python_memory_allocation.patch newt-0.52.15/fink/patches/python_memory_allocation.patch --- newt-0.52.15.orig/fink/patches/python_memory_allocation.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/python_memory_allocation.patch 2013-05-28 13:26:34.000000000 -0600 @@ -0,0 +1,37 @@ +Author: Thomas Viehmann +Description: Fix for python memory handling +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=445392 +Last-Updated: 2009-04-20 +Forwarded: no + +Index: newt-0.52.15/snackmodule.c +=================================================================== +--- newt-0.52.15.orig/snackmodule.c 2013-05-14 16:35:23.000000000 +0100 ++++ newt-0.52.15/snackmodule.c 2013-05-14 16:35:50.000000000 +0100 +@@ -275,7 +275,7 @@ + static snackWidget * snackWidgetNew (void) { + snackWidget * widget; + +- widget = PyObject_NEW(snackWidget, &snackWidgetType); ++ widget = PyObject_New(snackWidget, &snackWidgetType); + if (!widget) + return NULL; + +@@ -841,7 +841,7 @@ + if (help == Py_None) + help = NULL; + +- form = PyObject_NEW(snackForm, &snackFormType); ++ form = PyObject_New(snackForm, &snackFormType); + form->fo = newtForm(NULL, help, 0); + + return form; +@@ -853,7 +853,7 @@ + + if (!PyArg_ParseTuple(args, "ii", &cols, &rows)) return NULL; + +- grid = PyObject_NEW(snackGrid, &snackGridType); ++ grid = PyObject_New(snackGrid, &snackGridType); + grid->grid = newtCreateGrid(cols, rows); + + return grid; diff -ruN newt-0.52.15.orig/fink/patches/tcl8x.patch newt-0.52.15/fink/patches/tcl8x.patch --- newt-0.52.15.orig/fink/patches/tcl8x.patch 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/patches/tcl8x.patch 2013-05-28 14:29:08.000000000 -0600 @@ -0,0 +1,18 @@ +Author: Alastair McKinstry +Description: For tcl, build and ship whiptcl.so +Forwarded: no +Last-Updated: 2011-12-03 + +Index: newt-0.52.14/Makefile.in +=================================================================== +--- newt-0.52.14.orig/Makefile.in 2011-12-03 09:48:35.000000000 +0000 ++++ newt-0.52.14/Makefile.in 2011-12-03 09:48:56.000000000 +0000 +@@ -59,7 +59,7 @@ + TARGET=depend $(PROGS) + endif + +-all: $(TARGET) _snackmodule.so ++all: $(TARGET) _snackmodule.so whiptcl.so + + test: test.o $(LIBNEWT) + $(CC) -g -o test test.o $(LIBNEWT) $(LDFLAGS) $(LIBS) diff -ruN newt-0.52.15.orig/fink/test-newt.sh newt-0.52.15/fink/test-newt.sh --- newt-0.52.15.orig/fink/test-newt.sh 1969-12-31 17:00:00.000000000 -0700 +++ newt-0.52.15/fink/test-newt.sh 2013-05-28 14:32:20.000000000 -0600 @@ -0,0 +1,9 @@ +#!/bin/bash +# the following should work +set -x + +whiptail --msgbox 'hoge a You are a normal test' 10 20 +whiptail --msgbox 'hoge a You are a normal test' 10 20 +whiptail --msgbox ha 1 4 +whiptail --msgbox ha 1 5 +