[coreboot-gerrit] New patch to review for coreboot: libpayload: Rename PDCurses-3.4 to PDCurses
Stefan Reinauer (stefan.reinauer@coreboot.org)
gerrit at coreboot.org
Tue Nov 10 20:20:19 CET 2015
Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12398
-gerrit
commit 831681ebd411bce33ee6e7e288b70b24e03e8c7c
Author: Stefan Reinauer <stefan.reinauer at coreboot.org>
Date: Tue Nov 10 09:00:41 2015 -0800
libpayload: Rename PDCurses-3.4 to PDCurses
Change-Id: If881ec130833c7e7e62caa3d31e350a531f5bc8e
Signed-off-by: Stefan Reinauer <stefan.reinauer at coreboot.org>
---
payloads/libpayload/bin/lpgcc | 2 +-
payloads/libpayload/curses/Makefile.inc | 2 +-
payloads/libpayload/curses/PDCurses-3.4/HISTORY | 1925 ------------
payloads/libpayload/curses/PDCurses-3.4/IMPLEMNT | 325 --
.../libpayload/curses/PDCurses-3.4/Makefile.in | 108 -
.../libpayload/curses/PDCurses-3.4/PDCurses.spec | 52 -
payloads/libpayload/curses/PDCurses-3.4/README | 48 -
payloads/libpayload/curses/PDCurses-3.4/aclocal.m4 | 613 ----
.../libpayload/curses/PDCurses-3.4/config.h.in | 133 -
.../libpayload/curses/PDCurses-3.4/configure.ac | 285 --
payloads/libpayload/curses/PDCurses-3.4/curses.h | 1385 ---------
payloads/libpayload/curses/PDCurses-3.4/curspriv.h | 142 -
.../libpayload/curses/PDCurses-3.4/demos/README | 25 -
.../curses/PDCurses-3.4/demos/firework.c | 148 -
.../libpayload/curses/PDCurses-3.4/demos/newdemo.c | 425 ---
.../libpayload/curses/PDCurses-3.4/demos/ptest.c | 285 --
.../libpayload/curses/PDCurses-3.4/demos/rain.c | 159 -
.../curses/PDCurses-3.4/demos/testcurs.c | 1144 -------
.../libpayload/curses/PDCurses-3.4/demos/tui.c | 821 -----
.../libpayload/curses/PDCurses-3.4/demos/tui.h | 67 -
.../libpayload/curses/PDCurses-3.4/demos/tuidemo.c | 233 --
.../libpayload/curses/PDCurses-3.4/demos/worm.c | 434 ---
.../libpayload/curses/PDCurses-3.4/demos/xmas.c | 957 ------
.../libpayload/curses/PDCurses-3.4/doc/Makefile | 37 -
.../libpayload/curses/PDCurses-3.4/doc/intro.txt | 833 -----
.../libpayload/curses/PDCurses-3.4/doc/manext.c | 119 -
.../libpayload/curses/PDCurses-3.4/doc/sdl.txt | 152 -
.../libpayload/curses/PDCurses-3.4/doc/x11.txt | 416 ---
payloads/libpayload/curses/PDCurses-3.4/dos/README | 49 -
.../libpayload/curses/PDCurses-3.4/dos/bccdos.lrf | 9 -
.../libpayload/curses/PDCurses-3.4/dos/bccdos.mak | 82 -
.../libpayload/curses/PDCurses-3.4/dos/gccdos.mak | 87 -
.../libpayload/curses/PDCurses-3.4/dos/mscdos.lrf | 50 -
.../libpayload/curses/PDCurses-3.4/dos/mscdos.mak | 114 -
.../libpayload/curses/PDCurses-3.4/dos/pdcclip.c | 129 -
.../libpayload/curses/PDCurses-3.4/dos/pdcdisp.c | 158 -
.../libpayload/curses/PDCurses-3.4/dos/pdcdos.h | 186 --
.../libpayload/curses/PDCurses-3.4/dos/pdcgetsc.c | 100 -
.../libpayload/curses/PDCurses-3.4/dos/pdckbd.c | 511 ----
.../libpayload/curses/PDCurses-3.4/dos/pdcscrn.c | 757 -----
.../libpayload/curses/PDCurses-3.4/dos/pdcsetsc.c | 99 -
.../libpayload/curses/PDCurses-3.4/dos/pdcutil.c | 105 -
.../curses/PDCurses-3.4/dos/wccdos16.mak | 48 -
.../curses/PDCurses-3.4/dos/wccdos4g.mak | 45 -
.../libpayload/curses/PDCurses-3.4/exp-base.def | 374 ---
.../libpayload/curses/PDCurses-3.4/exp-wide.def | 90 -
payloads/libpayload/curses/PDCurses-3.4/install-sh | 253 --
.../libpayload/curses/PDCurses-3.4/libobjs.mif | 26 -
.../libpayload/curses/PDCurses-3.4/makedist.mif | 20 -
payloads/libpayload/curses/PDCurses-3.4/os2/README | 43 -
.../libpayload/curses/PDCurses-3.4/os2/bccos2.mak | 90 -
.../libpayload/curses/PDCurses-3.4/os2/gccos2.mak | 148 -
.../libpayload/curses/PDCurses-3.4/os2/iccos2.lrf | 50 -
.../libpayload/curses/PDCurses-3.4/os2/iccos2.mak | 256 --
.../libpayload/curses/PDCurses-3.4/os2/pdcclip.c | 185 --
.../libpayload/curses/PDCurses-3.4/os2/pdcdisp.c | 95 -
.../libpayload/curses/PDCurses-3.4/os2/pdcgetsc.c | 91 -
.../libpayload/curses/PDCurses-3.4/os2/pdckbd.c | 519 ----
.../libpayload/curses/PDCurses-3.4/os2/pdcos2.h | 51 -
.../libpayload/curses/PDCurses-3.4/os2/pdcscrn.c | 422 ---
.../libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c | 110 -
.../libpayload/curses/PDCurses-3.4/os2/pdcutil.c | 36 -
.../libpayload/curses/PDCurses-3.4/os2/wccos2.mak | 43 -
payloads/libpayload/curses/PDCurses-3.4/panel.h | 58 -
.../libpayload/curses/PDCurses-3.4/pdcurses/README | 25 -
.../curses/PDCurses-3.4/pdcurses/addch.c | 408 ---
.../curses/PDCurses-3.4/pdcurses/addchstr.c | 242 --
.../curses/PDCurses-3.4/pdcurses/addstr.c | 237 --
.../libpayload/curses/PDCurses-3.4/pdcurses/attr.c | 349 ---
.../libpayload/curses/PDCurses-3.4/pdcurses/beep.c | 65 -
.../libpayload/curses/PDCurses-3.4/pdcurses/bkgd.c | 220 --
.../curses/PDCurses-3.4/pdcurses/border.c | 408 ---
.../curses/PDCurses-3.4/pdcurses/clear.c | 154 -
.../curses/PDCurses-3.4/pdcurses/color.c | 295 --
.../curses/PDCurses-3.4/pdcurses/debug.c | 81 -
.../curses/PDCurses-3.4/pdcurses/delch.c | 93 -
.../curses/PDCurses-3.4/pdcurses/deleteln.c | 208 --
.../curses/PDCurses-3.4/pdcurses/deprec.c | 29 -
.../curses/PDCurses-3.4/pdcurses/getch.c | 410 ---
.../curses/PDCurses-3.4/pdcurses/getstr.c | 471 ---
.../curses/PDCurses-3.4/pdcurses/getyx.c | 143 -
.../libpayload/curses/PDCurses-3.4/pdcurses/inch.c | 125 -
.../curses/PDCurses-3.4/pdcurses/inchstr.c | 211 --
.../curses/PDCurses-3.4/pdcurses/initscr.c | 342 ---
.../curses/PDCurses-3.4/pdcurses/inopts.c | 321 --
.../curses/PDCurses-3.4/pdcurses/insch.c | 268 --
.../curses/PDCurses-3.4/pdcurses/insstr.c | 261 --
.../curses/PDCurses-3.4/pdcurses/instr.c | 243 --
.../curses/PDCurses-3.4/pdcurses/kernel.c | 256 --
.../curses/PDCurses-3.4/pdcurses/keyname.c | 125 -
.../curses/PDCurses-3.4/pdcurses/mouse.c | 429 ---
.../libpayload/curses/PDCurses-3.4/pdcurses/move.c | 54 -
.../curses/PDCurses-3.4/pdcurses/outopts.c | 156 -
.../curses/PDCurses-3.4/pdcurses/overlay.c | 256 --
.../libpayload/curses/PDCurses-3.4/pdcurses/pad.c | 259 --
.../curses/PDCurses-3.4/pdcurses/panel.c | 630 ----
.../curses/PDCurses-3.4/pdcurses/printw.c | 123 -
.../curses/PDCurses-3.4/pdcurses/refresh.c | 276 --
.../curses/PDCurses-3.4/pdcurses/scanw.c | 575 ----
.../curses/PDCurses-3.4/pdcurses/scr_dump.c | 210 --
.../curses/PDCurses-3.4/pdcurses/scroll.c | 98 -
.../libpayload/curses/PDCurses-3.4/pdcurses/slk.c | 643 ----
.../curses/PDCurses-3.4/pdcurses/termattr.c | 176 --
.../curses/PDCurses-3.4/pdcurses/terminfo.c | 215 --
.../curses/PDCurses-3.4/pdcurses/touch.c | 160 -
.../libpayload/curses/PDCurses-3.4/pdcurses/util.c | 309 --
.../curses/PDCurses-3.4/pdcurses/window.c | 562 ----
.../libpayload/curses/PDCurses-3.4/sdl1/Makefile | 101 -
.../curses/PDCurses-3.4/sdl1/Makefile.mng | 105 -
.../libpayload/curses/PDCurses-3.4/sdl1/README | 33 -
.../libpayload/curses/PDCurses-3.4/sdl1/deffont.h | 385 ---
.../libpayload/curses/PDCurses-3.4/sdl1/deficon.h | 23 -
.../libpayload/curses/PDCurses-3.4/sdl1/pdcclip.c | 128 -
.../libpayload/curses/PDCurses-3.4/sdl1/pdcdisp.c | 301 --
.../libpayload/curses/PDCurses-3.4/sdl1/pdcgetsc.c | 32 -
.../libpayload/curses/PDCurses-3.4/sdl1/pdckbd.c | 389 ---
.../libpayload/curses/PDCurses-3.4/sdl1/pdcscrn.c | 295 --
.../libpayload/curses/PDCurses-3.4/sdl1/pdcsdl.h | 26 -
.../libpayload/curses/PDCurses-3.4/sdl1/pdcsetsc.c | 62 -
.../libpayload/curses/PDCurses-3.4/sdl1/pdcutil.c | 23 -
.../libpayload/curses/PDCurses-3.4/sdl1/sdltest.c | 81 -
payloads/libpayload/curses/PDCurses-3.4/term.h | 57 -
.../libpayload/curses/PDCurses-3.4/version.mif | 4 -
payloads/libpayload/curses/PDCurses-3.4/watcom.mif | 59 -
.../libpayload/curses/PDCurses-3.4/win32/README | 76 -
.../curses/PDCurses-3.4/win32/bccwin32.mak | 85 -
.../curses/PDCurses-3.4/win32/dmcwin32.mak | 253 --
.../curses/PDCurses-3.4/win32/gccwin32.mak | 128 -
.../curses/PDCurses-3.4/win32/lccwin32.mak | 273 --
.../curses/PDCurses-3.4/win32/mingwin32.mak | 121 -
.../libpayload/curses/PDCurses-3.4/win32/pdcclip.c | 145 -
.../libpayload/curses/PDCurses-3.4/win32/pdcdisp.c | 117 -
.../curses/PDCurses-3.4/win32/pdcgetsc.c | 57 -
.../libpayload/curses/PDCurses-3.4/win32/pdckbd.c | 656 ----
.../libpayload/curses/PDCurses-3.4/win32/pdcscrn.c | 620 ----
.../curses/PDCurses-3.4/win32/pdcsetsc.c | 89 -
.../curses/PDCurses-3.4/win32/pdcurses.ico | Bin 1078 -> 0 bytes
.../curses/PDCurses-3.4/win32/pdcurses.rc | 28 -
.../libpayload/curses/PDCurses-3.4/win32/pdcutil.c | 25 -
.../libpayload/curses/PDCurses-3.4/win32/pdcwin.h | 17 -
.../curses/PDCurses-3.4/win32/vcwin32.mak | 136 -
.../curses/PDCurses-3.4/win32/wccwin32.mak | 51 -
.../curses/PDCurses-3.4/x11/Makefile.aix.in | 234 --
.../libpayload/curses/PDCurses-3.4/x11/Makefile.in | 572 ----
payloads/libpayload/curses/PDCurses-3.4/x11/README | 64 -
.../libpayload/curses/PDCurses-3.4/x11/ScrollBox.c | 321 --
.../libpayload/curses/PDCurses-3.4/x11/ScrollBox.h | 53 -
.../curses/PDCurses-3.4/x11/ScrollBoxP.h | 72 -
.../curses/PDCurses-3.4/x11/big_icon.xbm | 46 -
.../libpayload/curses/PDCurses-3.4/x11/compose.h | 203 --
.../curses/PDCurses-3.4/x11/little_icon.xbm | 14 -
.../curses/PDCurses-3.4/x11/ncurses_cfg.h | 47 -
.../libpayload/curses/PDCurses-3.4/x11/pdcclip.c | 170 --
.../libpayload/curses/PDCurses-3.4/x11/pdcdisp.c | 132 -
.../libpayload/curses/PDCurses-3.4/x11/pdcgetsc.c | 30 -
.../libpayload/curses/PDCurses-3.4/x11/pdckbd.c | 102 -
.../libpayload/curses/PDCurses-3.4/x11/pdcscrn.c | 150 -
.../libpayload/curses/PDCurses-3.4/x11/pdcsetsc.c | 74 -
.../libpayload/curses/PDCurses-3.4/x11/pdcutil.c | 39 -
.../libpayload/curses/PDCurses-3.4/x11/pdcx11.c | 317 --
.../libpayload/curses/PDCurses-3.4/x11/pdcx11.h | 188 --
payloads/libpayload/curses/PDCurses-3.4/x11/sb.c | 152 -
payloads/libpayload/curses/PDCurses-3.4/x11/x11.c | 3229 --------------------
.../curses/PDCurses-3.4/x11/xcurses-config.in | 76 -
payloads/libpayload/curses/PDCurses/HISTORY | 1925 ++++++++++++
payloads/libpayload/curses/PDCurses/IMPLEMNT | 325 ++
payloads/libpayload/curses/PDCurses/Makefile.in | 108 +
payloads/libpayload/curses/PDCurses/PDCurses.spec | 52 +
payloads/libpayload/curses/PDCurses/README | 48 +
payloads/libpayload/curses/PDCurses/aclocal.m4 | 613 ++++
payloads/libpayload/curses/PDCurses/config.h.in | 133 +
payloads/libpayload/curses/PDCurses/configure.ac | 285 ++
payloads/libpayload/curses/PDCurses/curses.h | 1385 +++++++++
payloads/libpayload/curses/PDCurses/curspriv.h | 142 +
payloads/libpayload/curses/PDCurses/demos/README | 25 +
.../libpayload/curses/PDCurses/demos/firework.c | 148 +
.../libpayload/curses/PDCurses/demos/newdemo.c | 425 +++
payloads/libpayload/curses/PDCurses/demos/ptest.c | 285 ++
payloads/libpayload/curses/PDCurses/demos/rain.c | 159 +
.../libpayload/curses/PDCurses/demos/testcurs.c | 1144 +++++++
payloads/libpayload/curses/PDCurses/demos/tui.c | 821 +++++
payloads/libpayload/curses/PDCurses/demos/tui.h | 67 +
.../libpayload/curses/PDCurses/demos/tuidemo.c | 233 ++
payloads/libpayload/curses/PDCurses/demos/worm.c | 434 +++
payloads/libpayload/curses/PDCurses/demos/xmas.c | 957 ++++++
payloads/libpayload/curses/PDCurses/doc/Makefile | 37 +
payloads/libpayload/curses/PDCurses/doc/intro.txt | 833 +++++
payloads/libpayload/curses/PDCurses/doc/manext.c | 119 +
payloads/libpayload/curses/PDCurses/doc/sdl.txt | 152 +
payloads/libpayload/curses/PDCurses/doc/x11.txt | 416 +++
payloads/libpayload/curses/PDCurses/dos/README | 49 +
payloads/libpayload/curses/PDCurses/dos/bccdos.lrf | 9 +
payloads/libpayload/curses/PDCurses/dos/bccdos.mak | 82 +
payloads/libpayload/curses/PDCurses/dos/gccdos.mak | 87 +
payloads/libpayload/curses/PDCurses/dos/mscdos.lrf | 50 +
payloads/libpayload/curses/PDCurses/dos/mscdos.mak | 114 +
payloads/libpayload/curses/PDCurses/dos/pdcclip.c | 129 +
payloads/libpayload/curses/PDCurses/dos/pdcdisp.c | 158 +
payloads/libpayload/curses/PDCurses/dos/pdcdos.h | 186 ++
payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c | 100 +
payloads/libpayload/curses/PDCurses/dos/pdckbd.c | 511 ++++
payloads/libpayload/curses/PDCurses/dos/pdcscrn.c | 757 +++++
payloads/libpayload/curses/PDCurses/dos/pdcsetsc.c | 99 +
payloads/libpayload/curses/PDCurses/dos/pdcutil.c | 105 +
.../libpayload/curses/PDCurses/dos/wccdos16.mak | 48 +
.../libpayload/curses/PDCurses/dos/wccdos4g.mak | 45 +
payloads/libpayload/curses/PDCurses/exp-base.def | 374 +++
payloads/libpayload/curses/PDCurses/exp-wide.def | 90 +
payloads/libpayload/curses/PDCurses/install-sh | 253 ++
payloads/libpayload/curses/PDCurses/libobjs.mif | 26 +
payloads/libpayload/curses/PDCurses/makedist.mif | 20 +
payloads/libpayload/curses/PDCurses/os2/README | 43 +
payloads/libpayload/curses/PDCurses/os2/bccos2.mak | 90 +
payloads/libpayload/curses/PDCurses/os2/gccos2.mak | 148 +
payloads/libpayload/curses/PDCurses/os2/iccos2.lrf | 50 +
payloads/libpayload/curses/PDCurses/os2/iccos2.mak | 256 ++
payloads/libpayload/curses/PDCurses/os2/pdcclip.c | 185 ++
payloads/libpayload/curses/PDCurses/os2/pdcdisp.c | 95 +
payloads/libpayload/curses/PDCurses/os2/pdcgetsc.c | 91 +
payloads/libpayload/curses/PDCurses/os2/pdckbd.c | 519 ++++
payloads/libpayload/curses/PDCurses/os2/pdcos2.h | 51 +
payloads/libpayload/curses/PDCurses/os2/pdcscrn.c | 422 +++
payloads/libpayload/curses/PDCurses/os2/pdcsetsc.c | 110 +
payloads/libpayload/curses/PDCurses/os2/pdcutil.c | 36 +
payloads/libpayload/curses/PDCurses/os2/wccos2.mak | 43 +
payloads/libpayload/curses/PDCurses/panel.h | 58 +
.../libpayload/curses/PDCurses/pdcurses/README | 25 +
.../libpayload/curses/PDCurses/pdcurses/addch.c | 408 +++
.../libpayload/curses/PDCurses/pdcurses/addchstr.c | 242 ++
.../libpayload/curses/PDCurses/pdcurses/addstr.c | 237 ++
.../libpayload/curses/PDCurses/pdcurses/attr.c | 349 +++
.../libpayload/curses/PDCurses/pdcurses/beep.c | 65 +
.../libpayload/curses/PDCurses/pdcurses/bkgd.c | 220 ++
.../libpayload/curses/PDCurses/pdcurses/border.c | 408 +++
.../libpayload/curses/PDCurses/pdcurses/clear.c | 154 +
.../libpayload/curses/PDCurses/pdcurses/color.c | 295 ++
.../libpayload/curses/PDCurses/pdcurses/debug.c | 81 +
.../libpayload/curses/PDCurses/pdcurses/delch.c | 93 +
.../libpayload/curses/PDCurses/pdcurses/deleteln.c | 208 ++
.../libpayload/curses/PDCurses/pdcurses/deprec.c | 29 +
.../libpayload/curses/PDCurses/pdcurses/getch.c | 410 +++
.../libpayload/curses/PDCurses/pdcurses/getstr.c | 471 +++
.../libpayload/curses/PDCurses/pdcurses/getyx.c | 143 +
.../libpayload/curses/PDCurses/pdcurses/inch.c | 125 +
.../libpayload/curses/PDCurses/pdcurses/inchstr.c | 211 ++
.../libpayload/curses/PDCurses/pdcurses/initscr.c | 342 +++
.../libpayload/curses/PDCurses/pdcurses/inopts.c | 321 ++
.../libpayload/curses/PDCurses/pdcurses/insch.c | 268 ++
.../libpayload/curses/PDCurses/pdcurses/insstr.c | 261 ++
.../libpayload/curses/PDCurses/pdcurses/instr.c | 243 ++
.../libpayload/curses/PDCurses/pdcurses/kernel.c | 256 ++
.../libpayload/curses/PDCurses/pdcurses/keyname.c | 125 +
.../libpayload/curses/PDCurses/pdcurses/mouse.c | 429 +++
.../libpayload/curses/PDCurses/pdcurses/move.c | 54 +
.../libpayload/curses/PDCurses/pdcurses/outopts.c | 156 +
.../libpayload/curses/PDCurses/pdcurses/overlay.c | 256 ++
payloads/libpayload/curses/PDCurses/pdcurses/pad.c | 259 ++
.../libpayload/curses/PDCurses/pdcurses/panel.c | 630 ++++
.../libpayload/curses/PDCurses/pdcurses/printw.c | 123 +
.../libpayload/curses/PDCurses/pdcurses/refresh.c | 276 ++
.../libpayload/curses/PDCurses/pdcurses/scanw.c | 575 ++++
.../libpayload/curses/PDCurses/pdcurses/scr_dump.c | 210 ++
.../libpayload/curses/PDCurses/pdcurses/scroll.c | 98 +
payloads/libpayload/curses/PDCurses/pdcurses/slk.c | 643 ++++
.../libpayload/curses/PDCurses/pdcurses/termattr.c | 176 ++
.../libpayload/curses/PDCurses/pdcurses/terminfo.c | 215 ++
.../libpayload/curses/PDCurses/pdcurses/touch.c | 160 +
.../libpayload/curses/PDCurses/pdcurses/util.c | 309 ++
.../libpayload/curses/PDCurses/pdcurses/window.c | 562 ++++
payloads/libpayload/curses/PDCurses/sdl1/Makefile | 101 +
.../libpayload/curses/PDCurses/sdl1/Makefile.mng | 105 +
payloads/libpayload/curses/PDCurses/sdl1/README | 33 +
payloads/libpayload/curses/PDCurses/sdl1/deffont.h | 385 +++
payloads/libpayload/curses/PDCurses/sdl1/deficon.h | 23 +
payloads/libpayload/curses/PDCurses/sdl1/pdcclip.c | 128 +
payloads/libpayload/curses/PDCurses/sdl1/pdcdisp.c | 301 ++
.../libpayload/curses/PDCurses/sdl1/pdcgetsc.c | 32 +
payloads/libpayload/curses/PDCurses/sdl1/pdckbd.c | 389 +++
payloads/libpayload/curses/PDCurses/sdl1/pdcscrn.c | 295 ++
payloads/libpayload/curses/PDCurses/sdl1/pdcsdl.h | 26 +
.../libpayload/curses/PDCurses/sdl1/pdcsetsc.c | 62 +
payloads/libpayload/curses/PDCurses/sdl1/pdcutil.c | 23 +
payloads/libpayload/curses/PDCurses/sdl1/sdltest.c | 81 +
payloads/libpayload/curses/PDCurses/term.h | 57 +
payloads/libpayload/curses/PDCurses/version.mif | 4 +
payloads/libpayload/curses/PDCurses/watcom.mif | 59 +
payloads/libpayload/curses/PDCurses/win32/README | 76 +
.../libpayload/curses/PDCurses/win32/bccwin32.mak | 85 +
.../libpayload/curses/PDCurses/win32/dmcwin32.mak | 253 ++
.../libpayload/curses/PDCurses/win32/gccwin32.mak | 128 +
.../libpayload/curses/PDCurses/win32/lccwin32.mak | 273 ++
.../libpayload/curses/PDCurses/win32/mingwin32.mak | 121 +
.../libpayload/curses/PDCurses/win32/pdcclip.c | 145 +
.../libpayload/curses/PDCurses/win32/pdcdisp.c | 117 +
.../libpayload/curses/PDCurses/win32/pdcgetsc.c | 57 +
payloads/libpayload/curses/PDCurses/win32/pdckbd.c | 656 ++++
.../libpayload/curses/PDCurses/win32/pdcscrn.c | 620 ++++
.../libpayload/curses/PDCurses/win32/pdcsetsc.c | 89 +
.../libpayload/curses/PDCurses/win32/pdcurses.ico | Bin 0 -> 1078 bytes
.../libpayload/curses/PDCurses/win32/pdcurses.rc | 28 +
.../libpayload/curses/PDCurses/win32/pdcutil.c | 25 +
payloads/libpayload/curses/PDCurses/win32/pdcwin.h | 17 +
.../libpayload/curses/PDCurses/win32/vcwin32.mak | 136 +
.../libpayload/curses/PDCurses/win32/wccwin32.mak | 51 +
.../libpayload/curses/PDCurses/x11/Makefile.aix.in | 234 ++
.../libpayload/curses/PDCurses/x11/Makefile.in | 572 ++++
payloads/libpayload/curses/PDCurses/x11/README | 64 +
.../libpayload/curses/PDCurses/x11/ScrollBox.c | 321 ++
.../libpayload/curses/PDCurses/x11/ScrollBox.h | 53 +
.../libpayload/curses/PDCurses/x11/ScrollBoxP.h | 72 +
.../libpayload/curses/PDCurses/x11/big_icon.xbm | 46 +
payloads/libpayload/curses/PDCurses/x11/compose.h | 203 ++
.../libpayload/curses/PDCurses/x11/little_icon.xbm | 14 +
.../libpayload/curses/PDCurses/x11/ncurses_cfg.h | 47 +
payloads/libpayload/curses/PDCurses/x11/pdcclip.c | 170 ++
payloads/libpayload/curses/PDCurses/x11/pdcdisp.c | 132 +
payloads/libpayload/curses/PDCurses/x11/pdcgetsc.c | 30 +
payloads/libpayload/curses/PDCurses/x11/pdckbd.c | 102 +
payloads/libpayload/curses/PDCurses/x11/pdcscrn.c | 150 +
payloads/libpayload/curses/PDCurses/x11/pdcsetsc.c | 74 +
payloads/libpayload/curses/PDCurses/x11/pdcutil.c | 39 +
payloads/libpayload/curses/PDCurses/x11/pdcx11.c | 317 ++
payloads/libpayload/curses/PDCurses/x11/pdcx11.h | 188 ++
payloads/libpayload/curses/PDCurses/x11/sb.c | 152 +
payloads/libpayload/curses/PDCurses/x11/x11.c | 3229 ++++++++++++++++++++
.../curses/PDCurses/x11/xcurses-config.in | 76 +
326 files changed, 39149 insertions(+), 39149 deletions(-)
diff --git a/payloads/libpayload/bin/lpgcc b/payloads/libpayload/bin/lpgcc
index 8d0260b..0974d03 100755
--- a/payloads/libpayload/bin/lpgcc
+++ b/payloads/libpayload/bin/lpgcc
@@ -147,7 +147,7 @@ done
_CFLAGS="$_ARCHEXTRA -nostdinc -nostdlib -I$BASE/../build -I$_INCDIR -I$_ARCHINCDIR -D__LIBPAYLOAD__=1"
if [ "$CONFIG_LP_PDCURSES" = y ]; then
- _CFLAGS="$_CFLAGS -I$BASE/../curses/PDCurses-3.4"
+ _CFLAGS="$_CFLAGS -I$BASE/../curses/PDCurses"
fi
if [ "$CONFIG_LP_TINYCURSES" = y ]; then
diff --git a/payloads/libpayload/curses/Makefile.inc b/payloads/libpayload/curses/Makefile.inc
index f7aa516..d0ce474 100644
--- a/payloads/libpayload/curses/Makefile.inc
+++ b/payloads/libpayload/curses/Makefile.inc
@@ -38,7 +38,7 @@ libcurses-$(CONFIG_LP_TINYCURSES) += colors.c
includes-$(CONFIG_LP_TINYCURSES) += curses.h
ifeq ($(CONFIG_LP_PDCURSES),y)
-PDCURSES := PDCurses-3.4
+PDCURSES := PDCurses
INCLUDES += -D_LP64=0 -Icurses/$(PDCURSES) -Icurses/pdcurses-backend -Icurses/menu -Icurses/form
endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/HISTORY b/payloads/libpayload/curses/PDCurses-3.4/HISTORY
deleted file mode 100644
index 7cf5b71..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/HISTORY
+++ /dev/null
@@ -1,1925 +0,0 @@
-PDCurses 3.4 - 2008/09/08
-=========================
-
-Nothing much new this time, but I've been sitting on some bug fixes for
-almost a year, so it's overdue. Apart from bugs, the main changes are in
-the documentation.
-
-New features:
-
-- setsyx() is now a function rather than a macro.
-
-Bug fixes and such:
-
-- In x11, the xc_atrtab table size was under-calculated by half,
- resulting in crashes at (oddly) certain line counts. (It should've
- crashed a lot more.) Reported by Mark Hessling.
-
-- Test for moved cursor was omitting the window origin offset. Reported
- by Carey Evans.
-
-- Is DOS and OS/2, the value for max items in key_table was still wrong.
- Reported by C.E.
-
-- Changed isendwin() so it won't crash after delscreen().
-
-- Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs().
-
-- Disable QuickEdit Mode when enabling mouse input for the Win32
- console; reported by "Zalapkrakna".
-
-- Fix for building under Innotek C (I hope). Report by Elbert Pol, fix
- courtesy of Paul Smedley.
-
-- Unified exports list with no duplicates -- pdcurses.def is now built
- from components at compile time.
-
-- Don't install curspriv.h, and don't include it with binary
- distributions.
-
-- Building DLLs with LCC is no longer supported, due to the primitive
- nature of its make.exe.
-
-- Export the terminfo stub functions from the DLLs, too.
-
-- Added support for Apple's ".dylib" in configure. Suggested by Marc
- Vaillant (who says it's needed with OS 10.5.)
-
-- In sdl1/Makefile.mng, ensure that CC is set.
-
-- In the gcc makefiles, "$?" didn't really have the desired effect --
- _all_ the dependencies showed up on the command line, including
- curses.h, and pdcurses.a twice. And apparently, this can mess up some
- old version (?) of MinGW. So, revert to spelling out "tuidemo.o
- tui.o". Reported by "Howard L."
-
-- Extensive documentation revision and reorganizing. More to do here.
- For example, I moved the build instructions from INSTALL (which never
- really described installation) to the platform-specific READMEs.
-
-- New indentation standard: four spaces, no tabs.
-
-------------------------------------------------------------------------
-
-PDCurses 3.3 - 2007/07/11
-=========================
-
-This release adds an SDL backend, refines the demos, and is faster in
-some cases.
-
-New features:
-
-- SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details.
-
-- Double-buffering -- minimize screen writes by checking, in doupdate()
- and wnoutrefresh(), whether the changes to curscr are really changes.
- In most cases, this makes no difference (writes were already limited
- to areas marked as changed), but it can greatly reduce the overhead
- from touchwin(). It also helps if you have small, separated updates on
- the same line.
-
-- The PDC_RGB colors can now be used, or not, with any platform (as long
- as the same options are used when compiling both the library and
- apps). This may help if you have apps that are hardwired to assume
- certain definitions.
-
-- Restored the use_default_colors() stuff from the ncurses versions of
- the rain and worm demos, to make them "transparent" (this is useful
- now, with the SDL port); added transparency to newdemo.
-
-- Added setlocale() to tuidemo, to make it easier to browse files with
- non-ASCII characters.
-
-- Sped up firework demo by replacing unneeded clear() and init_pair()
- calls.
-
-- Allow exit from ptest demo by typing 'q'.
-
-- New functions for implementors: PDC_pair_content() and PDC_init_pair()
- (the old pdc_atrtab stuff was arguably the last remnant of code in the
- pdcurses directory that was based on platform details).
-
-Bug fixes and such:
-
-- Implicit wrefresh() needs to be called from wgetch() when the window's
- cursor position is changed, even if there are no other changes.
-
-- Set SP->audible on a per-platform basis, as was documented in
- IMPLEMNT, but not actually being done.
-
-- Minor tweaks for efficiency and readability, notably with wscrl().
-
-- tuidemo didn't work correctly on monochrome screens when A_COLOR was
- defined -- the color pair numbers appeared as the corresponding
- character; also, the input box was (I now realize) broken with ncurses
- since our 2.7, and broke more subtly with PDCurses' new implicit
- refresh handling; also, the path to the default file for the Browse
- function was a bit off.
-
-- Assume in the demos that curs_set() is always available -- there's no
- good test for this, and the existing tests were bogus.
-
-- Made the command-line parameter for ptest work. (If given an argument,
- it delays that number of milliseconds between changes, instead of
- waiting for a key, and automatically loops five times.)
-
-- Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside
- the platform directory.
-
-- Building the X11 port with Cygwin required manually editing the
- Makefile after configuring; no longer. Reported by Warren W. Gay.
-
-- Minor tightening of configure and makefiles.
-
-- Bogus references to "ACS_BLCORNER" in the border man page. Reported by
- "Walrii".
-
-- slk_wlabel() was not documented.
-
-- Spelling cleanup.
-
-- Changed RCSIDs to not end with a semicolon -- avoids warnings when
- compiling with the -pedantic option.
-
-- Merged latin-1.txt into x11.txt.
-
-- Updated config.guess and config.sub to more recent versions.
-
-------------------------------------------------------------------------
-
-PDCurses 3.2 - 2007/06/06
-=========================
-
-This release mainly covers changes to the build process, along with a
-few structural changes.
-
-New features:
-
-- The panel library has been folded into the main library. What this
- means is that you no longer need to specify "-lpanel" or equivalent
- when linking programs that use panel functionality with PDCurses;
- however, panel.lib/.a is still provided (as a copy of pdcurses.lib/.a)
- so that you can, optionally, build your projects with no changes. It
- also means that panel functionality is available with the DLL or
- shared library. Note that panel.h remains separate from curses.h.
-
-- Setting the PDCURSES_SRCDIR environment variable is no longer required
- before building, unless you want to build in a location other than the
- platform directory. (See INSTALL.)
-
-- MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y"
- option. Partly due to Timofei Shatrov.
-
-- Support for the Digital Mars compiler.
-
-- Watcom makefiles now use the "loaddll" feature.
-
-Bug fixes and such:
-
-- Eliminated the platform defines (DOS, WIN32, OS2, XCURSES) from
- curses.h, except for X11-specific SCREEN elements and functions.
- Dynamically-linked X11 apps built against an old version will have
- their red and blue swapped until rebuilt. (You can define PDC_RGB to
- build the library with the old color scheme, but it would also have to
- be defined when building any new app.) Any app that depends on
- PDCurses to determine the platform it's building on will have to make
- other arrangements.
-
-- Documentation cleanup -- added more details; removed some content that
- didn't apply to PDCurses; moved the doc-building tool to the doc
- directory; changed *.man to *.txt.
-
-- The EMX makefile now accepts "DLL=Y", builds pdcurses.dll instead of
- curses.dll, builds either the static library or the DLL (not both at
- once), and links all the demos with the DLL when building it.
-
-- In Win32, read the registry only when needed: when init_color() or
- color_content() is called, instead of at startup.
-
-- A few additional consts in declarations.
-
-- The Win32 compilers that build DLLs now use common .def files.
-
-- panel.h functions sorted by name, as with other .h files; curses.h is
- no longer included by repeated inclusions of panel.h or term.h.
-
-- Simplified Borland makefiles.
-
-- Makefile.aix.in depended on a file, xcurses.exp, that was never there.
- This problem was fixed as part of the change to common .def files;
- however, I still haven't been able to test building on AIX.
-
-------------------------------------------------------------------------
-
-PDCurses 3.1 - 2007/05/03
-=========================
-
-Primarily clipboard-related fixes, and special UTF-8 support.
-
-New features:
-
-- "Force UTF-8" mode, a compile-time option to force the use of UTF-8
- for multibyte strings, instead of the system locale. (Mainly for
- Windows, where UTF-8 doesn't work well in the console.) See INSTALL.
-
-- Multibyte string support in PDC_*clipboard() functions, and in Win32's
- PDC_set_title().
-
-- Added the global string "ttytype", per other curses implementations,
- for compatibility with old BSD curses.
-
-- Real functions for the "quasi-standard aliases" -- crmode(),
- nocrmode(), draino(), resetterm(), fixterm() and saveterm().
- (Corresponding macros removed.)
-
-Bug fixes and such:
-
-- In Win32, under NT-family OSes, the scrollback buffer would be
- restored by endwin(), but would not be turned off again when resuming
- curses after an endwin(). The result was an odd, partly-scrolled-up
- display. Now, the buffer is toggled by PDC_reset_prog_mode() and
- PDC_reset_shell_mode(), so it's properly turned off when returning
- from an endwin().
-
-- In 3.0, selection in X11 didn't work. (Well, the selecting worked, but
- the pasting elsewhere didn't.) This was due to the attempted fix
- "don't return selection start as a press event," so that's been
- reverted for now.
-
-- PDC_setclipboard() was locking up in X11. Reported by Mark Hessling.
-
-- Missing underscore in the declaration of XC_say() prevented
- compilation with PDCDEBUG defined. Reported by M.H.
-
-- Off-by-one error in copywin() -- the maximum coordinates for the
- destination window should be inclusive. Reported by Tiago Dionizio.
-
-- Start in echo mode, per X/Open. Reported by T.D.
-
-- Strip leading and trailing spaces from slk labels, per a literal
- reading of X/Open. Suggested by Alexey Miheev (about ncurses, but it
- also applies here).
-
-- The #endif for __PDCURSES__ needs to come _after_ the closing of the
- extern "C". This has been broken since June 2005. Fortunately (?), it
- only shows up if the file is included multiple times, and then only in
- C++. Reported on the DOSBox forums.
-
-- Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the
- clipboard functions in Win32, to match the console.
-
-- Changed the format of the string returned from longname().
-
-- In the clipboard test in the testcurs demo, use a single mvprintw() to
- display the return from PDC_getclipboard(), instead of a loop of
- addch(), which was incompatible with multibyte strings.
-
-- Moved has_key() into the keyname module, and documented it.
-
-- Moved RIPPEDOFFLINE to curspriv.h.
-
-- Typos in IMPLEMNT.
-
-------------------------------------------------------------------------
-
-PDCurses 3.0 - 2007/04/01
-=========================
-
-The focuses for this release are X/Open conformance, i18n, better color
-support, cleaner code, and more consistency across platforms.
-
-This is only a brief summary of the changes. For more details, consult
-the CVS log.
-
-New features:
-
-- An almost complete implementation of X/Open curses, including the
- wide-character and attr_t functions (but excluding terminfo). The
- wide-character functions work only in Win32 and X11, for now, and
- require building the library with the appropriate options (see
- INSTALL). Note that this is a simplistic implementation, with exactly
- one wchar_t per cchar_t; the only characters it handles properly are
- those that are one column wide.
-
-- Support for X Input Methods in the X11 port (see INSTALL). When built
- this way, the internal compose key support is disabled in favor of
- XIM's, which is a lot more complete, although you lose the box cursor.
-
-- Multibyte character support in the non-wide string handling functions,
- per X/Open. This only works when the library is built with wide-
- character support enabled.
-
-- Mouse support for DOS and OS/2. The DOS version includes untested
- support for scroll wheels, via the "CuteMouse" driver.
-
-- An ncurses-compatible mouse interface, which can work in parallel with
- the traditional PDCurses mouse interface. See the man page (or
- mouse.c) for details.
-
-- DOS and OS/2 can now return modifiers as keys, as in Win32 and X11.
-
-- COLORS, which had been fixed at 8, is now either 8 or 16, depending on
- the terminal -- usually 16. When it's 8, blinking mode is enabled
- (controlled as before by the A_BLINK attribute); when it's 16, bright
- background colors are used instead. On platforms where it can be
- changed, the mode is toggled by the new function PDC_set_blink().
- PDCurses tries to set PDC_set_blink(FALSE) at startup. (In Win32, it's
- always set to FALSE; in DOS, with other than an EGA or VGA card, it
- can't be.) Also, COLORS is now set to 0 until start_color() is called.
-
-- Corresponding to the change in COLORS, COLOR_PAIRS is now 256.
-
-- Working init_color() and color_content(). The OS/2 version of
- init_color() works only in a full-screen session; the Win32 version
- works only in windowed mode, and only in NT-family OSes; the DOS
- version works only with VGA adapters (real or simulated). The Win32
- version is based mostly on James Brown's setconsoleinfo.c
- (www.catch22.net).
-
-- use_default_colors(), assume_default_colors(), and curses_version(),
- after ncurses.
-
-- Added global int TABSIZE, after ncurses and Solaris curses; removed
- window-specific _tabsize.
-
-- Logical extension to the wide-character slk_ funcs: slk_wlabel(), for
- retrieving the label as a wide-character string.
-
-- A non-macro implementation of ncurses' wresize().
-
-- Working putwin(), getwin(), scr_dump() and scr_restore().
-
-- A working acs_map[]. Characters from the ACS are now stored in window
- structures as a regular character plus the A_ALTCHARSET attribute, and
- rendered to the ACS only when displayed. (This allows, for example,
- the correct display on one platform of windows saved from another.)
-
-- In X11, allow selection and paste of UTF8_STRING.
-
-- The testcurs demo now includes a color chart and init_color() test, a
- wide character input test, a display of wide ACS characters with
- sample Unicode text, a specific test of flash(), more info in the
- resize test, and attempts to change the width as well as the height.
-
-- Command-line option for MSVC to build DLLs (see INSTALL). Also, the
- naming distinction for DLLs ("curses" vs. "pdcurses") is abandoned,
- and either the static lib or DLL is built, not both at once (except
- for X11).
-
-- For backwards compatibility, a special module just for deprecated
- functions -- currently PDC_check_bios_key(), PDC_get_bios_key(),
- PDC_get_ctrl_break() and PDC_set_ctrl_break(). These shouldn't be used
- in applications, but currently are... in fact, all the "private"
- functions (in curspriv.h) are subject to change and should be avoided.
-
-- A new document, IMPLEMNT, describing PDCurses' internal functions for
- those wishing to port it to new platforms.
-
-- Mark Hessling has released the X11 port to the public domain.
- (However, x11/ScrollBox* retain their separate copyright and MIT-like
- license.)
-
-Bug fixes and such:
-
-- Most of the macros have been removed (along with the NOMACROS ifdef).
- The only remaining ones are those which have to be macros to work, and
- those that are required by X/Open to be macros. There were numerous
- problems with the macros, and no apparent reason to keep them, except
- tradition -- although it was PCcurses 1.x that first omitted them.
-
-- Clean separation of platform-specific code from the rest. Outside of
- the platform directories, there remain only a few ifdefs in curses.h
- and curspriv.h.
-
-- General reorganization and simplification.
-
-- Documentation revisions.
-
-- When expanding control characters in addch() or insch(), retain the
- attributes from the chtype.
-
-- Preserve the A_ALTCHARSET attribute in addch() and insch().
-
-- Per X/Open, beep() should always return OK.
-
-- On platforms with a controlling terminal (i.e., not X11), curs_set(1)
- now sets the cursor to the shape it had at the time of initscr(),
- rather than always making it small. (Exception for DOS: If the video
- mode has been changed by PDC_resize_screen(), curs_set(1) reverts to
- line 6/7.) The shape is taken from SP->orig_cursor (the meaning of
- which is platform-specific).
-
-- Stop updating the cursor position when the cursor is invisible (this
- gives a huge performance boost in Win 9x); update the cursor position
- from curs_set() if changing from invisible to visible.
-
-- Some tweaking of the behavior of def_prog_mode(), def_shell_mode(),
- savetty(), reset_prog_mode(), reset_shell_mode() and resetty()...
- still not quite right.
-
-- flash() was not implemented for Win32 or X. A portable implementation
- is now used for all platforms. Note that it's much slower than the
- old (DOS and OS/2) version, but this is only apparent on an extremely
- slow machine, such as an XT.
-
-- In getstr(), backspacing on high-bit characters caused a double
- backspace.
-
-- hline() and vline() used an incorrect (off by one) interpretation of
- _maxx and _maxy. If values of n greater than the max were specified,
- these functions could access unallocated memory.
-
-- innstr() is supposed to return the number of characters read, not just
- OK or ERR. Reported by Mike Aubury.
-
-- A proper implementation of insch() -- the PDC_chadd()-based version
- wasn't handling the control characters correctly.
-
-- Return ASCII and control key names from keyname() (problem revealed by
- ncurses' movewindow test); also, per X/Open, return "UNKNOWN KEY" when
- appropriate, rather than "NO KEY NAME".
-
-- Turn off the cursor from leaveok(TRUE), even in X11; leaveok(FALSE)
- now calls curs_set(1), regardless of the previous state of the cursor.
-
-- In the slk area, BUTTON_CLICKED events now translate to function keys,
- along with the previously recognized BUTTON_PRESSED events. Of course,
- it should really be checking the events specified by map_button(),
- which still doesn't work.
-
-- napms(0) now returns immediately.
-
-- A unified napms() implementation for DOS -- no longer throttles the
- CPU when built with any compiler.
-
-- Allow backspace editing of the nocbreak() buffer.
-
-- pair_content(0, ...) is valid.
-
-- There was no check to ensure that the pnoutrefresh() window fit within
- the screen. It now returns an ERR if it doesn't.
-
-- In X11, resize_term() must be called with parameters (0, 0), and only
- when SP->resized is set, else it returns ERR.
-
-- Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's
- web site.
-
-- slk_clear() now removes the buttons completely, as in ncurses.
-
-- Use the current foreground color for the line attributes (underline,
- left, right), unless PDC_set_line_color() is explicitly called. After
- setting the line color, you can reset it to this mode via
- "PDC_set_line_color(-1)".
-
-- Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER().
-
-- Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch()
- are now (again) the core functions.
-
-- Dropped or made static many obsolete, unused, and/or broken functions,
- including PDC_chg_attrs(), PDC_cursor_on() and _off(),
- PDC_fix_cursor(), PDC_get_attribute(), PDC_get_cur_col() and _row(),
- PDC_set_80x25(), PDC_set_cursor_mode(), PDC_set_rows(),
- PDC_wunderline(), PDC_wleftline(), PDC_wrightline(),
- XCursesModifierPress() and XCurses_refresh_scrollbar().
-
-- Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR
- _ENDLINE, _FULLWIN and _SCROLLWIN.
-
-- Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*,
- _lasts*.
-
-- Obsolete/unused elements of the SCREEN struct: orgcbr, visible_cursor,
- sizeable, shell, blank, cursor, orig_emulation, font, orig_font,
- tahead, adapter, scrnmode, kbdinfo, direct_video, video_page,
- video_seg, video_ofs, bogus_adapter. (Some of these persist outside
- the SCREEN struct, in the platform directories.) Added mouse_wait and
- key_code.
-
-- Removed all the EMALLOC stuff. Straight malloc calls were used
- elsewhere; it was undocumented outside of comments in curspriv.h; and
- there are better ways to use a substitute malloc().
-
-- Single mouse clicks are now reportable on all platforms (not just
- double-clicks). And in general, mouse event reporting is more
- consistent across platforms.
-
-- The mouse cursor no longer appears in full-screen mode in Win32 unless
- a nonzero mouse event mask is used.
-
-- ALT-keypad input now works in Win32.
-
-- In Win32, SetConsoleMode(ENABLE_WINDOW_INPUT) is not useful, and
- appears to be the source of a four-year-old bug report (hanging in
- THE) by Phil Smith.
-
-- Removed the PDC_THREAD_BUILD stuff, which has never worked. For the
- record: PDCurses is not thread-safe. Neither is ncurses; and the
- X/Open curses spec explicitly makes it a non-requirement.
-
-- With the internal compose key system in the X11 port, modifier keys
- were breaking out of the compose state, making it impossible to type
- accented capitals, etc. Also, Multi_key is now the default compose
- key, instead of leaving it undefined by default; and a few more combos
- are supported.
-
-- In X11, the first reported mouse event after startup always read as a
- double-click at position 0, 0. (This bug was introduced in 2.8.)
-
-- In X11, don't return selection start as a press event. (Shift-click on
- button 1 is still returned.)
-
-- In X11, properly handle pasting of high-bit chars. (It was doing an
- unwanted sign extension.)
-
-- In X11, BUTTON_MOVED was never returned, although PDC_MOUSE_MOVED was
- set.
-
-- The fix in 2.8 for the scroll wheel in X11 wasn't very good -- it did
- report the events as scroll wheel events, but it doubled them. Here's
- a proper fix.
-
-- Changed mouse handling in X11: Simpler translation table, with
- XCursesPasteSelection() called from XCursesButton() instead of the
- translation table; require shift with button 1 or 2 for select or
- paste when mouse events are being reported (as with ncurses), allowing
- passthrough of simple button 2 events. This fixes the previously
- unreliable button 2 behavior.
-
-- Modifier keys are now returned on key up in X11, as in Win32. And in
- general, modifier key reporting is more consistent across platforms.
-
-- Modifiers are not returned as keys when a mouse click has occurred
- since the key press.
-
-- In BIOS mode (in DOS), count successive identical output bytes, and
- make only one BIOS call for all of them. This dramatically improves
- performance.
-
-- The cursor position was not always updated correctly in BIOS mode.
-
-- In testcurs, the way the ACS test was written, it would really only
- work with a) PDCurses (with any compiler), or b) gcc (with any
- curses). Here's a more portable implementation.
-
-- Better reporting of mouse events in testcurs.
-
-- Blank out buffer and num before the scanw() test in testcurs, in case
- the user just hits enter or etc.; clear the screen after resizing.
-
-- Allow tuidemo to use the last line.
-
-- Separate left/right modifier keys are now reported properly in Win32.
- (Everything was being reported as _R.)
-
-- Attempts to redirect input in Win32 now cause program exit and an
- error message, instead of hanging.
-
-- Dropped support for the Microway NDP compiler.
-
-- Some modules renamed, rearranged.
-
-- Fixes for errors and warnings when building with Visual C++ 2005.
-
-- In MSVC, the panel library didn't work with the DLL.
-
-- Complete export lists for DLLs.
-
-- Simplified makefiles; moved common elements to .mif files; better
- optimization; strip demos when possible.
-
-- Changed makefile targets of "pdcurses.a/lib" and "panel.a/lib" to
- $(LIBCURSES) and $(LIBPANEL). Suggestion of Doug Kaufman.
-
-- Changed "install" target in the makefile to a double-colon rule, to
- get around a conflict with INSTALL on non-case-sensitive filesystems,
- such as Mac OS X's HFS+. Reported by Douglas Godfrey et al.
-
-- Make PDCurses.man dependent on manext. Suggestion of Tiziano Mueller.
-
-- Set up configure.ac so autoheader works; removed some obsolescent
- macros. Partly the suggestion of T.M.
-
-- The X11 port now builds in the x11 directory (including the demos), as
- with other ports.
-
-- The X11 port should now build on more 64-bit systems. Partly due to
- M.H.
-
-- The default window title and icons for the X11 port are now "PDCurses"
- instead of "XCurses".
-
-- Internal functions and variables made static where possible.
-
-- Adopted a somewhat more consistent naming style: Internal functions
- with external linkage, and only those, have the prefix "PDC_";
- external variables that aren't part of the API use "pdc_"; static
- functions use "_"; and "XC_" and "xc_" prefixes are used for functions
- and variables, respectively, that are shared between both processes in
- the X11 port. Also eliminated camel casing, where possible.
-
-- Changed the encoding for non-ASCII characters in comments and
- documentation from Latin-1 to UTF-8.
-
-------------------------------------------------------------------------
-
-PDCurses 2.8 - 2006/04/01
-=========================
-
-As with the previous version, you should assume that apps linked against
-older dynamic versions of the library won't work with this one until
-recompiled.
-
-New features:
-
-- Simpler, faster.
-
-- Declarations for all supported, standard functions, per the X/Open
- Curses 4.2 spec, with the notable exception of getch() and ungetch().
- You can disable the use of the macro versions by defining NOMACROS
- before including curses.h (see xmas.c for an example). NOMACROS yields
- smaller but theoretically slower executables.
-
-- New functions: vwprintw(), vwscanw(), vw_printw() and vw_scanw(). This
- completes the list of X/Open 4.2 functions, except for those concerned
- with attr_t and wide characters. Some (especially the terminfo/termcap
- functions) aren't yet fully fleshed out, though.
-
-- Non-macro implementations for COLOR_PAIR(), PAIR_NUMBER(), getbkgd(),
- mvgetnstr(), mvwgetnstr(), mvhline(), mvvline(), mvwhline(), and
- mvwvline(). (The macros are still available, too.)
-
-- newterm() works now, in a limited way -- the parameters are ignored,
- and only the first invocation will work (i.e., only one SCREEN can be
- used).
-
-- start_color() works now -- which is to say, if you _don't_ call it,
- you'll only get monochrome output. Also, without calling it, the
- terminal's default colors will be used, where supported (currently
- only in Win32). This is equivalent to the PDC_ORIGINAL_COLORS behavior
- introduced in 2.7, except that _only_ the default colors will be used.
- (PDC_ORIGINAL_COLORS is still available, if you want to combine the
- use of specific colors and the default colors.)
-
-- New logic for termname() and longname(): termname() always returns
- "pdcurses"; longname() returns "PDCurses for [platform] [adapter]
- [COLOR/MONO]-YxX" (adapter is only defined for DOS and OS/2). This is
- the first time these functions return _anything_ in Win32.
-
-- New installation method for XCurses: the header files are placed in a
- subdirectory "xcurses" within the include directory, rather than being
- renamed. (But the renamed xcurses.h and xpanel.h are also installed,
- for backwards compatibility.) curspriv.h and term.h are now available,
- and existing curses-based code need no longer be edited to use
- XCurses' curses.h. And with no more need for explicit XCursesExit()
- calls (see below), your code need not be changed at all to move from
- another curses implementation to XCurses. It can be as simple as "gcc
- -I/usr/local/include/xcurses -lXCurses -oprogname progname.c".
-
-- Combined readme.* into this HISTORY file, and incorporated the old 1.x
- (PCcurses) history.
-
-- New functionality for the testcurs demo: ACS character display; menu
- support for PgUp, PgDn, Home and End; centered menu; and it can now
- be resized in X.
-
-- Added modified versions of the rain and worm demos from ncurses.
-
-Bug fixes and such:
-
-- Big cleanup of dead and redundant code, including unneeded defines,
- ifdefs, and structure elements.
-
-- flushinp() was not implemented for Win32.
-
-- resetty() was not restoring LINES and COLS.
-
-- nonl() made '\n' print a line feed without carriage return. This was
- incorrect.
-
-- Removed bogus implementation of intrflush().
-
-- The line-breakout optimization system, disabled by default in 2.7, is
- removed in 2.8. It simply didn't work, and never has. (The typeahead()
- function remains, for compatibility, but does nothing.)
-
-- The declarations for the printw() and scanw() function families were
- erroneously ifdef'd.
-
-- Safer printw() calls on platforms that support vsnprintf().
-
-- Use the native vsscanf() in DJGPP, MinGW and Cygwin.
-
-- ACS_BLOCK now works in X.
-
-- Explicit calls to XCursesExit() are no longer needed.
-
-- XCURSES is now defined automatically if not DOS, OS2 or WIN32.
-
-- The default icon for XCurses wasn't working (had to remove the focus
- hint code to fix this). Also, the default title is now "XCurses"
- instead of "main".
-
-- Incorrect dimensions (undercounting by two in each direction) were
- shown while resizing in X.
-
-- Scroll wheel events were not always correctly reported in X.
-
-- 32 bits are enough for the "long" chtype, but 64 bits were used on a
- 64-bit system, wasting memory. Now conditioned on _LP64. This could be
- faster, too.
-
-- The short, 16-bit chtype now works with XCurses.
-
-- Corrected return value for is_linetouched(), is_wintouched(),
- can_change_color() and isendwin() (bool instead of int).
-
-- timeout(), wtimeout(), idcok() and immedok() return void.
-
-- pair_content() takes a short.
-
-- Replaced incorrect usages of attr_t with chtype. attr_t is still
- typedef'd, for backwards compatibility. (It's supposed to be used for
- the WA_*-style functions, which PDCurses doesn't yet support.)
-
-- Added const where required by the spec, and in other appropriate
- places.
-
-- Removed PDC_usleep(). napms() is now the core delay routine.
-
-- Fixed poll() support in napms().
-
-- Various changes to the internal PDC_* functions -- don't depend on
- these, and don't use them unless you absolutely have to.
-
-- Some routines accessed window structures in their variable
- declarations, _before_ checking for a NULL window pointer.
-
-- Dropped support for the undocumented PDC_FULL_DISPLAY, wtitle(), and
- PDC_print().
-
-- Cleaned up remaining warnings.
-
-- Reduced unnecessary #include directives -- speeds up compilation.
-
-- Fix for demos build in Borland/DOS -- the makefile in 2.7 didn't
- specify the memory model. Reported by Erwin Waterlander.
-
-- Simplified the makefiles; e.g., some now build each demo in a single
- step, and Watcom no longer uses demos.lnk. Also, the demo exes are now
- stripped when possible; maximum compression used for archives built
- by the makefiles; xcurses-config removed as part of "make distclean";
- and I tweaked optimization for some platforms.
-
-- Reverted to /usr/local/ as default installation directory for XCurses.
-
-- Upgraded to autoconf 2.59... instantly doubling the size of the
- configure script. Ah well. Otherwise, simplified the build system.
-
-- Dropped support for pre-ANSI compilers. (It hasn't worked since at
- least version 2.4, anyway.)
-
-- Revised and, I hope, clarified the boilerplate and other comments.
-
-- Simplified logging and RCS ids; added RCS ids where missing.
-
-- Consistent formatting for all code, approximately equivalent to
- "indent -kr -i8 -bl -bli0", with adjustments for 80 columns.
-
-------------------------------------------------------------------------
-
-PDCurses 2.7 - 2005/12/30
-=========================
-
-INTRODUCTION:
-
- Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses.
- Here's a brief summary of changes in this release. (More details are
- available in the CVS log and trackers on SourceForge.)
-
-NEW FEATURES:
-
-- Functions: delscreen(), getattrs(), has_key(), slk_color(),
- wcolor_set(), wtimeout().
-
-- Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(),
- mvwvline(), timeout(), wresize().
-
-- Stub implementations of terminfo functions (including a term.h).
-
-- More stubs for compatibility: filter(), getwin(), putwin(),
- noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(),
- scr_set(), use_env(), vidattr(), vidputs().
-
-- The terminal's default colors are used as curses' default colors when
- the environment variable "PDC_ORIGINAL_COLORS" is set to any value
- (Win32 only at the moment).
-
-- Simplified build system.
-
-- Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak
- files for more info).
-
-- Minimal implementation of color_content() -- no longer a stub.
-
-- Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for
- DOS/OS2/Win; "enhanced" versions of existing ACS characters used.
-
-- Support for scroll wheels.
-
-- Support for Pacific C.
-
-BUGS FIXED:
-
-- Builds correctly (including demos) on all tested platforms (see
- below); nearly all compiler warnings have been cleaned up; the ptest
- demo is built on all platforms; "clean" targets are improved.
-
-- The ability to build ncurses_tests has been restored (see demos dir).
-
-- Line-breakout optimization now defaults to off (equivalent to
- "typeahead(-1)"), so output is not interrupted by keystrokes (it's
- supposed to resume on the next refresh(), which wasn't working).
-
-- Implicit wrefresh() in wgetch() was not being invoked in nodelay mode.
-
-- subpad() was erroneously offsetting from the origin coordinates of the
- parent pad (which are always -1,-1).
-
-- In wborder(), whline(), and wvline(), the current (wattrset) attribute
- was being used, but not the current background (wbkgd).
-
-- Allow Russian 'r' character ASCII 0xe0 to be returned.
-
-- termattrs() now also returns A_UNDERLINE, A_REVERSE.
-
-- In Win32, with large scrollback buffers set, there was an unwanted
- "scrollup" effect on startup.
-
-- Revamped keyboard handling for Win32.
-
-- New screen resize method for Win32.
-
-- napms(), delay_output(), etc. now work with Cygwin.
-
-- curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode --
- the cursor stayed on.
-
-- The A_REVERSE attribute was broken in XCurses.
-
-- On 64-bit systems, XCurses was ignoring every other keystroke.
-
-- Added focus hints for XCurses.
-
-- Demos (except for tuidemo) once again have their proper titles in
- XCurses (using Xinitscr() instead of the obsolete XCursesProgramName).
-
-- The 16-bit chtype is a working option again (by removing #define
- CHTYPE_LONG from curses.h), except in XCurses. It's not recommended;
- but if your needs are limited, it still works.
-
-- Reset screen size in resetty() under DOS, as in Win32 and OS/2.
-
-- Changes for cursor size under DOS.
-
-- Automatic setting of BIOS mode for CGA under DOS now works.
-
-- The cursor is now always updated in PDC_gotoxy(); this fixes the
- problem of missing characters in BIOS mode.
-
-- Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(),
- nl() and nonl() now return OK.
-
-- ERR and OK are now defined as -1 and 0, respectively, for
- compatibility with other curses implementations -- note that this
- change is not binary compatible; you'll have to rebuild programs that
- use shared/dynamic libraries.
-
-- Added "const" to prototypes where appropriate.
-
-- Miscellaneous code cleanup.
-
-ACKNOWLEDGEMENTS:
-
- Walter Briscoe
- Jean-Pierre Demailly
- Ruslan Fedyarov
- Warren Gay
- Florian Grosse-Coosmann
- Vladimir Kokovic
- Matt Maloy
- K.H. Man
- Michael Ryazanov
- Ron Thibodeau
- Alexandr Zamaraev
-
- and of course, MARK HESSLING, for his over 13 years of service as the
- maintainer of PDCurses. Plus, thanks to all who've reported bugs or
- requested features. Apologies to anyone I've forgotten.
-
- I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS;
- DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2;
- EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows;
- recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++;
- and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris.
-
--- William McBrine
-
-------------------------------------------------------------------------
-
-PDCurses 2.6 - 2003/01/08
-=========================
-
-INTRODUCTION:
-
- This release of PDCurses includes the following changes:
-
-BUGS FIXED:
-
-- Allow accented characters on Win32 platform when run on non-English
- keyboards.
-
-- Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned.
-
-- Some bugs with halfdelay() fixed by William McBrine.
-
-- pechochar() should now work correctly.
-
-- redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi
-
-- Don't include "special" characters like KEY_SHIFT_L to be returned in
- getnstr() family. Bug 542913
-
-- Entering TAB in wgetnstr() no longer exceeds requested buffer size.
- Bug 489233
-
-- Fixed bug 550066, scrollok() and pads.
- Also beep() called when buffer exceeded. Bug 562041.
-
-- Reverse video of X11 selection reinstated. Pablo Garcia Abio??
-
-- Right Alt modifier now works like left Alt modifier under Win32
-
-- Add support for all libXaw replacement libraries with Scrollbar bug.
- Note that for this to work, you still have to change the libXaw
- replacement libraries to fix the bug :-(
-
-- Don't trap signals in XCurses if calling application has ignored them.
- Change by Frank Heckenbach.
-
-- Bug reports from Warren W. Gay:
- - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms.
- - Fix definition of getsyx() and setsyx() to be consistent with
- ncurses. Bug 624424.
- - Fix definition of echo() and noecho(). Bug 625001.
- - Fix definition of keypad() and leaveok(). Bug 632653.
- - Missing panel_hidden() prototype. Bug 649320.
-
-- Fixed bug with calling def_prog_mode(), resize_term(),
- reset_prog_mode(); the resize details were being lost.
-
-NEW FEATURES:
-
-- Clipboard support now available on DOS platform, but handled
- internally to the currently running process.
-
-- New X11 resource: textCursor, allows the text cursor to be specified
- as a vertical bar, or the standard horizontal bar. Thanks to Frank
- Heckenbach for the suggestion.
-
-NEW COMPILER SUPPORT:
-
-- lcc-win32 now works correctly
-
-------------------------------------------------------------------------
-
-PDCurses 2.5 - 2001/11/26
-=========================
-
-INTRODUCTION:
-
- This release of PDCurses includes the following changes:
-
-- Set BASE address for Win32 DLL
-
-- Add KEY_SUP and KEY_SDOWN.
-
-- Add PDC_set_line_color()
-
-- Add blink support as bold background
-
-- Add bold colors
-
-- Add getbkgd() macro
-
-- Add new PDC functions for adding underline, overline, leftline and
- rightline
-
-- Add support for shifted keypad keys.
-
-- Allow more keypad keys to work under Win32
-
-- Change Win32 and OS/2 DLL name to curses.dll
-
-- Change example resources to allow overriding from the command line
-
-- Changes for building cleanly on OS/2
-
-- Changes to handle building XCurses under AIX
-
-- Check if prefresh() and pnoutrefresh() parameters are valid.
-
-- Ensure build/install works from any directory
-
-- Handle platforms where X11 headers do not typedef XPointer.
-
-- Mention that Flexos is likely out-of-date.
-
-- Pass delaytenths to XCurses_rawgetch()
-
-- Remove boldFont
-
-- Updates for cursor blinking and italic.
-
-BUGS FIXED:
-
-- Fix bug with getting Win32 clipboard contents. Added new
- PDC_freeclipboard() function.
-
-- Fix bug with halfdelay()
-
-- Fix bug with mouse interrupting programs that are not trapping mouse
- events under Win32.
-
-- Fix return value from curs_set()
-
-- Reverse the left and right pointing bars in ALT_CHARSET
-
-NEW COMPILER SUPPORT:
-
-- Add QNX-RTP port
-
-------------------------------------------------------------------------
-
-PDCurses 2.4 - 2000/01/17
-=========================
-
-INTRODUCTION:
-
- This release of PDCurses includes the following changes:
-
-- full support of X11 selection handling
-
-- removed the need for the cursos2.h file
-
-- enabled the "shifted" key on the numeric keypad
-
-- added native clipboard support for X11, Win32 and OS/2
-
-- added extra functions for obtaining internal PDCurses status
-
-- added clipboard and key modifier tests in testcurs.c
-
-- fixes for panel library
-
-- key modifiers pressed by themselves are now returned as keys:
- KEY_SHIFT_L KEY_SHIFT_R KEY_CONTROL_L KEY_CONTROL_R KEY_ALT_L KEY_ALT_R
- This works on Win32 and X11 ports only
-
-- Added X11 shared library support
-
-- Added extra slk formats supported by ncurses
-
-- Fixed bug with resizing the terminal when slk were on.
-
-- Changed behavior of slk_attrset(), slk_attron() slk_attroff()
- functions to work more like ncurses.
-
-BUGS FIXED:
-
-- some minor bug and portability fixes were included in this release
-
-NEW FUNCTIONS:
-
-- PDC_getclipboard() and PDC_setclipboard() for accessing the native
- clipboard (X11, Win32 and OS/2)
-
-- PDC_set_title() for setting the title of the window (X11 and Win32
- only)
-
-- PDC_get_input_fd() for getting the file handle of the PDCurses input
-
-- PDC_get_key_modifiers() for getting the keyboard modifier settings at
- the time of the last (w)getch()
-
-- Xinitscr() (only for X11 port) which allows standard X11 switches to
- be passed to the application
-
-NEW COMPILER SUPPORT:
-
-- MingW32 GNU compiler under Win95/NT
-
-- Cygnus Win32 GNU compiler under Win95/NT
-
-- Borland C++ for OS/2 1.0+
-
-- lcc-win32 compiler under Win95/NT
-
-ACKNOWLEDGEMENTS: (for this release)
-
- Georg Fuchs for various changes.
- Juan David Palomar for pointing out getnstr() was not implemented.
- William McBrine for fix to allow black/black as valid color pair.
- Peter Preus for pointing out the missing bccos2.mak file.
- Laura Michaels for a couple of bug fixes and changes required to
- support Mingw32 compiler.
- Frank Heckenbach for PDC_get_input_fd() and some portability fixes and
- the fixes for panel library.
- Matthias Burian for the lcc-win32 compiler support.
-
-------------------------------------------------------------------------
-
-PDCurses 2.3 - 1998/07/09
-=========================
-
-INTRODUCTION:
-
- This release of PDCurses includes the following changes:
-
-- added more System V R4 functions
-
-- added Win32 port
-
-- the X11 port is now fully functional
-
-- the MS Visual C++ Win32 port now includes a DLL
-
-- both the X11 and Win32 ports support the mouse
-
-- the slk..() functions are now functional
-
-- support for scrollbars under X11 are experimental at this stage
-
-- long chtype extended to non-Unix ports
-
- The name of the statically built library is pdcurses.lib (or
- pdcurses.a). The name of the DLL import library (where applicable) is
- curses.lib.
-
-BUGS FIXED:
-
-- some minor bugs were corrected in this release
-
-NEW FUNCTIONS:
-
-- slk..() functions
-
-NEW COMPILER SUPPORT:
-
-- MS Visual C++ under Win95/NT
-
-- Watcom C++ under OS/2, Win32 and DOS
-
-- two EMX ports have been provided:
- - OS/2 only using OS/2 APIs
- - OS/2 and DOS using EMX video support routines
-
-EXTRA OPTIONS:
-
- PDCurses recognizes two environment variables which determines the
- initialization and finalization behavior. These environment variables
- do not apply to the X11 port.
-
- PDC_PRESERVE_SCREEN
- If this environment variable is set, PDCurses will not clear the screen
- to the default white on black on startup. This allows you to overlay
- a window over the top of the existing screen background.
-
- PDC_RESTORE_SCREEN
- If this environment variable is set, PDCurses will take a copy of the
- contents of the screen at the time that PDCurses is started; initscr(),
- and when endwin() is called, the screen will be restored.
-
-
-ACKNOWLEDGEMENTS: (for this release)
-
- Chris Szurgot for original Win32 port.
- Gurusamy Sarathy for some updates to the Win32 port.
- Kim Huron for the slk..() functions.
- Florian Grosse Coosmann for some bug fixes.
- Esa Peuha for reducing compiler warnings.
- Augustin Martin Domingo for patches to X11 port to enable accented
- characters.
-
-------------------------------------------------------------------------
-
-PDCurses 2.2 - 1995/02/12
-=========================
-
-INTRODUCTION:
-
- This release of PDCurses has includes a number of major changes:
-
-- The portable library functions are now grouped together into single
- files with the same arrangement as System V R4 curses.
-
-- A panels library has been included. This panels library was written by
- Warren Tucker.
-
-- Quite a few more functions have been supplied by Wade Schauer and
- incorporated into release 2.2. Wade also supplied the support for the
- Microway NDP C/C++ 32 bit DOS compiler.
-
-- The curses datatype has been changed from an unsigned int to a long.
- This allows more attributes to be stored as well as increasing the
- number of color-pairs from 32 to 64.
-
-- Xwindows port (experimental at the moment).
-
-BUGS FIXED:
-
-- mvwin() checked the wrong coordinates
-
-- removed DESQview shadow memory buffer checking bug in curses.h in
- #define for wstandout()
-
-- lots of others I can't remember
-
-NEW FUNCTIONS:
-
-- Too many to mention. See intro.man for a complete list of the
- functions PDCurses now supports.
-
-COMPILER SUPPORT:
-
-- DJGPP 1.12 is now supported. The run-time error that caused programs
- to crash has been removed.
-
-- emx 0.9a is supported. A program compiled for OS/2 should also work
- under DOS if you use the VID=EMX switch when compiling. See the
- makefile for details.
-
-- The Microway NDP C/C++ DOS compiler is now supported. Thanks to Wade
- Schauer for this port.
-
-- The Watcom C++ 10.0 DOS compiler is now supported. Thanks to Pieter
- Kunst for this port.
-
-- The library now has many functions grouped together to reduce the size
- of the library and to improve the speed of compilation.
-
-- The "names" of a couple of the compilers in the makefile has changed;
- CSET2 is now ICC and GO32 is now GCC.
-
-EXTRA OPTIONS:
-
- One difference between the behavior of PDCurses and Unix curses is the
- attributes that are displayed when a character is cleared. Under Unix
- curses, no attributes are displayed, so the result is always black.
- Under PDCurses, these functions clear with the current attributes in
- effect at the time. With the introduction of the bkgd functions, by
- default, PDCurses clears using the value set by (w)bkgd(). To have
- PDCurses behave the same way as it did before release 2.2, compile with
- -DPDCURSES_WCLR
-
-ACKNOWLEDGEMENTS: (for this release)
-
- Pieter Kunst, David Nugent, Warren Tucker, Darin Haugen, Stefan Strack,
- Wade Schauer and others who either alerted me to bugs or supplied
- fixes.
-
-------------------------------------------------------------------------
-
-PDCurses 2.1 - 1993/06/20
-=========================
-
-INTRODUCTION:
-
- The current code contains bug fixes for the DOS and OS/2 releases and
- also includes an alpha release for Unix. The Unix release uses another
- public domain package (mytinfo) to handle the low-level screen writes.
- mytinfo was posted to comp.sources.unix (or misc) in December 1992 or
- January 1993. Unless you are a glutton for punishment I would recommend
- you avoid the Unix port at this stage.
-
- The other major addition to PDCurses is the support for DJGPP (the DOS
- port of GNU C++). Thanks to David Nugent <davidn at csource.oz.au>.
-
- Other additions are copywin() function, function debugging support and
- getting the small and medium memory models to work. The testcurs.c demo
- program has also been changed significantly and a new demo program,
- tuidemo, has been added.
-
- Some people have suggested including information on where to get dmake
- from. oak.oakland.edu in /pub/msdos/c
-
-OTHER NOTES:
-
- Under DOS, by default, screen writes to a CGA monitor are done via the
- video BIOS rather than by direct video memory writes. This is due to
- the CGA "snow" problem. If you have a CGA monitor and do not suffer
- from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
- This will then use cause PDCurses to write directly to the CGA video
- memory.
-
- Function debugging: Firstly to get function debugging, you have to
- compile the library with OPT=N in the makefile. This also turns on
- compiler debugging. You can control when you want PDCurses to write to
- the debug file (called trace in the current directory) by using the
- functions traceon() and traceoff() in your program.
-
- Microsoft C 6.00 Users note:
- ----------------------------
-
- With the addition of several new functions, using dmake to compile
- PDCurses now causes the compiler to run "out of heap space in pass 2".
- Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes this
- problem; hence the -EM switch.
-
- Functional changes
- ------------------
-
- Added OS/2 DLL support.
-
- A few curses functions have been fixed to exhibit their correct
- behavior and make them more functionally portable with System V
- curses. The functions that have changed are overlay(), overwrite() and
- typeahead.
-
- overlay() and overwrite()
-
- Both of theses functions in PDCurses 2.0 allowed for one window to be
- effectively placed on top of another, and the characters in the first
- window were overlaid or overwritten starting at 0,0 in both windows.
- This behavior of these functions was not correct. These functions only
- operate on windows that physically overlap with respect to the
- displayed screen. To achieve the same functionality as before, use the
- new function copywin(). See the manual page for further details.
-
- typeahead()
-
- This function in PDCurses 2.0 effectively checked to see if there were
- any characters remaining in the keyboard buffer. This is not the
- behavior exhibited by System V curses. This function is intended
- purely to set a flag so that curses can check while updating the
- physical screen if any keyboard input is pending. To achieve the same
- effect with typeahead() under PDCurses 2.1 the following code should be
- used.
-
- In place of...
-
- while(!typeahead(stdin))
- {
- /* do something until any key is pressed... */
- }
-
- use...
-
- /* getch() to return ERR if no key pending */
- nodelay(stdscr,TRUE);
- while(getch() == (ERR))
- {
- /* do something until any key is pressed... */
- }
-
-
-ACKNOWLEDGEMENTS: (in no particular order)
-
- Jason Shumate, Pieter Kunst, David Nugent, Andreas Otte, Pasi
- Hamalainen, James McLennan, Duane Paulson, Ib Hojme
-
- Apologies to anyone I may have left out.
-
-------------------------------------------------------------------------
-
-PDCurses 2.0 - 1992/11/23
-=========================
-
-INTRODUCTION:
-
- Well, here it finally is; PDCurses v2.0.
-
- PDCurses v2.0 is an almost total rewrite of PCcurses 1.4 done by John
- 'Frotz' Fa'atuai, the previous maintainer. It adds support for OS/2 as
- well as DOS.
-
- This version has been tested with Microsoft C v6.0, QuickC v2.0 and
- Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02
- under OS/2 2.0. Also the library has been compiled successfully with
- emx 0.8e, C Set/2 and Watcom 9. Most testing was done with the large
- memory model, where applicable. The large memory model is probably the
- best model to use.
-
- The amount of testing has not been as extensive as I would have liked,
- but demands on releasing a product have outweighed the product's
- quality. Nothing new with that !! Hopefully with wider circulation,
- more bugs will be fixed more quickly.
-
- I have included just 1 makefile which is suitable for dmake 3.8 for
- both DOS and OS/2. The makefile does not rely on customization of the
- dmake.ini file.
-
- If you discover bugs, and especially if you have fixes, please let me
- know ASAP.
-
- The source to the library is distributed as a zip file made with zip
- 1.9. You will need Info-ZIP unzip 5.0 to unzip. Follow the directions
- below to compile the library.
-
-DIRECTIONS:
-
- 1. Create a new directory in which to unzip pdcurs20.zip. This will
- create a curses directory and a number of subdirectories containing
- source code for the library and utilities and the documentation.
-
- 2. Make changes to the makefile where necessary:
- Change the MODEL or model macro to the appropriate value (if it
- applies to your compiler). Use model for Borland compilers.
-
- Change any paths in the defined macros to be suitable for your
- compiler.
-
- 3. Invoke DMAKE [-e environment_options] [target]
-
- where environment_options are:
-
- OS (host operating system)
- COMP (compiler)
- OPT (optimized version or debug version) - optional. default Y
- TOS (target operating system) - optional. default OS
-
- see the makefile for valid combinations
-
- targets: all, demos, lcursesd.lib, manual...
-
- NB. dmake is case sensitive with targets, so those environments that
- use an upper case model value (eg MSC) MUST specify the library
- target as for eg. Lcursesd.lib
-
- The makefile is by default set up for Borland C++. The use of -e
- environment_options override these defaults. If you prefer, you can
- just change the defaults in the makefile and invoke it without the
- -e switch.
-
-OTHER NOTES:
-
- The documentation for the library is built into each source file, a
- couple of specific doc files and the header files. A program is
- supplied (manext) to build the manual. This program gets compiled when
- you build the documentation.
-
- To generate the library response file correctly, I had to write a quick
- and dirty program (buildlrf) to achieve this. Originally the makefiles
- just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" which appended
- a suitable line to the response file. Unfortunately under some
- combinations of makefiles and command processors (eg. nmake and 4DOS)
- the & would get treated as stderr and the echo command would fail.
-
- The original source for PDCurses that I received from the previous
- maintainer contained support for the FLEXOS operating system. Not
- having access to it, I could not test the changes I made so its support
- has fallen by the wayside. If you really need to have PDCurses running
- under FLEXOS, contact me and I will see what can be arranged.
-
- Under DOS, by default, screen writes to a CGA monitor are done via the
- video BIOS rather than by direct video memory writes. This is due to
- the CGA "snow" problem. If you have a CGA monitor and do not suffer
- from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
- This will then use cause PDCurses to write directly to the CGA video
- memory.
-
- Added System V color support.
-
-COMPILER-SPECIFIC NOTES:
-
- Microsoft C
- -----------
-
- It is possible with MSC 6.0 to build the OS/2 libraries and demo
- programs from within DOS. This is the only case where it is possible to
- specify the value of TOS on the command line to be OS2 and the value of
- OS be DOS.
-
- C Set/2
- -------
-
- I have only tested the library using the migration libraries. I doubt
- that the demo programs will work without them.
-
- emx
- ---
-
- Testing has been done with 0.8e of emx together with the 16_to_32
- libraries. The emx\lib directory should include the vio32.lib and
- kbd32.lib libraries from the 16_to_32 package.
-
-BUGS and UNFINISHED BUSINESS:
-
-- PDC_set_ctrl_break() function does not work under OS/2.
-
-- win_print() and PDC_print() do not work under OS/2.
-
-- The file todo.man in the doc directory also lists those functions of
- System V 3.2 curses not yet implemented. Any volunteers?
-
-ACKNOWLEDGEMENTS:
-
- John 'Frotz' Fa'atuai, the previous maintainer for providing an
- excellent base for further development.
- John Burnell <johnb at kea.am.dsir.govt.nz>, for the OS/2 port.
- John Steele, Jason (finally NOT a John) Shumate....
- for various fixes and suggestions.
- Eberhardt Mattes (author of emx) for allowing code based on his
- C library to be included with PDCurses.
- Several others for their support, moral and actual.
-
--- Mark Hessling
-
-------------------------------------------------------------------------
-
-PDCurses 2.0Beta - 1991/12/21
-=============================
-
-Changed back from short to int. (int is the correct size for the default
-platform. Short might be too short on some platforms. This is more
-portable. I, also, made this mistake.)
-
-Many functions are now macros. If you want the real thing, #undef the
-macro. (X/Open requirement.)
-
-Merged many sources into current release.
-
-Added many X/Open routines (not quite all yet).
-
-Added internal documentation to all routines.
-
-Added a HISTORY file to the environment.
-
-Added a CONTRIB file to the environment.
-
-------------------------------------------------------------------------
-
-PDCurses 1.5Beta - 1990/07/14
-=============================
-
-Added many levels of compiler support. Added mixed prototypes for all
-"internal" routines. Removed all assembly language. Added EGA/VGA
-support. Converted all #ifdef to #if in all modules except CURSES.H and
-CURSPRIV.H. Always include ASSERT.H. Added support for an external
-malloc(), calloc() and free(). Added support for FAST_VIDEO
-(direct-memory writes). Added various memory model support (for
-FAST_VIDEO). Added much of the December 1988 X/Open Curses
-specification.
-
--- John 'Frotz' Fa'atuai
-
-------------------------------------------------------------------------
-
-PCcurses 1.4 - 1990/01/14
-=========================
-
- In PCcurses v.1.4, both portability improvements and bugfixes have
-been made. The files have been changed to allow lint-free compilation
-with Microsoft C v.5.1, and with Turbo C v.2.0. The source should still
-compile without problems on older compilers, although this has not been
-verified.
-
- The makefiles have been changed to suit both the public release and
-the author, who maintains a special kind of libraries for himself. In
-the case of Microsoft C, changes were done in the makefile to lower the
-warning level to 2 (was 3). This was to avoid ANSI warnings which are
-abundant because PCcurses does not attempt to follow strict ANSI C
-standard.
-
- BUG FIXES FROM V.1.3 TO V.1.4:
-
- !!!IMPORTANT CHANGE!!!
-
- The definitions for OK and ERR in curses.h were exchanged. This was
-done to be more consistent with UNIX versions. Also, it permits
-functions like newwin() and subwin() to return 0 (=NULL) when they fail
-due to memory shortage. This incompatibility with UNIX curses was
-pointed out by Fred C. Smith. If you have tested success/failure by
-comparisons to anything other than ERR and OK, your applications will
-need to be be changed on that point. Sorry... but presumably most of you
-used the symbolic constants?
-
- (END OF IMPORTANT CHANGE)
-
- Fred also pointed out a bug in the file update.c. The bug caused the
-first character printed after 'unauthorized' screen changes (like during
-a shell escape, for example) to be placed at the wrong screen position.
-This happened even if the normal precautions (clear / touch / refresh)
-were taken. The problem has now been fixed.
-
- PCcurses is currently also being used on a 68000 system with
-hard-coded ESCape sequences for ANSI terminals. However, ints used by
-the 68000 C compiler are 32 bits. Therefore ints have been turned into
-shorts wherever possible in the code (otherwise all window structures
-occupy twice as much space as required on the 68000). This does not
-affect PC versions since normally both ints and shorts are 16 bits for
-PC C compilers.
-
- At some places in the source code there are references made to the
-68000 version. There are also a makefile, a curses68.c file, and a
-curses68.cmd file. These are for making, low-level I/O, and linking
-commands when building the 68000 version. These files are probably
-useful to no-one but the author, since it is very specific for its
-special hardware environment. Still in an effort to keep all
-curses-related sources in one place they are included. Note however that
-PCcurses will not officially support a non-PC environment.
-
- The file cursesio.c, which was included in the package at revision
-level 1.2, and which was to be an alternative to the cursesio.asm file,
-has been verified to behave incorrectly in the function _curseskeytst().
-The problem was that the value of 'cflag' does not contain the proper
-data for the test that is attempted. Furthermore, neither Turbo C or
-Microsoft C allows any way to return the data that is needed, and
-consequently you should not use cursesio.c. The best solution is to
-simply use the ASM version. In v.1.2 and v.1.3, the user could edit the
-makefile to select which version he wanted to use. The makefiles in
-v.1.4 have removed this possibility forcing the use of the ASM file, and
-cursesio.c has been dropped from the distribution.
-
- A bug in the wgetstr() function caused PCcurses to echo characters
-when reading a keyboard string, even if the echo had been turned off.
-Thanks to Per Foreby at Lund University, Sweden, for this. Per also
-reported bugs concerning the handling of characters with bit 8 set.
-Their ASCII code were considered as lower than 32, so they were erased
-etc. like control characters, i.e. erasing two character positions. The
-control character test was changed to cope with this.
-
- The overlay() and overwrite() functions were changed so that the
-overlaying window is positioned at its 'own' coordinates inside the
-underlying window (it used to be at the underlying window's [0,0]
-position). There is some controversy about this - the documentation for
-different curses versions say different things. I think the choice made
-is the most reasonable.
-
- The border() and wborder() functions were changed to actually draw a
-border, since this seems to be the correct behavior of these functions.
-They used to just set the border characters to be used by box(). These
-functions are not present in standard BSD UNIX curses.
-
- The subwin() function previously did not allow the subwindow to be as
-big as the original window in which it was created. This has now been
-fixed. There was also the problem that the default size (set by
-specifying numlines or numcols (or both) as 0 made the resulting actual
-size 1 line/column too small.
-
- There were a few spelling errors in function names, both in the
-function declarations and in curses.h. This was reported by Carlos
-Amaral at INESC in Portugal. Thanks! There was also an unnecessary (but
-harmless) parameter in a function call at one place.
-
-------------------------------------------------------------------------
-
-PCcurses 1.3 - 1988/10/05
-=========================
-
- The file 'border.c' is now included. It allows you to explicitly
-specify what characters should be used as box borders when the box()
-functions are called. If the new border characters are non-0, they
-override the border characters specified in the box() call. In my
-understanding, this functionality is required for AT&T UNIX sV.3
-compatibility. Thanks for this goes to Tony L. Hansen
-(hansen at pegasus.UUCP) for posting an article about it on Usenet
-(newsgroup comp.unix.questions; his posting was not related at all to
-PCcurses).
-
- The only other difference between v.1.2 and v.1.3 is that the latter
-has been changed to avoid warning diagnostics if the source files are
-compiled with warning switches on (for Microsoft this means '-W3', for
-Turbo C it means '-w -w-pro'). Of these, the Turbo C warning check is
-clearly to be used rather than Microsoft, even if neither of them comes
-even close to a real UNIX 'lint'. Some of the warnings in fact indicated
-real bugs, mostly functions that did not return correct return values or
-types.
-
- The makefiles for both MSC and TRC have been modified to produce
-warning messages as part of normal compilation.
-
-------------------------------------------------------------------------
-
-PCcurses 1.2 - 1988/10/02
-=========================
-
- The changes from v.1.1 to v.1.2 are minor. The biggest change is that
-there was a bug related to limiting the cursor movement if the
-application tried to move it outside the screen (something that should
-not be done anyway). Such erroneous application behavior is now handled
-appropriately.
-
- All modules have been changed to have a revision string in them, which
-makes it easier to determine what version is linked into a program (or
-what library version you have).
-
- There is now a 'cursesio.c' file. That file does the same as
-'cursesio.asm' (i.e. it provides the interface to the lower-level system
-I/O routines). It is written in C and thus it is (possibly) more
-portable than the assembler version (but still not so portable since it
-uses 8086 INT XX calls directly). When one creates new curses libraries,
-one chooses whether to use the assembler or the C version of cursesio.
-The choice is made by commenting out the appropriate dependencies for
-cursesio.obj, near the end of the makefiles.
-
- There is now a 'setmode.c' file. That file contains functions that
-save and restore terminal modes. They do it into other variables than do
-savetty() and resetty(), so one should probably use either
-savetty()/resetty() or the new functions only - and not mix the both
-ways unless one really knows what one does.
-
- Diff lists vs v.1.0 are no longer included in the distribution. The
-make utility still is. PCcurses v.1.2 still compiles with Microsoft C
-v.4.0, and with Borland Turbo C v.1.0. There is as far as I know no
-reason to believe that it does not compile under Microsoft C v.3.0 and
-5.x, or Turbo C v.1.5, but this has not been tested.
-
- There are two makefiles included, one for Microsoft C, one for Turbo
-C. They are both copies of my personal makefiles, and as such they
-reflect the directory structure on my own computer. This will have to be
-changed before you run make. Check $(INCDIR) and $(LIBDIR) in
-particular, and make the choice of ASM or C cursesio version as
-mentioned above (the distribution version uses the C version of
-cursesio).
-
- The manual file (curses.man) has been changed at appropriate places.
-
- I would like to thank the following persons for their help:
-
- Brandon S. Allbery (alberry at ncoast.UUCP)
- for running comp.binaries.ibm.pc (at that time)
- and comp.source.misc.
-
- Steve Balogh (Steve at cit5.cit.oz.AU)
- for writing a set of manual pages and posting
- them to the net.
-
- Torbjorn Lindh
- for finding bugs and suggesting raw
- character output routines.
-
- Nathan Glasser (nathan at eddie.mit.edu)
- for finding and reporting bugs.
-
- Ingvar Olafsson (...enea!hafro!ingvar)
- for finding and reporting bugs.
-
- Eric Rosco (...enea!ipmoea!ericr)
- for finding and reporting bugs.
-
- Steve Creps (creps at silver.bacs.indiana.edu)
- for doing a lot of work - among others
- posting bug fixes to the net, and writing
- the new cursesio.c module.
-
- N. Dean Pentcheff (dean at violet.berkeley.edu)
- for finding bugs and rewriting cursesio.asm
- for Turbo 'C' 1.5.
-
- Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff)
- (jeff at ads.arpa)
- has had a shareware version of curses deliverable since
- about half a year before I released PCcurses 1.0 on Use-
- Net. He is very concerned about confusion between the two
- packages, and therefore any references on the network
- should make clear whether they reference Dean's PCcurses
- or Larsson's PCcurses.
-
-------------------------------------------------------------------------
-
-PCcurses 1.1 - 1988/03/06
-=========================
-
- The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes,
-and new (non-portable) functions for verbatim IBM character font display
-have been added (in charadd.c and charins.c). The manual file
-(curses.man) has been changed at appropriate places.
-
- In the file v10tov11.dif there are listings of the differences between
-version 1.0 and 1.1. The diff listings are in UNIX diff(1) format.
-
- Version 1.1 compiles with Turbo C v.1.0, as well as Microsoft C v.3.0
-and v.4.0. On the release disk there is a make.exe utility which is very
-similar to UNIX make (If the package was mailed to you, the make utility
-will be in uuencoded format - in make.uu - and must be uudecoded first).
-It is much more powerful than Microsoft's different MAKEs; the latter
-ones will NOT generate libraries properly if used with the PCcurses
-makefiles.
-
- There are three makefiles:
-
- makefile generic MSC 3.0 makefile
- makefile.ms MSC 4.0 makefile
- makefile.tc Turbo C 1.0 makefile
-
- To make a library with for example Turbo C, make directories to hold
-.H and .LIB files (these directories are the 'standard places'), edit
-makefile.tc for this, and type
-
- make -f makefile.tc all
-
-and libraries for all memory models will be created in the .LIB
-directory, while the include files will end up in the .H directory. Also
-read what is said about installation below!
-
-------------------------------------------------------------------------
-
-PCcurses 1.0 - 1987/08/24
-=========================
-
- This is the release notes for the PCcurses v.1.0 cursor/window control
-package. PCcurses offers the functionality of UNIX curses, plus some
-extras. Normally it should be possible to port curses-based programs
-from UNIX curses to PCcurses on the IBM PC without changes. PCcurses is
-a port/ rewrite of Pavel Curtis' public domain 'ncurses' package. All
-the code has been re-written - it is not just an edit of ncurses (or
-UNIX curses). I mention this to clarify any copyright violation claims.
-The data structures and ideas are very similar to ncurses. As for UNIX
-curses, I have not even seen any sources for it.
-
- For an introduction to the use of 'curses' and its derivatives, you
-should read 'Screen Updating and Cursor Movement Optimization: A Library
-Package' by Kenneth C. R. C. Arnold, which describes the original
-Berkeley UNIX version of curses. It is available as part of the UNIX
-manuals. The other source of information is 'The Ncurses Reference
-Manual' by Pavel Curtis. The latter is part of Curtis' ncurses package.
-
- The only other documentation provided is a 'man' page which describes
-all the included functions in a very terse way. In the sources, each
-function is preceded by a rather thorough description of what the
-function does. I didn't have time to write a nice manual/tutorial -
-sorry.
-
- PCcurses is released as a number of source files, a man page, and a
-make file. A uuencoded copy of a 'make' utility, and a manpage for the
-'make' is also provided to make it easier to put together PCcurses
-libraries. Even if you are not interested in PCcurses, it may be
-worthwhile to grab the make.
-
- The makefile assumes the presence of the Microsoft C compiler (3.0 or
-4.0), Microsoft MASM and LIB, plus some MS-DOS utilities. The reason for
-supplying MAKE.EXE is that the Microsoft 'MAKE:s' are much inferior to a
-real UNIX make. The supplied make is a port of a public domain make,
-published on Usenet. It is almost completely compatible with UNIX make.
-When generating the curses libraries, the makefile will direct make to
-do some directory creating and file copying, and then re-invoke itself
-with new targets. The workings of the makefile are not absolutely
-crystal clear at first sight... just start it and see what it does.
-
- For portability, the curses libraries depend on one assembler file for
-access to the BIOS routines. There is no support for the EGA, but both
-CGA, MGA, and the HGA can be used. The libraries are originally for
-Microsoft C, but all C modules should be portable right away. In the
-assembler file, segment names probably need to be changed, and possibly
-the parameter passing scheme. I think Turbo C will work right away - as
-far as I understand, all its conventions are compatible with Microsoft
-C.
-
- There are some parts left out between ncurses and PCcurses. One is the
-support for multiple terminals - not very interesting on a PC anyway.
-Because we KNOW what terminal we have, there is no need for a termcap or
-terminfo library. PCcurses also has some things that neither curses nor
-ncurses have. Compared to the original UNIX curses, PCcurses has lots of
-extras.
-
- The BIOS routines are used directly, which gives fast screen updates.
-PCcurses does not do direct writes to screen RAM - in my opinion it is
-a bit ugly to rely that much on hardware compatibility. Anyone could fix
-that, of course...
-
- One of the more serious problems with PCcurses is the way in which
-normal, cbreak, and raw input modes are done. All those details are in
-the 'charget' module - I do raw I/O via the BIOS, and perform any
-buffering myself. If an application program uses PCcurses, it should do
-ALL its I/O via PCcurses calls, otherwise the mix of normal and
-PCcurses I/O may mess up the display. I think my code is reasonable...
-comments are welcome, provided you express them nicely...
-
- To install, copy all files to a work directory, edit 'makefile' to
-define the standard include and library file directory names of your
-choice (these directories must exist already, and their path names must
-be relative to the root directory, not to the current one). You must
-also run uudecode on make.uu, to generate MAKE.EXE. You can do that on
-your PC, if you have uudecode there, otherwise you can do it under UNIX
-and do a binary transfer to the PC. When you have MAKE.EXE in your work
-directory (or in your /bin directory), type make.
-
- Make will now create 4 sub-directories (one for each memory model),
-copy some assembler include files into them, copy two include files to
-your include directory, CHDIR to each sub-directory and re-invoke itself
-with other make targets to compile and assemble all the source files
-into the appropriate directories. Then the library manager is run to
-create the library files in your desired library directory. Presto!
-
- If you only want to generate a library for one memory model, type
-'make small', 'make large', etc. The name of the memory model must be in
-lower case, like in the makefile.
-
- I think the package is fairly well debugged - but then again, that's
-what I always think. It was completed in May-87, and no problems found
-yet. Now it's your turn... Comments, suggestions and bug reports and
-fixes (no flames please) to
-
--- Bjorn Larsson
diff --git a/payloads/libpayload/curses/PDCurses-3.4/IMPLEMNT b/payloads/libpayload/curses/PDCurses-3.4/IMPLEMNT
deleted file mode 100644
index 0445f8b..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/IMPLEMNT
+++ /dev/null
@@ -1,325 +0,0 @@
-PDCurses Implementor's Guide
-============================
-
-Version 1.3 - 200?/??/?? - notes about official ports
-Version 1.2 - 2007/07/11 - added PDC_init_pair(), PDC_pair_content(),
- version history; removed pdc_atrtab
-Version 1.1 - 2007/06/06 - minor cosmetic change
-Version 1.0 - 2007/04/01 - initial revision
-
-This document is for those wishing to port PDCurses to a new platform,
-or just wanting to better understand how it works. Nothing here should
-be needed for application programming; for that, refer to PDCurses.txt,
-as built in doc/, or distributed as a file separate from this source
-package. This document assumes that you've read the user-level
-documentation and are very familiar with application-level curses
-programming.
-
-If you want to submit your port for possible inclusion into the main
-PDCurses distribution, please follow these guidelines:
-
- - Don't modify anything in the pdcurses directory or in other port
- directories. Don't modify curses.h or curspriv.h unless absolutely
- necessary. (And prefer modifying curspriv.h over curses.h.)
-
- - Use the same indentation style, naming and scope conventions as the
- existing code.
-
- - Release all your code to the public domain -- no copyright. Code
- under GPL, BSD, etc. will not be accepted.
-
-
-DATA STRUCTURES
----------------
-
-A port of PDCurses must provide acs_map[], a 128-element array of
-chtypes, with values laid out based on the Alternate Character Set of
-the VT100 (see curses.h). PDC_transform_line() must use this table; when
-it encounters a chtype with the A_ALTCHARSET flag set, and an A_CHARTEXT
-value in the range 0-127, it must render it using the A_CHARTEXT portion
-of the corresponding value from this table, instead of the original
-value. Also, values may be read from this table by apps, and passed
-through functions such as waddch(), which does no special processing on
-control characters (0-31 and 127) when the A_ALTCHARSET flag is set.
-Thus, any control characters used in acs_map[] should also have the
-A_ALTCHARSET flag set. Implementations should provide suitable values
-for all the ACS_ macros defined in curses.h; other values in the table
-should be filled with their own indices (e.g., acs_map['E'] == 'E'). The
-table can be either hardwired, or filled by PDC_scr_open(). Existing
-ports define it in pdcdisp.c, but this is not required.
-
-
-FUNCTIONS
----------
-
-A port of PDCurses must implement the following functions, with extern
-scope. These functions are traditionally divided into several modules,
-as indicated below; this division is not required (only the functions
-are), but may make it easier to follow for someone familiar with the
-existing ports.
-
-Any other functions you create as part of your implementation should
-have static scope, if possible. If they can't be static, they should be
-named with the "PDC_" prefix. This minimizes the risk of collision with
-an application's choices.
-
-Current PDCurses style also uses a single leading underscore with the
-name of any static function; and modified BSD/Allman-style indentation,
-approximately equivalent to "indent -kr -i8 -bl -bli0", with adjustments
-to keep every line under 80 columns. This isn't essential, but a
-consistent style helps readability.
-
-
-pdcdisp.c:
-----------
-
-void PDC_gotoyx(int y, int x);
-
-Move the physical cursor (as opposed to the logical cursor affected by
-wmove()) to the given location. This is called mainly from doupdate().
-In general, this function need not compare the old location with the new
-one, and should just move the cursor unconditionally.
-
-void PDC_transform_line(int lineno, int x, int len, const chtype *srcp);
-
-The core output routine. It takes len chtype entities from srcp (a
-pointer into curscr) and renders them to the physical screen at line
-lineno, column x. It must also translate characters 0-127 via acs_map[],
-if they're flagged with A_ALTCHARSET in the attribute portion of the
-chtype.
-
-
-pdcgetsc.c:
------------
-
-int PDC_get_columns(void);
-
-Returns the size of the screen in columns. It's used in resize_term() to
-set the new value of COLS. (Some existing implementations also call it
-internally from PDC_scr_open(), but this is not required.)
-
-int PDC_get_cursor_mode(void);
-
-Returns the size/shape of the cursor. The format of the result is
-unspecified, except that it must be returned as an int. This function is
-called from initscr(), and the result is stored in SP->orig_cursor,
-which is used by PDC_curs_set() to determine the size/shape of the
-cursor in normal visibility mode (curs_set(1)).
-
-int PDC_get_rows(void);
-
-Returns the size of the screen in rows. It's used in resize_term() to
-set the new value of LINES. (Some existing implementations also call it
-internally from PDC_scr_open(), but this is not required.)
-
-
-pdckbd.c:
----------
-
-bool PDC_check_key(void);
-
-Keyboard/mouse event check, called from wgetch(). Returns TRUE if
-there's an event ready to process. This function must be non-blocking.
-
-void PDC_flushinp(void);
-
-This is the core of flushinp(). It discards any pending key or mouse
-events, removing them from any internal queue and from the OS queue, if
-applicable.
-
-int PDC_get_key(void);
-
-Get the next available key, or mouse event (indicated by a return of
-KEY_MOUSE), and remove it from the OS' input queue, if applicable. This
-function is called from wgetch(). This function may be blocking, and
-traditionally is; but it need not be. If a valid key or mouse event
-cannot be returned, for any reason, this function returns -1. Valid keys
-are those that fall within the appropriate character set, or are in the
-list of special keys found in curses.h (KEY_MIN through KEY_MAX). When
-returning a special key code, this routine must also set SP->key_code to
-TRUE; otherwise it must set it to FALSE. If SP->return_key_modifiers is
-TRUE, this function may return modifier keys (shift, control, alt),
-pressed alone, as special key codes; if SP->return_key_modifiers is
-FALSE, it must not. If modifier keys are returned, it should only happen
-if no other keys were pressed in the meantime; i.e., the return should
-happen on key up. But if this is not possible, it may return the
-modifier keys on key down (if and only if SP->return_key_modifiers is
-TRUE).
-
-int PDC_modifiers_set(void);
-
-Called from PDC_return_key_modifiers(). If your platform needs to do
-anything in response to a change in SP->return_key_modifiers, do it
-here. Returns OK or ERR, which is passed on by the caller.
-
-int PDC_mouse_set(void);
-
-Called by mouse_set(), mouse_on(), and mouse_off() -- all the functions
-that modify SP->_trap_mbe. If your platform needs to do anything in
-response to a change in SP->_trap_mbe (for example, turning the mouse
-cursor on or off), do it here. Returns OK or ERR, which is passed on by
-the caller.
-
-void PDC_set_keyboard_binary(bool on);
-
-Set keyboard input to "binary" mode. If you need to do something to keep
-the OS from processing ^C, etc. on your platform, do it here. TRUE turns
-the mode on; FALSE reverts it. This function is called from raw() and
-noraw().
-
-
-pdcscrn.c:
-----------
-
-bool PDC_can_change_color(void);
-
-Returns TRUE if init_color() and color_content() give meaningful
-results, FALSE otherwise. Called from can_change_color().
-
-int PDC_color_content(short color, short *red, short *green, short *blue);
-
-The core of color_content(). This does all the work of that function,
-except checking for values out of range and null pointers.
-
-int PDC_init_color(short color, short red, short green, short blue);
-
-The core of init_color(). This does all the work of that function,
-except checking for values out of range.
-
-void PDC_init_pair(short pair, short fg, short bg);
-
-The core of init_pair(). This does all the work of that function, except
-checking for values out of range. The values passed to this function
-should be returned by a call to PDC_pair_content() with the same pair
-number. PDC_transform_line() should use the specified colors when
-rendering a chtype with the given pair number.
-
-int PDC_pair_content(short pair, short *fg, short *bg);
-
-The core of pair_content(). This does all the work of that function,
-except checking for values out of range and null pointers.
-
-void PDC_reset_prog_mode(void);
-
-The non-portable functionality of reset_prog_mode() is handled here --
-whatever's not done in _restore_mode(). In current ports: In OS/2, this
-sets the keyboard to binary mode; in Win32, it enables or disables the
-mouse pointer to match the saved mode; in others it does nothing.
-
-void PDC_reset_shell_mode(void);
-
-The same thing, for reset_shell_mode(). In OS/2 and Win32, it restores
-the default console mode; in others it does nothing.
-
-int PDC_resize_screen(int nlines, int ncols);
-
-This does the main work of resize_term(). It may respond to non-zero
-parameters, by setting the screen to the specified size; to zero
-parameters, by setting the screen to a size chosen by the user at
-runtime, in an unspecified way (e.g., by dragging the edges of the
-window); or both. It may also do nothing, if there's no appropriate
-action for the platform.
-
-void PDC_restore_screen_mode(int i);
-
-Called from _restore_mode() in kernel.c, this function does the actual
-mode changing, if applicable. Currently used only in DOS and OS/2.
-
-void PDC_save_screen_mode(int i);
-
-Called from _save_mode() in kernel.c, this function saves the actual
-screen mode, if applicable. Currently used only in DOS and OS/2.
-
-void PDC_scr_close(void);
-
-The platform-specific part of endwin(). It may restore the image of the
-original screen saved by PDC_scr_open(), if the PDC_RESTORE_SCREEN
-environment variable is set; either way, if using an existing terminal,
-this function should restore it to the mode it had at startup, and move
-the cursor to the lower left corner. (The X11 port does nothing.)
-
-void PDC_scr_free(void);
-
-Frees the memory for SP allocated by PDC_scr_open(). Called by
-delscreen().
-
-int PDC_scr_open(int argc, char **argv);
-
-The platform-specific part of initscr(). It's actually called from
-Xinitscr(); the arguments, if present, correspond to those used with
-main(), and may be used to set the title of the terminal window, or for
-other, platform-specific purposes. (The arguments are currently used
-only in X11.) PDC_scr_open() must allocate memory for SP, and must
-initialize acs_map[] (unless it's preset) and several members of SP,
-including lines, cols, mouse_wait, orig_attr (and if orig_attr is TRUE,
-orig_fore and orig_back), mono, _restore and _preserve. (Although SP is
-used the same way in all ports, it's allocated here in order to allow
-the X11 port to map it to a block of shared memory.) If using an
-existing terminal, and the environment variable PDC_RESTORE_SCREEN is
-set, this function may also store the existing screen image for later
-restoration by PDC_scr_close().
-
-
-pdcsetsc.c:
------------
-
-int PDC_curs_set(int visibility);
-
-Called from curs_set(). Changes the appearance of the cursor -- 0 turns
-it off, 1 is normal (the terminal's default, if applicable, as
-determined by SP->orig_cursor), and 2 is high visibility. The exact
-appearance of these modes is not specified.
-
-
-pdcutil.c:
-----------
-
-void PDC_beep(void);
-
-Emits a short audible beep. If this is not possible on your platform,
-you must set SP->audible to FALSE during initialization (i.e., from
-PDC_scr_open() -- not here); otherwise, set it to TRUE. This function is
-called from beep().
-
-void PDC_napms(int ms);
-
-This is the core delay routine, called by napms(). It pauses for about
-(the X/Open spec says "at least") ms milliseconds, then returns. High
-degrees of accuracy and precision are not expected (though desirable, if
-you can achieve them). More important is that this function gives back
-the process' time slice to the OS, so that PDCurses idles at low CPU
-usage.
-
-const char *PDC_sysname(void);
-
-Returns a short string describing the platform, such as "DOS" or "X11".
-This is used by longname(). It must be no more than 100 characters; it
-should be much, much shorter (existing platforms use no more than 5).
-
---------------------------------------------------------------------------
-
-The following functions are implemented in the platform directories, but
-are accessed directly by apps. Refer to the user documentation for their
-descriptions:
-
-
-pdcclip.c:
-----------
-
-int PDC_clearclipboard(void);
-int PDC_freeclipboard(char *contents);
-int PDC_getclipboard(char **contents, long *length);
-int PDC_setclipboard(const char *contents, long length);
-
-
-pdckbd.c:
----------
-
-unsigned long PDC_get_input_fd(void);
-
-
-pdcsetsc.c:
------------
-
-int PDC_set_blink(bool blinkon);
-void PDC_set_title(const char *title);
diff --git a/payloads/libpayload/curses/PDCurses-3.4/Makefile.in b/payloads/libpayload/curses/PDCurses-3.4/Makefile.in
deleted file mode 100644
index dc40abf..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/Makefile.in
+++ /dev/null
@@ -1,108 +0,0 @@
-# Makefile for PDCurses library for X11
-
-SHELL = @SHELL@
-
- at SET_MAKE@
-
-srcdir =@srcdir@
-prefix =@prefix@
-exec_prefix =$(DESTDIR)@exec_prefix@
-libdir =$(exec_prefix)/lib
-bindir =$(exec_prefix)/bin
-includedir =$(exec_prefix)/include
-pdcursesdir =./x11
-
-INSTALL =$(srcdir)/install-sh
-RANLIB =@RANLIB@
-SHLPRE = @SHLPRE@
-SHLPST = @SHLPST@
-SHLFILE = XCurses
-
-include $(srcdir)/version.mif
-
-PDC_DIR=PDCurses-$(VERDOT)
-
-ZIPFILE = pdcurs$(VER).zip
-TARBALL = $(PDC_DIR).tar.gz
-
-all \
-clean \
-distclean \
-mostlyclean \
-realclean ::
- cd x11; $(MAKE) $(MFLAGS) $@
- cd doc; $(MAKE) $(MFLAGS) $@
-
-install ::
- $(INSTALL) -d -m 755 $(libdir)
- $(INSTALL) -d -m 755 $(bindir)
- $(INSTALL) -d -m 755 $(includedir)
- $(INSTALL) -d -m 755 $(includedir)/xcurses
- $(INSTALL) -c -m 644 $(srcdir)/curses.h $(includedir)/xcurses.h
- $(INSTALL) -c -m 644 $(srcdir)/curses.h $(includedir)/xcurses/curses.h
- sed -e 's/#include <curses.h>/#include <xcurses.h>/' \
- < $(srcdir)/panel.h > ./xpanel.h
- $(INSTALL) -m 644 ./xpanel.h $(includedir)/xpanel.h
- $(INSTALL) -c -m 644 $(srcdir)/panel.h $(includedir)/xcurses/panel.h
- $(INSTALL) -c -m 644 $(srcdir)/term.h $(includedir)/xcurses/term.h
- $(INSTALL) -c -m 644 $(pdcursesdir)/libXCurses.a $(libdir)/libXCurses.a
- -$(RANLIB) $(libdir)/libXCurses.a
- -$(INSTALL) -c -m 755 $(pdcursesdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) \
- $(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST)
- ln -f -s $(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) \
- $(libdir)/$(SHLPRE)Xpanel$(SHLPST)
- ln -f -s $(libdir)/libXCurses.a $(libdir)/libXpanel.a
- -$(RANLIB) $(libdir)/libXpanel.a
- $(INSTALL) -c -m 755 x11/xcurses-config $(bindir)/xcurses-config
-
-clean ::
- rm -f config.log config.cache config.status
-
-distclean ::
- rm -f config.log config.cache config.status
- rm -f config.h Makefile x11/xcurses-config
-
-manual:
- cd doc; $(MAKE) $(MFLAGS) $@
-
-$(ZIPFILE):
- zip -9y $(ZIPFILE) README HISTORY IMPLEMNT *.spec *.mif *.def \
- Makefile.in config.h.in configure configure.ac config.guess \
- config.sub x11/xcurses-config.in install-sh aclocal.m4 curses.h \
- curspriv.h panel.h term.h pdcurses/README \
- pdcurses/*.c demos/README demos/*.c demos/*.h dos/README dos/*.c \
- dos/*.h dos/*.mak dos/*.lrf os2/README os2/*.c os2/*.h os2/*.mak \
- os2/*.lrf sdl1/README sdl1/*.c sdl1/*.h sdl1/Make* \
- win32/README win32/*.c win32/*.h win32/*.mak \
- win32/*.ico win32/*.rc x11/README x11/*.c x11/*.h x11/Makefile.* \
- x11/*.xbm doc/*.txt doc/manext.c doc/Makefile
-
-zip: $(ZIPFILE)
-
-../$(TARBALL):
- (cd ..; tar cvf - $(PDC_DIR)/README $(PDC_DIR)/HISTORY \
- $(PDC_DIR)/IMPLEMNT $(PDC_DIR)/*.spec $(PDC_DIR)/*.mif \
- $(PDC_DIR)/*.def $(PDC_DIR)/Makefile.in $(PDC_DIR)/aclocal.m4 \
- $(PDC_DIR)/config.h.in $(PDC_DIR)/configure \
- $(PDC_DIR)/config.guess $(PDC_DIR)/x11/xcurses-config.in \
- $(PDC_DIR)/config.sub $(PDC_DIR)/configure.ac \
- $(PDC_DIR)/install-sh $(PDC_DIR)/curses.h $(PDC_DIR)/curspriv.h \
- $(PDC_DIR)/panel.h $(PDC_DIR)/term.h \
- $(PDC_DIR)/pdcurses/README $(PDC_DIR)/pdcurses/*.c \
- $(PDC_DIR)/demos/README $(PDC_DIR)/demos/*.c $(PDC_DIR)/demos/*.h \
- $(PDC_DIR)/doc/*.txt $(PDC_DIR)/dos/README $(PDC_DIR)/dos/*.c \
- $(PDC_DIR)/dos/*.h $(PDC_DIR)/dos/*.mak $(PDC_DIR)/dos/*.lrf \
- $(PDC_DIR)/os2/README $(PDC_DIR)/os2/*.c $(PDC_DIR)/os2/*.h \
- $(PDC_DIR)/os2/*.mak $(PDC_DIR)/os2/*.lrf \
- $(PDC_DIR)/sdl1/README $(PDC_DIR)/sdl1/*.c $(PDC_DIR)/sdl1/*.h \
- $(PDC_DIR)/sdl1/Make* $(PDC_DIR)/win32/README $(PDC_DIR)/win32/*.c \
- $(PDC_DIR)/win32/*.h $(PDC_DIR)/win32/*.mak \
- $(PDC_DIR)/win32/*.ico $(PDC_DIR)/win32/*.rc $(PDC_DIR)/x11/README \
- $(PDC_DIR)/x11/*.c $(PDC_DIR)/x11/*.xbm $(PDC_DIR)/x11/*.h \
- $(PDC_DIR)/x11/Makefile.* $(PDC_DIR)/doc/manext.c \
- $(PDC_DIR)/doc/Makefile | gzip -9 > $(TARBALL))
-
-dist: ../$(TARBALL)
-
-rpm: ../$(TARBALL)
- rpmbuild -ba $(srcdir)/PDCurses.spec
diff --git a/payloads/libpayload/curses/PDCurses-3.4/PDCurses.spec b/payloads/libpayload/curses/PDCurses-3.4/PDCurses.spec
deleted file mode 100644
index 814e313..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/PDCurses.spec
+++ /dev/null
@@ -1,52 +0,0 @@
-# $Id: PDCurses.spec,v 1.18 2008/07/21 12:25:20 wmcbrine Exp $
-
-%define ver 34
-%define verdot 3.4
-%define base /usr
-
-Summary: Public Domain Curses for X11
-Name: PDCurses
-Version: %verdot
-Release: 1
-Copyright: Public Domain
-Group: Development/Libraries
-Source: %{name}-%{version}.tar.gz
-URL: http://pdcurses.sourceforge.net
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-Prefix: %base
-
-%description
-PDCurses for X11 is an implementation of the curses library that lets
-you build text-mode curses programs as native X11 applications. For more
-information, visit http://pdcurses.sourceforge.net/
-
-%prep
-%setup -q
-
-%build
-./configure --prefix=%{base}
-make
-
-%install
-make DESTDIR=$RPM_BUILD_ROOT install
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-rm -rf $RPM_BUILD_DIR/%{name}-%{version}
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root)
-%doc README HISTORY
-%{base}/bin/xcurses-config
-%{base}/lib/libXCurses.a
-%{base}/lib/libXpanel.a
-%{base}/lib/libXCurses.so
-%{base}/include/xcurses.h
-%{base}/include/xpanel.h
-%{base}/include/xcurses/curses.h
-%{base}/include/xcurses/panel.h
-%{base}/include/xcurses/term.h
diff --git a/payloads/libpayload/curses/PDCurses-3.4/README b/payloads/libpayload/curses/PDCurses-3.4/README
deleted file mode 100644
index dc476a9..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/README
+++ /dev/null
@@ -1,48 +0,0 @@
-Welcome to PDCurses!
-====================
-
-Public Domain Curses, aka PDCurses, is an implementation of X/Open
-curses for multiple platforms. The latest version can be found at:
-
- http://pdcurses.sourceforge.net/
-
-For changes, see the HISTORY file.
-
-
-Legal Stuff
------------
-
-The core package is in the public domain, but small portions of PDCurses
-are subject to copyright under various licenses. Each directory
-contains a README file, with a section titled "Distribution Status"
-which describes the status of the files in that directory.
-
-If you use PDCurses in an application, an acknowledgement would be
-appreciated, but is not mandatory. If you make corrections or
-enhancements to PDCurses, please forward them to the current maintainer
-for the benefit of other users.
-
-This software is provided AS IS with NO WARRANTY whatsoever.
-
-
-Ports
------
-
-PDCurses has been ported to DOS, OS/2, Win32, X11 and SDL. A directory
-containing the port-specific source files exists for each of these
-platforms. Build instructions are in the README file for each platform.
-
-
-Distribution Status
--------------------
-
-All files in this directory except configure, config.guess and
-config.sub are released to the Public Domain. config.guess and
-config.sub are under the GPL; configure is under a free license
-described within it.
-
-
-Maintainer
-----------
-
-William McBrine <wmcbrine at users.sf.net>
diff --git a/payloads/libpayload/curses/PDCurses-3.4/aclocal.m4 b/payloads/libpayload/curses/PDCurses-3.4/aclocal.m4
deleted file mode 100644
index ad7c3f3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/aclocal.m4
+++ /dev/null
@@ -1,613 +0,0 @@
-dnl ---------------------------------------------------------------------------
-dnl This file offers the following macros...
-dnl ---------------------------------------------------------------------------
-dnl MH_IPC
-dnl MH_CHECK_X_INC
-dnl MH_CHECK_X_LIB
-dnl MH_CHECK_X_HEADERS
-dnl MH_CHECK_X_KEYDEFS
-dnl MH_CHECK_X_TYPEDEF
-dnl MH_CHECK_LIB
-dnl MH_SHARED_LIBRARY
-dnl MH_HOWTO_DYN_LINK
-dnl MH_CHECK_CC_O
-dnl MH_SHLPST
-dnl MH_CHECK_MAX_SIGNALS
-
-dnl ---------------------------------------------------------------------------
-dnl Determine if the system has System V IPC. ie sys/ipc.h and sys/shm.h
-dnl headers.
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_IPC],
-[
-AC_CHECK_HEADER(sys/ipc.h)
-if test $ac_cv_header_sys_ipc_h = no; then
- AC_MSG_ERROR(Cannot find required header file sys/ipc.h; PDCurses cannot be configured)
-fi
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Set up the correct X header file location
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_X_INC],
-[
-mh_x11_dir=""
-mh_x11_xaw_dir=""
-
-mh_inc_dirs="$ac_x_header_dirs"
-
-dnl Provide for user supplying directory
-
-if test "x$x_includes" != xNONE ; then
- mh_inc_dirs="$x_includes $mh_inc_dirs"
-fi
-
-dnl Try to determine the directory containing X headers
-dnl We will append X11 to all the paths above as an extra check
-
-for ac_dir in $mh_inc_dirs ; do
- if test -r $ac_dir/Intrinsic.h; then
- mh_x11_dir=$ac_dir
- break
- fi
- if test -r $ac_dir/X11/Intrinsic.h; then
- mh_x11_dir="$ac_dir/X11"
- break
- fi
-done
-
-dnl Try to determine the directory containing Xaw headers
-dnl We will append X11 to all the paths above as an extra check
-
-if test "$with_xaw3d" = yes; then
- mh_xaw_dir="Xaw3d"
-else
- if test "$with_nextaw" = yes; then
- mh_xaw_dir="neXtaw"
- else
- mh_xaw_dir="Xaw"
- fi
-fi
-for ac_dir in $mh_inc_dirs ; do
- if test -r $ac_dir/$mh_xaw_dir/Box.h; then
- mh_x11_xaw_dir=$ac_dir
- break
- fi
- if test -r $ac_dir/X11/$mh_xaw_dir/Box.h; then
- mh_x11_xaw_dir="$ac_dir/X11"
- break
- fi
-done
-
-if test "x$mh_x11_dir" != "x" ; then
- mh_x11_dir_no_x11=`echo $mh_x11_dir | sed 's/\/X11$//'`
-
- if test "$mh_x11_dir_no_x11" != "$mh_x11_dir" ; then
- MH_XINC_DIR="-I$mh_x11_dir -I$mh_x11_dir_no_x11"
- else
- MH_XINC_DIR="-I$mh_x11_dir"
- fi
-else
- AC_MSG_ERROR(Cannot find required header file Intrinsic.h; PDCurses cannot be configured)
-fi
-
-if test "x$mh_x11_xaw_dir" != "x"; then
- if test "$mh_x11_xaw_dir" != "$mh_x11_dir" ; then
- MH_XINC_DIR="-I$mh_x11_xaw_dir $MH_XINC_DIR"
- fi
-else
- AC_MSG_ERROR(Cannot find required Xaw header file Box.h; PDCurses cannot be configured)
-fi
-
-AC_SUBST(MH_XINC_DIR)
-
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Set up the correct X library file location
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_X_LIB],
-[
-dnl Some systems require extra libraries...
-
-mh_solaris_flag=no
-mh_hpux9_flag=no
-AC_REQUIRE([AC_CANONICAL_SYSTEM])
-case "$target" in
- *solaris*)
- mh_solaris_flag=yes
- ;;
- *pc-sco*)
- extra_x_libs="Xext"
- ;;
- sparc*sunos*)
- extra_x_libs="Xext"
- if test "$ac_cv_prog_CC" = "gcc" ; then
- extra_ld_flags="-Wl,-Bstatic"
- extra_ld_flags2="-Wl,-Bdynamic"
- else
- extra_ld_flags="-Bstatic"
- extra_ld_flags2="-Bdynamic"
- fi
- ;;
- *hpux9*)
- mh_hpux9_flag=yes
- ;;
-esac
-
-if test "$with_xaw3d" = yes; then
- MH_X11_LIBS="Xaw3d Xmu Xt X11"
-else
- if test "$with_nextaw" = yes; then
- MH_X11_LIBS="neXtaw Xmu Xt X11"
- else
- MH_X11_LIBS="Xaw Xmu Xt X11"
- fi
-fi
-MH_X11R6_LIBS="SM ICE Xext"
-mh_x11r6=no
-
-mh_lib_dirs="$x_libraries `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`"
-
-dnl try to find libSM.[a,sl,so,dylib]. If we find it we are using X11R6
-for ac_dir in $mh_lib_dirs ; do
- for mh_xsm in libSM.a libSM.so libSM.sl libSM.dylib; do
- if test -r $ac_dir/$mh_xsm; then
- mh_x11r6=yes
- break 2
- fi
- done
-done
-
-if test "$mh_x11r6" = yes ; then
- mh_libs="$MH_X11_LIBS $MH_X11R6_LIBS"
-else
- mh_libs="$MH_X11_LIBS $extra_x_libs"
-fi
-
-
-dnl Ensure that all required X libraries are found
-
-mh_prev_dir=""
-mh_where_found=""
-mh_where_found_dirs=""
-mh_solaris_path=""
-for mh_lib in $mh_libs; do
- mh_lib_found=no
- for ac_dir in $mh_lib_dirs ; do
- for mh_ext in a so sl dll.a dylib; do
- if test -r $ac_dir/lib$mh_lib.$mh_ext; then
- if test "x$mh_prev_dir" != "x$ac_dir" ; then
- if test "x$mh_prev_dir" = "x" ; then
- mh_where_found="$mh_where_found found in $ac_dir"
- else
- mh_where_found="$mh_where_found and in $ac_dir"
- fi
- mh_prev_dir=$ac_dir
- mh_where_found_dirs="$mh_where_found_dirs $ac_dir"
- MH_XLIBS="$MH_XLIBS -L$ac_dir"
- mh_solaris_path="${mh_solaris_path}:$ac_dir"
- fi
- MH_XLIBS="$MH_XLIBS -l$mh_lib"
- mh_lib_found=yes
- break 2
- fi
- done
- done
- if test "$mh_lib_found" = no; then
- AC_MSG_ERROR(Cannot find required X library; lib$mh_lib. PDCurses cannot be configured)
- fi
-done
-
-mh_solaris_path=`echo $mh_solaris_path | sed 's/^://'`
-if test "$mh_solaris_flag" = yes ; then
- MH_XLIBS="-R$mh_solaris_path $extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2"
-else
- MH_XLIBS="$extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2"
-fi
-if test "$mh_hpux9_flag" = yes ; then
- grep -q XtSetLanguageProc $mh_x11_dir/Intrinsic.h
- if test $? -eq 0 ; then
- mh_found_xtshellstrings=no
- for mh_acdir in $mh_where_found_dirs ; do
- for mh_xaw in `ls $mh_acdir/libXaw.*` ; do
- nm $mh_xaw | grep XtShellStrings | grep -qv extern
- if test $? -eq 0 ; then
- mh_found_xtshellstrings=yes
- fi
- done
- done
- if test "$mh_found_xtshellstrings" = no ; then
- AC_MSG_WARN(The X11 development environment has not been installed correctly.)
- AC_MSG_WARN(The header file; Intrinsic.h, is for X11R5 while the Athena Widget)
- AC_MSG_WARN(Set library; libXaw is for X11R4. This is a common problem with)
- AC_MSG_WARN(HP-UX 9.x.)
- AC_MSG_ERROR(X11 installation incomplete; cannot continue)
- fi
- fi
-fi
-
-AC_SUBST(MH_XLIBS)
-
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Determine if the supplied X headers exist.
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_X_HEADERS],
-[
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $MH_XINC_DIR"
-for mh_header in $1; do
- AC_CHECK_HEADERS($mh_header)
-done
-CPPFLAGS="$save_CPPFLAGS"
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Determine if various key definitions exist in keysym.h
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_X_KEYDEFS],
-[
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $MH_XINC_DIR"
-for mh_keydef in $1; do
- AC_MSG_CHECKING(for $mh_keydef in keysym.h)
- mh_upper_name="HAVE_`echo $mh_keydef | tr '[a-z]' '[A-Z]'`"
- AC_TRY_COMPILE([#include <keysym.h>],
-[int i = $mh_keydef;],
- mh_have_key=yes; AC_DEFINE_UNQUOTED($mh_upper_name,1), mh_have_key=no )
- AC_MSG_RESULT($mh_have_key)
-done
-CPPFLAGS="$save_CPPFLAGS"
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Determine if supplied types have been typedefed
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_X_TYPEDEF],
-[
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $SYS_DEFS $MH_XINC_DIR"
-for td in $1 ; do
-AC_MSG_CHECKING(if $td is typedefed:)
-AC_TRY_COMPILE(
-[#include "X11/Xlib.h"],
-[$td fred],
- [mh_td=yes],
- [mh_td=no]
-)
-if test "$mh_td" = yes ; then
- TD_upper=`echo $td | tr a-z A-Z`
- AC_DEFINE_UNQUOTED(${TD_upper}_TYPEDEFED, 1)
-fi
-AC_MSG_RESULT($mh_td)
-done
-CPPFLAGS="$save_CPPFLAGS"
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Check for presence of various libraries
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_LIB],
-[
-MH_EXTRA_LIBS=''
-for mh_lib in $1; do
- if test "$on_qnx" = yes; then
- AC_MSG_CHECKING(for library -l${mh_lib})
- if test -r /usr/lib/${mh_lib}3r.lib; then
- AC_MSG_RESULT(found)
- MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}"
- else
- AC_MSG_RESULT(not found)
- fi
- else
- AC_CHECK_LIB($mh_lib,main,mh_lib_found=yes,mh_lib_found=no)
- if test "$mh_lib_found" = yes; then
- MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}"
- fi
- fi
-done
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Work out how to create a dynamically loaded module
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_HOWTO_DYN_LINK],
-[
-mh_compile='${CC-cc} -c $DYN_COMP conftest.$ac_ext 1>&AC_FD_CC'
-cat > conftest.$ac_ext <<EOF
-dnl [#]line __oline__ "[$]0"
-[#]line __oline__ "configure"
-int foo()
-{
-return(0);
-}
-EOF
-if AC_TRY_EVAL(mh_compile) && test -s conftest.o; then
- mh_dyn_link='ld -shared -o conftest.rxlib conftest.o -lc 1>&AC_FD_CC'
-# mh_dyn_link='${CC} -Wl,-shared -o conftest.rxlib conftest.o -lc 1>&AC_FD_CC'
- if AC_TRY_EVAL(mh_dyn_link) && test -s conftest.rxlib; then
- LD_RXLIB1="ld -shared"
-# LD_RXLIB1="${CC} -Wl,-shared"
- SHLPRE="lib"
- SHLPST=".so"
- else
- mh_dyn_link='ld -G -o conftest.rxlib conftest.o 1>&AC_FD_CC'
-# mh_dyn_link='${CC} -Wl,-G -o conftest.rxlib conftest.o 1>&AC_FD_CC'
- if AC_TRY_EVAL(mh_dyn_link) && test -s conftest.rxlib; then
- LD_RXLIB1="ld -G"
-# LD_RXLIB1="${CC} -Wl,-G"
- SHLPRE="lib"
- SHLPST=".so"
- else
- LD_RXLIB1=""
- SHLPRE=""
- SHLPST=""
- fi
- fi
-fi
-rm -f conftest*
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Determine how to build shared libraries etc..
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_SHARED_LIBRARY],
-[
-AC_REQUIRE([MH_SHLPST])
-dnl
-dnl If compiler is gcc, then flags should be the same for all platforms
-dnl (just guessing on this)
-dnl
-AIX_DYN="no"
-BEOS_DYN="no"
-SHLFILE="$1"
-SHLFILES="$*"
-RXPACKEXPORTS=""
-SHLPRE="lib"
-LD_RXLIB1=""
-
-AC_REQUIRE([AC_CANONICAL_SYSTEM])
-case "$target" in
- *hp-hpux*)
- SYS_DEFS="-D_HPUX_SOURCE"
- LD_RXLIB1="ld -b -q -n"
- ;;
- *ibm-aix*)
- SYS_DEFS="-D_ALL_SOURCE -DAIX"
- AIX_DYN="yes"
- DYN_COMP="-DDYNAMIC"
- LD_RXLIB1="ld -bnoentry -bM:SRE"
- RXPACKEXPORTS="-bE:$SHLFILE.exp"
- RXPACKEXP="$SHLFILE.exp"
- ;;
- *dec-osf*)
- if test "$ac_cv_prog_CC" = "gcc"; then
- SYS_DEFS="-D_POSIX_SOURCE -D_XOPEN_SOURCE"
- else
- SYS_DEFS="-D_POSIX_SOURCE -D_XOPEN_SOURCE -Olimit 800"
- fi
- LD_RXLIB1="ld -shared"
- ;;
- *sequent-dynix*|*esix*|*dgux*)
- LD_RXLIB1="ld -G"
- ;;
- *solaris*)
- if test "$ac_cv_prog_CC" = "gcc"; then
- LD_RXLIB1="gcc -shared"
- else
- LD_RXLIB1="ld -G"
- fi
- ;;
- sparc*sunos*)
- SYS_DEFS="-DSUNOS -DSUNOS_STRTOD_BUG"
- LD_RXLIB1="ld"
- ;;
- *linux*|*atheos*|*nto-qnx*)
- LD_RXLIB1="${CC} -shared"
- ;;
- *freebsd*)
- LD_RXLIB1="ld -Bdynamic -Bshareable"
- ;;
- *pc-sco*)
- LD_RXLIB1="ld -dy -G"
- ;;
- *beos*)
- LD_RXLIB1="${CC} -Wl,-shared -nostart -Xlinker -soname=\$(@)"
- BEOS_DYN="yes"
- ;;
- *qnx*)
- SHLPRE=""
- DYN_COMP="-Q" # force no check for dynamic loading
- SHLFILE=""
- ;;
- *cygwin)
- SHLPRE=""
- DYN_COMP="-DDYNAMIC"
- LD_RXLIB1="dllwrap --def \$(srcdir)/../win32/pdcurses.def --target i386-cygwin32 --dllname \$(@)"
-# cygwininstall target MUST install the shared library itself because
-# it puts it into $(bindir) not $(libdir) as all other platforms
- ;;
- *darwin*)
- DYN_COMP="-fno-common"
- LD_RXLIB1="${CC} -flat_namespace -undefined suppress -dynamiclib -install_name=\$(@)"
- ;;
- *)
- ;;
-esac
-
-dnl determine what switches our compiler uses for building objects
-dnl suitable for inclusion in shared libraries
-dnl Only call this if DYN_COMP is not set. If we have set DYN_COMP
-dnl above, then we know how to compile AND link for dynamic libraries
-
-if test "$DYN_COMP" = ""; then
-AC_MSG_CHECKING(compiler flags for a dynamic object)
-
-cat > conftest.$ac_ext <<EOF
-dnl [#]line __oline__ "[$]0"
-[#]line __oline__ "configure"
-int a=0
-EOF
-
- DYN_COMP=""
- mh_cv_stop=no
- save_cflags="$CFLAGS"
- mh_cv_flags="-fPIC -KPIC +Z"
- for a in $mh_cv_flags; do
- CFLAGS="-c $a"
-
- mh_compile='${CC-cc} -c $CFLAGS conftest.$ac_ext > conftest.tmp 2>&1'
- if AC_TRY_EVAL(mh_compile); then
- DYN_COMP=""
- else
- slash="\\"
- mh_dyncomp="`egrep -c $slash$a conftest.tmp`"
- if test "$mh_dyncomp" = "0"; then
- DYN_COMP="$a -DDYNAMIC"
- AC_MSG_RESULT($a)
- break
- else
- DYN_COMP=""
- fi
- fi
- done
- if test "$DYN_COMP" = ""; then
- AC_MSG_RESULT(none of $mh_cv_flags supported)
- fi
- if test "$LD_RXLIB1" = ""; then
- MH_HOWTO_DYN_LINK()
- fi
- CFLAGS=$save_cflags
- rm -f conftest.*
-fi
-
-
-SHL_TARGETS=""
-
-if test "$AIX_DYN" = "yes"; then
- aix_exports="config.exports.aix"
- echo "" > $aix_exports
-fi
-
-if test "$ac_cv_header_dl_h" = "yes" -o "$ac_cv_header_dlfcn_h" = "yes" -o "$AIX_DYN" = "yes" -o "$BEOS_DYN" = "yes" -o "$DLFCNINCDIR" != "" -o "$DLFCNLIBDIR" != ""; then
- EXPS="1,2,3,4,5,6,7,8,9"
- for a in $SHLFILES
- do
- SHL_TARGETS="${SHL_TARGETS} ${SHLPRE}${a}${SHLPST}"
- this=`echo $EXPS | cut -d, -f1`
- EXPS=`echo $EXPS | cut -d, -f2-`
- if test "$AIX_DYN" = "yes"; then
- echo "RXPACKEXP$this=$a.exp" >> $aix_exports
- echo "RXPACKEXPORTS$this=-bE:$a.exp" >> $aix_exports
- fi
- done
-fi
-
-AC_SUBST(DYN_COMP)
-AC_SUBST(LIBS)
-AC_SUBST(LD_RXLIB1)
-AC_SUBST(SHLPRE)
-AC_SUBST(SHLPST)
-AC_SUBST(SHL_TARGETS)
-AC_SUBST(O2SAVE)
-AC_SUBST(CC2O)
-AC_SUBST(SAVE2O)
-AC_SUBST(RXPACKEXPORTS)
-])dnl
-
-dnl ---------------------------------------------------------------------------
-dnl Check if C compiler supports -c -o file.ooo
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_CC_O],
-[
-AC_MSG_CHECKING(whether $CC understand -c and -o together)
-set dummy $CC; ac_cc="`echo [$]2 |
-changequote(, )dnl
- sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
-changequote([, ])dnl
-AC_CACHE_VAL(ac_cv_prog_cc_${ac_cc}_c_o,
-[echo 'foo(){}' > conftest.c
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-eval ac_cv_prog_cc_${ac_cc}_c_o=no
-ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&AC_FD_CC'
-if AC_TRY_EVAL(ac_try) && test -f conftest.ooo && AC_TRY_EVAL(ac_try);
-then
- ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&AC_FD_CC'
- if AC_TRY_EVAL(ac_try) && test -f conftest.ooo && AC_TRY_EVAL(ac_try);
- then
- eval ac_cv_prog_cc_${ac_cc}_c_o=yes
- fi
-fi
-rm -f conftest*
-])dnl
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then
- O2SAVE=""
- SAVE2O=""
- CC2O="-o $"'@'
- AC_MSG_RESULT(yes)
-else
- O2SAVE="-mv \`basename "$'@'" .sho\`.o \`basename "$'@'" .sho\`.o.save;"
- SAVE2O="-mv \`basename "$'@'" .sho\`.o "$'@'"; mv \`basename "$'@'" .sho\`.o.save \`basename "$'@'" .sho\`.o"
- CC2O=""
- AC_MSG_RESULT(no)
-fi
-])
-
-dnl ---------------------------------------------------------------------------
-dnl Determines the file extension for shared libraries
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_SHLPST],
-[
-AC_MSG_CHECKING(shared library extension)
-SHLPST=".so"
-AC_REQUIRE([AC_CANONICAL_SYSTEM])
-case "$target" in
- *hp-hpux*)
- SHLPST=".sl"
- ;;
- *ibm-aix*)
- SHLPST=".a"
- ;;
- *qnx*)
- SHLPST=""
- ;;
- *cygwin*)
- SHLPST=".dll"
- ;;
- *darwin*)
- SHLPST=".dylib"
- ;;
-esac
-AC_SUBST(SHLPST)
-AC_MSG_RESULT($SHLPST)
-])
-
-dnl ---------------------------------------------------------------------------
-dnl Determine the system limit for number of signals
-dnl ---------------------------------------------------------------------------
-AC_DEFUN([MH_CHECK_MAX_SIGNALS],
-[
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $SYS_DEFS"
-AC_MSG_CHECKING(for maximum signal specifier:)
-AC_CACHE_VAL(mh_cv_max_signals,
-mh_found="no"
-for mh_sigs in $1; do
- AC_TRY_COMPILE([#include <signal.h>],
-[return $mh_sigs;],
- mh_found="yes"; mh_cv_max_signals="$mh_sigs" )
- if test "$mh_found" = "yes"; then
- break;
- fi
-done)
-CPPFLAGS="$save_CPPFLAGS"
-if test "$mh_found" = "no"; then
- AC_MSG_ERROR(Cannot find a system limit for number of signals. PDCurses cannot be configured on this machine.)
-else
- AC_DEFINE_UNQUOTED(PDC_MAX_SIGNALS,$mh_cv_max_signals)
- AC_MSG_RESULT($mh_cv_max_signals)
-fi
-])dnl
diff --git a/payloads/libpayload/curses/PDCurses-3.4/config.h.in b/payloads/libpayload/curses/PDCurses-3.4/config.h.in
deleted file mode 100644
index 28e9e48..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/config.h.in
+++ /dev/null
@@ -1,133 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define if you have the <DECkeySym.h> header file */
-#undef HAVE_DECKEYSYM_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <dl.h> header file. */
-#undef HAVE_DL_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `poll' function. */
-#undef HAVE_POLL
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define if you have the <Sunkeysym.h> header file */
-#undef HAVE_SUNKEYSYM_H
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `usleep' function. */
-#undef HAVE_USLEEP
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
-
-/* Define to 1 if you have the `vsscanf' function. */
-#undef HAVE_VSSCANF
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_BEGIN
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_DELETE
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_DOWN
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_END
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_HOME
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_INSERT
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_LEFT
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_NEXT
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_PRIOR
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_RIGHT
-
-/* Define if you have this defined in <keysym.h> */
-#undef HAVE_XK_KP_UP
-
-/* Define if you have the <xpm.h> header file */
-#undef HAVE_XPM_H
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define as the system defined limit for number of signals */
-#undef PDC_MAX_SIGNALS
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define if you want to use neXtaw library */
-#undef USE_NEXTAW
-
-/* Define if you want to use Xaw3d library */
-#undef USE_XAW3D
-
-/* Define XPointer is typedefed in X11/Xlib.h */
-#undef XPOINTER_TYPEDEFED
diff --git a/payloads/libpayload/curses/PDCurses-3.4/configure.ac b/payloads/libpayload/curses/PDCurses-3.4/configure.ac
deleted file mode 100644
index cf87496..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/configure.ac
+++ /dev/null
@@ -1,285 +0,0 @@
-dnl $Id: configure.ac,v 1.35 2008/07/21 12:19:21 wmcbrine Exp $
-dnl Process this file with autoconf to produce a configure script.
-
-AC_INIT([PDCurses], [3.4], [wmcbrine at users.sf.net], [PDCurses])
-AC_CONFIG_SRCDIR([curspriv.h])
-
-AC_SUBST(prefix)
-
-AC_PROG_CC
-
-AC_CONFIG_HEADER(config.h)
-dnl Checks for system first
-AC_CANONICAL_SYSTEM([])
-
-mymakefile="Makefile"
-on_qnx=no
-case "$target" in
- *hp-hpux*)
- SYS_DEFS="-D_HPUX_SOURCE"
- ;;
- *ibm-aix*)
- SYS_DEFS="-D_ALL_SOURCE"
- mymakefile="Makefile.aix"
- ;;
- *dec-osf*)
- SYS_DEFS="-D_XOPEN_SOURCE_EXTENDED"
- ;;
- *pc-sco*)
- SYS_DEFS="-UM_XENIX -b elf"
- ;;
- *qnx*)
- on_qnx=yes
- SYS_DEFS="-Q"
- ;;
- *)
- ;;
-esac
-AC_SUBST(SYS_DEFS)
-
-MH_CHECK_MAX_SIGNALS(NSIG __sys_nsig)
-
-dnl Check for other programs.
-AC_PROG_RANLIB
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-
-dnl ensure that the system has System V IPC support
-MH_IPC
-
-if test $ac_cv_header_stdc != yes; then
- AC_MSG_ERROR([Need ANSI C headers])
-fi
-
-dnl Checks for libraries.
-
-AC_CHECK_HEADERS(fcntl.h \
- sys/time.h \
- sys/select.h \
- dlfcn.h \
- dl.h
-)
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_HEADER_TIME
-MH_CHECK_LIB(socket nls)
-AC_SUBST(MH_EXTRA_LIBS)
-MH_CHECK_CC_O
-
-dnl Checks for library functions.
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(vsscanf usleep poll vsnprintf)
-
-dnl Check for X includes and X libraries
-AC_PATH_X
-MH_CHECK_X_INC
-MH_CHECK_X_LIB
-MH_CHECK_X_HEADERS(DECkeysym.h Sunkeysym.h xpm.h)
-MH_CHECK_X_KEYDEFS(XK_KP_Delete XK_KP_Insert XK_KP_End XK_KP_Down XK_KP_Next \
- XK_KP_Left XK_KP_Right XK_KP_Home XK_KP_Up XK_KP_Prior XK_KP_Begin)
-MH_CHECK_X_TYPEDEF(XPointer)
-dnl
-dnl extra for xpm library
-if test $ac_cv_header_xpm_h = yes; then
- MH_XLIBS="$MH_XLIBS -lXpm"
-fi
-dnl ---------- allow --enable-debug to compile in debug mode ---------
-AC_ARG_ENABLE(debug,
- [ --enable-debug turn on debugging],
- [with_debug=$enableval],
- [with_debug=no],
-)
-cflags_g="`echo $CFLAGS | grep -c '\-g'`"
-cflags_O="`echo $CFLAGS | grep -c '\-O'`"
-
-if test "$with_debug" = yes; then
- if test "$cflags_g" = "0"; then
- CFLAGS="${CFLAGS} -g"
- fi
- if test "$cflags_O" != "0"; then
- CFLAGS="`echo ${CFLAGS} | sed -e s/-O.//`"
- fi
- CFLAGS="${CFLAGS} -DPDCDEBUG"
-else
- if test "$cflags_O" = "0"; then
- CFLAGS="${CFLAGS} -O"
- fi
- if test "$cflags_g" != "0"; then
- CFLAGS="`echo ${CFLAGS} | sed -e s/-g//`"
- fi
-fi
-if test "$ac_cv_prog_CC" = "gcc"; then
- if test "$with_debug" = yes; then
- CFLAGS="${CFLAGS} -Wall"
- else
- CFLAGS="-O2 -Wall -fomit-frame-pointer"
- fi
-fi
-if test "$on_qnx" = yes; then
- if test "$with_debug" = yes; then
- CFLAGS="-g"
- else
- CFLAGS="-Otax"
- fi
-fi
-
-dnl --------------- check for wide character support -----------------
-dnl allow --enable-widec to include wide character support
-AC_ARG_ENABLE(widec,
- [ --enable-widec include support for wide characters],
- [with_widec=$enableval],
- [with_widec=no],
-)
-if test "$with_widec" = yes; then
- SYS_DEFS="$SYS_DEFS -DPDC_WIDE"
-fi
-
-dnl -------------------- check for XIM support -----------------------
-dnl allow --enable-xim to include XIM support
-AC_ARG_ENABLE(xim,
- [ --enable-xim include support for XIM],
- [with_xim=$enableval],
- [with_xim=no],
-)
-if test "$with_xim" = yes; then
- SYS_DEFS="$SYS_DEFS -DPDC_XIM"
-fi
-
-dnl ------------------------ force UTF-8? ----------------------------
-dnl allow --enable-force-utf8 to override locale settings
-AC_ARG_ENABLE(force-utf8,
- [ --enable-force-utf8 override locale settings; use UTF-8],
- [force_utf8=$enableval],
- [force_utf8=no],
-)
-if test "$force_utf8" = yes; then
- SYS_DEFS="$SYS_DEFS -DPDC_FORCE_UTF8"
-fi
-
-dnl ----------------- check for Purify support -----------------------
-dnl allow --enable-purify to enable linking with Purify
-AC_ARG_ENABLE(purify,
- [ --enable-purify link with Purify (TM)],
- [with_purify=$enableval],
- [with_purify=no],
-)
-if test "$with_purify" = yes; then
- PURIFY="purify"
-else
- PURIFY=""
-fi
-AC_SUBST(PURIFY)
-
-dnl --------------------- check for Xaw3d library --------------------
-dnl allow --with-xaw3d to link with PDCurses
-AC_ARG_WITH(xaw3d,
- [ --with-xaw3d link with Xaw3d],
- [with_xaw3d=$withval],
- [with_xaw3d=no],
-)
-if test "$with_xaw3d" = yes; then
- AC_DEFINE([USE_XAW3D], [1],
- [Define if you want to use Xaw3d library]
- )
-fi
-
-dnl --------------------- check for neXtaw library -------------------
-dnl allow --with-nextaw to link with PDCurses
-AC_ARG_WITH(nextaw,
- [ --with-nextaw link with neXtaw],
- [with_nextaw=$withval],
- [with_nextaw=no],
-)
-if test "$with_nextaw" = yes; then
- AC_DEFINE([USE_NEXTAW], [1],
- [Define if you want to use neXtaw library]
- )
-fi
-
-dnl -------------- check how to make shared libraries ----------------
-dnl Force the ability of shared library usage
-MH_SHARED_LIBRARY(XCurses)
-
-AC_CONFIG_FILES([Makefile x11/$mymakefile x11/xcurses-config])
-AC_OUTPUT
-
-case "$target" in
- *ibm-aix*)
- mv x11/Makefile.aix x11/Makefile
- AC_MSG_RESULT(renaming x11/Makefile.aix to x11/Makefile)
- ;;
- *)
- ;;
-esac
-
-AC_DEFINE([PDC_MAX_SIGNALS], [],
- [Define as the system defined limit for number of signals]
-)
-
-AC_DEFINE([HAVE_DECKEYSYM_H], [],
- [Define if you have the <DECkeySym.h> header file]
-)
-
-AC_DEFINE([HAVE_SUNKEYSYM_H], [],
- [Define if you have the <Sunkeysym.h> header file]
-)
-
-AC_DEFINE([HAVE_XPM_H], [],
- [Define if you have the <xpm.h> header file]
-)
-
-AC_DEFINE([HAVE_XK_KP_DELETE], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_INSERT], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_END], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_DOWN], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_NEXT], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_LEFT], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_RIGHT], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_HOME], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_UP], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_PRIOR], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([HAVE_XK_KP_BEGIN], [],
- [Define if you have this defined in <keysym.h>]
-)
-
-AC_DEFINE([USE_XAW3D], [],
- [Define if you want to use Xaw3d library]
-)
-
-AC_DEFINE([USE_NEXTAW], [],
- [Define if you want to use neXtaw library]
-)
-
-AC_DEFINE([XPOINTER_TYPEDEFED], [],
- [Define XPointer is typedefed in X11/Xlib.h]
-)
diff --git a/payloads/libpayload/curses/PDCurses-3.4/curses.h b/payloads/libpayload/curses/PDCurses-3.4/curses.h
deleted file mode 100644
index 5f651fe..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/curses.h
+++ /dev/null
@@ -1,1385 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: curses.h,v 1.295 2008/07/15 17:13:25 wmcbrine Exp $ */
-
-/*----------------------------------------------------------------------*
- * PDCurses *
- *----------------------------------------------------------------------*/
-
-#ifndef __PDCURSES__
-#define __PDCURSES__ 1
-
-/*man-start**************************************************************
-
-PDCurses definitions list: (Only define those needed)
-
- XCURSES True if compiling for X11.
- PDC_RGB True if you want to use RGB color definitions
- (Red = 1, Green = 2, Blue = 4) instead of BGR.
- PDC_WIDE True if building wide-character support.
- PDC_DLL_BUILD True if building a Win32 DLL.
- NCURSES_MOUSE_VERSION Use the ncurses mouse API instead
- of PDCurses' traditional mouse API.
-
-PDCurses portable platform definitions list:
-
- PDC_BUILD Defines API build version.
- PDCURSES Enables access to PDCurses-only routines.
- XOPEN Always true.
- SYSVcurses True if you are compiling for SYSV portability.
- BSDcurses True if you are compiling for BSD portability.
-
-**man-end****************************************************************/
-
-#define PDC_BUILD 3401
-#define PDCURSES 1 /* PDCurses-only routines */
-#define XOPEN 1 /* X/Open Curses routines */
-#define SYSVcurses 1 /* System V Curses routines */
-#define BSDcurses 1 /* BSD Curses routines */
-#define CHTYPE_LONG 1 /* size of chtype; long */
-
-/*----------------------------------------------------------------------*/
-
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h> /* Required by X/Open usage below */
-
-#ifdef PDC_WIDE
-# include <wchar.h>
-#endif
-
-#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
-extern "C"
-{
-# define bool _bool
-#endif
-
-/*----------------------------------------------------------------------
- *
- * PDCurses Manifest Constants
- *
- */
-
-#ifndef FALSE
-# define FALSE 0
-#endif
-#ifndef TRUE
-# define TRUE 1
-#endif
-#ifndef NULL
-# define NULL (void *)0
-#endif
-#ifndef ERR
-# define ERR (-1)
-#endif
-#ifndef OK
-# define OK 0
-#endif
-
-/*----------------------------------------------------------------------
- *
- * PDCurses Type Declarations
- *
- */
-
-typedef unsigned char bool; /* PDCurses Boolean type */
-
-#ifdef CHTYPE_LONG
-# if _LP64
-typedef unsigned int chtype;
-# else
-typedef unsigned long chtype; /* 16-bit attr + 16-bit char */
-# endif
-#else
-typedef unsigned short chtype; /* 8-bit attr + 8-bit char */
-#endif
-
-#ifdef PDC_WIDE
-typedef chtype cchar_t;
-#endif
-
-typedef chtype attr_t;
-
-/*----------------------------------------------------------------------
- *
- * PDCurses Mouse Interface -- SYSVR4, with extensions
- *
- */
-
-typedef struct
-{
- int x; /* absolute column, 0 based, measured in characters */
- int y; /* absolute row, 0 based, measured in characters */
- short button[3]; /* state of each button */
- int changes; /* flags indicating what has changed with the mouse */
-} MOUSE_STATUS;
-
-#define BUTTON_RELEASED 0x0000
-#define BUTTON_PRESSED 0x0001
-#define BUTTON_CLICKED 0x0002
-#define BUTTON_DOUBLE_CLICKED 0x0003
-#define BUTTON_TRIPLE_CLICKED 0x0004
-#define BUTTON_MOVED 0x0005 /* PDCurses */
-#define WHEEL_SCROLLED 0x0006 /* PDCurses */
-#define BUTTON_ACTION_MASK 0x0007 /* PDCurses */
-
-#define PDC_BUTTON_SHIFT 0x0008 /* PDCurses */
-#define PDC_BUTTON_CONTROL 0x0010 /* PDCurses */
-#define PDC_BUTTON_ALT 0x0020 /* PDCurses */
-#define BUTTON_MODIFIER_MASK 0x0038 /* PDCurses */
-
-#define MOUSE_X_POS (Mouse_status.x)
-#define MOUSE_Y_POS (Mouse_status.y)
-
-/*
- * Bits associated with the .changes field:
- * 3 2 1 0
- * 210987654321098765432109876543210
- * 1 <- button 1 has changed
- * 10 <- button 2 has changed
- * 100 <- button 3 has changed
- * 1000 <- mouse has moved
- * 10000 <- mouse position report
- * 100000 <- mouse wheel up
- * 1000000 <- mouse wheel down
- */
-
-#define PDC_MOUSE_MOVED 0x0008
-#define PDC_MOUSE_POSITION 0x0010
-#define PDC_MOUSE_WHEEL_UP 0x0020
-#define PDC_MOUSE_WHEEL_DOWN 0x0040
-
-#define A_BUTTON_CHANGED (Mouse_status.changes & 7)
-#define MOUSE_MOVED (Mouse_status.changes & PDC_MOUSE_MOVED)
-#define MOUSE_POS_REPORT (Mouse_status.changes & PDC_MOUSE_POSITION)
-#define BUTTON_CHANGED(x) (Mouse_status.changes & (1 << ((x) - 1)))
-#define BUTTON_STATUS(x) (Mouse_status.button[(x) - 1])
-#define MOUSE_WHEEL_UP (Mouse_status.changes & PDC_MOUSE_WHEEL_UP)
-#define MOUSE_WHEEL_DOWN (Mouse_status.changes & PDC_MOUSE_WHEEL_DOWN)
-
-/* mouse bit-masks */
-
-#define BUTTON1_RELEASED 0x00000001L
-#define BUTTON1_PRESSED 0x00000002L
-#define BUTTON1_CLICKED 0x00000004L
-#define BUTTON1_DOUBLE_CLICKED 0x00000008L
-#define BUTTON1_TRIPLE_CLICKED 0x00000010L
-#define BUTTON1_MOVED 0x00000010L /* PDCurses */
-
-#define BUTTON2_RELEASED 0x00000020L
-#define BUTTON2_PRESSED 0x00000040L
-#define BUTTON2_CLICKED 0x00000080L
-#define BUTTON2_DOUBLE_CLICKED 0x00000100L
-#define BUTTON2_TRIPLE_CLICKED 0x00000200L
-#define BUTTON2_MOVED 0x00000200L /* PDCurses */
-
-#define BUTTON3_RELEASED 0x00000400L
-#define BUTTON3_PRESSED 0x00000800L
-#define BUTTON3_CLICKED 0x00001000L
-#define BUTTON3_DOUBLE_CLICKED 0x00002000L
-#define BUTTON3_TRIPLE_CLICKED 0x00004000L
-#define BUTTON3_MOVED 0x00004000L /* PDCurses */
-
-/* For the ncurses-compatible functions only, BUTTON4_PRESSED and
- BUTTON5_PRESSED are returned for mouse scroll wheel up and down;
- otherwise PDCurses doesn't support buttons 4 and 5 */
-
-#define BUTTON4_RELEASED 0x00008000L
-#define BUTTON4_PRESSED 0x00010000L
-#define BUTTON4_CLICKED 0x00020000L
-#define BUTTON4_DOUBLE_CLICKED 0x00040000L
-#define BUTTON4_TRIPLE_CLICKED 0x00080000L
-
-#define BUTTON5_RELEASED 0x00100000L
-#define BUTTON5_PRESSED 0x00200000L
-#define BUTTON5_CLICKED 0x00400000L
-#define BUTTON5_DOUBLE_CLICKED 0x00800000L
-#define BUTTON5_TRIPLE_CLICKED 0x01000000L
-
-#define MOUSE_WHEEL_SCROLL 0x02000000L /* PDCurses */
-#define BUTTON_MODIFIER_SHIFT 0x04000000L /* PDCurses */
-#define BUTTON_MODIFIER_CONTROL 0x08000000L /* PDCurses */
-#define BUTTON_MODIFIER_ALT 0x10000000L /* PDCurses */
-
-#define ALL_MOUSE_EVENTS 0x1fffffffL
-#define REPORT_MOUSE_POSITION 0x20000000L
-
-/* ncurses mouse interface */
-
-typedef unsigned long mmask_t;
-
-typedef struct
-{
- short id; /* unused, always 0 */
- int x, y, z; /* x, y same as MOUSE_STATUS; z unused */
- mmask_t bstate; /* equivalent to changes + button[], but
- in the same format as used for mousemask() */
-} MEVENT;
-
-#ifdef NCURSES_MOUSE_VERSION
-# define BUTTON_SHIFT BUTTON_MODIFIER_SHIFT
-# define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL
-# define BUTTON_CTRL BUTTON_MODIFIER_CONTROL
-# define BUTTON_ALT BUTTON_MODIFIER_ALT
-#else
-# define BUTTON_SHIFT PDC_BUTTON_SHIFT
-# define BUTTON_CONTROL PDC_BUTTON_CONTROL
-# define BUTTON_ALT PDC_BUTTON_ALT
-#endif
-
-/*----------------------------------------------------------------------
- *
- * PDCurses Structure Definitions
- *
- */
-
-typedef struct _win /* definition of a window */
-{
- int _cury; /* current pseudo-cursor */
- int _curx;
- int _maxy; /* max window coordinates */
- int _maxx;
- int _begy; /* origin on screen */
- int _begx;
- int _flags; /* window properties */
- chtype _attrs; /* standard attributes and colors */
- chtype _bkgd; /* background, normally blank */
- bool _clear; /* causes clear at next refresh */
- bool _leaveit; /* leaves cursor where it is */
- bool _scroll; /* allows window scrolling */
- bool _nodelay; /* input character wait flag */
- bool _immed; /* immediate update flag */
- bool _sync; /* synchronise window ancestors */
- bool _use_keypad; /* flags keypad key mode active */
- chtype **_y; /* pointer to line pointer array */
- int *_firstch; /* first changed character in line */
- int *_lastch; /* last changed character in line */
- int _tmarg; /* top of scrolling region */
- int _bmarg; /* bottom of scrolling region */
- int _delayms; /* milliseconds of delay for getch() */
- int _parx, _pary; /* coords relative to parent (0,0) */
- struct _win *_parent; /* subwin's pointer to parent win */
-} WINDOW;
-
-/* Avoid using the SCREEN struct directly -- use the corresponding
- functions if possible. This struct may eventually be made private. */
-
-typedef struct
-{
- bool alive; /* if initscr() called, and not endwin() */
- bool autocr; /* if cr -> lf */
- bool cbreak; /* if terminal unbuffered */
- bool echo; /* if terminal echo */
- bool raw_inp; /* raw input mode (v. cooked input) */
- bool raw_out; /* raw output mode (7 v. 8 bits) */
- bool audible; /* FALSE if the bell is visual */
- bool mono; /* TRUE if current screen is mono */
- bool resized; /* TRUE if TERM has been resized */
- bool orig_attr; /* TRUE if we have the original colors */
- short orig_fore; /* original screen foreground color */
- short orig_back; /* original screen foreground color */
- int cursrow; /* position of physical cursor */
- int curscol; /* position of physical cursor */
- int visibility; /* visibility of cursor */
- int orig_cursor; /* original cursor size */
- int lines; /* new value for LINES */
- int cols; /* new value for COLS */
- unsigned long _trap_mbe; /* trap these mouse button events */
- unsigned long _map_mbe_to_key; /* map mouse buttons to slk */
- int mouse_wait; /* time to wait (in ms) for a
- button release after a press, in
- order to count it as a click */
- int slklines; /* lines in use by slk_init() */
- WINDOW *slk_winptr; /* window for slk */
- int linesrippedoff; /* lines ripped off via ripoffline() */
- int linesrippedoffontop; /* lines ripped off on
- top via ripoffline() */
- int delaytenths; /* 1/10ths second to wait block
- getch() for */
- bool _preserve; /* TRUE if screen background
- to be preserved */
- int _restore; /* specifies if screen background
- to be restored, and how */
- bool save_key_modifiers; /* TRUE if each key modifiers saved
- with each key press */
- bool return_key_modifiers; /* TRUE if modifier keys are
- returned as "real" keys */
- bool key_code; /* TRUE if last key is a special key;
- used internally by get_wch() */
-#ifdef XCURSES
- int XcurscrSize; /* size of Xcurscr shared memory block */
- bool sb_on;
- int sb_viewport_y;
- int sb_viewport_x;
- int sb_total_y;
- int sb_total_x;
- int sb_cur_y;
- int sb_cur_x;
-#endif
- short line_color; /* color of line attributes - default -1 */
-} SCREEN;
-
-/*----------------------------------------------------------------------
- *
- * PDCurses External Variables
- *
- */
-
-#ifdef PDC_DLL_BUILD
-# ifdef CURSES_LIBRARY
-# define PDCEX __declspec(dllexport) extern
-# else
-# define PDCEX __declspec(dllimport)
-# endif
-#else
-# define PDCEX extern
-#endif
-
-PDCEX int LINES; /* terminal height */
-PDCEX int COLS; /* terminal width */
-PDCEX WINDOW *stdscr; /* the default screen window */
-PDCEX WINDOW *curscr; /* the current screen image */
-PDCEX SCREEN *SP; /* curses variables */
-PDCEX MOUSE_STATUS Mouse_status;
-PDCEX int COLORS;
-PDCEX int COLOR_PAIRS;
-PDCEX int TABSIZE;
-PDCEX chtype acs_map[]; /* alternate character set map */
-PDCEX char ttytype[]; /* terminal name/description */
-
-/*man-start**************************************************************
-
-PDCurses Text Attributes
-========================
-
-Originally, PDCurses used a short (16 bits) for its chtype. To include
-color, a number of things had to be sacrificed from the strict Unix and
-System V support. The main problem was fitting all character attributes
-and color into an unsigned char (all 8 bits!).
-
-Today, PDCurses by default uses a long (32 bits) for its chtype, as in
-System V. The short chtype is still available, by undefining CHTYPE_LONG
-and rebuilding the library.
-
-The following is the structure of a win->_attrs chtype:
-
-short form:
-
--------------------------------------------------
-|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
--------------------------------------------------
- color number | attrs | character eg 'a'
-
-The available non-color attributes are bold, reverse and blink. Others
-have no effect. The high order char is an index into an array of
-physical colors (defined in color.c) -- 32 foreground/background color
-pairs (5 bits) plus 3 bits for other attributes.
-
-long form:
-
-----------------------------------------------------------------------------
-|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|..| 3| 2| 1| 0|
-----------------------------------------------------------------------------
- color number | modifiers | character eg 'a'
-
-The available non-color attributes are bold, underline, invisible,
-right-line, left-line, protect, reverse and blink. 256 color pairs (8
-bits), 8 bits for other attributes, and 16 bits for character data.
-
-**man-end****************************************************************/
-
-/*** Video attribute macros ***/
-
-#define A_NORMAL (chtype)0
-
-#ifdef CHTYPE_LONG
-# define A_ALTCHARSET (chtype)0x00010000
-# define A_RIGHTLINE (chtype)0x00020000
-# define A_LEFTLINE (chtype)0x00040000
-# define A_INVIS (chtype)0x00080000
-# define A_UNDERLINE (chtype)0x00100000
-# define A_REVERSE (chtype)0x00200000
-# define A_BLINK (chtype)0x00400000
-# define A_BOLD (chtype)0x00800000
-
-# define A_ATTRIBUTES (chtype)0xffff0000
-# define A_CHARTEXT (chtype)0x0000ffff
-# define A_COLOR (chtype)0xff000000
-
-# define A_ITALIC A_INVIS
-# define A_PROTECT (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE)
-
-# define PDC_ATTR_SHIFT 19
-# define PDC_COLOR_SHIFT 24
-#else
-# define A_BOLD (chtype)0x0100 /* X/Open */
-# define A_REVERSE (chtype)0x0200 /* X/Open */
-# define A_BLINK (chtype)0x0400 /* X/Open */
-
-# define A_ATTRIBUTES (chtype)0xff00 /* X/Open */
-# define A_CHARTEXT (chtype)0x00ff /* X/Open */
-# define A_COLOR (chtype)0xf800 /* System V */
-
-# define A_ALTCHARSET A_NORMAL /* X/Open */
-# define A_PROTECT A_NORMAL /* X/Open */
-# define A_UNDERLINE A_NORMAL /* X/Open */
-
-# define A_LEFTLINE A_NORMAL
-# define A_RIGHTLINE A_NORMAL
-# define A_ITALIC A_NORMAL
-# define A_INVIS A_NORMAL
-
-# define PDC_ATTR_SHIFT 8
-# define PDC_COLOR_SHIFT 11
-#endif
-
-#define A_STANDOUT (A_REVERSE | A_BOLD) /* X/Open */
-#define A_DIM A_NORMAL
-
-#define CHR_MSK A_CHARTEXT /* Obsolete */
-#define ATR_MSK A_ATTRIBUTES /* Obsolete */
-#define ATR_NRM A_NORMAL /* Obsolete */
-
-/* For use with attr_t -- X/Open says, "these shall be distinct", so
- this is a non-conforming implementation. */
-
-#define WA_ALTCHARSET A_ALTCHARSET
-#define WA_BLINK A_BLINK
-#define WA_BOLD A_BOLD
-#define WA_DIM A_DIM
-#define WA_INVIS A_INVIS
-#define WA_LEFT A_LEFTLINE
-#define WA_PROTECT A_PROTECT
-#define WA_REVERSE A_REVERSE
-#define WA_RIGHT A_RIGHTLINE
-#define WA_STANDOUT A_STANDOUT
-#define WA_UNDERLINE A_UNDERLINE
-
-#define WA_HORIZONTAL A_NORMAL
-#define WA_LOW A_NORMAL
-#define WA_TOP A_NORMAL
-#define WA_VERTICAL A_NORMAL
-
-/*** Alternate character set macros ***/
-
-/* 'w' = 32-bit chtype; acs_map[] index | A_ALTCHARSET
- 'n' = 16-bit chtype; it gets the fallback set because no bit is
- available for A_ALTCHARSET */
-
-#ifdef CHTYPE_LONG
-# define ACS_PICK(w, n) ((chtype)w | A_ALTCHARSET)
-#else
-# define ACS_PICK(w, n) ((chtype)n)
-#endif
-
-/* VT100-compatible symbols -- box chars */
-
-#define ACS_ULCORNER ACS_PICK('l', '+')
-#define ACS_LLCORNER ACS_PICK('m', '+')
-#define ACS_URCORNER ACS_PICK('k', '+')
-#define ACS_LRCORNER ACS_PICK('j', '+')
-#define ACS_RTEE ACS_PICK('u', '+')
-#define ACS_LTEE ACS_PICK('t', '+')
-#define ACS_BTEE ACS_PICK('v', '+')
-#define ACS_TTEE ACS_PICK('w', '+')
-#define ACS_HLINE ACS_PICK('q', '-')
-#define ACS_VLINE ACS_PICK('x', '|')
-#define ACS_PLUS ACS_PICK('n', '+')
-
-/* VT100-compatible symbols -- other */
-
-#define ACS_S1 ACS_PICK('o', '-')
-#define ACS_S9 ACS_PICK('s', '_')
-#define ACS_DIAMOND ACS_PICK('`', '+')
-#define ACS_CKBOARD ACS_PICK('a', ':')
-#define ACS_DEGREE ACS_PICK('f', '\'')
-#define ACS_PLMINUS ACS_PICK('g', '#')
-#define ACS_BULLET ACS_PICK('~', 'o')
-
-/* Teletype 5410v1 symbols -- these are defined in SysV curses, but
- are not well-supported by most terminals. Stick to VT100 characters
- for optimum portability. */
-
-#define ACS_LARROW ACS_PICK(',', '<')
-#define ACS_RARROW ACS_PICK('+', '>')
-#define ACS_DARROW ACS_PICK('.', 'v')
-#define ACS_UARROW ACS_PICK('-', '^')
-#define ACS_BOARD ACS_PICK('h', '#')
-#define ACS_LANTERN ACS_PICK('i', '*')
-#define ACS_BLOCK ACS_PICK('0', '#')
-
-/* That goes double for these -- undocumented SysV symbols. Don't use
- them. */
-
-#define ACS_S3 ACS_PICK('p', '-')
-#define ACS_S7 ACS_PICK('r', '-')
-#define ACS_LEQUAL ACS_PICK('y', '<')
-#define ACS_GEQUAL ACS_PICK('z', '>')
-#define ACS_PI ACS_PICK('{', 'n')
-#define ACS_NEQUAL ACS_PICK('|', '+')
-#define ACS_STERLING ACS_PICK('}', 'L')
-
-/* Box char aliases */
-
-#define ACS_BSSB ACS_ULCORNER
-#define ACS_SSBB ACS_LLCORNER
-#define ACS_BBSS ACS_URCORNER
-#define ACS_SBBS ACS_LRCORNER
-#define ACS_SBSS ACS_RTEE
-#define ACS_SSSB ACS_LTEE
-#define ACS_SSBS ACS_BTEE
-#define ACS_BSSS ACS_TTEE
-#define ACS_BSBS ACS_HLINE
-#define ACS_SBSB ACS_VLINE
-#define ACS_SSSS ACS_PLUS
-
-/* cchar_t aliases */
-
-#ifdef PDC_WIDE
-# define WACS_ULCORNER (&(acs_map['l']))
-# define WACS_LLCORNER (&(acs_map['m']))
-# define WACS_URCORNER (&(acs_map['k']))
-# define WACS_LRCORNER (&(acs_map['j']))
-# define WACS_RTEE (&(acs_map['u']))
-# define WACS_LTEE (&(acs_map['t']))
-# define WACS_BTEE (&(acs_map['v']))
-# define WACS_TTEE (&(acs_map['w']))
-# define WACS_HLINE (&(acs_map['q']))
-# define WACS_VLINE (&(acs_map['x']))
-# define WACS_PLUS (&(acs_map['n']))
-
-# define WACS_S1 (&(acs_map['o']))
-# define WACS_S9 (&(acs_map['s']))
-# define WACS_DIAMOND (&(acs_map['`']))
-# define WACS_CKBOARD (&(acs_map['a']))
-# define WACS_DEGREE (&(acs_map['f']))
-# define WACS_PLMINUS (&(acs_map['g']))
-# define WACS_BULLET (&(acs_map['~']))
-
-# define WACS_LARROW (&(acs_map[',']))
-# define WACS_RARROW (&(acs_map['+']))
-# define WACS_DARROW (&(acs_map['.']))
-# define WACS_UARROW (&(acs_map['-']))
-# define WACS_BOARD (&(acs_map['h']))
-# define WACS_LANTERN (&(acs_map['i']))
-# define WACS_BLOCK (&(acs_map['0']))
-
-# define WACS_S3 (&(acs_map['p']))
-# define WACS_S7 (&(acs_map['r']))
-# define WACS_LEQUAL (&(acs_map['y']))
-# define WACS_GEQUAL (&(acs_map['z']))
-# define WACS_PI (&(acs_map['{']))
-# define WACS_NEQUAL (&(acs_map['|']))
-# define WACS_STERLING (&(acs_map['}']))
-
-# define WACS_BSSB WACS_ULCORNER
-# define WACS_SSBB WACS_LLCORNER
-# define WACS_BBSS WACS_URCORNER
-# define WACS_SBBS WACS_LRCORNER
-# define WACS_SBSS WACS_RTEE
-# define WACS_SSSB WACS_LTEE
-# define WACS_SSBS WACS_BTEE
-# define WACS_BSSS WACS_TTEE
-# define WACS_BSBS WACS_HLINE
-# define WACS_SBSB WACS_VLINE
-# define WACS_SSSS WACS_PLUS
-#endif
-
-/*** Color macros ***/
-
-#define COLOR_BLACK 0
-
-#ifdef PDC_RGB /* RGB */
-# define COLOR_RED 1
-# define COLOR_GREEN 2
-# define COLOR_BLUE 4
-#else /* BGR */
-# define COLOR_BLUE 1
-# define COLOR_GREEN 2
-# define COLOR_RED 4
-#endif
-
-#define COLOR_CYAN (COLOR_BLUE | COLOR_GREEN)
-#define COLOR_MAGENTA (COLOR_RED | COLOR_BLUE)
-#define COLOR_YELLOW (COLOR_RED | COLOR_GREEN)
-
-#define COLOR_WHITE 7
-
-/*----------------------------------------------------------------------
- *
- * Function and Keypad Key Definitions.
- * Many are just for compatibility.
- *
- */
-
-#define KEY_CODE_YES 0x100 /* If get_wch() gives a key code */
-
-#define KEY_BREAK 0x101 /* Not on PC KBD */
-#define KEY_DOWN 0x102 /* Down arrow key */
-#define KEY_UP 0x103 /* Up arrow key */
-#define KEY_LEFT 0x104 /* Left arrow key */
-#define KEY_RIGHT 0x105 /* Right arrow key */
-#define KEY_HOME 0x106 /* home key */
-#define KEY_BACKSPACE 0x107 /* not on pc */
-#define KEY_F0 0x108 /* function keys; 64 reserved */
-
-#define KEY_DL 0x148 /* delete line */
-#define KEY_IL 0x149 /* insert line */
-#define KEY_DC 0x14a /* delete character */
-#define KEY_IC 0x14b /* insert char or enter ins mode */
-#define KEY_EIC 0x14c /* exit insert char mode */
-#define KEY_CLEAR 0x14d /* clear screen */
-#define KEY_EOS 0x14e /* clear to end of screen */
-#define KEY_EOL 0x14f /* clear to end of line */
-#define KEY_SF 0x150 /* scroll 1 line forward */
-#define KEY_SR 0x151 /* scroll 1 line back (reverse) */
-#define KEY_NPAGE 0x152 /* next page */
-#define KEY_PPAGE 0x153 /* previous page */
-#define KEY_STAB 0x154 /* set tab */
-#define KEY_CTAB 0x155 /* clear tab */
-#define KEY_CATAB 0x156 /* clear all tabs */
-#define KEY_ENTER 0x157 /* enter or send (unreliable) */
-#define KEY_SRESET 0x158 /* soft/reset (partial/unreliable) */
-#define KEY_RESET 0x159 /* reset/hard reset (unreliable) */
-#define KEY_PRINT 0x15a /* print/copy */
-#define KEY_LL 0x15b /* home down/bottom (lower left) */
-#define KEY_ABORT 0x15c /* abort/terminate key (any) */
-#define KEY_SHELP 0x15d /* short help */
-#define KEY_LHELP 0x15e /* long help */
-#define KEY_BTAB 0x15f /* Back tab key */
-#define KEY_BEG 0x160 /* beg(inning) key */
-#define KEY_CANCEL 0x161 /* cancel key */
-#define KEY_CLOSE 0x162 /* close key */
-#define KEY_COMMAND 0x163 /* cmd (command) key */
-#define KEY_COPY 0x164 /* copy key */
-#define KEY_CREATE 0x165 /* create key */
-#define KEY_END 0x166 /* end key */
-#define KEY_EXIT 0x167 /* exit key */
-#define KEY_FIND 0x168 /* find key */
-#define KEY_HELP 0x169 /* help key */
-#define KEY_MARK 0x16a /* mark key */
-#define KEY_MESSAGE 0x16b /* message key */
-#define KEY_MOVE 0x16c /* move key */
-#define KEY_NEXT 0x16d /* next object key */
-#define KEY_OPEN 0x16e /* open key */
-#define KEY_OPTIONS 0x16f /* options key */
-#define KEY_PREVIOUS 0x170 /* previous object key */
-#define KEY_REDO 0x171 /* redo key */
-#define KEY_REFERENCE 0x172 /* ref(erence) key */
-#define KEY_REFRESH 0x173 /* refresh key */
-#define KEY_REPLACE 0x174 /* replace key */
-#define KEY_RESTART 0x175 /* restart key */
-#define KEY_RESUME 0x176 /* resume key */
-#define KEY_SAVE 0x177 /* save key */
-#define KEY_SBEG 0x178 /* shifted beginning key */
-#define KEY_SCANCEL 0x179 /* shifted cancel key */
-#define KEY_SCOMMAND 0x17a /* shifted command key */
-#define KEY_SCOPY 0x17b /* shifted copy key */
-#define KEY_SCREATE 0x17c /* shifted create key */
-#define KEY_SDC 0x17d /* shifted delete char key */
-#define KEY_SDL 0x17e /* shifted delete line key */
-#define KEY_SELECT 0x17f /* select key */
-#define KEY_SEND 0x180 /* shifted end key */
-#define KEY_SEOL 0x181 /* shifted clear line key */
-#define KEY_SEXIT 0x182 /* shifted exit key */
-#define KEY_SFIND 0x183 /* shifted find key */
-#define KEY_SHOME 0x184 /* shifted home key */
-#define KEY_SIC 0x185 /* shifted input key */
-
-#define KEY_SLEFT 0x187 /* shifted left arrow key */
-#define KEY_SMESSAGE 0x188 /* shifted message key */
-#define KEY_SMOVE 0x189 /* shifted move key */
-#define KEY_SNEXT 0x18a /* shifted next key */
-#define KEY_SOPTIONS 0x18b /* shifted options key */
-#define KEY_SPREVIOUS 0x18c /* shifted prev key */
-#define KEY_SPRINT 0x18d /* shifted print key */
-#define KEY_SREDO 0x18e /* shifted redo key */
-#define KEY_SREPLACE 0x18f /* shifted replace key */
-#define KEY_SRIGHT 0x190 /* shifted right arrow */
-#define KEY_SRSUME 0x191 /* shifted resume key */
-#define KEY_SSAVE 0x192 /* shifted save key */
-#define KEY_SSUSPEND 0x193 /* shifted suspend key */
-#define KEY_SUNDO 0x194 /* shifted undo key */
-#define KEY_SUSPEND 0x195 /* suspend key */
-#define KEY_UNDO 0x196 /* undo key */
-
-/* PDCurses-specific key definitions -- PC only */
-
-#define ALT_0 0x197
-#define ALT_1 0x198
-#define ALT_2 0x199
-#define ALT_3 0x19a
-#define ALT_4 0x19b
-#define ALT_5 0x19c
-#define ALT_6 0x19d
-#define ALT_7 0x19e
-#define ALT_8 0x19f
-#define ALT_9 0x1a0
-#define ALT_A 0x1a1
-#define ALT_B 0x1a2
-#define ALT_C 0x1a3
-#define ALT_D 0x1a4
-#define ALT_E 0x1a5
-#define ALT_F 0x1a6
-#define ALT_G 0x1a7
-#define ALT_H 0x1a8
-#define ALT_I 0x1a9
-#define ALT_J 0x1aa
-#define ALT_K 0x1ab
-#define ALT_L 0x1ac
-#define ALT_M 0x1ad
-#define ALT_N 0x1ae
-#define ALT_O 0x1af
-#define ALT_P 0x1b0
-#define ALT_Q 0x1b1
-#define ALT_R 0x1b2
-#define ALT_S 0x1b3
-#define ALT_T 0x1b4
-#define ALT_U 0x1b5
-#define ALT_V 0x1b6
-#define ALT_W 0x1b7
-#define ALT_X 0x1b8
-#define ALT_Y 0x1b9
-#define ALT_Z 0x1ba
-
-#define CTL_LEFT 0x1bb /* Control-Left-Arrow */
-#define CTL_RIGHT 0x1bc
-#define CTL_PGUP 0x1bd
-#define CTL_PGDN 0x1be
-#define CTL_HOME 0x1bf
-#define CTL_END 0x1c0
-
-#define KEY_A1 0x1c1 /* upper left on Virtual keypad */
-#define KEY_A2 0x1c2 /* upper middle on Virt. keypad */
-#define KEY_A3 0x1c3 /* upper right on Vir. keypad */
-#define KEY_B1 0x1c4 /* middle left on Virt. keypad */
-#define KEY_B2 0x1c5 /* center on Virt. keypad */
-#define KEY_B3 0x1c6 /* middle right on Vir. keypad */
-#define KEY_C1 0x1c7 /* lower left on Virt. keypad */
-#define KEY_C2 0x1c8 /* lower middle on Virt. keypad */
-#define KEY_C3 0x1c9 /* lower right on Vir. keypad */
-
-#define PADSLASH 0x1ca /* slash on keypad */
-#define PADENTER 0x1cb /* enter on keypad */
-#define CTL_PADENTER 0x1cc /* ctl-enter on keypad */
-#define ALT_PADENTER 0x1cd /* alt-enter on keypad */
-#define PADSTOP 0x1ce /* stop on keypad */
-#define PADSTAR 0x1cf /* star on keypad */
-#define PADMINUS 0x1d0 /* minus on keypad */
-#define PADPLUS 0x1d1 /* plus on keypad */
-#define CTL_PADSTOP 0x1d2 /* ctl-stop on keypad */
-#define CTL_PADCENTER 0x1d3 /* ctl-enter on keypad */
-#define CTL_PADPLUS 0x1d4 /* ctl-plus on keypad */
-#define CTL_PADMINUS 0x1d5 /* ctl-minus on keypad */
-#define CTL_PADSLASH 0x1d6 /* ctl-slash on keypad */
-#define CTL_PADSTAR 0x1d7 /* ctl-star on keypad */
-#define ALT_PADPLUS 0x1d8 /* alt-plus on keypad */
-#define ALT_PADMINUS 0x1d9 /* alt-minus on keypad */
-#define ALT_PADSLASH 0x1da /* alt-slash on keypad */
-#define ALT_PADSTAR 0x1db /* alt-star on keypad */
-#define ALT_PADSTOP 0x1dc /* alt-stop on keypad */
-#define CTL_INS 0x1dd /* ctl-insert */
-#define ALT_DEL 0x1de /* alt-delete */
-#define ALT_INS 0x1df /* alt-insert */
-#define CTL_UP 0x1e0 /* ctl-up arrow */
-#define CTL_DOWN 0x1e1 /* ctl-down arrow */
-#define CTL_TAB 0x1e2 /* ctl-tab */
-#define ALT_TAB 0x1e3
-#define ALT_MINUS 0x1e4
-#define ALT_EQUAL 0x1e5
-#define ALT_HOME 0x1e6
-#define ALT_PGUP 0x1e7
-#define ALT_PGDN 0x1e8
-#define ALT_END 0x1e9
-#define ALT_UP 0x1ea /* alt-up arrow */
-#define ALT_DOWN 0x1eb /* alt-down arrow */
-#define ALT_RIGHT 0x1ec /* alt-right arrow */
-#define ALT_LEFT 0x1ed /* alt-left arrow */
-#define ALT_ENTER 0x1ee /* alt-enter */
-#define ALT_ESC 0x1ef /* alt-escape */
-#define ALT_BQUOTE 0x1f0 /* alt-back quote */
-#define ALT_LBRACKET 0x1f1 /* alt-left bracket */
-#define ALT_RBRACKET 0x1f2 /* alt-right bracket */
-#define ALT_SEMICOLON 0x1f3 /* alt-semi-colon */
-#define ALT_FQUOTE 0x1f4 /* alt-forward quote */
-#define ALT_COMMA 0x1f5 /* alt-comma */
-#define ALT_STOP 0x1f6 /* alt-stop */
-#define ALT_FSLASH 0x1f7 /* alt-forward slash */
-#define ALT_BKSP 0x1f8 /* alt-backspace */
-#define CTL_BKSP 0x1f9 /* ctl-backspace */
-#define PAD0 0x1fa /* keypad 0 */
-
-#define CTL_PAD0 0x1fb /* ctl-keypad 0 */
-#define CTL_PAD1 0x1fc
-#define CTL_PAD2 0x1fd
-#define CTL_PAD3 0x1fe
-#define CTL_PAD4 0x1ff
-#define CTL_PAD5 0x200
-#define CTL_PAD6 0x201
-#define CTL_PAD7 0x202
-#define CTL_PAD8 0x203
-#define CTL_PAD9 0x204
-
-#define ALT_PAD0 0x205 /* alt-keypad 0 */
-#define ALT_PAD1 0x206
-#define ALT_PAD2 0x207
-#define ALT_PAD3 0x208
-#define ALT_PAD4 0x209
-#define ALT_PAD5 0x20a
-#define ALT_PAD6 0x20b
-#define ALT_PAD7 0x20c
-#define ALT_PAD8 0x20d
-#define ALT_PAD9 0x20e
-
-#define CTL_DEL 0x20f /* clt-delete */
-#define ALT_BSLASH 0x210 /* alt-back slash */
-#define CTL_ENTER 0x211 /* ctl-enter */
-
-#define SHF_PADENTER 0x212 /* shift-enter on keypad */
-#define SHF_PADSLASH 0x213 /* shift-slash on keypad */
-#define SHF_PADSTAR 0x214 /* shift-star on keypad */
-#define SHF_PADPLUS 0x215 /* shift-plus on keypad */
-#define SHF_PADMINUS 0x216 /* shift-minus on keypad */
-#define SHF_UP 0x217 /* shift-up on keypad */
-#define SHF_DOWN 0x218 /* shift-down on keypad */
-#define SHF_IC 0x219 /* shift-insert on keypad */
-#define SHF_DC 0x21a /* shift-delete on keypad */
-
-#define KEY_MOUSE 0x21b /* "mouse" key */
-#define KEY_SHIFT_L 0x21c /* Left-shift */
-#define KEY_SHIFT_R 0x21d /* Right-shift */
-#define KEY_CONTROL_L 0x21e /* Left-control */
-#define KEY_CONTROL_R 0x21f /* Right-control */
-#define KEY_ALT_L 0x220 /* Left-alt */
-#define KEY_ALT_R 0x221 /* Right-alt */
-#define KEY_RESIZE 0x222 /* Window resize */
-#define KEY_SUP 0x223 /* Shifted up arrow */
-#define KEY_SDOWN 0x224 /* Shifted down arrow */
-
-#define KEY_MIN KEY_BREAK /* Minimum curses key value */
-#define KEY_MAX KEY_SDOWN /* Maximum curses key */
-
-#define KEY_F(n) (KEY_F0 + (n))
-
-/*----------------------------------------------------------------------
- *
- * PDCurses Function Declarations
- *
- */
-
-/* Standard */
-
-int addch(const chtype);
-int addchnstr(const chtype *, int);
-int addchstr(const chtype *);
-int addnstr(const char *, int);
-int addstr(const char *);
-int attroff(chtype);
-int attron(chtype);
-int attrset(chtype);
-int attr_get(attr_t *, short *, void *);
-int attr_off(attr_t, void *);
-int attr_on(attr_t, void *);
-int attr_set(attr_t, short, void *);
-int baudrate(void);
-int beep(void);
-int bkgd(chtype);
-void bkgdset(chtype);
-int border(chtype, chtype, chtype, chtype, chtype, chtype, chtype, chtype);
-int box(WINDOW *, chtype, chtype);
-bool can_change_color(void);
-int cbreak(void);
-int chgat(int, attr_t, short, const void *);
-int clearok(WINDOW *, bool);
-int clear(void);
-int clrtobot(void);
-int clrtoeol(void);
-int color_content(short, short *, short *, short *);
-int color_set(short, void *);
-int copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, int);
-int curs_set(int);
-int def_prog_mode(void);
-int def_shell_mode(void);
-int delay_output(int);
-int delch(void);
-int deleteln(void);
-void delscreen(SCREEN *);
-int delwin(WINDOW *);
-WINDOW *derwin(WINDOW *, int, int, int, int);
-int doupdate(void);
-WINDOW *dupwin(WINDOW *);
-int echochar(const chtype);
-int echo(void);
-int endwin(void);
-char erasechar(void);
-int erase(void);
-void filter(void);
-int flash(void);
-int flushinp(void);
-chtype getbkgd(WINDOW *);
-int getnstr(char *, int);
-int getstr(char *);
-WINDOW *getwin(FILE *);
-int halfdelay(int);
-bool has_colors(void);
-bool has_ic(void);
-bool has_il(void);
-int hline(chtype, int);
-void idcok(WINDOW *, bool);
-int idlok(WINDOW *, bool);
-void immedok(WINDOW *, bool);
-int inchnstr(chtype *, int);
-int inchstr(chtype *);
-chtype inch(void);
-int init_color(short, short, short, short);
-int init_pair(short, short, short);
-WINDOW *initscr(void);
-int innstr(char *, int);
-int insch(chtype);
-int insdelln(int);
-int insertln(void);
-int insnstr(const char *, int);
-int insstr(const char *);
-int instr(char *);
-int intrflush(WINDOW *, bool);
-bool isendwin(void);
-bool is_linetouched(WINDOW *, int);
-bool is_wintouched(WINDOW *);
-const char *keyname(int);
-int keypad(WINDOW *, bool);
-char killchar(void);
-int leaveok(WINDOW *, bool);
-char *longname(void);
-int meta(WINDOW *, bool);
-int move(int, int);
-int mvaddch(int, int, const chtype);
-int mvaddchnstr(int, int, const chtype *, int);
-int mvaddchstr(int, int, const chtype *);
-int mvaddnstr(int, int, const char *, int);
-int mvaddstr(int, int, const char *);
-int mvchgat(int, int, int, attr_t, short, const void *);
-int mvcur(int, int, int, int);
-int mvdelch(int, int);
-int mvderwin(WINDOW *, int, int);
-int mvgetch(int, int);
-int mvgetnstr(int, int, char *, int);
-int mvgetstr(int, int, char *);
-int mvhline(int, int, chtype, int);
-chtype mvinch(int, int);
-int mvinchnstr(int, int, chtype *, int);
-int mvinchstr(int, int, chtype *);
-int mvinnstr(int, int, char *, int);
-int mvinsch(int, int, chtype);
-int mvinsnstr(int, int, const char *, int);
-int mvinsstr(int, int, const char *);
-int mvinstr(int, int, char *);
-int mvprintw(int, int, const char *, ...);
-int mvscanw(int, int, const char *, ...);
-int mvvline(int, int, chtype, int);
-int mvwaddchnstr(WINDOW *, int, int, const chtype *, int);
-int mvwaddchstr(WINDOW *, int, int, const chtype *);
-int mvwaddch(WINDOW *, int, int, const chtype);
-int mvwaddnstr(WINDOW *, int, int, const char *, int);
-int mvwaddstr(WINDOW *, int, int, const char *);
-int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *);
-int mvwdelch(WINDOW *, int, int);
-int mvwgetch(WINDOW *, int, int);
-int mvwgetnstr(WINDOW *, int, int, char *, int);
-int mvwgetstr(WINDOW *, int, int, char *);
-int mvwhline(WINDOW *, int, int, chtype, int);
-int mvwinchnstr(WINDOW *, int, int, chtype *, int);
-int mvwinchstr(WINDOW *, int, int, chtype *);
-chtype mvwinch(WINDOW *, int, int);
-int mvwinnstr(WINDOW *, int, int, char *, int);
-int mvwinsch(WINDOW *, int, int, chtype);
-int mvwinsnstr(WINDOW *, int, int, const char *, int);
-int mvwinsstr(WINDOW *, int, int, const char *);
-int mvwinstr(WINDOW *, int, int, char *);
-int mvwin(WINDOW *, int, int);
-int mvwprintw(WINDOW *, int, int, const char *, ...);
-int mvwscanw(WINDOW *, int, int, const char *, ...);
-int mvwvline(WINDOW *, int, int, chtype, int);
-int napms(int);
-WINDOW *newpad(int, int);
-SCREEN *newterm(const char *, FILE *, FILE *);
-WINDOW *newwin(int, int, int, int);
-int nl(void);
-int nocbreak(void);
-int nodelay(WINDOW *, bool);
-int noecho(void);
-int nonl(void);
-void noqiflush(void);
-int noraw(void);
-int notimeout(WINDOW *, bool);
-int overlay(const WINDOW *, WINDOW *);
-int overwrite(const WINDOW *, WINDOW *);
-int pair_content(short, short *, short *);
-int pechochar(WINDOW *, chtype);
-int pnoutrefresh(WINDOW *, int, int, int, int, int, int);
-int prefresh(WINDOW *, int, int, int, int, int, int);
-int printw(const char *, ...);
-int putwin(WINDOW *, FILE *);
-void qiflush(void);
-int raw(void);
-int redrawwin(WINDOW *);
-int refresh(void);
-int reset_prog_mode(void);
-int reset_shell_mode(void);
-int resetty(void);
-int ripoffline(int, int (*)(WINDOW *, int));
-int savetty(void);
-int scanw(const char *, ...);
-int scr_dump(const char *);
-int scr_init(const char *);
-int scr_restore(const char *);
-int scr_set(const char *);
-int scrl(int);
-int scroll(WINDOW *);
-int scrollok(WINDOW *, bool);
-SCREEN *set_term(SCREEN *);
-int setscrreg(int, int);
-int slk_attroff(const chtype);
-int slk_attr_off(const attr_t, void *);
-int slk_attron(const chtype);
-int slk_attr_on(const attr_t, void *);
-int slk_attrset(const chtype);
-int slk_attr_set(const attr_t, short, void *);
-int slk_clear(void);
-int slk_color(short);
-int slk_init(int);
-char *slk_label(int);
-int slk_noutrefresh(void);
-int slk_refresh(void);
-int slk_restore(void);
-int slk_set(int, const char *, int);
-int slk_touch(void);
-int standend(void);
-int standout(void);
-int start_color(void);
-WINDOW *subpad(WINDOW *, int, int, int, int);
-WINDOW *subwin(WINDOW *, int, int, int, int);
-int syncok(WINDOW *, bool);
-chtype termattrs(void);
-attr_t term_attrs(void);
-const char *termname(void);
-void timeout(int);
-int touchline(WINDOW *, int, int);
-int touchwin(WINDOW *);
-int typeahead(int);
-int untouchwin(WINDOW *);
-void use_env(bool);
-int vidattr(chtype);
-int vid_attr(attr_t, short, void *);
-int vidputs(chtype, int (*)(int));
-int vid_puts(attr_t, short, void *, int (*)(int));
-int vline(chtype, int);
-int vw_printw(WINDOW *, const char *, va_list);
-int vwprintw(WINDOW *, const char *, va_list);
-int vw_scanw(WINDOW *, const char *, va_list);
-int vwscanw(WINDOW *, const char *, va_list);
-int waddchnstr(WINDOW *, const chtype *, int);
-int waddchstr(WINDOW *, const chtype *);
-int waddch(WINDOW *, const chtype);
-int waddnstr(WINDOW *, const char *, int);
-int waddstr(WINDOW *, const char *);
-int wattroff(WINDOW *, chtype);
-int wattron(WINDOW *, chtype);
-int wattrset(WINDOW *, chtype);
-int wattr_get(WINDOW *, attr_t *, short *, void *);
-int wattr_off(WINDOW *, attr_t, void *);
-int wattr_on(WINDOW *, attr_t, void *);
-int wattr_set(WINDOW *, attr_t, short, void *);
-void wbkgdset(WINDOW *, chtype);
-int wbkgd(WINDOW *, chtype);
-int wborder(WINDOW *, chtype, chtype, chtype, chtype,
- chtype, chtype, chtype, chtype);
-int wchgat(WINDOW *, int, attr_t, short, const void *);
-int wclear(WINDOW *);
-int wclrtobot(WINDOW *);
-int wclrtoeol(WINDOW *);
-int wcolor_set(WINDOW *, short, void *);
-void wcursyncup(WINDOW *);
-int wdelch(WINDOW *);
-int wdeleteln(WINDOW *);
-int wechochar(WINDOW *, const chtype);
-int werase(WINDOW *);
-int wgetch(WINDOW *);
-int wgetnstr(WINDOW *, char *, int);
-int wgetstr(WINDOW *, char *);
-int whline(WINDOW *, chtype, int);
-int winchnstr(WINDOW *, chtype *, int);
-int winchstr(WINDOW *, chtype *);
-chtype winch(WINDOW *);
-int winnstr(WINDOW *, char *, int);
-int winsch(WINDOW *, chtype);
-int winsdelln(WINDOW *, int);
-int winsertln(WINDOW *);
-int winsnstr(WINDOW *, const char *, int);
-int winsstr(WINDOW *, const char *);
-int winstr(WINDOW *, char *);
-int wmove(WINDOW *, int, int);
-int wnoutrefresh(WINDOW *);
-int wprintw(WINDOW *, const char *, ...);
-int wredrawln(WINDOW *, int, int);
-int wrefresh(WINDOW *);
-int wscanw(WINDOW *, const char *, ...);
-int wscrl(WINDOW *, int);
-int wsetscrreg(WINDOW *, int, int);
-int wstandend(WINDOW *);
-int wstandout(WINDOW *);
-void wsyncdown(WINDOW *);
-void wsyncup(WINDOW *);
-void wtimeout(WINDOW *, int);
-int wtouchln(WINDOW *, int, int, int);
-int wvline(WINDOW *, chtype, int);
-
-/* Wide-character functions */
-
-#ifdef PDC_WIDE
-int addnwstr(const wchar_t *, int);
-int addwstr(const wchar_t *);
-int add_wch(const cchar_t *);
-int add_wchnstr(const cchar_t *, int);
-int add_wchstr(const cchar_t *);
-int border_set(const cchar_t *, const cchar_t *, const cchar_t *,
- const cchar_t *, const cchar_t *, const cchar_t *,
- const cchar_t *, const cchar_t *);
-int box_set(WINDOW *, const cchar_t *, const cchar_t *);
-int echo_wchar(const cchar_t *);
-int erasewchar(wchar_t *);
-int getbkgrnd(cchar_t *);
-int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *);
-int getn_wstr(wint_t *, int);
-int get_wch(wint_t *);
-int get_wstr(wint_t *);
-int hline_set(const cchar_t *, int);
-int innwstr(wchar_t *, int);
-int ins_nwstr(const wchar_t *, int);
-int ins_wch(const cchar_t *);
-int ins_wstr(const wchar_t *);
-int inwstr(wchar_t *);
-int in_wch(cchar_t *);
-int in_wchnstr(cchar_t *, int);
-int in_wchstr(cchar_t *);
-char *key_name(wchar_t);
-int killwchar(wchar_t *);
-int mvaddnwstr(int, int, const wchar_t *, int);
-int mvaddwstr(int, int, const wchar_t *);
-int mvadd_wch(int, int, const cchar_t *);
-int mvadd_wchnstr(int, int, const cchar_t *, int);
-int mvadd_wchstr(int, int, const cchar_t *);
-int mvgetn_wstr(int, int, wint_t *, int);
-int mvget_wch(int, int, wint_t *);
-int mvget_wstr(int, int, wint_t *);
-int mvhline_set(int, int, const cchar_t *, int);
-int mvinnwstr(int, int, wchar_t *, int);
-int mvins_nwstr(int, int, const wchar_t *, int);
-int mvins_wch(int, int, const cchar_t *);
-int mvins_wstr(int, int, const wchar_t *);
-int mvinwstr(int, int, wchar_t *);
-int mvin_wch(int, int, cchar_t *);
-int mvin_wchnstr(int, int, cchar_t *, int);
-int mvin_wchstr(int, int, cchar_t *);
-int mvvline_set(int, int, const cchar_t *, int);
-int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int);
-int mvwaddwstr(WINDOW *, int, int, const wchar_t *);
-int mvwadd_wch(WINDOW *, int, int, const cchar_t *);
-int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int);
-int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *);
-int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int);
-int mvwget_wch(WINDOW *, int, int, wint_t *);
-int mvwget_wstr(WINDOW *, int, int, wint_t *);
-int mvwhline_set(WINDOW *, int, int, const cchar_t *, int);
-int mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
-int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int);
-int mvwins_wch(WINDOW *, int, int, const cchar_t *);
-int mvwins_wstr(WINDOW *, int, int, const wchar_t *);
-int mvwin_wch(WINDOW *, int, int, cchar_t *);
-int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int);
-int mvwin_wchstr(WINDOW *, int, int, cchar_t *);
-int mvwinwstr(WINDOW *, int, int, wchar_t *);
-int mvwvline_set(WINDOW *, int, int, const cchar_t *, int);
-int pecho_wchar(WINDOW *, const cchar_t*);
-int setcchar(cchar_t*, const wchar_t*, const attr_t, short, const void*);
-int slk_wset(int, const wchar_t *, int);
-int unget_wch(const wchar_t);
-int vline_set(const cchar_t *, int);
-int waddnwstr(WINDOW *, const wchar_t *, int);
-int waddwstr(WINDOW *, const wchar_t *);
-int wadd_wch(WINDOW *, const cchar_t *);
-int wadd_wchnstr(WINDOW *, const cchar_t *, int);
-int wadd_wchstr(WINDOW *, const cchar_t *);
-int wbkgrnd(WINDOW *, const cchar_t *);
-void wbkgrndset(WINDOW *, const cchar_t *);
-int wborder_set(WINDOW *, const cchar_t *, const cchar_t *,
- const cchar_t *, const cchar_t *, const cchar_t *,
- const cchar_t *, const cchar_t *, const cchar_t *);
-int wecho_wchar(WINDOW *, const cchar_t *);
-int wgetbkgrnd(WINDOW *, cchar_t *);
-int wgetn_wstr(WINDOW *, wint_t *, int);
-int wget_wch(WINDOW *, wint_t *);
-int wget_wstr(WINDOW *, wint_t *);
-int whline_set(WINDOW *, const cchar_t *, int);
-int winnwstr(WINDOW *, wchar_t *, int);
-int wins_nwstr(WINDOW *, const wchar_t *, int);
-int wins_wch(WINDOW *, const cchar_t *);
-int wins_wstr(WINDOW *, const wchar_t *);
-int winwstr(WINDOW *, wchar_t *);
-int win_wch(WINDOW *, cchar_t *);
-int win_wchnstr(WINDOW *, cchar_t *, int);
-int win_wchstr(WINDOW *, cchar_t *);
-wchar_t *wunctrl(cchar_t *);
-int wvline_set(WINDOW *, const cchar_t *, int);
-#endif
-
-/* Quasi-standard */
-
-chtype getattrs(WINDOW *);
-int getbegx(WINDOW *);
-int getbegy(WINDOW *);
-int getmaxx(WINDOW *);
-int getmaxy(WINDOW *);
-int getparx(WINDOW *);
-int getpary(WINDOW *);
-int getcurx(WINDOW *);
-int getcury(WINDOW *);
-void traceoff(void);
-void traceon(void);
-char *unctrl(chtype);
-
-int crmode(void);
-int nocrmode(void);
-int draino(int);
-int resetterm(void);
-int fixterm(void);
-int saveterm(void);
-int setsyx(int, int);
-
-int mouse_set(unsigned long);
-int mouse_on(unsigned long);
-int mouse_off(unsigned long);
-int request_mouse_pos(void);
-int map_button(unsigned long);
-void wmouse_position(WINDOW *, int *, int *);
-unsigned long getmouse(void);
-unsigned long getbmap(void);
-
-/* ncurses */
-
-int assume_default_colors(int, int);
-const char *curses_version(void);
-bool has_key(int);
-int use_default_colors(void);
-int wresize(WINDOW *, int, int);
-
-int mouseinterval(int);
-mmask_t mousemask(mmask_t, mmask_t *);
-bool mouse_trafo(int *, int *, bool);
-int nc_getmouse(MEVENT *);
-int ungetmouse(MEVENT *);
-bool wenclose(const WINDOW *, int, int);
-bool wmouse_trafo(const WINDOW *, int *, int *, bool);
-
-/* PDCurses */
-
-int addrawch(chtype);
-int insrawch(chtype);
-bool is_termresized(void);
-int mvaddrawch(int, int, chtype);
-int mvdeleteln(int, int);
-int mvinsertln(int, int);
-int mvinsrawch(int, int, chtype);
-int mvwaddrawch(WINDOW *, int, int, chtype);
-int mvwdeleteln(WINDOW *, int, int);
-int mvwinsertln(WINDOW *, int, int);
-int mvwinsrawch(WINDOW *, int, int, chtype);
-int raw_output(bool);
-int resize_term(int, int);
-WINDOW *resize_window(WINDOW *, int, int);
-int waddrawch(WINDOW *, chtype);
-int winsrawch(WINDOW *, chtype);
-char wordchar(void);
-
-#ifdef PDC_WIDE
-wchar_t *slk_wlabel(int);
-#endif
-
-void PDC_debug(const char *, ...);
-int PDC_ungetch(int);
-int PDC_set_blink(bool);
-int PDC_set_line_color(short);
-void PDC_set_title(const char *);
-
-int PDC_clearclipboard(void);
-int PDC_freeclipboard(char *);
-int PDC_getclipboard(char **, long *);
-int PDC_setclipboard(const char *, long);
-
-unsigned long PDC_get_input_fd(void);
-unsigned long PDC_get_key_modifiers(void);
-int PDC_return_key_modifiers(bool);
-int PDC_save_key_modifiers(bool);
-
-#ifdef XCURSES
-WINDOW *Xinitscr(int, char **);
-void XCursesExit(void);
-int sb_init(void);
-int sb_set_horz(int, int, int);
-int sb_set_vert(int, int, int);
-int sb_get_horz(int *, int *, int *);
-int sb_get_vert(int *, int *, int *);
-int sb_refresh(void);
-#endif
-
-/*** Functions defined as macros ***/
-
-/* getch() and ungetch() conflict with some DOS libraries */
-
-#define getch() wgetch(stdscr)
-#define ungetch(ch) PDC_ungetch(ch)
-
-#define COLOR_PAIR(n) (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR)
-#define PAIR_NUMBER(n) (((n) & A_COLOR) >> PDC_COLOR_SHIFT)
-
-/* These will _only_ work as macros */
-
-#define getbegyx(w, y, x) (y = getbegy(w), x = getbegx(w))
-#define getmaxyx(w, y, x) (y = getmaxy(w), x = getmaxx(w))
-#define getparyx(w, y, x) (y = getpary(w), x = getparx(w))
-#define getyx(w, y, x) (y = getcury(w), x = getcurx(w))
-
-#define getsyx(y, x) { if (curscr->_leaveit) (y)=(x)=-1; \
- else getyx(curscr,(y),(x)); }
-
-#ifdef NCURSES_MOUSE_VERSION
-# define getmouse(x) nc_getmouse(x)
-#endif
-
-/* return codes from PDC_getclipboard() and PDC_setclipboard() calls */
-
-#define PDC_CLIP_SUCCESS 0
-#define PDC_CLIP_ACCESS_ERROR 1
-#define PDC_CLIP_EMPTY 2
-#define PDC_CLIP_MEMORY_ERROR 3
-
-/* PDCurses key modifier masks */
-
-#define PDC_KEY_MODIFIER_SHIFT 1
-#define PDC_KEY_MODIFIER_CONTROL 2
-#define PDC_KEY_MODIFIER_ALT 4
-#define PDC_KEY_MODIFIER_NUMLOCK 8
-
-#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
-# undef bool
-}
-#endif
-
-/* Local functions not defined in normal curses */
-
-void curses_enable_vga(int);
-void curses_enable_serial(int);
-
-int curses_vga_enabled(void);
-int curses_serial_enabled(void);
-
-#endif /* __PDCURSES__ */
diff --git a/payloads/libpayload/curses/PDCurses-3.4/curspriv.h b/payloads/libpayload/curses/PDCurses-3.4/curspriv.h
deleted file mode 100644
index 8b34f01..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/curspriv.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: curspriv.h,v 1.158 2008/07/13 16:08:16 wmcbrine Exp $ */
-
-/* Private definitions and declarations for use within PDCurses.
- These should generally not be referenced by applications. */
-
-#ifndef __CURSES_INTERNALS__
-#define __CURSES_INTERNALS__ 1
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define CURSES_LIBRARY
-#include <curses.h>
-
-#if defined(__TURBOC__) || defined(__EMX__) || defined(__DJGPP__) || \
- defined(__CYGWIN32__) || defined(__MINGW32__) || \
- defined(__WATCOMC__) || defined(__PACIFIC__)
-# ifndef HAVE_VSSCANF
-# define HAVE_VSSCANF /* have vsscanf() */
-# endif
-#endif
-
-#if defined(__CYGWIN32__) || defined(__MINGW32__) || \
- defined(__LCC__) || defined(__WATCOMC__)
-# ifndef HAVE_VSNPRINTF
-# define HAVE_VSNPRINTF /* have vsnprintf() */
-# endif
-#endif
-
-#if defined(_MSC_VER) && defined(_WIN32) && !defined(_CRT_SECURE_NO_DEPRECATE)
-# define _CRT_SECURE_NO_DEPRECATE 1 /* kill nonsense warnings */
-#endif
-
-/*----------------------------------------------------------------------*/
-
-typedef struct /* structure for ripped off lines */
-{
- int line;
- int (*init)(WINDOW *, int);
-} RIPPEDOFFLINE;
-
-/* Window properties */
-
-#define _SUBWIN 0x01 /* window is a subwindow */
-#define _PAD 0x10 /* X/Open Pad. */
-#define _SUBPAD 0x20 /* X/Open subpad. */
-
-/* Miscellaneous */
-
-#define _NO_CHANGE -1 /* flags line edge unchanged */
-
-#define _ECHAR 0x08 /* Erase char (^H) */
-#define _DWCHAR 0x17 /* Delete Word char (^W) */
-#define _DLCHAR 0x15 /* Delete Line char (^U) */
-
-extern WINDOW *pdc_lastscr;
-extern bool pdc_trace_on; /* tracing flag */
-extern bool pdc_color_started;
-extern unsigned long pdc_key_modifiers;
-extern MOUSE_STATUS pdc_mouse_status;
-
-/*----------------------------------------------------------------------*/
-
-/* Platform implementation functions */
-
-void PDC_beep(void);
-bool PDC_can_change_color(void);
-int PDC_color_content(short, short *, short *, short *);
-bool PDC_check_key(void);
-int PDC_curs_set(int);
-void PDC_flushinp(void);
-int PDC_get_columns(void);
-int PDC_get_cursor_mode(void);
-int PDC_get_key(void);
-int PDC_get_rows(void);
-void PDC_gotoyx(int, int);
-int PDC_init_color(short, short, short, short);
-void PDC_init_pair(short, short, short);
-int PDC_modifiers_set(void);
-int PDC_mouse_set(void);
-void PDC_napms(int);
-int PDC_pair_content(short, short *, short *);
-void PDC_reset_prog_mode(void);
-void PDC_reset_shell_mode(void);
-int PDC_resize_screen(int, int);
-void PDC_restore_screen_mode(int);
-void PDC_save_screen_mode(int);
-void PDC_scr_close(void);
-void PDC_scr_free(void);
-int PDC_scr_open(int, char **);
-void PDC_set_keyboard_binary(bool);
-void PDC_transform_line(int, int, int, const chtype *);
-const char *PDC_sysname(void);
-
-/* Internal cross-module functions */
-
-void PDC_init_atrtab(void);
-WINDOW *PDC_makelines(WINDOW *);
-WINDOW *PDC_makenew(int, int, int, int);
-int PDC_mouse_in_slk(int, int);
-void PDC_slk_free(void);
-void PDC_slk_initialize(void);
-void PDC_sync(WINDOW *);
-
-#ifdef PDC_WIDE
-int PDC_mbtowc(wchar_t *, const char *, size_t);
-size_t PDC_mbstowcs(wchar_t *, const char *, size_t);
-size_t PDC_wcstombs(char *, const wchar_t *, size_t);
-#endif
-
-#ifdef PDCDEBUG
-# define PDC_LOG(x) if (pdc_trace_on) PDC_debug x
-# define RCSID(x) static const char *rcsid = x;
-#else
-# define PDC_LOG(x)
-# define RCSID(x)
-#endif
-
-/* Internal macros for attributes */
-
-#ifdef CHTYPE_LONG
-# define PDC_COLOR_PAIRS 256
-#else
-# define PDC_COLOR_PAIRS 32
-#endif
-
-#ifndef max
-# define max(a,b) (((a) > (b)) ? (a) : (b))
-#endif
-#ifndef min
-# define min(a,b) (((a) < (b)) ? (a) : (b))
-#endif
-
-#define DIVROUND(num, divisor) ((num) + ((divisor) >> 1)) / (divisor)
-
-#define PDC_CLICK_PERIOD 150 /* time to wait for a click, if
- not set by mouseinterval() */
-
-#endif /* __CURSES_INTERNALS__*/
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/README b/payloads/libpayload/curses/PDCurses-3.4/demos/README
deleted file mode 100644
index 8f4b5c6..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/README
+++ /dev/null
@@ -1,25 +0,0 @@
-PDCurses Demos
-==============
-
-This directory contains demonstration programs to show and test the
-capabilities of curses libraries. Some of them predate PDCurses,
-PCcurses or even pcurses/ncurses. Although some PDCurses-specific code
-has been added, all programs remain portable to other implementations
-(at a minimum, to ncurses).
-
-
-Building
---------
-
-The demos are built by the platform-specific makefiles, in the platform
-directories. Alternatively, you can build them manually, individually,
-and link with any curses library; e.g., "cc -lcurses -orain rain.c".
-There are no dependencies besides curses and the standard C library, and
-no configuration is needed.
-
-
-Distribution Status
--------------------
-
-Public Domain, except for rain.c and worm.c, which are under the ncurses
-license (MIT-like).
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/firework.c b/payloads/libpayload/curses/PDCurses-3.4/demos/firework.c
deleted file mode 100644
index 61fd65d..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/firework.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* $Id: firework.c,v 1.25 2008/07/13 16:08:17 wmcbrine Exp $ */
-
-#include <stdio.h>
-#include <signal.h>
-#include <curses.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <time.h>
-
-#define DELAYSIZE 200
-
-void myrefresh(void);
-void get_color(void);
-void explode(int, int);
-
-short color_table[] =
-{
- COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN,
- COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE
-};
-
-int main(int argc, char **argv)
-{
- int i, start, end, row, diff, flag, direction, seed;
-
-#ifdef XCURSES
- Xinitscr(argc, argv);
-#else
- initscr();
-#endif
- nodelay(stdscr, TRUE);
- noecho();
-
- if (has_colors())
- start_color();
-
- for (i = 0; i < 8; i++)
- init_pair(i, color_table[i], COLOR_BLACK);
-
- seed = time((time_t *)0);
- srand(seed);
- flag = 0;
-
- while (getch() == ERR) /* loop until a key is hit */
- {
- do {
- start = rand() % (COLS - 3);
- end = rand() % (COLS - 3);
- start = (start < 2) ? 2 : start;
- end = (end < 2) ? 2 : end;
- direction = (start > end) ? -1 : 1;
- diff = abs(start - end);
-
- } while (diff < 2 || diff >= LINES - 2);
-
- attrset(A_NORMAL);
-
- for (row = 0; row < diff; row++)
- {
- mvaddstr(LINES - row, row * direction + start,
- (direction < 0) ? "\\" : "/");
-
- if (flag++)
- {
- myrefresh();
- erase();
- flag = 0;
- }
- }
-
- if (flag++)
- {
- myrefresh();
- flag = 0;
- }
-
- explode(LINES - row, diff * direction + start);
- erase();
- myrefresh();
- }
-
- endwin();
-
- return 0;
-}
-
-void explode(int row, int col)
-{
- erase();
- mvaddstr(row, col, "-");
- myrefresh();
-
- --col;
-
- get_color();
- mvaddstr(row - 1, col, " - ");
- mvaddstr(row, col, "-+-");
- mvaddstr(row + 1, col, " - ");
- myrefresh();
-
- --col;
-
- get_color();
- mvaddstr(row - 2, col, " --- ");
- mvaddstr(row - 1, col, "-+++-");
- mvaddstr(row, col, "-+#+-");
- mvaddstr(row + 1, col, "-+++-");
- mvaddstr(row + 2, col, " --- ");
- myrefresh();
-
- get_color();
- mvaddstr(row - 2, col, " +++ ");
- mvaddstr(row - 1, col, "++#++");
- mvaddstr(row, col, "+# #+");
- mvaddstr(row + 1, col, "++#++");
- mvaddstr(row + 2, col, " +++ ");
- myrefresh();
-
- get_color();
- mvaddstr(row - 2, col, " # ");
- mvaddstr(row - 1, col, "## ##");
- mvaddstr(row, col, "# #");
- mvaddstr(row + 1, col, "## ##");
- mvaddstr(row + 2, col, " # ");
- myrefresh();
-
- get_color();
- mvaddstr(row - 2, col, " # # ");
- mvaddstr(row - 1, col, "# #");
- mvaddstr(row, col, " ");
- mvaddstr(row + 1, col, "# #");
- mvaddstr(row + 2, col, " # # ");
- myrefresh();
-}
-
-void myrefresh(void)
-{
- napms(DELAYSIZE);
- move(LINES - 1, COLS - 1);
- refresh();
-}
-
-void get_color(void)
-{
- chtype bold = (rand() % 2) ? A_BOLD : A_NORMAL;
- attrset(COLOR_PAIR(rand() % 8) | bold);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/newdemo.c b/payloads/libpayload/curses/PDCurses-3.4/demos/newdemo.c
deleted file mode 100644
index eefc0c1..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/newdemo.c
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * newdemo.c - A demo program using PDCurses. The program
- * illustrates the use of colors for text output.
- *
- * Hacks by jbuhler at cs.washington.edu on 12/29/96
- *
- * $Id: newdemo.c,v 1.39 2008/07/13 16:08:17 wmcbrine Exp $
- */
-
-#include <stdio.h>
-#include <signal.h>
-#include <string.h>
-#include <curses.h>
-#include <stdlib.h>
-#include <time.h>
-
-int WaitForUser(void);
-int SubWinTest(WINDOW *);
-int BouncingBalls(WINDOW *);
-void trap(int);
-
-/* An ASCII map of Australia */
-
-char *AusMap[17] =
-{
- " A ",
- " AA AA ",
- " N.T. AAAAA AAAA ",
- " AAAAAAAAAAA AAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAAA Qld.",
- " AAAAAAAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAAAAAA ",
- " AAAAAAAAAAAAAAAAAAAAAAAAA N.S.W.",
- "W.A. AAAAAAAAA AAAAAA Vic.",
- " AAA S.A. AA",
- " A Tas.",
- ""
-};
-
-/* Funny messages for the scroller */
-
-char *messages[] =
-{
- "Hello from the Land Down Under",
- "The Land of crocs, and a big Red Rock",
- "Where the sunflower runs along the highways",
- "The dusty red roads lead one to loneliness",
- "Blue sky in the morning and",
- "Freezing nights and twinkling stars",
- NULL
-};
-
-int WaitForUser(void)
-{
- chtype ch;
-
- nodelay(stdscr, TRUE);
- halfdelay(50);
-
- ch = getch();
-
- nodelay(stdscr, FALSE);
- nocbreak(); /* Reset the halfdelay() value */
- cbreak();
-
- return (ch == '\033') ? ch : 0;
-}
-
-int SubWinTest(WINDOW *win)
-{
- WINDOW *swin1, *swin2, *swin3;
- int w, h, sw, sh, bx, by;
-
- wattrset(win, 0);
- getmaxyx(win, h, w);
- getbegyx(win, by, bx);
-
- sw = w / 3;
- sh = h / 3;
-
- if ((swin1 = derwin(win, sh, sw, 3, 5)) == NULL)
- return 1;
- if ((swin2 = subwin(win, sh, sw, by + 4, bx + 8)) == NULL)
- return 1;
- if ((swin3 = subwin(win, sh, sw, by + 5, bx + 11)) == NULL)
- return 1;
-
- init_pair(8, COLOR_RED, COLOR_BLUE);
- wbkgd(swin1, COLOR_PAIR(8));
- werase(swin1);
- mvwaddstr(swin1, 0, 3, "Sub-window 1");
- wrefresh(swin1);
-
- init_pair(9, COLOR_CYAN, COLOR_MAGENTA);
- wbkgd(swin2, COLOR_PAIR(9));
- werase(swin2);
- mvwaddstr(swin2, 0, 3, "Sub-window 2");
- wrefresh(swin2);
-
- init_pair(10, COLOR_YELLOW, COLOR_GREEN);
- wbkgd(swin3, COLOR_PAIR(10));
- werase(swin3);
- mvwaddstr(swin3, 0, 3, "Sub-window 3");
- wrefresh(swin3);
-
- delwin(swin1);
- delwin(swin2);
- delwin(swin3);
- WaitForUser();
-
- return 0;
-}
-
-int BouncingBalls(WINDOW *win)
-{
- chtype c1, c2, c3, ball1, ball2, ball3;
- int w, h, x1, y1, xd1, yd1, x2, y2, xd2, yd2, x3, y3, xd3, yd3, c;
-
- curs_set(0);
-
- wbkgd(win, COLOR_PAIR(1));
- wrefresh(win);
- wattrset(win, 0);
-
- init_pair(11, COLOR_RED, COLOR_GREEN);
- init_pair(12, COLOR_BLUE, COLOR_RED);
- init_pair(13, COLOR_YELLOW, COLOR_WHITE);
-
- ball1 = 'O' | COLOR_PAIR(11);
- ball2 = '*' | COLOR_PAIR(12);
- ball3 = '@' | COLOR_PAIR(13);
-
- getmaxyx(win, h, w);
-
- x1 = 2 + rand() % (w - 4);
- y1 = 2 + rand() % (h - 4);
- x2 = 2 + rand() % (w - 4);
- y2 = 2 + rand() % (h - 4);
- x3 = 2 + rand() % (w - 4);
- y3 = 2 + rand() % (h - 4);
-
- xd1 = 1;
- yd1 = 1;
- xd2 = 1;
- yd2 = -1;
- xd3 = -1;
- yd3 = 1;
-
- nodelay(stdscr, TRUE);
-
- while ((c = getch()) == ERR)
- {
- x1 += xd1;
- if (x1 <= 1 || x1 >= w - 2)
- xd1 *= -1;
-
- y1 += yd1;
- if (y1 <= 1 || y1 >= h - 2)
- yd1 *= -1;
-
- x2 += xd2;
- if (x2 <= 1 || x2 >= w - 2)
- xd2 *= -1;
-
- y2 += yd2;
- if (y2 <= 1 || y2 >= h - 2)
- yd2 *= -1;
-
- x3 += xd3;
- if (x3 <= 1 || x3 >= w - 2)
- xd3 *= -1;
-
- y3 += yd3;
- if (y3 <= 1 || y3 >= h - 2)
- yd3 *= -1;
-
- c1 = mvwinch(win, y1, x1);
- c2 = mvwinch(win, y2, x2);
- c3 = mvwinch(win, y3, x3);
-
- mvwaddch(win, y1, x1, ball1);
- mvwaddch(win, y2, x2, ball2);
- mvwaddch(win, y3, x3, ball3);
-
- wmove(win, 0, 0);
- wrefresh(win);
-
- mvwaddch(win, y1, x1, c1);
- mvwaddch(win, y2, x2, c2);
- mvwaddch(win, y3, x3, c3);
-
- napms(150);
- }
-
- nodelay(stdscr, FALSE);
- ungetch(c);
- return 0;
-}
-
-/* Trap interrupt */
-
-void trap(int sig)
-{
- if (sig == SIGINT)
- {
- endwin();
-
- exit(0);
- }
-}
-
-int main(int argc, char **argv)
-{
- WINDOW *win;
- chtype save[80], ch;
- int width, height, w, x, y, i, j, seed;
-
-#ifdef XCURSES
- Xinitscr(argc, argv);
-#else
- initscr();
-#endif
- seed = time((time_t *)0);
- srand(seed);
-
- start_color();
-# if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
- use_default_colors();
-# endif
- cbreak();
- noecho();
-
- curs_set(0);
-
-#if !defined(__TURBOC__) && !defined(OS2)
- signal(SIGINT, trap);
-#endif
- noecho();
-
- /* refresh stdscr so that reading from it will not cause it to
- overwrite the other windows that are being created */
-
- refresh();
-
- /* Create a drawing window */
-
- width = 48;
- height = 15;
-
- win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
-
- if (win == NULL)
- {
- endwin();
-
- return 1;
- }
-
- for (;;)
- {
- init_pair(1, COLOR_WHITE, COLOR_BLUE);
- wbkgd(win, COLOR_PAIR(1));
- werase(win);
-
- init_pair(2, COLOR_RED, COLOR_RED);
- wattrset(win, COLOR_PAIR(2));
- box(win, ' ', ' ');
- wrefresh(win);
-
- wattrset(win, 0);
-
- /* Do random output of a character */
-
- ch = 'a';
-
- nodelay(stdscr, TRUE);
-
- for (i = 0; i < 5000; ++i)
- {
- x = rand() % (width - 2) + 1;
- y = rand() % (height - 2) + 1;
-
- mvwaddch(win, y, x, ch);
- wrefresh(win);
-
- if (getch() != ERR)
- break;
-
- if (i == 2000)
- {
- ch = 'b';
- init_pair(3, COLOR_CYAN, COLOR_YELLOW);
- wattrset(win, COLOR_PAIR(3));
- }
- }
-
- nodelay(stdscr, FALSE);
-
- SubWinTest(win);
-
- /* Erase and draw green window */
-
- init_pair(4, COLOR_YELLOW, COLOR_GREEN);
- wbkgd(win, COLOR_PAIR(4));
- wattrset(win, A_BOLD);
- werase(win);
- wrefresh(win);
-
- /* Draw RED bounding box */
-
- wattrset(win, COLOR_PAIR(2));
- box(win, ' ', ' ');
- wrefresh(win);
-
- /* Display Australia map */
-
- wattrset(win, A_BOLD);
- i = 0;
-
- while (*AusMap[i])
- {
- mvwaddstr(win, i + 1, 8, AusMap[i]);
- wrefresh(win);
- napms(100);
- ++i;
- }
-
- init_pair(5, COLOR_BLUE, COLOR_WHITE);
- wattrset(win, COLOR_PAIR(5) | A_BLINK);
- mvwaddstr(win, height - 2, 3,
- " PDCurses 3.4 - DOS, OS/2, Win32, X11, SDL");
- wrefresh(win);
-
- /* Draw running messages */
-
- init_pair(6, COLOR_BLACK, COLOR_WHITE);
- wattrset(win, COLOR_PAIR(6));
- w = width - 2;
- nodelay(win, TRUE);
-
- /* jbuhler's re-hacked scrolling messages */
-
- for (j = 0; messages[j] != NULL; j++)
- {
- char *message = messages[j];
- int msg_len = strlen(message);
- int scroll_len = w + 2 * msg_len;
- char *scrollbuf = malloc(scroll_len);
- char *visbuf = scrollbuf + msg_len;
- int stop = 0;
- int i;
-
- for (i = w + msg_len; i > 0; i--)
- {
- memset(visbuf, ' ', w);
- strncpy(scrollbuf + i, message, msg_len);
- mvwaddnstr(win, height / 2, 1, visbuf, w);
- wrefresh(win);
-
- if (wgetch(win) != ERR)
- {
- flushinp();
- stop = 1;
- break;
- }
-
- napms(100);
- }
-
- free(scrollbuf);
-
- if (stop)
- break;
- }
-
- j = 0;
-
- /* Draw running 'A's across in RED */
-
- init_pair(7, COLOR_RED, COLOR_GREEN);
- wattron(win, COLOR_PAIR(7));
-
- for (i = 2; i < width - 4; ++i)
- {
- ch = mvwinch(win, 5, i);
- save[j++] = ch;
- ch = ch & 0x7f;
- mvwaddch(win, 5, i, ch);
- }
-
- wrefresh(win);
-
- /* Put a message up; wait for a key */
-
- i = height - 2;
- wattrset(win, COLOR_PAIR(5));
- mvwaddstr(win, i, 3,
- " Type a key to continue or ESC to quit ");
- wrefresh(win);
-
- if (WaitForUser() == '\033')
- break;
-
- /* Restore the old line */
-
- wattrset(win, 0);
-
- for (i = 2, j = 0; i < width - 4; ++i)
- mvwaddch(win, 5, i, save[j++]);
-
- wrefresh(win);
-
- BouncingBalls(win);
-
- /* BouncingBalls() leaves a keystroke in the queue */
-
- if (WaitForUser() == '\033')
- break;
- }
-
- endwin();
-
- return 0;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/ptest.c b/payloads/libpayload/curses/PDCurses-3.4/demos/ptest.c
deleted file mode 100644
index 6071f79..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/ptest.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/* $Id: ptest.c,v 1.24 2008/07/13 16:08:17 wmcbrine Exp $ */
-
-#include <curses.h>
-#include <panel.h>
-#include <stdlib.h>
-
-PANEL *p1, *p2, *p3, *p4, *p5;
-WINDOW *w4, *w5;
-
-long nap_msec = 1;
-
-char *mod[] =
-{
- "test ", "TEST ", "(**) ", "*()* ", "<--> ", "LAST "
-};
-
-void pflush(void)
-{
- update_panels();
- doupdate();
-}
-
-void backfill(void)
-{
- int y, x;
-
- erase();
-
- for (y = 0; y < LINES - 1; y++)
- for (x = 0; x < COLS; x++)
- printw("%d", (y + x) % 10);
-}
-
-void wait_a_while(long msec)
-{
- int c;
-
- if (msec != 1)
- timeout(msec);
-
- c = getch();
-
- if (c == 'q')
- {
- endwin();
- exit(1);
- }
-}
-
-void saywhat(const char *text)
-{
- mvprintw(LINES - 1, 0, "%-20.20s", text);
-}
-
-/* mkpanel - alloc a win and panel and associate them */
-
-PANEL *mkpanel(int rows, int cols, int tly, int tlx)
-{
- WINDOW *win = newwin(rows, cols, tly, tlx);
- PANEL *pan = (PANEL *)0;
-
- if (win)
- {
- pan = new_panel(win);
-
- if (!pan)
- delwin(win);
- }
-
- return pan;
-}
-
-void rmpanel(PANEL *pan)
-{
- WINDOW *win = pan->win;
-
- del_panel(pan);
- delwin(win);
-}
-
-void fill_panel(PANEL *pan)
-{
- WINDOW *win = pan->win;
- char num = *((char *)pan->user + 1);
- int y, x, maxy, maxx;
-
- box(win, 0, 0);
- mvwprintw(win, 1, 1, "-pan%c-", num);
- getmaxyx(win, maxy, maxx);
-
- for (y = 2; y < maxy - 1; y++)
- for (x = 1; x < maxx - 1; x++)
- mvwaddch(win, y, x, num);
-}
-
-int main(int argc, char **argv)
-{
- int itmp, y;
-
- if (argc > 1 && atol(argv[1]))
- nap_msec = atol(argv[1]);
-
-#ifdef XCURSES
- Xinitscr(argc, argv);
-#else
- initscr();
-#endif
- backfill();
-
- for (y = 0; y < 5; y++)
- {
- p1 = mkpanel(10, 10, 0, 0);
- set_panel_userptr(p1, "p1");
-
- p2 = mkpanel(14, 14, 5, 5);
- set_panel_userptr(p2, "p2");
-
- p3 = mkpanel(6, 8, 12, 12);
- set_panel_userptr(p3, "p3");
-
- p4 = mkpanel(10, 10, 10, 30);
- w4 = panel_window(p4);
- set_panel_userptr(p4, "p4");
-
- p5 = mkpanel(10, 10, 13, 37);
- w5 = panel_window(p5);
- set_panel_userptr(p5, "p5");
-
- fill_panel(p1);
- fill_panel(p2);
- fill_panel(p3);
- fill_panel(p4);
- fill_panel(p5);
- hide_panel(p4);
- hide_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("h3 s1 s2 s4 s5;");
- move_panel(p1, 0, 0);
- hide_panel(p3);
- show_panel(p1);
- show_panel(p2);
- show_panel(p4);
- show_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s1;");
- show_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s2;");
- show_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m2;");
- move_panel(p2, 10, 10);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s3;");
- show_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m3;");
- move_panel(p3, 5, 5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("b3;");
- bottom_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s4;");
- show_panel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s5;");
- show_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t3;");
- top_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t1;");
- top_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t2;");
- top_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t3;");
- top_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t4;");
- top_panel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- for (itmp = 0; itmp < 6; itmp++)
- {
- saywhat("m4;");
- mvwaddstr(w4, 3, 1, mod[itmp]);
- move_panel(p4, 4, itmp * 10);
- mvwaddstr(w5, 4, 1, mod[itmp]);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m5;");
- mvwaddstr(w4, 4, 1, mod[itmp]);
- move_panel(p5, 7, itmp * 10 + 6);
- mvwaddstr(w5, 3, 1, mod[itmp]);
- pflush();
- wait_a_while(nap_msec);
- }
-
- saywhat("m4;");
- move_panel(p4, 4, itmp * 10);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t5;");
- top_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t2;");
- top_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t1;");
- top_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d2;");
- rmpanel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("h3;");
- hide_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d1;");
- rmpanel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d4; ");
- rmpanel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d5; ");
- rmpanel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- if (nap_msec == 1)
- break;
-
- nap_msec = 100L;
- }
-
- endwin();
-
- return 0;
-} /* end of main */
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/rain.c b/payloads/libpayload/curses/PDCurses-3.4/demos/rain.c
deleted file mode 100644
index 51d05a9..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/rain.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/* $Id: rain.c,v 1.11 2008/07/13 16:08:17 wmcbrine Exp $ */
-
-#include <curses.h>
-#include <stdlib.h>
-#include <time.h>
-
-/* rain 11/3/1980 EPS/CITHEP */
-
-static int next_j(int j)
-{
- if (j == 0)
- j = 4;
- else
- --j;
-
- if (has_colors())
- {
- int z = rand() % 3;
- chtype color = COLOR_PAIR(z);
-
- if (z)
- color |= A_BOLD;
-
- attrset(color);
- }
-
- return j;
-}
-
-int main(int argc, char *argv[])
-{
- int x, y, j, r, c, seed;
- static int xpos[5], ypos[5];
-
-#ifdef XCURSES
- Xinitscr(argc, argv);
-#else
- initscr();
-#endif
- seed = time((time_t *)0);
- srand(seed);
-
- if (has_colors())
- {
- int bg = COLOR_BLACK;
-
- start_color();
-
-#if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
- if (use_default_colors() == OK)
- bg = -1;
-#endif
- init_pair(1, COLOR_BLUE, bg);
- init_pair(2, COLOR_CYAN, bg);
- }
-
- nl();
- noecho();
- curs_set(0);
- timeout(0);
- keypad(stdscr, TRUE);
-
- r = LINES - 4;
- c = COLS - 4;
-
- for (j = 5; --j >= 0;)
- {
- xpos[j] = rand() % c + 2;
- ypos[j] = rand() % r + 2;
- }
-
- for (j = 0;;)
- {
- x = rand() % c + 2;
- y = rand() % r + 2;
-
- mvaddch(y, x, '.');
-
- mvaddch(ypos[j], xpos[j], 'o');
-
- j = next_j(j);
- mvaddch(ypos[j], xpos[j], 'O');
-
- j = next_j(j);
- mvaddch(ypos[j] - 1, xpos[j], '-');
- mvaddstr(ypos[j], xpos[j] - 1, "|.|");
- mvaddch(ypos[j] + 1, xpos[j], '-');
-
- j = next_j(j);
- mvaddch(ypos[j] - 2, xpos[j], '-');
- mvaddstr(ypos[j] - 1, xpos[j] - 1, "/ \\");
- mvaddstr(ypos[j], xpos[j] - 2, "| O |");
- mvaddstr(ypos[j] + 1, xpos[j] - 1, "\\ /");
- mvaddch(ypos[j] + 2, xpos[j], '-');
-
- j = next_j(j);
- mvaddch(ypos[j] - 2, xpos[j], ' ');
- mvaddstr(ypos[j] - 1, xpos[j] - 1, " ");
- mvaddstr(ypos[j], xpos[j] - 2, " ");
- mvaddstr(ypos[j] + 1, xpos[j] - 1, " ");
- mvaddch(ypos[j] + 2, xpos[j], ' ');
-
- xpos[j] = x;
- ypos[j] = y;
-
- switch (getch())
- {
- case 'q':
- case 'Q':
- curs_set(1);
- endwin();
- return EXIT_SUCCESS;
- case 's':
- nodelay(stdscr, FALSE);
- break;
- case ' ':
- nodelay(stdscr, TRUE);
-#ifdef KEY_RESIZE
- break;
- case KEY_RESIZE:
-# ifdef PDCURSES
- resize_term(0, 0);
- erase();
-# endif
- r = LINES - 4;
- c = COLS - 4;
-#endif
- }
- napms(50);
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/testcurs.c b/payloads/libpayload/curses/PDCurses-3.4/demos/testcurs.c
deleted file mode 100644
index 54d44f4..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/testcurs.c
+++ /dev/null
@@ -1,1144 +0,0 @@
-/*
- * This is a test program for PDCurses. Originally by
- * John Burnell <johnb at kea.am.dsir.govt.nz>
- *
- * wrs(5/28/93) -- modified to be consistent (perform identically)
- * with either PDCurses or under Unix System V, R4
- *
- * $Id: testcurs.c,v 1.85 2008/07/14 12:35:23 wmcbrine Exp $
- */
-
-#ifndef _XOPEN_SOURCE_EXTENDED
-# define _XOPEN_SOURCE_EXTENDED 1
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <curses.h>
-
-#ifdef WACS_S1
-# define HAVE_WIDE 1
-#else
-# define HAVE_WIDE 0
-#endif
-
-#include <locale.h>
-
-#if HAVE_WIDE
-# include <wchar.h>
-#endif
-
-#if defined(PDCURSES) && !defined(XCURSES)
-# define HAVE_RESIZE 1
-#else
-# define HAVE_RESIZE 0
-#endif
-
-#ifdef A_COLOR
-# define HAVE_COLOR 1
-#else
-# define HAVE_COLOR 0
-#endif
-
-/* Set to non-zero if you want to test the PDCurses clipboard */
-
-#define HAVE_CLIPBOARD 0
-
-void inputTest(WINDOW *);
-void scrollTest(WINDOW *);
-void introTest(WINDOW *);
-int initTest(WINDOW **, int, char **);
-void outputTest(WINDOW *);
-void padTest(WINDOW *);
-void acsTest(WINDOW *);
-
-#if HAVE_COLOR
-void colorTest(WINDOW *);
-#endif
-
-#if HAVE_RESIZE
-void resizeTest(WINDOW *);
-#endif
-
-#if HAVE_CLIPBOARD
-void clipboardTest(WINDOW *);
-#endif
-
-#if HAVE_WIDE
-void wideTest(WINDOW *);
-#endif
-
-void display_menu(int, int);
-
-struct commands
-{
- const char *text;
- void (*function)(WINDOW *);
-};
-
-typedef struct commands COMMAND;
-
-#define MAX_OPTIONS (6 + HAVE_COLOR + HAVE_RESIZE + HAVE_CLIPBOARD + HAVE_WIDE)
-
-COMMAND command[MAX_OPTIONS] =
-{
- {"Intro Test", introTest},
- {"Pad Test", padTest},
-#if HAVE_RESIZE
- {"Resize Test", resizeTest},
-#endif
- {"Scroll Test", scrollTest},
- {"Input Test", inputTest},
- {"Output Test", outputTest},
- {"ACS Test", acsTest},
-#if HAVE_COLOR
- {"Color Test", colorTest},
-#endif
-#if HAVE_CLIPBOARD
- {"Clipboard Test", clipboardTest},
-#endif
-#if HAVE_WIDE
- {"Wide Input", wideTest}
-#endif
-};
-
-int width, height;
-
-int main(int argc, char *argv[])
-{
- WINDOW *win;
- int key, old_option = -1, new_option = 0;
- bool quit = FALSE;
-
- setlocale(LC_ALL, "");
-
- if (initTest(&win, argc, argv))
- return 1;
-
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(1, COLOR_WHITE, COLOR_BLUE);
- wbkgd(win, COLOR_PAIR(1));
- }
- else
-#endif
- wbkgd(win, A_REVERSE);
-
- erase();
- display_menu(old_option, new_option);
-
- while (1)
- {
- noecho();
- keypad(stdscr, TRUE);
- raw();
-
- key = getch();
-
- switch(key)
- {
- case 10:
- case 13:
- case KEY_ENTER:
- old_option = -1;
- erase();
- refresh();
- (*command[new_option].function)(win);
- erase();
- display_menu(old_option, new_option);
- break;
-
- case KEY_PPAGE:
- case KEY_HOME:
- old_option = new_option;
- new_option = 0;
- display_menu(old_option, new_option);
- break;
-
- case KEY_NPAGE:
- case KEY_END:
- old_option = new_option;
- new_option = MAX_OPTIONS - 1;
- display_menu(old_option, new_option);
- break;
-
- case KEY_UP:
- old_option = new_option;
- new_option = (new_option == 0) ?
- new_option : new_option - 1;
- display_menu(old_option, new_option);
- break;
-
- case KEY_DOWN:
- old_option = new_option;
- new_option = (new_option == MAX_OPTIONS - 1) ?
- new_option : new_option + 1;
- display_menu(old_option, new_option);
- break;
-#ifdef KEY_RESIZE
- case KEY_RESIZE:
-# ifdef PDCURSES
- resize_term(0, 0);
-# endif
- old_option = -1;
- erase();
- display_menu(old_option, new_option);
- break;
-#endif
- case 'Q':
- case 'q':
- quit = TRUE;
- }
-
- if (quit == TRUE)
- break;
- }
-
- delwin(win);
- endwin();
-
- return 0;
-}
-
-void Continue(WINDOW *win)
-{
- mvwaddstr(win, 10, 1, " Press any key to continue");
- wrefresh(win);
- raw();
- wgetch(win);
-}
-
-void Continue2(void)
-{
- move(LINES - 1, 1);
- clrtoeol();
- mvaddstr(LINES - 2, 1, " Press any key to continue");
- refresh();
- raw();
- getch();
-}
-
-int initTest(WINDOW **win, int argc, char *argv[])
-{
-#ifdef XCURSES
- Xinitscr(argc, argv);
-#else
- initscr();
-#endif
-#ifdef A_COLOR
- if (has_colors())
- start_color();
-#endif
- /* Create a drawing window */
-
- width = 60;
- height = 13;
-
- *win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
-
- if (*win == NULL)
- {
- endwin();
- return 1;
- }
-
- return 0;
-}
-
-void introTest(WINDOW *win)
-{
- werase(win);
- wmove(win, height / 2 - 5, width / 2);
- wvline(win, ACS_VLINE, 10);
- wmove(win, height / 2, width / 2 - 10);
- whline(win, ACS_HLINE, 20);
- Continue(win);
-
- beep();
- werase(win);
-
- box(win, ACS_VLINE, ACS_HLINE);
- wrefresh(win);
-
- cbreak();
- mvwaddstr(win, 1, 1,
- "You should have a rectangle in the middle of the screen");
- mvwaddstr(win, 2, 1, "You should have heard a beep");
- Continue(win);
-
- flash();
- mvwaddstr(win, 3, 1, "You should have seen a flash");
- Continue(win);
-}
-
-void scrollTest(WINDOW *win)
-{
- int i, OldY;
-#ifndef PDCURSES
- int OldX;
-#endif
- werase(win);
- mvwaddstr(win, height - 2, 1, "The window will now scroll slowly");
- box(win, ACS_VLINE, ACS_HLINE);
- wrefresh(win);
- scrollok(win, TRUE);
- napms(500);
-
- for (i = 1; i <= height; i++)
- {
- napms(150);
- scroll(win);
- wrefresh(win);
- };
-
-#ifdef PDCURSES
- OldY = getmaxy(win);
-#else
- getmaxyx(win, OldY, OldX);
-#endif
- mvwaddstr(win, 6, 1, "The top of the window will scroll");
- wmove(win, 1, 1);
- wsetscrreg(win, 0, 4);
- box(win, ACS_VLINE, ACS_HLINE);
- wrefresh(win);
-
- for (i = 1; i <= 5; i++)
- {
- napms(500);
- scroll(win);
- wrefresh(win);
- }
-
- mvwaddstr(win, 3, 1, "The bottom of the window will scroll");
- wmove(win, 8, 1);
- wsetscrreg(win, 5, --OldY);
- box(win, ACS_VLINE, ACS_HLINE);
- wrefresh(win);
-
- for (i = 5; i <= OldY; i++)
- {
- napms(300);
- wscrl(win, -1);
- wrefresh(win);
- }
-
- wsetscrreg(win, 0, OldY);
-}
-
-void inputTest(WINDOW *win)
-{
- int w, h, bx, by, sw, sh, i, c, num = 0;
- char buffer[80];
- WINDOW *subWin;
- static const char spinner[4] = "/-\\|";
- int spinner_count = 0;
-
- wclear(win);
-
- getmaxyx(win, h, w);
- getbegyx(win, by, bx);
-
- sw = w / 3;
- sh = h / 3;
-
- if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2))
- == NULL)
- return;
-
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(2, COLOR_WHITE, COLOR_RED);
- wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
- }
- else
-#endif
- wbkgd(subWin, A_BOLD);
-
- box(subWin, ACS_VLINE, ACS_HLINE);
- wrefresh(win);
-
- nocbreak();
-
- wclear (win);
- mvwaddstr(win, 1, 1,
- "Press keys (or mouse buttons) to show their names");
- mvwaddstr(win, 2, 1, "Press spacebar to finish");
- wrefresh(win);
-
- keypad(win, TRUE);
- raw();
- noecho();
-
- wtimeout(win, 200);
-
-#ifdef PDCURSES
- mouse_set(ALL_MOUSE_EVENTS);
- PDC_save_key_modifiers(TRUE);
- PDC_return_key_modifiers(TRUE);
-#endif
- curs_set(0); /* turn cursor off */
-
- while (1)
- {
- while (1)
- {
- c = wgetch(win);
-
- if (c == ERR)
- {
- spinner_count++;
- if (spinner_count == 4)
- spinner_count = 0;
- mvwaddch(win, 3, 3, spinner[spinner_count]);
- wrefresh(win);
- }
- else
- break;
- }
-#ifdef PDCURSES
- wmove(win, 4, 18);
- wclrtoeol(win);
-#endif
- mvwaddstr(win, 3, 5, "Key Pressed: ");
- wclrtoeol(win);
-
- if (c >= KEY_MIN)
- wprintw(win, "%s", keyname(c));
- else if (isprint(c))
- wprintw(win, "%c", c);
- else
- wprintw(win, "%s", unctrl(c));
-#ifdef PDCURSES
- if (c == KEY_MOUSE)
- {
- int button = 0;
- request_mouse_pos();
-
- if (BUTTON_CHANGED(1))
- button = 1;
- else if (BUTTON_CHANGED(2))
- button = 2;
- else if (BUTTON_CHANGED(3))
- button = 3;
-
- if (button && (BUTTON_STATUS(button) &
- BUTTON_MODIFIER_MASK))
- {
- waddstr(win, " Modifier(s):");
-
- if (BUTTON_STATUS(button) & BUTTON_SHIFT)
- waddstr(win, " SHIFT");
-
- if (BUTTON_STATUS(button) & BUTTON_CONTROL)
- waddstr(win, " CONTROL");
-
- if (BUTTON_STATUS(button) & BUTTON_ALT)
- waddstr(win, " ALT");
- }
-
- wmove(win, 4, 18);
- wclrtoeol(win);
- wprintw(win, "Button %d: ", button);
-
- if (MOUSE_MOVED)
- waddstr(win, "moved: ");
- else if (MOUSE_WHEEL_UP)
- waddstr(win, "wheel up: ");
- else if (MOUSE_WHEEL_DOWN)
- waddstr(win, "wheel dn: ");
- else if ((BUTTON_STATUS(button) &
- BUTTON_ACTION_MASK) == BUTTON_PRESSED)
- waddstr(win, "pressed: ");
- else if ((BUTTON_STATUS(button) &
- BUTTON_ACTION_MASK) == BUTTON_CLICKED)
- waddstr(win, "clicked: ");
- else if ((BUTTON_STATUS(button) &
- BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
- waddstr(win, "double: ");
- else
- waddstr(win, "released: ");
-
- wprintw(win, "Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS);
- }
- else if (PDC_get_key_modifiers())
- {
- waddstr(win, " Modifier(s):");
- if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_SHIFT)
- waddstr(win, " SHIFT");
-
- if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_CONTROL)
- waddstr(win, " CONTROL");
-
- if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_ALT)
- waddstr(win, " ALT");
-
- if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_NUMLOCK)
- waddstr(win, " NUMLOCK");
- }
-#endif
- wrefresh(win);
-
- if (c == ' ')
- break;
- }
-
- wtimeout(win, -1); /* turn off timeout() */
- curs_set(1); /* turn cursor back on */
-
-#ifdef PDCURSES
- mouse_set(0L);
- PDC_save_key_modifiers(FALSE);
- PDC_return_key_modifiers(FALSE);
-#endif
- wclear(win);
- mvwaddstr(win, 2, 1, "Press some keys for 5 seconds");
- mvwaddstr(win, 1, 1, "Pressing ^C should do nothing");
- wrefresh(win);
-
- werase(subWin);
- box(subWin, ACS_VLINE, ACS_HLINE);
-
- for (i = 0; i < 5; i++)
- {
- mvwprintw(subWin, 1, 1, "Time = %d", i);
- wrefresh(subWin);
- napms(1000);
- flushinp();
- }
-
- delwin(subWin);
- werase(win);
- flash();
- wrefresh(win);
- napms(500);
- flushinp();
-
- mvwaddstr(win, 2, 1, "Press a key, followed by ENTER");
- wmove(win, 9, 10);
- wrefresh(win);
- echo();
-
- keypad(win, TRUE);
- raw();
- wgetnstr(win, buffer, 3);
- flushinp();
-
- wmove(win, 9, 10);
- wdelch(win);
- mvwaddstr(win, 4, 1, "The character should now have been deleted");
- Continue(win);
-
- refresh();
- wclear(win);
- echo();
- buffer[0] = '\0';
- mvwaddstr(win, 3, 2, "The window should have moved");
- mvwaddstr(win, 4, 2,
- "This text should have appeared without you pressing a key");
- mvwaddstr(win, 6, 2, "Enter a number then a string seperated by space");
- mvwin(win, 2, 1);
- wrefresh(win);
- mvwscanw(win, 7, 6, "%d %s", &num, buffer);
- mvwprintw(win, 8, 6, "String: %s Number: %d", buffer, num);
- Continue(win);
-
- refresh();
- wclear(win);
- echo();
- mvwaddstr(win, 3, 2, "Enter a 5 character string: ");
- wgetnstr(win, buffer, 5);
- mvwprintw(win, 4, 2, "String: %s", buffer);
- Continue(win);
-}
-
-void outputTest(WINDOW *win)
-{
- WINDOW *win1;
- char Buffer[80];
- chtype ch;
- int by, bx;
-
- nl();
- wclear(win);
- mvwaddstr(win, 1, 1, "You should now have a screen in the upper "
- "left corner, and this text should have wrapped");
- waddstr(win,"\nThis text should be down\n");
- waddstr(win, "and broken into two here ^");
- Continue(win);
-
- wclear(win);
- wattron(win, A_BOLD);
- mvwaddstr(win, 1, 1, "A new window will appear with this text in it");
- mvwaddstr(win, 8, 1, "Press any key to continue");
- wrefresh(win);
- wgetch(win);
-
- getbegyx(win, by, bx);
-
- if (LINES < 24 || COLS < 75)
- {
- mvwaddstr(win, 5, 1, "Some tests have been skipped as they require a");
- mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
- Continue(win);
- }
- else
- {
- win1 = newwin(10, 50, 14, 25);
-
- if (win1 == NULL)
- {
- endwin();
- return;
- }
-
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(3, COLOR_BLUE, COLOR_WHITE);
- wbkgd(win1, COLOR_PAIR(3));
- }
- else
-#endif
- wbkgd(win1, A_NORMAL);
-
- wclear(win1);
- mvwaddstr(win1, 5, 1, "This text should appear; using overlay option");
- copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE);
- box(win1, ACS_VLINE, ACS_HLINE);
- wmove(win1, 8, 26);
- wrefresh(win1);
- wgetch(win1);
-
- wclear(win1);
-
- wattron(win1, A_BLINK);
- mvwaddstr(win1, 4, 1,
- "This blinking text should appear in only the second window");
- wattroff(win1, A_BLINK);
-
- mvwin(win1, by, bx);
- overlay(win, win1);
- mvwin(win1, 14, 25);
- wmove(win1, 8, 26);
- wrefresh(win1);
- wgetch(win1);
-
- delwin(win1);
- }
-
- clear();
- wclear(win);
- wrefresh(win);
- mvwaddstr(win, 6, 2, "This line shouldn't appear");
- mvwaddstr(win, 4, 2, "Only half of the next line is visible");
- mvwaddstr(win, 5, 2, "Only half of the next line is visible");
- wmove(win, 6, 1);
- wclrtobot(win);
- wmove(win, 5, 20);
- wclrtoeol(win);
- mvwaddstr(win, 8, 2, "This line also shouldn't appear");
- wmove(win, 8, 1);
- winsdelln(win, -1);
- Continue(win);
-
- wmove(win, 5, 9);
- ch = winch(win);
-
- wclear(win);
- wmove(win, 6, 2);
- waddstr(win, "The next char should be l: ");
- winsch(win, ch);
- Continue(win);
-
- mvwinsstr(win, 6, 2, "A1B2C3D4E5");
- Continue(win);
-
- wmove(win, 5, 1);
- winsdelln(win, 1);
- mvwaddstr(win, 5, 2, "The lines below should have moved down");
- Continue(win);
-
- wclear(win);
- wmove(win, 2, 2);
- wprintw(win, "This is a formatted string in a window: %d %s\n",
- 42, "is it");
- mvwaddstr(win, 10, 1, "Enter a string: ");
- wrefresh(win);
- echo();
- wscanw(win, "%s", Buffer);
-
- printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
- mvaddstr(10, 1, "Enter a string: ");
- scanw("%s", Buffer);
-
- wclear(win);
- curs_set(2);
- mvwaddstr(win, 1, 1, "The cursor should be in high-visibility mode");
- Continue(win);
-
- wclear(win);
- curs_set(0);
- mvwaddstr(win, 1, 1, "The cursor should have disappeared");
- Continue(win);
-
- wclear(win);
- curs_set(1);
- mvwaddstr(win, 1, 1, "The cursor should be normal");
- Continue(win);
-
-#ifdef A_COLOR
- if (has_colors())
- {
- wclear(win);
- mvwaddstr(win, 1, 1, "Colors should change after you press a key");
- Continue(win);
-
- init_pair(1, COLOR_RED, COLOR_WHITE);
- wrefresh(win);
- }
-#endif
- werase(win);
- mvwaddstr(win, 1, 1, "Information About Your Terminal");
- mvwaddstr(win, 3, 1, termname());
- mvwaddstr(win, 4, 1, longname());
-
- if (termattrs() & A_BLINK)
- mvwaddstr(win, 5, 1, "This terminal claims to support blinking.");
- else
- mvwaddstr(win, 5, 1, "This terminal does NOT support blinking.");
-
- mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16);
- wrefresh(win);
-
- mvwinnstr(win, 7, 5, Buffer, 18);
- mvaddstr(LINES - 2, 10, Buffer);
- refresh();
- Continue(win);
-}
-
-#if HAVE_RESIZE
-void resizeTest(WINDOW *dummy)
-{
- WINDOW *win1;
- int nwidth = 135, nheight = 52;
- int owidth = COLS, oheight = LINES;
-
- savetty();
-
- resize_term(nheight, nwidth);
-
- clear();
- refresh();
-
- win1 = newwin(10, 50, 14, 25);
-
- if (win1 == NULL)
- {
- endwin();
- return;
- }
-
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(3, COLOR_BLUE, COLOR_WHITE);
- wattrset(win1, COLOR_PAIR(3));
- }
-
- wclear(win1);
-#endif
- mvwaddstr(win1, 0, 0, "The screen may now be resized");
- mvwprintw(win1, 1, 4, "Given size: %d by %d", nwidth, nheight);
- mvwprintw(win1, 2, 4, "Actual size: %d by %d", COLS, LINES);
- Continue(win1);
-
- wclear(win1);
- resetty();
-
- mvwaddstr(win1, 0, 0, "The screen should now be reset");
- mvwprintw(win1, 1, 6, "Old size: %d by %d", owidth, oheight);
- mvwprintw(win1, 2, 6, "Size now: %d by %d", COLS, LINES);
- Continue(win1);
-
- delwin(win1);
-
- clear();
- refresh();
-}
-#endif /* HAVE_RESIZE */
-
-void padTest(WINDOW *dummy)
-{
- WINDOW *pad, *spad;
-
- pad = newpad(50, 100);
- wattron(pad, A_REVERSE);
- mvwaddstr(pad, 5, 2, "This is a new pad");
- wattrset(pad, 0);
- mvwaddstr(pad, 8, 0,
- "The end of this line should be truncated here:except now");
- mvwaddstr(pad, 11, 1, "This line should not appear.It will now");
- wmove(pad, 10, 1);
- wclrtoeol(pad);
- mvwaddstr(pad, 10, 1, " Press any key to continue");
- prefresh(pad, 0, 0, 0, 0, 10, 45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- spad = subpad(pad, 12, 25, 7, 52);
- mvwaddstr(spad, 2, 2, "This is a new subpad");
- box(spad, 0, 0);
- prefresh(pad, 0, 0, 0, 0, 15, 75);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
- mvwaddstr(pad, 40, 1, " Press any key to continue");
- prefresh(pad, 30, 0, 0, 0, 10, 45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- delwin(pad);
-}
-
-#if HAVE_CLIPBOARD
-void clipboardTest(WINDOW *win)
-{
- static const char *text =
- "This string placed in clipboard by PDCurses test program, testcurs.";
- char *ptr = NULL;
- long i, length = 0;
-
- mvaddstr(1, 1,
- "This test will display the contents of the system clipboard");
-
- Continue2();
-
- scrollok(stdscr, TRUE);
- i = PDC_getclipboard(&ptr, &length);
-
- switch(i)
- {
- case PDC_CLIP_ACCESS_ERROR:
- mvaddstr(3, 1, "There was an error accessing the clipboard");
- refresh();
- break;
-
- case PDC_CLIP_MEMORY_ERROR:
- mvaddstr(3, 1,
- "Unable to allocate memory for clipboard contents");
- break;
-
- case PDC_CLIP_EMPTY:
- mvaddstr(3, 1, "There was no text in the clipboard");
- break;
-
- default:
- wsetscrreg(stdscr, 0, LINES - 1);
- clear();
- mvaddstr(1, 1, "Clipboard contents...");
- mvprintw(2, 1, "%s\n", ptr);
- }
-
- Continue2();
-
- clear();
- mvaddstr(1, 1,
- "This test will place the following string in the system clipboard:");
- mvaddstr(2, 1, text);
-
- i = PDC_setclipboard(text, strlen(text));
-
- switch(i)
- {
- case PDC_CLIP_ACCESS_ERROR:
- mvaddstr(3, 1, "There was an error accessing the clipboard");
- break;
-
- case PDC_CLIP_MEMORY_ERROR:
- mvaddstr(3, 1, "Unable to allocate memory for clipboard contents");
- break;
-
- default:
- mvaddstr(3, 1, "The string was placed in the clipboard successfully");
- }
-
- Continue2();
-}
-#endif /* HAVE_CLIPBOARD */
-
-void acsTest(WINDOW *win)
-{
-#ifdef ACS_S3
-# define ACSNUM 32
-#else
-# define ACSNUM 25
-#endif
- static const char *acs_names[] =
- {
- "ACS_ULCORNER", "ACS_URCORNER", "ACS_LLCORNER", "ACS_LRCORNER",
- "ACS_LTEE", "ACS_RTEE", "ACS_TTEE", "ACS_BTEE", "ACS_HLINE",
- "ACS_VLINE", "ACS_PLUS",
-
- "ACS_S1", "ACS_S9", "ACS_DIAMOND", "ACS_CKBOARD", "ACS_DEGREE",
- "ACS_PLMINUS", "ACS_BULLET",
-
- "ACS_LARROW", "ACS_RARROW", "ACS_UARROW", "ACS_DARROW",
- "ACS_BOARD", "ACS_LANTERN", "ACS_BLOCK"
-#ifdef ACS_S3
- , "ACS_S3", "ACS_S7", "ACS_LEQUAL", "ACS_GEQUAL",
- "ACS_PI", "ACS_NEQUAL", "ACS_STERLING"
-#endif
- };
-
- chtype acs_values[ACSNUM];
-
-#if HAVE_WIDE
- cchar_t *wacs_values[] =
- {
- WACS_ULCORNER, WACS_URCORNER, WACS_LLCORNER, WACS_LRCORNER,
- WACS_LTEE, WACS_RTEE, WACS_TTEE, WACS_BTEE, WACS_HLINE,
- WACS_VLINE, WACS_PLUS,
-
- WACS_S1, WACS_S9, WACS_DIAMOND, WACS_CKBOARD, WACS_DEGREE,
- WACS_PLMINUS, WACS_BULLET,
-
- WACS_LARROW, WACS_RARROW, WACS_UARROW, WACS_DARROW, WACS_BOARD,
- WACS_LANTERN, WACS_BLOCK
-# ifdef WACS_S3
- , WACS_S3, WACS_S7, WACS_LEQUAL, WACS_GEQUAL, WACS_PI,
- WACS_NEQUAL, WACS_STERLING
-# endif
- };
-
- static const wchar_t russian[] = {0x0420, 0x0443, 0x0441, 0x0441,
- 0x043a, 0x0438, 0x0439, L' ', 0x044f, 0x0437, 0x044b, 0x043a, 0};
-
- static const wchar_t greek[] = {0x0395, 0x03bb, 0x03bb, 0x03b7,
- 0x03bd, 0x03b9, 0x03ba, 0x03ac, 0};
-
- static const wchar_t georgian[] = {0x10e5, 0x10d0, 0x10e0, 0x10d7,
- 0x10e3, 0x10da, 0x10d8, L' ', 0x10d4, 0x10dc, 0x10d0, 0};
-#endif
-
- int i, tmarg = (LINES - 22) / 2;
-
- attrset(A_BOLD);
- mvaddstr(tmarg, (COLS - 23) / 2, "Alternate Character Set");
- attrset(A_NORMAL);
-
- tmarg += 3;
-
-#define A(b,c) acs_values[b] = ACS_##c
-
- A(0,ULCORNER); A(1,URCORNER); A(2,LLCORNER); A(3,LRCORNER);
- A(4,LTEE); A(5,RTEE); A(6,TTEE); A(7,BTEE);
- A(8,HLINE); A(9,VLINE); A(10,PLUS); A(11,S1);
- A(12,S9); A(13,DIAMOND); A(14,CKBOARD); A(15,DEGREE);
-
- A(16,PLMINUS); A(17,BULLET); A(18,LARROW); A(19,RARROW);
- A(20,UARROW); A(21,DARROW); A(22,BOARD); A(23,LANTERN);
- A(24,BLOCK);
-#ifdef ACS_S3
- A(25,S3); A(26,S7); A(27,LEQUAL); A(28,GEQUAL);
- A(29,PI); A(30,NEQUAL); A(31,STERLING);
-#endif
-
-#undef A
-
- for (i = 0; i < ACSNUM; i++)
- {
- move((i % 8) * 2 + tmarg, (i / 8) * (COLS / 4) + (COLS / 8 - 7));
- addch(acs_values[i]);
- printw(" %s", acs_names[i]);
- }
-
- mvaddstr(tmarg + 18, 3, "Press any key to continue");
- getch();
-
-#if HAVE_WIDE
- clear();
-
- attrset(A_BOLD);
- mvaddstr(tmarg - 3, (COLS - 28) / 2, "Wide Alternate Character Set");
- attrset(A_NORMAL);
-
- for (i = 0; i < ACSNUM; i++)
- {
- move((i % 8) * 2 + tmarg, (i / 8) * (COLS / 4) + (COLS / 8 - 7));
- add_wch(wacs_values[i]);
- printw(" W%s", acs_names[i]);
- }
-
- /* Spanish, Russian, Greek, Georgian */
-
- mvaddwstr(tmarg + 16, COLS / 8 - 5, L"Espa\xf1ol");
- mvaddwstr(tmarg + 16, 3 * (COLS / 8) - 5, russian);
- mvaddwstr(tmarg + 16, 5 * (COLS / 8) - 5, greek);
- mvaddwstr(tmarg + 16, 7 * (COLS / 8) - 5, georgian);
-
- mvaddstr(tmarg + 18, 3, "Press any key to continue");
- getch();
-#endif
-}
-
-#if HAVE_COLOR
-void colorTest(WINDOW *win)
-{
- static const short colors[] =
- {
- COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_BLUE,
- COLOR_CYAN, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE
- };
-
- static const char *colornames[] =
- {
- "COLOR_BLACK", "COLOR_RED", "COLOR_GREEN", "COLOR_BLUE",
- "COLOR_CYAN", "COLOR_MAGENTA", "COLOR_YELLOW", "COLOR_WHITE"
- };
-
- chtype fill = ACS_BLOCK;
-
- int i, j, tmarg, col1, col2, col3;
-
- if (!has_colors())
- return;
-
- tmarg = (LINES - 19) / 2;
- col1 = (COLS - 60) / 2;
- col2 = col1 + 20;
- col3 = col2 + 20;
-
- attrset(A_BOLD);
- mvaddstr(tmarg, (COLS - 22) / 2, "Color Attribute Macros");
- attrset(A_NORMAL);
-
- mvaddstr(tmarg + 3, col2 + 4, "A_NORMAL");
- mvaddstr(tmarg + 3, col3 + 5, "A_BOLD");
-
- for (i = 0; i < 8; i++)
- {
- init_pair(i + 4, colors[i], COLOR_BLACK);
-
- mvaddstr(tmarg + i + 5, col1, colornames[i]);
-
- for (j = 0; j < 16; j++)
- {
- mvaddch(tmarg + i + 5, col2 + j, fill | COLOR_PAIR(i + 4));
- mvaddch(tmarg + i + 5, col3 + j, fill | COLOR_PAIR(i + 4) | A_BOLD);
- }
- }
-
- mvprintw(tmarg + 15, col1, "COLORS = %d", COLORS);
- mvprintw(tmarg + 16, col1, "COLOR_PAIRS = %d", COLOR_PAIRS);
-
- mvaddstr(tmarg + 19, 3, "Press any key to continue");
- getch();
-
- if (can_change_color())
- {
- struct
- {
- short red, green, blue;
- } orgcolors[16];
-
- int MAXCOL = (COLORS >= 16) ? 16 : 8;
-
- if (MAXCOL < 8)
- return;
-
- for (i = 0; i < MAXCOL; i++)
- color_content(i, &(orgcolors[i].red),
- &(orgcolors[i].green),
- &(orgcolors[i].blue));
-
- attrset(A_BOLD);
- mvaddstr(tmarg, (COLS - 22) / 2, " init_color() Example ");
- attrset(A_NORMAL);
-
- refresh();
-
- for (i = 0; i < 8; i++)
- {
- init_color(colors[i], i * 125, 0, i * 125);
-
- if (MAXCOL == 16)
- init_color(colors[i] + 8, 0, i * 125, 0);
- }
-
- mvaddstr(tmarg + 19, 3, "Press any key to continue");
- getch();
-
- for (i = 0; i < MAXCOL; i++)
- init_color(i, orgcolors[i].red,
- orgcolors[i].green,
- orgcolors[i].blue);
- }
-}
-#endif
-
-#if HAVE_WIDE
-void wideTest(WINDOW *win)
-{
- wchar_t tmp[513];
- size_t i;
-
- attrset(A_BOLD);
- mvaddstr(1, (COLS - 25) / 2, "Wide Character Input Test");
- attrset(A_NORMAL);
-
- mvaddstr(4, 1, "Enter a string: ");
-
- echo();
-
- get_wstr((wint_t *)tmp);
- addstr("\n\n String:\n\n ");
- addwstr(tmp);
- addstr("\n\n\n Hex:\n\n ");
-
- for (i = 0; i < wcslen(tmp); i++)
- {
- printw("%04x ", tmp[i]);
- addnwstr(tmp + i, 1);
- addstr(" ");
- }
-
- noecho();
-
- Continue2();
-}
-#endif
-
-void display_menu(int old_option, int new_option)
-{
- int lmarg = (COLS - 14) / 2,
- tmarg = (LINES - (MAX_OPTIONS + 2)) / 2;
-
- if (old_option == -1)
- {
- int i;
-
- attrset(A_BOLD);
- mvaddstr(tmarg - 3, lmarg - 5, "PDCurses Test Program");
- attrset(A_NORMAL);
-
- for (i = 0; i < MAX_OPTIONS; i++)
- mvaddstr(tmarg + i, lmarg, command[i].text);
- }
- else
- mvaddstr(tmarg + old_option, lmarg, command[old_option].text);
-
- attrset(A_REVERSE);
- mvaddstr(tmarg + new_option, lmarg, command[new_option].text);
- attrset(A_NORMAL);
-
- mvaddstr(tmarg + MAX_OPTIONS + 2, lmarg - 23,
- "Use Up and Down Arrows to select - Enter to run - Q to quit");
- refresh();
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/tui.c b/payloads/libpayload/curses/PDCurses-3.4/demos/tui.c
deleted file mode 100644
index 62e0d53..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/tui.c
+++ /dev/null
@@ -1,821 +0,0 @@
-/********************************* tui.c ************************************/
-/*
- * 'textual user interface'
- *
- * $Id: tui.c,v 1.34 2008/07/14 12:35:23 wmcbrine Exp $
- *
- * Author : P.J. Kunst <kunst at prl.philips.nl>
- * Date : 25-02-93
- */
-
-#include <ctype.h>
-#include <curses.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "tui.h"
-
-void statusmsg(char *);
-int waitforkey(void);
-void rmerror(void);
-
-#if defined(__unix) && !defined(__DJGPP__)
-#include <unistd.h>
-#endif
-
-#ifdef A_COLOR
-# define TITLECOLOR 1 /* color pair indices */
-# define MAINMENUCOLOR (2 | A_BOLD)
-# define MAINMENUREVCOLOR (3 | A_BOLD | A_REVERSE)
-# define SUBMENUCOLOR (4 | A_BOLD)
-# define SUBMENUREVCOLOR (5 | A_BOLD | A_REVERSE)
-# define BODYCOLOR 6
-# define STATUSCOLOR (7 | A_BOLD)
-# define INPUTBOXCOLOR 8
-# define EDITBOXCOLOR (9 | A_BOLD | A_REVERSE)
-#else
-# define TITLECOLOR 0 /* color pair indices */
-# define MAINMENUCOLOR (A_BOLD)
-# define MAINMENUREVCOLOR (A_BOLD | A_REVERSE)
-# define SUBMENUCOLOR (A_BOLD)
-# define SUBMENUREVCOLOR (A_BOLD | A_REVERSE)
-# define BODYCOLOR 0
-# define STATUSCOLOR (A_BOLD)
-# define INPUTBOXCOLOR 0
-# define EDITBOXCOLOR (A_BOLD | A_REVERSE)
-#endif
-
-
-#define th 1 /* title window height */
-#define mh 1 /* main menu height */
-#define sh 2 /* status window height */
-#define bh (LINES - th - mh - sh) /* body window height */
-#define bw COLS /* body window width */
-
-
-/******************************* STATIC ************************************/
-
-static WINDOW *wtitl, *wmain, *wbody, *wstat; /* title, menu, body, status win*/
-static int nexty, nextx;
-static int key = ERR, ch = ERR;
-static bool quit = FALSE;
-static bool incurses = FALSE;
-
-#ifndef PDCURSES
-static char wordchar(void)
-{
- return 0x17; /* ^W */
-}
-#endif
-
-static char *padstr(char *s, int length)
-{
- static char buf[MAXSTRLEN];
- char fmt[10];
-
- sprintf(fmt, (int)strlen(s) > length ? "%%.%ds" : "%%-%ds", length);
- sprintf(buf, fmt, s);
-
- return buf;
-}
-
-static char *prepad(char *s, int length)
-{
- int i;
- char *p = s;
-
- if (length > 0)
- {
- memmove((void *)(s + length), (const void *)s, strlen(s) + 1);
-
- for (i = 0; i < length; i++)
- *p++ = ' ';
- }
-
- return s;
-}
-
-static void rmline(WINDOW *win, int nr) /* keeps box lines intact */
-{
- mvwaddstr(win, nr, 1, padstr(" ", bw - 2));
- wrefresh(win);
-}
-
-static void initcolor(void)
-{
-#ifdef A_COLOR
- if (has_colors())
- start_color();
-
- /* foreground, background */
-
- init_pair(TITLECOLOR & ~A_ATTR, COLOR_BLACK, COLOR_CYAN);
- init_pair(MAINMENUCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN);
- init_pair(MAINMENUREVCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK);
- init_pair(SUBMENUCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN);
- init_pair(SUBMENUREVCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK);
- init_pair(BODYCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLUE);
- init_pair(STATUSCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN);
- init_pair(INPUTBOXCOLOR & ~A_ATTR, COLOR_BLACK, COLOR_CYAN);
- init_pair(EDITBOXCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK);
-#endif
-}
-
-static void setcolor(WINDOW *win, chtype color)
-{
- chtype attr = color & A_ATTR; /* extract Bold, Reverse, Blink bits */
-
-#ifdef A_COLOR
- attr &= ~A_REVERSE; /* ignore reverse, use colors instead! */
- wattrset(win, COLOR_PAIR(color & A_CHARTEXT) | attr);
-#else
- attr &= ~A_BOLD; /* ignore bold, gives messy display on HP-UX */
- wattrset(win, attr);
-#endif
-}
-
-static void colorbox(WINDOW *win, chtype color, int hasbox)
-{
- int maxy;
-#ifndef PDCURSES
- int maxx;
-#endif
- chtype attr = color & A_ATTR; /* extract Bold, Reverse, Blink bits */
-
- setcolor(win, color);
-
-#ifdef A_COLOR
- if (has_colors())
- wbkgd(win, COLOR_PAIR(color & A_CHARTEXT) | (attr & ~A_REVERSE));
- else
-#endif
- wbkgd(win, attr);
-
- werase(win);
-
-#ifdef PDCURSES
- maxy = getmaxy(win);
-#else
- getmaxyx(win, maxy, maxx);
-#endif
- if (hasbox && (maxy > 2))
- box(win, 0, 0);
-
- touchwin(win);
- wrefresh(win);
-}
-
-static void idle(void)
-{
- char buf[MAXSTRLEN];
- time_t t;
- struct tm *tp;
-
- if (time (&t) == -1)
- return; /* time not available */
-
- tp = localtime(&t);
- sprintf(buf, " %.2d-%.2d-%.4d %.2d:%.2d:%.2d",
- tp->tm_mday, tp->tm_mon + 1, tp->tm_year + 1900,
- tp->tm_hour, tp->tm_min, tp->tm_sec);
-
- mvwaddstr(wtitl, 0, bw - strlen(buf) - 2, buf);
- wrefresh(wtitl);
-}
-
-static void menudim(menu *mp, int *lines, int *columns)
-{
- int n, l, mmax = 0;
-
- for (n=0; mp->func; n++, mp++)
- if ((l = strlen(mp->name)) > mmax) mmax = l;
-
- *lines = n;
- *columns = mmax + 2;
-}
-
-static void setmenupos(int y, int x)
-{
- nexty = y;
- nextx = x;
-}
-
-static void getmenupos(int *y, int *x)
-{
- *y = nexty;
- *x = nextx;
-}
-
-static int hotkey(const char *s)
-{
- int c0 = *s; /* if no upper case found, return first char */
-
- for (; *s; s++)
- if (isupper((unsigned char)*s))
- break;
-
- return *s ? *s : c0;
-}
-
-static void repaintmenu(WINDOW *wmenu, menu *mp)
-{
- int i;
- menu *p = mp;
-
- for (i = 0; p->func; i++, p++)
- mvwaddstr(wmenu, i + 1, 2, p->name);
-
- touchwin(wmenu);
- wrefresh(wmenu);
-}
-
-static void repaintmainmenu(int width, menu *mp)
-{
- int i;
- menu *p = mp;
-
- for (i = 0; p->func; i++, p++)
- mvwaddstr(wmain, 0, i * width, prepad(padstr(p->name, width - 1), 1));
-
- touchwin(wmain);
- wrefresh(wmain);
-}
-
-static void mainhelp(void)
-{
-#ifdef ALT_X
- statusmsg("Use arrow keys and Enter to select (Alt-X to quit)");
-#else
- statusmsg("Use arrow keys and Enter to select");
-#endif
-}
-
-static void mainmenu(menu *mp)
-{
- int nitems, barlen, old = -1, cur = 0, c, cur0;
-
- menudim(mp, &nitems, &barlen);
- repaintmainmenu(barlen, mp);
-
- while (!quit)
- {
- if (cur != old)
- {
- if (old != -1)
- {
- mvwaddstr(wmain, 0, old * barlen,
- prepad(padstr(mp[old].name, barlen - 1), 1));
-
- statusmsg(mp[cur].desc);
- }
- else
- mainhelp();
-
- setcolor(wmain, MAINMENUREVCOLOR);
-
- mvwaddstr(wmain, 0, cur * barlen,
- prepad(padstr(mp[cur].name, barlen - 1), 1));
-
- setcolor(wmain, MAINMENUCOLOR);
- old = cur;
- wrefresh(wmain);
- }
-
- switch (c = (key != ERR ? key : waitforkey()))
- {
- case KEY_DOWN:
- case '\n': /* menu item selected */
- touchwin(wbody);
- wrefresh(wbody);
- rmerror();
- setmenupos(th + mh, cur * barlen);
- curs_set(1);
- (mp[cur].func)(); /* perform function */
- curs_set(0);
-
- switch (key)
- {
- case KEY_LEFT:
- cur = (cur + nitems - 1) % nitems;
- key = '\n';
- break;
-
- case KEY_RIGHT:
- cur = (cur + 1) % nitems;
- key = '\n';
- break;
-
- default:
- key = ERR;
- }
-
- repaintmainmenu(barlen, mp);
- old = -1;
- break;
-
- case KEY_LEFT:
- cur = (cur + nitems - 1) % nitems;
- break;
-
- case KEY_RIGHT:
- cur = (cur + 1) % nitems;
- break;
-
- case KEY_ESC:
- mainhelp();
- break;
-
- default:
- cur0 = cur;
-
- do
- {
- cur = (cur + 1) % nitems;
-
- } while ((cur != cur0) && (hotkey(mp[cur].name) != toupper(c)));
-
- if (hotkey(mp[cur].name) == toupper(c))
- key = '\n';
- }
-
- }
-
- rmerror();
- touchwin(wbody);
- wrefresh(wbody);
-}
-
-static void cleanup(void) /* cleanup curses settings */
-{
- if (incurses)
- {
- delwin(wtitl);
- delwin(wmain);
- delwin(wbody);
- delwin(wstat);
- curs_set(1);
- endwin();
- incurses = FALSE;
- }
-}
-
-
-/******************************* EXTERNAL **********************************/
-
-void clsbody(void)
-{
- werase(wbody);
- wmove(wbody, 0, 0);
-}
-
-int bodylen(void)
-{
-#ifdef PDCURSES
- return getmaxy(wbody);
-#else
- int maxy, maxx;
-
- getmaxyx(wbody, maxy, maxx);
- return maxy;
-#endif
-}
-
-WINDOW *bodywin(void)
-{
- return wbody;
-}
-
-void rmerror(void)
-{
- rmline(wstat, 0);
-}
-
-void rmstatus(void)
-{
- rmline(wstat, 1);
-}
-
-void titlemsg(char *msg)
-{
- mvwaddstr(wtitl, 0, 2, padstr(msg, bw - 3));
- wrefresh(wtitl);
-}
-
-void bodymsg(char *msg)
-{
- waddstr(wbody, msg);
- wrefresh(wbody);
-}
-
-void errormsg(char *msg)
-{
- beep();
- mvwaddstr(wstat, 0, 2, padstr(msg, bw - 3));
- wrefresh(wstat);
-}
-
-void statusmsg(char *msg)
-{
- mvwaddstr(wstat, 1, 2, padstr(msg, bw - 3));
- wrefresh(wstat);
-}
-
-bool keypressed(void)
-{
- ch = wgetch(wbody);
-
- return ch != ERR;
-}
-
-int getkey(void)
-{
- int c = ch;
-
- ch = ERR;
-#ifdef ALT_X
- quit = (c == ALT_X); /* PC only ! */
-#endif
- return c;
-}
-
-int waitforkey(void)
-{
- do idle(); while (!keypressed());
- return getkey();
-}
-
-void DoExit(void) /* terminate program */
-{
- quit = TRUE;
-}
-
-void domenu(menu *mp)
-{
- int y, x, nitems, barlen, mheight, mw, old = -1, cur = 0, cur0;
- bool stop = FALSE;
- WINDOW *wmenu;
-
- curs_set(0);
- getmenupos(&y, &x);
- menudim(mp, &nitems, &barlen);
- mheight = nitems + 2;
- mw = barlen + 2;
- wmenu = newwin(mheight, mw, y, x);
- colorbox(wmenu, SUBMENUCOLOR, 1);
- repaintmenu(wmenu, mp);
-
- key = ERR;
-
- while (!stop && !quit)
- {
- if (cur != old)
- {
- if (old != -1)
- mvwaddstr(wmenu, old + 1, 1,
- prepad(padstr(mp[old].name, barlen - 1), 1));
-
- setcolor(wmenu, SUBMENUREVCOLOR);
- mvwaddstr(wmenu, cur + 1, 1,
- prepad(padstr(mp[cur].name, barlen - 1), 1));
-
- setcolor(wmenu, SUBMENUCOLOR);
- statusmsg(mp[cur].desc);
-
- old = cur;
- wrefresh(wmenu);
- }
-
- switch (key = ((key != ERR) ? key : waitforkey()))
- {
- case '\n': /* menu item selected */
- touchwin(wbody);
- wrefresh(wbody);
- setmenupos(y + 1, x + 1);
- rmerror();
-
- key = ERR;
- curs_set(1);
- (mp[cur].func)(); /* perform function */
- curs_set(0);
-
- repaintmenu(wmenu, mp);
-
- old = -1;
- break;
-
- case KEY_UP:
- cur = (cur + nitems - 1) % nitems;
- key = ERR;
- break;
-
- case KEY_DOWN:
- cur = (cur + 1) % nitems;
- key = ERR;
- break;
-
- case KEY_ESC:
- case KEY_LEFT:
- case KEY_RIGHT:
- if (key == KEY_ESC)
- key = ERR; /* return to prev submenu */
-
- stop = TRUE;
- break;
-
- default:
- cur0 = cur;
-
- do
- {
- cur = (cur + 1) % nitems;
-
- } while ((cur != cur0) &&
- (hotkey(mp[cur].name) != toupper((int)key)));
-
- key = (hotkey(mp[cur].name) == toupper((int)key)) ? '\n' : ERR;
- }
-
- }
-
- rmerror();
- delwin(wmenu);
- touchwin(wbody);
- wrefresh(wbody);
-}
-
-void startmenu(menu *mp, char *mtitle)
-{
- initscr();
- incurses = TRUE;
- initcolor();
-
- wtitl = subwin(stdscr, th, bw, 0, 0);
- wmain = subwin(stdscr, mh, bw, th, 0);
- wbody = subwin(stdscr, bh, bw, th + mh, 0);
- wstat = subwin(stdscr, sh, bw, th + mh + bh, 0);
-
- colorbox(wtitl, TITLECOLOR, 0);
- colorbox(wmain, MAINMENUCOLOR, 0);
- colorbox(wbody, BODYCOLOR, 0);
- colorbox(wstat, STATUSCOLOR, 0);
-
- if (mtitle)
- titlemsg(mtitle);
-
- cbreak(); /* direct input (no newline required)... */
- noecho(); /* ... without echoing */
- curs_set(0); /* hide cursor (if possible) */
- nodelay(wbody, TRUE); /* don't wait for input... */
- halfdelay(10); /* ...well, no more than a second, anyway */
- keypad(wbody, TRUE); /* enable cursor keys */
- scrollok(wbody, TRUE); /* enable scrolling in main window */
-
- leaveok(stdscr, TRUE);
- leaveok(wtitl, TRUE);
- leaveok(wmain, TRUE);
- leaveok(wstat, TRUE);
-
- mainmenu(mp);
-
- cleanup();
-}
-
-static void repainteditbox(WINDOW *win, int x, char *buf)
-{
-#ifndef PDCURSES
- int maxy;
-#endif
- int maxx;
-
-#ifdef PDCURSES
- maxx = getmaxx(win);
-#else
- getmaxyx(win, maxy, maxx);
-#endif
- werase(win);
- mvwprintw(win, 0, 0, "%s", padstr(buf, maxx));
- wmove(win, 0, x);
- wrefresh(win);
-}
-
-/*
-
- weditstr() - edit string
-
- Description:
- The initial value of 'str' with a maximum length of 'field' - 1,
- which is supplied by the calling routine, is editted. The user's
- erase (^H), kill (^U) and delete word (^W) chars are interpreted.
- The PC insert or Tab keys toggle between insert and edit mode.
- Escape aborts the edit session, leaving 'str' unchanged.
- Enter, Up or Down Arrow are used to accept the changes to 'str'.
- NOTE: editstr(), mveditstr(), and mvweditstr() are macros.
-
- Return Value:
- Returns the input terminating character on success (Escape,
- Enter, Up or Down Arrow) and ERR on error.
-
- Errors:
- It is an error to call this function with a NULL window pointer.
- The length of the initial 'str' must not exceed 'field' - 1.
-
-*/
-
-int weditstr(WINDOW *win, char *buf, int field)
-{
- char org[MAXSTRLEN], *tp, *bp = buf;
- bool defdisp = TRUE, stop = FALSE, insert = FALSE;
- int cury, curx, begy, begx, oldattr;
- WINDOW *wedit;
- int c = 0;
-
- if ((field >= MAXSTRLEN) || (buf == NULL) ||
- ((int)strlen(buf) > field - 1))
- return ERR;
-
- strcpy(org, buf); /* save original */
-
- wrefresh(win);
- getyx(win, cury, curx);
- getbegyx(win, begy, begx);
-
- wedit = subwin(win, 1, field, begy + cury, begx + curx);
- oldattr = wedit->_attrs;
- colorbox(wedit, EDITBOXCOLOR, 0);
-
- keypad(wedit, TRUE);
- curs_set(1);
-
- while (!stop)
- {
- idle();
- repainteditbox(wedit, bp - buf, buf);
-
- switch (c = wgetch(wedit))
- {
- case ERR:
- break;
-
- case KEY_ESC:
- strcpy(buf, org); /* restore original */
- stop = TRUE;
- break;
-
- case '\n':
- case KEY_UP:
- case KEY_DOWN:
- stop = TRUE;
- break;
-
- case KEY_LEFT:
- if (bp > buf)
- bp--;
- break;
-
- case KEY_RIGHT:
- defdisp = FALSE;
- if (bp - buf < (int)strlen(buf))
- bp++;
- break;
-
- case '\t': /* TAB -- because insert
- is broken on HPUX */
- case KEY_IC: /* enter insert mode */
- case KEY_EIC: /* exit insert mode */
- defdisp = FALSE;
- insert = !insert;
-
- curs_set(insert ? 2 : 1);
- break;
-
- default:
- if (c == erasechar()) /* backspace, ^H */
- {
- if (bp > buf)
- {
- memmove((void *)(bp - 1), (const void *)bp, strlen(bp) + 1);
- bp--;
- }
- }
- else if (c == killchar()) /* ^U */
- {
- bp = buf;
- *bp = '\0';
- }
- else if (c == wordchar()) /* ^W */
- {
- tp = bp;
-
- while ((bp > buf) && (*(bp - 1) == ' '))
- bp--;
- while ((bp > buf) && (*(bp - 1) != ' '))
- bp--;
-
- memmove((void *)bp, (const void *)tp, strlen(tp) + 1);
- }
- else if (isprint(c))
- {
- if (defdisp)
- {
- bp = buf;
- *bp = '\0';
- defdisp = FALSE;
- }
-
- if (insert)
- {
- if ((int)strlen(buf) < field - 1)
- {
- memmove((void *)(bp + 1), (const void *)bp,
- strlen(bp) + 1);
-
- *bp++ = c;
- }
- }
- else if (bp - buf < field - 1)
- {
- /* append new string terminator */
-
- if (!*bp)
- bp[1] = '\0';
-
- *bp++ = c;
- }
- }
- }
- }
-
- curs_set(0);
-
- wattrset(wedit, oldattr);
- repainteditbox(wedit, bp - buf, buf);
- delwin(wedit);
-
- return c;
-}
-
-WINDOW *winputbox(WINDOW *win, int nlines, int ncols)
-{
- WINDOW *winp;
- int cury, curx, begy, begx;
-
- getyx(win, cury, curx);
- getbegyx(win, begy, begx);
-
- winp = newwin(nlines, ncols, begy + cury, begx + curx);
- colorbox(winp, INPUTBOXCOLOR, 1);
-
- return winp;
-}
-
-int getstrings(char *desc[], char *buf[], int field)
-{
- WINDOW *winput;
- int oldy, oldx, maxy, maxx, nlines, ncols, i, n, l, mmax = 0;
- int c = 0;
- bool stop = FALSE;
-
- for (n = 0; desc[n]; n++)
- if ((l = strlen(desc[n])) > mmax)
- mmax = l;
-
- nlines = n + 2; ncols = mmax + field + 4;
- getyx(wbody, oldy, oldx);
- getmaxyx(wbody, maxy, maxx);
-
- winput = mvwinputbox(wbody, (maxy - nlines) / 2, (maxx - ncols) / 2,
- nlines, ncols);
-
- for (i = 0; i < n; i++)
- mvwprintw(winput, i + 1, 2, "%s", desc[i]);
-
- i = 0;
-
- while (!stop)
- {
- switch (c = mvweditstr(winput, i+1, mmax+3, buf[i], field))
- {
- case KEY_ESC:
- stop = TRUE;
- break;
-
- case KEY_UP:
- i = (i + n - 1) % n;
- break;
-
- case '\n':
- case '\t':
- case KEY_DOWN:
- if (++i == n)
- stop = TRUE; /* all passed? */
- }
- }
-
- delwin(winput);
- touchwin(wbody);
- wmove(wbody, oldy, oldx);
- wrefresh(wbody);
-
- return c;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/tui.h b/payloads/libpayload/curses/PDCurses-3.4/demos/tui.h
deleted file mode 100644
index 7be9123..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/tui.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 'textual user interface'
- *
- * $Id: tui.h,v 1.11 2008/07/14 12:35:23 wmcbrine Exp $
- *
- * Author : P.J. Kunst <kunst at prl.philips.nl>
- * Date : 25-02-93
- */
-
-#ifndef _TUI_H_
-#define _TUI_H_
-
-#include <curses.h>
-
-#ifdef A_COLOR
-#define A_ATTR (A_ATTRIBUTES ^ A_COLOR) /* A_BLINK, A_REVERSE, A_BOLD */
-#else
-#define A_ATTR (A_ATTRIBUTES) /* standard UNIX attributes */
-#endif
-
-#define MAXSTRLEN 256
-#define KEY_ESC 0x1b /* Escape */
-
-typedef void (*FUNC)(void);
-
-typedef struct
-{
- char *name; /* item label */
- FUNC func; /* (pointer to) function */
- char *desc; /* function description */
-} menu;
-
-/* ANSI C function prototypes: */
-
-void clsbody(void);
-int bodylen(void);
-WINDOW *bodywin(void);
-
-void rmerror(void);
-void rmstatus(void);
-
-void titlemsg(char *msg);
-void bodymsg(char *msg);
-void errormsg(char *msg);
-void statusmsg(char *msg);
-
-bool keypressed(void);
-int getkey(void);
-int waitforkey(void);
-
-void DoExit(void);
-void startmenu(menu *mp, char *title);
-void domenu(menu *mp);
-
-int weditstr(WINDOW *win, char *buf, int field);
-WINDOW *winputbox(WINDOW *win, int nlines, int ncols);
-int getstrings(char *desc[], char *buf[], int field);
-
-#define editstr(s,f) (weditstr(stdscr,s,f))
-#define mveditstr(y,x,s,f) (move(y,x)==ERR?ERR:editstr(s,f))
-#define mvweditstr(w,y,x,s,f) (wmove(w,y,x)==ERR?ERR:weditstr(w,s,f))
-
-#define inputbox(l,c) (winputbox(stdscr,l,c))
-#define mvinputbox(y,x,l,c) (move(y,x)==ERR?w:inputbox(l,c))
-#define mvwinputbox(w,y,x,l,c) (wmove(w,y,x)==ERR?w:winputbox(w,l,c))
-
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/tuidemo.c b/payloads/libpayload/curses/PDCurses-3.4/demos/tuidemo.c
deleted file mode 100644
index 6f4d9f2..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/tuidemo.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * $Id: tuidemo.c,v 1.22 2008/07/14 12:35:23 wmcbrine Exp $
- *
- * Author : P.J. Kunst <kunst at prl.philips.nl>
- * Date : 25-02-93
- *
- * Purpose: This program demonstrates the use of the 'curses' library
- * for the creation of (simple) menu-operated programs.
- * In the PDCurses version, use is made of colors for the
- * highlighting of subwindows (title bar, status bar etc).
- *
- * Acknowledgement: some ideas were borrowed from Mark Hessling's
- * version of the 'testcurs' program.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-#include "tui.h"
-
-/* change this if source at other location */
-
-#ifdef XCURSES
-# define FNAME "../demos/tui.c"
-#else
-# define FNAME "..\\demos\\tui.c"
-#endif
-
-/**************************** strings entry box ***************************/
-
-void address(void)
-{
- char *fieldname[6] =
- {
- "Name", "Street", "City", "State", "Country", (char *)0
- };
-
- char *fieldbuf[5];
- WINDOW *wbody = bodywin();
- int i, field = 50;
-
- for (i = 0; i < 5; i++)
- fieldbuf[i] = calloc(1, field + 1);
-
- if (getstrings(fieldname, fieldbuf, field) != KEY_ESC)
- {
- for (i = 0; fieldname[i]; i++)
- wprintw(wbody, "%10s : %s\n",
- fieldname[i], fieldbuf[i]);
-
- wrefresh(wbody);
- }
-
- for (i = 0; i < 5; i++)
- free(fieldbuf[i]);
-}
-
-/**************************** string entry box ****************************/
-
-char *getfname(char *desc, char *fname, int field)
-{
- char *fieldname[2];
- char *fieldbuf[1];
-
- fieldname[0] = desc;
- fieldname[1] = 0;
- fieldbuf[0] = fname;
-
- return (getstrings(fieldname, fieldbuf, field) == KEY_ESC) ? NULL : fname;
-}
-
-/**************************** a very simple file browser ******************/
-
-void showfile(char *fname)
-{
- int i, bh = bodylen();
- FILE *fp;
- char buf[MAXSTRLEN];
- bool ateof = FALSE;
-
- statusmsg("FileBrowser: Hit key to continue, Q to quit");
-
- if ((fp = fopen(fname, "r")) != NULL) /* file available? */
- {
- while (!ateof)
- {
- clsbody();
-
- for (i = 0; i < bh - 1 && !ateof; i++)
- {
- buf[0] = '\0';
- fgets(buf, MAXSTRLEN, fp);
-
- if (strlen(buf))
- bodymsg(buf);
- else
- ateof = TRUE;
- }
-
- switch (waitforkey())
- {
- case 'Q':
- case 'q':
- case 0x1b:
- ateof = TRUE;
- }
- }
-
- fclose(fp);
- }
- else
- {
- sprintf(buf, "ERROR: file '%s' not found", fname);
- errormsg(buf);
- }
-}
-
-/***************************** forward declarations ***********************/
-
-void sub0(void), sub1(void), sub2(void), sub3(void);
-void func1(void), func2(void);
-void subfunc1(void), subfunc2(void);
-void subsub(void);
-
-/***************************** menus initialization ***********************/
-
-menu MainMenu[] =
-{
- { "Asub", sub0, "Go inside first submenu" },
- { "Bsub", sub1, "Go inside second submenu" },
- { "Csub", sub2, "Go inside third submenu" },
- { "Dsub", sub3, "Go inside fourth submenu" },
- { "", (FUNC)0, "" } /* always add this as the last item! */
-};
-
-menu SubMenu0[] =
-{
- { "Exit", DoExit, "Terminate program" },
- { "", (FUNC)0, "" }
-};
-
-menu SubMenu1[] =
-{
- { "OneBeep", func1, "Sound one beep" },
- { "TwoBeeps", func2, "Sound two beeps" },
- { "", (FUNC)0, "" }
-};
-
-menu SubMenu2[] =
-{
- { "Browse", subfunc1, "Source file lister" },
- { "Input", subfunc2, "Interactive file lister" },
- { "Address", address, "Get address data" },
- { "", (FUNC)0, "" }
-};
-
-menu SubMenu3[] =
-{
- { "SubSub", subsub, "Go inside sub-submenu" },
- { "", (FUNC)0, "" }
-};
-
-/***************************** main menu functions ************************/
-
-void sub0(void)
-{
- domenu(SubMenu0);
-}
-
-void sub1(void)
-{
- domenu(SubMenu1);
-}
-
-void sub2(void)
-{
- domenu(SubMenu2);
-}
-
-void sub3(void)
-{
- domenu(SubMenu3);
-}
-
-/***************************** submenu1 functions *************************/
-
-void func1(void)
-{
- beep();
- bodymsg("One beep! ");
-}
-
-void func2(void)
-{
- beep();
- bodymsg("Two beeps! ");
- beep();
-}
-
-/***************************** submenu2 functions *************************/
-
-void subfunc1(void)
-{
- showfile(FNAME);
-}
-
-void subfunc2(void)
-{
- char fname[MAXSTRLEN];
-
- strcpy(fname, FNAME);
- if (getfname ("File to browse:", fname, 50))
- showfile(fname);
-}
-
-/***************************** submenu3 functions *************************/
-
-void subsub(void)
-{
- domenu(SubMenu2);
-}
-
-/***************************** start main menu ***************************/
-
-int main(int argc, char **argv)
-{
- setlocale(LC_ALL, "");
-
- startmenu(MainMenu, "TUI - 'textual user interface' demonstration program");
-
- return 0;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/worm.c b/payloads/libpayload/curses/PDCurses-3.4/demos/worm.c
deleted file mode 100644
index 5a823f9..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/worm.c
+++ /dev/null
@@ -1,434 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2005 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/*
-
- @@@ @@@ @@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@
- @@@ @@@ @@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@
- @@@ @@@ @@@@ @@@@ @@@@ @@@@ @@@ @@@@
- @@@ @@ @@@ @@@ @@@ @@@ @@@ @@@ @@@
- @@@ @@@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@
- @@@@ @@@@ @@@@ @@@ @@@ @@@ @@@ @@@ @@@
- @@@@@@@@@@@@ @@@@ @@@@ @@@ @@@ @@@ @@@
- @@@@ @@@@ @@@@@@@@@@@@ @@@ @@@ @@@ @@@
- @@ @@ @@@@@@@@@@ @@@ @@@ @@@ @@@
-
- Eric P. Scott
- Caltech High Energy Physics
- October, 1980
-
- Color by Eric S. Raymond
- July, 1995
-
-Options:
- -f fill screen with copies of 'WORM' at start.
- -l <n> set worm length
- -n <n> set number of worms
- -t make worms leave droppings
-
- $Id: worm.c,v 1.16 2008/07/13 16:08:17 wmcbrine Exp $
-*/
-
-#include <curses.h>
-#include <stdlib.h>
-#include <time.h>
-
-#define FLAVORS 7
-
-static chtype flavor[FLAVORS] =
-{
- 'O', '*', '#', '$', '%', '0', '@'
-};
-
-static const short xinc[] =
-{
- 1, 1, 1, 0, -1, -1, -1, 0
-},
-yinc[] =
-{
- -1, 0, 1, 1, 1, 0, -1, -1
-};
-
-static struct worm
-{
- int orientation, head;
- short *xpos, *ypos;
-} worm[40];
-
-static const char *field;
-static int length = 16, number = 3;
-static chtype trail = ' ';
-
-static const struct options
-{
- int nopts;
- int opts[3];
-} normal[8] =
-{
- { 3, { 7, 0, 1 } }, { 3, { 0, 1, 2 } }, { 3, { 1, 2, 3 } },
- { 3, { 2, 3, 4 } }, { 3, { 3, 4, 5 } }, { 3, { 4, 5, 6 } },
- { 3, { 5, 6, 7 } }, { 3, { 6, 7, 0 } }
-},
-upper[8] =
-{
- { 1, { 1, 0, 0 } }, { 2, { 1, 2, 0 } }, { 0, { 0, 0, 0 } },
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 2, { 4, 5, 0 } },
- { 1, { 5, 0, 0 } }, { 2, { 1, 5, 0 } }
-},
-left[8] =
-{
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
- { 2, { 2, 3, 0 } }, { 1, { 3, 0, 0 } }, { 2, { 3, 7, 0 } },
- { 1, { 7, 0, 0 } }, { 2, { 7, 0, 0 } }
-},
-right[8] =
-{
- { 1, { 7, 0, 0 } }, { 2, { 3, 7, 0 } }, { 1, { 3, 0, 0 } },
- { 2, { 3, 4, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
- { 0, { 0, 0, 0 } }, { 2, { 6, 7, 0 } }
-},
-lower[8] =
-{
- { 0, { 0, 0, 0 } }, { 2, { 0, 1, 0 } }, { 1, { 1, 0, 0 } },
- { 2, { 1, 5, 0 } }, { 1, { 5, 0, 0 } }, { 2, { 5, 6, 0 } },
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }
-},
-upleft[8] =
-{
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 1, { 3, 0, 0 } },
- { 2, { 1, 3, 0 } }, { 1, { 1, 0, 0 } }
-},
-upright[8] =
-{
- { 2, { 3, 5, 0 } }, { 1, { 3, 0, 0 } }, { 0, { 0, 0, 0 } },
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
- { 0, { 0, 0, 0 } }, { 1, { 5, 0, 0 } }
-},
-lowleft[8] =
-{
- { 3, { 7, 0, 1 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
- { 1, { 1, 0, 0 } }, { 2, { 1, 7, 0 } }, { 1, { 7, 0, 0 } },
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }
-},
-lowright[8] =
-{
- { 0, { 0, 0, 0 } }, { 1, { 7, 0, 0 } }, { 2, { 5, 7, 0 } },
- { 1, { 5, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
- { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }
-};
-
-static void cleanup(void)
-{
- standend();
- refresh();
- curs_set(1);
- endwin();
-}
-
-int main(int argc, char *argv[])
-{
- const struct options *op;
- struct worm *w;
- short **ref, *ip;
- int x, y, n, h, last, bottom, seed;
-
- for (x = 1; x < argc; x++)
- {
- char *p = argv[x];
-
- if (*p == '-')
- p++;
-
- switch (*p)
- {
- case 'f':
- field = "WORM";
- break;
- case 'l':
- if (++x == argc)
- goto usage;
-
- if ((length = atoi(argv[x])) < 2 || length > 1024)
- {
- fprintf(stderr, "%s: Invalid length\n", *argv);
- return EXIT_FAILURE;
- }
-
- break;
- case 'n':
- if (++x == argc)
- goto usage;
-
- if ((number = atoi(argv[x])) < 1 || number > 40)
- {
- fprintf(stderr, "%s: Invalid number of worms\n", *argv);
- return EXIT_FAILURE;
- }
-
- break;
- case 't':
- trail = '.';
- break;
- default:
- usage:
- fprintf(stderr, "usage: %s [-field] [-length #] "
- "[-number #] [-trail]\n", *argv);
- return EXIT_FAILURE;
- }
- }
-
-#ifdef XCURSES
- Xinitscr(argc, argv);
-#else
- initscr();
-#endif
- seed = time((time_t *)0);
- srand(seed);
-
- noecho();
- cbreak();
- nonl();
- keypad(stdscr, TRUE);
-
- curs_set(0);
-
- bottom = LINES - 1;
- last = COLS - 1;
-
-#ifdef A_COLOR
- if (has_colors())
- {
- int bg = COLOR_BLACK;
- start_color();
-
-# if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
- if (use_default_colors() == OK)
- bg = -1;
-# endif
-
-# define SET_COLOR(num, fg) \
- init_pair(num + 1, fg, bg); \
- flavor[num] |= COLOR_PAIR(num + 1) | A_BOLD
-
- SET_COLOR(0, COLOR_GREEN);
- SET_COLOR(1, COLOR_RED);
- SET_COLOR(2, COLOR_CYAN);
- SET_COLOR(3, COLOR_WHITE);
- SET_COLOR(4, COLOR_MAGENTA);
- SET_COLOR(5, COLOR_BLUE);
- SET_COLOR(6, COLOR_YELLOW);
- }
-#endif
-
- ref = malloc(sizeof(short *) * LINES);
-
- for (y = 0; y < LINES; y++)
- {
- ref[y] = malloc(sizeof(short) * COLS);
-
- for (x = 0; x < COLS; x++)
- ref[y][x] = 0;
- }
-
-#ifdef BADCORNER
- /* if addressing the lower right corner doesn't work in your curses */
-
- ref[bottom][last] = 1;
-#endif
-
- for (n = number, w = &worm[0]; --n >= 0; w++)
- {
- w->orientation = w->head = 0;
-
- if ((ip = malloc(sizeof(short) * (length + 1))) == NULL)
- {
- fprintf(stderr, "%s: out of memory\n", *argv);
- return EXIT_FAILURE;
- }
-
- w->xpos = ip;
-
- for (x = length; --x >= 0;)
- *ip++ = -1;
-
- if ((ip = malloc(sizeof(short) * (length + 1))) == NULL)
- {
- fprintf(stderr, "%s: out of memory\n", *argv);
- return EXIT_FAILURE;
- }
-
- w->ypos = ip;
-
- for (y = length; --y >= 0;)
- *ip++ = -1;
- }
-
- if (field)
- {
- const char *p = field;
-
- for (y = bottom; --y >= 0;)
- for (x = COLS; --x >= 0;)
- {
- addch((chtype) (*p++));
-
- if (!*p)
- p = field;
- }
- }
-
- napms(12);
- refresh();
- nodelay(stdscr, TRUE);
-
- for (;;)
- {
- int ch;
-
- if ((ch = getch()) > 0)
- {
-#ifdef KEY_RESIZE
- if (ch == KEY_RESIZE)
- {
-# ifdef PDCURSES
- resize_term(0, 0);
- erase();
-# endif
- if (last != COLS - 1)
- {
- for (y = 0; y <= bottom; y++)
- {
- ref[y] = realloc(ref[y], sizeof(short) * COLS);
-
- for (x = last + 1; x < COLS; x++)
- ref[y][x] = 0;
- }
-
- last = COLS - 1;
- }
-
- if (bottom != LINES - 1)
- {
- for (y = LINES; y <= bottom; y++)
- free(ref[y]);
-
- ref = realloc(ref, sizeof(short *) * LINES);
-
- for (y = bottom + 1; y < LINES; y++)
- {
- ref[y] = malloc(sizeof(short) * COLS);
-
- for (x = 0; x < COLS; x++)
- ref[y][x] = 0;
- }
-
- bottom = LINES - 1;
- }
- }
-
-#endif /* KEY_RESIZE */
-
- /* Make it simple to put this into single-step mode,
- or resume normal operation - T. Dickey */
-
- if (ch == 'q')
- {
- cleanup();
- return EXIT_SUCCESS;
- }
- else if (ch == 's')
- nodelay(stdscr, FALSE);
- else if (ch == ' ')
- nodelay(stdscr, TRUE);
- }
-
- for (n = 0, w = &worm[0]; n < number; n++, w++)
- {
- if ((x = w->xpos[h = w->head]) < 0)
- {
- move(y = w->ypos[h] = bottom, x = w->xpos[h] = 0);
- addch(flavor[n % FLAVORS]);
- ref[y][x]++;
- }
- else
- y = w->ypos[h];
-
- if (x > last)
- x = last;
-
- if (y > bottom)
- y = bottom;
-
- if (++h == length)
- h = 0;
-
- if (w->xpos[w->head = h] >= 0)
- {
- int x1 = w->xpos[h];
- int y1 = w->ypos[h];
-
- if (y1 < LINES && x1 < COLS && --ref[y1][x1] == 0)
- {
- move(y1, x1);
- addch(trail);
- }
- }
-
- op = &(x == 0 ? (y == 0 ? upleft :
- (y == bottom ? lowleft : left)) :
- (x == last ? (y == 0 ? upright :
- (y == bottom ? lowright : right)) :
- (y == 0 ? upper :
- (y == bottom ? lower : normal))))
- [w->orientation];
-
- switch (op->nopts)
- {
- case 0:
- cleanup();
- return EXIT_SUCCESS;
- case 1:
- w->orientation = op->opts[0];
- break;
- default:
- w->orientation = op->opts[rand() % op->nopts];
- }
-
- move(y += yinc[w->orientation], x += xinc[w->orientation]);
-
- if (y < 0)
- y = 0;
-
- addch(flavor[n % FLAVORS]);
- ref[w->ypos[h] = y][w->xpos[h] = x]++;
- }
- napms(12);
- refresh();
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/demos/xmas.c b/payloads/libpayload/curses/PDCurses-3.4/demos/xmas.c
deleted file mode 100644
index 706858a..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/demos/xmas.c
+++ /dev/null
@@ -1,957 +0,0 @@
-/******************************************************************************/
-/* asciixmas */
-/* December 1989 Larry Bartz Indianapolis, IN */
-/* */
-/* */
-/* I'm dreaming of an ascii character-based monochrome Christmas, */
-/* Just like the one's I used to know! */
-/* Via a full duplex communications channel, */
-/* At 9600 bits per second, */
-/* Even though it's kinda slow. */
-/* */
-/* I'm dreaming of an ascii character-based monochrome Christmas, */
-/* With ev'ry C program I write! */
-/* May your screen be merry and bright! */
-/* And may all your Christmases be amber or green, */
-/* (for reduced eyestrain and improved visibility)! */
-/* */
-/* */
-/* */
-/* IMPLEMENTATION */
-/* */
-/* Feel free to modify the defined string FROMWHO to reflect you, your */
-/* organization, your site, whatever. */
-/* */
-/* This looks a lot better if you can turn off your cursor before execution. */
-/* The cursor is distracting but it doesn't really ruin the show. */
-/* */
-/* At our site, we invoke this for our users just after login and the */
-/* determination of terminal type. */
-/* */
-/* */
-/* PORTABILITY */
-/* */
-/* I wrote this using only the very simplest curses functions so that it */
-/* might be the most portable. I was personally able to test on five */
-/* different cpu/UNIX combinations. */
-/* */
-/* */
-/* COMPILE */
-/* */
-/* usually this: */
-/* */
-/* cc -O xmas.c -lcurses -o xmas -s */
-/* */
-/******************************************************************************/
-
-/* $Id: xmas.c,v 1.29 2008/07/13 16:08:17 wmcbrine Exp $ */
-
-#include <curses.h>
-#include <signal.h>
-
-void lil(WINDOW *);
-void midtop(WINDOW *);
-void bigtop(WINDOW *);
-void bigface(WINDOW *, chtype);
-void legs1(WINDOW *);
-void legs2(WINDOW *);
-void legs3(WINDOW *);
-void legs4(WINDOW *);
-void initdeer(void);
-void boxit(void);
-void seas(void);
-void greet(void);
-void fromwho(void);
-void del_msg(void);
-void tree(void);
-void balls(void);
-void star(void);
-void strng1(void);
-void strng2(void);
-void strng3(void);
-void strng4(void);
-void strng5(void);
-void blinkit(void);
-void reindeer(void);
-
-#define FROMWHO "From Larry Bartz, Mark Hessling and William McBrine"
-
-int y_pos, x_pos;
-
-WINDOW *treescrn, *treescrn2, *treescrn3, *treescrn4, *treescrn5,
- *treescrn6, *treescrn7, *treescrn8, *dotdeer0, *stardeer0,
- *lildeer0, *lildeer1, *lildeer2, *lildeer3, *middeer0,
- *middeer1, *middeer2, *middeer3, *bigdeer0, *bigdeer1,
- *bigdeer2, *bigdeer3, *bigdeer4, *lookdeer0, *lookdeer1,
- *lookdeer2, *lookdeer3, *lookdeer4, *w_holiday, *w_del_msg;
-
-int main(int argc, char **argv)
-{
- int loopy;
-
-#ifdef XCURSES
- Xinitscr(argc, argv);
-#else
- initscr();
-#endif
- nodelay(stdscr, TRUE);
- noecho();
- nonl();
- refresh();
-
-#ifdef A_COLOR
- if (has_colors())
- start_color();
-#endif
- curs_set(0);
-
- treescrn = newwin(16, 27, 3, 53);
- treescrn2 = newwin(16, 27, 3, 53);
- treescrn3 = newwin(16, 27, 3, 53);
- treescrn4 = newwin(16, 27, 3, 53);
- treescrn5 = newwin(16, 27, 3, 53);
- treescrn6 = newwin(16, 27, 3, 53);
- treescrn7 = newwin(16, 27, 3, 53);
- treescrn8 = newwin(16, 27, 3, 53);
-
- w_holiday = newwin(1, 26, 3, 27);
-
- w_del_msg = newwin(1, 12, 23, 60);
-
- mvwaddstr(w_holiday, 0, 0, "H A P P Y H O L I D A Y S");
-
- initdeer();
-
- clear();
- werase(treescrn);
- touchwin(treescrn);
- werase(treescrn2);
- touchwin(treescrn2);
- werase(treescrn8);
- touchwin(treescrn8);
- refresh();
- napms(1000);
-
- boxit();
- del_msg();
- napms(1000);
-
- seas();
- del_msg();
- napms(1000);
-
- greet();
- del_msg();
- napms(1000);
-
- fromwho();
- del_msg();
- napms(1000);
-
- tree();
- napms(1000);
-
- balls();
- napms(1000);
-
- star();
- napms(1000);
-
- strng1();
- strng2();
- strng3();
- strng4();
- strng5();
-
- /* set up the windows for our blinking trees */
- /* **************************************** */
- /* treescrn3 */
-
- overlay(treescrn, treescrn3);
-
- /* balls */
- mvwaddch(treescrn3, 4, 18, ' ');
- mvwaddch(treescrn3, 7, 6, ' ');
- mvwaddch(treescrn3, 8, 19, ' ');
- mvwaddch(treescrn3, 11, 22, ' ');
-
- /* star */
- mvwaddch(treescrn3, 0, 12, '*');
-
- /* strng1 */
- mvwaddch(treescrn3, 3, 11, ' ');
-
- /* strng2 */
- mvwaddch(treescrn3, 5, 13, ' ');
- mvwaddch(treescrn3, 6, 10, ' ');
-
- /* strng3 */
- mvwaddch(treescrn3, 7, 16, ' ');
- mvwaddch(treescrn3, 7, 14, ' ');
-
- /* strng4 */
- mvwaddch(treescrn3, 10, 13, ' ');
- mvwaddch(treescrn3, 10, 10, ' ');
- mvwaddch(treescrn3, 11, 8, ' ');
-
- /* strng5 */
- mvwaddch(treescrn3, 11, 18, ' ');
- mvwaddch(treescrn3, 12, 13, ' ');
-
- /* treescrn4 */
-
- overlay(treescrn, treescrn4);
-
- /* balls */
- mvwaddch(treescrn4, 3, 9, ' ');
- mvwaddch(treescrn4, 4, 16, ' ');
- mvwaddch(treescrn4, 7, 6, ' ');
- mvwaddch(treescrn4, 8, 19, ' ');
- mvwaddch(treescrn4, 11, 2, ' ');
- mvwaddch(treescrn4, 12, 23, ' ');
-
- /* star */
- mvwaddch(treescrn4, 0, 12, '*' | A_STANDOUT);
-
- /* strng1 */
- mvwaddch(treescrn4, 3, 13, ' ');
-
- /* strng2 */
-
- /* strng3 */
- mvwaddch(treescrn4, 7, 15, ' ');
- mvwaddch(treescrn4, 8, 11, ' ');
-
- /* strng4 */
- mvwaddch(treescrn4, 9, 16, ' ');
- mvwaddch(treescrn4, 10, 12, ' ');
- mvwaddch(treescrn4, 11, 8, ' ');
-
- /* strng5 */
- mvwaddch(treescrn4, 11, 18, ' ');
- mvwaddch(treescrn4, 12, 14, ' ');
-
- /* treescrn5 */
-
- overlay(treescrn, treescrn5);
-
- /* balls */
- mvwaddch(treescrn5, 3, 15, ' ');
- mvwaddch(treescrn5, 10, 20, ' ');
- mvwaddch(treescrn5, 12, 1, ' ');
-
- /* star */
- mvwaddch(treescrn5, 0, 12, '*');
-
- /* strng1 */
- mvwaddch(treescrn5, 3, 11, ' ');
-
- /* strng2 */
- mvwaddch(treescrn5, 5, 12, ' ');
-
- /* strng3 */
- mvwaddch(treescrn5, 7, 14, ' ');
- mvwaddch(treescrn5, 8, 10, ' ');
-
- /* strng4 */
- mvwaddch(treescrn5, 9, 15, ' ');
- mvwaddch(treescrn5, 10, 11, ' ');
- mvwaddch(treescrn5, 11, 7, ' ');
-
- /* strng5 */
- mvwaddch(treescrn5, 11, 17, ' ');
- mvwaddch(treescrn5, 12, 13, ' ');
-
- /* treescrn6 */
-
- overlay(treescrn, treescrn6);
-
- /* balls */
- mvwaddch(treescrn6, 6, 7, ' ');
- mvwaddch(treescrn6, 7, 18, ' ');
- mvwaddch(treescrn6, 10, 4, ' ');
- mvwaddch(treescrn6, 11, 23, ' ');
-
- /* star */
- mvwaddch(treescrn6, 0, 12, '*' | A_STANDOUT);
-
- /* strng1 */
-
- /* strng2 */
- mvwaddch(treescrn6, 5, 11, ' ');
-
- /* strng3 */
- mvwaddch(treescrn6, 7, 13, ' ');
- mvwaddch(treescrn6, 8, 9, ' ');
-
- /* strng4 */
- mvwaddch(treescrn6, 9, 14, ' ');
- mvwaddch(treescrn6, 10, 10, ' ');
- mvwaddch(treescrn6, 11, 6, ' ');
-
- /* strng5 */
- mvwaddch(treescrn6, 11, 16, ' ');
- mvwaddch(treescrn6, 12, 12, ' ');
-
- /* treescrn7 */
-
- overlay(treescrn, treescrn7);
-
- /* balls */
- mvwaddch(treescrn7, 3, 15, ' ');
- mvwaddch(treescrn7, 6, 7, ' ');
- mvwaddch(treescrn7, 7, 18, ' ');
- mvwaddch(treescrn7, 10, 4, ' ');
- mvwaddch(treescrn7, 11, 22, ' ');
-
- /* star */
- mvwaddch(treescrn7, 0, 12, '*');
-
- /* strng1 */
- mvwaddch(treescrn7, 3, 12, ' ');
-
- /* strng2 */
- mvwaddch(treescrn7, 5, 13, ' ');
- mvwaddch(treescrn7, 6, 9, ' ');
-
- /* strng3 */
- mvwaddch(treescrn7, 7, 15, ' ');
- mvwaddch(treescrn7, 8, 11, ' ');
-
- /* strng4 */
- mvwaddch(treescrn7, 9, 16, ' ');
- mvwaddch(treescrn7, 10, 12, ' ');
- mvwaddch(treescrn7, 11, 8, ' ');
-
- /* strng5 */
- mvwaddch(treescrn7, 11, 18, ' ');
- mvwaddch(treescrn7, 12, 14, ' ');
-
- napms(1000);
- reindeer();
-
- touchwin(w_holiday);
- wrefresh(w_holiday);
- wrefresh(w_del_msg);
-
- napms(1000);
-
- for (loopy = 0; loopy < 50; loopy++)
- blinkit();
-
- clear();
- refresh();
- endwin();
-
- return 0;
-}
-
-void lil(WINDOW *win)
-{
- mvwaddch(win, 0, 0, (chtype) 'V');
- mvwaddch(win, 1, 0, (chtype) '@');
- mvwaddch(win, 1, 3, (chtype) '~');
-}
-
-void midtop(WINDOW *win)
-{
- mvwaddstr(win, 0, 2, "yy");
- mvwaddstr(win, 1, 2, "0(=)~");
-}
-
-void bigtop(WINDOW *win)
-{
- mvwaddstr(win, 0, 17, "\\/");
- mvwaddstr(win, 0, 20, "\\/");
- mvwaddch(win, 1, 18, (chtype) '\\');
- mvwaddch(win, 1, 20, (chtype) '/');
- mvwaddstr(win, 2, 19, "|_");
- mvwaddstr(win, 3, 18, "/^0\\");
- mvwaddstr(win, 4, 17, "//\\");
- mvwaddch(win, 4, 22, (chtype) '\\');
- mvwaddstr(win, 5, 7, "^~~~~~~~~// ~~U");
-}
-
-void bigface(WINDOW *win, chtype noseattr)
-{
- mvwaddstr(win, 0, 16, "\\/ \\/");
- mvwaddstr(win, 1, 17, "\\Y/ \\Y/");
- mvwaddstr(win, 2, 19, "\\=/");
- mvwaddstr(win, 3, 17, "^\\o o/^");
- mvwaddstr(win, 4, 17, "//( )");
- mvwaddstr(win, 5, 7, "^~~~~~~~~// \\");
- waddch(win, 'O' | noseattr);
- waddstr(win, "/");
-}
-
-void legs1(WINDOW *win)
-{
- mvwaddstr(win, 6, 7, "( \\_____( /");
- mvwaddstr(win, 7, 8, "( ) /");
- mvwaddstr(win, 8, 9, "\\\\ /");
- mvwaddstr(win, 9, 11, "\\>/>");
-}
-
-void legs2(WINDOW *win)
-{
- mvwaddstr(win, 6, 7, "(( )____( /");
- mvwaddstr(win, 7, 7, "( / |");
- mvwaddstr(win, 8, 8, "\\/ |");
- mvwaddstr(win, 9, 9, "|> |>");
-}
-
-void legs3(WINDOW *win)
-{
- mvwaddstr(win, 6, 6, "( ()_____( /");
- mvwaddstr(win, 7, 6, "/ / /");
- mvwaddstr(win, 8, 5, "|/ \\");
- mvwaddstr(win, 9, 5, "/> \\>");
-}
-
-void legs4(WINDOW *win)
-{
- mvwaddstr(win, 6, 6, "( )______( /");
- mvwaddstr(win, 7, 5, "(/ \\");
- mvwaddstr(win, 8, 0, "v___= ----^");
-}
-
-void initdeer(void)
-{
- chtype noseattr;
-
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(31, COLOR_RED, COLOR_BLACK);
- noseattr = COLOR_PAIR(31);
- }
- else
-#endif
- noseattr = A_NORMAL;
-
- /* set up the windows for our various reindeer */
-
- dotdeer0 = newwin(3, 71, 0, 8);
- stardeer0 = newwin(4, 56, 0, 8);
- lildeer0 = newwin(7, 54, 0, 8);
- middeer0 = newwin(15, 42, 0, 8);
- bigdeer0 = newwin(10, 23, 0, 0);
- lookdeer0 = newwin(10, 25, 0, 0);
-
- /* lildeer1 */
- lildeer1 = newwin(2, 4, 0, 0);
- lil(lildeer1);
- mvwaddstr(lildeer1, 1, 1, "<>");
-
- /* lildeer2 */
- lildeer2 = newwin(2, 4, 0, 0);
- lil(lildeer2);
- mvwaddstr(lildeer2, 1, 1, "||");
-
- /* lildeer3 */
- lildeer3 = newwin(2, 4, 0, 0);
- lil(lildeer3);
- mvwaddstr(lildeer3, 1, 1, "><");
-
- /* middeer1 */
- middeer1 = newwin(3, 7, 0, 0);
- midtop(middeer1);
- mvwaddstr(middeer1, 2, 3, "\\/");
-
- /* middeer2 */
- middeer2 = newwin(3, 7, 0, 0);
- midtop(middeer2);
- mvwaddch(middeer2, 2, 3, (chtype) '|');
- mvwaddch(middeer2, 2, 5, (chtype) '|');
-
- /* middeer3 */
- middeer3 = newwin(3, 7, 0, 0);
- midtop(middeer3);
- mvwaddch(middeer3, 2, 2, (chtype) '/');
- mvwaddch(middeer3, 2, 6, (chtype) '\\');
-
- /* bigdeer1 */
- bigdeer1 = newwin(10, 23, 0, 0);
- bigtop(bigdeer1);
- legs1(bigdeer1);
-
- /* bigdeer2 */
- bigdeer2 = newwin(10, 23, 0, 0);
- bigtop(bigdeer2);
- legs2(bigdeer2);
-
- /* bigdeer3 */
- bigdeer3 = newwin(10, 23, 0, 0);
- bigtop(bigdeer3);
- legs3(bigdeer3);
-
- /* bigdeer4 */
- bigdeer4 = newwin(10, 23, 0, 0);
- bigtop(bigdeer4);
- legs4(bigdeer4);
-
- /* lookdeer1 */
- lookdeer1 = newwin(10, 25, 0, 0);
- bigface(lookdeer1, noseattr);
- legs1(lookdeer1);
-
- /* lookdeer2 */
- lookdeer2 = newwin(10, 25, 0, 0);
- bigface(lookdeer2, noseattr);
- legs2(lookdeer2);
-
- /* lookdeer3 */
- lookdeer3 = newwin(10, 25, 0, 0);
- bigface(lookdeer3, noseattr);
- legs3(lookdeer3);
-
- /* lookdeer4 */
- lookdeer4 = newwin(10, 25, 0, 0);
- bigface(lookdeer4, noseattr);
- legs4(lookdeer4);
-}
-
-void boxit(void)
-{
- int x;
-
- for (x = 0; x < 20; ++x)
- mvaddch(x, 7, '|');
-
- for (x = 0; x < 80; ++x)
- {
- if (x > 7)
- mvaddch(19, x, '_');
-
- mvaddch(22, x, '_');
- }
-}
-
-void seas(void)
-{
- mvaddch(4, 1, 'S');
- mvaddch(6, 1, 'E');
- mvaddch(8, 1, 'A');
- mvaddch(10, 1, 'S');
- mvaddch(12, 1, 'O');
- mvaddch(14, 1, 'N');
- mvaddch(16, 1, '`');
- mvaddch(18, 1, 'S');
-}
-
-void greet(void)
-{
- mvaddch(3, 5, 'G');
- mvaddch(5, 5, 'R');
- mvaddch(7, 5, 'E');
- mvaddch(9, 5, 'E');
- mvaddch(11, 5, 'T');
- mvaddch(13, 5, 'I');
- mvaddch(15, 5, 'N');
- mvaddch(17, 5, 'G');
- mvaddch(19, 5, 'S');
-}
-
-void fromwho(void)
-{
- mvaddstr(21, 13, FROMWHO);
-}
-
-void del_msg(void)
-{
- refresh();
-}
-
-void tree(void)
-{
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(30, COLOR_GREEN, COLOR_BLACK);
- wattrset(treescrn, COLOR_PAIR(30));
- }
-#endif
- mvwaddch(treescrn, 1, 11, (chtype) '/');
- mvwaddch(treescrn, 2, 11, (chtype) '/');
- mvwaddch(treescrn, 3, 10, (chtype) '/');
- mvwaddch(treescrn, 4, 9, (chtype) '/');
- mvwaddch(treescrn, 5, 9, (chtype) '/');
- mvwaddch(treescrn, 6, 8, (chtype) '/');
- mvwaddch(treescrn, 7, 7, (chtype) '/');
- mvwaddch(treescrn, 8, 6, (chtype) '/');
- mvwaddch(treescrn, 9, 6, (chtype) '/');
- mvwaddch(treescrn, 10, 5, (chtype) '/');
- mvwaddch(treescrn, 11, 3, (chtype) '/');
- mvwaddch(treescrn, 12, 2, (chtype) '/');
-
- mvwaddch(treescrn, 1, 13, (chtype) '\\');
- mvwaddch(treescrn, 2, 13, (chtype) '\\');
- mvwaddch(treescrn, 3, 14, (chtype) '\\');
- mvwaddch(treescrn, 4, 15, (chtype) '\\');
- mvwaddch(treescrn, 5, 15, (chtype) '\\');
- mvwaddch(treescrn, 6, 16, (chtype) '\\');
- mvwaddch(treescrn, 7, 17, (chtype) '\\');
- mvwaddch(treescrn, 8, 18, (chtype) '\\');
- mvwaddch(treescrn, 9, 18, (chtype) '\\');
- mvwaddch(treescrn, 10, 19, (chtype) '\\');
- mvwaddch(treescrn, 11, 21, (chtype) '\\');
- mvwaddch(treescrn, 12, 22, (chtype) '\\');
-
- mvwaddch(treescrn, 4, 10, (chtype) '_');
- mvwaddch(treescrn, 4, 14, (chtype) '_');
- mvwaddch(treescrn, 8, 7, (chtype) '_');
- mvwaddch(treescrn, 8, 17, (chtype) '_');
-
- mvwaddstr(treescrn, 13, 0,
- "//////////// \\\\\\\\\\\\\\\\\\\\\\\\");
-
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(20, COLOR_YELLOW, COLOR_BLACK);
- wattrset(treescrn, COLOR_PAIR(20));
- }
-#endif
- mvwaddstr(treescrn, 14, 11, "| |");
- mvwaddstr(treescrn, 15, 11, "|_|");
-
- wrefresh(treescrn);
- wrefresh(w_del_msg);
-}
-
-void balls(void)
-{
- chtype ball1, ball2, ball3, ball4, ball5, ball6;
-
- overlay(treescrn, treescrn2);
-
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(1, COLOR_BLUE, COLOR_BLACK);
- init_pair(2, COLOR_RED, COLOR_BLACK);
- init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
- init_pair(4, COLOR_CYAN, COLOR_BLACK);
- init_pair(5, COLOR_YELLOW, COLOR_BLACK);
- init_pair(6, COLOR_WHITE, COLOR_BLACK);
- ball1 = COLOR_PAIR(1) | '@';
- ball2 = COLOR_PAIR(2) | '@';
- ball3 = COLOR_PAIR(3) | '@';
- ball4 = COLOR_PAIR(4) | '@';
- ball5 = COLOR_PAIR(5) | '@';
- ball6 = COLOR_PAIR(6) | '@';
- }
- else
-#endif
- ball1 = ball2 = ball3 = ball4 = ball5 = ball6 = '@';
-
- mvwaddch(treescrn2, 3, 9, ball1);
- mvwaddch(treescrn2, 3, 15, ball2);
- mvwaddch(treescrn2, 4, 8, ball3);
- mvwaddch(treescrn2, 4, 16, ball4);
- mvwaddch(treescrn2, 5, 7, ball5);
- mvwaddch(treescrn2, 5, 17, ball6);
- mvwaddch(treescrn2, 7, 6, ball1 | A_BOLD);
- mvwaddch(treescrn2, 7, 18, ball2 | A_BOLD);
- mvwaddch(treescrn2, 8, 5, ball3 | A_BOLD);
- mvwaddch(treescrn2, 8, 19, ball4 | A_BOLD);
- mvwaddch(treescrn2, 10, 4, ball5 | A_BOLD);
- mvwaddch(treescrn2, 10, 20, ball6 | A_BOLD);
- mvwaddch(treescrn2, 11, 2, ball1);
- mvwaddch(treescrn2, 11, 22, ball2);
- mvwaddch(treescrn2, 12, 1, ball3);
- mvwaddch(treescrn2, 12, 23, ball4);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
-}
-
-void star(void)
-{
- mvwaddch(treescrn2, 0, 12, (chtype) '*' | A_STANDOUT);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
-}
-
-void strng1(void)
-{
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(10, COLOR_YELLOW, COLOR_BLACK);
- wattrset(treescrn2, COLOR_PAIR(10) | A_BOLD);
- }
-#endif
- mvwaddstr(treescrn2, 3, 11, ".:'");
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
-}
-
-void strng2(void)
-{
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(11, COLOR_RED, COLOR_BLACK);
- wattrset(treescrn2, COLOR_PAIR(11) | A_BOLD);
- }
-#endif
- mvwaddstr(treescrn2, 5, 11, ",.:'");
- mvwaddstr(treescrn2, 6, 9, ":'");
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
-}
-
-void strng3(void)
-{
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(12, COLOR_GREEN, COLOR_BLACK);
- wattrset(treescrn2, COLOR_PAIR(12) | A_BOLD);
- }
-#endif
- mvwaddstr(treescrn2, 7, 13, ",.:'");
- mvwaddstr(treescrn2, 8, 9, ",.:'");
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
-}
-
-void strng4(void)
-{
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(13, COLOR_WHITE, COLOR_BLACK);
- wattrset(treescrn2, COLOR_PAIR(13) | A_BOLD);
- }
-#endif
- mvwaddstr(treescrn2, 9, 14, ",.:'");
- mvwaddstr(treescrn2, 10, 10, ",.:'");
- mvwaddstr(treescrn2, 11, 6, ",.:'");
- mvwaddch(treescrn2, 12, 5, (chtype) '\'');
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
-}
-
-void strng5(void)
-{
-#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(14, COLOR_CYAN, COLOR_BLACK);
- wattrset(treescrn2, COLOR_PAIR(14) | A_BOLD);
- }
-#endif
- mvwaddstr(treescrn2, 11, 16, ",.:'");
- mvwaddstr(treescrn2, 12, 12, ",.:'");
-
- /* save a fully lit tree */
- overlay(treescrn2, treescrn);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
-}
-
-void blinkit(void)
-{
- static int cycle;
-
- if (cycle > 4)
- cycle = 0;
-
- touchwin(treescrn8);
-
- switch (cycle)
- {
- case 0:
- overlay(treescrn3, treescrn8);
- break;
-
- case 1:
- overlay(treescrn4, treescrn8);
- break;
-
- case 2:
- overlay(treescrn5, treescrn8);
- break;
-
- case 3:
- overlay(treescrn6, treescrn8);
- break;
-
- case 4:
- overlay(treescrn7, treescrn8);
- }
-
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
-
- napms(50);
- touchwin(treescrn8);
-
- /*ALL ON************************************************** */
-
- overlay(treescrn, treescrn8);
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
-
- ++cycle;
-}
-
-#define TSHOW(win, pause) touchwin(win); wrefresh(win); \
- wrefresh(w_del_msg); napms(pause)
-
-#define SHOW(win, pause) mvwin(win, y_pos, x_pos); wrefresh(win); \
- wrefresh(w_del_msg); napms(pause)
-
-void reindeer(void)
-{
- int looper;
-
- y_pos = 0;
-
- for (x_pos = 70; x_pos > 62; x_pos--)
- {
- if (x_pos < 62)
- y_pos = 1;
-
- for (looper = 0; looper < 4; looper++)
- {
- mvwaddch(dotdeer0, y_pos, x_pos, (chtype) '.');
- wrefresh(dotdeer0);
- wrefresh(w_del_msg);
- werase(dotdeer0);
- wrefresh(dotdeer0);
- wrefresh(w_del_msg);
- }
- }
-
- y_pos = 2;
-
- for (; x_pos > 50; x_pos--)
- {
- for (looper = 0; looper < 4; looper++)
- {
- if (x_pos < 56)
- {
- y_pos = 3;
-
- mvwaddch(stardeer0, y_pos, x_pos, (chtype) '*');
- wrefresh(stardeer0);
- wrefresh(w_del_msg);
- werase(stardeer0);
- wrefresh(stardeer0);
- }
- else
- {
- mvwaddch(dotdeer0, y_pos, x_pos, (chtype) '*');
- wrefresh(dotdeer0);
- wrefresh(w_del_msg);
- werase(dotdeer0);
- wrefresh(dotdeer0);
- }
- wrefresh(w_del_msg);
- }
- }
-
- x_pos = 58;
-
- for (y_pos = 2; y_pos < 5; y_pos++)
- {
- TSHOW(lildeer0, 50);
-
- for (looper = 0; looper < 4; looper++)
- {
- SHOW(lildeer3, 50);
- SHOW(lildeer2, 50);
- SHOW(lildeer1, 50);
- SHOW(lildeer2, 50);
- SHOW(lildeer3, 50);
-
- TSHOW(lildeer0, 50);
-
- x_pos -= 2;
- }
- }
-
- x_pos = 35;
-
- for (y_pos = 5; y_pos < 10; y_pos++)
- {
- touchwin(middeer0);
- wrefresh(middeer0);
- wrefresh(w_del_msg);
-
- for (looper = 0; looper < 2; looper++)
- {
- SHOW(middeer3, 50);
- SHOW(middeer2, 50);
- SHOW(middeer1, 50);
- SHOW(middeer2, 50);
- SHOW(middeer3, 50);
-
- TSHOW(middeer0, 50);
-
- x_pos -= 3;
- }
- }
-
- napms(2000);
-
- y_pos = 1;
-
- for (x_pos = 8; x_pos < 16; x_pos++)
- {
- SHOW(bigdeer4, 30);
- SHOW(bigdeer3, 30);
- SHOW(bigdeer2, 30);
- SHOW(bigdeer1, 30);
- SHOW(bigdeer2, 30);
- SHOW(bigdeer3, 30);
- SHOW(bigdeer4, 30);
- SHOW(bigdeer0, 30);
- }
-
- --x_pos;
-
- for (looper = 0; looper < 6; looper++)
- {
- SHOW(lookdeer4, 40);
- SHOW(lookdeer3, 40);
- SHOW(lookdeer2, 40);
- SHOW(lookdeer1, 40);
- SHOW(lookdeer2, 40);
- SHOW(lookdeer3, 40);
- SHOW(lookdeer4, 40);
- }
-
- SHOW(lookdeer0, 40);
-
- for (; y_pos < 10; y_pos++)
- {
- for (looper = 0; looper < 2; looper++)
- {
- SHOW(bigdeer4, 30);
- SHOW(bigdeer3, 30);
- SHOW(bigdeer2, 30);
- SHOW(bigdeer1, 30);
- SHOW(bigdeer2, 30);
- SHOW(bigdeer3, 30);
- SHOW(bigdeer4, 30);
- }
-
- SHOW(bigdeer0, 30);
- }
-
- --y_pos;
-
- mvwin(lookdeer3, y_pos, x_pos);
- wrefresh(lookdeer3);
- wrefresh(w_del_msg);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/doc/Makefile b/payloads/libpayload/curses/PDCurses-3.4/doc/Makefile
deleted file mode 100644
index 8b5f337..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/doc/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# Makefile for PDCurses manext program.
-
-all: manual
-
-manual: PDCurses.txt
-
-PDCurses.txt: manext
- cat intro.txt > PDCurses.txt
- echo PDCurses Definitions and Variables >> PDCurses.txt
- echo ================================== >> PDCurses.txt
- ./manext ../curses.h >> PDCurses.txt
- echo PDCurses Functions >> PDCurses.txt
- echo ================== >> PDCurses.txt
- ./manext ../pdcurses/*.c >> PDCurses.txt
- ./manext ../x11/*.c >> PDCurses.txt
- cat x11.txt >> PDCurses.txt
- echo >> PDCurses.txt
- echo >> PDCurses.txt
- echo \
--------------------------------------------------------------------------- \
->> PDCurses.txt
- echo >> PDCurses.txt
- cat sdl.txt >> PDCurses.txt
-
-manext: manext.c
-
-install:
- echo Does nothing at the moment
-
-clean:
- -rm -rf *.o manext PDCurses.txt
-
-distclean: clean
-
-mostlyclean: clean
-
-realclean: distclean
diff --git a/payloads/libpayload/curses/PDCurses-3.4/doc/intro.txt b/payloads/libpayload/curses/PDCurses-3.4/doc/intro.txt
deleted file mode 100644
index b54dcf0..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/doc/intro.txt
+++ /dev/null
@@ -1,833 +0,0 @@
-PDCurses User's Guide
-=====================
-
-Curses Overview
----------------
-
-The X/Open Curses Interface Definition describes a set of C-Language
-functions that provide screen-handling and updating, which are
-collectively known as the curses library.
-
-The curses library permits manipulation of data structures called
-windows which may be thought of as two-dimensional arrays of
-characters representing all or part of a terminal's screen. The
-windows are manipulated using a procedural interface described
-elsewhere. The curses package maintains a record of what characters
-are on the screen. At the most basic level, manipulation is done with
-the routines move() and addch() which are used to "move" the curses
-around and add characters to the default window, stdscr, which
-represents the whole screen.
-
-An application may use these routines to add data to the window in any
-convenient order. Once all data have been added, the routine
-refresh() is called. The package then determines what changes have
-been made which affect the screen. The screen contents are then
-changed to reflect those characters now in the window, using a
-sequence of operations optimized for the type of terminal in use.
-
-At a higher level routines combining the actions of move() and addch()
-are defined, as are routines to add whole strings and to perform
-format conversions in the manner of printf().
-
-Interfaces are also defined to erase the entire window and to specify
-the attributes of individual characters in the window. Attributes
-such as inverse video, underline and blink can be used on a
-per-character basis.
-
-New windows can be created by allowing the application to build
-several images of the screen and display the appropriate one very
-quickly. New windows are created using the routine newwin(). For
-each routine that manipulates the default window, stdscr, there is a
-corresponding routine prefixed with w to manipulate the contents of a
-specified window; for example, move() and wmove(). In fact, move(...)
-is functionally equivalent to wmove( stdscr, ...). This is similar to
-the interface offered by printf(...) and fprintf(stdout, ...).
-
-Windows do not have to correspond to the entire screen. It is
-possible to create smaller windows, and also to indicate that the
-window is only partially visible on the screen. Furthermore, large
-windows or pads, which are bigger than the actual screen size, may be
-created.
-
-Interfaces are also defined to allow input character manipulation and
-to disable and enable many input attributes: character echo, single
-character input with or without signal processing (cbreak or raw
-modes), carriage returns mapping to newlines, screen scrolling, etc.
-
-
-Data Types and the <curses.h> Header
-------------------------------------
-
-The data types supported by curses are described in this section.
-
-As the library supports a procedural interface to the data types, actual
-structure contents are not described. All curses data are manipulated
-using the routines provided.
-
-
-THE <curses.h> HEADER
-
-The <curses.h> header defines various constants and declares the data
-types that are available to the application.
-
-
-DATA TYPES
-
-The following data types are declared:
-
- WINDOW * pointer to screen representation
- SCREEN * pointer to terminal descriptor
- bool boolean data type
- chtype representation of a character in a window
- cchar_t the wide-character equivalent of chtype
- attr_t for WA_-style attributes
-
-The actual WINDOW and SCREEN objects used to store information are
-created by the corresponding routines and a pointer to them is provided.
-All manipulation is through that pointer.
-
-
-VARIABLES
-
-The following variables are defined:
-
- LINES number of lines on terminal screen
- COLS number of columns on terminal screen
- stdscr pointer to the default screen window
- curscr pointer to the current screen image
- SP pointer to the current SCREEN struct
- Mouse_status status of the mouse
- COLORS number of colors available
- COLOR_PAIRS number of color pairs available
- TABSIZE size of one TAB block
- acs_map[] alternate character set map
- ttytype[] terminal name/description
-
-
-CONSTANTS
-
-The following constants are defined:
-
-GENERAL
-
- FALSE boolean false value
- TRUE boolean true value
- NULL zero pointer value
- ERR value returned on error condition
- OK value returned on successful completion
-
-VIDEO ATTRIBUTES
-
-Normally, attributes are a property of the character.
-
-For chtype:
-
- A_ALTCHARSET use the alternate character set
- A_BLINK bright background or blinking
- A_BOLD bright foreground or bold
- A_DIM half bright -- no effect in PDCurses
- A_INVIS invisible
- A_ITALIC italic
- A_LEFTLINE line along the left edge
- A_PROTECT protected (?) -- PDCurses renders this as a
- combination of the *LINE attributes
- A_REVERSE reverse video
- A_RIGHTLINE line along the right edge
- A_STANDOUT terminal's best highlighting mode
- A_UNDERLINE underline
-
- A_ATTRIBUTES bit-mask to extract attributes
- A_CHARTEXT bit-mask to extract a character
- A_COLOR bit-mask to extract a color-pair
-
-Not all attributes will work on all terminals. A_RIGHTLINE, A_LEFTLINE
-and A_ITALIC are specific to PDCurses. A_INVIS and A_ITALIC are given
-the same value in PDCurses.
-
-For attr_t:
-
- WA_ALTCHARSET same as A_ALTCHARSET
- WA_BLINK same as A_BLINK
- WA_BOLD same as A_BOLD
- WA_DIM same as A_DIM
- WA_INVIS same as A_INVIS
- WA_LEFT same as A_LEFTLINE
- WA_PROTECT same as A_PROTECT
- WA_REVERSE same as A_REVERSE
- WA_RIGHT same as A_RIGHTLINE
- WA_STANDOUT same as A_STANDOUT
- WA_UNDERLINE same as A_UNDERLINE
-
-Note that while A_LEFTLINE and A_RIGHTLINE are PDCurses-specific,
-WA_LEFT and WA_RIGHT are standard. The following are also defined, for
-compatibility, but currently have no effect in PDCurses: WA_HORIZONTAL,
-WA_LOW, WA_TOP, WA_VERTICAL.
-
-THE ALTERNATE CHARACTER SET
-
-For use in chtypes and with related functions. These are a portable way
-to represent graphics characters on different terminals.
-
-VT100-compatible symbols -- box characters:
-
- ACS_ULCORNER upper left box corner
- ACS_LLCORNER lower left box corner
- ACS_URCORNER upper right box corner
- ACS_LRCORNER lower right box corner
- ACS_RTEE right "T"
- ACS_LTEE left "T"
- ACS_BTEE bottom "T"
- ACS_TTEE top "T"
- ACS_HLINE horizontal line
- ACS_VLINE vertical line
- ACS_PLUS plus sign, cross, or four-corner piece
-
-VT100-compatible symbols -- other:
-
- ACS_S1 scan line 1
- ACS_S9 scan line 9
- ACS_DIAMOND diamond
- ACS_CKBOARD checkerboard -- 50% grey
- ACS_DEGREE degree symbol
- ACS_PLMINUS plus/minus sign
- ACS_BULLET bullet
-
-Teletype 5410v1 symbols -- these are defined in SysV curses, but
-are not well-supported by most terminals. Stick to VT100 characters
-for optimum portability:
-
- ACS_LARROW left arrow
- ACS_RARROW right arrow
- ACS_DARROW down arrow
- ACS_UARROW up arrow
- ACS_BOARD checkerboard -- lighter (less dense) than
- ACS_CKBOARD
- ACS_LANTERN lantern symbol
- ACS_BLOCK solid block
-
-That goes double for these -- undocumented SysV symbols. Don't use
-them:
-
- ACS_S3 scan line 3
- ACS_S7 scan line 7
- ACS_LEQUAL less than or equal
- ACS_GEQUAL greater than or equal
- ACS_PI pi
- ACS_NEQUAL not equal
- ACS_STERLING pounds sterling symbol
-
-Box character aliases:
-
- ACS_BSSB same as ACS_ULCORNER
- ACS_SSBB same as ACS_LLCORNER
- ACS_BBSS same as ACS_URCORNER
- ACS_SBBS same as ACS_LRCORNER
- ACS_SBSS same as ACS_RTEE
- ACS_SSSB same as ACS_LTEE
- ACS_SSBS same as ACS_BTEE
- ACS_BSSS same as ACS_TTEE
- ACS_BSBS same as ACS_HLINE
- ACS_SBSB same as ACS_VLINE
- ACS_SSSS same as ACS_PLUS
-
-For cchar_t and wide-character functions, WACS_ equivalents are also
-defined.
-
-COLORS
-
-For use with init_pair(), color_set(), etc.:
-
- COLOR_BLACK
- COLOR_BLUE
- COLOR_GREEN
- COLOR_CYAN
- COLOR_RED
- COLOR_MAGENTA
- COLOR_YELLOW
- COLOR_WHITE
-
-Use these instead of numeric values. The definition of the colors
-depends on the implementation of curses.
-
-
-INPUT VALUES
-
-The following constants might be returned by getch() if keypad() has
-been enabled. Note that not all of these may be supported on a
-particular terminal:
-
- KEY_BREAK break key
- KEY_DOWN the four arrow keys
- KEY_UP
- KEY_LEFT
- KEY_RIGHT
- KEY_HOME home key (upward+left arrow)
- KEY_BACKSPACE backspace
- KEY_F0 function keys; space for 64 keys is reserved
- KEY_F(n) (KEY_F0+(n))
- KEY_DL delete line
- KEY_IL insert line
- KEY_DC delete character
- KEY_IC insert character
- KEY_EIC exit insert character mode
- KEY_CLEAR clear screen
- KEY_EOS clear to end of screen
- KEY_EOL clear to end of line
- KEY_SF scroll 1 line forwards
- KEY_SR scroll 1 line backwards (reverse)
- KEY_NPAGE next page
- KEY_PPAGE previous page
- KEY_STAB set tab
- KEY_CTAB clear tab
- KEY_CATAB clear all tabs
- KEY_ENTER enter or send
- KEY_SRESET soft (partial) reset
- KEY_RESET reset or hard reset
- KEY_PRINT print or copy
- KEY_LL home down or bottom (lower left)
- KEY_A1 upper left of virtual keypad
- KEY_A3 upper right of virtual keypad
- KEY_B2 center of virtual keypad
- KEY_C1 lower left of virtual keypad
- KEY_C3 lower right of virtual keypad
-
- KEY_BTAB Back tab key
- KEY_BEG Beginning key
- KEY_CANCEL Cancel key
- KEY_CLOSE Close key
- KEY_COMMAND Cmd (command) key
- KEY_COPY Copy key
- KEY_CREATE Create key
- KEY_END End key
- KEY_EXIT Exit key
- KEY_FIND Find key
- KEY_HELP Help key
- KEY_MARK Mark key
- KEY_MESSAGE Message key
- KEY_MOVE Move key
- KEY_NEXT Next object key
- KEY_OPEN Open key
- KEY_OPTIONS Options key
- KEY_PREVIOUS Previous object key
- KEY_REDO Redo key
- KEY_REFERENCE Reference key
- KEY_REFRESH Refresh key
- KEY_REPLACE Replace key
- KEY_RESTART Restart key
- KEY_RESUME Resume key
- KEY_SAVE Save key
- KEY_SBEG Shifted beginning key
- KEY_SCANCEL Shifted cancel key
- KEY_SCOMMAND Shifted command key
- KEY_SCOPY Shifted copy key
- KEY_SCREATE Shifted create key
- KEY_SDC Shifted delete char key
- KEY_SDL Shifted delete line key
- KEY_SELECT Select key
- KEY_SEND Shifted end key
- KEY_SEOL Shifted clear line key
- KEY_SEXIT Shifted exit key
- KEY_SFIND Shifted find key
- KEY_SHELP Shifted help key
- KEY_SHOME Shifted home key
- KEY_SIC Shifted input key
- KEY_SLEFT Shifted left arrow key
- KEY_SMESSAGE Shifted message key
- KEY_SMOVE Shifted move key
- KEY_SNEXT Shifted next key
- KEY_SOPTIONS Shifted options key
- KEY_SPREVIOUS Shifted prev key
- KEY_SPRINT Shifted print key
- KEY_SREDO Shifted redo key
- KEY_SREPLACE Shifted replace key
- KEY_SRIGHT Shifted right arrow
- KEY_SRSUME Shifted resume key
- KEY_SSAVE Shifted save key
- KEY_SSUSPEND Shifted suspend key
- KEY_SUNDO Shifted undo key
- KEY_SUSPEND Suspend key
- KEY_UNDO Undo key
-
-The virtual keypad is arranged like this:
-
- A1 up A3
- left B2 right
- C1 down C3
-
-This list is incomplete -- see curses.h for the full list, and use the
-testcurs demo to see what values are actually returned. The above are
-just the keys required by X/Open. In particular, PDCurses defines many
-CTL_ and ALT_ combinations; these are not portable.
-
-
-FUNCTIONS
-
-The following table lists each curses routine and the name of the manual
-page on which it is described.
-
-Functions from the X/Open curses standard -- complete, except for
-getch() and ungetch(), which are implemented as macros for DOS
-compatibility:
-
- Curses Function Manual Page Name
-
- addch addch
- addchnstr addchstr
- addchstr addchstr
- addnstr addstr
- addstr addstr
- attroff attr
- attron attr
- attrset attr
- attr_get attr
- attr_off attr
- attr_on attr
- attr_set attr
- baudrate termattr
- beep beep
- bkgd bkgd
- bkgdset bkgd
- border border
- box border
- can_change_color color
- cbreak inopts
- chgat attr
- clearok outopts
- clear clear
- clrtobot clear
- clrtoeol clear
- color_content color
- color_set attr
- copywin overlay
- curs_set kernel
- def_prog_mode kernel
- def_shell_mode kernel
- del_curterm terminfo
- delay_output util
- delch delch
- deleteln deleteln
- delscreen initscr
- delwin window
- derwin window
- doupdate refresh
- dupwin window
- echochar addch
- echo inopts
- endwin initscr
- erasechar termattr
- erase clear
- filter util
- flash beep
- flushinp getch
- getbkgd bkgd
- getnstr getstr
- getstr getstr
- getwin scr_dump
- halfdelay inopts
- has_colors color
- has_ic termattr
- has_il termattr
- hline border
- idcok outopts
- idlok outopts
- immedok outopts
- inchnstr inchstr
- inchstr inchstr
- inch inch
- init_color color
- init_pair color
- initscr initscr
- innstr instr
- insch insch
- insdelln deleteln
- insertln deleteln
- insnstr innstr
- insstr innstr
- instr instr
- intrflush inopts
- isendwin initscr
- is_linetouched touch
- is_wintouched touch
- keyname keyname
- keypad inopts
- killchar termattr
- leaveok outopts
- longname termattr
- meta inopts
- move move
- mvaddch addch
- mvaddchnstr addchstr
- mvaddchstr addchstr
- mvaddnstr addstr
- mvaddstr addstr
- mvchgat attr
- mvcur terminfo
- mvdelch delch
- mvderwin window
- mvgetch getch
- mvgetnstr getstr
- mvgetstr getstr
- mvhline border
- mvinch inch
- mvinchnstr inchstr
- mvinchstr inchstr
- mvinnstr instr
- mvinsch insch
- mvinsnstr insstr
- mvinsstr insstr
- mvinstr instr
- mvprintw printw
- mvscanw scanw
- mvvline border
- mvwaddchnstr addchstr
- mvwaddchstr addchstr
- mvwaddch addch
- mvwaddnstr addstr
- mvwaddstr addstr
- mvwchgat attr
- mvwdelch delch
- mvwgetch getch
- mvwgetnstr getstr
- mvwgetstr getstr
- mvwhline border
- mvwinchnstr inchstr
- mvwinchstr inchstr
- mvwinch inch
- mvwinnstr instr
- mvwinsch insch
- mvwinsnstr insstr
- mvwinsstr insstr
- mvwinstr instr
- mvwin window
- mvwprintw printw
- mvwscanw scanw
- mvwvline border
- napms kernel
- newpad pad
- newterm initscr
- newwin window
- nl inopts
- nocbreak inopts
- nodelay inopts
- noecho inopts
- nonl inopts
- noqiflush inopts
- noraw inopts
- notimeout inopts
- overlay overlay
- overwrite overlay
- pair_content color
- pechochar pad
- pnoutrefresh pad
- prefresh pad
- printw printw
- putp terminfo
- putwin scr_dump
- qiflush inopts
- raw inopts
- redrawwin refresh
- refresh refresh
- reset_prog_mode kernel
- reset_shell_mode kernel
- resetty kernel
- restartterm terminfo
- ripoffline kernel
- savetty kernel
- scanw scanw
- scr_dump scr_dump
- scr_init scr_dump
- scr_restore scr_dump
- scr_set scr_dump
- scrl scroll
- scroll scroll
- scrollok outopts
- set_term initscr
- setscrreg outopts
- setterm terminfo
- setupterm terminfo
- slk_attroff slk
- slk_attr_off slk
- slk_attron slk
- slk_attr_on slk
- slk_attrset slk
- slk_attr_set slk
- slk_clear slk
- slk_color slk
- slk_init slk
- slk_label slk
- slk_noutrefresh slk
- slk_refresh slk
- slk_restore slk
- slk_set slk
- slk_touch slk
- standend attr
- standout attr
- start_color color
- subpad pad
- subwin window
- syncok window
- termattrs termattrs
- term_attrs termattrs
- termname termattrs
- tgetent termcap
- tgetflag termcap
- tgetnum termcap
- tgetstr termcap
- tgoto termcap
- tigetflag terminfo
- tigetnum terminfo
- tigetstr terminfo
- timeout inopts
- touchline touch
- touchwin touch
- tparm terminfo
- tputs terminfo
- typeahead inopts
- untouchwin touch
- use_env util
- vidattr terminfo
- vid_attr terminfo
- vidputs terminfo
- vid_puts terminfo
- vline border
- vw_printw printw
- vwprintw printw
- vw_scanw scanw
- vwscanw scanw
- waddchnstr addchstr
- waddchstr addchstr
- waddch addch
- waddnstr addstr
- waddstr addstr
- wattroff attr
- wattron attr
- wattrset attr
- wattr_get attr
- wattr_off attr
- wattr_on attr
- wattr_set attr
- wbkgdset bkgd
- wbkgd bkgd
- wborder border
- wchgat attr
- wclear clear
- wclrtobot clear
- wclrtoeol clear
- wcolor_set attr
- wcursyncup window
- wdelch delch
- wdeleteln deleteln
- wechochar addch
- werase clear
- wgetch getch
- wgetnstr getstr
- wgetstr getstr
- whline border
- winchnstr inchstr
- winchstr inchstr
- winch inch
- winnstr instr
- winsch insch
- winsdelln deleteln
- winsertln deleteln
- winsnstr insstr
- winsstr insstr
- winstr instr
- wmove move
- wnoutrefresh refresh
- wprintw printw
- wredrawln refresh
- wrefresh refresh
- wscanw scanw
- wscrl scroll
- wsetscrreg outopts
- wstandend attr
- wstandout attr
- wsyncdown window
- wsyncup window
- wtimeout inopts
- wtouchln touch
- wvline border
-
-Wide-character functions from the X/Open standard -- these are only
-available when PDCurses is built with PDC_WIDE defined, and the
-prototypes are only available from curses.h when PDC_WIDE is defined
-before its inclusion in your app:
-
- addnwstr addstr
- addwstr addstr
- add_wch addch
- add_wchnstr addchstr
- add_wchstr addchstr
- border_set border
- box_set border
- echo_wchar addch
- erasewchar termattr
- getbkgrnd bkgd
- getcchar util
- getn_wstr getstr
- get_wch getch
- get_wstr getstr
- hline_set border
- innwstr instr
- ins_nwstr insstr
- ins_wch insch
- ins_wstr insstr
- inwstr instr
- in_wch inch
- in_wchnstr inchstr
- in_wchstr inchstr
- key_name keyname
- killwchar termattr
- mvaddnwstr addstr
- mvaddwstr addstr
- mvadd_wch addch
- mvadd_wchnstr addchstr
- mvadd_wchstr addchstr
- mvgetn_wstr getstr
- mvget_wch getch
- mvget_wstr getstr
- mvhline_set border
- mvinnwstr instr
- mvins_nwstr insstr
- mvins_wch insch
- mvins_wstr insstr
- mvinwstr instr
- mvwaddnwstr addstr
- mvwaddwstr addstr
- mvwadd_wch addch
- mvwadd_wchnstr addchstr
- mvwadd_wchstr addchstr
- mvwgetn_wstr getstr
- mvwget_wch getch
- mvwget_wstr getstr
- mvwhline_set border
- mvwinnwstr instr
- mvwins_nwstr insstr
- mvwins_wch insch
- mvwins_wstr insstr
- mvwin_wch inch
- mvwin_wchnstr inchstr
- mvwin_wchstr inchstr
- mvwinwstr instr
- mvwvline_set border
- pecho_wchar pad
- setcchar util
- slk_wset slk
- unget_wch getch
- vline_set border
- waddnwstr addstr
- waddwstr addstr
- wadd_wch addch
- wadd_wchnstr addchstr
- wadd_wchstr addchstr
- wbkgrnd bkgd
- wbkgrndset bkgd
- wborder_set border
- wecho_wchar addch
- wgetbkgrnd bkgd
- wgetn_wstr getstr
- wget_wch getch
- wget_wstr getstr
- whline_set border
- winnwstr instr
- wins_nwstr insstr
- wins_wch insch
- wins_wstr insstr
- winwstr instr
- win_wch inch
- win_wchnstr inchstr
- win_wchstr inchstr
- wunctrl util
- wvline_set border
-
-Quasi-standard functions, from Sys V or BSD curses:
-
- getattrs attr
- getbegx getyx
- getbegy getyx
- getmaxx getyx
- getmaxy getyx
- getparx getyx
- getparx getyx
- traceoff debug
- traceon debug
- unctrl util
-
-Classic PDCurses mouse functions, based on Sys V:
-
- mouse_set mouse
- mouse_on mouse
- mouse_off mouse
- request_mouse_pos mouse
- map_button mouse
- wmouse_position mouse
- getmouse mouse
- getbmap mouse
-
-Functions from ncurses:
-
- assume_default_colors color
- curses_version initscr
- has_key keyname
- use_default_colors color
- wresize window
-
- mouseinterval mouse
- mousemask mouse
- mouse_trafo mouse
- nc_getmouse mouse
- ungetmouse mouse
- wenclose mouse
- wmouse_trafo mouse
-
-PDCurses-specific functions -- avoid these in code that's intended to be
-portable:
-
- addrawch addch
- insrawch insch
- is_termresized initscr
- mvaddrawch addch
- mvdeleteln deleteln
- mvinsertln deleteln
- mvinsrawch insch
- mvwaddrawch addch
- mvwdeleteln deleteln
- mvwinsertln deleteln
- mvwinsrawch insch
- raw_output outopts
- resize_term initscr
- resize_window window
- slk_wlabel slk
- waddrawch addch
- winsrawch insch
- wordchar termattr
-
- PDC_debug debug
- PDC_ungetch getch
- PDC_set_blink pdcsetsc
- PDC_set_line_color color
- PDC_set_title pdcsetsc
-
- PDC_clearclipboard pdcclip
- PDC_freeclipboard pdcclip
- PDC_getclipboard pdcclip
- PDC_setclipboard pdcclip
-
- PDC_get_input_fd pdckbd
- PDC_get_key_modifiers getch
- PDC_return_key_modifiers getch
- PDC_save_key_modifiers getch
-
-Functions specific to the X11 port of PDCurses:
-
- Xinitscr initscr
- XCursesExit -
- sb_init sb
- sb_set_horz sb
- sb_set_vert sb
- sb_get_horz sb
- sb_get_vert sb
- sb_refresh sb
-
---------------------------------------------------------------------------
diff --git a/payloads/libpayload/curses/PDCurses-3.4/doc/manext.c b/payloads/libpayload/curses/PDCurses-3.4/doc/manext.c
deleted file mode 100644
index 4ce7cbf..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/doc/manext.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/***********************************************************************/
-/* MANEXT - Extract manual pages from C source code. */
-/***********************************************************************/
-/*
- * MANEXT - A program to extract manual pages from C source code.
- * Copyright (C) 1991-1996 Mark Hessling
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * If you make modifications to this software that you feel increases
- * it usefulness for the rest of the community, please email the
- * changes, enhancements, bug fixes as well as any and all ideas to me.
- * This software is going to be maintained and enhanced as deemed
- * necessary by the community.
- *
- * Mark Hessling <mark at rexx.org>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define MAX_LINE 255
-
-void display_info()
-{
- fprintf(stderr, "\nMANEXT 1.03 Copyright (C) 1991-1996 Mark Hessling\n"
- "All rights reserved.\n"
- "MANEXT is distributed under the terms of the GNU\n"
- "General Public License and comes with NO WARRANTY.\n"
- "See the file COPYING for details.\n"
- "\nUsage: manext sourcefile [...]\n\n");
-}
-
-int main(int argc, char **argv)
-{
- char s[MAX_LINE + 1]; /* input line */
- int i;
- FILE *fp;
-
-#ifdef __EMX__
- _wildcard(&argc, &argv);
-#endif
- if (strcmp(argv[1], "-h") == 0)
- {
- display_info();
- exit(1);
- }
-
- for (i = 1; i < argc; i++)
- {
- if ((fp = fopen(argv[i], "r")) == NULL)
- {
- fprintf(stderr, "\nCould not open %s\n", argv[i]);
- continue;
- }
-
- while (!feof(fp))
- {
- if (fgets(s, (int)sizeof(s), fp) == NULL)
- {
- if (ferror(fp) != 0)
- {
- fprintf(stderr, "*** Error reading %s. Exiting.\n",
- argv[i]);
- exit(1);
- }
-
- break;
- }
-
- /* check for manual entry marker at beginning of line */
-
- if (strncmp(s, "/*man-start*", 12) != 0)
- continue;
-
- /* inner loop */
-
- for (;;)
- {
- /* read next line of manual entry */
-
- if (fgets(s, (int)sizeof(s), fp) == NULL)
- {
- if (ferror(fp) != 0)
- {
- fprintf(stderr, "*** Error reading %s. Exiting.\n",
- argv[i]);
- exit(1);
- }
-
- break;
- }
-
- /* check for end of entry marker */
-
- if (strncmp(s, "**man-end", 9) == 0)
- break;
-
- printf("%s", s);
- }
-
- printf("\n\n-----------------------------------"
- "---------------------------------------\n\n");
- }
-
- fclose(fp);
- }
-
- return 0;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/doc/sdl.txt b/payloads/libpayload/curses/PDCurses-3.4/doc/sdl.txt
deleted file mode 100644
index 6a54b9b..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/doc/sdl.txt
+++ /dev/null
@@ -1,152 +0,0 @@
-SDL Considerations
-==================
-
-There are no special requirements to use PDCurses for SDL -- all
-PDCurses-compatible code should work fine. (In fact, you can even build
-against the Win32 console pdcurses.dll, and then swap in the SDL
-pdcurses.dll.) Nothing extra is needed beyond the base SDL library.
-However, there are some optional special features, described here.
-
-The principal limitation of this port is that input is currently
-restricted to ASCII (i.e., 0-127), plus the special keys like KEY_LEFT.
-(You could have Unicode input, but then the input wouldn't match the
-output, which is in Code Page 437.) Also, see the note about the
-potential for incomplete output under "PDC_update_rects()", below.
-
-
-Fonts
------
-
-The font is a simple BMP, 32 characters wide by 8 characters tall,
-preferably with a palette. (BMPs without palettes still work, but in
-that case, no attributes will be available, nor will the cursor work.)
-The first entry in the palette (usually black) is treated as the
-background color; the last entry (usually white) is treated as the
-foreground. These are changed or made transparent as appropriate; any
-other colors in the palette are passed through unchanged. So -- although
-a one-bit depth is sufficient for a normal font -- you could redraw some
-characters as multi-colored tiles.
-
-The font must be monospaced. The size of each character is derived by
-dividing the width of the BMP by 32 and the height by 8. There is no
-constraint on the dimensions.
-
-As provided in the default font and expected by acs_map[], the font is
-in Code Page 437 form. But you can of course use any layout if you're
-not relying on correct values for the ACS_* macros.
-
-The font can be set via the environment variable PDC_FONT. If it's not
-set, PDCurses looks for a file named "pdcfont.bmp" in the current
-directory at the time of initscr(). If neither is found, it uses the
-built-in default font encoded in deffont.h.
-
-
-Backgrounds
------------
-
-PDCurses for SDL supports an optional background image BMP. This is used
-whenever start_color() has not been called (see the ptest demo for an
-example), or when use_default_colors() has been called after
-start_color(), and the background color of a pair has been set to -1
-(see newdemo, worm, and rain for examples). The usage parallels that of
-ncurses in an appropriate terminal (e.g., Gnome Terminal). The image is
-tiled to cover the PDCurses window, and can be any size or depth.
-
-As with the font, you can point to a location for the background via the
-environment variable PDC_BACKGROUND; "pdcback.bmp" is the fallback.
-(There is no default background.)
-
-
-Icons
------
-
-The icon (used with SDL_WM_SetIcon() -- not used for the executable
-file) can be set via the environment variable PDC_ICON, and falls back
-to "pdcicon.bmp", and then to the built-in icon from deficon.h. The
-built-in icon is the PDCurses logo, as seen in ../x11/little_icon.xbm.
-The SDL docs say that the icon must be 32x32, at least for use with MS
-Windows.
-
-If pdc_screen is preinitialized (see below), PDCurses does not attempt
-to set the icon.
-
-
-Screen size
------------
-
-The default screen size is 80x25 characters (whatever size they may be),
-but you can override this via the environment variables PDC_COLS and/or
-PDC_LINES. (Some other ports use COLS and LINES; this is not done here
-because those values are, or should be, those of the controlling
-terminal, and PDCurses for SDL is independent of the terminal.) If
-pdc_screen is preinitialized (see below), these are ignored.
-
-
-Integration with SDL
---------------------
-
-If you want to go further, you can mix PDCurses and SDL functions. (Of
-course this is extremely non-portable!) To aid you, there are several
-external variables and functions specific to the SDL port; you could
-include pdcsdl.h, or just add the declarations you need in your code:
-
- PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back;
- PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset;
-
- void PDC_update_rects(void);
- void PDC_retile(void);
-
-pdc_screen is the main surface, created by SDL_SetVideoMode(), unless
-it's preset before initscr(). You can perform normal SDL operations on
-this surface, but PDCurses won't respect them when it updates. (For
-that, see PDC_retile().) As an alternative, you can preinitialize this
-surface before calling initscr(). In that case, you can use pdc_sheight,
-pdc_swidth, pdc_yoffset and/or pdc_xoffset (q.v.) to confine PDCurses to
-only a specific area of the surface, reserving the rest for other SDL
-operations. If you preinitialize pdc_screen, you'll have to close it
-yourself; PDCurses will ignore resize events, and won't try to set the
-icon. Also note that if you preinitialize pdc_screen, it need not be the
-display surface.
-
-pdc_font, pdc_icon, and pdc_back are the SDL_surfaces for the font,
-icon, and background, respectively. You can set any or all of them
-before initscr(), and thus override any of the other ways to set them.
-But note that pdc_icon will be ignored if pdc_screen is preset.
-
-pdc_sheight and pdc_swidth are the dimensions of the area of pdc_screen
-to be used by PDCurses. You can preset them before initscr(); if either
-is not set, it defaults to the full screen size minus the x or y offset,
-as appropriate.
-
-pdc_xoffset and pdc_yoffset are the x and y offset for the area of
-pdc_screen to be used by PDCurses. See the sdltest demo for an example.
-
-PDC_retile() makes a copy of pdc_screen, then tiles it with the
-background image, if any. The resulting surface is used as the
-background for transparent character cells. PDC_retile() is called from
-initscr() and resize_term(). However, you can also use it at other
-times, to take advantage of the way it copies pdc_screen: Draw some SDL
-stuff; call PDC_retile(); do some curses stuff -- it will use whatever
-was on pdc_screen as the background. Then you can erase the curses
-screen, do some more SDL stuff, and call PDC_retile() again to make a
-new background. (If you don't erase the curses screen, it will be
-incorporated into the background when you call PDC_retile().) But this
-only works if no background image is set.
-
-PDC_update_rects() is how the screen actually gets updated. For
-performance reasons, when drawing, PDCurses for SDL maintains a table of
-rectangles that need updating, and only updates (by calling this
-function) during getch(), napms(), or when the table gets full.
-Normally, this is sufficient; but if you're pausing in some way other
-than by using napms(), and you're not doing keyboard checks, you may get
-an incomplete update. If that happens, you can call PDC_update_rects()
-manually.
-
-
-Interaction with stdio
-----------------------
-
-As with X11, it's a bad idea to mix curses and stdio calls. (In fact,
-that's true for PDCurses on any platform; but especially these two,
-which don't run under terminals.) Depending on how SDL is built, stdout
-and stderr may be redirected to files.
diff --git a/payloads/libpayload/curses/PDCurses-3.4/doc/x11.txt b/payloads/libpayload/curses/PDCurses-3.4/doc/x11.txt
deleted file mode 100644
index db05683..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/doc/x11.txt
+++ /dev/null
@@ -1,416 +0,0 @@
-X11 Considerations
-==================
-
-PDCurses for X11 uses the System V IPC shared memory facility, along
-with sockets, to share data between the curses program and the child
-process created to manage the X stuff.
-
-When compiling your application, you need to include the <curses.h> or
-<xcurses.h> that comes with PDCurses. You also need to link your code
-with libXCurses. You may need to link with the following libraries under
-X11R5:
- Xaw Xmu Xt X11
-
-or, under X11R6:
- Xaw Xmu Xt X11 SM ICE Xext
-
-You can run "xcurses-config --libs" to show the link parameters for your
-system. If using dynamic linking, on some systems, "-lXCurses" suffices.
-
-By calling Xinitscr() rather than initscr(), you can pass your program
-name and resource overrides to PDCurses. The program name is used as the
-title of the X window, and for defining X resources specific to your
-program.
-
-
-Interaction with stdio
-----------------------
-
-Be aware that curses programs that expect to have a normal tty
-underneath them will be very disappointed! Output directed to stdout
-will go to the xterm that invoked the PDCurses application, or to the
-console if not invoked directly from an xterm. Similarly, stdin will
-expect its input from the same place as stdout.
-
-
-X Resources
------------
-
-PDCurses for X11 recognizes the following resources:
-
- lines
- cols
- normalFont
- italicFont
- pointer
- pointerForeColor
- pointerBackColor
- cursorColor
- textCursor
- colorBlack
- colorRed
- colorGreen
- colorYellow
- colorBlue
- colorMagenta
- colorCyan
- colorWhite
- colorBoldBlack
- colorBoldRed
- colorBoldGreen
- colorBoldYellow
- colorBoldBlue
- colorBoldMagenta
- colorBoldCyan
- colorBoldWhite
- bitmap
- pixmap
- translations
- shmmin
- borderWidth
- borderColor
- clickPeriod
- doubleClickPeriod
- composeKey
-
-lines: Specifies the number of lines the "screen" will have.
- Directly equates to LINES.
- There is no theoretical maximum.
- The minimum value must be 2.
- Default: 24
-
-cols: Specifies the number of columns the "screen" will have.
- Directly equates to COLS.
- There is no theoretical maximum.
- The minimum value must be 2.
- Default: 80
-
-normalFont: The name of a fixed width font.
- Default: 7x13
-
-italicFont: The name of a fixed width font to be used for
- characters with A_ITALIC attributes. Must have the
- same cell size as normalFont.
- Default: 7x13 (obviously not an italic font)
-
-pointer: The name of a valid pointer cursor.
- Default: xterm
-
-pointerForeColor: The foreground color of the pointer.
- Default: black
-
-pointerBackColor: The background color of the pointer.
- Default: white
-
-textCursor: The alignment of the text cursor; horizontal or vertical.
- Default: horizontal
-
-colorBlack: The color of the COLOR_BLACK attribute.
- Default: Black
-
-colorRed: The color of the COLOR_RED attribute.
- Default: red3
-
-colorGreen: The color of the COLOR_GREEN attribute.
- Default: green3
-
-colorYellow: The color of the COLOR_YELLOW attribute.
- Default: yellow3
-
-colorBlue: The color of the COLOR_BLUE attribute.
- Default: blue3
-
-colorMagenta: The color of the COLOR_MAGENTA attribute.
- Default: magenta3
-
-colorCyan: The color of the COLOR_CYAN attribute.
- Default: cyan3
-
-colorWhite: The color of the COLOR_WHITE attribute.
- Default: Grey
-
-colorBoldBlack: COLOR_BLACK combined with A_BOLD.
- Default: grey40
-
-colorBoldRed: COLOR_RED combined with A_BOLD.
- Default: red1
-
-colorBoldGreen: COLOR_GREEN combined with A_BOLD.
- Default: green1
-
-colorBoldYellow: COLOR_YELLOW combined with A_BOLD.
- Default: yellow1
-
-colorBoldBlue: COLOR_BLUE combined with A_BOLD.
- Default: blue1
-
-colorBoldMagenta: COLOR_MAGENTA combined with A_BOLD.
- Default: magenta1
-
-colorBoldCyan: COLOR_CYAN combined with A_BOLD.
- Default: cyan1
-
-colorBoldWhite: COLOR_WHITE combined with A_BOLD.
- Default: White
-
-bitmap: The name of a valid bitmap file of depth 1 (black and white)
- used for the application's icon. The file is an X bitmap.
- Default: a 32x32 or 64x64 pixmap depending on the
- window manager
-
-pixmap: The name of a valid pixmap file of any depth
- supported by the window manager (color) for the
- application's icon, The file is an X11 pixmap. This
- resource is only available if the libXpm package has
- been installed (most systems have this by default).
- This resource overrides the "bitmap" resource.
- Default: none, uses default bitmap above
-
-translations: Translations enable the user to customize the action
- that occurs when a key, combination of keys, or a
- button is pressed. The translations are similar to
- those used by xterm.
- Defaults:
- <Key>: XCursesKeyPress()
- <KeyUp>: XCursesKeyPress()
- <BtnDown>: XCursesButton()
- <BtnUp>: XCursesButton()
- <BtnMotion>: XCursesButton()
-
- The most useful action for KeyPress translations is
- string(). The argument to the string() action can be
- either a string or a hex representation of a
- character; e.g., string(0x1b) will send the ASCII
- escape character to the application; string("[11~")
- will send [ 1 1 ~ , as separate keystrokes.
-
-shmmin: On most systems, there are two Unix kernel parameters
- that determine the allowable size of a shared memory
- segment. These parameters are usually something like
- SHMMIN and SHMMAX. To use shared memory, a program
- must allocate a segment of shared memory that is
- between these two values. Usually these values are
- like 1 for SHMMIN and some large number for SHMMAX.
- Sometimes the Unix kernel is configured to have a
- value of SHMMIN that is bigger than the size of one
- of the shared memory segments that libXCurses uses.
- On these systems an error message like:
-
- Cannot allocate shared memory for SCREEN: Invalid argument
-
- will result. To overcome this problem, this resource
- should be set to the kernel value for SHMMIN. This
- ensures that a shared memory segment will always be
- bigger than the kernel value for SHMMIN (and
- hopefully less than SHMMAX!)
-
- Default: 0
-
-borderColor: The color of the border around the screen.
- Default: black
-
-borderWidth: The width in pixels of the border around the screen.
- Default: 0
-
-clickPeriod: The period (in milliseconds) between a button
- press and a button release that determines if a click
- of a button has occurred.
- Default: 100
-
-doubleClickPeriod: The period (in milliseconds) between two button
- press events that determines if a double click
- of a button has occurred.
- Default: 200
-
-composeKey: The name of the X key that defines the "compose key",
- which is used to enter characters in the Latin-1
- character set above 0xA0. (See "Compose Keys for
- Latin-1" below.) This is used only when PDCurses is
- built without XIM support. While in compose mode, the
- text cursor will appear as a hollow rectangle.
- Default: Multi_key
-
-
-Using Resources
----------------
-
-All applications have a top-level class name of "XCurses". If Xinitscr()
-is used, it sets an application's top-level widget name. (Otherwise the
-name defaults to "PDCurses".)
-
-Examples for app-defaults or .Xdefaults:
-
-!
-! resources for XCurses class of programs
-!
-XCurses*lines: 30
-XCurses*cols: 80
-XCurses*normalFont: 9x13
-XCurses*bitmap: /tmp/xcurses.xbm
-XCurses*pointer: top_left_arrow
-!
-! resources for testcurs - XCurses
-!
-testcurs.colorRed: orange
-testcurs.colorBlack: midnightblue
-testcurs.lines: 25
-*testcurs.Translations: #override \n \
- <Key>F12: string(0x1b) string("[11~") \n
-!
-! resources for THE - XCurses
-!
-! resources with the * wildcard can be overridden by a parameter passed
-! to initscr()
-!
-the*normalFont: 9x15
-the*lines: 40
-the*cols: 86
-the*pointer: xterm
-the*pointerForeColor: white
-the*pointerBackColor: black
-!
-! resources with the . format can not be overridden by a parameter passed
-! to Xinitscr()
-!
-the.bitmap: /home/mark/the/the64.xbm
-the.pixmap: /home/mark/the/the64.xpm
-
-Resources may also be passed as parameters to the Xinitscr() function.
-Parameters are strings in the form of switches; e.g., to set the color
-"red" to "indianred", and the number of lines to 30, the string passed
-to Xinitscr would be: "-colorRed indianred -lines 30"
-
-
-Compose Keys for Latin-1
-------------------------
-
-When built without XIM support, PDCurses for X11 provides its own,
-limited compose key system for Latin-1 characters. The available
-combinations are listed here. For a given character, any of the
-combinations shown in the last column may be used. To generate a
-character, press the "compose" key followed by one of the pairs of
-keystrokes. Where no key is evident, the spacebar is used. Thus, to
-generate the NO-BREAK SPACE, press the "compose" key followed by two
-hits of the spacebar.
-
-With a typical modern X server, you can get many more compose key
-combinations by using XIM instead. Configure PDCurses with --enable-xim
-to use XIM support.
-
-This document is encoded in UTF-8.
-
-+----+-----+---+---------------------------------+---------------------------+
-|Hex | Dec |Chr| Description ISO 10646-1:1993(E) | Compose key combinations |
-+----+-----+---+---------------------------------+---------------------------+
-| A0 | 160 | | NO-BREAK SPACE | |
-| A1 | 161 | ¡ | INVERTED EXCLAMATION MARK | ! !! |
-| A2 | 162 | ¢ | CENT SIGN | c| |c c/ c$ C$ C| |
-| A3 | 163 | £ | POUND SIGN | L- L$ L= l- l$ l= |-|
-| A4 | 164 | ¤ | CURRENCY SIGN | xo ox XO g$ |
-| A5 | 165 | ¥ | YEN SIGN | =y y= =Y Y= Y- y$ y-|
-| A6 | 166 | ¦ | BROKEN BAR | | || vb VB |^ |
-| A7 | 167 | § | SECTION SIGN | SO SS s! S! so |
-| A8 | 168 | ¨ | DIAERESIS | " "" |
-| A9 | 169 | © | COPYRIGHT SIGN | CO co OC |
-| AA | 170 | ª | FEMININE ORDINAL INDICATOR | sa SA a_ A_ |
-| AB | 171 | « | LEFT DOUBLE ANGLE QUOTES | << |
-| AC | 172 | ¬ | NOT SIGN | -, no NO |
-| AD | 173 | | SOFT HYPHEN | - -- |
-| AE | 174 | ® | REGISTERED SIGN | RO ro OR |
-| AF | 175 | ¯ | MACRON | -^ _^ __ |
-| B0 | 176 | ° | DEGREE SIGN | o 0^ 0* de DE ^0 |
-| B1 | 177 | ± | PLUS-MINUS SIGN | -+ +- |
-| B2 | 178 | ² | SUPERSCRIPT TWO | 2 2^ s2 ^2 |
-| B3 | 179 | ³ | SUPERSCRIPT THREE | 3 3^ s3 ^3 |
-| B4 | 180 | ´ | ACUTE ACCENT | ' '' |
-| B5 | 181 | µ | MICRO SIGN | u /u /U *m *M |
-| B6 | 182 | ¶ | PILCROW SIGN | p! P! pg PG |
-| B7 | 183 | · | MIDDLE DOT | . .^ .. |
-| B8 | 184 | ¸ | CEDILLA | , ,, |
-| B9 | 185 | ¹ | SUPERSCRIPT ONE | 1 1^ s1 ^1 |
-| BA | 186 | º | MASCULINE ORDINAL INDICATOR | o_ s0 S0 |
-| BB | 187 | » | RIGHT DOUBLE ANGLE QUOTES | >> |
-| BC | 188 | ¼ | VULGAR FRACTION ONE QUARTER | 14 |
-| BD | 189 | ½ | VULGAR FRACTION ONE HALF | 12 |
-| BE | 190 | ¾ | VULGAR FRACTION THREE QUARTERS | 34 |
-| BF | 191 | ¿ | INVERTED QUESTION MARK | ? ?? |
-| C0 | 192 | À | CAPITAL A WITH GRAVE ACCENT | `A A` |
-| C1 | 193 | Á | CAPITAL A WITH ACUTE ACCENT | 'A A' |
-| C2 | 194 | Â | CAPITAL A WITH CIRCUMFLEX ACCENT| ^A A^ A> |
-| C3 | 195 | Ã | CAPITAL A WITH TILDE | ~A A~ A- |
-| C4 | 196 | Ä | CAPITAL A WITH DIAERESIS | "A A" |
-| C5 | 197 | Å | CAPITAL A WITH RING ABOVE | oA Ao A* OA *A |
-| C6 | 198 | Æ | CAPITAL LIGATURE AE | AE |
-| C7 | 199 | Ç | CAPITAL C WITH CEDILLA | ,C C, |
-| C8 | 200 | È | CAPITAL E WITH GRAVE ACCENT | `E E` |
-| C9 | 201 | É | CAPITAL E WITH ACUTE ACCENT | 'E E' |
-| CA | 202 | Ê | CAPITAL E WITH CIRCUMFLEX ACCENT| ^E E^ E> |
-| CB | 203 | Ë | CAPITAL E WITH DIAERESIS | "E E" |
-| CC | 204 | Ì | CAPITAL I WITH GRAVE ACCENT | `I I` |
-| CD | 205 | Í | CAPITAL I WITH ACUTE ACCENT | 'I I' |
-| CE | 206 | Î | CAPITAL I WITH CIRCUMFLEX ACCENT| ^I I^ I> |
-| CF | 207 | Ï | CAPITAL I WITH DIAERESIS | "I I" |
-| D0 | 208 | Ð | CAPITAL ETH | D- |
-| D1 | 209 | Ñ | CAPITAL N WITH TILDE | ~N N~ N- |
-| D2 | 210 | Ò | CAPITAL O WITH GRAVE ACCENT | `O O` |
-| D3 | 211 | Ó | CAPITAL O WITH ACUTE ACCENT | 'O O' |
-| D4 | 212 | Ô | CAPITAL O WITH CIRCUMFLEX ACCENT| ^O O^ O> |
-| D5 | 213 | Õ | CAPITAL O WITH TILDE | ~O O~ O- |
-| D6 | 214 | Ö | CAPITAL O WITH DIAERESIS | "O O" |
-| D7 | 215 | × | MULTIPLICATION SIGN | x xx XX mu MU |
-| D8 | 216 | Ø | CAPITAL O WITH STROKE | /O O/ |
-| D9 | 217 | Ù | CAPITAL U WITH GRAVE ACCENT | `U U` |
-| DA | 218 | Ú | CAPITAL U WITH ACUTE ACCENT | 'U U' |
-| DB | 219 | Û | CAPITAL U WITH CIRCUMFLEX ACCENT| ^U U^ U> |
-| DC | 220 | Ü | CAPITAL U WITH DIAERESIS | "U U" |
-| DD | 221 | Ý | CAPITAL Y WITH ACUTE ACCENT | 'Y Y' |
-| DE | 222 | Þ | CAPITAL THORN | P TH |P |
-| DF | 223 | ß | SMALL SHARP S | ss |
-| E0 | 224 | à | SMALL A WITH GRAVE ACCENT | `a a` |
-| E1 | 225 | á | SMALL A WITH ACUTE ACCENT | 'a a' |
-| E2 | 226 | â | SMALL A WITH CIRCUMFLEX ACCENT | ^a a^ a> |
-| E3 | 227 | ã | SMALL A WITH TILDE | ~a a~ a- |
-| E4 | 228 | ä | SMALL A WITH DIAERESIS | "a a" |
-| E5 | 229 | å | SMALL A WITH RING ABOVE | oa ao Oa a* *a |
-| E6 | 230 | æ | SMALL LIGATURE AE | ae |
-| E7 | 231 | ç | SMALL C WITH CEDILLA | ,c c, |
-| E8 | 232 | è | SMALL E WITH GRAVE ACCENT | `e e` |
-| E9 | 233 | é | SMALL E WITH ACUTE ACCENT | 'e e' |
-| EA | 234 | ê | SMALL E WITH CIRCUMFLEX ACCENT | ^e e^ e> |
-| EB | 235 | ë | SMALL E WITH DIAERESIS | "e e" |
-| EC | 236 | ì | SMALL I WITH GRAVE ACCENT | `i i` |
-| ED | 237 | í | SMALL I WITH ACUTE ACCENT | 'i i' |
-| EE | 238 | î | SMALL I WITH CIRCUMFLEX ACCENT | ^i i^ i> |
-| EF | 239 | ï | SMALL I WITH DIAERESIS | "i i" |
-| F0 | 240 | ð | SMALL ETH | d- |
-| F1 | 241 | ñ | SMALL N WITH TILDE | ~n n~ n- |
-| F2 | 242 | ò | SMALL O WITH GRAVE ACCENT | `o o` |
-| F3 | 243 | ó | SMALL O WITH ACUTE ACCENT | 'o o' |
-| F4 | 244 | ô | SMALL O WITH CIRCUMFLEX ACCENT | ^o o^ o> |
-| F5 | 245 | õ | SMALL O WITH TILDE | ~o o~ o- |
-| F6 | 246 | ö | SMALL O WITH DIAERESIS | "o o" |
-| F7 | 247 | ÷ | DIVISION SIGN | -: :- |
-| F8 | 248 | ø | SMALL O WITH OBLIQUE BAR | /o o/ |
-| F9 | 249 | ù | SMALL U WITH GRAVE ACCENT | `u u` |
-| FA | 250 | ú | SMALL U WITH ACUTE ACCENT | 'u u' |
-| FB | 251 | û | SMALL U WITH CIRCUMFLEX ACCENT | ^u u^ u> |
-| FC | 252 | ü | SMALL U WITH DIAERESIS | "u u" |
-| FD | 253 | ý | SMALL Y WITH ACUTE ACCENT | 'y y' |
-| FE | 254 | þ | SMALL THORN | p th |p |
-| FF | 255 | ÿ | SMALL Y WITH DIAERESIS | "y y" |
-+----+-----+---+---------------------------------+---------------------------+
-
-
-Deprecated
-----------
-
-XCursesProgramName is no longer used. To set the program name, you must
-use Xinitscr(), or PDC_set_title() to set just the window title.
-
-The XCursesExit() function is now called automatically via atexit().
-(Multiple calls to it are OK, so you don't need to remove it if you've
-already added it for previous versions of PDCurses.)
-
-XCURSES is no longer defined automatically, but need not be defined,
-unless you want the X11-specific prototypes. (Normal curses programs
-won't need it.)
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/README b/payloads/libpayload/curses/PDCurses-3.4/dos/README
deleted file mode 100644
index 569034b..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/README
+++ /dev/null
@@ -1,49 +0,0 @@
-PDCurses for DOS
-================
-
-This directory contains PDCurses source code files specific to DOS.
-
-
-Building
---------
-
-. Choose the appropriate makefile for your compiler:
-
- bccdos.mak - Borland C++ 3.0+
- gccdos.mak - DJGPP V2
- mscdos.mak - Microsoft C
- wccdos16.mak - Watcom 10.6+ (16-bit)
- wccdos4g.mak - Watcom 10.6+ (32-bit)
-
-. For 16-bit compilers, you can change the memory MODEL in the makefile.
- (Large model is the default, and recommended.)
-
-. Optionally, you can build in a different directory than the platform
- directory by setting PDCURSES_SRCDIR to point to the directory where
- you unpacked PDCurses, and changing to your target directory:
-
- set PDCURSES_SRCDIR=c:\pdcurses
-
-. Build it:
-
- make -f makefile
-
- (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll
- get the libraries (pdcurses.lib or .a, depending on your compiler; and
- panel.lib or .a), the demos (*.exe), and a lot of object files. Note
- that the panel library is just a copy of the main library, provided
- for convenience; both panel and curses functions are in the main
- library.
-
-
-Distribution Status
--------------------
-
-The files in this directory are released to the Public Domain.
-
-
-Acknowledgements
-----------------
-
-Watcom C port was provided by Pieter Kunst <kunst at prl.philips.nl>
-DJGPP 1.x port was provided by David Nugent <davidn at csource.oz.au>
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/bccdos.lrf b/payloads/libpayload/curses/PDCurses-3.4/dos/bccdos.lrf
deleted file mode 100644
index 9bd18c6..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/bccdos.lrf
+++ /dev/null
@@ -1,9 +0,0 @@
-+addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj &
-+border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj &
-+getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj &
-+inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj &
-+mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj &
-+printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj &
-+termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj &
-+pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj &
-+pdcsetsc.obj +pdcutil.obj ,lib.map
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/bccdos.mak b/payloads/libpayload/curses/PDCurses-3.4/dos/bccdos.mak
deleted file mode 100644
index 6361a4d..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/bccdos.mak
+++ /dev/null
@@ -1,82 +0,0 @@
-# Borland MAKE Makefile for PDCurses library - DOS BC++ 3.0+
-#
-# Usage: make -f [path\]bccdos.mak [DEBUG=] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-# Change the memory MODEL here, if desired
-MODEL = l
-
-O = obj
-
-!ifndef PDCURSES_SRCDIR
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-!include $(PDCURSES_SRCDIR)\libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)\dos
-
-!ifdef DEBUG
-CFLAGS = -N -v -y -DPDCDEBUG
-!else
-CFLAGS = -O
-!endif
-
-CPPFLAGS = -I$(PDCURSES_SRCDIR)
-
-BUILD = $(CC) -1- -K -G -rd -d -w-eff -w-par -c \
--m$(MODEL) $(CFLAGS) $(CPPFLAGS)
-
-LIBEXE = tlib /C /E
-
-LIBCURSES = pdcurses.lib
-
-all: $(LIBCURSES) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.map
- -del *.exe
-
-demos: $(DEMOS)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- -del $@
- $(LIBEXE) $@ @$(osdir)\bccdos.lrf
- -copy $(LIBCURSES) panel.lib
-
-.autodepend
-
-{$(srcdir)\}.c.obj:
- $(BUILD) $<
-
-{$(osdir)\}.c.obj:
- $(BUILD) $<
-
-{$(demodir)\}.c.obj:
- $(BUILD) $<
-
-.c.obj:
- $(BUILD) $<
-
-.obj.exe:
- $(CC) -m$(MODEL) -e$@ $** $(LIBCURSES)
-
-tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
- $(CC) -m$(MODEL) -e$@ $**
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
- $(BUILD) -I$(demodir) $(demodir)\tui.c
-
-tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
- $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
-
-PLATFORM1 = Borland C++ 3.1
-PLATFORM2 = Borland C/C++ 3.1 for DOS
-ARCNAME = pdc$(VER)bcc
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/gccdos.mak b/payloads/libpayload/curses/PDCurses-3.4/dos/gccdos.mak
deleted file mode 100644
index 26a4ed3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/gccdos.mak
+++ /dev/null
@@ -1,87 +0,0 @@
-# GNU MAKE (3.79.1) Makefile for PDCurses library - DOS DJGPP V2.0+
-#
-# Usage: make -f [path\]gccdos.mak [DEBUG=Y] [target]
-#
-# where target can be any of:
-# [all|libs|demos|dist|pdcurses.a|testcurs.exe...]
-
-O = o
-
-ifndef PDCURSES_SRCDIR
- PDCURSES_SRCDIR = ..
-endif
-
-include $(PDCURSES_SRCDIR)/version.mif
-include $(PDCURSES_SRCDIR)/libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)/dos
-
-PDCURSES_DOS_H = $(osdir)/pdcdos.h
-
-CC = gcc
-
-ifeq ($(DEBUG),Y)
- CFLAGS = -g -Wall -DPDCDEBUG
- LDFLAGS = -g
-else
- CFLAGS = -O2 -Wall
- LDFLAGS =
-endif
-
-CFLAGS += -I$(PDCURSES_SRCDIR)
-
-LINK = gcc
-
-LIBEXE = ar
-LIBFLAGS = rcv
-
-LIBCURSES = pdcurses.a
-
-.PHONY: all libs clean demos dist
-
-all: libs demos
-
-libs: $(LIBCURSES)
-
-clean:
- -del *.o
- -del *.a
- -del *.exe
-
-demos: $(DEMOS)
- strip *.exe
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $(LIBFLAGS) $@ $?
- -copy $(LIBCURSES) panel.a
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_DOS_H)
-$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
-panel.o : $(PANEL_HEADER)
-terminfo.o: $(TERM_HEADER)
-
-$(LIBOBJS) : %.o: $(srcdir)/%.c
- $(CC) -c $(CFLAGS) $<
-
-$(PDCOBJS) : %.o: $(osdir)/%.c
- $(CC) -c $(CFLAGS) $<
-
-firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
-ptest.exe: %.exe: $(demodir)/%.c
- $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES)
-
-tuidemo.exe: tuidemo.o tui.o
- $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES)
-
-tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H)
- $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
-
-tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H)
- $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
-
-PLATFORM1 = DJGPP 2.03
-PLATFORM2 = DJGPP 2.03 for DOS
-ARCNAME = pdc$(VER)djg
-
-include $(PDCURSES_SRCDIR)/makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/mscdos.lrf b/payloads/libpayload/curses/PDCurses-3.4/dos/mscdos.lrf
deleted file mode 100644
index b1fdf37..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/mscdos.lrf
+++ /dev/null
@@ -1,50 +0,0 @@
--+addch.obj &
--+addchstr.obj &
--+addstr.obj &
--+attr.obj &
--+beep.obj &
--+bkgd.obj &
--+border.obj &
--+clear.obj &
--+color.obj &
--+delch.obj &
--+deleteln.obj &
--+deprec.obj &
--+getch.obj &
--+getstr.obj &
--+getyx.obj &
--+inch.obj &
--+inchstr.obj &
--+initscr.obj &
--+inopts.obj &
--+insch.obj &
--+insstr.obj &
--+instr.obj &
--+kernel.obj &
--+keyname.obj &
--+mouse.obj &
--+move.obj &
--+outopts.obj &
--+overlay.obj &
--+pad.obj &
--+panel.obj &
--+printw.obj &
--+refresh.obj &
--+scanw.obj &
--+scr_dump.obj &
--+scroll.obj &
--+slk.obj &
--+termattr.obj &
--+terminfo.obj &
--+touch.obj &
--+util.obj &
--+window.obj &
--+debug.obj &
--+pdcclip.obj &
--+pdcdisp.obj &
--+pdcgetsc.obj &
--+pdckbd.obj &
--+pdcscrn.obj &
--+pdcsetsc.obj &
--+pdcutil.obj &
-,lib.map;
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/mscdos.mak b/payloads/libpayload/curses/PDCurses-3.4/dos/mscdos.mak
deleted file mode 100644
index 7aa6c5f..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/mscdos.mak
+++ /dev/null
@@ -1,114 +0,0 @@
-# NMAKE Makefile for PDCurses library - Microsoft C for DOS
-#
-# Usage: nmake -f [path\]dosmsc.mak [DEBUG=] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-# Change the memory MODEL here, if desired
-MODEL = L # one of L, S, M, T, H, C
-SIZE = LARGE # one of LARGE, SMALL, MEDIUM, TINY, HUGE, COMPACT
-
-O = obj
-
-!ifndef PDCURSES_SRCDIR
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-!include $(PDCURSES_SRCDIR)\libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)\dos
-
-PDCURSES_DOS_H = $(osdir)\pdcdos.h
-
-CC = cl
-
-!ifdef DEBUG
-CFLAGS = /Od /Zi /DPDCDEBUG
-LDFLAGS = /CO /NOE /SE:160
-!else
-CFLAGS = /Ox
-LDFLAGS = /NOE /SE:160
-!endif
-
-CPPFLAGS = -I$(PDCURSES_SRCDIR)
-
-BUILD = $(CC) /J /nologo /c /D$(SIZE) /A$(MODEL) $(CFLAGS) $(CPPFLAGS)
-
-LINK = link
-
-CCLIBS =
-
-LIBEXE = lib
-
-LIBCURSES = pdcurses.lib
-
-all: $(LIBCURSES) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.exe
-
-demos: $(DEMOS)
-
-DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(DEMOOBJS) : $(PDCURSES_CURSES_H)
-$(DEMOS) : $(LIBCURSES)
-panel.obj : $(PANEL_HEADER)
-terminfo.obj: $(TERM_HEADER)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $@ @$(osdir)\mscdos.lrf
- -copy $(LIBCURSES) panel.lib
-
-{$(srcdir)\}.c{}.obj:
- $(BUILD) $<
-
-{$(osdir)\}.c{}.obj:
- $(BUILD) $<
-
-{$(demodir)\}.c{}.obj:
- $(BUILD) $<
-
-firework.exe: firework.obj
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-newdemo.exe: newdemo.obj
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-ptest.exe: ptest.obj
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-rain.exe: rain.obj
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-testcurs.exe: testcurs.obj
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-tuidemo.exe: tuidemo.obj tui.obj
- $(LINK) $(LDFLAGS) $*.obj+tui.obj,$*,,$(LIBCURSES);
-
-worm.exe: worm.obj
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-xmas.exe: xmas.obj
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-ptest.obj: $(demodir)\ptest.c $(PANEL_HEADER)
- $(BUILD) $(demodir)\ptest.c
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h
- $(BUILD) -I$(demodir) $(demodir)\tui.c
-
-tuidemo.obj: $(demodir)\tuidemo.c
- $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
-
-PLATFORM1 = Microsoft C
-PLATFORM2 = Microsoft C for DOS
-ARCNAME = pdc$(VER)msc
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcclip.c b/payloads/libpayload/curses/PDCurses-3.4/dos/pdcclip.c
deleted file mode 100644
index c5fa291..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcclip.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcdos.h"
-
-RCSID("$Id: pdcclip.c,v 1.33 2008/07/13 16:08:17 wmcbrine Exp $")
-
-#include <stdlib.h>
-
-/*man-start**************************************************************
-
- Name: clipboard
-
- Synopsis:
- int PDC_getclipboard(char **contents, long *length);
- int PDC_setclipboard(const char *contents, long length);
- int PDC_freeclipboard(char *contents);
- int PDC_clearclipboard(void);
-
- Description:
- PDC_getclipboard() gets the textual contents of the system's
- clipboard. This function returns the contents of the clipboard
- in the contents argument. It is the responsibilitiy of the
- caller to free the memory returned, via PDC_freeclipboard().
- The length of the clipboard contents is returned in the length
- argument.
-
- PDC_setclipboard copies the supplied text into the system's
- clipboard, emptying the clipboard prior to the copy.
-
- PDC_clearclipboard() clears the internal clipboard.
-
- Return Values:
- indicator of success/failure of call.
- PDC_CLIP_SUCCESS the call was successful
- PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
- the clipboard contents
- PDC_CLIP_EMPTY the clipboard contains no text
- PDC_CLIP_ACCESS_ERROR no clipboard support
-
- Portability X/Open BSD SYS V
- PDC_getclipboard - - -
- PDC_setclipboard - - -
- PDC_freeclipboard - - -
- PDC_clearclipboard - - -
-
-**man-end****************************************************************/
-
-/* global clipboard contents, should be NULL if none set */
-
-static char *pdc_DOS_clipboard = NULL;
-
-int PDC_getclipboard(char **contents, long *length)
-{
- int len;
-
- PDC_LOG(("PDC_getclipboard() - called\n"));
-
- if (!pdc_DOS_clipboard)
- return PDC_CLIP_EMPTY;
-
- len = strlen(pdc_DOS_clipboard);
- if ((*contents = malloc(len + 1)) == NULL)
- return PDC_CLIP_MEMORY_ERROR;
-
- strcpy(*contents, pdc_DOS_clipboard);
- *length = len;
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_setclipboard(const char *contents, long length)
-{
- PDC_LOG(("PDC_setclipboard() - called\n"));
-
- if (pdc_DOS_clipboard)
- {
- free(pdc_DOS_clipboard);
- pdc_DOS_clipboard = NULL;
- }
-
- if (contents)
- {
- if ((pdc_DOS_clipboard = malloc(length + 1)) == NULL)
- return PDC_CLIP_MEMORY_ERROR;
-
- strcpy(pdc_DOS_clipboard, contents);
- }
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_freeclipboard(char *contents)
-{
- PDC_LOG(("PDC_freeclipboard() - called\n"));
-
- /* should we also free empty the system clipboard? probably not */
-
- if (contents)
- {
-
- /* NOTE: We free the memory, but we can not set caller's pointer
- to NULL, so if caller calls again then will try to access
- free'd memory. We 1st overwrite memory with a string so if
- caller tries to use free memory they won't get what they
- expect & hopefully notice. */
-
- /* memset(contents, 0xFD, strlen(contents)); */
-
- if (strlen(contents) >= strlen("PDCURSES"))
- strcpy(contents, "PDCURSES");
-
- free(contents);
- }
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_clearclipboard(void)
-{
- PDC_LOG(("PDC_clearclipboard() - called\n"));
-
- if (pdc_DOS_clipboard)
- {
- free(pdc_DOS_clipboard);
- pdc_DOS_clipboard = NULL;
- }
-
- return PDC_CLIP_SUCCESS;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcdisp.c b/payloads/libpayload/curses/PDCurses-3.4/dos/pdcdisp.c
deleted file mode 100644
index d170cb1..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcdisp.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcdos.h"
-
-RCSID("$Id: pdcdisp.c,v 1.65 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/* ACS definitions originally by jshumate at wrdis01.robins.af.mil -- these
- match code page 437 and compatible pages (CP850, CP852, etc.) */
-
-#ifdef CHTYPE_LONG
-
-# define A(x) ((chtype)x | A_ALTCHARSET)
-
-chtype acs_map[128] =
-{
- A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10),
- A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18), A(19),
- A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27), A(28),
- A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&', '\'', '(',
- ')', '*',
-
- A(0x1a), A(0x1b), A(0x18), A(0x19),
-
- '/',
-
- 0xdb,
-
- '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
- '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
-
- A(0x04), 0xb1,
-
- 'b', 'c', 'd', 'e',
-
- 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d, 0x2d,
- 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3, 0xf2, 0xe3,
- 0xd8, 0x9c, 0xf9,
-
- A(127)
-};
-
-# undef A
-
-#endif
-
-#ifdef __PACIFIC__
-void movedata(unsigned sseg, unsigned soff, unsigned dseg,
- unsigned doff, unsigned n)
-{
- far char *src = MK_FP(sseg, soff);
- far char *dst = MK_FP(dseg, doff);
-
- while (n--)
- *dst++ = *src++;
-}
-#endif
-
-/* position hardware cursor at (y, x) */
-
-void PDC_gotoyx(int row, int col)
-{
- PDCREGS regs;
-
- PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
-
- regs.h.ah = 0x02;
- regs.h.bh = 0;
- regs.h.dh = (unsigned char) row;
- regs.h.dl = (unsigned char) col;
- PDCINT(0x10, regs);
-}
-
-/* update the given physical line to look like the corresponding line in
- curscr */
-
-void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
-{
- int j;
-
- PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
-
- if (pdc_direct_video)
- {
-#if SMALL || MEDIUM
-# ifndef __PACIFIC__
- struct SREGS segregs;
-# endif
- int ds;
-#endif
- /* this should be enough for the maximum width of a screen */
-
- struct {unsigned char text, attr;} temp_line[256];
-
- /* replace the attribute part of the chtype with the actual
- color value for each chtype in the line */
-
- for (j = 0; j < len; j++)
- {
- chtype ch = srcp[j];
-
- temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
-#ifdef CHTYPE_LONG
- if (ch & A_ALTCHARSET && !(ch & 0xff80))
- ch = acs_map[ch & 0x7f];
-#endif
- temp_line[j].text = ch & 0xff;
- }
-
-#ifdef __DJGPP__
- dosmemput(temp_line, len * 2,
- (unsigned long)_FAR_POINTER(pdc_video_seg,
- pdc_video_ofs + (lineno * curscr->_maxx + x) * 2));
-#else
-# if SMALL || MEDIUM
-# ifdef __PACIFIC__
- ds = FP_SEG((void far *) temp_line);
-# else
- segread(&segregs);
- ds = segregs.ds;
-# endif
- movedata(ds, (int)temp_line, pdc_video_seg,
- pdc_video_ofs + (lineno * curscr->_maxx + x) * 2, len * 2);
-# else
- memcpy((void *)_FAR_POINTER(pdc_video_seg,
- pdc_video_ofs + (lineno * curscr->_maxx + x) * 2),
- temp_line, len * 2);
-# endif
-#endif
-
- }
- else
- for (j = 0; j < len;)
- {
- PDCREGS regs;
- unsigned short count = 1;
- chtype ch = srcp[j];
-
- while ((j + count < len) && (ch == srcp[j + count]))
- count++;
-
- PDC_gotoyx(lineno, j + x);
-
- regs.h.ah = 0x09;
- regs.W.bx = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
- regs.W.cx = count;
-#ifdef CHTYPE_LONG
- if (ch & A_ALTCHARSET && !(ch & 0xff80))
- ch = acs_map[ch & 0x7f];
-#endif
- regs.h.al = (unsigned char) (ch & 0xff);
-
- PDCINT(0x10, regs);
-
- j += count;
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcdos.h b/payloads/libpayload/curses/PDCurses-3.4/dos/pdcdos.h
deleted file mode 100644
index 99b0368..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcdos.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: pdcdos.h,v 1.30 2008/07/13 16:08:17 wmcbrine Exp $ */
-
-#include <curspriv.h>
-#include <string.h>
-
-#if defined(_MSC_VER) || defined(_QC)
-# define MSC 1
-#endif
-
-#if defined(__PACIFIC__) && !defined(__SMALL__)
-# define __SMALL__
-#endif
-
-#if defined(__HIGHC__) || MSC
-# include <bios.h>
-#endif
-
-/*----------------------------------------------------------------------
- * MEMORY MODEL SUPPORT:
- *
- * MODELS
- * TINY cs,ds,ss all in 1 segment (not enough memory!)
- * SMALL cs:1 segment, ds:1 segment
- * MEDIUM cs:many segments, ds:1 segment
- * COMPACT cs:1 segment, ds:many segments
- * LARGE cs:many segments, ds:many segments
- * HUGE cs:many segments, ds:segments > 64K
- */
-
-#ifdef __TINY__
-# define SMALL 1
-#endif
-#ifdef __SMALL__
-# define SMALL 1
-#endif
-#ifdef __MEDIUM__
-# define MEDIUM 1
-#endif
-#ifdef __COMPACT__
-# define COMPACT 1
-#endif
-#ifdef __LARGE__
-# define LARGE 1
-#endif
-#ifdef __HUGE__
-# define HUGE 1
-#endif
-
-#include <dos.h>
-
-extern unsigned char *pdc_atrtab;
-extern int pdc_adapter;
-extern int pdc_scrnmode;
-extern int pdc_font;
-extern bool pdc_direct_video;
-extern bool pdc_bogus_adapter;
-extern unsigned pdc_video_seg;
-extern unsigned pdc_video_ofs;
-
-#ifdef __DJGPP__ /* Note: works only in plain DOS... */
-# if DJGPP == 2
-# define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o)))
-# else
-# define _FAR_POINTER(s,o) (0xe0000000 + (((int)(s)) << 4) + ((int)(o)))
-# endif
-# define _FP_SEGMENT(p) (unsigned short)((((long)p) >> 4) & 0xffff)
-#else
-# ifdef __TURBOC__
-# define _FAR_POINTER(s,o) MK_FP(s,o)
-# else
-# if defined(__WATCOMC__) && defined(__FLAT__)
-# define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o)))
-# else
-# define _FAR_POINTER(s,o) (((long)s << 16) | (long)o)
-# endif
-# endif
-# define _FP_SEGMENT(p) (unsigned short)(((long)p) >> 4)
-#endif
-#define _FP_OFFSET(p) ((unsigned short)p & 0x000f)
-
-#ifdef __DJGPP__
-# include <sys/movedata.h>
-unsigned char getdosmembyte(int offs);
-unsigned short getdosmemword(int offs);
-unsigned long getdosmemdword(int offs);
-void setdosmembyte(int offs, unsigned char b);
-void setdosmemword(int offs, unsigned short w);
-#else
-# if SMALL || MEDIUM || MSC
-# define PDC_FAR far
-# else
-# define PDC_FAR
-# endif
-# define getdosmembyte(offs) \
- (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs)))
-# define getdosmemword(offs) \
- (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs)))
-# define getdosmemdword(offs) \
- (*((unsigned long PDC_FAR *) _FAR_POINTER(0,offs)))
-# define setdosmembyte(offs,x) \
- (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs)) = (x))
-# define setdosmemword(offs,x) \
- (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs)) = (x))
-#endif
-
-#if defined(__WATCOMC__) && defined(__386__)
-
-typedef union
-{
- struct
- {
- unsigned long edi, esi, ebp, res, ebx, edx, ecx, eax;
- } d;
-
- struct
- {
- unsigned short di, di_hi, si, si_hi, bp, bp_hi, res, res_hi,
- bx, bx_hi, dx, dx_hi, cx, cx_hi, ax, ax_hi,
- flags, es, ds, fs, gs, ip, cs, sp, ss;
- } w;
-
- struct
- {
- unsigned char edi[4], esi[4], ebp[4], res[4],
- bl, bh, ebx_b2, ebx_b3, dl, dh, edx_b2, edx_b3,
- cl, ch, ecx_b2, ecx_b3, al, ah, eax_b2, eax_b3;
- } h;
-} pdc_dpmi_regs;
-
-void PDC_dpmi_int(int, pdc_dpmi_regs *);
-
-#endif
-
-#ifdef __DJGPP__
-# include <dpmi.h>
-# define PDCREGS __dpmi_regs
-# define PDCINT(vector, regs) __dpmi_int(vector, ®s)
-#else
-# ifdef __WATCOMC__
-# ifdef __386__
-# define PDCREGS pdc_dpmi_regs
-# define PDCINT(vector, regs) PDC_dpmi_int(vector, ®s)
-# else
-# define PDCREGS union REGPACK
-# define PDCINT(vector, regs) intr(vector, ®s)
-# endif
-# else
-# define PDCREGS union REGS
-# define PDCINT(vector, regs) int86(vector, ®s, ®s)
-# endif
-#endif
-
-/* Wide registers in REGS: w or x? */
-
-#ifdef __WATCOMC__
-# define W w
-#else
-# define W x
-#endif
-
-/* Monitor (terminal) type information */
-
-enum
-{
- _NONE, _MDA, _CGA,
- _EGACOLOR = 0x04, _EGAMONO,
- _VGACOLOR = 0x07, _VGAMONO,
- _MCGACOLOR = 0x0a, _MCGAMONO,
- _MDS_GENIUS = 0x30
-};
-
-/* Text-mode font size information */
-
-enum
-{
- _FONT8 = 8,
- _FONT14 = 14,
- _FONT15, /* GENIUS */
- _FONT16
-};
-
-#ifdef __PACIFIC__
-void movedata(unsigned, unsigned, unsigned, unsigned, unsigned);
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcgetsc.c b/payloads/libpayload/curses/PDCurses-3.4/dos/pdcgetsc.c
deleted file mode 100644
index 290db5a..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcgetsc.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcdos.h"
-
-RCSID("$Id: pdcgetsc.c,v 1.42 2008/07/13 16:08:17 wmcbrine Exp $")
-
-#include <stdlib.h>
-
-/* return width of screen/viewport */
-
-int PDC_get_columns(void)
-{
- PDCREGS regs;
- int cols;
- const char *env_cols;
-
- PDC_LOG(("PDC_get_columns() - called\n"));
-
- /* use the value from COLS environment variable, if set. MH 10-Jun-92 */
- /* and use the minimum of COLS and return from int10h MH 18-Jun-92 */
-
- regs.h.ah = 0x0f;
- PDCINT(0x10, regs);
- cols = (int)regs.h.ah;
-
- env_cols = getenv("COLS");
-
- if (env_cols)
- cols = min(atoi(env_cols), cols);
-
- PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols));
-
- return cols;
-}
-
-/* get the cursor size/shape */
-
-int PDC_get_cursor_mode(void)
-{
- PDC_LOG(("PDC_get_cursor_mode() - called\n"));
-
- return getdosmemword(0x460);
-}
-
-/* return number of screen rows */
-
-int PDC_get_rows(void)
-{
- const char *env_rows;
- int rows;
-
- PDC_LOG(("PDC_get_rows() - called\n"));
-
- /* use the value from LINES environment variable, if set. MH 10-Jun-92 */
- /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */
-
- rows = getdosmembyte(0x484) + 1;
- env_rows = getenv("LINES");
-
- if (env_rows)
- rows = min(atoi(env_rows), rows);
-
- if (rows == 1 && pdc_adapter == _MDS_GENIUS)
- rows = 66;
- if (rows == 1 && pdc_adapter == _MDA)
- rows = 25;
-
- if (rows == 1)
- {
- rows = 25;
- pdc_direct_video = FALSE;
- }
-
- switch (pdc_adapter)
- {
- case _EGACOLOR:
- case _EGAMONO:
- switch (rows)
- {
- case 25:
- case 43:
- break;
- default:
- rows = 25;
- }
- break;
-
- case _VGACOLOR:
- case _VGAMONO:
- break;
-
- default:
- rows = 25;
- break;
- }
-
- PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows));
-
- return rows;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdckbd.c b/payloads/libpayload/curses/PDCurses-3.4/dos/pdckbd.c
deleted file mode 100644
index c44393f..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdckbd.c
+++ /dev/null
@@ -1,511 +0,0 @@
-/* Public Domain Curses */
-
-/* MS C doesn't return flags from int86() */
-#ifdef MSC
-# define USE_KBHIT
-#endif
-
-#ifdef USE_KBHIT
-# include <conio.h>
-#endif
-
-#include "pdcdos.h"
-
-RCSID("$Id: pdckbd.c,v 1.87 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdckbd
-
- Synopsis:
- unsigned long PDC_get_input_fd(void);
-
- Description:
- PDC_get_input_fd() returns the file descriptor that PDCurses
- reads its input from. It can be used for select().
-
- Portability X/Open BSD SYS V
- PDC_get_input_fd - - -
-
-**man-end****************************************************************/
-
-#ifdef __DJGPP__
-# include <fcntl.h>
-# include <io.h>
-# include <signal.h>
-#endif
-
-/************************************************************************
- * Table for key code translation of function keys in keypad mode *
- * These values are for strict IBM keyboard compatibles only *
- ************************************************************************/
-
-static short key_table[] =
-{
- -1, ALT_ESC, -1, 0,
- -1, -1, -1, -1,
- -1, -1, -1, -1,
- -1, -1, ALT_BKSP, KEY_BTAB,
- ALT_Q, ALT_W, ALT_E, ALT_R,
- ALT_T, ALT_Y, ALT_U, ALT_I,
- ALT_O, ALT_P, ALT_LBRACKET, ALT_RBRACKET,
- ALT_ENTER, -1, ALT_A, ALT_S,
- ALT_D, ALT_F, ALT_G, ALT_H,
- ALT_J, ALT_K, ALT_L, ALT_SEMICOLON,
- ALT_FQUOTE, ALT_BQUOTE, -1, ALT_BSLASH,
- ALT_Z, ALT_X, ALT_C, ALT_V,
- ALT_B, ALT_N, ALT_M, ALT_COMMA,
- ALT_STOP, ALT_FSLASH, -1, ALT_PADSTAR,
- -1, -1, -1, KEY_F(1),
- KEY_F(2), KEY_F(3), KEY_F(4), KEY_F(5),
- KEY_F(6), KEY_F(7), KEY_F(8), KEY_F(9),
- KEY_F(10), -1, -1, KEY_HOME,
- KEY_UP, KEY_PPAGE, ALT_PADMINUS, KEY_LEFT,
- KEY_B2, KEY_RIGHT, ALT_PADPLUS, KEY_END,
- KEY_DOWN, KEY_NPAGE, KEY_IC, KEY_DC,
- KEY_F(13), KEY_F(14), KEY_F(15), KEY_F(16),
- KEY_F(17), KEY_F(18), KEY_F(19), KEY_F(20),
- KEY_F(21), KEY_F(22), KEY_F(25), KEY_F(26),
- KEY_F(27), KEY_F(28), KEY_F(29), KEY_F(30),
- KEY_F(31), KEY_F(32), KEY_F(33), KEY_F(34),
- KEY_F(37), KEY_F(38), KEY_F(39), KEY_F(40),
- KEY_F(41), KEY_F(42), KEY_F(43), KEY_F(44),
- KEY_F(45), KEY_F(46), -1, CTL_LEFT,
- CTL_RIGHT, CTL_END, CTL_PGDN, CTL_HOME,
- ALT_1, ALT_2, ALT_3, ALT_4,
- ALT_5, ALT_6, ALT_7, ALT_8,
- ALT_9, ALT_0, ALT_MINUS, ALT_EQUAL,
- CTL_PGUP, KEY_F(11), KEY_F(12), KEY_F(23),
- KEY_F(24), KEY_F(35), KEY_F(36), KEY_F(47),
- KEY_F(48), CTL_UP, CTL_PADMINUS, CTL_PADCENTER,
- CTL_PADPLUS, CTL_DOWN, CTL_INS, CTL_DEL,
- CTL_TAB, CTL_PADSLASH, CTL_PADSTAR, ALT_HOME,
- ALT_UP, ALT_PGUP, -1, ALT_LEFT,
- -1, ALT_RIGHT, -1, ALT_END,
- ALT_DOWN, ALT_PGDN, ALT_INS, ALT_DEL,
- ALT_PADSLASH, ALT_TAB, ALT_PADENTER, -1
-};
-
-unsigned long pdc_key_modifiers = 0L;
-
-static struct {unsigned short pressed, released;} button[3];
-
-static bool mouse_avail = FALSE, mouse_vis = FALSE, mouse_moved = FALSE,
- mouse_button = FALSE, key_pressed = FALSE;
-
-static unsigned char mouse_scroll = 0;
-static PDCREGS ms_regs, old_ms;
-static unsigned short shift_status, old_shift = 0;
-static unsigned char keyboard_function = 0xff, shift_function = 0xff,
- check_function = 0xff;
-
-static const unsigned short button_map[3] = {0, 2, 1};
-
-unsigned long PDC_get_input_fd(void)
-{
- PDC_LOG(("PDC_get_input_fd() - called\n"));
-
- return (unsigned long)fileno(stdin);
-}
-
-void PDC_set_keyboard_binary(bool on)
-{
- PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
-
-#ifdef __DJGPP__
- setmode(fileno(stdin), on ? O_BINARY : O_TEXT);
- signal(SIGINT, on ? SIG_IGN : SIG_DFL);
-#endif
-}
-
-/* check if a key or mouse event is waiting */
-
-bool PDC_check_key(void)
-{
- PDCREGS regs;
-
- if (shift_function == 0xff)
- {
- int scan;
-
- /* get shift status for all keyboards */
-
- regs.h.ah = 0x02;
- PDCINT(0x16, regs);
- scan = regs.h.al;
-
- /* get shift status for enhanced keyboards */
-
- regs.h.ah = 0x12;
- PDCINT(0x16, regs);
-
- if (scan == regs.h.al && getdosmembyte(0x496) == 0x10)
- {
- keyboard_function = 0x10;
- check_function = 0x11;
- shift_function = 0x12;
- }
- else
- {
- keyboard_function = 0;
- check_function = 1;
- shift_function = 2;
- }
- }
-
- regs.h.ah = shift_function;
- PDCINT(0x16, regs);
-
- shift_status = regs.W.ax;
-
- if (mouse_vis)
- {
- unsigned short i;
-
- ms_regs.W.ax = 3;
- PDCINT(0x33, ms_regs);
-
- mouse_button = FALSE;
-
- for (i = 0; i < 3; i++)
- {
- regs.W.ax = 6;
- regs.W.bx = button_map[i];
- PDCINT(0x33, regs);
- button[i].released = regs.W.bx;
- if (regs.W.bx)
- {
- ms_regs.W.cx = regs.W.cx;
- ms_regs.W.dx = regs.W.dx;
- mouse_button = TRUE;
- }
-
- regs.W.ax = 5;
- regs.W.bx = button_map[i];
- PDCINT(0x33, regs);
- button[i].pressed = regs.W.bx;
- if (regs.W.bx)
- {
- ms_regs.W.cx = regs.W.cx;
- ms_regs.W.dx = regs.W.dx;
- mouse_button = TRUE;
- }
- }
-
- mouse_scroll = ms_regs.h.bh;
-
- mouse_moved = !mouse_button && ms_regs.h.bl &&
- ms_regs.h.bl == old_ms.h.bl &&
- (((ms_regs.W.cx ^ old_ms.W.cx) >> 3) ||
- ((ms_regs.W.dx ^ old_ms.W.dx) >> 3));
-
- if (mouse_scroll || mouse_button || mouse_moved)
- return TRUE;
- }
-
- if (old_shift && !shift_status) /* modifier released */
- {
- if (!key_pressed && SP->return_key_modifiers)
- return TRUE;
- }
- else if (!old_shift && shift_status) /* modifier pressed */
- key_pressed = FALSE;
-
- old_shift = shift_status;
-
-#ifndef USE_KBHIT
- regs.h.ah = check_function;
- PDCINT(0x16, regs);
-
- return !(regs.W.flags & 64);
-#else
- return kbhit();
-#endif
-}
-
-static int _process_mouse_events(void)
-{
- int i;
- short shift_flags = 0;
-
- memset(&pdc_mouse_status, 0, sizeof(pdc_mouse_status));
-
- key_pressed = TRUE;
- old_shift = shift_status;
- SP->key_code = TRUE;
-
- /* Set shift modifiers */
-
- if (shift_status & 3)
- shift_flags |= BUTTON_SHIFT;
-
- if (shift_status & 4)
- shift_flags |= BUTTON_CONTROL;
-
- if (shift_status & 8)
- shift_flags |= BUTTON_ALT;
-
- /* Scroll wheel support for CuteMouse */
-
- if (mouse_scroll)
- {
- pdc_mouse_status.changes = mouse_scroll & 0x80 ?
- PDC_MOUSE_WHEEL_UP : PDC_MOUSE_WHEEL_DOWN;
-
- pdc_mouse_status.x = -1;
- pdc_mouse_status.y = -1;
-
- return KEY_MOUSE;
- }
-
- if (mouse_moved)
- {
- pdc_mouse_status.changes = PDC_MOUSE_MOVED;
-
- for (i = 0; i < 3; i++)
- {
- if (ms_regs.h.bl & (1 << button_map[i]))
- {
- pdc_mouse_status.button[i] = BUTTON_MOVED | shift_flags;
- pdc_mouse_status.changes |= (1 << i);
- }
- }
- }
- else /* button event */
- {
- for (i = 0; i < 3; i++)
- {
- if (button[i].pressed)
- {
- /* Check for a click -- a PRESS followed
- immediately by a release */
-
- if (!button[i].released)
- {
- if (SP->mouse_wait)
- {
- PDCREGS regs;
-
- napms(SP->mouse_wait);
-
- regs.W.ax = 6;
- regs.W.bx = button_map[i];
- PDCINT(0x33, regs);
-
- pdc_mouse_status.button[i] = regs.W.bx ?
- BUTTON_CLICKED : BUTTON_PRESSED;
- }
- else
- pdc_mouse_status.button[i] = BUTTON_PRESSED;
- }
- else
- pdc_mouse_status.button[i] = BUTTON_CLICKED;
- }
-
- if (button[i].pressed || button[i].released)
- {
- pdc_mouse_status.button[i] |= shift_flags;
- pdc_mouse_status.changes |= (1 << i);
- }
- }
- }
-
- pdc_mouse_status.x = ms_regs.W.cx >> 3;
- pdc_mouse_status.y = ms_regs.W.dx >> 3;
-
- old_ms = ms_regs;
-
- return KEY_MOUSE;
-}
-
-/* return the next available key or mouse event */
-
-int PDC_get_key(void)
-{
- PDCREGS regs;
- int key, scan;
-
- pdc_key_modifiers = 0;
-
- if (mouse_vis && (mouse_scroll || mouse_button || mouse_moved))
- return _process_mouse_events();
-
- /* Return modifiers as keys? */
-
- if (old_shift && !shift_status)
- {
- key = -1;
-
- if (old_shift & 1)
- key = KEY_SHIFT_R;
-
- if (old_shift & 2)
- key = KEY_SHIFT_L;
-
- if (shift_function == 0x12)
- {
- if (old_shift & 0x400)
- key = KEY_CONTROL_R;
-
- if (old_shift & 0x100)
- key = KEY_CONTROL_L;
-
- if (old_shift & 0x800)
- key = KEY_ALT_R;
-
- if (old_shift & 0x200)
- key = KEY_ALT_L;
- }
- else
- {
- if (old_shift & 4)
- key = KEY_CONTROL_R;
-
- if (old_shift & 8)
- key = KEY_ALT_R;
- }
-
- key_pressed = FALSE;
- old_shift = shift_status;
-
- SP->key_code = TRUE;
- return key;
- }
-
- regs.h.ah = keyboard_function;
- PDCINT(0x16, regs);
- key = regs.h.al;
- scan = regs.h.ah;
-
- if (SP->save_key_modifiers)
- {
- if (shift_status & 3)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
-
- if (shift_status & 4)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
-
- if (shift_status & 8)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
-
- if (shift_status & 0x20)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
- }
-
- if (scan == 0x1c && key == 0x0a) /* ^Enter */
- key = CTL_ENTER;
- else if (scan == 0xe0 && key == 0x0d) /* PadEnter */
- key = PADENTER;
- else if (scan == 0xe0 && key == 0x0a) /* ^PadEnter */
- key = CTL_PADENTER;
- else if (scan == 0x37 && key == 0x2a) /* Star */
- key = PADSTAR;
- else if (scan == 0x4a && key == 0x2d) /* Minus */
- key = PADMINUS;
- else if (scan == 0x4e && key == 0x2b) /* Plus */
- key = PADPLUS;
- else if (scan == 0xe0 && key == 0x2f) /* Slash */
- key = PADSLASH;
- else if (key == 0x00 || (key == 0xe0 && scan > 53 && scan != 86))
- key = (scan > 0xa7) ? -1 : key_table[scan];
-
- if (shift_status & 3)
- {
- switch (key)
- {
- case KEY_HOME: /* Shift Home */
- key = KEY_SHOME;
- break;
- case KEY_UP: /* Shift Up */
- key = KEY_SUP;
- break;
- case KEY_PPAGE: /* Shift PgUp */
- key = KEY_SPREVIOUS;
- break;
- case KEY_LEFT: /* Shift Left */
- key = KEY_SLEFT;
- break;
- case KEY_RIGHT: /* Shift Right */
- key = KEY_SRIGHT;
- break;
- case KEY_END: /* Shift End */
- key = KEY_SEND;
- break;
- case KEY_DOWN: /* Shift Down */
- key = KEY_SDOWN;
- break;
- case KEY_NPAGE: /* Shift PgDn */
- key = KEY_SNEXT;
- break;
- case KEY_IC: /* Shift Ins */
- key = KEY_SIC;
- break;
- case KEY_DC: /* Shift Del */
- key = KEY_SDC;
- }
- }
-
- key_pressed = TRUE;
- SP->key_code = ((unsigned)key >= 256);
-
- return key;
-}
-
-/* discard any pending keyboard or mouse input -- this is the core
- routine for flushinp() */
-
-void PDC_flushinp(void)
-{
- PDC_LOG(("PDC_flushinp() - called\n"));
-
- /* Force the BIOS keyboard buffer head and tail pointers to be
- the same... Real nasty trick... */
-
- setdosmemword(0x41a, getdosmemword(0x41c));
-}
-
-int PDC_mouse_set(void)
-{
- PDCREGS regs;
- unsigned long mbe = SP->_trap_mbe;
-
- if (mbe && !mouse_avail)
- {
- regs.W.ax = 0;
- PDCINT(0x33, regs);
-
- mouse_avail = !!(regs.W.ax);
- }
-
- if (mbe)
- {
- if (mouse_avail && !mouse_vis)
- {
- memset(&old_ms, 0, sizeof(old_ms));
-
- regs.W.ax = 1;
- PDCINT(0x33, regs);
-
- mouse_vis = TRUE;
- }
- }
- else
- {
- if (mouse_avail && mouse_vis)
- {
- regs.W.ax = 2;
- PDCINT(0x33, regs);
-
- mouse_vis = FALSE;
- }
- }
-
- return (mouse_avail || !mbe) ? OK : ERR;
-}
-
-int PDC_modifiers_set(void)
-{
- key_pressed = FALSE;
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcscrn.c b/payloads/libpayload/curses/PDCurses-3.4/dos/pdcscrn.c
deleted file mode 100644
index fc3bbfc..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcscrn.c
+++ /dev/null
@@ -1,757 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcdos.h"
-
-RCSID("$Id: pdcscrn.c,v 1.89 2008/07/13 16:08:17 wmcbrine Exp $")
-
-#include <stdlib.h>
-
-#ifdef CHTYPE_LONG
-# define PDC_OFFSET 32
-#else
-# define PDC_OFFSET 8
-#endif
-
-/* COLOR_PAIR to attribute encoding table. */
-
-unsigned char *pdc_atrtab = (unsigned char *)NULL;
-
-int pdc_adapter; /* screen type */
-int pdc_scrnmode; /* default screen mode */
-int pdc_font; /* default font size */
-bool pdc_direct_video; /* allow direct screen memory writes */
-bool pdc_bogus_adapter; /* TRUE if adapter has insane values */
-unsigned pdc_video_seg; /* video base segment */
-unsigned pdc_video_ofs; /* video base offset */
-
-static short curstoreal[16], realtocurs[16] =
-{
- COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED,
- COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8,
- COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8,
- COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8
-};
-
-static bool sizeable = FALSE; /* TRUE if adapter is resizeable */
-
-static unsigned short *saved_screen = NULL;
-static int saved_lines = 0;
-static int saved_cols = 0;
-
-static int saved_scrnmode[3];
-static int saved_font[3];
-
-/* Thanks to Jeff Duntemann, K16RA for providing the impetus
- (through the Dr. Dobbs Journal, March 1989 issue) for getting
- the routines below merged into Bjorn Larsson's PDCurses 1.3...
- -- frotz at dri.com 900730 */
-
-/* _get_font() - Get the current font size */
-
-static int _get_font(void)
-{
- int retval;
-
- retval = getdosmemword(0x485);
-
- /* Assume the MDS Genius is in 66 line mode. */
-
- if ((retval == 0) && (pdc_adapter == _MDS_GENIUS))
- retval = _FONT15;
-
- switch (pdc_adapter)
- {
- case _MDA:
- retval = 10; /* POINTS is not certain on MDA/Hercules */
- break;
-
- case _EGACOLOR:
- case _EGAMONO:
- switch (retval)
- {
- case _FONT8:
- case _FONT14:
- break;
- default:
- retval = _FONT14;
- }
- break;
-
- case _CGA:
- retval = _FONT8;
- }
-
- return retval;
-}
-
-/* _set_font() - Sets the current font size, if the adapter allows such a
- change. It is an error to attempt to change the font size on a
- "bogus" adapter. The reason for this is that we have a known video
- adapter identity problem. e.g. Two adapters report the same identifying
- characteristics. */
-
-static void _set_font(int size)
-{
- PDCREGS regs;
-
- if (pdc_bogus_adapter)
- return;
-
- switch (pdc_adapter)
- {
- case _CGA:
- case _MDA:
- case _MCGACOLOR:
- case _MCGAMONO:
- case _MDS_GENIUS:
- break;
-
- case _EGACOLOR:
- case _EGAMONO:
- if (sizeable && (pdc_font != size))
- {
- switch (size)
- {
- case _FONT8:
- regs.W.ax = 0x1112;
- regs.h.bl = 0x00;
- PDCINT(0x10, regs);
- break;
- case _FONT14:
- regs.W.ax = 0x1111;
- regs.h.bl = 0x00;
- PDCINT(0x10, regs);
- }
- }
- break;
-
- case _VGACOLOR:
- case _VGAMONO:
- if (sizeable && (pdc_font != size))
- {
- switch (size)
- {
- case _FONT8:
- regs.W.ax = 0x1112;
- regs.h.bl = 0x00;
- PDCINT(0x10, regs);
- break;
- case _FONT14:
- regs.W.ax = 0x1111;
- regs.h.bl = 0x00;
- PDCINT(0x10, regs);
- break;
- case _FONT16:
- regs.W.ax = 0x1114;
- regs.h.bl = 0x00;
- PDCINT(0x10, regs);
- }
- }
- }
-
- curs_set(SP->visibility);
-
- pdc_font = _get_font();
-}
-
-/* _set_80x25() - force a known screen state: 80x25 text mode. Forces the
- appropriate 80x25 alpha mode given the display adapter. */
-
-static void _set_80x25(void)
-{
- PDCREGS regs;
-
- switch (pdc_adapter)
- {
- case _CGA:
- case _EGACOLOR:
- case _EGAMONO:
- case _VGACOLOR:
- case _VGAMONO:
- case _MCGACOLOR:
- case _MCGAMONO:
- regs.h.ah = 0x00;
- regs.h.al = 0x03;
- PDCINT(0x10, regs);
- break;
- case _MDA:
- regs.h.ah = 0x00;
- regs.h.al = 0x07;
- PDCINT(0x10, regs);
- }
-}
-
-/* _get_scrn_mode() - Return the current BIOS video mode */
-
-static int _get_scrn_mode(void)
-{
- PDCREGS regs;
-
- regs.h.ah = 0x0f;
- PDCINT(0x10, regs);
-
- return (int)regs.h.al;
-}
-
-/* _set_scrn_mode() - Sets the BIOS Video Mode Number only if it is
- different from the current video mode. */
-
-static void _set_scrn_mode(int new_mode)
-{
- PDCREGS regs;
-
- if (_get_scrn_mode() != new_mode)
- {
- regs.h.ah = 0;
- regs.h.al = (unsigned char) new_mode;
- PDCINT(0x10, regs);
- }
-
- pdc_font = _get_font();
- pdc_scrnmode = new_mode;
- LINES = PDC_get_rows();
- COLS = PDC_get_columns();
-}
-
-/* _sanity_check() - A video adapter identification sanity check. This
- routine will force sane values for various control flags. */
-
-static int _sanity_check(int adapter)
-{
- int fontsize = _get_font();
- int rows = PDC_get_rows();
-
- PDC_LOG(("_sanity_check() - called: Adapter %d\n", adapter));
-
- switch (adapter)
- {
- case _EGACOLOR:
- case _EGAMONO:
- switch (rows)
- {
- case 25:
- case 43:
- break;
- default:
- pdc_bogus_adapter = TRUE;
- }
-
- switch (fontsize)
- {
- case _FONT8:
- case _FONT14:
- break;
- default:
- pdc_bogus_adapter = TRUE;
- }
- break;
-
- case _VGACOLOR:
- case _VGAMONO:
- break;
-
- case _CGA:
- case _MDA:
- case _MCGACOLOR:
- case _MCGAMONO:
- switch (rows)
- {
- case 25:
- break;
- default:
- pdc_bogus_adapter = TRUE;
- }
- break;
-
- default:
- pdc_bogus_adapter = TRUE;
- }
-
- if (pdc_bogus_adapter)
- {
- sizeable = FALSE;
- pdc_direct_video = FALSE;
- }
-
- return adapter;
-}
-
-/* _query_adapter_type() - Determine PC video adapter type. */
-
-static int _query_adapter_type(void)
-{
- PDCREGS regs;
- int retval = _NONE;
-
- /* thanks to paganini at ax.apc.org for the GO32 fix */
-
-#if !defined(__DJGPP__) && !defined(__WATCOMC__)
- struct SREGS segs;
-#endif
- short video_base = getdosmemword(0x463);
-
- PDC_LOG(("_query_adapter_type() - called\n"));
-
- /* attempt to call VGA Identify Adapter Function */
-
- regs.W.ax = 0x1a00;
- PDCINT(0x10, regs);
-
- if ((regs.h.al == 0x1a) && (retval == _NONE))
- {
- /* We know that the PS/2 video BIOS is alive and well. */
-
- switch (regs.h.al)
- {
- case 0:
- retval = _NONE;
- break;
- case 1:
- retval = _MDA;
- break;
- case 2:
- retval = _CGA;
- break;
- case 4:
- retval = _EGACOLOR;
- sizeable = TRUE;
- break;
- case 5:
- retval = _EGAMONO;
- break;
- case 26: /* ...alt. VGA BIOS... */
- case 7:
- retval = _VGACOLOR;
- sizeable = TRUE;
- break;
- case 8:
- retval = _VGAMONO;
- break;
- case 10:
- case 13:
- retval = _MCGACOLOR;
- break;
- case 12:
- retval = _MCGAMONO;
- break;
- default:
- retval = _CGA;
- }
- }
- else
- {
- /* No VGA BIOS, check for an EGA BIOS by selecting an
- Alternate Function Service...
-
- bx == 0x0010 --> return EGA information */
-
- regs.h.ah = 0x12;
- regs.W.bx = 0x10;
- PDCINT(0x10, regs);
-
- if ((regs.h.bl != 0x10) && (retval == _NONE))
- {
- /* An EGA BIOS exists */
-
- regs.h.ah = 0x12;
- regs.h.bl = 0x10;
- PDCINT(0x10, regs);
-
- if (regs.h.bh == 0)
- retval = _EGACOLOR;
- else
- retval = _EGAMONO;
- }
- else if (retval == _NONE)
- {
- /* Now we know we only have CGA or MDA */
-
- PDCINT(0x11, regs);
-
- switch (regs.h.al & 0x30)
- {
- case 0x10:
- case 0x20:
- retval = _CGA;
- break;
- case 0x30:
- retval = _MDA;
- break;
- default:
- retval = _NONE;
- }
- }
- }
-
- if (video_base == 0x3d4)
- {
- pdc_video_seg = 0xb800;
- switch (retval)
- {
- case _EGAMONO:
- retval = _EGACOLOR;
- break;
- case _VGAMONO:
- retval = _VGACOLOR;
- }
- }
-
- if (video_base == 0x3b4)
- {
- pdc_video_seg = 0xb000;
- switch (retval)
- {
- case _EGACOLOR:
- retval = _EGAMONO;
- break;
- case _VGACOLOR:
- retval = _VGAMONO;
- }
- }
-
- if ((retval == _NONE)
-#ifndef CGA_DIRECT
- || (retval == _CGA)
-#endif
- )
- pdc_direct_video = FALSE;
-
- if ((unsigned)pdc_video_seg == 0xb000)
- SP->mono = TRUE;
- else
- SP->mono = FALSE;
-
- /* Check for DESQview shadow buffer
- thanks to paganini at ax.apc.org for the GO32 fix */
-
-#ifndef __WATCOMC__
- regs.h.ah = 0xfe;
- regs.h.al = 0;
- regs.x.di = pdc_video_ofs;
-# ifdef __DJGPP__
- regs.x.es = pdc_video_seg;
- __dpmi_int(0x10, ®s);
- pdc_video_seg = regs.x.es;
-# else
- segs.es = pdc_video_seg;
- int86x(0x10, ®s, ®s, &segs);
- pdc_video_seg = segs.es;
-# endif
- pdc_video_ofs = regs.x.di;
-#endif
- if (!pdc_adapter)
- pdc_adapter = retval;
-
- return _sanity_check(retval);
-}
-
-/* close the physical screen -- may restore the screen to its state
- before PDC_scr_open(); miscellaneous cleanup */
-
-void PDC_scr_close(void)
-{
-#if SMALL || MEDIUM
-# ifndef __PACIFIC__
- struct SREGS segregs;
-# endif
- int ds;
-#endif
- PDC_LOG(("PDC_scr_close() - called\n"));
-
- if (getenv("PDC_RESTORE_SCREEN") && saved_screen)
- {
-#ifdef __DJGPP__
- dosmemput(saved_screen, saved_lines * saved_cols * 2,
- (unsigned long)_FAR_POINTER(pdc_video_seg,
- pdc_video_ofs));
-#else
-# if (SMALL || MEDIUM)
-# ifdef __PACIFIC__
- ds = FP_SEG((void far *)saved_screen);
-# else
- segread(&segregs);
- ds = segregs.ds;
-# endif
- movedata(ds, (int)saved_screen, pdc_video_seg, pdc_video_ofs,
- (saved_lines * saved_cols * 2));
-# else
- memcpy((void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs),
- (void *)saved_screen, (saved_lines * saved_cols * 2));
-# endif
-#endif
- free(saved_screen);
- saved_screen = NULL;
- }
-
- reset_shell_mode();
-
- if (SP->visibility != 1)
- curs_set(1);
-
- /* Position cursor to the bottom left of the screen. */
-
- PDC_gotoyx(PDC_get_rows() - 2, 0);
-}
-
-void PDC_scr_free(void)
-{
- if (SP)
- free(SP);
- if (pdc_atrtab)
- free(pdc_atrtab);
-
- pdc_atrtab = (unsigned char *)NULL;
-}
-
-/* open the physical screen -- allocate SP, miscellaneous intialization,
- and may save the existing screen for later restoration */
-
-int PDC_scr_open(int argc, char **argv)
-{
-#if SMALL || MEDIUM
-# ifndef __PACIFIC__
- struct SREGS segregs;
-# endif
- int ds;
-#endif
- int i;
-
- PDC_LOG(("PDC_scr_open() - called\n"));
-
- SP = calloc(1, sizeof(SCREEN));
- pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1);
-
- if (!SP || !pdc_atrtab)
- return ERR;
-
- for (i = 0; i < 16; i++)
- curstoreal[realtocurs[i]] = i;
-
- SP->orig_attr = FALSE;
-
- pdc_direct_video = TRUE; /* Assume that we can */
- pdc_video_seg = 0xb000; /* Base screen segment addr */
- pdc_video_ofs = 0x0; /* Base screen segment ofs */
-
- pdc_adapter = _query_adapter_type();
- pdc_scrnmode = _get_scrn_mode();
- pdc_font = _get_font();
-
- SP->lines = PDC_get_rows();
- SP->cols = PDC_get_columns();
-
- SP->mouse_wait = PDC_CLICK_PERIOD;
- SP->audible = TRUE;
-
- /* If the environment variable PDCURSES_BIOS is set, the DOS int10()
- BIOS calls are used in place of direct video memory access. */
-
- if (getenv("PDCURSES_BIOS"))
- pdc_direct_video = FALSE;
-
- /* This code for preserving the current screen. */
-
- if (getenv("PDC_RESTORE_SCREEN"))
- {
- saved_lines = SP->lines;
- saved_cols = SP->cols;
-
- saved_screen = malloc(saved_lines * saved_cols * 2);
-
- if (!saved_screen)
- {
- SP->_preserve = FALSE;
- return OK;
- }
-#ifdef __DJGPP__
- dosmemget((unsigned long)_FAR_POINTER(pdc_video_seg, pdc_video_ofs),
- saved_lines * saved_cols * 2, saved_screen);
-#else
-# if SMALL || MEDIUM
-# ifdef __PACIFIC__
- ds = FP_SEG((void far *) saved_screen);
-# else
- segread(&segregs);
- ds = segregs.ds;
-# endif
- movedata(pdc_video_seg, pdc_video_ofs, ds, (int)saved_screen,
- (saved_lines * saved_cols * 2));
-# else
- memcpy((void *)saved_screen,
- (void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs),
- (saved_lines * saved_cols * 2));
-# endif
-#endif
- }
-
- SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
-
- return OK;
-}
-
-/* the core of resize_term() */
-
-int PDC_resize_screen(int nlines, int ncols)
-{
- PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
- nlines, ncols));
-
- /* Trash the stored value of orig_cursor -- it's only good if the
- video mode doesn't change */
-
- SP->orig_cursor = 0x0607;
-
- switch (pdc_adapter)
- {
- case _EGACOLOR:
- if (nlines >= 43)
- _set_font(_FONT8);
- else
- _set_80x25();
- break;
-
- case _VGACOLOR:
- if (nlines > 28)
- _set_font(_FONT8);
- else
- if (nlines > 25)
- _set_font(_FONT14);
- else
- _set_80x25();
- }
-
- PDC_set_blink(COLORS == 8);
-
- return OK;
-}
-
-void PDC_reset_prog_mode(void)
-{
- PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
-}
-
-void PDC_reset_shell_mode(void)
-{
- PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
-}
-
-void PDC_restore_screen_mode(int i)
-{
- if (i >= 0 && i <= 2)
- {
- pdc_font = _get_font();
- _set_font(saved_font[i]);
-
- if (_get_scrn_mode() != saved_scrnmode[i])
- _set_scrn_mode(saved_scrnmode[i]);
- }
-}
-
-void PDC_save_screen_mode(int i)
-{
- if (i >= 0 && i <= 2)
- {
- saved_font[i] = pdc_font;
- saved_scrnmode[i] = pdc_scrnmode;
- }
-}
-
-void PDC_init_pair(short pair, short fg, short bg)
-{
- unsigned char att, temp_bg;
- chtype i;
-
- fg = curstoreal[fg];
- bg = curstoreal[bg];
-
- for (i = 0; i < PDC_OFFSET; i++)
- {
- att = fg | (bg << 4);
-
- if (i & (A_REVERSE >> PDC_ATTR_SHIFT))
- att = bg | (fg << 4);
- if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT))
- att = 1;
- if (i & (A_INVIS >> PDC_ATTR_SHIFT))
- {
- temp_bg = att >> 4;
- att = temp_bg << 4 | temp_bg;
- }
- if (i & (A_BOLD >> PDC_ATTR_SHIFT))
- att |= 8;
- if (i & (A_BLINK >> PDC_ATTR_SHIFT))
- att |= 128;
-
- pdc_atrtab[pair * PDC_OFFSET + i] = att;
- }
-}
-
-int PDC_pair_content(short pair, short *fg, short *bg)
-{
- *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F];
- *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4];
-
- return OK;
-}
-
-/* _egapal() - Find the EGA palette value (0-63) for the color (0-15).
- On VGA, this is an index into the DAC. */
-
-static short _egapal(short color)
-{
- PDCREGS regs;
-
- regs.W.ax = 0x1007;
- regs.h.bl = curstoreal[color];
-
- PDCINT(0x10, regs);
-
- return regs.h.bh;
-}
-
-bool PDC_can_change_color(void)
-{
- return (pdc_adapter == _VGACOLOR);
-}
-
-/* These are only valid when pdc_adapter == _VGACOLOR */
-
-int PDC_color_content(short color, short *red, short *green, short *blue)
-{
- PDCREGS regs;
-
- /* Read single DAC register */
-
- regs.W.ax = 0x1015;
- regs.h.bl = _egapal(color);
-
- PDCINT(0x10, regs);
-
- /* Scale and store */
-
- *red = DIVROUND((unsigned)(regs.h.dh) * 1000, 63);
- *green = DIVROUND((unsigned)(regs.h.ch) * 1000, 63);
- *blue = DIVROUND((unsigned)(regs.h.cl) * 1000, 63);
-
- return OK;
-}
-
-int PDC_init_color(short color, short red, short green, short blue)
-{
- PDCREGS regs;
-
- /* Scale */
-
- regs.h.dh = DIVROUND((unsigned)red * 63, 1000);
- regs.h.ch = DIVROUND((unsigned)green * 63, 1000);
- regs.h.cl = DIVROUND((unsigned)blue * 63, 1000);
-
- /* Set single DAC register */
-
- regs.W.ax = 0x1010;
- regs.W.bx = _egapal(color);
-
- PDCINT(0x10, regs);
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcsetsc.c b/payloads/libpayload/curses/PDCurses-3.4/dos/pdcsetsc.c
deleted file mode 100644
index 4b2314e..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcsetsc.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcdos.h"
-
-RCSID("$Id: pdcsetsc.c,v 1.39 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdcsetsc
-
- Synopsis:
- int PDC_set_blink(bool blinkon);
- void PDC_set_title(const char *title);
-
- Description:
- PDC_set_blink() toggles whether the A_BLINK attribute sets an
- actual blink mode (TRUE), or sets the background color to high
- intensity (FALSE). The default is platform-dependent (FALSE in
- most cases). It returns OK if it could set the state to match
- the given parameter, ERR otherwise. Current platforms also
- adjust the value of COLORS according to this function -- 16 for
- FALSE, and 8 for TRUE.
-
- PDC_set_title() sets the title of the window in which the curses
- program is running. This function may not do anything on some
- platforms. (Currently it only works in Win32 and X11.)
-
- Portability X/Open BSD SYS V
- PDC_set_blink - - -
- PDC_set_title - - -
-
-**man-end****************************************************************/
-
-int PDC_curs_set(int visibility)
-{
- PDCREGS regs;
- int ret_vis, start, end;
-
- PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
-
- ret_vis = SP->visibility;
- SP->visibility = visibility;
-
- switch (visibility)
- {
- case 0: /* invisible */
- start = 32;
- end = 0; /* was 32 */
- break;
- case 2: /* highly visible */
- start = 0; /* full-height block */
- end = 7;
- break;
- default: /* normal visibility */
- start = (SP->orig_cursor >> 8) & 0xff;
- end = SP->orig_cursor & 0xff;
- }
-
- /* if scrnmode is not set, some BIOSes hang */
-
- regs.h.ah = 0x01;
- regs.h.al = (unsigned char)pdc_scrnmode;
- regs.h.ch = (unsigned char)start;
- regs.h.cl = (unsigned char)end;
- PDCINT(0x10, regs);
-
- return ret_vis;
-}
-
-void PDC_set_title(const char *title)
-{
- PDC_LOG(("PDC_set_title() - called: <%s>\n", title));
-}
-
-int PDC_set_blink(bool blinkon)
-{
- PDCREGS regs;
-
- switch (pdc_adapter)
- {
- case _EGACOLOR:
- case _EGAMONO:
- case _VGACOLOR:
- case _VGAMONO:
- regs.W.ax = 0x1003;
- regs.W.bx = blinkon;
-
- PDCINT(0x10, regs);
-
- if (pdc_color_started)
- COLORS = blinkon ? 8 : 16;
-
- break;
- default:
- COLORS = 8;
- }
-
- return (COLORS - (blinkon * 8) != 8) ? OK : ERR;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcutil.c b/payloads/libpayload/curses/PDCurses-3.4/dos/pdcutil.c
deleted file mode 100644
index b209352..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/pdcutil.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcdos.h"
-
-RCSID("$Id: pdcutil.c,v 1.24 2008/07/13 16:08:17 wmcbrine Exp $")
-
-void PDC_beep(void)
-{
- PDCREGS regs;
-
- PDC_LOG(("PDC_beep() - called\n"));
-
- regs.W.ax = 0x0e07; /* Write ^G in TTY fashion */
- regs.W.bx = 0;
- PDCINT(0x10, regs);
-}
-
-void PDC_napms(int ms)
-{
- PDCREGS regs;
- long goal, start, current;
-
- PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
-
- goal = DIVROUND((long)ms, 50);
- if (!goal)
- goal++;
-
- start = getdosmemdword(0x46c);
-
- goal += start;
-
- while (goal > (current = getdosmemdword(0x46c)))
- {
- if (current < start) /* in case of midnight reset */
- return;
-
- regs.W.ax = 0x1680;
- PDCINT(0x2f, regs);
- PDCINT(0x28, regs);
- }
-}
-
-const char *PDC_sysname(void)
-{
- return "DOS";
-}
-
-#ifdef __DJGPP__
-
-unsigned char getdosmembyte(int offset)
-{
- unsigned char b;
-
- dosmemget(offset, sizeof(unsigned char), &b);
- return b;
-}
-
-unsigned short getdosmemword(int offset)
-{
- unsigned short w;
-
- dosmemget(offset, sizeof(unsigned short), &w);
- return w;
-}
-
-unsigned long getdosmemdword(int offset)
-{
- unsigned long dw;
-
- dosmemget(offset, sizeof(unsigned long), &dw);
- return dw;
-}
-
-void setdosmembyte(int offset, unsigned char b)
-{
- dosmemput(&b, sizeof(unsigned char), offset);
-}
-
-void setdosmemword(int offset, unsigned short w)
-{
- dosmemput(&w, sizeof(unsigned short), offset);
-}
-
-#endif
-
-#if defined(__WATCOMC__) && defined(__386__)
-
-void PDC_dpmi_int(int vector, pdc_dpmi_regs *rmregs)
-{
- union REGPACK regs = {0};
-
- rmregs->w.ss = 0;
- rmregs->w.sp = 0;
- rmregs->w.flags = 0;
-
- regs.w.ax = 0x300;
- regs.h.bl = vector;
- regs.x.edi = FP_OFF(rmregs);
- regs.x.es = FP_SEG(rmregs);
-
- intr(0x31, ®s);
-}
-
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/wccdos16.mak b/payloads/libpayload/curses/PDCurses-3.4/dos/wccdos16.mak
deleted file mode 100644
index a0cbb22..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/wccdos16.mak
+++ /dev/null
@@ -1,48 +0,0 @@
-# Watcom WMAKE Makefile for PDCurses library - DOS (16 bit) Watcom C/C++ 10.6+
-#
-# Usage: wmake -f [path\]wccdos16.mak [DEBUG=Y] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-# Change the memory MODEL here, if desired
-MODEL = l
-
-!ifdef %PDCURSES_SRCDIR
-PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
-!else
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-
-osdir = $(PDCURSES_SRCDIR)\dos
-
-CC = wcc
-TARGET = dos
-
-CFLAGS = /bt=$(TARGET) /zq /wx /m$(MODEL) /i=$(PDCURSES_SRCDIR)
-
-!ifeq DEBUG Y
-CFLAGS += /d2 /DPDCDEBUG
-LDFLAGS = D W A op q sys $(TARGET)
-!else
-CFLAGS += /oneatx
-LDFLAGS = op q sys $(TARGET)
-!endif
-
-LIBEXE = wlib /q /n /t
-
-!include $(PDCURSES_SRCDIR)\watcom.mif
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- %write wccdos.lrf $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $@ @wccdos.lrf
- -del wccdos.lrf
- -copy $(LIBCURSES) panel.lib
-
-PLATFORM1 = Watcom C++ 16-bit DOS
-PLATFORM2 = Open Watcom 1.6 for 16-bit DOS
-ARCNAME = pdc$(VER)16w
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/dos/wccdos4g.mak b/payloads/libpayload/curses/PDCurses-3.4/dos/wccdos4g.mak
deleted file mode 100644
index e1ba1cd..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/dos/wccdos4g.mak
+++ /dev/null
@@ -1,45 +0,0 @@
-# Watcom WMAKE Makefile for PDCurses library - DOS/4GW Watcom C/C++ 10.6+
-#
-# Usage: wmake -f [path\]wccdos4g.mak [DEBUG=Y] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-!ifdef %PDCURSES_SRCDIR
-PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
-!else
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-
-osdir = $(PDCURSES_SRCDIR)\dos
-
-CC = wcc386
-TARGET = dos4g
-
-CFLAGS = /bt=$(TARGET) /zq /wx /mf /i=$(PDCURSES_SRCDIR)
-
-!ifeq DEBUG Y
-CFLAGS += /d2 /DPDCDEBUG
-LDFLAGS = D W A op q sys $(TARGET)
-!else
-CFLAGS += /oneatx
-LDFLAGS = op q sys $(TARGET)
-!endif
-
-LIBEXE = wlib /q /n /t
-
-!include $(PDCURSES_SRCDIR)\watcom.mif
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- %write wccdos.lrf $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $@ @wccdos.lrf
- -del wccdos.lrf
- -copy $(LIBCURSES) panel.lib
-
-PLATFORM1 = Watcom C++ 32-bit DOS
-PLATFORM2 = Open Watcom 1.6 for 32-bit DOS
-ARCNAME = pdc$(VER)32w
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/exp-base.def b/payloads/libpayload/curses/PDCurses-3.4/exp-base.def
deleted file mode 100644
index 222b133..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/exp-base.def
+++ /dev/null
@@ -1,374 +0,0 @@
-LINES
-COLS
-stdscr
-curscr
-SP
-Mouse_status
-COLORS
-COLOR_PAIRS
-TABSIZE
-acs_map
-ttytype
-addch
-addchnstr
-addchstr
-addnstr
-addstr
-attroff
-attron
-attrset
-attr_get
-attr_off
-attr_on
-attr_set
-baudrate
-beep
-bkgd
-bkgdset
-border
-box
-can_change_color
-cbreak
-chgat
-clearok
-clear
-clrtobot
-clrtoeol
-color_content
-color_set
-copywin
-curs_set
-def_prog_mode
-def_shell_mode
-delay_output
-delch
-deleteln
-delscreen
-delwin
-derwin
-doupdate
-dupwin
-echochar
-echo
-endwin
-erasechar
-erase
-filter
-flash
-flushinp
-getbkgd
-getnstr
-getstr
-getwin
-halfdelay
-has_colors
-has_ic
-has_il
-hline
-idcok
-idlok
-immedok
-inchnstr
-inchstr
-inch
-init_color
-init_pair
-initscr
-innstr
-insch
-insdelln
-insertln
-insnstr
-insstr
-instr
-intrflush
-isendwin
-is_linetouched
-is_wintouched
-keyname
-keypad
-killchar
-leaveok
-longname
-meta
-move
-mvaddch
-mvaddchnstr
-mvaddchstr
-mvaddnstr
-mvaddstr
-mvchgat
-mvcur
-mvdelch
-mvderwin
-mvgetch
-mvgetnstr
-mvgetstr
-mvhline
-mvinch
-mvinchnstr
-mvinchstr
-mvinnstr
-mvinsch
-mvinsnstr
-mvinsstr
-mvinstr
-mvprintw
-mvscanw
-mvvline
-mvwaddchnstr
-mvwaddchstr
-mvwaddch
-mvwaddnstr
-mvwaddstr
-mvwchgat
-mvwdelch
-mvwgetch
-mvwgetnstr
-mvwgetstr
-mvwhline
-mvwinchnstr
-mvwinchstr
-mvwinch
-mvwinnstr
-mvwinsch
-mvwinsnstr
-mvwinsstr
-mvwinstr
-mvwin
-mvwprintw
-mvwscanw
-mvwvline
-napms
-newpad
-newterm
-newwin
-nl
-nocbreak
-nodelay
-noecho
-nonl
-noqiflush
-noraw
-notimeout
-overlay
-overwrite
-pair_content
-pechochar
-pnoutrefresh
-prefresh
-printw
-putwin
-qiflush
-raw
-redrawwin
-refresh
-reset_prog_mode
-reset_shell_mode
-resetty
-ripoffline
-savetty
-scanw
-scr_dump
-scr_init
-scrl
-scrollok
-scroll
-scr_restore
-scr_set
-setscrreg
-setsyx
-set_term
-slk_attroff
-slk_attr_off
-slk_attron
-slk_attr_on
-slk_attrset
-slk_attr_set
-slk_clear
-slk_color
-slk_init
-slk_label
-slk_noutrefresh
-slk_refresh
-slk_restore
-slk_set
-slk_touch
-standend
-standout
-start_color
-subpad
-subwin
-syncok
-termattrs
-term_attrs
-termname
-timeout
-touchline
-touchwin
-typeahead
-untouchwin
-use_env
-vidattr
-vid_attr
-vidputs
-vid_puts
-vline
-vw_printw
-vwprintw
-vw_scanw
-vwscanw
-waddchnstr
-waddchstr
-waddch
-waddnstr
-waddstr
-wattroff
-wattron
-wattrset
-wattr_get
-wattr_off
-wattr_on
-wattr_set
-wbkgdset
-wbkgd
-wborder
-wchgat
-wclear
-wclrtobot
-wclrtoeol
-wcolor_set
-wcursyncup
-wdelch
-wdeleteln
-wechochar
-werase
-wgetch
-wgetnstr
-wgetstr
-whline
-winchnstr
-winchstr
-winch
-winnstr
-winsch
-winsdelln
-winsertln
-winsnstr
-winsstr
-winstr
-wmove
-wnoutrefresh
-wprintw
-wredrawln
-wrefresh
-wscanw
-wscrl
-wsetscrreg
-wstandend
-wstandout
-wsyncdown
-wsyncup
-wtimeout
-wtouchln
-wvline
-getattrs
-getbegx
-getbegy
-getmaxx
-getmaxy
-getparx
-getpary
-getcurx
-getcury
-traceoff
-traceon
-unctrl
-crmode
-nocrmode
-draino
-resetterm
-fixterm
-saveterm
-mouse_set
-mouse_on
-mouse_off
-request_mouse_pos
-map_button
-wmouse_position
-getmouse
-getbmap
-assume_default_colors
-curses_version
-has_key
-use_default_colors
-wresize
-mouseinterval
-mousemask
-mouse_trafo
-nc_getmouse
-ungetmouse
-wenclose
-wmouse_trafo
-addrawch
-insrawch
-is_termresized
-mvaddrawch
-mvdeleteln
-mvinsertln
-mvinsrawch
-mvwaddrawch
-mvwdeleteln
-mvwinsertln
-mvwinsrawch
-raw_output
-resize_term
-resize_window
-waddrawch
-winsrawch
-wordchar
-bottom_panel
-del_panel
-hide_panel
-move_panel
-new_panel
-panel_above
-panel_below
-panel_hidden
-panel_userptr
-panel_window
-replace_panel
-set_panel_userptr
-show_panel
-top_panel
-update_panels
-PDC_debug
-PDC_ungetch
-PDC_set_blink
-PDC_set_line_color
-PDC_set_title
-PDC_clearclipboard
-PDC_freeclipboard
-PDC_getclipboard
-PDC_setclipboard
-PDC_get_input_fd
-PDC_get_key_modifiers
-PDC_save_key_modifiers
-PDC_return_key_modifiers
-cur_term
-del_curterm
-putp
-restartterm
-set_curterm
-setterm
-setupterm
-tgetent
-tgetflag
-tgetnum
-tgetstr
-tgoto
-tigetflag
-tigetnum
-tigetstr
-tparm
-tputs
diff --git a/payloads/libpayload/curses/PDCurses-3.4/exp-wide.def b/payloads/libpayload/curses/PDCurses-3.4/exp-wide.def
deleted file mode 100644
index ebf6bc2..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/exp-wide.def
+++ /dev/null
@@ -1,90 +0,0 @@
-addnwstr
-addwstr
-add_wch
-add_wchnstr
-add_wchstr
-border_set
-box_set
-echo_wchar
-erasewchar
-getbkgrnd
-getcchar
-getn_wstr
-get_wch
-get_wstr
-hline_set
-innwstr
-ins_nwstr
-ins_wch
-ins_wstr
-inwstr
-in_wch
-in_wchnstr
-in_wchstr
-key_name
-killwchar
-mvaddnwstr
-mvaddwstr
-mvadd_wch
-mvadd_wchnstr
-mvadd_wchstr
-mvgetn_wstr
-mvget_wch
-mvget_wstr
-mvhline_set
-mvinnwstr
-mvins_nwstr
-mvins_wch
-mvins_wstr
-mvinwstr
-mvin_wch
-mvin_wchnstr
-mvin_wchstr
-mvvline_set
-mvwaddnwstr
-mvwaddwstr
-mvwadd_wch
-mvwadd_wchnstr
-mvwadd_wchstr
-mvwgetn_wstr
-mvwget_wch
-mvwget_wstr
-mvwhline_set
-mvwinnwstr
-mvwins_nwstr
-mvwins_wch
-mvwins_wstr
-mvwin_wch
-mvwin_wchnstr
-mvwin_wchstr
-mvwinwstr
-mvwvline_set
-pecho_wchar
-setcchar
-slk_wset
-unget_wch
-vline_set
-waddnwstr
-waddwstr
-wadd_wch
-wadd_wchnstr
-wadd_wchstr
-wbkgrnd
-wbkgrndset
-wborder_set
-wecho_wchar
-wgetbkgrnd
-wgetn_wstr
-wget_wch
-wget_wstr
-whline_set
-winnwstr
-wins_nwstr
-wins_wch
-wins_wstr
-winwstr
-win_wch
-win_wchnstr
-win_wchstr
-wunctrl
-wvline_set
diff --git a/payloads/libpayload/curses/PDCurses-3.4/install-sh b/payloads/libpayload/curses/PDCurses-3.4/install-sh
deleted file mode 100755
index fb9e848..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/install-sh
+++ /dev/null
@@ -1,253 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-#
-# Modified 1 Feb 2000 MHES to cater for mkdir -p
-#
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-mkdircmd="$mkdirprog -p"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdircmd "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-exit 0
diff --git a/payloads/libpayload/curses/PDCurses-3.4/libobjs.mif b/payloads/libpayload/curses/PDCurses-3.4/libobjs.mif
deleted file mode 100644
index 6705323..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/libobjs.mif
+++ /dev/null
@@ -1,26 +0,0 @@
-# Common elements for most of the DOS, OS/2 and Win32
-# makefiles (not Watcom or LCC)
-
-PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)/curses.h
-PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)/curspriv.h
-PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
-PANEL_HEADER = $(PDCURSES_SRCDIR)/panel.h
-TERM_HEADER = $(PDCURSES_SRCDIR)/term.h
-
-srcdir = $(PDCURSES_SRCDIR)/pdcurses
-demodir = $(PDCURSES_SRCDIR)/demos
-
-LIBOBJS = addch.$(O) addchstr.$(O) addstr.$(O) attr.$(O) beep.$(O) \
-bkgd.$(O) border.$(O) clear.$(O) color.$(O) delch.$(O) deleteln.$(O) \
-deprec.$(O) getch.$(O) getstr.$(O) getyx.$(O) inch.$(O) inchstr.$(O) \
-initscr.$(O) inopts.$(O) insch.$(O) insstr.$(O) instr.$(O) kernel.$(O) \
-keyname.$(O) mouse.$(O) move.$(O) outopts.$(O) overlay.$(O) pad.$(O) \
-panel.$(O) printw.$(O) refresh.$(O) scanw.$(O) scr_dump.$(O) scroll.$(O) \
-slk.$(O) termattr.$(O) terminfo.$(O) touch.$(O) util.$(O) window.$(O) \
-debug.$(O)
-
-PDCOBJS = pdcclip.$(O) pdcdisp.$(O) pdcgetsc.$(O) pdckbd.$(O) pdcscrn.$(O) \
-pdcsetsc.$(O) pdcutil.$(O)
-
-DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe firework.exe \
-ptest.exe rain.exe worm.exe
diff --git a/payloads/libpayload/curses/PDCurses-3.4/makedist.mif b/payloads/libpayload/curses/PDCurses-3.4/makedist.mif
deleted file mode 100644
index e7495a5..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/makedist.mif
+++ /dev/null
@@ -1,20 +0,0 @@
-# Makefile include: build a binary archive with Info-ZIP
-# under DOS, OS/2 or Win32
-
-dist: $(PDCLIBS)
- echo PDCurses $(VERDOT) for $(PLATFORM1) > file_id.diz
- echo ------------------------------------------ >> file_id.diz
- echo Public Domain Curses library for >> file_id.diz
- echo $(PLATFORM2). >> file_id.diz
- echo Source available in PDCURS$(VER).ZIP >> file_id.diz
- echo Public Domain. >> file_id.diz
- echo $(PDCURSES_SRCDIR)\README > flist
- echo $(PDCURSES_SRCDIR)\HISTORY >> flist
- echo $(PDCURSES_SRCDIR)\curses.h >> flist
- echo $(PDCURSES_SRCDIR)\panel.h >> flist
- echo $(PDCURSES_SRCDIR)\term.h >> flist
- echo $(LIBCURSES) >> flist
- echo file_id.diz >> flist
- zip -9jX $(ARCNAME) -@ <flist
- del flist
- del file_id.diz
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/README b/payloads/libpayload/curses/PDCurses-3.4/os2/README
deleted file mode 100644
index 7fde884..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/README
+++ /dev/null
@@ -1,43 +0,0 @@
-PDCurses for OS/2
-=================
-
-This directory contains PDCurses source code files specific to OS/2.
-
-
-Building
---------
-
-. Choose the appropriate makefile for your compiler:
-
- bccos2.mak - Borland C++ 2.0
- gccos2.mak - EMX 0.9b+
- iccos2.mak - C Set/2
- wccos2.mak - Watcom 10.6+ (32-bit)
-
-. Optionally, you can build in a different directory than the platform
- directory by setting PDCURSES_SRCDIR to point to the directory where
- you unpacked PDCurses, and changing to your target directory:
-
- set PDCURSES_SRCDIR=c:\pdcurses
-
-. Build it:
-
- make -f makefilename
-
- (For Watcom, use "wmake" instead of "make"; for MSVC or C Set/2,
- "nmake".) You'll get the libraries (pdcurses.lib or .a, depending on
- your compiler; and panel.lib or .a), the demos (*.exe), and a lot of
- object files. Note that the panel library is just a copy of the main
- library, provided for convenience; both panel and curses functions are
- in the main library.
-
- You can also use the optional parameter "DLL=Y" with EMX, to build the
- library as a DLL:
-
- make -f gccos2.mak DLL=Y
-
-
-Distribution Status
--------------------
-
-The files in this directory are released to the Public Domain.
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/bccos2.mak b/payloads/libpayload/curses/PDCurses-3.4/os2/bccos2.mak
deleted file mode 100644
index 1c7d77a..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/bccos2.mak
+++ /dev/null
@@ -1,90 +0,0 @@
-# Borland MAKE Makefile for PDCurses library - OS/2 BC++ 1.0+
-#
-# Usage: make -f [path\]bccos2.mak [DEBUG=] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-O = obj
-
-!ifndef PDCURSES_SRCDIR
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-!include $(PDCURSES_SRCDIR)\libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)\os2
-
-CC = bcc
-
-!ifdef DEBUG
-CFLAGS = -N -v -y -DPDCDEBUG
-!else
-CFLAGS = -O
-!endif
-
-CPPFLAGS = -I$(PDCURSES_SRCDIR)
-
-BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS)
-
-LINK = tlink
-
-LIBEXE = tlib /C /E
-
-LIBCURSES = pdcurses.lib
-
-all: $(LIBCURSES) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.exe
-
-demos: $(DEMOS)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- -del $@
- $(LIBEXE) $@ \
-+addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj \
-+border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj \
-+getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj \
-+inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj \
-+mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj \
-+printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj \
-+termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj \
-+pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj \
-+pdcsetsc.obj +pdcutil.obj ,lib.map
- -copy $(LIBCURSES) panel.lib
-
-.autodepend
-
-{$(srcdir)\}.c.obj:
- $(BUILD) $<
-
-{$(osdir)\}.c.obj:
- $(BUILD) $<
-
-{$(demodir)\}.c.obj:
- $(BUILD) $<
-
-.c.obj:
- $(BUILD) $<
-
-.obj.exe:
- $(CC) -e$@ $** $(LIBCURSES)
-
-tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
- $(CC) -e$@ $**
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
- $(BUILD) -I$(demodir) $(demodir)\tui.c
-
-tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
- $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
-
-PLATFORM1 = Borland C++ OS/2 1.0
-PLATFORM2 = Borland C/C++ OS/2 1.0
-ARCNAME = pdc$(VER)bcos2
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/gccos2.mak b/payloads/libpayload/curses/PDCurses-3.4/os2/gccos2.mak
deleted file mode 100644
index 07d4dca..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/gccos2.mak
+++ /dev/null
@@ -1,148 +0,0 @@
-# GNU MAKE Makefile for PDCurses library - OS/2 emx 0.9c+
-#
-# Usage: make -f [path\]gccos2.mak [DEBUG=Y] [EMXVIDEO=Y] [DLL=Y] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.a|testcurs.exe...]
-#
-# The EMXVIDEO option compiles with the emx video library, which
-# enables a PDCurses program to run under OS/2 and DOS.
-
-O = o
-
-ifndef PDCURSES_SRCDIR
- PDCURSES_SRCDIR = ..
-endif
-
-include $(PDCURSES_SRCDIR)/version.mif
-include $(PDCURSES_SRCDIR)/libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)/os2
-
-PDCURSES_OS2_H = $(osdir)/pdcos2.h
-
-CC = gcc
-
-CFLAGS = -I$(PDCURSES_SRCDIR) -c -Wall
-
-ifeq ($(EMXVIDEO),Y)
- CFLAGS += -DEMXVIDEO
- CCLIBS = -lvideo
- BINDFLAGS = -acm
-else
- CCLIBS =
- BINDFLAGS =
-endif
-
-ifeq ($(DEBUG),Y)
- CFLAGS += -g -DPDCDEBUG
- LDFLAGS = -g
-else
- CFLAGS += -O2
- LDFLAGS =
-endif
-
-BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
-
-DEFDEPS = $(BASEDEF)
-
-DEFFILE = pdcurses.def
-
-DLLTARGET = pdcurses.dll
-DLLFLAGS = -Zdll -Zcrtdll -Zomf
-
-LINK = gcc
-EMXBIND = emxbind
-EMXOMF = emxomf
-
-LIBEXE = ar
-LIBFLAGS = rcv
-
-ifeq ($(DLL),Y)
- CFLAGS += -Zdll -Zcrtdll -Zomf
- LDFLAGS += -Zlinker /PM:VIO -Zomf -Zcrtdll
- LIBCURSES = pdcurses.lib
- LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
- PDCLIBS = $(DLLTARGET)
- EXEPOST =
- TUIPOST =
- CLEAN = *.dll *.lib $(DEFFILE)
-else
- LIBCURSES = pdcurses.a
- LIBDEPS = $(LIBOBJS) $(PDCOBJS)
- PDCLIBS = $(LIBCURSES)
- EXEPOST = $(EMXBIND) $* $(BINDFLAGS)
- TUIPOST = $(EMXBIND) tuidemo $(BINDFLAGS)
- CLEAN = *.a testcurs newdemo xmas tuidemo firework ptest rain worm
-endif
-
-.PHONY: all libs clean demos dist
-
-all: libs demos
-
-libs: $(PDCLIBS)
-
-clean:
- -del *.o
- -del *.exe
- -del $(CLEAN)
-
-demos: $(DEMOS)
-
-DEMOOBJS = testcurs.o newdemo.o xmas.o tui.o tuidemo.o firework.o \
-ptest.o rain.o worm.o
-
-$(DEFFILE) : $(DEFDEPS)
- echo LIBRARY PDCURSES > $@
- echo DESCRIPTION 'PDCurses 3.4 Dynamic Linking library' >> $@
- echo PROTMODE >>$@
- echo DATA MULTIPLE READWRITE LOADONCALL >> $@
- echo CODE LOADONCALL >> $@
- echo EXPORTS >> $@
- type $(BASEDEF) >> $@
-
-$(LIBCURSES) : $(LIBDEPS)
- $(LIBEXE) $(LIBFLAGS) $@ $?
- -copy $(LIBCURSES) panel.a
-
-$(DLLTARGET) : $(LIBDEPS)
- $(LINK) $(DLLFLAGS) -o $(DLLTARGET) $? $(DEFFILE)
-# lxlite $(DLLTARGET)
- emximp -o $(LIBCURSES) $(DEFFILE)
-
-$(LIBOBJS) $(PDCOBJS) $(DEMOOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_OS2_H)
-$(DEMOS) : $(LIBCURSES)
-panel.o ptest.o: $(PANEL_HEADER)
-terminfo.o: $(TERM_HEADER)
-
-$(LIBOBJS) : %.o: $(srcdir)/%.c
- $(CC) -c $(CFLAGS) -o$@ $<
-
-$(PDCOBJS) : %.o: $(osdir)/%.c
- $(CC) -c $(CFLAGS) -o$@ $<
-
-firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
-ptest.exe: %.exe: %.o
- $(LINK) $(LDFLAGS) -o $* $< $(LIBCURSES) $(CCLIBS)
- $(EXEPOST)
-
-tuidemo.exe: tuidemo.o tui.o
- $(LINK) $(LDFLAGS) -o tuidemo tuidemo.o tui.o $(LIBCURSES) $(CCLIBS)
- $(TUIPOST)
-
-firework.o newdemo.o ptest.o rain.o testcurs.o worm.o xmas.o: %.o: \
-$(demodir)/%.c
- $(CC) $(CFLAGS) -o$@ $<
-
-tui.o: $(demodir)\tui.c $(demodir)\tui.h
- $(CC) $(CFLAGS) -I$(demodir) -o $@ $<
-
-tuidemo.o: $(demodir)\tuidemo.c
- $(CC) $(CFLAGS) -I$(demodir) -o $@ $<
-
-PLATFORM1 = EMX OS/2
-PLATFORM2 = EMX 0.9d for OS/2
-ARCNAME = pdc$(VER)_emx_os2
-
-include $(PDCURSES_SRCDIR)/makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/iccos2.lrf b/payloads/libpayload/curses/PDCurses-3.4/os2/iccos2.lrf
deleted file mode 100644
index b1fdf37..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/iccos2.lrf
+++ /dev/null
@@ -1,50 +0,0 @@
--+addch.obj &
--+addchstr.obj &
--+addstr.obj &
--+attr.obj &
--+beep.obj &
--+bkgd.obj &
--+border.obj &
--+clear.obj &
--+color.obj &
--+delch.obj &
--+deleteln.obj &
--+deprec.obj &
--+getch.obj &
--+getstr.obj &
--+getyx.obj &
--+inch.obj &
--+inchstr.obj &
--+initscr.obj &
--+inopts.obj &
--+insch.obj &
--+insstr.obj &
--+instr.obj &
--+kernel.obj &
--+keyname.obj &
--+mouse.obj &
--+move.obj &
--+outopts.obj &
--+overlay.obj &
--+pad.obj &
--+panel.obj &
--+printw.obj &
--+refresh.obj &
--+scanw.obj &
--+scr_dump.obj &
--+scroll.obj &
--+slk.obj &
--+termattr.obj &
--+terminfo.obj &
--+touch.obj &
--+util.obj &
--+window.obj &
--+debug.obj &
--+pdcclip.obj &
--+pdcdisp.obj &
--+pdcgetsc.obj &
--+pdckbd.obj &
--+pdcscrn.obj &
--+pdcsetsc.obj &
--+pdcutil.obj &
-,lib.map;
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/iccos2.mak b/payloads/libpayload/curses/PDCurses-3.4/os2/iccos2.mak
deleted file mode 100644
index 06a2c1f..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/iccos2.mak
+++ /dev/null
@@ -1,256 +0,0 @@
-# NMAKE Makefile for PDCurses library - OS/2 C Set/2
-#
-# Usage: nmake -f [path\]iccos2.mak [DEBUG=] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-O = obj
-
-!ifndef PDCURSES_SRCDIR
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-!include $(PDCURSES_SRCDIR)\libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)\os2
-
-PDCURSES_OS2_H = $(osdir)\pdcos2.h
-
-CC = icc
-
-!ifdef DEBUG
-CFLAGS = /Sm /Ti+ /O- /Q+ /dPDCDEBUG
-LDFLAGS = /NOLOGO /NOE /SE:160 /DEBUG /PMTYPE:VIO
-!else
-CFLAGS = /Sm /Ti- /O+ /Q+
-LDFLAGS = /NOLOGO /NOE /EXEPACK /PACKCODE /PACKDATA /PMTYPE:VIO
-!endif
-
-CPPFLAGS = -I$(PDCURSES_SRCDIR)
-
-BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS)
-
-LINK = link386
-
-LIBEXE = lib
-
-LIBCURSES = pdcurses.lib
-
-all: $(LIBCURSES) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.exe
-
-demos: $(DEMOS)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $@ @$(osdir)\iccos2.lrf
- -copy $(LIBCURSES) panel.lib
-
-addch.obj: $(srcdir)\addch.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\addch.c
-
-addchstr.obj: $(srcdir)\addchstr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\addchstr.c
-
-addstr.obj: $(srcdir)\addstr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\addstr.c
-
-attr.obj: $(srcdir)\attr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\attr.c
-
-beep.obj: $(srcdir)\beep.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\beep.c
-
-bkgd.obj: $(srcdir)\bkgd.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\bkgd.c
-
-border.obj: $(srcdir)\border.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\border.c
-
-clear.obj: $(srcdir)\clear.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\clear.c
-
-color.obj: $(srcdir)\color.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\color.c
-
-delch.obj: $(srcdir)\delch.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\delch.c
-
-deleteln.obj: $(srcdir)\deleteln.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\deleteln.c
-
-deprec.obj: $(srcdir)\deprec.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\deprec.c
-
-getch.obj: $(srcdir)\getch.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\getch.c
-
-getstr.obj: $(srcdir)\getstr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\getstr.c
-
-getyx.obj: $(srcdir)\getyx.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\getyx.c
-
-inch.obj: $(srcdir)\inch.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\inch.c
-
-inchstr.obj: $(srcdir)\inchstr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\inchstr.c
-
-initscr.obj: $(srcdir)\initscr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\initscr.c
-
-inopts.obj: $(srcdir)\inopts.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\inopts.c
-
-insch.obj: $(srcdir)\insch.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\insch.c
-
-insstr.obj: $(srcdir)\insstr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\insstr.c
-
-instr.obj: $(srcdir)\instr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\instr.c
-
-kernel.obj: $(srcdir)\kernel.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\kernel.c
-
-keyname.obj: $(srcdir)\keyname.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\keyname.c
-
-mouse.obj: $(srcdir)\mouse.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\mouse.c
-
-move.obj: $(srcdir)\move.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\move.c
-
-outopts.obj: $(srcdir)\outopts.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\outopts.c
-
-overlay.obj: $(srcdir)\overlay.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\overlay.c
-
-pad.obj: $(srcdir)\pad.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\pad.c
-
-panel.obj: $(srcdir)\panel.c $(PDCURSES_HEADERS) $(PANEL_HEADER)
- $(BUILD) $(srcdir)\panel.c
-
-printw.obj: $(srcdir)\printw.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\printw.c
-
-refresh.obj: $(srcdir)\refresh.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\refresh.c
-
-scanw.obj: $(srcdir)\scanw.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\scanw.c
-
-scr_dump.obj: $(srcdir)\scr_dump.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\scr_dump.c
-
-scroll.obj: $(srcdir)\scroll.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\scroll.c
-
-slk.obj: $(srcdir)\slk.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\slk.c
-
-termattr.obj: $(srcdir)\termattr.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\termattr.c
-
-terminfo.obj: $(srcdir)\terminfo.c $(PDCURSES_HEADERS) $(TERM_HEADER)
- $(BUILD) $(srcdir)\terminfo.c
-
-touch.obj: $(srcdir)\touch.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\touch.c
-
-util.obj: $(srcdir)\util.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\util.c
-
-window.obj: $(srcdir)\window.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\window.c
-
-debug.obj: $(srcdir)\debug.c $(PDCURSES_HEADERS)
- $(BUILD) $(srcdir)\debug.c
-
-pdcclip.obj: $(osdir)\pdcclip.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
- $(BUILD) $(osdir)\pdcclip.c
-
-pdcdisp.obj: $(osdir)\pdcdisp.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
- $(BUILD) $(osdir)\pdcdisp.c
-
-pdcgetsc.obj: $(osdir)\pdcgetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
- $(BUILD) $(osdir)\pdcgetsc.c
-
-pdckbd.obj: $(osdir)\pdckbd.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
- $(BUILD) $(osdir)\pdckbd.c
-
-pdcscrn.obj: $(osdir)\pdcscrn.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
- $(BUILD) $(osdir)\pdcscrn.c
-
-pdcsetsc.obj: $(osdir)\pdcsetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
- $(BUILD) $(osdir)\pdcsetsc.c
-
-pdcutil.obj: $(osdir)\pdcutil.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
- $(BUILD) $(osdir)\pdcutil.c
-
-firework.exe: firework.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-newdemo.exe: newdemo.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-ptest.exe: ptest.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-rain.exe: rain.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-testcurs.exe: testcurs.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj+tui.obj,$*,,$(LIBCURSES);
-
-worm.exe: worm.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-xmas.exe: xmas.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
-
-firework.obj: $(demodir)\firework.c $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\firework.c
-
-newdemo.obj: $(demodir)\newdemo.c $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\newdemo.c
-
-ptest.obj: $(demodir)\ptest.c $(PANEL_HEADER) $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\ptest.c
-
-rain.obj: $(demodir)\rain.c $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\rain.c
-
-testcurs.obj: $(demodir)\testcurs.c $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\testcurs.c
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\tui.c
-
-tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\tuidemo.c
-
-worm.obj: $(demodir)\worm.c $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\worm.c
-
-xmas.obj: $(demodir)\xmas.c $(PDCURSES_CURSES_H)
- $(BUILD) $(demodir)\xmas.c
-
-PLATFORM1 = C Set/2 OS/2
-PLATFORM2 = C Set/2 for OS/2
-ARCNAME = pdc$(VER)_icc_os2
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcclip.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcclip.c
deleted file mode 100644
index 1922bb8..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcclip.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcos2.h"
-
-RCSID("$Id: pdcclip.c,v 1.33 2008/07/14 04:24:51 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: clipboard
-
- Synopsis:
- int PDC_getclipboard(char **contents, long *length);
- int PDC_setclipboard(const char *contents, long length);
- int PDC_freeclipboard(char *contents);
- int PDC_clearclipboard(void);
-
- Description:
- PDC_getclipboard() gets the textual contents of the system's
- clipboard. This function returns the contents of the clipboard
- in the contents argument. It is the responsibilitiy of the
- caller to free the memory returned, via PDC_freeclipboard().
- The length of the clipboard contents is returned in the length
- argument.
-
- PDC_setclipboard copies the supplied text into the system's
- clipboard, emptying the clipboard prior to the copy.
-
- PDC_clearclipboard() clears the internal clipboard.
-
- Return Values:
- indicator of success/failure of call.
- PDC_CLIP_SUCCESS the call was successful
- PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
- the clipboard contents
- PDC_CLIP_EMPTY the clipboard contains no text
- PDC_CLIP_ACCESS_ERROR no clipboard support
-
- Portability X/Open BSD SYS V
- PDC_getclipboard - - -
- PDC_setclipboard - - -
- PDC_freeclipboard - - -
- PDC_clearclipboard - - -
-
-**man-end****************************************************************/
-
-int PDC_getclipboard(char **contents, long *length)
-{
-#ifndef EMXVIDEO
- HMQ hmq;
- HAB hab;
- PTIB ptib;
- PPIB ppib;
- ULONG ulRet;
- long len;
- int rc;
-#endif
- PDC_LOG(("PDC_getclipboard() - called\n"));
-
-#ifndef EMXVIDEO
- DosGetInfoBlocks(&ptib, &ppib);
- ppib->pib_ultype = 3;
- hab = WinInitialize(0);
- hmq = WinCreateMsgQueue(hab, 0);
-
- if (!WinOpenClipbrd(hab))
- {
- WinDestroyMsgQueue(hmq);
- WinTerminate(hab);
- return PDC_CLIP_ACCESS_ERROR;
- }
-
- rc = PDC_CLIP_EMPTY;
-
- ulRet = WinQueryClipbrdData(hab, CF_TEXT);
-
- if (ulRet)
- {
- len = strlen((char *)ulRet);
- *contents = malloc(len + 1);
-
- if (!*contents)
- rc = PDC_CLIP_MEMORY_ERROR;
- else
- {
- strcpy((char *)*contents, (char *)ulRet);
- *length = len;
- rc = PDC_CLIP_SUCCESS;
- }
- }
-
- WinCloseClipbrd(hab);
- WinDestroyMsgQueue(hmq);
- WinTerminate(hab);
-
- return rc;
-#else
- return PDC_CLIP_ACCESS_ERROR;
-#endif
-}
-
-int PDC_setclipboard(const char *contents, long length)
-{
-#ifndef EMXVIDEO
- HAB hab;
- PTIB ptib;
- PPIB ppib;
- ULONG ulRC;
- PSZ szTextOut = NULL;
- int rc;
-#endif
- PDC_LOG(("PDC_setclipboard() - called\n"));
-
-#ifndef EMXVIDEO
- DosGetInfoBlocks(&ptib, &ppib);
- ppib->pib_ultype = 3;
- hab = WinInitialize(0);
-
- if (!WinOpenClipbrd(hab))
- {
- WinTerminate(hab);
- return PDC_CLIP_ACCESS_ERROR;
- }
-
- rc = PDC_CLIP_MEMORY_ERROR;
-
- ulRC = DosAllocSharedMem((PVOID)&szTextOut, NULL, length + 1,
- PAG_WRITE | PAG_COMMIT | OBJ_GIVEABLE);
-
- if (ulRC == 0)
- {
- strcpy(szTextOut, contents);
- WinEmptyClipbrd(hab);
-
- if (WinSetClipbrdData(hab, (ULONG)szTextOut, CF_TEXT, CFI_POINTER))
- rc = PDC_CLIP_SUCCESS;
- else
- {
- DosFreeMem(szTextOut);
- rc = PDC_CLIP_ACCESS_ERROR;
- }
- }
-
- WinCloseClipbrd(hab);
- WinTerminate(hab);
-
- return rc;
-#else
- return PDC_CLIP_ACCESS_ERROR;
-#endif
-}
-
-int PDC_freeclipboard(char *contents)
-{
- PDC_LOG(("PDC_freeclipboard() - called\n"));
-
- if (contents)
- free(contents);
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_clearclipboard(void)
-{
-#ifndef EMXVIDEO
- HAB hab;
- PTIB ptib;
- PPIB ppib;
-#endif
- PDC_LOG(("PDC_clearclipboard() - called\n"));
-
-#ifndef EMXVIDEO
- DosGetInfoBlocks(&ptib, &ppib);
- ppib->pib_ultype = 3;
- hab = WinInitialize(0);
-
- WinEmptyClipbrd(hab);
-
- WinCloseClipbrd(hab);
- WinTerminate(hab);
-
- return PDC_CLIP_SUCCESS;
-#else
- return PDC_CLIP_ACCESS_ERROR;
-#endif
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcdisp.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcdisp.c
deleted file mode 100644
index 4f886da..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcdisp.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcos2.h"
-
-RCSID("$Id: pdcdisp.c,v 1.49 2008/07/14 04:24:51 wmcbrine Exp $")
-
-/* ACS definitions originally by jshumate at wrdis01.robins.af.mil -- these
- match code page 437 and compatible pages (CP850, CP852, etc.) */
-
-#ifdef CHTYPE_LONG
-
-# define A(x) ((chtype)x | A_ALTCHARSET)
-
-chtype acs_map[128] =
-{
- A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9),
- A(10), A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18),
- A(19), A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27),
- A(28), A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&',
- '\'', '(', ')', '*',
-
- A(0x1a), A(0x1b), A(0x18), A(0x19),
-
- '/',
-
- 0xdb,
-
- '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
- '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
-
- A(0x04), 0xb1,
-
- 'b', 'c', 'd', 'e',
-
- 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d,
- 0x2d, 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3,
- 0xf2, 0xe3, 0xd8, 0x9c, 0xf9,
-
- A(127)
-};
-
-# undef A
-
-#endif
-
-/* position hardware cursor at (y, x) */
-
-void PDC_gotoyx(int row, int col)
-{
- PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
-
-#ifdef EMXVIDEO
- v_gotoxy(col, row);
-#else
- VioSetCurPos(row, col, 0);
-#endif
-}
-
-/* update the given physical line to look like the corresponding line in
- curscr */
-
-void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
-{
- /* this should be enough for the maximum width of a screen. */
-
- struct {unsigned char text, attr;} temp_line[256];
- int j;
-
- PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
-
- /* replace the attribute part of the chtype with the
- actual color value for each chtype in the line */
-
- for (j = 0; j < len; j++)
- {
- chtype ch = srcp[j];
-
- temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
-
-#ifdef CHTYPE_LONG
- if (ch & A_ALTCHARSET && !(ch & 0xff80))
- ch = acs_map[ch & 0x7f];
-#endif
- temp_line[j].text = ch & 0xff;
- }
-
-#ifdef EMXVIDEO
- v_putline((char *)temp_line, x, lineno, len);
-#else
- VioWrtCellStr((PCH)temp_line, (USHORT)(len * sizeof(unsigned short)),
- (USHORT)lineno, (USHORT)x, 0);
-#endif
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcgetsc.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcgetsc.c
deleted file mode 100644
index d712dad..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcgetsc.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcos2.h"
-
-RCSID("$Id: pdcgetsc.c,v 1.39 2008/07/14 04:24:51 wmcbrine Exp $")
-
-/* return width of screen/viewport */
-
-int PDC_get_columns(void)
-{
-#ifdef EMXVIDEO
- int rows = 0;
-#else
- VIOMODEINFO modeInfo = {0};
-#endif
- int cols = 0;
- const char *env_cols;
-
- PDC_LOG(("PDC_get_columns() - called\n"));
-
-#ifdef EMXVIDEO
- v_dimen(&cols, &rows);
-#else
- modeInfo.cb = sizeof(modeInfo);
- VioGetMode(&modeInfo, 0);
- cols = modeInfo.col;
-#endif
- env_cols = getenv("COLS");
-
- if (env_cols)
- cols = min(atoi(env_cols), cols);
-
- PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols));
-
- return cols;
-}
-
-/* get the cursor size/shape */
-
-int PDC_get_cursor_mode(void)
-{
-#ifdef EMXVIDEO
- int curstart = 0, curend = 0;
-#else
- VIOCURSORINFO cursorInfo;
-#endif
- PDC_LOG(("PDC_get_cursor_mode() - called\n"));
-
-#ifdef EMXVIDEO
- v_getctype(&curstart, &curend);
- return (curstart << 8) | curend;
-#else
- VioGetCurType (&cursorInfo, 0);
-
- return (cursorInfo.yStart << 8) | cursorInfo.cEnd;
-#endif
-}
-
-/* return number of screen rows */
-
-int PDC_get_rows(void)
-{
-#ifdef EMXVIDEO
- int cols = 0;
-#else
- VIOMODEINFO modeInfo = {0};
-#endif
- int rows = 0;
- const char *env_rows;
-
- PDC_LOG(("PDC_get_rows() - called\n"));
-
- /* use the value from LINES environment variable, if set. MH 10-Jun-92 */
- /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */
-
-#ifdef EMXVIDEO
- v_dimen(&cols, &rows);
-#else
- modeInfo.cb = sizeof(modeInfo);
- VioGetMode(&modeInfo, 0);
- rows = modeInfo.row;
-#endif
- env_rows = getenv("LINES");
-
- if (env_rows)
- rows = min(atoi(env_rows), rows);
-
- PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows));
-
- return rows;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdckbd.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdckbd.c
deleted file mode 100644
index df79882..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdckbd.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/* Public Domain Curses */
-
-#if defined(__EMX__) || defined(__WATCOMC__) || defined(__IBMC__) || \
-defined(__TURBOC__)
-# define HAVE_SIGNAL
-# include <signal.h>
-#endif
-
-#include "pdcos2.h"
-
-RCSID("$Id: pdckbd.c,v 1.89 2008/07/14 04:24:51 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdckbd
-
- Synopsis:
- unsigned long PDC_get_input_fd(void);
-
- Description:
- PDC_get_input_fd() returns the file descriptor that PDCurses
- reads its input from. It can be used for select().
-
- Portability X/Open BSD SYS V
- PDC_get_input_fd - - -
-
-**man-end****************************************************************/
-
-#ifdef EMXVIDEO
-# include <termios.h>
-static int tahead = -1;
-#else
-static KBDINFO kbdinfo; /* default keyboard mode */
-static HMOU mouse_handle = 0;
-static MOUSE_STATUS old_mouse_status;
-static USHORT old_shift = 0;
-static bool key_pressed = FALSE;
-static int mouse_events = 0;
-#endif
-
-/************************************************************************
- * Table for key code translation of function keys in keypad mode *
- * These values are for strict IBM keyboard compatibles only *
- ************************************************************************/
-
-static short key_table[] =
-{
- -1, ALT_ESC, -1, 0,
- -1, -1, -1, -1,
- -1, -1, -1, -1,
- -1, -1, ALT_BKSP, KEY_BTAB,
- ALT_Q, ALT_W, ALT_E, ALT_R,
- ALT_T, ALT_Y, ALT_U, ALT_I,
- ALT_O, ALT_P, ALT_LBRACKET, ALT_RBRACKET,
- ALT_ENTER, -1, ALT_A, ALT_S,
- ALT_D, ALT_F, ALT_G, ALT_H,
- ALT_J, ALT_K, ALT_L, ALT_SEMICOLON,
- ALT_FQUOTE, ALT_BQUOTE, -1, ALT_BSLASH,
- ALT_Z, ALT_X, ALT_C, ALT_V,
- ALT_B, ALT_N, ALT_M, ALT_COMMA,
- ALT_STOP, ALT_FSLASH, -1, ALT_PADSTAR,
- -1, -1, -1, KEY_F(1),
- KEY_F(2), KEY_F(3), KEY_F(4), KEY_F(5),
- KEY_F(6), KEY_F(7), KEY_F(8), KEY_F(9),
- KEY_F(10), -1, -1, KEY_HOME,
- KEY_UP, KEY_PPAGE, ALT_PADMINUS, KEY_LEFT,
- KEY_B2, KEY_RIGHT, ALT_PADPLUS, KEY_END,
- KEY_DOWN, KEY_NPAGE, KEY_IC, KEY_DC,
- KEY_F(13), KEY_F(14), KEY_F(15), KEY_F(16),
- KEY_F(17), KEY_F(18), KEY_F(19), KEY_F(20),
- KEY_F(21), KEY_F(22), KEY_F(25), KEY_F(26),
- KEY_F(27), KEY_F(28), KEY_F(29), KEY_F(30),
- KEY_F(31), KEY_F(32), KEY_F(33), KEY_F(34),
- KEY_F(37), KEY_F(38), KEY_F(39), KEY_F(40),
- KEY_F(41), KEY_F(42), KEY_F(43), KEY_F(44),
- KEY_F(45), KEY_F(46), -1, CTL_LEFT,
- CTL_RIGHT, CTL_END, CTL_PGDN, CTL_HOME,
- ALT_1, ALT_2, ALT_3, ALT_4,
- ALT_5, ALT_6, ALT_7, ALT_8,
- ALT_9, ALT_0, ALT_MINUS, ALT_EQUAL,
- CTL_PGUP, KEY_F(11), KEY_F(12), KEY_F(23),
- KEY_F(24), KEY_F(35), KEY_F(36), KEY_F(47),
- KEY_F(48), CTL_UP, CTL_PADMINUS, CTL_PADCENTER,
- CTL_PADPLUS, CTL_DOWN, CTL_INS, CTL_DEL,
- CTL_TAB, CTL_PADSLASH, CTL_PADSTAR, ALT_HOME,
- ALT_UP, ALT_PGUP, -1, ALT_LEFT,
- -1, ALT_RIGHT, -1, ALT_END,
- ALT_DOWN, ALT_PGDN, ALT_INS, ALT_DEL,
- ALT_PADSLASH, ALT_TAB, ALT_PADENTER, -1
-};
-
-unsigned long pdc_key_modifiers = 0L;
-
-unsigned long PDC_get_input_fd(void)
-{
- PDC_LOG(("PDC_get_input_fd() - called\n"));
-
- return (unsigned long)fileno(stdin);
-}
-
-#ifndef EMXVIDEO
-
-void PDC_get_keyboard_info(void)
-{
- kbdinfo.cb = sizeof(kbdinfo);
- KbdGetStatus(&kbdinfo, 0);
-}
-
-void PDC_set_keyboard_default(void)
-{
- KbdSetStatus(&kbdinfo, 0);
-}
-
-#endif /* ifndef EMXVIDEO */
-
-void PDC_set_keyboard_binary(bool on)
-{
- PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
-
-#ifndef EMXVIDEO
- if (on)
- {
- kbdinfo.fsMask &= ~(KEYBOARD_ASCII_MODE);
- kbdinfo.fsMask |= KEYBOARD_BINARY_MODE;
- }
- else
- {
- kbdinfo.fsMask &= ~(KEYBOARD_BINARY_MODE);
- kbdinfo.fsMask |= KEYBOARD_ASCII_MODE;
- }
-
- KbdSetStatus(&kbdinfo, 0);
-#endif
-
-#ifdef HAVE_SIGNAL
- signal(SIGBREAK, on ? SIG_IGN : SIG_DFL);
-#endif
-}
-
-/* check if a key or mouse event is waiting */
-
-bool PDC_check_key(void)
-{
-#if !defined(_MSC_VER) && !defined(EMXVIDEO)
- KBDKEYINFO keyInfo = {0};
-#endif
-
-#ifdef EMXVIDEO
- if (tahead == -1) /* Nothing typed yet */
- {
- tahead = _read_kbd(0, 0, 0);
-
- /* Read additional */
-
- if (tahead == 0)
- tahead = _read_kbd(0, 1, 0) << 8;
- }
-
- return (tahead != -1);
-#else
-# ifndef _MSC_VER
-
- KbdGetStatus(&kbdinfo, 0);
-
- if (mouse_handle)
- {
- MOUQUEINFO queue;
-
- MouGetNumQueEl(&queue, mouse_handle);
- mouse_events = queue.cEvents;
-
- if (mouse_events)
- return TRUE;
- }
-
- if (old_shift && !kbdinfo.fsState) /* modifier released */
- {
- if (!key_pressed && SP->return_key_modifiers)
- return TRUE;
- }
- else if (!old_shift && kbdinfo.fsState) /* modifier pressed */
- key_pressed = FALSE;
-
- old_shift = kbdinfo.fsState;
-
- KbdPeek(&keyInfo, 0); /* peek at keyboard */
- return (keyInfo.fbStatus != 0);
-# else
- return kbhit();
-# endif
-#endif
-}
-
-#ifndef EMXVIDEO
-
-static int _process_mouse_events(void)
-{
- MOUEVENTINFO event;
- static const USHORT button_mask[] = {6, 96, 24},
- move_mask[] = {2, 32, 8},
- press_mask[] = {4, 64, 16};
- USHORT count = 1;
- short shift_flags = 0;
- int i;
-
- MouReadEventQue(&event, &count, mouse_handle);
- mouse_events--;
-
- for (i = 0; i < 3; i++)
- {
- pdc_mouse_status.button[i] =
- ((event.fs & move_mask[i]) ? BUTTON_MOVED : 0) |
- ((event.fs & press_mask[i]) ? BUTTON_PRESSED : 0);
-
- /* PRESS events are sometimes mistakenly reported as MOVE
- events. A MOVE should always follow a PRESS, so treat a MOVE
- immediately after a RELEASE as a PRESS. */
-
- if ((pdc_mouse_status.button[i] == BUTTON_MOVED) &&
- (old_mouse_status.button[i] == BUTTON_RELEASED))
- {
- pdc_mouse_status.button[i] = BUTTON_PRESSED;
- }
-
- if (pdc_mouse_status.button[i] == BUTTON_PRESSED && SP->mouse_wait)
- {
- /* Check for a click -- a PRESS followed immediately by a
- release */
-
- if (!mouse_events)
- {
- MOUQUEINFO queue;
-
- napms(SP->mouse_wait);
-
- MouGetNumQueEl(&queue, mouse_handle);
- mouse_events = queue.cEvents;
- }
-
- if (mouse_events)
- {
- MouReadEventQue(&event, &count, mouse_handle);
-
- if (!(event.fs & button_mask[i]))
- pdc_mouse_status.button[i] = BUTTON_CLICKED;
- }
- }
- }
-
- pdc_mouse_status.x = event.col;
- pdc_mouse_status.y = event.row;
-
- pdc_mouse_status.changes = 0;
-
- for (i = 0; i < 3; i++)
- {
- if (old_mouse_status.button[i] != pdc_mouse_status.button[i])
- pdc_mouse_status.changes |= (1 << i);
-
- if (pdc_mouse_status.button[i] == BUTTON_MOVED)
- {
- /* Discard non-moved "moves" */
-
- if (pdc_mouse_status.x == old_mouse_status.x &&
- pdc_mouse_status.y == old_mouse_status.y)
- return -1;
-
- /* Motion events always flag the button as changed */
-
- pdc_mouse_status.changes |= (1 << i);
- pdc_mouse_status.changes |= PDC_MOUSE_MOVED;
- break;
- }
- }
-
- old_mouse_status = pdc_mouse_status;
-
- /* Treat click events as release events for comparison purposes */
-
- for (i = 0; i < 3; i++)
- {
- if (old_mouse_status.button[i] == BUTTON_CLICKED)
- old_mouse_status.button[i] = BUTTON_RELEASED;
- }
-
- /* Check for SHIFT/CONTROL/ALT */
-
- if (kbdinfo.fsState & KBDSTF_ALT)
- shift_flags |= BUTTON_ALT;
-
- if (kbdinfo.fsState & KBDSTF_CONTROL)
- shift_flags |= BUTTON_CONTROL;
-
- if (kbdinfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
- shift_flags |= BUTTON_SHIFT;
-
- if (shift_flags)
- {
- for (i = 0; i < 3; i++)
- {
- if (pdc_mouse_status.changes & (1 << i))
- pdc_mouse_status.button[i] |= shift_flags;
- }
- }
-
- old_shift = kbdinfo.fsState;
- key_pressed = TRUE;
-
- SP->key_code = TRUE;
- return KEY_MOUSE;
-}
-
-#endif
-
-/* return the next available key or mouse event */
-
-int PDC_get_key(void)
-{
- int key, scan;
-#ifndef EMXVIDEO
- KBDKEYINFO keyInfo = {0};
-#endif
-
-#ifdef EMXVIDEO
- if (tahead == -1)
- {
- tahead = _read_kbd(0, 1, 0);
-
- /* Read additional */
-
- if (tahead == 0)
- tahead = _read_kbd(0, 1, 0) << 8;
- }
-
- key = tahead & 0xff;
- scan = tahead >> 8;
- pdc_key_modifiers = 0L;
-
- tahead = -1;
-#else
- pdc_key_modifiers = 0L;
-
- if (mouse_handle && mouse_events)
- return _process_mouse_events();
-
- if (old_shift && !kbdinfo.fsState)
- {
- key = -1;
-
- if (old_shift & KBDSTF_LEFTALT)
- {
- key = KEY_ALT_L;
- }
- else if (old_shift & KBDSTF_RIGHTALT)
- {
- key = KEY_ALT_R;
- }
- else if (old_shift & KBDSTF_LEFTCONTROL)
- {
- key = KEY_CONTROL_L;
- }
- else if (old_shift & KBDSTF_RIGHTCONTROL)
- {
- key = KEY_CONTROL_R;
- }
- else if (old_shift & KBDSTF_LEFTSHIFT)
- {
- key = KEY_SHIFT_L;
- }
- else if (old_shift & KBDSTF_RIGHTSHIFT)
- {
- key = KEY_SHIFT_R;
- }
-
- key_pressed = FALSE;
- old_shift = kbdinfo.fsState;
-
- SP->key_code = TRUE;
- return key;
- }
-
- KbdCharIn(&keyInfo, IO_WAIT, 0); /* get a character */
-
- key = keyInfo.chChar;
- scan = keyInfo.chScan;
-
- if (SP->save_key_modifiers)
- {
- if (keyInfo.fsState & KBDSTF_ALT)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
-
- if (keyInfo.fsState & KBDSTF_CONTROL)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
-
- if (keyInfo.fsState & KBDSTF_NUMLOCK_ON)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
-
- if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
- pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
- }
-#endif
- if (scan == 0x1c && key == 0x0a) /* ^Enter */
- key = CTL_ENTER;
- else if (scan == 0xe0 && key == 0x0d) /* PadEnter */
- key = PADENTER;
- else if (scan == 0xe0 && key == 0x0a) /* ^PadEnter */
- key = CTL_PADENTER;
- else if (scan == 0x37 && key == 0x2a) /* Star */
- key = PADSTAR;
- else if (scan == 0x4a && key == 0x2d) /* Minus */
- key = PADMINUS;
- else if (scan == 0x4e && key == 0x2b) /* Plus */
- key = PADPLUS;
- else if (scan == 0xe0 && key == 0x2f) /* Slash */
- key = PADSLASH;
- else if (key == 0x00 || (key == 0xe0 && scan > 53 && scan != 86))
- key = (scan > 0xa7) ? -1 : key_table[scan];
-
- if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
- {
- switch (key)
- {
- case KEY_HOME: /* Shift Home */
- key = KEY_SHOME;
- break;
- case KEY_UP: /* Shift Up */
- key = KEY_SUP;
- break;
- case KEY_PPAGE: /* Shift PgUp */
- key = KEY_SPREVIOUS;
- break;
- case KEY_LEFT: /* Shift Left */
- key = KEY_SLEFT;
- break;
- case KEY_RIGHT: /* Shift Right */
- key = KEY_SRIGHT;
- break;
- case KEY_END: /* Shift End */
- key = KEY_SEND;
- break;
- case KEY_DOWN: /* Shift Down */
- key = KEY_SDOWN;
- break;
- case KEY_NPAGE: /* Shift PgDn */
- key = KEY_SNEXT;
- break;
- case KEY_IC: /* Shift Ins */
- key = KEY_SIC;
- break;
- case KEY_DC: /* Shift Del */
- key = KEY_SDC;
- }
- }
-
- key_pressed = TRUE;
- SP->key_code = ((unsigned)key >= 256);
-
- return key;
-}
-
-/* discard any pending keyboard or mouse input -- this is the core
- routine for flushinp() */
-
-void PDC_flushinp(void)
-{
- PDC_LOG(("PDC_flushinp() - called\n"));
-
-#ifdef EMXVIDEO
- tcflush(0, TCIFLUSH);
-#else
- if (mouse_handle)
- MouFlushQue(mouse_handle);
-
- KbdFlushBuffer(0);
-#endif
-}
-
-int PDC_mouse_set(void)
-{
-#ifndef EMXVIDEO
-
- unsigned long mbe = SP->_trap_mbe;
-
- if (mbe && !mouse_handle)
- {
- memset(&old_mouse_status, 0, sizeof(MOUSE_STATUS));
- MouOpen(NULL, &mouse_handle);
- if (mouse_handle)
- MouDrawPtr(mouse_handle);
- }
- else if (!mbe && mouse_handle)
- {
- MouClose(mouse_handle);
- mouse_handle = 0;
- }
-
- if (mbe && mouse_handle)
- {
- USHORT mask = ((mbe & (BUTTON1_PRESSED | BUTTON1_CLICKED |
- BUTTON1_MOVED)) ? 6 : 0) |
-
- ((mbe & (BUTTON3_PRESSED | BUTTON3_CLICKED |
- BUTTON3_MOVED)) ? 24 : 0) |
-
- ((mbe & (BUTTON2_PRESSED | BUTTON2_CLICKED |
- BUTTON2_MOVED)) ? 96 : 0);
-
- MouSetEventMask(&mask, mouse_handle);
- }
-#endif
- return OK;
-}
-
-int PDC_modifiers_set(void)
-{
- key_pressed = FALSE;
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcos2.h b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcos2.h
deleted file mode 100644
index 1c11d48..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcos2.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: pdcos2.h,v 1.9 2008/08/14 06:38:35 wmcbrine Exp $ */
-
-#ifdef _MSC_VER
-# define USE_OS2_H 1 /* Use the os2.h for the compiler */
-# define APIRET USHORT
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef EMXVIDEO
-# include <sys/video.h>
-#else
-# define INCL_DOS
-# define INCL_DOSMISC
-# define INCL_WIN
-# define INCL_VIO
-# define INCL_KBD
-# define INCL_MOU
-# include <os2.h>
-#endif
-
-#include <curspriv.h>
-
-#ifdef __WATCOMC__
-# define PDCTHUNK(x) ((ptr_16)(x))
-# ifdef __386__
-# define SEG16 _Seg16
-# else
-# define SEG16
-# endif
-
-typedef void * SEG16 ptr_16;
-
-#else
-# ifdef __EMX__
-# ifdef __INNOTEK_LIBC__
-# define PDCTHUNK(x) ((PCH)_libc_32to16(x))
-# else
-# define PDCTHUNK(x) ((PCH)_emx_32to16(x))
-# endif
-# endif
-#endif
-
-extern unsigned char *pdc_atrtab;
-extern int pdc_font;
-
-extern void PDC_get_keyboard_info(void);
-extern void PDC_set_keyboard_default(void);
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcscrn.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcscrn.c
deleted file mode 100644
index daecb50..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcscrn.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcos2.h"
-
-RCSID("$Id: pdcscrn.c,v 1.76 2008/07/14 04:24:51 wmcbrine Exp $")
-
-#ifdef CHTYPE_LONG
-# define PDC_OFFSET 32
-#else
-# define PDC_OFFSET 8
-#endif
-
-/* COLOR_PAIR to attribute encoding table. */
-
-unsigned char *pdc_atrtab = (unsigned char *)NULL;
-
-int pdc_font; /* default font size */
-
-static short curstoreal[16], realtocurs[16] =
-{
- COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED,
- COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8,
- COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8,
- COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8
-};
-
-#ifdef EMXVIDEO
-static unsigned char *saved_screen = NULL;
-static int saved_lines = 0;
-static int saved_cols = 0;
-#else
-# ifdef PDCTHUNK
-# ifdef __EMX__
-# define THUNKEDVIO VIOCOLORREG
-# else
-
-typedef struct {
- USHORT cb;
- USHORT type;
- USHORT firstcolorreg;
- USHORT numcolorregs;
- ptr_16 colorregaddr;
-} THUNKEDVIO;
-
-# endif
-# endif
-
-static PCH saved_screen = NULL;
-static USHORT saved_lines = 0;
-static USHORT saved_cols = 0;
-static VIOMODEINFO scrnmode; /* default screen mode */
-static VIOMODEINFO saved_scrnmode[3];
-static int saved_font[3];
-static bool can_change = FALSE;
-
-static int _get_font(void)
-{
- VIOMODEINFO modeInfo = {0};
-
- modeInfo.cb = sizeof(modeInfo);
-
- VioGetMode(&modeInfo, 0);
- return (modeInfo.vres / modeInfo.row);
-}
-
-static void _set_font(int size)
-{
- VIOMODEINFO modeInfo = {0};
-
- if (pdc_font != size)
- {
- modeInfo.cb = sizeof(modeInfo);
-
- /* set most parameters of modeInfo */
-
- VioGetMode(&modeInfo, 0);
- modeInfo.cb = 8; /* ignore horiz an vert resolution */
- modeInfo.row = modeInfo.vres / size;
- VioSetMode(&modeInfo, 0);
- }
-
- curs_set(SP->visibility);
-
- pdc_font = _get_font();
-}
-
-#endif
-
-/* close the physical screen -- may restore the screen to its state
- before PDC_scr_open(); miscellaneous cleanup */
-
-void PDC_scr_close(void)
-{
- PDC_LOG(("PDC_scr_close() - called\n"));
-
- if (saved_screen && getenv("PDC_RESTORE_SCREEN"))
- {
-#ifdef EMXVIDEO
- v_putline(saved_screen, 0, 0, saved_lines * saved_cols);
-#else
- VioWrtCellStr(saved_screen, saved_lines * saved_cols * 2,
- 0, 0, (HVIO)NULL);
-#endif
- free(saved_screen);
- saved_screen = NULL;
- }
-
- reset_shell_mode();
-
- if (SP->visibility != 1)
- curs_set(1);
-
- /* Position cursor to the bottom left of the screen. */
-
- PDC_gotoyx(PDC_get_rows() - 2, 0);
-}
-
-void PDC_scr_free(void)
-{
- if (SP)
- free(SP);
- if (pdc_atrtab)
- free(pdc_atrtab);
-
- pdc_atrtab = (unsigned char *)NULL;
-}
-
-/* open the physical screen -- allocate SP, miscellaneous intialization,
- and may save the existing screen for later restoration */
-
-int PDC_scr_open(int argc, char **argv)
-{
-#ifdef EMXVIDEO
- int adapter;
-#else
- USHORT totchars;
-#endif
- int i;
- short r, g, b;
-
- PDC_LOG(("PDC_scr_open() - called\n"));
-
- SP = calloc(1, sizeof(SCREEN));
- pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1);
-
- if (!SP || !pdc_atrtab)
- return ERR;
-
- for (i = 0; i < 16; i++)
- curstoreal[realtocurs[i]] = i;
-
-#ifdef EMXVIDEO
- v_init();
-#endif
- SP->orig_attr = FALSE;
-
-#ifdef EMXVIDEO
- adapter = v_hardware();
- SP->mono = (adapter == V_MONOCHROME);
-
- pdc_font = SP->mono ? 14 : (adapter == V_COLOR_8) ? 8 : 12;
-#else
- VioGetMode(&scrnmode, 0);
- PDC_get_keyboard_info();
-
- pdc_font = _get_font();
-#endif
- SP->lines = PDC_get_rows();
- SP->cols = PDC_get_columns();
-
- SP->mouse_wait = PDC_CLICK_PERIOD;
- SP->audible = TRUE;
-
- /* This code for preserving the current screen */
-
- if (getenv("PDC_RESTORE_SCREEN"))
- {
- saved_lines = SP->lines;
- saved_cols = SP->cols;
-
- saved_screen = malloc(2 * saved_lines * saved_cols);
-
- if (!saved_screen)
- {
- SP->_preserve = FALSE;
- return OK;
- }
-#ifdef EMXVIDEO
- v_getline(saved_screen, 0, 0, saved_lines * saved_cols);
-#else
- totchars = saved_lines * saved_cols * 2;
- VioReadCellStr((PCH)saved_screen, &totchars, 0, 0, (HVIO)NULL);
-#endif
- }
-
- SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
-
- can_change = (PDC_color_content(0, &r, &g, &b) == OK);
-
- return OK;
-}
-
-/* the core of resize_term() */
-
-int PDC_resize_screen(int nlines, int ncols)
-{
-#ifndef EMXVIDEO
- VIOMODEINFO modeInfo = {0};
- USHORT result;
-#endif
-
- PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
- nlines, ncols));
-
-#ifdef EMXVIDEO
- return ERR;
-#else
- modeInfo.cb = sizeof(modeInfo);
-
- /* set most parameters of modeInfo */
-
- VioGetMode(&modeInfo, 0);
- modeInfo.fbType = 1;
- modeInfo.row = nlines;
- modeInfo.col = ncols;
- result = VioSetMode(&modeInfo, 0);
-
- LINES = PDC_get_rows();
- COLS = PDC_get_columns();
-
- return (result == 0) ? OK : ERR;
-#endif
-}
-
-void PDC_reset_prog_mode(void)
-{
- PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
-
-#ifndef EMXVIDEO
- PDC_set_keyboard_binary(TRUE);
-#endif
-}
-
-void PDC_reset_shell_mode(void)
-{
- PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
-
-#ifndef EMXVIDEO
- PDC_set_keyboard_default();
-#endif
-}
-
-#ifndef EMXVIDEO
-
-static bool _screen_mode_equals(VIOMODEINFO *oldmode)
-{
- VIOMODEINFO current = {0};
-
- VioGetMode(¤t, 0);
-
- return ((current.cb == oldmode->cb) &&
- (current.fbType == oldmode->fbType) &&
- (current.color == oldmode->color) &&
- (current.col == oldmode->col) &&
- (current.row == oldmode->row) &&
- (current.hres == oldmode->vres) &&
- (current.vres == oldmode->vres));
-}
-
-#endif
-
-void PDC_restore_screen_mode(int i)
-{
-#ifndef EMXVIDEO
- if (i >= 0 && i <= 2)
- {
- pdc_font = _get_font();
- _set_font(saved_font[i]);
-
- if (!_screen_mode_equals(&saved_scrnmode[i]))
- if (VioSetMode(&saved_scrnmode[i], 0) != 0)
- {
- pdc_font = _get_font();
- scrnmode = saved_scrnmode[i];
- LINES = PDC_get_rows();
- COLS = PDC_get_columns();
- }
- }
-#endif
-}
-
-void PDC_save_screen_mode(int i)
-{
-#ifndef EMXVIDEO
- if (i >= 0 && i <= 2)
- {
- saved_font[i] = pdc_font;
- saved_scrnmode[i] = scrnmode;
- }
-#endif
-}
-
-void PDC_init_pair(short pair, short fg, short bg)
-{
- unsigned char att, temp_bg;
- chtype i;
-
- fg = curstoreal[fg];
- bg = curstoreal[bg];
-
- for (i = 0; i < PDC_OFFSET; i++)
- {
- att = fg | (bg << 4);
-
- if (i & (A_REVERSE >> PDC_ATTR_SHIFT))
- att = bg | (fg << 4);
- if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT))
- att = 1;
- if (i & (A_INVIS >> PDC_ATTR_SHIFT))
- {
- temp_bg = att >> 4;
- att = temp_bg << 4 | temp_bg;
- }
- if (i & (A_BOLD >> PDC_ATTR_SHIFT))
- att |= 8;
- if (i & (A_BLINK >> PDC_ATTR_SHIFT))
- att |= 128;
-
- pdc_atrtab[pair * PDC_OFFSET + i] = att;
- }
-}
-
-int PDC_pair_content(short pair, short *fg, short *bg)
-{
- *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F];
- *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4];
-
- return OK;
-}
-
-bool PDC_can_change_color(void)
-{
- return can_change;
-}
-
-int PDC_color_content(short color, short *red, short *green, short *blue)
-{
-#ifdef PDCTHUNK
- THUNKEDVIO vcr;
- USHORT palbuf[4];
- unsigned char pal[3];
- int rc;
-
- /* Read single DAC register */
-
- palbuf[0] = 8;
- palbuf[1] = 0;
- palbuf[2] = curstoreal[color];
-
- rc = VioGetState(&palbuf, 0);
- if (rc)
- return ERR;
-
- vcr.cb = sizeof(vcr);
- vcr.type = 3;
- vcr.firstcolorreg = palbuf[3];
- vcr.numcolorregs = 1;
- vcr.colorregaddr = PDCTHUNK(pal);
-
- rc = VioGetState(&vcr, 0);
- if (rc)
- return ERR;
-
- /* Scale and store */
-
- *red = DIVROUND((unsigned)(pal[0]) * 1000, 63);
- *green = DIVROUND((unsigned)(pal[1]) * 1000, 63);
- *blue = DIVROUND((unsigned)(pal[2]) * 1000, 63);
-
- return OK;
-#else
- return ERR;
-#endif
-}
-
-int PDC_init_color(short color, short red, short green, short blue)
-{
-#ifdef PDCTHUNK
- THUNKEDVIO vcr;
- USHORT palbuf[4];
- unsigned char pal[3];
- int rc;
-
- /* Scale */
-
- pal[0] = DIVROUND((unsigned)red * 63, 1000);
- pal[1] = DIVROUND((unsigned)green * 63, 1000);
- pal[2] = DIVROUND((unsigned)blue * 63, 1000);
-
- /* Set single DAC register */
-
- palbuf[0] = 8;
- palbuf[1] = 0;
- palbuf[2] = curstoreal[color];
-
- rc = VioGetState(&palbuf, 0);
- if (rc)
- return ERR;
-
- vcr.cb = sizeof(vcr);
- vcr.type = 3;
- vcr.firstcolorreg = palbuf[3];
- vcr.numcolorregs = 1;
- vcr.colorregaddr = PDCTHUNK(pal);
-
- rc = VioSetState(&vcr, 0);
-
- return rc ? ERR : OK;
-#else
- return ERR;
-#endif
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c
deleted file mode 100644
index bc28b03..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcos2.h"
-
-RCSID("$Id: pdcsetsc.c,v 1.44 2008/07/14 04:24:51 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdcsetsc
-
- Synopsis:
- int PDC_set_blink(bool blinkon);
- void PDC_set_title(const char *title);
-
- Description:
- PDC_set_blink() toggles whether the A_BLINK attribute sets an
- actual blink mode (TRUE), or sets the background color to high
- intensity (FALSE). The default is platform-dependent (FALSE in
- most cases). It returns OK if it could set the state to match
- the given parameter, ERR otherwise. Current platforms also
- adjust the value of COLORS according to this function -- 16 for
- FALSE, and 8 for TRUE.
-
- PDC_set_title() sets the title of the window in which the curses
- program is running. This function may not do anything on some
- platforms. (Currently it only works in Win32 and X11.)
-
- Portability X/Open BSD SYS V
- PDC_set_blink - - -
- PDC_set_title - - -
-
-**man-end****************************************************************/
-
-int PDC_curs_set(int visibility)
-{
-#ifndef EMXVIDEO
- VIOCURSORINFO pvioCursorInfo;
-#endif
- int ret_vis, hidden = 0, start = 0, end = 0;
-
- PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
-
- ret_vis = SP->visibility;
- SP->visibility = visibility;
-
- switch(visibility)
- {
- case 0: /* invisible */
-#ifdef EMXVIDEO
- start = end = 0;
-#else
- start = pdc_font / 4;
- end = pdc_font;
- hidden = -1;
-#endif
- break;
-
- case 2: /* highly visible */
- start = 2; /* almost full-height block */
- end = pdc_font - 1;
- break;
-
- default: /* normal visibility */
- start = (SP->orig_cursor >> 8) & 0xff;
- end = SP->orig_cursor & 0xff;
- }
-
-#ifdef EMXVIDEO
- if (!visibility)
- v_hidecursor();
- else
- v_ctype(start, end);
-#else
- pvioCursorInfo.yStart = (USHORT)start;
- pvioCursorInfo.cEnd = (USHORT)end;
- pvioCursorInfo.cx = (USHORT)1;
- pvioCursorInfo.attr = hidden;
- VioSetCurType((PVIOCURSORINFO)&pvioCursorInfo, 0);
-#endif
- return ret_vis;
-}
-
-void PDC_set_title(const char *title)
-{
- PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
-}
-
-int PDC_set_blink(bool blinkon)
-{
-#ifndef EMXVIDEO
- USHORT statebuf[3], result;
-
- statebuf[0] = 6; /* length */
- statebuf[1] = 2; /* blink/intensity */
- statebuf[2] = !blinkon;
-
- result = VioSetState(&statebuf, 0);
- VioGetState(&statebuf, 0); /* needed? */
-
- if (pdc_color_started)
- COLORS = statebuf[2] ? 16 : 8;
-
- return (result == 0) ? OK : ERR;
-#else
- if (pdc_color_started)
- COLORS = 16;
-
- return blinkon ? ERR : OK;
-#endif
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcutil.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcutil.c
deleted file mode 100644
index 290be35..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcutil.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcos2.h"
-
-RCSID("$Id: pdcutil.c,v 1.14 2008/07/14 04:24:51 wmcbrine Exp $")
-
-#if defined(OS2) && !defined(__EMX__)
-APIRET APIENTRY DosSleep(ULONG ulTime);
-#endif
-
-void PDC_beep(void)
-{
- PDC_LOG(("PDC_beep() - called\n"));
-
-#ifdef EMXVIDEO
- putchar('\007');
-#else
- DosBeep(1380, 100);
-#endif
-}
-
-void PDC_napms(int ms)
-{
- PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
-
-#ifdef __EMX__
- _sleep2(ms);
-#else
- DosSleep(ms);
-#endif
-}
-
-const char *PDC_sysname(void)
-{
- return "OS/2";
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/wccos2.mak b/payloads/libpayload/curses/PDCurses-3.4/os2/wccos2.mak
deleted file mode 100644
index d5900d3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/os2/wccos2.mak
+++ /dev/null
@@ -1,43 +0,0 @@
-# Watcom WMAKE Makefile for PDCurses library - OS/2 Open Watcom 1.1+
-#
-# Usage: wmake -f [path\]wccos2.mak [DEBUG=Y] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-!ifdef %PDCURSES_SRCDIR
-PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
-!else
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-
-osdir = $(PDCURSES_SRCDIR)\os2
-
-CC = wcc386
-TARGET = os2v2
-
-CFLAGS = /bt=$(TARGET) /wx /s /zq /i=$(PDCURSES_SRCDIR)
-
-!ifeq DEBUG Y
-CFLAGS += /d2 /DPDCDEBUG
-LDFLAGS = D A op q sys $(TARGET)
-!else
-CFLAGS += /oneatx
-LDFLAGS = op q sys $(TARGET)
-!endif
-
-LIBEXE = wlib /q /n /b /c /t
-
-!include $(PDCURSES_SRCDIR)\watcom.mif
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
- -copy $(LIBCURSES) panel.lib
-
-PLATFORM1 = Watcom C++ OS/2
-PLATFORM2 = Open Watcom 1.6 for OS/2
-ARCNAME = pdc$(VER)_wcc_os2
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/panel.h b/payloads/libpayload/curses/PDCurses-3.4/panel.h
deleted file mode 100644
index 1d7cace..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/panel.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: panel.h,v 1.19 2008/07/13 16:08:16 wmcbrine Exp $ */
-
-/*----------------------------------------------------------------------*
- * Panels for PDCurses *
- *----------------------------------------------------------------------*/
-
-#ifndef __PDCURSES_PANEL_H__
-#define __PDCURSES_PANEL_H__ 1
-
-#include <curses.h>
-
-#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
-extern "C"
-{
-#endif
-
-typedef struct panelobs
-{
- struct panelobs *above;
- struct panel *pan;
-} PANELOBS;
-
-typedef struct panel
-{
- WINDOW *win;
- int wstarty;
- int wendy;
- int wstartx;
- int wendx;
- struct panel *below;
- struct panel *above;
- const void *user;
- struct panelobs *obscure;
-} PANEL;
-
-int bottom_panel(PANEL *pan);
-int del_panel(PANEL *pan);
-int hide_panel(PANEL *pan);
-int move_panel(PANEL *pan, int starty, int startx);
-PANEL *new_panel(WINDOW *win);
-PANEL *panel_above(const PANEL *pan);
-PANEL *panel_below(const PANEL *pan);
-int panel_hidden(const PANEL *pan);
-const void *panel_userptr(const PANEL *pan);
-WINDOW *panel_window(const PANEL *pan);
-int replace_panel(PANEL *pan, WINDOW *win);
-int set_panel_userptr(PANEL *pan, const void *uptr);
-int show_panel(PANEL *pan);
-int top_panel(PANEL *pan);
-void update_panels(void);
-
-#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
-}
-#endif
-
-#endif /* __PDCURSES_PANEL_H__ */
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/README b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/README
deleted file mode 100644
index bef1c4c..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/README
+++ /dev/null
@@ -1,25 +0,0 @@
-PDCurses Portable Core
-======================
-
-This directory contains core PDCurses source code files common to all
-platforms.
-
-
-Building
---------
-
-These modules are built by the platform-specific makefiles, in the
-platform directories.
-
-
-Distribution Status
--------------------
-
-The files in this directory are released to the Public Domain.
-
-
-Acknowledgements
-----------------
-
-The panel library was originally provided by
-Warren Tucker <wht at n4hgf.mt-park.ga.us>
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addch.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addch.c
deleted file mode 100644
index 5934b54..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addch.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: addch.c,v 1.54 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: addch
-
- Synopsis:
- int addch(const chtype ch);
- int waddch(WINDOW *win, const chtype ch);
- int mvaddch(int y, int x, const chtype ch);
- int mvwaddch(WINDOW *win, int y, int x, const chtype ch);
- int echochar(const chtype ch);
- int wechochar(WINDOW *win, const chtype ch);
-
- int addrawch(chtype ch);
- int waddrawch(WINDOW *win, chtype ch);
- int mvaddrawch(int y, int x, chtype ch);
- int mvwaddrawch(WINDOW *win, int y, int x, chtype ch);
-
- int add_wch(const cchar_t *wch);
- int wadd_wch(WINDOW *win, const cchar_t *wch);
- int mvadd_wch(int y, int x, const cchar_t *wch);
- int mvwadd_wch(WINDOW *win, int y, int x, const cchar_t *wch);
- int echo_wchar(const cchar_t *wch);
- int wecho_wchar(WINDOW *win, const cchar_t *wch);
-
- Description:
- addch() adds the chtype ch to the default window (stdscr) at the
- current cursor position, and advances the cursor. Note that
- chtypes can convey both text (a single character) and
- attributes, including a color pair. add_wch() is the wide-
- character version of this function, taking a pointer to a
- cchar_t instead of a chtype.
-
- waddch() is like addch(), but also lets you specify the window.
- (This is in fact the core output routine.) wadd_wch() is the
- wide version.
-
- mvaddch() moves the cursor to the specified (y, x) position, and
- adds ch to stdscr. mvadd_wch() is the wide version.
-
- mvwaddch() moves the cursor to the specified position and adds
- ch to the specified window. mvwadd_wch() is the wide version.
-
- echochar() adds ch to stdscr at the current cursor position and
- calls refresh(). echo_wchar() is the wide version.
-
- wechochar() adds ch to the specified window and calls
- wrefresh(). wecho_wchar() is the wide version.
-
- addrawch(), waddrawch(), mvaddrawch() and mvwaddrawch() are
- PDCurses-specific wrappers for addch() etc. that disable the
- translation of control characters.
-
- The following applies to all these functions:
-
- If the cursor moves on to the right margin, an automatic newline
- is performed. If scrollok is enabled, and a character is added
- to the bottom right corner of the window, the scrolling region
- will be scrolled up one line. If scrolling is not allowed, ERR
- will be returned.
-
- If ch is a tab, newline, or backspace, the cursor will be moved
- appropriately within the window. If ch is a newline, the
- clrtoeol routine is called before the cursor is moved to the
- beginning of the next line. If newline mapping is off, the
- cursor will be moved to the next line, but the x coordinate will
- be unchanged. If ch is a tab the cursor is moved to the next
- tab position within the window. If ch is another control
- character, it will be drawn in the ^X notation. Calling the
- inch() routine after adding a control character returns the
- representation of the control character, not the control
- character.
-
- Video attributes can be combined with a character by ORing them
- into the parameter. Text, including attributes, can be copied
- from one place to another by using inch() and addch().
-
- Note that in PDCurses, for now, a cchar_t and a chtype are the
- same. The text field is 16 bits wide, and is treated as Unicode
- (UCS-2) when PDCurses is built with wide-character support
- (define PDC_WIDE). So, in functions that take a chtype, like
- addch(), both the wide and narrow versions will handle Unicode.
- But for portability, you should use the wide functions.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- addch Y Y Y
- waddch Y Y Y
- mvaddch Y Y Y
- mvwaddch Y Y Y
- echochar Y - 3.0
- wechochar Y - 3.0
- addrawch - - -
- waddrawch - - -
- mvaddrawch - - -
- mvwaddrawch - - -
- add_wch Y
- wadd_wch Y
- mvadd_wch Y
- mvwadd_wch Y
- echo_wchar Y
- wecho_wchar Y
-
-**man-end****************************************************************/
-
-int waddch(WINDOW *win, const chtype ch)
-{
- int x, y;
- chtype text, attr;
- bool xlat;
-
- PDC_LOG(("waddch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
- win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
-
- if (!win)
- return ERR;
-
- x = win->_curx;
- y = win->_cury;
-
- if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
- return ERR;
-
- xlat = !SP->raw_out && !(ch & A_ALTCHARSET);
- text = ch & A_CHARTEXT;
- attr = ch & A_ATTRIBUTES;
-
- if (xlat && (text < ' ' || text == 0x7f))
- {
- int x2;
-
- switch (text)
- {
- case '\t':
- for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++)
- {
- if (waddch(win, attr | ' ') == ERR)
- return ERR;
-
- /* if tab to next line, exit the loop */
-
- if (!win->_curx)
- break;
- }
- return OK;
-
- case '\n':
- /* if lf -> crlf */
-
- if (!SP->raw_out)
- x = 0;
-
- wclrtoeol(win);
-
- if (++y > win->_bmarg)
- {
- y--;
-
- if (wscrl(win, 1) == ERR)
- return ERR;
- }
-
- break;
-
- case '\b':
- /* don't back over left margin */
-
- if (--x < 0)
- case '\r':
- x = 0;
-
- break;
-
- case 0x7f:
- if (waddch(win, attr | '^') == ERR)
- return ERR;
-
- return waddch(win, attr | '?');
-
- default:
- /* handle control chars */
-
- if (waddch(win, attr | '^') == ERR)
- return ERR;
-
- return waddch(win, ch + '@');
- }
- }
- else
- {
- /* If the incoming character doesn't have its own attribute,
- then use the current attributes for the window. If it has
- attributes but not a color component, OR the attributes to
- the current attributes for the window. If it has a color
- component, use the attributes solely from the incoming
- character. */
-
- if (!(attr & A_COLOR))
- attr |= win->_attrs;
-
- /* wrs (4/10/93): Apply the same sort of logic for the window
- background, in that it only takes precedence if other color
- attributes are not there and that the background character
- will only print if the printing character is blank. */
-
- if (!(attr & A_COLOR))
- attr |= win->_bkgd & A_ATTRIBUTES;
- else
- attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
-
- if (text == ' ')
- text = win->_bkgd & A_CHARTEXT;
-
- /* Add the attribute back into the character. */
-
- text |= attr;
-
- /* Only change _firstch/_lastch if the character to be added is
- different from the character/attribute that is already in
- that position in the window. */
-
- if (win->_y[y][x] != text)
- {
- if (win->_firstch[y] == _NO_CHANGE)
- win->_firstch[y] = win->_lastch[y] = x;
- else
- if (x < win->_firstch[y])
- win->_firstch[y] = x;
- else
- if (x > win->_lastch[y])
- win->_lastch[y] = x;
-
- win->_y[y][x] = text;
- }
-
- if (++x >= win->_maxx)
- {
- /* wrap around test */
-
- x = 0;
-
- if (++y > win->_bmarg)
- {
- y--;
-
- if (wscrl(win, 1) == ERR)
- {
- PDC_sync(win);
- return ERR;
- }
- }
- }
- }
-
- win->_curx = x;
- win->_cury = y;
-
- if (win->_immed)
- wrefresh(win);
- if (win->_sync)
- wsyncup(win);
-
- return OK;
-}
-
-int addch(const chtype ch)
-{
- PDC_LOG(("addch() - called: ch=%x\n", ch));
-
- return waddch(stdscr, ch);
-}
-
-int mvaddch(int y, int x, const chtype ch)
-{
- PDC_LOG(("mvaddch() - called: y=%d x=%d ch=%x\n", y, x, ch));
-
- if (move(y,x) == ERR)
- return ERR;
-
- return waddch(stdscr, ch);
-}
-
-int mvwaddch(WINDOW *win, int y, int x, const chtype ch)
-{
- PDC_LOG(("mvwaddch() - called: win=%p y=%d x=%d ch=%d\n", win, y, x, ch));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddch(win, ch);
-}
-
-int echochar(const chtype ch)
-{
- PDC_LOG(("echochar() - called: ch=%x\n", ch));
-
- return wechochar(stdscr, ch);
-}
-
-int wechochar(WINDOW *win, const chtype ch)
-{
- PDC_LOG(("wechochar() - called: win=%p ch=%x\n", win, ch));
-
- if (waddch(win, ch) == ERR)
- return ERR;
-
- return wrefresh(win);
-}
-
-int waddrawch(WINDOW *win, chtype ch)
-{
- PDC_LOG(("waddrawch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
- win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
-
- if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f)
- ch |= A_ALTCHARSET;
-
- return waddch(win, ch);
-}
-
-int addrawch(chtype ch)
-{
- PDC_LOG(("addrawch() - called: ch=%x\n", ch));
-
- return waddrawch(stdscr, ch);
-}
-
-int mvaddrawch(int y, int x, chtype ch)
-{
- PDC_LOG(("mvaddrawch() - called: y=%d x=%d ch=%d\n", y, x, ch));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return waddrawch(stdscr, ch);
-}
-
-int mvwaddrawch(WINDOW *win, int y, int x, chtype ch)
-{
- PDC_LOG(("mvwaddrawch() - called: win=%p y=%d x=%d ch=%d\n",
- win, y, x, ch));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddrawch(win, ch);
-}
-
-#ifdef PDC_WIDE
-int wadd_wch(WINDOW *win, const cchar_t *wch)
-{
- PDC_LOG(("wadd_wch() - called: win=%p wch=%x\n", win, *wch));
-
- return wch ? waddch(win, *wch) : ERR;
-}
-
-int add_wch(const cchar_t *wch)
-{
- PDC_LOG(("add_wch() - called: wch=%x\n", *wch));
-
- return wadd_wch(stdscr, wch);
-}
-
-int mvadd_wch(int y, int x, const cchar_t *wch)
-{
- PDC_LOG(("mvaddch() - called: y=%d x=%d wch=%x\n", y, x, *wch));
-
- if (move(y,x) == ERR)
- return ERR;
-
- return wadd_wch(stdscr, wch);
-}
-
-int mvwadd_wch(WINDOW *win, int y, int x, const cchar_t *wch)
-{
- PDC_LOG(("mvwaddch() - called: win=%p y=%d x=%d wch=%d\n",
- win, y, x, *wch));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wadd_wch(win, wch);
-}
-
-int echo_wchar(const cchar_t *wch)
-{
- PDC_LOG(("echo_wchar() - called: wch=%x\n", *wch));
-
- return wecho_wchar(stdscr, wch);
-}
-
-int wecho_wchar(WINDOW *win, const cchar_t *wch)
-{
- PDC_LOG(("wecho_wchar() - called: win=%p wch=%x\n", win, *wch));
-
- if (!wch || (wadd_wch(win, wch) == ERR))
- return ERR;
-
- return wrefresh(win);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addchstr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addchstr.c
deleted file mode 100644
index 249ea8d..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addchstr.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: addchstr.c,v 1.43 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: addchstr
-
- Synopsis:
- int addchstr(const chtype *ch);
- int addchnstr(const chtype *ch, int n);
- int waddchstr(WINDOW *win, const chtype *ch);
- int waddchnstr(WINDOW *win, const chtype *ch, int n);
- int mvaddchstr(int y, int x, const chtype *ch);
- int mvaddchnstr(int y, int x, const chtype *ch, int n);
- int mvwaddchstr(WINDOW *, int y, int x, const chtype *ch);
- int mvwaddchnstr(WINDOW *, int y, int x, const chtype *ch, int n);
-
- int add_wchstr(const cchar_t *wch);
- int add_wchnstr(const cchar_t *wch, int n);
- int wadd_wchstr(WINDOW *win, const cchar_t *wch);
- int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n);
- int mvadd_wchstr(int y, int x, const cchar_t *wch);
- int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n);
- int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch);
- int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch,
- int n);
-
- Description:
- These routines write a chtype or cchar_t string directly into
- the window structure, starting at the current or specified
- position. The four routines with n as the last argument copy at
- most n elements, but no more than will fit on the line. If n =
- -1 then the whole string is copied, up to the maximum number
- that will fit on the line.
-
- The cursor position is not advanced. These routines do not check
- for newline or other special characters, nor does any line
- wrapping occur.
-
- Return Value:
- All functions return OK or ERR.
-
- Portability X/Open BSD SYS V
- addchstr Y - 4.0
- waddchstr Y - 4.0
- mvaddchstr Y - 4.0
- mvwaddchstr Y - 4.0
- addchnstr Y - 4.0
- waddchnstr Y - 4.0
- mvaddchnstr Y - 4.0
- mvwaddchnstr Y - 4.0
- add_wchstr Y
- wadd_wchstr Y
- mvadd_wchstr Y
- mvwadd_wchstr Y
- add_wchnstr Y
- wadd_wchnstr Y
- mvadd_wchnstr Y
- mvwadd_wchnstr Y
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-int waddchnstr(WINDOW *win, const chtype *ch, int n)
-{
- int y, x, maxx, minx;
- chtype *ptr;
-
- PDC_LOG(("waddchnstr() - called: win=%p n=%d\n", win, n));
-
- if (!win || !ch || !n || n < -1)
- return ERR;
-
- x = win->_curx;
- y = win->_cury;
- ptr = &(win->_y[y][x]);
-
- if (n == -1 || n > win->_maxx - x)
- n = win->_maxx - x;
-
- minx = win->_firstch[y];
- maxx = win->_lastch[y];
-
- for (; n && *ch; n--, x++, ptr++, ch++)
- {
- if (*ptr != *ch)
- {
- if (x < minx || minx == _NO_CHANGE)
- minx = x;
-
- if (x > maxx)
- maxx = x;
-
- PDC_LOG(("y %d x %d minx %d maxx %d *ptr %x *ch"
- " %x firstch: %d lastch: %d\n",
- y, x, minx, maxx, *ptr, *ch,
- win->_firstch[y], win->_lastch[y]));
-
- *ptr = *ch;
- }
- }
-
- win->_firstch[y] = minx;
- win->_lastch[y] = maxx;
-
- return OK;
-}
-
-int addchstr(const chtype *ch)
-{
- PDC_LOG(("addchstr() - called\n"));
-
- return waddchnstr(stdscr, ch, -1);
-}
-
-int addchnstr(const chtype *ch, int n)
-{
- PDC_LOG(("addchnstr() - called\n"));
-
- return waddchnstr(stdscr, ch, n);
-}
-
-int waddchstr(WINDOW *win, const chtype *ch)
-{
- PDC_LOG(("waddchstr() - called: win=%p\n", win));
-
- return waddchnstr(win, ch, -1);
-}
-
-int mvaddchstr(int y, int x, const chtype *ch)
-{
- PDC_LOG(("mvaddchstr() - called: y %d x %d\n", y, x));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return waddchnstr(stdscr, ch, -1);
-}
-
-int mvaddchnstr(int y, int x, const chtype *ch, int n)
-{
- PDC_LOG(("mvaddchnstr() - called: y %d x %d n %d\n", y, x, n));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return waddchnstr(stdscr, ch, n);
-}
-
-int mvwaddchstr(WINDOW *win, int y, int x, const chtype *ch)
-{
- PDC_LOG(("mvwaddchstr() - called:\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddchnstr(win, ch, -1);
-}
-
-int mvwaddchnstr(WINDOW *win, int y, int x, const chtype *ch, int n)
-{
- PDC_LOG(("mvwaddchnstr() - called: y %d x %d n %d \n", y, x, n));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddchnstr(win, ch, n);
-}
-
-#ifdef PDC_WIDE
-int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n)
-{
- PDC_LOG(("wadd_wchnstr() - called: win=%p n=%d\n", win, n));
-
- return waddchnstr(win, wch, n);
-}
-
-int add_wchstr(const cchar_t *wch)
-{
- PDC_LOG(("add_wchstr() - called\n"));
-
- return wadd_wchnstr(stdscr, wch, -1);
-}
-
-int add_wchnstr(const cchar_t *wch, int n)
-{
- PDC_LOG(("add_wchnstr() - called\n"));
-
- return wadd_wchnstr(stdscr, wch, n);
-}
-
-int wadd_wchstr(WINDOW *win, const cchar_t *wch)
-{
- PDC_LOG(("wadd_wchstr() - called: win=%p\n", win));
-
- return wadd_wchnstr(win, wch, -1);
-}
-
-int mvadd_wchstr(int y, int x, const cchar_t *wch)
-{
- PDC_LOG(("mvadd_wchstr() - called: y %d x %d\n", y, x));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wadd_wchnstr(stdscr, wch, -1);
-}
-
-int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n)
-{
- PDC_LOG(("mvadd_wchnstr() - called: y %d x %d n %d\n", y, x, n));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wadd_wchnstr(stdscr, wch, n);
-}
-
-int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch)
-{
- PDC_LOG(("mvwadd_wchstr() - called:\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wadd_wchnstr(win, wch, -1);
-}
-
-int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch, int n)
-{
- PDC_LOG(("mvwadd_wchnstr() - called: y %d x %d n %d \n", y, x, n));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wadd_wchnstr(win, wch, n);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addstr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addstr.c
deleted file mode 100644
index ca19fd0..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/addstr.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: addstr.c,v 1.44 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: addstr
-
- Synopsis:
- int addstr(const char *str);
- int addnstr(const char *str, int n);
- int waddstr(WINDOW *win, const char *str);
- int waddnstr(WINDOW *win, const char *str, int n);
- int mvaddstr(int y, int x, const char *str);
- int mvaddnstr(int y, int x, const char *str, int n);
- int mvwaddstr(WINDOW *win, int y, int x, const char *str);
- int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n);
-
- int addwstr(const wchar_t *wstr);
- int addnwstr(const wchar_t *wstr, int n);
- int waddwstr(WINDOW *win, const wchar_t *wstr);
- int waddnwstr(WINDOW *win, const wchar_t *wstr, int n);
- int mvaddwstr(int y, int x, const wchar_t *wstr);
- int mvaddnwstr(int y, int x, const wchar_t *wstr, int n);
- int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr);
- int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
-
- Description:
- These routines write all the characters of the null-terminated
- string str or wide-character string wstr to the given window.
- The functionality is similar to calling waddch() once for each
- character in the string; except that, when PDCurses is built
- with wide-character support enabled, the narrow-character
- functions treat the string as a multibyte string in the current
- locale, and convert it. The routines with n as the last
- argument write at most n characters; if n is negative, then the
- entire string will be added.
-
- Return Value:
- All functions return OK or ERR.
-
- Portability X/Open BSD SYS V
- addstr Y Y Y
- waddstr Y Y Y
- mvaddstr Y Y Y
- mvwaddstr Y Y Y
- addnstr Y - 4.0
- waddnstr Y - 4.0
- mvaddnstr Y - 4.0
- mvwaddnstr Y - 4.0
- addwstr Y
- waddwstr Y
- mvaddwstr Y
- mvwaddwstr Y
- addnwstr Y
- waddnwstr Y
- mvaddnwstr Y
- mvwaddnwstr Y
-
-**man-end****************************************************************/
-
-int waddnstr(WINDOW *win, const char *str, int n)
-{
- int i = 0;
-
- PDC_LOG(("waddnstr() - called: string=\"%s\" n %d \n", str, n));
-
- if (!win || !str)
- return ERR;
-
- while (str[i] && (i < n || n < 0))
- {
-#ifdef PDC_WIDE
- wchar_t wch;
- int retval = PDC_mbtowc(&wch, str + i, n >= 0 ? n - i : 6);
-
- if (retval <= 0)
- return OK;
-
- i += retval;
-#else
- chtype wch = (unsigned char)(str[i++]);
-#endif
- if (waddch(win, wch) == ERR)
- return ERR;
- }
-
- return OK;
-}
-
-int addstr(const char *str)
-{
- PDC_LOG(("addstr() - called: string=\"%s\"\n", str));
-
- return waddnstr(stdscr, str, -1);
-}
-
-int addnstr(const char *str, int n)
-{
- PDC_LOG(("addnstr() - called: string=\"%s\" n %d \n", str, n));
-
- return waddnstr(stdscr, str, n);
-}
-
-int waddstr(WINDOW *win, const char *str)
-{
- PDC_LOG(("waddstr() - called: string=\"%s\"\n", str));
-
- return waddnstr(win, str, -1);
-}
-
-int mvaddstr(int y, int x, const char *str)
-{
- PDC_LOG(("mvaddstr() - called: y %d x %d string=\"%s\"\n", y, x, str));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return waddnstr(stdscr, str, -1);
-}
-
-int mvaddnstr(int y, int x, const char *str, int n)
-{
- PDC_LOG(("mvaddnstr() - called: y %d x %d string=\"%s\" n %d \n",
- y, x, str, n));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return waddnstr(stdscr, str, n);
-}
-
-int mvwaddstr(WINDOW *win, int y, int x, const char *str)
-{
- PDC_LOG(("mvwaddstr() - called: string=\"%s\"\n", str));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddnstr(win, str, -1);
-}
-
-int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n)
-{
- PDC_LOG(("mvwaddnstr() - called: y %d x %d string=\"%s\" n %d \n",
- y, x, str, n));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddnstr(win, str, n);
-}
-
-#ifdef PDC_WIDE
-int waddnwstr(WINDOW *win, const wchar_t *wstr, int n)
-{
- int i = 0;
-
- PDC_LOG(("waddnwstr() - called\n"));
-
- if (!win || !wstr)
- return ERR;
-
- while (wstr[i] && (i < n || n < 0))
- {
- chtype wch = wstr[i++];
-
- if (waddch(win, wch) == ERR)
- return ERR;
- }
-
- return OK;
-}
-
-int addwstr(const wchar_t *wstr)
-{
- PDC_LOG(("addwstr() - called\n"));
-
- return waddnwstr(stdscr, wstr, -1);
-}
-
-int addnwstr(const wchar_t *wstr, int n)
-{
- PDC_LOG(("addnwstr() - called\n"));
-
- return waddnwstr(stdscr, wstr, n);
-}
-
-int waddwstr(WINDOW *win, const wchar_t *wstr)
-{
- PDC_LOG(("waddwstr() - called\n"));
-
- return waddnwstr(win, wstr, -1);
-}
-
-int mvaddwstr(int y, int x, const wchar_t *wstr)
-{
- PDC_LOG(("mvaddstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return waddnwstr(stdscr, wstr, -1);
-}
-
-int mvaddnwstr(int y, int x, const wchar_t *wstr, int n)
-{
- PDC_LOG(("mvaddnstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return waddnwstr(stdscr, wstr, n);
-}
-
-int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr)
-{
- PDC_LOG(("mvwaddstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddnwstr(win, wstr, -1);
-}
-
-int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n)
-{
- PDC_LOG(("mvwaddnstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return waddnwstr(win, wstr, n);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/attr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/attr.c
deleted file mode 100644
index 123cb90..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/attr.c
+++ /dev/null
@@ -1,349 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: attr.c,v 1.41 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: attr
-
- Synopsis:
- int attroff(chtype attrs);
- int wattroff(WINDOW *win, chtype attrs);
- int attron(chtype attrs);
- int wattron(WINDOW *win, chtype attrs);
- int attrset(chtype attrs);
- int wattrset(WINDOW *win, chtype attrs);
- int standend(void);
- int wstandend(WINDOW *win);
- int standout(void);
- int wstandout(WINDOW *win);
-
- int color_set(short color_pair, void *opts);
- int wcolor_set(WINDOW *win, short color_pair, void *opts);
-
- int attr_get(attr_t *attrs, short *color_pair, void *opts);
- int attr_off(attr_t attrs, void *opts);
- int attr_on(attr_t attrs, void *opts);
- int attr_set(attr_t attrs, short color_pair, void *opts);
- int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair,
- void *opts);
- int wattr_off(WINDOW *win, attr_t attrs, void *opts);
- int wattr_on(WINDOW *win, attr_t attrs, void *opts);
- int wattr_set(WINDOW *win, attr_t attrs, short color_pair,
- void *opts);
-
- int chgat(int n, attr_t attr, short color, const void *opts);
- int mvchgat(int y, int x, int n, attr_t attr, short color,
- const void *opts);
- int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr,
- short color, const void *opts);
- int wchgat(WINDOW *win, int n, attr_t attr, short color,
- const void *opts);
-
- chtype getattrs(WINDOW *win);
-
- Description:
- These functions manipulate the current attributes and/or colors
- of the named window. These attributes can be any combination
- of A_STANDOUT, A_REVERSE, A_BOLD, A_DIM, A_BLINK, A_UNDERLINE.
-
- These constants are defined in <curses.h> and can be combined
- with the bitwise-OR operator (|).
-
- The current attributes of a window are applied to all chtypes
- that are written into the window with waddch(). Attributes are
- a property of the chtype, and move with the character through
- any scrolling or insert/delete operations.
-
- attrset() sets the current attributes of the given window to
- attrs. attroff() turns off the named attributes without
- affecting any other attributes; attron() turns them on.
- color_set() sets the window color to the value of color_pair.
-
- standout() is the same as attron(A_STANDOUT). standend() is the
- same as attrset(A_NORMAL); that is, it turns off all attributes.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- attroff Y Y Y
- wattroff Y Y Y
- attron Y Y Y
- wattron Y Y Y
- attrset Y Y Y
- wattrset Y Y Y
- standend Y Y Y
- wstandend Y Y Y
- standout Y Y Y
- wstandout Y Y Y
- color_set Y
- wcolor_set Y
- attr_get Y
- wattr_get Y
- attr_on Y
- wattr_on Y
- attr_off Y
- wattr_off Y
- attr_set Y
- wattr_set Y
- chgat Y
- wchgat Y
- mvchgat Y
- mvwchgat Y
- getattrs -
-
-**man-end****************************************************************/
-
-int wattroff(WINDOW *win, chtype attrs)
-{
- PDC_LOG(("wattroff() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_attrs &= (~attrs & A_ATTRIBUTES);
-
- return OK;
-}
-
-int attroff(chtype attrs)
-{
- PDC_LOG(("attroff() - called\n"));
-
- return wattroff(stdscr, attrs);
-}
-
-int wattron(WINDOW *win, chtype attrs)
-{
- chtype newcolr, oldcolr, newattr, oldattr;
-
- PDC_LOG(("wattron() - called\n"));
-
- if (!win)
- return ERR;
-
- if ((win->_attrs & A_COLOR) && (attrs & A_COLOR))
- {
- oldcolr = win->_attrs & A_COLOR;
- oldattr = win->_attrs ^ oldcolr;
- newcolr = attrs & A_COLOR;
- newattr = (attrs & A_ATTRIBUTES) ^ newcolr;
- newattr |= oldattr;
- win->_attrs = newattr | newcolr;
- }
- else
- win->_attrs |= (attrs & A_ATTRIBUTES);
-
- return OK;
-}
-
-int attron(chtype attrs)
-{
- PDC_LOG(("attron() - called\n"));
-
- return wattron(stdscr, attrs);
-}
-
-int wattrset(WINDOW *win, chtype attrs)
-{
- PDC_LOG(("wattrset() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_attrs = attrs & A_ATTRIBUTES;
-
- return OK;
-}
-
-int attrset(chtype attrs)
-{
- PDC_LOG(("attrset() - called\n"));
-
- return wattrset(stdscr, attrs);
-}
-
-int standend(void)
-{
- PDC_LOG(("standend() - called\n"));
-
- return wattrset(stdscr, A_NORMAL);
-}
-
-int standout(void)
-{
- PDC_LOG(("standout() - called\n"));
-
- return wattrset(stdscr, A_STANDOUT);
-}
-
-int wstandend(WINDOW *win)
-{
- PDC_LOG(("wstandend() - called\n"));
-
- return wattrset(win, A_NORMAL);
-}
-
-int wstandout(WINDOW *win)
-{
- PDC_LOG(("wstandout() - called\n"));
-
- return wattrset(win, A_STANDOUT);
-}
-
-chtype getattrs(WINDOW *win)
-{
- return win ? win->_attrs : 0;
-}
-
-int wcolor_set(WINDOW *win, short color_pair, void *opts)
-{
- PDC_LOG(("wcolor_set() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_attrs = (win->_attrs & ~A_COLOR) | COLOR_PAIR(color_pair);
-
- return OK;
-}
-
-int color_set(short color_pair, void *opts)
-{
- PDC_LOG(("color_set() - called\n"));
-
- return wcolor_set(stdscr, color_pair, opts);
-}
-
-int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair, void *opts)
-{
- PDC_LOG(("wattr_get() - called\n"));
-
- if (!win)
- return ERR;
-
- if (attrs)
- *attrs = win->_attrs & (A_ATTRIBUTES & ~A_COLOR);
-
- if (color_pair)
- *color_pair = PAIR_NUMBER(win->_attrs);
-
- return OK;
-}
-
-int attr_get(attr_t *attrs, short *color_pair, void *opts)
-{
- PDC_LOG(("attr_get() - called\n"));
-
- return wattr_get(stdscr, attrs, color_pair, opts);
-}
-
-int wattr_off(WINDOW *win, attr_t attrs, void *opts)
-{
- PDC_LOG(("wattr_off() - called\n"));
-
- return wattroff(win, attrs);
-}
-
-int attr_off(attr_t attrs, void *opts)
-{
- PDC_LOG(("attr_off() - called\n"));
-
- return wattroff(stdscr, attrs);
-}
-
-int wattr_on(WINDOW *win, attr_t attrs, void *opts)
-{
- PDC_LOG(("wattr_off() - called\n"));
-
- return wattron(win, attrs);
-}
-
-int attr_on(attr_t attrs, void *opts)
-{
- PDC_LOG(("attr_on() - called\n"));
-
- return wattron(stdscr, attrs);
-}
-
-int wattr_set(WINDOW *win, attr_t attrs, short color_pair, void *opts)
-{
- PDC_LOG(("wattr_set() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_attrs = (attrs & (A_ATTRIBUTES & ~A_COLOR)) | COLOR_PAIR(color_pair);
-
- return OK;
-}
-
-int attr_set(attr_t attrs, short color_pair, void *opts)
-{
- PDC_LOG(("attr_get() - called\n"));
-
- return wattr_set(stdscr, attrs, color_pair, opts);
-}
-
-int wchgat(WINDOW *win, int n, attr_t attr, short color, const void *opts)
-{
- chtype *dest, newattr;
- int startpos, endpos;
-
- PDC_LOG(("wchgat() - called\n"));
-
- if (!win)
- return ERR;
-
- newattr = (attr & A_ATTRIBUTES) | COLOR_PAIR(color);
-
- startpos = win->_curx;
- endpos = ((n < 0) ? win->_maxx : min(startpos + n, win->_maxx)) - 1;
- dest = win->_y[win->_cury];
-
- for (n = startpos; n <= endpos; n++)
- dest[n] = (dest[n] & A_CHARTEXT) | newattr;
-
- n = win->_cury;
-
- if (startpos < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE)
- win->_firstch[n] = startpos;
-
- if (endpos > win->_lastch[n])
- win->_lastch[n] = endpos;
-
- PDC_sync(win);
-
- return OK;
-}
-
-int chgat(int n, attr_t attr, short color, const void *opts)
-{
- PDC_LOG(("chgat() - called\n"));
-
- return wchgat(stdscr, n, attr, color, opts);
-}
-
-int mvchgat(int y, int x, int n, attr_t attr, short color, const void *opts)
-{
- PDC_LOG(("mvchgat() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wchgat(stdscr, n, attr, color, opts);
-}
-
-int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr, short color,
- const void *opts)
-{
- PDC_LOG(("mvwchgat() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wchgat(win, n, attr, color, opts);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/beep.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/beep.c
deleted file mode 100644
index 9e92f45..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/beep.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: beep.c,v 1.34 2008/07/13 16:08:17 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: beep
-
- Synopsis:
- int beep(void);
- int flash(void);
-
- Description:
- beep() sounds the audible bell on the terminal, if possible;
- if not, it calls flash().
-
- flash() "flashes" the screen, by inverting the foreground and
- background of every cell, pausing, and then restoring the
- original attributes.
-
- Return Value:
- These functions return OK.
-
- Portability X/Open BSD SYS V
- beep Y Y Y
- flash Y Y Y
-
-**man-end****************************************************************/
-
-int beep(void)
-{
- PDC_LOG(("beep() - called\n"));
-
- if (SP->audible)
- PDC_beep();
- else
- flash();
-
- return OK;
-}
-
-int flash(void)
-{
- int z, y, x;
-
- PDC_LOG(("flash() - called\n"));
-
- /* Reverse each cell; wait; restore the screen */
-
- for (z = 0; z < 2; z++)
- {
- for (y = 0; y < LINES; y++)
- for (x = 0; x < COLS; x++)
- curscr->_y[y][x] ^= A_REVERSE;
-
- wrefresh(curscr);
-
- if (!z)
- napms(50);
- }
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/bkgd.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/bkgd.c
deleted file mode 100644
index d511efe..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/bkgd.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: bkgd.c,v 1.39 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: bkgd
-
- Synopsis:
- int bkgd(chtype ch);
- void bkgdset(chtype ch);
- chtype getbkgd(WINDOW *win);
- int wbkgd(WINDOW *win, chtype ch);
- void wbkgdset(WINDOW *win, chtype ch);
-
- int bkgrnd(const cchar_t *wch);
- void bkgrndset(const cchar_t *wch);
- int getbkgrnd(cchar_t *wch);
- int wbkgrnd(WINDOW *win, const cchar_t *wch);
- void wbkgrndset(WINDOW *win, const cchar_t *wch);
- int wgetbkgrnd(WINDOW *win, cchar_t *wch);
-
- Description:
- bkgdset() and wbkgdset() manipulate the background of a window.
- The background is a chtype consisting of any combination of
- attributes and a character; it is combined with each chtype
- added or inserted to the window by waddch() or winsch(). Only
- the attribute part is used to set the background of non-blank
- characters, while both character and attributes are used for
- blank positions.
-
- bkgd() and wbkgd() not only change the background, but apply it
- immediately to every cell in the window.
-
- The attributes that are defined with the attrset()/attron() set
- of functions take precedence over the background attributes if
- there is a conflict (e.g., different color pairs).
-
- Return Value:
- bkgd() and wbkgd() return OK, unless the window is NULL, in
- which case they return ERR.
-
- Portability X/Open BSD SYS V
- bkgd Y - 4.0
- bkgdset Y - 4.0
- getbkgd Y
- wbkgd Y - 4.0
- wbkgdset Y - 4.0
- bkgrnd Y
- bkgrndset Y
- getbkgrnd Y
- wbkgrnd Y
- wbkgrndset Y
- wgetbkgrnd Y
-
-**man-end****************************************************************/
-
-int wbkgd(WINDOW *win, chtype ch)
-{
- int x, y;
- chtype oldcolr, oldch, newcolr, newch, colr, attr;
- chtype oldattr = 0, newattr = 0;
- chtype *winptr;
-
- PDC_LOG(("wbkgd() - called\n"));
-
- if (!win)
- return ERR;
-
- if (win->_bkgd == ch)
- return OK;
-
- oldcolr = win->_bkgd & A_COLOR;
- if (oldcolr)
- oldattr = (win->_bkgd & A_ATTRIBUTES) ^ oldcolr;
-
- oldch = win->_bkgd & A_CHARTEXT;
-
- wbkgdset(win, ch);
-
- newcolr = win->_bkgd & A_COLOR;
- if (newcolr)
- newattr = (win->_bkgd & A_ATTRIBUTES) ^ newcolr;
-
- newch = win->_bkgd & A_CHARTEXT;
-
- /* what follows is what seems to occur in the System V
- implementation of this routine */
-
- for (y = 0; y < win->_maxy; y++)
- {
- for (x = 0; x < win->_maxx; x++)
- {
- winptr = win->_y[y] + x;
-
- ch = *winptr;
-
- /* determine the colors and attributes of the character read
- from the window */
-
- colr = ch & A_COLOR;
- attr = ch & (A_ATTRIBUTES ^ A_COLOR);
-
- /* if the color is the same as the old background color,
- then make it the new background color, otherwise leave it */
-
- if (colr == oldcolr)
- colr = newcolr;
-
- /* remove any attributes (non color) from the character that
- were part of the old background, then combine the
- remaining ones with the new background */
-
- attr ^= oldattr;
- attr |= newattr;
-
- /* change character if it is there because it was the old
- background character */
-
- ch &= A_CHARTEXT;
- if (ch == oldch)
- ch = newch;
-
- ch |= (attr | colr);
-
- *winptr = ch;
-
- }
- }
-
- touchwin(win);
- PDC_sync(win);
- return OK;
-}
-
-int bkgd(chtype ch)
-{
- PDC_LOG(("bkgd() - called\n"));
-
- return wbkgd(stdscr, ch);
-}
-
-void wbkgdset(WINDOW *win, chtype ch)
-{
- PDC_LOG(("wbkgdset() - called\n"));
-
- if (win)
- {
- if (!(ch & A_CHARTEXT))
- ch |= ' ';
-
- win->_bkgd = ch;
- }
-}
-
-void bkgdset(chtype ch)
-{
- PDC_LOG(("bkgdset() - called\n"));
-
- wbkgdset(stdscr, ch);
-}
-
-chtype getbkgd(WINDOW *win)
-{
- PDC_LOG(("getbkgd() - called\n"));
-
- return win ? win->_bkgd : (chtype)ERR;
-}
-
-#ifdef PDC_WIDE
-int wbkgrnd(WINDOW *win, const cchar_t *wch)
-{
- PDC_LOG(("wbkgrnd() - called\n"));
-
- return wch ? wbkgd(win, *wch) : ERR;
-}
-
-int bkgrnd(const cchar_t *wch)
-{
- PDC_LOG(("bkgrnd() - called\n"));
-
- return wbkgrnd(stdscr, wch);
-}
-
-void wbkgrndset(WINDOW *win, const cchar_t *wch)
-{
- PDC_LOG(("wbkgdset() - called\n"));
-
- if (wch)
- wbkgdset(win, *wch);
-}
-
-void bkgrndset(const cchar_t *wch)
-{
- PDC_LOG(("bkgrndset() - called\n"));
-
- wbkgrndset(stdscr, wch);
-}
-
-int wgetbkgrnd(WINDOW *win, cchar_t *wch)
-{
- PDC_LOG(("wgetbkgrnd() - called\n"));
-
- if (!win || !wch)
- return ERR;
-
- *wch = win->_bkgd;
-
- return OK;
-}
-
-int getbkgrnd(cchar_t *wch)
-{
- PDC_LOG(("getbkgrnd() - called\n"));
-
- return wgetbkgrnd(stdscr, wch);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/border.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/border.c
deleted file mode 100644
index 2a2ebcf..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/border.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: border.c,v 1.53 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: border
-
- Synopsis:
- int border(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl,
- chtype tr, chtype bl, chtype br);
- int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts,
- chtype bs, chtype tl, chtype tr, chtype bl, chtype br);
- int box(WINDOW *win, chtype verch, chtype horch);
- int hline(chtype ch, int n);
- int vline(chtype ch, int n);
- int whline(WINDOW *win, chtype ch, int n);
- int wvline(WINDOW *win, chtype ch, int n);
- int mvhline(int y, int x, chtype ch, int n);
- int mvvline(int y, int x, chtype ch, int n);
- int mvwhline(WINDOW *win, int y, int x, chtype ch, int n);
- int mvwvline(WINDOW *win, int y, int x, chtype ch, int n);
-
- int border_set(const cchar_t *ls, const cchar_t *rs,
- const cchar_t *ts, const cchar_t *bs,
- const cchar_t *tl, const cchar_t *tr,
- const cchar_t *bl, const cchar_t *br);
- int wborder_set(WINDOW *win, const cchar_t *ls, const cchar_t *rs,
- const cchar_t *ts, const cchar_t *bs,
- const cchar_t *tl, const cchar_t *tr,
- const cchar_t *bl, const cchar_t *br);
- int box_set(WINDOW *win, const cchar_t *verch, const cchar_t *horch);
- int hline_set(const cchar_t *wch, int n);
- int vline_set(const cchar_t *wch, int n);
- int whline_set(WINDOW *win, const cchar_t *wch, int n);
- int wvline_set(WINDOW *win, const cchar_t *wch, int n);
- int mvhline_set(int y, int x, const cchar_t *wch, int n);
- int mvvline_set(int y, int x, const cchar_t *wch, int n);
- int mvwhline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n);
- int mvwvline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n);
-
- Description:
- border(), wborder(), and box() draw a border around the edge of
- the window. If any argument is zero, an appropriate default is
- used:
-
- ls left side of border ACS_VLINE
- rs right side of border ACS_VLINE
- ts top side of border ACS_HLINE
- bs bottom side of border ACS_HLINE
- tl top left corner of border ACS_ULCORNER
- tr top right corner of border ACS_URCORNER
- bl bottom left corner of border ACS_LLCORNER
- br bottom right corner of border ACS_LRCORNER
-
- hline() and whline() draw a horizontal line, using ch, starting
- from the current cursor position. The cursor position does not
- change. The line is at most n characters long, or as many as
- will fit in the window.
-
- vline() and wvline() draw a vertical line, using ch, starting
- from the current cursor position. The cursor position does not
- change. The line is at most n characters long, or as many as
- will fit in the window.
-
- Return Value:
- These functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- border Y - 4.0
- wborder Y - 4.0
- box Y Y Y
- hline Y - 4.0
- vline Y - 4.0
- whline Y - 4.0
- wvline Y - 4.0
- mvhline Y
- mvvline Y
- mvwhline Y
- mvwvline Y
- border_set Y
- wborder_set Y
- box_set Y
- hline_set Y
- vline_set Y
- whline_set Y
- wvline_set Y
- mvhline_set Y
- mvvline_set Y
- mvwhline_set Y
- mvwvline_set Y
-
-**man-end****************************************************************/
-
-/* _attr_passthru() -- Takes a single chtype 'ch' and checks if the
- current attribute of window 'win', as set by wattrset(), and/or the
- current background of win, as set by wbkgd(), should by combined with
- it. Attributes set explicitly in ch take precedence. */
-
-static chtype _attr_passthru(WINDOW *win, chtype ch)
-{
- chtype attr;
-
- /* If the incoming character doesn't have its own attribute, then
- use the current attributes for the window. If the incoming
- character has attributes, but not a color component, OR the
- attributes to the current attributes for the window. If the
- incoming character has a color component, use only the attributes
- from the incoming character. */
-
- attr = ch & A_ATTRIBUTES;
- if (!(attr & A_COLOR))
- attr |= win->_attrs;
-
- /* wrs (4/10/93) -- Apply the same sort of logic for the window
- background, in that it only takes precedence if other color
- attributes are not there. */
-
- if (!(attr & A_COLOR))
- attr |= win->_bkgd & A_ATTRIBUTES;
- else
- attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
-
- ch = (ch & A_CHARTEXT) | attr;
-
- return ch;
-}
-
-int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts, chtype bs,
- chtype tl, chtype tr, chtype bl, chtype br)
-{
- int i, ymax, xmax;
-
- PDC_LOG(("wborder() - called\n"));
-
- if (!win)
- return ERR;
-
- ymax = win->_maxy - 1;
- xmax = win->_maxx - 1;
-
- ls = _attr_passthru(win, ls ? ls : ACS_VLINE);
- rs = _attr_passthru(win, rs ? rs : ACS_VLINE);
- ts = _attr_passthru(win, ts ? ts : ACS_HLINE);
- bs = _attr_passthru(win, bs ? bs : ACS_HLINE);
- tl = _attr_passthru(win, tl ? tl : ACS_ULCORNER);
- tr = _attr_passthru(win, tr ? tr : ACS_URCORNER);
- bl = _attr_passthru(win, bl ? bl : ACS_LLCORNER);
- br = _attr_passthru(win, br ? br : ACS_LRCORNER);
-
- for (i = 1; i < xmax; i++)
- {
- win->_y[0][i] = ts;
- win->_y[ymax][i] = bs;
- }
-
- for (i = 1; i < ymax; i++)
- {
- win->_y[i][0] = ls;
- win->_y[i][xmax] = rs;
- }
-
- win->_y[0][0] = tl;
- win->_y[0][xmax] = tr;
- win->_y[ymax][0] = bl;
- win->_y[ymax][xmax] = br;
-
- for (i = 0; i <= ymax; i++)
- {
- win->_firstch[i] = 0;
- win->_lastch[i] = xmax;
- }
-
- PDC_sync(win);
-
- return OK;
-}
-
-int border(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl,
- chtype tr, chtype bl, chtype br)
-{
- PDC_LOG(("border() - called\n"));
-
- return wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br);
-}
-
-int box(WINDOW *win, chtype verch, chtype horch)
-{
- PDC_LOG(("box() - called\n"));
-
- return wborder(win, verch, verch, horch, horch, 0, 0, 0, 0);
-}
-
-int whline(WINDOW *win, chtype ch, int n)
-{
- chtype *dest;
- int startpos, endpos;
-
- PDC_LOG(("whline() - called\n"));
-
- if (!win || n < 1)
- return ERR;
-
- startpos = win->_curx;
- endpos = min(startpos + n, win->_maxx) - 1;
- dest = win->_y[win->_cury];
- ch = _attr_passthru(win, ch ? ch : ACS_HLINE);
-
- for (n = startpos; n <= endpos; n++)
- dest[n] = ch;
-
- n = win->_cury;
-
- if (startpos < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE)
- win->_firstch[n] = startpos;
-
- if (endpos > win->_lastch[n])
- win->_lastch[n] = endpos;
-
- PDC_sync(win);
-
- return OK;
-}
-
-int hline(chtype ch, int n)
-{
- PDC_LOG(("hline() - called\n"));
-
- return whline(stdscr, ch, n);
-}
-
-int mvhline(int y, int x, chtype ch, int n)
-{
- PDC_LOG(("mvhline() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return whline(stdscr, ch, n);
-}
-
-int mvwhline(WINDOW *win, int y, int x, chtype ch, int n)
-{
- PDC_LOG(("mvwhline() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return whline(win, ch, n);
-}
-
-int wvline(WINDOW *win, chtype ch, int n)
-{
- int endpos, x;
-
- PDC_LOG(("wvline() - called\n"));
-
- if (!win || n < 1)
- return ERR;
-
- endpos = min(win->_cury + n, win->_maxy);
- x = win->_curx;
-
- ch = _attr_passthru(win, ch ? ch : ACS_VLINE);
-
- for (n = win->_cury; n < endpos; n++)
- {
- win->_y[n][x] = ch;
-
- if (x < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE)
- win->_firstch[n] = x;
-
- if (x > win->_lastch[n])
- win->_lastch[n] = x;
- }
-
- PDC_sync(win);
-
- return OK;
-}
-
-int vline(chtype ch, int n)
-{
- PDC_LOG(("vline() - called\n"));
-
- return wvline(stdscr, ch, n);
-}
-
-int mvvline(int y, int x, chtype ch, int n)
-{
- PDC_LOG(("mvvline() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wvline(stdscr, ch, n);
-}
-
-int mvwvline(WINDOW *win, int y, int x, chtype ch, int n)
-{
- PDC_LOG(("mvwvline() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wvline(win, ch, n);
-}
-
-#ifdef PDC_WIDE
-int wborder_set(WINDOW *win, const cchar_t *ls, const cchar_t *rs,
- const cchar_t *ts, const cchar_t *bs, const cchar_t *tl,
- const cchar_t *tr, const cchar_t *bl, const cchar_t *br)
-{
- PDC_LOG(("wborder_set() - called\n"));
-
- return wborder(win, ls ? *ls : 0, rs ? *rs : 0, ts ? *ts : 0,
- bs ? *bs : 0, tl ? *tl : 0, tr ? *tr : 0,
- bl ? *bl : 0, br ? *br : 0);
-}
-
-int border_set(const cchar_t *ls, const cchar_t *rs, const cchar_t *ts,
- const cchar_t *bs, const cchar_t *tl, const cchar_t *tr,
- const cchar_t *bl, const cchar_t *br)
-{
- PDC_LOG(("border_set() - called\n"));
-
- return wborder_set(stdscr, ls, rs, ts, bs, tl, tr, bl, br);
-}
-
-int box_set(WINDOW *win, const cchar_t *verch, const cchar_t *horch)
-{
- PDC_LOG(("box_set() - called\n"));
-
- return wborder_set(win, verch, verch, horch, horch,
- (const cchar_t *)NULL, (const cchar_t *)NULL,
- (const cchar_t *)NULL, (const cchar_t *)NULL);
-}
-
-int whline_set(WINDOW *win, const cchar_t *wch, int n)
-{
- PDC_LOG(("whline_set() - called\n"));
-
- return wch ? whline(win, *wch, n) : ERR;
-}
-
-int hline_set(const cchar_t *wch, int n)
-{
- PDC_LOG(("hline_set() - called\n"));
-
- return whline_set(stdscr, wch, n);
-}
-
-int mvhline_set(int y, int x, const cchar_t *wch, int n)
-{
- PDC_LOG(("mvhline_set() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return whline_set(stdscr, wch, n);
-}
-
-int mvwhline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n)
-{
- PDC_LOG(("mvwhline_set() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return whline_set(win, wch, n);
-}
-
-int wvline_set(WINDOW *win, const cchar_t *wch, int n)
-{
- PDC_LOG(("wvline_set() - called\n"));
-
- return wch ? wvline(win, *wch, n) : ERR;
-}
-
-int vline_set(const cchar_t *wch, int n)
-{
- PDC_LOG(("vline_set() - called\n"));
-
- return wvline_set(stdscr, wch, n);
-}
-
-int mvvline_set(int y, int x, const cchar_t *wch, int n)
-{
- PDC_LOG(("mvvline_set() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wvline_set(stdscr, wch, n);
-}
-
-int mvwvline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n)
-{
- PDC_LOG(("mvwvline_set() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wvline_set(win, wch, n);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/clear.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/clear.c
deleted file mode 100644
index 75426e2..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/clear.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: clear.c,v 1.35 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: clear
-
- Synopsis:
- int clear(void);
- int wclear(WINDOW *win);
- int erase(void);
- int werase(WINDOW *win);
- int clrtobot(void);
- int wclrtobot(WINDOW *win);
- int clrtoeol(void);
- int wclrtoeol(WINDOW *win);
-
- Description:
- erase() and werase() copy blanks (i.e. the background chtype) to
- every cell of the window.
-
- clear() and wclear() are similar to erase() and werase(), but
- they also call clearok() to ensure that the the window is
- cleared on the next wrefresh().
-
- clrtobot() and wclrtobot() clear the window from the current
- cursor position to the end of the window.
-
- clrtoeol() and wclrtoeol() clear the window from the current
- cursor position to the end of the current line.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- clear Y Y Y
- wclear Y Y Y
- erase Y Y Y
- werase Y Y Y
- clrtobot Y Y Y
- wclrtobot Y Y Y
- clrtoeol Y Y Y
- wclrtoeol Y Y Y
-
-**man-end****************************************************************/
-
-int wclrtoeol(WINDOW *win)
-{
- int x, y, minx;
- chtype blank, *ptr;
-
- PDC_LOG(("wclrtoeol() - called: Row: %d Col: %d\n",
- win->_cury, win->_curx));
-
- if (!win)
- return ERR;
-
- y = win->_cury;
- x = win->_curx;
-
- /* wrs (4/10/93) account for window background */
-
- blank = win->_bkgd;
-
- for (minx = x, ptr = &win->_y[y][x]; minx < win->_maxx; minx++, ptr++)
- *ptr = blank;
-
- if (x < win->_firstch[y] || win->_firstch[y] == _NO_CHANGE)
- win->_firstch[y] = x;
-
- win->_lastch[y] = win->_maxx - 1;
-
- PDC_sync(win);
- return OK;
-}
-
-int clrtoeol(void)
-{
- PDC_LOG(("clrtoeol() - called\n"));
-
- return wclrtoeol(stdscr);
-}
-
-int wclrtobot(WINDOW *win)
-{
- PDC_LOG(("wclrtobot() - called\n"));
-
- if (!win)
- return ERR;
-
- int savey = win->_cury;
- int savex = win->_curx;
-
- /* should this involve scrolling region somehow ? */
-
- if (win->_cury + 1 < win->_maxy)
- {
- win->_curx = 0;
- win->_cury++;
- for (; win->_maxy > win->_cury; win->_cury++)
- wclrtoeol(win);
- win->_cury = savey;
- win->_curx = savex;
- }
- wclrtoeol(win);
-
- PDC_sync(win);
- return OK;
-}
-
-int clrtobot(void)
-{
- PDC_LOG(("clrtobot() - called\n"));
-
- return wclrtobot(stdscr);
-}
-
-int werase(WINDOW *win)
-{
- PDC_LOG(("werase() - called\n"));
-
- if (wmove(win, 0, 0) == ERR)
- return ERR;
-
- return wclrtobot(win);
-}
-
-int erase(void)
-{
- PDC_LOG(("erase() - called\n"));
-
- return werase(stdscr);
-}
-
-int wclear(WINDOW *win)
-{
- PDC_LOG(("wclear() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_clear = TRUE;
- return werase(win);
-}
-
-int clear(void)
-{
- PDC_LOG(("clear() - called\n"));
-
- return wclear(stdscr);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/color.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/color.c
deleted file mode 100644
index 7e8fc4c..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/color.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: color.c,v 1.83 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: color
-
- Synopsis:
- int start_color(void);
- int init_pair(short pair, short fg, short bg);
- int init_color(short color, short red, short green, short blue);
- bool has_colors(void);
- bool can_change_color(void);
- int color_content(short color, short *red, short *green, short *blue);
- int pair_content(short pair, short *fg, short *bg);
-
- int assume_default_colors(int f, int b);
- int use_default_colors(void);
-
- int PDC_set_line_color(short color);
-
- Description:
- To use these routines, start_color() must be called, usually
- immediately after initscr(). Colors are always used in pairs,
- referred to as color-pairs. A color-pair consists of a
- foreground color and a background color. A color-pair is
- initialized via init_pair(). After initialization, COLOR_PAIR(n)
- can be used like any other video attribute.
-
- start_color() initializes eight basic colors (black, red, green,
- yellow, blue, magenta, cyan, and white), and two global
- variables; COLORS and COLOR_PAIRS (respectively defining the
- maximum number of colors and color-pairs the terminal is capable
- of displaying).
-
- init_pair() changes the definition of a color-pair. It takes
- three arguments: the number of the color-pair to be redefined,
- and the new values of the foreground and background colors. The
- pair number must be between 0 and COLOR_PAIRS - 1, inclusive.
- The foreground and background must be between 0 and COLORS - 1,
- inclusive. If the color pair was previously initialized, the
- screen is refreshed, and all occurrences of that color-pair are
- changed to the new definition.
-
- has_colors() indicates if the terminal supports, and can
- maniplulate color. It returns TRUE or FALSE.
-
- can_change_color() indicates if the terminal has the capability
- to change the definition of its colors.
-
- pair_content() is used to determine what the colors of a given
- color-pair consist of.
-
- assume_default_colors() and use_default_colors() emulate the
- ncurses extensions of the same names. assume_default_colors(f,
- b) is essentially the same as init_pair(0, f, b) (which isn't
- allowed); it redefines the default colors. use_default_colors()
- allows the use of -1 as a foreground or background color with
- init_pair(), and calls assume_default_colors(-1, -1); -1
- represents the foreground or background color that the terminal
- had at startup. If the environment variable PDC_ORIGINAL_COLORS
- is set at the time start_color() is called, that's equivalent to
- calling use_default_colors().
-
- PDC_set_line_color() is used to set the color, globally, for
- the color of the lines drawn for the attributes: A_UNDERLINE,
- A_OVERLINE, A_LEFTLINE and A_RIGHTLINE. A value of -1 (the
- default) indicates that the current foreground color should be
- used.
-
- NOTE: COLOR_PAIR() and PAIR_NUMBER() are implemented as macros.
-
- Return Value:
- All functions return OK on success and ERR on error, except for
- has_colors() and can_change_colors(), which return TRUE or FALSE.
-
- Portability X/Open BSD SYS V
- start_color Y - 3.2
- init_pair Y - 3.2
- init_color Y - 3.2
- has_colors Y - 3.2
- can_change_color Y - 3.2
- color_content Y - 3.2
- pair_content Y - 3.2
- assume_default_colors - - -
- use_default_colors - - -
- PDC_set_line_color - - -
-
-**man-end****************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-
-int COLORS = 0;
-int COLOR_PAIRS = PDC_COLOR_PAIRS;
-
-bool pdc_color_started = FALSE;
-
-/* pair_set[] tracks whether a pair has been set via init_pair() */
-
-static bool pair_set[PDC_COLOR_PAIRS];
-static bool default_colors = FALSE;
-static short first_col = 0;
-
-int start_color(void)
-{
- PDC_LOG(("start_color() - called\n"));
-
- if (SP->mono)
- return ERR;
-
- pdc_color_started = TRUE;
-
- PDC_set_blink(FALSE); /* Also sets COLORS, to 8 or 16 */
-
- if (!default_colors && SP->orig_attr && getenv("PDC_ORIGINAL_COLORS"))
- default_colors = TRUE;
-
- PDC_init_atrtab();
-
- memset(pair_set, 0, PDC_COLOR_PAIRS);
-
- return OK;
-}
-
-static void _normalize(short *fg, short *bg)
-{
- if (*fg == -1)
- *fg = SP->orig_attr ? SP->orig_fore : COLOR_WHITE;
-
- if (*bg == -1)
- *bg = SP->orig_attr ? SP->orig_back : COLOR_BLACK;
-}
-
-int init_pair(short pair, short fg, short bg)
-{
- PDC_LOG(("init_pair() - called: pair %d fg %d bg %d\n", pair, fg, bg));
-
- if (!pdc_color_started || pair < 1 || pair >= COLOR_PAIRS ||
- fg < first_col || fg >= COLORS || bg < first_col || bg >= COLORS)
- return ERR;
-
- _normalize(&fg, &bg);
-
- /* To allow the PDC_PRESERVE_SCREEN option to work, we only reset
- curscr if this call to init_pair() alters a color pair created by
- the user. */
-
- if (pair_set[pair])
- {
- short oldfg, oldbg;
-
- PDC_pair_content(pair, &oldfg, &oldbg);
-
- if (oldfg != fg || oldbg != bg)
- curscr->_clear = TRUE;
- }
-
- PDC_init_pair(pair, fg, bg);
-
- pair_set[pair] = TRUE;
-
- return OK;
-}
-
-bool has_colors(void)
-{
- PDC_LOG(("has_colors() - called\n"));
-
- return !(SP->mono);
-}
-
-int init_color(short color, short red, short green, short blue)
-{
- PDC_LOG(("init_color() - called\n"));
-
- if (color < 0 || color >= COLORS || !PDC_can_change_color() ||
- red < 0 || red > 1000 || green < 0 || green > 1000 ||
- blue < 0 || blue > 1000)
- return ERR;
-
- return PDC_init_color(color, red, green, blue);
-}
-
-int color_content(short color, short *red, short *green, short *blue)
-{
- PDC_LOG(("color_content() - called\n"));
-
- if (color < 0 || color >= COLORS || !red || !green || !blue)
- return ERR;
-
- if (PDC_can_change_color())
- return PDC_color_content(color, red, green, blue);
- else
- {
- /* Simulated values for platforms that don't support palette
- changing */
-
- short maxval = (color & 8) ? 1000 : 680;
-
- *red = (color & COLOR_RED) ? maxval : 0;
- *green = (color & COLOR_GREEN) ? maxval : 0;
- *blue = (color & COLOR_BLUE) ? maxval : 0;
-
- return OK;
- }
-}
-
-bool can_change_color(void)
-{
- PDC_LOG(("can_change_color() - called\n"));
-
- return PDC_can_change_color();
-}
-
-int pair_content(short pair, short *fg, short *bg)
-{
- PDC_LOG(("pair_content() - called\n"));
-
- if (pair < 0 || pair >= COLOR_PAIRS || !fg || !bg)
- return ERR;
-
- return PDC_pair_content(pair, fg, bg);
-}
-
-int assume_default_colors(int f, int b)
-{
- PDC_LOG(("assume_default_colors() - called: f %d b %d\n", f, b));
-
- if (f < -1 || f >= COLORS || b < -1 || b >= COLORS)
- return ERR;
-
- if (pdc_color_started)
- {
- short fg, bg, oldfg, oldbg;
-
- fg = f;
- bg = b;
-
- _normalize(&fg, &bg);
-
- PDC_pair_content(0, &oldfg, &oldbg);
-
- if (oldfg != fg || oldbg != bg)
- curscr->_clear = TRUE;
-
- PDC_init_pair(0, fg, bg);
- }
-
- return OK;
-}
-
-int use_default_colors(void)
-{
- PDC_LOG(("use_default_colors() - called\n"));
-
- default_colors = TRUE;
- first_col = -1;
-
- return assume_default_colors(-1, -1);
-}
-
-int PDC_set_line_color(short color)
-{
- PDC_LOG(("PDC_set_line_color() - called: %d\n", color));
-
- if (color < -1 || color >= COLORS)
- return ERR;
-
- SP->line_color = color;
-
- return OK;
-}
-
-void PDC_init_atrtab(void)
-{
- int i;
- short fg, bg;
-
- if (pdc_color_started && !default_colors)
- {
- fg = COLOR_WHITE;
- bg = COLOR_BLACK;
- }
- else
- fg = bg = -1;
-
- _normalize(&fg, &bg);
-
- for (i = 0; i < PDC_COLOR_PAIRS; i++)
- PDC_init_pair(i, fg, bg);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/debug.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/debug.c
deleted file mode 100644
index 812b0ee..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/debug.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: debug.c,v 1.7 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: debug
-
- Synopsis:
- void traceon(void);
- void traceoff(void);
- void PDC_debug(const char *, ...);
-
- Description:
- traceon() and traceoff() toggle the recording of debugging
- information to the file "trace". Although not standard, similar
- functions are in some other curses implementations.
-
- PDC_debug() is the function that writes to the file, based on
- whether traceon() has been called. It's used from the PDC_LOG()
- macro.
-
- Portability X/Open BSD SYS V
- traceon - - -
- traceoff - - -
- PDC_debug - - -
-
-**man-end****************************************************************/
-
-#include <string.h>
-#include <sys/types.h>
-#include <time.h>
-
-bool pdc_trace_on = FALSE;
-
-void PDC_debug(const char *fmt, ...)
-{
- va_list args;
- FILE *dbfp;
- char hms[9];
- time_t now;
-
- if (!pdc_trace_on)
- return;
-
- /* open debug log file append */
-
- dbfp = fopen("trace", "a");
- if (!dbfp)
- {
- fprintf(stderr,
- "PDC_debug(): Unable to open debug log file\n");
- return;
- }
-
- time(&now);
- strftime(hms, 9, "%H:%M:%S", localtime(&now));
- fprintf(dbfp, "At: %8.8ld - %s ", (long) clock(), hms);
-
- va_start(args, fmt);
- vfprintf(dbfp, fmt, args);
- va_end(args);
-
- fclose(dbfp);
-}
-
-void traceon(void)
-{
- PDC_LOG(("traceon() - called\n"));
-
- pdc_trace_on = TRUE;
-}
-
-void traceoff(void)
-{
- PDC_LOG(("traceoff() - called\n"));
-
- pdc_trace_on = FALSE;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/delch.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/delch.c
deleted file mode 100644
index 9c2416e..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/delch.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: delch.c,v 1.33 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: delch
-
- Synopsis:
- int delch(void);
- int wdelch(WINDOW *win);
- int mvdelch(int y, int x);
- int mvwdelch(WINDOW *win, int y, int x);
-
- Description:
- The character under the cursor in the window is deleted. All
- characters to the right on the same line are moved to the left
- one position and the last character on the line is filled with
- a blank. The cursor position does not change (after moving to
- y, x if coordinates are specified).
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- delch Y Y Y
- wdelch Y Y Y
- mvdelch Y Y Y
- mvwdelch Y Y Y
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-int wdelch(WINDOW *win)
-{
- int y, x, maxx;
- chtype *temp1;
-
- PDC_LOG(("wdelch() - called\n"));
-
- if (!win)
- return ERR;
-
- y = win->_cury;
- x = win->_curx;
- maxx = win->_maxx - 1;
- temp1 = &win->_y[y][x];
-
- memmove(temp1, temp1 + 1, (maxx - x) * sizeof(chtype));
-
- /* wrs (4/10/93) account for window background */
-
- win->_y[y][maxx] = win->_bkgd;
-
- win->_lastch[y] = maxx;
-
- if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
- win->_firstch[y] = x;
-
- PDC_sync(win);
-
- return OK;
-}
-
-int delch(void)
-{
- PDC_LOG(("delch() - called\n"));
-
- return wdelch(stdscr);
-}
-
-int mvdelch(int y, int x)
-{
- PDC_LOG(("mvdelch() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wdelch(stdscr);
-}
-
-int mvwdelch(WINDOW *win, int y, int x)
-{
- PDC_LOG(("mvwdelch() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wdelch(win);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/deleteln.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/deleteln.c
deleted file mode 100644
index 7e26d9b..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/deleteln.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: deleteln.c,v 1.35 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: deleteln
-
- Synopsis:
- int deleteln(void);
- int wdeleteln(WINDOW *win);
- int insdelln(int n);
- int winsdelln(WINDOW *win, int n);
- int insertln(void);
- int winsertln(WINDOW *win);
-
- int mvdeleteln(int y, int x);
- int mvwdeleteln(WINDOW *win, int y, int x);
- int mvinsertln(int y, int x);
- int mvwinsertln(WINDOW *win, int y, int x);
-
- Description:
- With the deleteln() and wdeleteln() functions, the line under
- the cursor in the window is deleted. All lines below the
- current line are moved up one line. The bottom line of the
- window is cleared. The cursor position does not change.
-
- With the insertln() and winsertn() functions, a blank line is
- inserted above the current line and the bottom line is lost.
-
- mvdeleteln(), mvwdeleteln(), mvinsertln() and mvwinsertln()
- allow moving the cursor and inserting/deleting in one call.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- deleteln Y Y Y
- wdeleteln Y Y Y
- mvdeleteln - - -
- mvwdeleteln - - -
- insdelln Y - 4.0
- winsdelln Y - 4.0
- insertln Y Y Y
- winsertln Y Y Y
- mvinsertln - - -
- mvwinsertln - - -
-
-**man-end****************************************************************/
-
-int wdeleteln(WINDOW *win)
-{
- chtype blank, *temp, *ptr;
- int y;
-
- PDC_LOG(("wdeleteln() - called\n"));
-
- if (!win)
- return ERR;
-
- /* wrs (4/10/93) account for window background */
-
- blank = win->_bkgd;
-
- temp = win->_y[win->_cury];
-
- for (y = win->_cury; y < win->_bmarg; y++)
- {
- win->_y[y] = win->_y[y + 1];
- win->_firstch[y] = 0;
- win->_lastch[y] = win->_maxx - 1;
- }
-
- for (ptr = temp; (ptr - temp < win->_maxx); ptr++)
- *ptr = blank; /* make a blank line */
-
- if (win->_cury <= win->_bmarg)
- {
- win->_firstch[win->_bmarg] = 0;
- win->_lastch[win->_bmarg] = win->_maxx - 1;
- win->_y[win->_bmarg] = temp;
- }
-
- return OK;
-}
-
-int deleteln(void)
-{
- PDC_LOG(("deleteln() - called\n"));
-
- return wdeleteln(stdscr);
-}
-
-int mvdeleteln(int y, int x)
-{
- PDC_LOG(("mvdeleteln() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wdeleteln(stdscr);
-}
-
-int mvwdeleteln(WINDOW *win, int y, int x)
-{
- PDC_LOG(("mvwdeleteln() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wdeleteln(win);
-}
-
-int winsdelln(WINDOW *win, int n)
-{
- int i;
-
- PDC_LOG(("winsdelln() - called\n"));
-
- if (!win)
- return ERR;
-
- if (n > 0)
- {
- for (i = 0; i < n; i++)
- if (winsertln(win) == ERR)
- return ERR;
- }
- else if (n < 0)
- {
- n = -n;
- for (i = 0; i < n; i++)
- if (wdeleteln(win) == ERR)
- return ERR;
- }
-
- return OK;
-}
-
-int insdelln(int n)
-{
- PDC_LOG(("insdelln() - called\n"));
-
- return winsdelln(stdscr, n);
-}
-
-int winsertln(WINDOW *win)
-{
- chtype blank, *temp, *end;
- int y;
-
- PDC_LOG(("winsertln() - called\n"));
-
- if (!win)
- return ERR;
-
- /* wrs (4/10/93) account for window background */
-
- blank = win->_bkgd;
-
- temp = win->_y[win->_maxy - 1];
-
- for (y = win->_maxy - 1; y > win->_cury; y--)
- {
- win->_y[y] = win->_y[y - 1];
- win->_firstch[y] = 0;
- win->_lastch[y] = win->_maxx - 1;
- }
-
- win->_y[win->_cury] = temp;
-
- for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
- *temp = blank;
-
- win->_firstch[win->_cury] = 0;
- win->_lastch[win->_cury] = win->_maxx - 1;
-
- return OK;
-}
-
-int insertln(void)
-{
- PDC_LOG(("insertln() - called\n"));
-
- return winsertln(stdscr);
-}
-
-int mvinsertln(int y, int x)
-{
- PDC_LOG(("mvinsertln() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winsertln(stdscr);
-}
-
-int mvwinsertln(WINDOW *win, int y, int x)
-{
- PDC_LOG(("mvwinsertln() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winsertln(win);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/deprec.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/deprec.c
deleted file mode 100644
index 028d47a..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/deprec.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: deprec.c,v 1.6 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/* Deprecated functions. These should not be used, and will eventually
- be removed. They're here solely for the benefit of applications that
- linked to them in older versions of PDCurses. */
-
-bool PDC_check_bios_key(void)
-{
- return PDC_check_key();
-}
-
-int PDC_get_bios_key(void)
-{
- return PDC_get_key();
-}
-
-bool PDC_get_ctrl_break(void)
-{
- return !SP->raw_inp;
-}
-
-int PDC_set_ctrl_break(bool setting)
-{
- return setting ? noraw() : raw();
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getch.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getch.c
deleted file mode 100644
index f37d69a..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getch.c
+++ /dev/null
@@ -1,410 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: getch.c,v 1.72 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: getch
-
- Synopsis:
- int getch(void);
- int wgetch(WINDOW *win);
- int mvgetch(int y, int x);
- int mvwgetch(WINDOW *win, int y, int x);
- int ungetch(int ch);
- int flushinp(void);
-
- int get_wch(wint_t *wch);
- int wget_wch(WINDOW *win, wint_t *wch);
- int mvget_wch(int y, int x, wint_t *wch);
- int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch);
- int unget_wch(const wchar_t wch);
-
- unsigned long PDC_get_key_modifiers(void);
- int PDC_save_key_modifiers(bool flag);
- int PDC_return_key_modifiers(bool flag);
-
- Description:
- With the getch(), wgetch(), mvgetch(), and mvwgetch() functions,
- a character is read from the terminal associated with the window.
- In nodelay mode, if there is no input waiting, the value ERR is
- returned. In delay mode, the program will hang until the system
- passes text through to the program. Depending on the setting of
- cbreak(), this will be after one character or after the first
- newline. Unless noecho() has been set, the character will also
- be echoed into the designated window.
-
- If keypad() is TRUE, and a function key is pressed, the token for
- that function key will be returned instead of the raw characters.
- Possible function keys are defined in <curses.h> with integers
- beginning with 0401, whose names begin with KEY_.
-
- If nodelay(win, TRUE) has been called on the window and no input
- is waiting, the value ERR is returned.
-
- ungetch() places ch back onto the input queue to be returned by
- the next call to wgetch().
-
- flushinp() throws away any type-ahead that has been typed by the
- user and has not yet been read by the program.
-
- PDC_get_key_modifiers() returns the keyboard modifiers (shift,
- control, alt, numlock) effective at the time of the last getch()
- call, if PDC_save_key_modifiers(TRUE) has been called before the
- getch(). Use the macros PDC_KEY_MODIFIER_* to determine which
- modifier(s) were set. PDC_return_key_modifiers() tells getch()
- to return modifier keys pressed alone as keystrokes (KEY_ALT_L,
- etc.). These may not work on all platforms.
-
- NOTE: getch() and ungetch() are implemented as macros, to avoid
- conflict with many DOS compiler's runtime libraries.
-
- Return Value:
- These functions return ERR or the value of the character, meta
- character or function key token.
-
- Portability X/Open BSD SYS V
- getch Y Y Y
- wgetch Y Y Y
- mvgetch Y Y Y
- mvwgetch Y Y Y
- ungetch Y Y Y
- flushinp Y Y Y
- get_wch Y
- wget_wch Y
- mvget_wch Y
- mvwget_wch Y
- unget_wch Y
- PDC_get_key_modifiers - - -
-
-**man-end****************************************************************/
-
-#define _INBUFSIZ 512 /* size of terminal input buffer */
-#define NUNGETCH 256 /* max # chars to ungetch() */
-
-static int c_pindex = 0; /* putter index */
-static int c_gindex = 1; /* getter index */
-static int c_ungind = 0; /* ungetch() push index */
-static int c_ungch[NUNGETCH]; /* array of ungotten chars */
-
-static int _mouse_key(WINDOW *win)
-{
- int i, key = KEY_MOUSE;
- unsigned long mbe = SP->_trap_mbe;
-
- /* Filter unwanted mouse events */
-
- for (i = 0; i < 3; i++)
- {
- if (pdc_mouse_status.changes & (1 << i))
- {
- int shf = i * 5;
- short button = pdc_mouse_status.button[i] & BUTTON_ACTION_MASK;
-
- if ( (!(mbe & (BUTTON1_PRESSED << shf)) &&
- (button == BUTTON_PRESSED))
-
- || (!(mbe & (BUTTON1_CLICKED << shf)) &&
- (button == BUTTON_CLICKED))
-
- || (!(mbe & (BUTTON1_DOUBLE_CLICKED << shf)) &&
- (button == BUTTON_DOUBLE_CLICKED))
-
- || (!(mbe & (BUTTON1_MOVED << shf)) &&
- (button == BUTTON_MOVED))
-
- || (!(mbe & (BUTTON1_RELEASED << shf)) &&
- (button == BUTTON_RELEASED))
- )
- pdc_mouse_status.changes ^= (1 << i);
- }
- }
-
- if (pdc_mouse_status.changes & PDC_MOUSE_MOVED)
- {
- if (!(mbe & (BUTTON1_MOVED|BUTTON2_MOVED|BUTTON3_MOVED)))
- pdc_mouse_status.changes ^= PDC_MOUSE_MOVED;
- }
-
- if (pdc_mouse_status.changes &
- (PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN))
- {
- if (!(mbe & MOUSE_WHEEL_SCROLL))
- pdc_mouse_status.changes &=
- ~(PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN);
- }
-
- if (!pdc_mouse_status.changes)
- return -1;
-
- /* Check for click in slk area */
-
- i = PDC_mouse_in_slk(pdc_mouse_status.y, pdc_mouse_status.x);
-
- if (i)
- {
- if (pdc_mouse_status.button[0] & (BUTTON_PRESSED|BUTTON_CLICKED))
- key = KEY_F(i);
- else
- key = -1;
- }
-
- return key;
-}
-
-int wgetch(WINDOW *win)
-{
- static int buffer[_INBUFSIZ]; /* character buffer */
- int key, waitcount;
-
- PDC_LOG(("wgetch() - called\n"));
-
- if (!win)
- return ERR;
-
- waitcount = 0;
-
- /* set the number of 1/20th second napms() calls */
-
- if (SP->delaytenths)
- waitcount = 2 * SP->delaytenths;
- else
- if (win->_delayms)
- {
- /* Can't really do millisecond intervals, so delay in
- 1/20ths of a second (50ms) */
-
- waitcount = win->_delayms / 50;
- if (!waitcount)
- waitcount = 1;
- }
-
- /* refresh window when wgetch is called if there have been changes
- to it and it is not a pad */
-
- if (!(win->_flags & _PAD) && ((!win->_leaveit &&
- (win->_begx + win->_curx != SP->curscol ||
- win->_begy + win->_cury != SP->cursrow)) || is_wintouched(win)))
- wrefresh(win);
-
- /* if ungotten char exists, remove and return it */
-
- if (c_ungind)
- return c_ungch[--c_ungind];
-
- /* if normal and data in buffer */
-
- if ((!SP->raw_inp && !SP->cbreak) && (c_gindex < c_pindex))
- return buffer[c_gindex++];
-
- /* prepare to buffer data */
-
- c_pindex = 0;
- c_gindex = 0;
-
- /* to get here, no keys are buffered. go and get one. */
-
- for (;;) /* loop for any buffering */
- {
- /* is there a keystroke ready? */
-
- if (!PDC_check_key())
- {
- /* if not, handle timeout() and halfdelay() */
-
- if (SP->delaytenths || win->_delayms)
- {
- if (!waitcount)
- return ERR;
-
- waitcount--;
- }
- else
- if (win->_nodelay)
- return ERR;
-
- napms(50); /* sleep for 1/20th second */
- continue; /* then check again */
- }
-
- /* if there is, fetch it */
-
- key = PDC_get_key();
-
- if (SP->key_code)
- {
- /* filter special keys if not in keypad mode */
-
- if (!win->_use_keypad)
- key = -1;
-
- /* filter mouse events; translate mouse clicks in the slk
- area to function keys */
-
- else if (key == KEY_MOUSE)
- key = _mouse_key(win);
- }
-
- /* unwanted key? loop back */
-
- if (key == -1)
- continue;
-
- /* translate CR */
-
- if (key == '\r' && SP->autocr && !SP->raw_inp)
- key = '\n';
-
- /* if echo is enabled */
-
- if (SP->echo && !SP->key_code)
- {
- waddch(win, key);
- wrefresh(win);
- }
-
- /* if no buffering */
-
- if (SP->raw_inp || SP->cbreak)
- return key;
-
- /* if no overflow, put data in buffer */
-
- if (key == '\b')
- {
- if (c_pindex > c_gindex)
- c_pindex--;
- }
- else
- if (c_pindex < _INBUFSIZ - 2)
- buffer[c_pindex++] = key;
-
- /* if we got a line */
-
- if (key == '\n' || key == '\r')
- return buffer[c_gindex++];
- }
-}
-
-int mvgetch(int y, int x)
-{
- PDC_LOG(("mvgetch() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wgetch(stdscr);
-}
-
-int mvwgetch(WINDOW *win, int y, int x)
-{
- PDC_LOG(("mvwgetch() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wgetch(win);
-}
-
-int PDC_ungetch(int ch)
-{
- PDC_LOG(("ungetch() - called\n"));
-
- if (c_ungind >= NUNGETCH) /* pushback stack full */
- return ERR;
-
- c_ungch[c_ungind++] = ch;
-
- return OK;
-}
-
-int flushinp(void)
-{
- PDC_LOG(("flushinp() - called\n"));
-
- PDC_flushinp();
-
- c_gindex = 1; /* set indices to kill buffer */
- c_pindex = 0;
- c_ungind = 0; /* clear c_ungch array */
-
- return OK;
-}
-
-unsigned long PDC_get_key_modifiers(void)
-{
- PDC_LOG(("PDC_get_key_modifiers() - called\n"));
-
- return pdc_key_modifiers;
-}
-
-int PDC_save_key_modifiers(bool flag)
-{
- PDC_LOG(("PDC_save_key_modifiers() - called\n"));
-
- SP->save_key_modifiers = flag;
- return OK;
-}
-
-int PDC_return_key_modifiers(bool flag)
-{
- PDC_LOG(("PDC_return_key_modifiers() - called\n"));
-
- SP->return_key_modifiers = flag;
- return PDC_modifiers_set();
-}
-
-#ifdef PDC_WIDE
-int wget_wch(WINDOW *win, wint_t *wch)
-{
- int key;
-
- PDC_LOG(("wget_wch() - called\n"));
-
- if (!wch)
- return ERR;
-
- key = wgetch(win);
-
- if (key == ERR)
- return ERR;
-
- *wch = key;
-
- return SP->key_code ? KEY_CODE_YES : OK;
-}
-
-int get_wch(wint_t *wch)
-{
- PDC_LOG(("get_wch() - called\n"));
-
- return wget_wch(stdscr, wch);
-}
-
-int mvget_wch(int y, int x, wint_t *wch)
-{
- PDC_LOG(("mvget_wch() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wget_wch(stdscr, wch);
-}
-
-int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch)
-{
- PDC_LOG(("mvwget_wch() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wget_wch(win, wch);
-}
-
-int unget_wch(const wchar_t wch)
-{
- return PDC_ungetch(wch);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getstr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getstr.c
deleted file mode 100644
index 744e5e6..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getstr.c
+++ /dev/null
@@ -1,471 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: getstr.c,v 1.51 2008/07/14 04:24:51 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: getstr
-
- Synopsis:
- int getstr(char *str);
- int wgetstr(WINDOW *win, char *str);
- int mvgetstr(int y, int x, char *str);
- int mvwgetstr(WINDOW *win, int y, int x, char *str);
- int getnstr(char *str, int n);
- int wgetnstr(WINDOW *win, char *str, int n);
- int mvgetnstr(int y, int x, char *str, int n);
- int mvwgetnstr(WINDOW *win, int y, int x, char *str, int n);
-
- int get_wstr(wint_t *wstr);
- int wget_wstr(WINDOW *win, wint_t *wstr);
- int mvget_wstr(int y, int x, wint_t *wstr);
- int mvwget_wstr(WINDOW *win, int, int, wint_t *wstr);
- int getn_wstr(wint_t *wstr, int n);
- int wgetn_wstr(WINDOW *win, wint_t *wstr, int n);
- int mvgetn_wstr(int y, int x, wint_t *wstr, int n);
- int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n);
-
- Description:
- These routines call wgetch() repeatedly to build a string,
- interpreting erase and kill characters along the way, until a
- newline or carriage return is received. When PDCurses is built
- with wide-character support enabled, the narrow-character
- functions convert the wgetch()'d values into a multibyte string
- in the current locale before returning it. The resulting string
- is placed in the area pointed to by *str. The routines with n as
- the last argument read at most n characters.
-
- Note that there's no way to know how long the buffer passed to
- wgetstr() is, so use wgetnstr() to avoid buffer overflows.
-
- Return Value:
- This functions return ERR on failure or any other value on
- success.
-
- Portability X/Open BSD SYS V
- getstr Y Y Y
- wgetstr Y Y Y
- mvgetstr Y Y Y
- mvwgetstr Y Y Y
- getnstr Y - 4.0
- wgetnstr Y - 4.0
- mvgetnstr Y - -
- mvwgetnstr Y - -
- get_wstr Y
- wget_wstr Y
- mvget_wstr Y
- mvwget_wstr Y
- getn_wstr Y
- wgetn_wstr Y
- mvgetn_wstr Y
- mvwgetn_wstr Y
-
-**man-end****************************************************************/
-
-#define MAXLINE 255
-
-int wgetnstr(WINDOW *win, char *str, int n)
-{
-#ifdef PDC_WIDE
- wchar_t wstr[MAXLINE + 1];
-
- if (n < 0 || n > MAXLINE)
- n = MAXLINE;
-
- if (wgetn_wstr(win, (wint_t *)wstr, n) == ERR)
- return ERR;
-
- return PDC_wcstombs(str, wstr, n);
-#else
- int ch, i, num, x, chars;
- char *p;
- bool stop, oldecho, oldcbreak, oldnodelay;
-
- PDC_LOG(("wgetnstr() - called\n"));
-
- if (!win || !str)
- return ERR;
-
- chars = 0;
- p = str;
- stop = FALSE;
-
- x = win->_curx;
-
- oldcbreak = SP->cbreak; /* remember states */
- oldecho = SP->echo;
- oldnodelay = win->_nodelay;
-
- SP->echo = FALSE; /* we do echo ourselves */
- cbreak(); /* ensure each key is returned immediately */
- win->_nodelay = FALSE; /* don't return -1 */
-
- wrefresh(win);
-
- while (!stop)
- {
- ch = wgetch(win);
-
- switch (ch)
- {
-
- case '\t':
- ch = ' ';
- num = TABSIZE - (win->_curx - x) % TABSIZE;
- for (i = 0; i < num; i++)
- {
- if (chars < n)
- {
- if (oldecho)
- waddch(win, ch);
- *p++ = ch;
- ++chars;
- }
- else
- beep();
- }
- break;
-
- case _ECHAR: /* CTRL-H -- Delete character */
- if (p > str)
- {
- if (oldecho)
- waddstr(win, "\b \b");
- ch = (unsigned char)(*--p);
- if ((ch < ' ') && (oldecho))
- waddstr(win, "\b \b");
- chars--;
- }
- break;
-
- case _DLCHAR: /* CTRL-U -- Delete line */
- while (p > str)
- {
- if (oldecho)
- waddstr(win, "\b \b");
- ch = (unsigned char)(*--p);
- if ((ch < ' ') && (oldecho))
- waddstr(win, "\b \b");
- }
- chars = 0;
- break;
-
- case _DWCHAR: /* CTRL-W -- Delete word */
-
- while ((p > str) && (*(p - 1) == ' '))
- {
- if (oldecho)
- waddstr(win, "\b \b");
-
- --p; /* remove space */
- chars--;
- }
- while ((p > str) && (*(p - 1) != ' '))
- {
- if (oldecho)
- waddstr(win, "\b \b");
-
- ch = (unsigned char)(*--p);
- if ((ch < ' ') && (oldecho))
- waddstr(win, "\b \b");
- chars--;
- }
- break;
-
- case '\n':
- case '\r':
- stop = TRUE;
- if (oldecho)
- waddch(win, '\n');
- break;
-
- default:
- if (chars < n)
- {
- if (!SP->key_code && ch < 0x100)
- {
- *p++ = ch;
- if (oldecho)
- waddch(win, ch);
- chars++;
- }
- }
- else
- beep();
-
- break;
-
- }
-
- wrefresh(win);
- }
-
- *p = '\0';
-
- SP->echo = oldecho; /* restore old settings */
- SP->cbreak = oldcbreak;
- win->_nodelay = oldnodelay;
-
- return OK;
-#endif
-}
-
-int getstr(char *str)
-{
- PDC_LOG(("getstr() - called\n"));
-
- return wgetnstr(stdscr, str, MAXLINE);
-}
-
-int wgetstr(WINDOW *win, char *str)
-{
- PDC_LOG(("wgetstr() - called\n"));
-
- return wgetnstr(win, str, MAXLINE);
-}
-
-int mvgetstr(int y, int x, char *str)
-{
- PDC_LOG(("mvgetstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wgetnstr(stdscr, str, MAXLINE);
-}
-
-int mvwgetstr(WINDOW *win, int y, int x, char *str)
-{
- PDC_LOG(("mvwgetstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wgetnstr(win, str, MAXLINE);
-}
-
-int getnstr(char *str, int n)
-{
- PDC_LOG(("getnstr() - called\n"));
-
- return wgetnstr(stdscr, str, n);
-}
-
-int mvgetnstr(int y, int x, char *str, int n)
-{
- PDC_LOG(("mvgetnstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wgetnstr(stdscr, str, n);
-}
-
-int mvwgetnstr(WINDOW *win, int y, int x, char *str, int n)
-{
- PDC_LOG(("mvwgetnstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wgetnstr(win, str, n);
-}
-
-#ifdef PDC_WIDE
-int wgetn_wstr(WINDOW *win, wint_t *wstr, int n)
-{
- int ch, i, num, x, chars;
- wint_t *p;
- bool stop, oldecho, oldcbreak, oldnodelay;
-
- PDC_LOG(("wgetn_wstr() - called\n"));
-
- if (!win || !wstr)
- return ERR;
-
- chars = 0;
- p = wstr;
- stop = FALSE;
-
- x = win->_curx;
-
- oldcbreak = SP->cbreak; /* remember states */
- oldecho = SP->echo;
- oldnodelay = win->_nodelay;
-
- SP->echo = FALSE; /* we do echo ourselves */
- cbreak(); /* ensure each key is returned immediately */
- win->_nodelay = FALSE; /* don't return -1 */
-
- wrefresh(win);
-
- while (!stop)
- {
- ch = wgetch(win);
-
- switch (ch)
- {
-
- case '\t':
- ch = ' ';
- num = TABSIZE - (win->_curx - x) % TABSIZE;
- for (i = 0; i < num; i++)
- {
- if (chars < n)
- {
- if (oldecho)
- waddch(win, ch);
- *p++ = ch;
- ++chars;
- }
- else
- beep();
- }
- break;
-
- case _ECHAR: /* CTRL-H -- Delete character */
- if (p > wstr)
- {
- if (oldecho)
- waddstr(win, "\b \b");
- ch = *--p;
- if ((ch < ' ') && (oldecho))
- waddstr(win, "\b \b");
- chars--;
- }
- break;
-
- case _DLCHAR: /* CTRL-U -- Delete line */
- while (p > wstr)
- {
- if (oldecho)
- waddstr(win, "\b \b");
- ch = *--p;
- if ((ch < ' ') && (oldecho))
- waddstr(win, "\b \b");
- }
- chars = 0;
- break;
-
- case _DWCHAR: /* CTRL-W -- Delete word */
-
- while ((p > wstr) && (*(p - 1) == ' '))
- {
- if (oldecho)
- waddstr(win, "\b \b");
-
- --p; /* remove space */
- chars--;
- }
- while ((p > wstr) && (*(p - 1) != ' '))
- {
- if (oldecho)
- waddstr(win, "\b \b");
-
- ch = *--p;
- if ((ch < ' ') && (oldecho))
- waddstr(win, "\b \b");
- chars--;
- }
- break;
-
- case '\n':
- case '\r':
- stop = TRUE;
- if (oldecho)
- waddch(win, '\n');
- break;
-
- default:
- if (chars < n)
- {
- if (!SP->key_code)
- {
- *p++ = ch;
- if (oldecho)
- waddch(win, ch);
- chars++;
- }
- }
- else
- beep();
-
- break;
-
- }
-
- wrefresh(win);
- }
-
- *p = '\0';
-
- SP->echo = oldecho; /* restore old settings */
- SP->cbreak = oldcbreak;
- win->_nodelay = oldnodelay;
-
- return OK;
-}
-
-int get_wstr(wint_t *wstr)
-{
- PDC_LOG(("get_wstr() - called\n"));
-
- return wgetn_wstr(stdscr, wstr, MAXLINE);
-}
-
-int wget_wstr(WINDOW *win, wint_t *wstr)
-{
- PDC_LOG(("wget_wstr() - called\n"));
-
- return wgetn_wstr(win, wstr, MAXLINE);
-}
-
-int mvget_wstr(int y, int x, wint_t *wstr)
-{
- PDC_LOG(("mvget_wstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wgetn_wstr(stdscr, wstr, MAXLINE);
-}
-
-int mvwget_wstr(WINDOW *win, int y, int x, wint_t *wstr)
-{
- PDC_LOG(("mvwget_wstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wgetn_wstr(win, wstr, MAXLINE);
-}
-
-int getn_wstr(wint_t *wstr, int n)
-{
- PDC_LOG(("getn_wstr() - called\n"));
-
- return wgetn_wstr(stdscr, wstr, n);
-}
-
-int mvgetn_wstr(int y, int x, wint_t *wstr, int n)
-{
- PDC_LOG(("mvgetn_wstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wgetn_wstr(stdscr, wstr, n);
-}
-
-int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n)
-{
- PDC_LOG(("mvwgetn_wstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wgetn_wstr(win, wstr, n);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getyx.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getyx.c
deleted file mode 100644
index 1c03917..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/getyx.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: getyx.c,v 1.29 2008/07/15 17:13:26 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: getyx
-
- Synopsis:
- void getyx(WINDOW *win, int y, int x);
- void getparyx(WINDOW *win, int y, int x);
- void getbegyx(WINDOW *win, int y, int x);
- void getmaxyx(WINDOW *win, int y, int x);
-
- void getsyx(int y, int x);
- int setsyx(int y, int x);
-
- int getbegy(WINDOW *win);
- int getbegx(WINDOW *win);
- int getcury(WINDOW *win);
- int getcurx(WINDOW *win);
- int getpary(WINDOW *win);
- int getparx(WINDOW *win);
- int getmaxy(WINDOW *win);
- int getmaxx(WINDOW *win);
-
- Description:
- The getyx() macro (defined in curses.h -- the prototypes here
- are merely illustrative) puts the current cursor position of the
- specified window into y and x. getbegyx() and getmaxyx() return
- the starting coordinates and size of the specified window,
- respectively. getparyx() returns the starting coordinates of the
- parent's window, if the specified window is a subwindow;
- otherwise it sets y and x to -1. These are all macros.
-
- getsyx() gets the coordinates of the virtual screen cursor, and
- stores them in y and x. If leaveok() is TRUE, it returns -1, -1.
- If lines have been removed with ripoffline(), then getsyx()
- includes these lines in its count; so, the returned y and x
- values should only be used with setsyx().
-
- setsyx() sets the virtual screen cursor to the y, x coordinates.
- If y, x are -1, -1, leaveok() is set TRUE.
-
- getsyx() and setsyx() are meant to be used by a library routine
- that manipulates curses windows without altering the position of
- the cursor. Note that getsyx() is defined only as a macro.
-
- getbegy(), getbegx(), getcurx(), getcury(), getmaxy(),
- getmaxx(), getpary(), and getparx() return the appropriate
- coordinate or size values, or ERR in the case of a NULL window.
-
- Portability X/Open BSD SYS V
- getyx Y Y Y
- getparyx - - 4.0
- getbegyx - - 3.0
- getmaxyx - - 3.0
- getsyx - - 3.0
- setsyx - - 3.0
- getbegy - - -
- getbegx - - -
- getcury - - -
- getcurx - - -
- getpary - - -
- getparx - - -
- getmaxy - - -
- getmaxx - - -
-
-**man-end****************************************************************/
-
-int getbegy(WINDOW *win)
-{
- PDC_LOG(("getbegy() - called\n"));
-
- return win ? win->_begy : ERR;
-}
-
-int getbegx(WINDOW *win)
-{
- PDC_LOG(("getbegx() - called\n"));
-
- return win ? win->_begx : ERR;
-}
-
-int getcury(WINDOW *win)
-{
- PDC_LOG(("getcury() - called\n"));
-
- return win ? win->_cury : ERR;
-}
-
-int getcurx(WINDOW *win)
-{
- PDC_LOG(("getcurx() - called\n"));
-
- return win ? win->_curx : ERR;
-}
-
-int getpary(WINDOW *win)
-{
- PDC_LOG(("getpary() - called\n"));
-
- return win ? win->_pary : ERR;
-}
-
-int getparx(WINDOW *win)
-{
- PDC_LOG(("getparx() - called\n"));
-
- return win ? win->_parx : ERR;
-}
-
-int getmaxy(WINDOW *win)
-{
- PDC_LOG(("getmaxy() - called\n"));
-
- return win ? win->_maxy : ERR;
-}
-
-int getmaxx(WINDOW *win)
-{
- PDC_LOG(("getmaxx() - called\n"));
-
- return win ? win->_maxx : ERR;
-}
-
-int setsyx(int y, int x)
-{
- PDC_LOG(("setsyx() - called\n"));
-
- if(y == -1 && x == -1)
- {
- curscr->_leaveit = TRUE;
- return OK;
- }
- else
- {
- curscr->_leaveit = FALSE;
- return wmove(curscr, y, x);
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inch.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inch.c
deleted file mode 100644
index 6609b29..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inch.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: inch.c,v 1.33 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: inch
-
- Synopsis:
- chtype inch(void);
- chtype winch(WINDOW *win);
- chtype mvinch(int y, int x);
- chtype mvwinch(WINDOW *win, int y, int x);
-
- int in_wch(cchar_t *wcval);
- int win_wch(WINDOW *win, cchar_t *wcval);
- int mvin_wch(int y, int x, cchar_t *wcval);
- int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval);
-
- Description:
- The inch() functions retrieve the character and attribute from
- the current or specified window position, in the form of a
- chtype. If a NULL window is specified, (chtype)ERR is returned.
-
- The in_wch() functions are the wide-character versions; instead
- of returning a chtype, they store a cchar_t at the address
- specified by wcval, and return OK or ERR. (No value is stored
- when ERR is returned.) Note that in PDCurses, chtype and cchar_t
- are the same.
-
- Portability X/Open BSD SYS V
- inch Y Y Y
- winch Y Y Y
- mvinch Y Y Y
- mvwinch Y Y Y
- in_wch Y
- win_wch Y
- mvin_wch Y
- mvwin_wch Y
-
-**man-end****************************************************************/
-
-chtype winch(WINDOW *win)
-{
- PDC_LOG(("winch() - called\n"));
-
- if (!win)
- return (chtype)ERR;
-
- return win->_y[win->_cury][win->_curx];
-}
-
-chtype inch(void)
-{
- PDC_LOG(("inch() - called\n"));
-
- return winch(stdscr);
-}
-
-chtype mvinch(int y, int x)
-{
- PDC_LOG(("mvinch() - called\n"));
-
- if (move(y, x) == ERR)
- return (chtype)ERR;
-
- return stdscr->_y[stdscr->_cury][stdscr->_curx];
-}
-
-chtype mvwinch(WINDOW *win, int y, int x)
-{
- PDC_LOG(("mvwinch() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return (chtype)ERR;
-
- return win->_y[win->_cury][win->_curx];
-}
-
-#ifdef PDC_WIDE
-int win_wch(WINDOW *win, cchar_t *wcval)
-{
- PDC_LOG(("win_wch() - called\n"));
-
- if (!win || !wcval)
- return ERR;
-
- *wcval = win->_y[win->_cury][win->_curx];
-
- return OK;
-}
-
-int in_wch(cchar_t *wcval)
-{
- PDC_LOG(("in_wch() - called\n"));
-
- return win_wch(stdscr, wcval);
-}
-
-int mvin_wch(int y, int x, cchar_t *wcval)
-{
- PDC_LOG(("mvin_wch() - called\n"));
-
- if (!wcval || (move(y, x) == ERR))
- return ERR;
-
- *wcval = stdscr->_y[stdscr->_cury][stdscr->_curx];
-
- return OK;
-}
-
-int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval)
-{
- PDC_LOG(("mvwin_wch() - called\n"));
-
- if (!wcval || (wmove(win, y, x) == ERR))
- return ERR;
-
- *wcval = win->_y[win->_cury][win->_curx];
-
- return OK;
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inchstr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inchstr.c
deleted file mode 100644
index f061cdb..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inchstr.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: inchstr.c,v 1.34 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: inchstr
-
- Synopsis:
- int inchstr(chtype *ch);
- int inchnstr(chtype *ch, int n);
- int winchstr(WINDOW *win, chtype *ch);
- int winchnstr(WINDOW *win, chtype *ch, int n);
- int mvinchstr(int y, int x, chtype *ch);
- int mvinchnstr(int y, int x, chtype *ch, int n);
- int mvwinchstr(WINDOW *, int y, int x, chtype *ch);
- int mvwinchnstr(WINDOW *, int y, int x, chtype *ch, int n);
-
- int in_wchstr(cchar_t *wch);
- int in_wchnstr(cchar_t *wch, int n);
- int win_wchstr(WINDOW *win, cchar_t *wch);
- int win_wchnstr(WINDOW *win, cchar_t *wch, int n);
- int mvin_wchstr(int y, int x, cchar_t *wch);
- int mvin_wchnstr(int y, int x, cchar_t *wch, int n);
- int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wch);
- int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wch, int n);
-
- Description:
- These routines read a chtype or cchar_t string from the window,
- starting at the current or specified position, and ending at the
- right margin, or after n elements, whichever is less.
-
- Return Value:
- All functions return the number of elements read, or ERR on
- error.
-
- Portability X/Open BSD SYS V
- inchstr Y - 4.0
- winchstr Y - 4.0
- mvinchstr Y - 4.0
- mvwinchstr Y - 4.0
- inchnstr Y - 4.0
- winchnstr Y - 4.0
- mvinchnstr Y - 4.0
- mvwinchnstr Y - 4.0
- in_wchstr Y
- win_wchstr Y
- mvin_wchstr Y
- mvwin_wchstr Y
- in_wchnstr Y
- win_wchnstr Y
- mvin_wchnstr Y
- mvwin_wchnstr Y
-
-**man-end****************************************************************/
-
-int winchnstr(WINDOW *win, chtype *ch, int n)
-{
- chtype *src;
- int i;
-
- PDC_LOG(("winchnstr() - called\n"));
-
- if (!win || !ch || n < 0)
- return ERR;
-
- if ((win->_curx + n) > win->_maxx)
- n = win->_maxx - win->_curx;
-
- src = win->_y[win->_cury] + win->_curx;
-
- for (i = 0; i < n; i++)
- *ch++ = *src++;
-
- *ch = (chtype)0;
-
- return OK;
-}
-
-int inchstr(chtype *ch)
-{
- PDC_LOG(("inchstr() - called\n"));
-
- return winchnstr(stdscr, ch, stdscr->_maxx - stdscr->_curx);
-}
-
-int winchstr(WINDOW *win, chtype *ch)
-{
- PDC_LOG(("winchstr() - called\n"));
-
- return winchnstr(win, ch, win->_maxx - win->_curx);
-}
-
-int mvinchstr(int y, int x, chtype *ch)
-{
- PDC_LOG(("mvinchstr() - called: y %d x %d\n", y, x));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winchnstr(stdscr, ch, stdscr->_maxx - stdscr->_curx);
-}
-
-int mvwinchstr(WINDOW *win, int y, int x, chtype *ch)
-{
- PDC_LOG(("mvwinchstr() - called:\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winchnstr(win, ch, win->_maxx - win->_curx);
-}
-
-int inchnstr(chtype *ch, int n)
-{
- PDC_LOG(("inchnstr() - called\n"));
-
- return winchnstr(stdscr, ch, n);
-}
-
-int mvinchnstr(int y, int x, chtype *ch, int n)
-{
- PDC_LOG(("mvinchnstr() - called: y %d x %d n %d\n", y, x, n));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winchnstr(stdscr, ch, n);
-}
-
-int mvwinchnstr(WINDOW *win, int y, int x, chtype *ch, int n)
-{
- PDC_LOG(("mvwinchnstr() - called: y %d x %d n %d \n", y, x, n));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winchnstr(win, ch, n);
-}
-
-#ifdef PDC_WIDE
-int win_wchnstr(WINDOW *win, cchar_t *wch, int n)
-{
- PDC_LOG(("win_wchnstr() - called\n"));
-
- return winchnstr(win, wch, n);
-}
-
-int in_wchstr(cchar_t *wch)
-{
- PDC_LOG(("in_wchstr() - called\n"));
-
- return win_wchnstr(stdscr, wch, stdscr->_maxx - stdscr->_curx);
-}
-
-int win_wchstr(WINDOW *win, cchar_t *wch)
-{
- PDC_LOG(("win_wchstr() - called\n"));
-
- return win_wchnstr(win, wch, win->_maxx - win->_curx);
-}
-
-int mvin_wchstr(int y, int x, cchar_t *wch)
-{
- PDC_LOG(("mvin_wchstr() - called: y %d x %d\n", y, x));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return win_wchnstr(stdscr, wch, stdscr->_maxx - stdscr->_curx);
-}
-
-int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wch)
-{
- PDC_LOG(("mvwin_wchstr() - called:\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return win_wchnstr(win, wch, win->_maxx - win->_curx);
-}
-
-int in_wchnstr(cchar_t *wch, int n)
-{
- PDC_LOG(("in_wchnstr() - called\n"));
-
- return win_wchnstr(stdscr, wch, n);
-}
-
-int mvin_wchnstr(int y, int x, cchar_t *wch, int n)
-{
- PDC_LOG(("mvin_wchnstr() - called: y %d x %d n %d\n", y, x, n));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return win_wchnstr(stdscr, wch, n);
-}
-
-int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wch, int n)
-{
- PDC_LOG(("mvwinchnstr() - called: y %d x %d n %d \n", y, x, n));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return win_wchnstr(win, wch, n);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/initscr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/initscr.c
deleted file mode 100644
index 165b7f9..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/initscr.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: initscr.c,v 1.114 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: initscr
-
- Synopsis:
- WINDOW *initscr(void);
- WINDOW *Xinitscr(int argc, char *argv[]);
- int endwin(void);
- bool isendwin(void);
- SCREEN *newterm(const char *type, FILE *outfd, FILE *infd);
- SCREEN *set_term(SCREEN *new);
- void delscreen(SCREEN *sp);
-
- int resize_term(int nlines, int ncols);
- bool is_termresized(void);
- const char *curses_version(void);
-
- Description:
- initscr() should be the first curses routine called. It will
- initialize all curses data structures, and arrange that the
- first call to refresh() will clear the screen. In case of
- error, initscr() will write a message to standard error and end
- the program.
-
- endwin() should be called before exiting or escaping from curses
- mode temporarily. It will restore tty modes, move the cursor to
- the lower left corner of the screen and reset the terminal into
- the proper non-visual mode. To resume curses after a temporary
- escape, call refresh() or doupdate().
-
- isendwin() returns TRUE if endwin() has been called without a
- subsequent refresh, unless SP is NULL.
-
- In some implementations of curses, newterm() allows the use of
- multiple terminals. Here, it's just an alternative interface for
- initscr(). It always returns SP, or NULL.
-
- delscreen() frees the memory allocated by newterm() or
- initscr(), since it's not freed by endwin(). This function is
- usually not needed. In PDCurses, the parameter must be the
- value of SP, and delscreen() sets SP to NULL.
-
- set_term() does nothing meaningful in PDCurses, but is included
- for compatibility with other curses implementations.
-
- resize_term() is effectively two functions: When called with
- nonzero values for nlines and ncols, it attempts to resize the
- screen to the given size. When called with (0, 0), it merely
- adjusts the internal structures to match the current size after
- the screen is resized by the user. On the currently supported
- platforms, this functionality is mutually exclusive: X11 allows
- user resizing, while DOS, OS/2 and Win32 allow programmatic
- resizing. If you want to support user resizing, you should check
- for getch() returning KEY_RESIZE, and/or call is_termresized()
- at appropriate times; if either condition occurs, call
- resize_term(0, 0). Then, with either user or programmatic
- resizing, you'll have to resize any windows you've created, as
- appropriate; resize_term() only handles stdscr and curscr.
-
- is_termresized() returns TRUE if the curses screen has been
- resized by the user, and a call to resize_term() is needed.
- Checking for KEY_RESIZE is generally preferable, unless you're
- not handling the keyboard.
-
- curses_version() returns a string describing the version of
- PDCurses.
-
- Return Value:
- All functions return NULL on error, except endwin(), which
- returns ERR on error.
-
- Portability X/Open BSD SYS V
- initscr Y Y Y
- endwin Y Y Y
- isendwin Y - 3.0
- newterm Y - Y
- set_term Y - Y
- delscreen Y - 4.0
- resize_term - - -
- is_termresized - - -
- curses_version - - -
-
-**man-end****************************************************************/
-
-#include <stdlib.h>
-
-char ttytype[128];
-
-const char *_curses_notice = "PDCurses 3.4 - Public Domain 2008";
-
-SCREEN *SP = (SCREEN*)NULL; /* curses variables */
-WINDOW *curscr = (WINDOW *)NULL; /* the current screen image */
-WINDOW *stdscr = (WINDOW *)NULL; /* the default screen window */
-WINDOW *pdc_lastscr = (WINDOW *)NULL; /* the last screen image */
-
-int LINES = 0; /* current terminal height */
-int COLS = 0; /* current terminal width */
-int TABSIZE = 8;
-
-MOUSE_STATUS Mouse_status, pdc_mouse_status;
-
-extern RIPPEDOFFLINE linesripped[5];
-extern char linesrippedoff;
-
-#ifndef XCURSES
-static
-#endif
-WINDOW *Xinitscr(int argc, char *argv[])
-{
- int i;
-
- PDC_LOG(("Xinitscr() - called\n"));
-
- if (SP && SP->alive)
- return NULL;
-
- if (PDC_scr_open(argc, argv) == ERR)
- {
- fprintf(stderr, "initscr(): Unable to create SP\n");
- exit(8);
- }
-
- SP->autocr = TRUE; /* cr -> lf by default */
- SP->raw_out = FALSE; /* tty I/O modes */
- SP->raw_inp = FALSE; /* tty I/O modes */
- SP->cbreak = TRUE;
- SP->save_key_modifiers = FALSE;
- SP->return_key_modifiers = FALSE;
- SP->echo = TRUE;
- SP->visibility = 1;
- SP->resized = FALSE;
- SP->_trap_mbe = 0L;
- SP->_map_mbe_to_key = 0L;
- SP->linesrippedoff = 0;
- SP->linesrippedoffontop = 0;
- SP->delaytenths = 0;
- SP->line_color = -1;
-
- SP->orig_cursor = PDC_get_cursor_mode();
-
- LINES = SP->lines;
- COLS = SP->cols;
-
- if (LINES < 2 || COLS < 2)
- {
- fprintf(stderr, "initscr(): LINES=%d COLS=%d: too small.\n",
- LINES, COLS);
- exit(4);
- }
-
- if ((curscr = newwin(LINES, COLS, 0, 0)) == (WINDOW *)NULL)
- {
- fprintf(stderr, "initscr(): Unable to create curscr.\n");
- exit(2);
- }
-
- if ((pdc_lastscr = newwin(LINES, COLS, 0, 0)) == (WINDOW *)NULL)
- {
- fprintf(stderr, "initscr(): Unable to create pdc_lastscr.\n");
- exit(2);
- }
-
- wattrset(pdc_lastscr, (chtype)(-1));
- werase(pdc_lastscr);
-
- PDC_slk_initialize();
- LINES -= SP->slklines;
-
- /* We have to sort out ripped off lines here, and reduce the height
- of stdscr by the number of lines ripped off */
-
- for (i = 0; i < linesrippedoff; i++)
- {
- if (linesripped[i].line < 0)
- (*linesripped[i].init)(newwin(1, COLS, LINES - 1, 0), COLS);
- else
- (*linesripped[i].init)(newwin(1, COLS,
- SP->linesrippedoffontop++, 0), COLS);
-
- SP->linesrippedoff++;
- LINES--;
- }
-
- linesrippedoff = 0;
-
- if (!(stdscr = newwin(LINES, COLS, SP->linesrippedoffontop, 0)))
- {
- fprintf(stderr, "initscr(): Unable to create stdscr.\n");
- exit(1);
- }
-
- wclrtobot(stdscr);
-
- /* If preserving the existing screen, don't allow a screen clear */
-
- if (SP->_preserve)
- {
- untouchwin(curscr);
- untouchwin(stdscr);
- stdscr->_clear = FALSE;
- curscr->_clear = FALSE;
- }
- else
- curscr->_clear = TRUE;
-
- PDC_init_atrtab(); /* set up default colors */
-
- MOUSE_X_POS = MOUSE_Y_POS = -1;
- BUTTON_STATUS(1) = BUTTON_RELEASED;
- BUTTON_STATUS(2) = BUTTON_RELEASED;
- BUTTON_STATUS(3) = BUTTON_RELEASED;
- Mouse_status.changes = 0;
-
- SP->alive = TRUE;
-
- def_shell_mode();
-
- sprintf(ttytype, "pdcurses|PDCurses for %s", PDC_sysname());
-
- return stdscr;
-}
-
-WINDOW *initscr(void)
-{
- PDC_LOG(("initscr() - called\n"));
-
- return Xinitscr(0, NULL);
-}
-
-int endwin(void)
-{
- PDC_LOG(("endwin() - called\n"));
-
- /* Allow temporary exit from curses using endwin() */
-
- def_prog_mode();
- PDC_scr_close();
-
- SP->alive = FALSE;
-
- return OK;
-}
-
-bool isendwin(void)
-{
- PDC_LOG(("isendwin() - called\n"));
-
- return SP ? !(SP->alive) : FALSE;
-}
-
-SCREEN *newterm(const char *type, FILE *outfd, FILE *infd)
-{
- PDC_LOG(("newterm() - called\n"));
-
- return Xinitscr(0, NULL) ? SP : NULL;
-}
-
-SCREEN *set_term(SCREEN *new)
-{
- PDC_LOG(("set_term() - called\n"));
-
- /* We only support one screen */
-
- return (new == SP) ? SP : NULL;
-}
-
-void delscreen(SCREEN *sp)
-{
- PDC_LOG(("delscreen() - called\n"));
-
- if (sp != SP)
- return;
-
- PDC_slk_free(); /* free the soft label keys, if needed */
-
- delwin(stdscr);
- delwin(curscr);
- delwin(pdc_lastscr);
- stdscr = (WINDOW *)NULL;
- curscr = (WINDOW *)NULL;
- pdc_lastscr = (WINDOW *)NULL;
-
- SP->alive = FALSE;
-
- PDC_scr_free(); /* free SP and pdc_atrtab */
-
- SP = (SCREEN *)NULL;
-}
-
-int resize_term(int nlines, int ncols)
-{
- PDC_LOG(("resize_term() - called: nlines %d\n", nlines));
-
- if (!stdscr || PDC_resize_screen(nlines, ncols) == ERR)
- return ERR;
-
- SP->lines = PDC_get_rows();
- LINES = SP->lines - SP->linesrippedoff - SP->slklines;
- SP->cols = COLS = PDC_get_columns();
-
- if (wresize(curscr, SP->lines, SP->cols) == ERR ||
- wresize(stdscr, LINES, COLS) == ERR ||
- wresize(pdc_lastscr, SP->lines, SP->cols) == ERR)
- return ERR;
-
- werase(pdc_lastscr);
- curscr->_clear = TRUE;
-
- if (SP->slk_winptr)
- {
- if (wresize(SP->slk_winptr, SP->slklines, COLS) == ERR)
- return ERR;
-
- wmove(SP->slk_winptr, 0, 0);
- wclrtobot(SP->slk_winptr);
- PDC_slk_initialize();
- slk_noutrefresh();
- }
-
- touchwin(stdscr);
- wnoutrefresh(stdscr);
-
- return OK;
-}
-
-bool is_termresized(void)
-{
- PDC_LOG(("is_termresized() - called\n"));
-
- return SP->resized;
-}
-
-const char *curses_version(void)
-{
- return _curses_notice;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inopts.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inopts.c
deleted file mode 100644
index b02654f..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/inopts.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: inopts.c,v 1.43 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: inopts
-
- Synopsis:
- int cbreak(void);
- int nocbreak(void);
- int echo(void);
- int noecho(void);
- int halfdelay(int tenths);
- int intrflush(WINDOW *win, bool bf);
- int keypad(WINDOW *win, bool bf);
- int meta(WINDOW *win, bool bf);
- int nl(void);
- int nonl(void);
- int nodelay(WINDOW *win, bool bf);
- int notimeout(WINDOW *win, bool bf);
- int raw(void);
- int noraw(void);
- void noqiflush(void);
- void qiflush(void);
- void timeout(int delay);
- void wtimeout(WINDOW *win, int delay);
- int typeahead(int fildes);
-
- int crmode(void);
- int nocrmode(void);
-
- Description:
- cbreak() and nocbreak() toggle cbreak mode. In cbreak mode,
- characters typed by the user are made available immediately, and
- erase/kill character processing is not performed. In nocbreak
- mode, typed characters are buffered until a newline or carriage
- return. Interrupt and flow control characters are unaffected by
- this mode. PDCurses always starts in cbreak mode.
-
- echo() and noecho() control whether typed characters are echoed
- by the input routine. Initially, input characters are echoed.
- Subsequent calls to echo() and noecho() do not flush type-ahead.
-
- halfdelay() is similar to cbreak(), but allows for a time limit
- to be specified, in tenths of a second. This causes getch() to
- block for that period before returning ERR if no key has been
- received. tenths must be between 1 and 255.
-
- keypad() controls whether getch() returns function/special keys
- as single key codes (e.g., the left arrow key as KEY_LEFT). Per
- X/Open, the default for keypad mode is OFF. You'll probably want
- it on. With keypad mode off, if a special key is pressed,
- getch() does nothing or returns ERR.
-
- nodelay() controls whether wgetch() is a non-blocking call. If
- the option is enabled, and no input is ready, wgetch() will
- return ERR. If disabled, wgetch() will hang until input is
- ready.
-
- nl() enables the translation of a carriage return into a newline
- on input. nonl() disables this. Initially, the translation does
- occur.
-
- raw() and noraw() toggle raw mode. Raw mode is similar to cbreak
- mode, in that characters typed are immediately passed through to
- the user program. The difference is that in raw mode, the INTR,
- QUIT, SUSP, and STOP characters are passed through without being
- interpreted, and without generating a signal.
-
- In PDCurses, the meta() function sets raw mode on or off.
-
- timeout() and wtimeout() set blocking or non-blocking reads for
- the specified window. The delay is measured in milliseconds. If
- it's negative, a blocking read is used; if zero, then non-
- blocking reads are done -- if no input is waiting, ERR is
- returned immediately. If the delay is positive, the read blocks
- for the delay period; if the period expires, ERR is returned.
-
- intrflush(), notimeout(), noqiflush(), qiflush() and typeahead()
- do nothing in PDCurses, but are included for compatibility with
- other curses implementations.
-
- crmode() and nocrmode() are archaic equivalents to cbreak() and
- nocbreak(), respectively.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- cbreak Y Y Y
- nocbreak Y Y Y
- echo Y Y Y
- noecho Y Y Y
- halfdelay Y - Y
- intrflush Y - Y
- keypad Y - Y
- meta Y - Y
- nl Y Y Y
- nonl Y Y Y
- nodelay Y - Y
- notimeout Y - Y
- raw Y Y Y
- noraw Y Y Y
- noqiflush Y - Y
- qiflush Y - Y
- timeout Y - Y
- wtimeout Y - Y
- typeahead Y - Y
- crmode -
- nocrmode -
-
-**man-end****************************************************************/
-
-int cbreak(void)
-{
- PDC_LOG(("cbreak() - called\n"));
-
- SP->cbreak = TRUE;
-
- return OK;
-}
-
-int nocbreak(void)
-{
- PDC_LOG(("nocbreak() - called\n"));
-
- SP->cbreak = FALSE;
- SP->delaytenths = 0;
-
- return OK;
-}
-
-int echo(void)
-{
- PDC_LOG(("echo() - called\n"));
-
- SP->echo = TRUE;
-
- return OK;
-}
-
-int noecho(void)
-{
- PDC_LOG(("noecho() - called\n"));
-
- SP->echo = FALSE;
-
- return OK;
-}
-
-int halfdelay(int tenths)
-{
- PDC_LOG(("halfdelay() - called\n"));
-
- if (tenths < 1 || tenths > 255)
- return ERR;
-
- SP->delaytenths = tenths;
-
- return OK;
-}
-
-int intrflush(WINDOW *win, bool bf)
-{
- PDC_LOG(("intrflush() - called\n"));
-
- return OK;
-}
-
-int keypad(WINDOW *win, bool bf)
-{
- PDC_LOG(("keypad() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_use_keypad = bf;
-
- return OK;
-}
-
-int meta(WINDOW *win, bool bf)
-{
- PDC_LOG(("meta() - called\n"));
-
- SP->raw_inp = bf;
-
- return OK;
-}
-
-int nl(void)
-{
- PDC_LOG(("nl() - called\n"));
-
- SP->autocr = TRUE;
-
- return OK;
-}
-
-int nonl(void)
-{
- PDC_LOG(("nonl() - called\n"));
-
- SP->autocr = FALSE;
-
- return OK;
-}
-
-int nodelay(WINDOW *win, bool flag)
-{
- PDC_LOG(("nodelay() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_nodelay = flag;
-
- return OK;
-}
-
-int notimeout(WINDOW *win, bool flag)
-{
- PDC_LOG(("notimeout() - called\n"));
-
- return OK;
-}
-
-int raw(void)
-{
- PDC_LOG(("raw() - called\n"));
-
- PDC_set_keyboard_binary(TRUE);
- SP->raw_inp = TRUE;
-
- return OK;
-}
-
-int noraw(void)
-{
- PDC_LOG(("noraw() - called\n"));
-
- PDC_set_keyboard_binary(FALSE);
- SP->raw_inp = FALSE;
-
- return OK;
-}
-
-void noqiflush(void)
-{
- PDC_LOG(("noqiflush() - called\n"));
-}
-
-void qiflush(void)
-{
- PDC_LOG(("qiflush() - called\n"));
-}
-
-int typeahead(int fildes)
-{
- PDC_LOG(("typeahead() - called\n"));
-
- return OK;
-}
-
-void wtimeout(WINDOW *win, int delay)
-{
- PDC_LOG(("wtimeout() - called\n"));
-
- if (!win)
- return;
-
- if (delay < 0)
- {
- /* This causes a blocking read on the window, so turn on delay
- mode */
-
- win->_nodelay = FALSE;
- win->_delayms = 0;
- }
- else if (!delay)
- {
- /* This causes a non-blocking read on the window, so turn off
- delay mode */
-
- win->_nodelay = TRUE;
- win->_delayms = 0;
- }
- else
- {
- /* This causes the read on the window to delay for the number of
- milliseconds. Also forces the window into non-blocking read
- mode */
-
- /*win->_nodelay = TRUE;*/
- win->_delayms = delay;
- }
-}
-
-void timeout(int delay)
-{
- PDC_LOG(("timeout() - called\n"));
-
- wtimeout(stdscr, delay);
-}
-
-int crmode(void)
-{
- PDC_LOG(("crmode() - called\n"));
-
- return cbreak();
-}
-
-int nocrmode(void)
-{
- PDC_LOG(("nocrmode() - called\n"));
-
- return nocbreak();
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/insch.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/insch.c
deleted file mode 100644
index 67b9f47..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/insch.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: insch.c,v 1.44 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: insch
-
- Synopsis:
- int insch(chtype ch);
- int winsch(WINDOW *win, chtype ch);
- int mvinsch(int y, int x, chtype ch);
- int mvwinsch(WINDOW *win, int y, int x, chtype ch);
-
- int insrawch(chtype ch);
- int winsrawch(WINDOW *win, chtype ch);
- int mvinsrawch(int y, int x, chtype ch);
- int mvwinsrawch(WINDOW *win, int y, int x, chtype ch);
-
- int ins_wch(const cchar_t *wch);
- int wins_wch(WINDOW *win, const cchar_t *wch);
- int mvins_wch(int y, int x, const cchar_t *wch);
- int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch);
-
- Description:
- The insch() functions insert a chtype into the window at the
- current or specified cursor position. The cursor is NOT
- advanced. A newline is equivalent to clrtoeol(); tabs are
- expanded; other control characters are converted as with
- unctrl().
-
- The ins_wch() functions are the wide-character
- equivalents, taking cchar_t pointers rather than chtypes.
-
- Video attributes can be combined with a character by ORing
- them into the parameter. Text, including attributes, can be
- copied from one place to another using inch() and insch().
-
- insrawch() etc. are PDCurses-specific wrappers for insch() etc.
- that disable the translation of control characters.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- insch Y Y Y
- winsch Y Y Y
- mvinsch Y Y Y
- mvwinsch Y Y Y
- insrawch - - -
- winsrawch - - -
- ins_wch Y
- wins_wch Y
- mvins_wch Y
- mvwins_wch Y
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-int winsch(WINDOW *win, chtype ch)
-{
- int x, y;
- chtype attr;
- bool xlat;
-
- PDC_LOG(("winsch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
- win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
-
- if (!win)
- return ERR;
-
- x = win->_curx;
- y = win->_cury;
-
- if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
- return ERR;
-
- xlat = !SP->raw_out && !(ch & A_ALTCHARSET);
- attr = ch & A_ATTRIBUTES;
- ch &= A_CHARTEXT;
-
- if (xlat && (ch < ' ' || ch == 0x7f))
- {
- int x2;
-
- switch (ch)
- {
- case '\t':
- for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++)
- {
- if (winsch(win, attr | ' ') == ERR)
- return ERR;
- }
- return OK;
-
- case '\n':
- wclrtoeol(win);
- break;
-
- case 0x7f:
- if (winsch(win, attr | '?') == ERR)
- return ERR;
-
- return winsch(win, attr | '^');
-
- default:
- /* handle control chars */
-
- if (winsch(win, attr | (ch + '@')) == ERR)
- return ERR;
-
- return winsch(win, attr | '^');
- }
- }
- else
- {
- int maxx;
- chtype *temp;
-
- /* If the incoming character doesn't have its own attribute,
- then use the current attributes for the window. If it has
- attributes but not a color component, OR the attributes to
- the current attributes for the window. If it has a color
- component, use the attributes solely from the incoming
- character. */
-
- if (!(attr & A_COLOR))
- attr |= win->_attrs;
-
- /* wrs (4/10/93): Apply the same sort of logic for the window
- background, in that it only takes precedence if other color
- attributes are not there and that the background character
- will only print if the printing character is blank. */
-
- if (!(attr & A_COLOR))
- attr |= win->_bkgd & A_ATTRIBUTES;
- else
- attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
-
- if (ch == ' ')
- ch = win->_bkgd & A_CHARTEXT;
-
- /* Add the attribute back into the character. */
-
- ch |= attr;
-
- maxx = win->_maxx;
- temp = &win->_y[y][x];
-
- memmove(temp + 1, temp, (maxx - x - 1) * sizeof(chtype));
-
- win->_lastch[y] = maxx - 1;
-
- if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
- win->_firstch[y] = x;
-
- *temp = ch;
- }
-
- PDC_sync(win);
-
- return OK;
-}
-
-int insch(chtype ch)
-{
- PDC_LOG(("insch() - called\n"));
-
- return winsch(stdscr, ch);
-}
-
-int mvinsch(int y, int x, chtype ch)
-{
- PDC_LOG(("mvinsch() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winsch(stdscr, ch);
-}
-
-int mvwinsch(WINDOW *win, int y, int x, chtype ch)
-{
- PDC_LOG(("mvwinsch() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winsch(win, ch);
-}
-
-int winsrawch(WINDOW *win, chtype ch)
-{
- PDC_LOG(("winsrawch() - called: win=%p ch=%x "
- "(char=%c attr=0x%x)\n", win, ch,
- ch & A_CHARTEXT, ch & A_ATTRIBUTES));
-
- if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f)
- ch |= A_ALTCHARSET;
-
- return winsch(win, ch);
-}
-
-int insrawch(chtype ch)
-{
- PDC_LOG(("insrawch() - called\n"));
-
- return winsrawch(stdscr, ch);
-}
-
-int mvinsrawch(int y, int x, chtype ch)
-{
- PDC_LOG(("mvinsrawch() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winsrawch(stdscr, ch);
-}
-
-int mvwinsrawch(WINDOW *win, int y, int x, chtype ch)
-{
- PDC_LOG(("mvwinsrawch() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winsrawch(win, ch);
-}
-
-#ifdef PDC_WIDE
-int wins_wch(WINDOW *win, const cchar_t *wch)
-{
- PDC_LOG(("wins_wch() - called\n"));
-
- return wch ? winsch(win, *wch) : ERR;
-}
-
-int ins_wch(const cchar_t *wch)
-{
- PDC_LOG(("ins_wch() - called\n"));
-
- return wins_wch(stdscr, wch);
-}
-
-int mvins_wch(int y, int x, const cchar_t *wch)
-{
- PDC_LOG(("mvins_wch() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wins_wch(stdscr, wch);
-}
-
-int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch)
-{
- PDC_LOG(("mvwins_wch() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wins_wch(win, wch);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/insstr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/insstr.c
deleted file mode 100644
index a731eaf..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/insstr.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: insstr.c,v 1.46 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: insstr
-
- Synopsis:
- int insstr(const char *str);
- int insnstr(const char *str, int n);
- int winsstr(WINDOW *win, const char *str);
- int winsnstr(WINDOW *win, const char *str, int n);
- int mvinsstr(int y, int x, const char *str);
- int mvinsnstr(int y, int x, const char *str, int n);
- int mvwinsstr(WINDOW *win, int y, int x, const char *str);
- int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n);
-
- int ins_wstr(const wchar_t *wstr);
- int ins_nwstr(const wchar_t *wstr, int n);
- int wins_wstr(WINDOW *win, const wchar_t *wstr);
- int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n);
- int mvins_wstr(int y, int x, const wchar_t *wstr);
- int mvins_nwstr(int y, int x, const wchar_t *wstr, int n);
- int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr);
- int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
-
- Description:
- The insstr() functions insert a character string into a window
- at the current cursor position, by repeatedly calling winsch().
- When PDCurses is built with wide-character support enabled, the
- narrow-character functions treat the string as a multibyte
- string in the current locale, and convert it first. All
- characters to the right of the cursor are moved to the right,
- with the possibility of the rightmost characters on the line
- being lost. The cursor position does not change (after moving
- to y, x, if specified). The routines with n as the last
- argument insert at most n characters; if n is negative, then the
- entire string is inserted.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- insstr Y - 4.0
- winsstr Y - 4.0
- mvinsstr Y - 4.0
- mvwinsstr Y - 4.0
- insnstr Y - 4.0
- winsnstr Y - 4.0
- mvinsnstr Y - 4.0
- mvwinsnstr Y - 4.0
- ins_wstr Y
- wins_wstr Y
- mvins_wstr Y
- mvwins_wstr Y
- ins_nwstr Y
- wins_nwstr Y
- mvins_nwstr Y
- mvwins_nwstr Y
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-int winsnstr(WINDOW *win, const char *str, int n)
-{
-#ifdef PDC_WIDE
- wchar_t wstr[513], *p;
- int i;
-#endif
- int len;
-
- PDC_LOG(("winsnstr() - called: string=\"%s\" n %d \n", str, n));
-
- if (!win || !str)
- return ERR;
-
- len = strlen(str);
-
- if (n < 0 || n < len)
- n = len;
-
-#ifdef PDC_WIDE
- if (n > 512)
- n = 512;
-
- p = wstr;
- i = 0;
-
- while (str[i] && i < n)
- {
- int retval = PDC_mbtowc(p, str + i, n - i);
-
- if (retval <= 0)
- break;
- p++;
- i += retval;
- }
-
- while (p > wstr)
- if (winsch(win, *--p) == ERR)
-#else
- while (n)
- if (winsch(win, (unsigned char)(str[--n])) == ERR)
-#endif
- return ERR;
-
- return OK;
-}
-
-int insstr(const char *str)
-{
- PDC_LOG(("insstr() - called: string=\"%s\"\n", str));
-
- return winsnstr(stdscr, str, -1);
-}
-
-int winsstr(WINDOW *win, const char *str)
-{
- PDC_LOG(("winsstr() - called: string=\"%s\"\n", str));
-
- return winsnstr(win, str, -1);
-}
-
-int mvinsstr(int y, int x, const char *str)
-{
- PDC_LOG(("mvinsstr() - called: y %d x %d string=\"%s\"\n", y, x, str));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winsnstr(stdscr, str, -1);
-}
-
-int mvwinsstr(WINDOW *win, int y, int x, const char *str)
-{
- PDC_LOG(("mvwinsstr() - called: string=\"%s\"\n", str));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winsnstr(win, str, -1);
-}
-
-int insnstr(const char *str, int n)
-{
- PDC_LOG(("insnstr() - called: string=\"%s\" n %d \n", str, n));
-
- return winsnstr(stdscr, str, n);
-}
-
-int mvinsnstr(int y, int x, const char *str, int n)
-{
- PDC_LOG(("mvinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
- y, x, str, n));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winsnstr(stdscr, str, n);
-}
-
-int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n)
-{
- PDC_LOG(("mvwinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
- y, x, str, n));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winsnstr(win, str, n);
-}
-
-#ifdef PDC_WIDE
-int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
-{
- const wchar_t *p;
- int len;
-
- PDC_LOG(("wins_nwstr() - called\n"));
-
- if (!win || !wstr)
- return ERR;
-
- for (len = 0, p = wstr; *p; p++)
- len++;
-
- if (n < 0 || n < len)
- n = len;
-
- while (n)
- if (winsch(win, wstr[--n]) == ERR)
- return ERR;
-
- return OK;
-}
-
-int ins_wstr(const wchar_t *wstr)
-{
- PDC_LOG(("ins_wstr() - called\n"));
-
- return wins_nwstr(stdscr, wstr, -1);
-}
-
-int wins_wstr(WINDOW *win, const wchar_t *wstr)
-{
- PDC_LOG(("wins_wstr() - called\n"));
-
- return wins_nwstr(win, wstr, -1);
-}
-
-int mvins_wstr(int y, int x, const wchar_t *wstr)
-{
- PDC_LOG(("mvins_wstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wins_nwstr(stdscr, wstr, -1);
-}
-
-int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr)
-{
- PDC_LOG(("mvwinsstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wins_nwstr(win, wstr, -1);
-}
-
-int ins_nwstr(const wchar_t *wstr, int n)
-{
- PDC_LOG(("ins_nwstr() - called\n"));
-
- return wins_nwstr(stdscr, wstr, n);
-}
-
-int mvins_nwstr(int y, int x, const wchar_t *wstr, int n)
-{
- PDC_LOG(("mvinsnstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return wins_nwstr(stdscr, wstr, n);
-}
-
-int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n)
-{
- PDC_LOG(("mvwinsnstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return wins_nwstr(win, wstr, n);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/instr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/instr.c
deleted file mode 100644
index 733a348..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/instr.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: instr.c,v 1.44 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: instr
-
- Synopsis:
- int instr(char *str);
- int innstr(char *str, int n);
- int winstr(WINDOW *win, char *str);
- int winnstr(WINDOW *win, char *str, int n);
- int mvinstr(int y, int x, char *str);
- int mvinnstr(int y, int x, char *str, int n);
- int mvwinstr(WINDOW *win, int y, int x, char *str);
- int mvwinnstr(WINDOW *win, int y, int x, char *str, int n);
-
- int inwstr(wchar_t *wstr);
- int innwstr(wchar_t *wstr, int n);
- int winwstr(WINDOW *win, wchar_t *wstr);
- int winnwstr(WINDOW *win, wchar_t *wstr, int n);
- int mvinwstr(int y, int x, wchar_t *wstr);
- int mvinnwstr(int y, int x, wchar_t *wstr, int n);
- int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr);
- int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n);
-
- Description:
- These functions take characters (or wide characters) from the
- current or specified position in the window, and return them as
- a string in str (or wstr). Attributes are ignored. The functions
- with n as the last argument return a string at most n characters
- long.
-
- Return Value:
- Upon successful completion, innstr(), mvinnstr(), mvwinnstr()
- and winnstr() return the number of characters actually read into
- the string; instr(), mvinstr(), mvwinstr() and winstr() return
- OK. Otherwise, all these functions return ERR.
-
- Portability X/Open BSD SYS V
- instr Y - 4.0
- winstr Y - 4.0
- mvinstr Y - 4.0
- mvwinstr Y - 4.0
- innstr Y - 4.0
- winnstr Y - 4.0
- mvinnstr Y - 4.0
- mvwinnstr Y - 4.0
- inwstr Y
- winwstr Y
- mvinwstr Y
- mvwinwstr Y
- innwstr Y
- winnwstr Y
- mvinnwstr Y
- mvwinnwstr Y
-
-**man-end****************************************************************/
-
-int winnstr(WINDOW *win, char *str, int n)
-{
-#ifdef PDC_WIDE
- wchar_t wstr[513];
-
- if (n < 0 || n > 512)
- n = 512;
-
- if (winnwstr(win, wstr, n) == ERR)
- return ERR;
-
- return PDC_wcstombs(str, wstr, n);
-#else
- chtype *src;
- int i;
-
- PDC_LOG(("winnstr() - called: n %d \n", n));
-
- if (!win || !str)
- return ERR;
-
- if (n < 0 || (win->_curx + n) > win->_maxx)
- n = win->_maxx - win->_curx;
-
- src = win->_y[win->_cury] + win->_curx;
-
- for (i = 0; i < n; i++)
- str[i] = src[i] & A_CHARTEXT;
-
- str[i] = '\0';
-
- return i;
-#endif
-}
-
-int instr(char *str)
-{
- PDC_LOG(("instr() - called: string=\"%s\"\n", str));
-
- return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK;
-}
-
-int winstr(WINDOW *win, char *str)
-{
- PDC_LOG(("winstr() - called: \n"));
-
- return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK;
-}
-
-int mvinstr(int y, int x, char *str)
-{
- PDC_LOG(("mvinstr() - called: y %d x %d \n", y, x));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK;
-}
-
-int mvwinstr(WINDOW *win, int y, int x, char *str)
-{
- PDC_LOG(("mvwinstr() - called: y %d x %d \n", y, x));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK;
-}
-
-int innstr(char *str, int n)
-{
- PDC_LOG(("innstr() - called: n %d \n", n));
-
- return winnstr(stdscr, str, n);
-}
-
-int mvinnstr(int y, int x, char *str, int n)
-{
- PDC_LOG(("mvinnstr() - called: y %d x %d n %d \n", y, x, n));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winnstr(stdscr, str, n);
-}
-
-int mvwinnstr(WINDOW *win, int y, int x, char *str, int n)
-{
- PDC_LOG(("mvwinnstr() - called: y %d x %d n %d \n", y, x, n));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winnstr(win, str, n);
-}
-
-#ifdef PDC_WIDE
-int winnwstr(WINDOW *win, wchar_t *wstr, int n)
-{
- chtype *src;
- int i;
-
- PDC_LOG(("winnstr() - called: n %d \n", n));
-
- if (!win || !wstr)
- return ERR;
-
- if (n < 0 || (win->_curx + n) > win->_maxx)
- n = win->_maxx - win->_curx;
-
- src = win->_y[win->_cury] + win->_curx;
-
- for (i = 0; i < n; i++)
- wstr[i] = src[i] & A_CHARTEXT;
-
- wstr[i] = L'\0';
-
- return i;
-}
-
-int inwstr(wchar_t *wstr)
-{
- PDC_LOG(("inwstr() - called\n"));
-
- return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK;
-}
-
-int winwstr(WINDOW *win, wchar_t *wstr)
-{
- PDC_LOG(("winwstr() - called\n"));
-
- return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK;
-}
-
-int mvinwstr(int y, int x, wchar_t *wstr)
-{
- PDC_LOG(("mvinwstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK;
-}
-
-int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr)
-{
- PDC_LOG(("mvwinstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK;
-}
-
-int innwstr(wchar_t *wstr, int n)
-{
- PDC_LOG(("innwstr() - called\n"));
-
- return winnwstr(stdscr, wstr, n);
-}
-
-int mvinnwstr(int y, int x, wchar_t *wstr, int n)
-{
- PDC_LOG(("mvinnstr() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- return winnwstr(stdscr, wstr, n);
-}
-
-int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n)
-{
- PDC_LOG(("mvwinnwstr() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- return winnwstr(win, wstr, n);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/kernel.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/kernel.c
deleted file mode 100644
index 1a2f835..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/kernel.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: kernel.c,v 1.78 2008/07/15 17:13:26 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: kernel
-
- Synopsis:
- int def_prog_mode(void);
- int def_shell_mode(void);
- int reset_prog_mode(void);
- int reset_shell_mode(void);
- int resetty(void);
- int savetty(void);
- int ripoffline(int line, int (*init)(WINDOW *, int));
- int curs_set(int visibility);
- int napms(int ms);
-
- int draino(int ms);
- int resetterm(void);
- int fixterm(void);
- int saveterm(void);
-
- Description:
- def_prog_mode() and def_shell_mode() save the current terminal
- modes as the "program" (in curses) or "shell" (not in curses)
- state for use by the reset_prog_mode() and reset_shell_mode()
- functions. This is done automatically by initscr().
-
- reset_prog_mode() and reset_shell_mode() restore the terminal to
- "program" (in curses) or "shell" (not in curses) state. These
- are done automatically by endwin() and doupdate() after an
- endwin(), so they would normally not be called before these
- functions.
-
- savetty() and resetty() save and restore the state of the
- terminal modes. savetty() saves the current state in a buffer,
- and resetty() restores the state to what it was at the last call
- to savetty().
-
- curs_set() alters the appearance of the cursor. A visibility of
- 0 makes it disappear; 1 makes it appear "normal" (usually an
- underline) and 2 makes it "highly visible" (usually a block).
-
- ripoffline() reduces the size of stdscr by one line. If the
- "line" parameter is positive, the line is removed from the top
- of the screen; if negative, from the bottom. Up to 5 lines can
- be ripped off stdscr by calling ripoffline() repeatedly. The
- function argument, init, is called from within initscr() or
- newterm(), so ripoffline() must be called before either of these
- functions. The init function receives a pointer to a one-line
- WINDOW, and the width of the window. Calling ripoffline() with a
- NULL init function pointer is an error.
-
- napms() suspends the program for the specified number of
- milliseconds. draino() is an archaic equivalent.
-
- resetterm(), fixterm() and saveterm() are archaic equivalents
- for reset_shell_mode(), reset_prog_mode() and def_prog_mode(),
- respectively.
-
- Return Value:
- All functions return OK on success and ERR on error, except
- curs_set(), which returns the previous visibility.
-
- Portability X/Open BSD SYS V
- def_prog_mode Y Y Y
- def_shell_mode Y Y Y
- reset_prog_mode Y Y Y
- reset_shell_mode Y Y Y
- resetty Y Y Y
- savetty Y Y Y
- ripoffline Y - 3.0
- curs_set Y - 3.0
- napms Y Y Y
- draino -
- resetterm -
- fixterm -
- saveterm -
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-RIPPEDOFFLINE linesripped[5];
-char linesrippedoff = 0;
-
-static struct cttyset
-{
- bool been_set;
- SCREEN saved;
-} ctty[3];
-
-enum { PDC_SH_TTY, PDC_PR_TTY, PDC_SAVE_TTY };
-
-static void _save_mode(int i)
-{
- ctty[i].been_set = TRUE;
-
- memcpy(&(ctty[i].saved), SP, sizeof(SCREEN));
-
- PDC_save_screen_mode(i);
-}
-
-static int _restore_mode(int i)
-{
- if (ctty[i].been_set == TRUE)
- {
- memcpy(SP, &(ctty[i].saved), sizeof(SCREEN));
-
- if (ctty[i].saved.raw_out)
- raw();
-
- PDC_restore_screen_mode(i);
-
- if ((LINES != ctty[i].saved.lines) ||
- (COLS != ctty[i].saved.cols))
- resize_term(ctty[i].saved.lines, ctty[i].saved.cols);
-
- PDC_curs_set(ctty[i].saved.visibility);
-
- PDC_gotoyx(ctty[i].saved.cursrow, ctty[i].saved.curscol);
- }
-
- return ctty[i].been_set ? OK : ERR;
-}
-
-int def_prog_mode(void)
-{
- PDC_LOG(("def_prog_mode() - called\n"));
-
- _save_mode(PDC_PR_TTY);
-
- return OK;
-}
-
-int def_shell_mode(void)
-{
- PDC_LOG(("def_shell_mode() - called\n"));
-
- _save_mode(PDC_SH_TTY);
-
- return OK;
-}
-
-int reset_prog_mode(void)
-{
- PDC_LOG(("reset_prog_mode() - called\n"));
-
- _restore_mode(PDC_PR_TTY);
- PDC_reset_prog_mode();
-
- return OK;
-}
-
-int reset_shell_mode(void)
-{
- PDC_LOG(("reset_shell_mode() - called\n"));
-
- _restore_mode(PDC_SH_TTY);
- PDC_reset_shell_mode();
-
- return OK;
-}
-
-int resetty(void)
-{
- PDC_LOG(("resetty() - called\n"));
-
- return _restore_mode(PDC_SAVE_TTY);
-}
-
-int savetty(void)
-{
- PDC_LOG(("savetty() - called\n"));
-
- _save_mode(PDC_SAVE_TTY);
-
- return OK;
-}
-
-int curs_set(int visibility)
-{
- int ret_vis;
-
- PDC_LOG(("curs_set() - called: visibility=%d\n", visibility));
-
- if ((visibility < 0) || (visibility > 2))
- return ERR;
-
- ret_vis = PDC_curs_set(visibility);
-
- /* If the cursor is changing from invisible to visible, update
- its position */
-
- if (visibility && !ret_vis)
- PDC_gotoyx(SP->cursrow, SP->curscol);
-
- return ret_vis;
-}
-
-int napms(int ms)
-{
- PDC_LOG(("napms() - called: ms=%d\n", ms));
-
- if (ms)
- PDC_napms(ms);
-
- return OK;
-}
-
-int ripoffline(int line, int (*init)(WINDOW *, int))
-{
- PDC_LOG(("ripoffline() - called: line=%d\n", line));
-
- if (linesrippedoff < 5 && line && init)
- {
- linesripped[(int)linesrippedoff].line = line;
- linesripped[(int)linesrippedoff++].init = init;
-
- return OK;
- }
-
- return ERR;
-}
-
-int draino(int ms)
-{
- PDC_LOG(("draino() - called\n"));
-
- return napms(ms);
-}
-
-int resetterm(void)
-{
- PDC_LOG(("resetterm() - called\n"));
-
- return reset_shell_mode();
-}
-
-int fixterm(void)
-{
- PDC_LOG(("fixterm() - called\n"));
-
- return reset_prog_mode();
-}
-
-int saveterm(void)
-{
- PDC_LOG(("saveterm() - called\n"));
-
- return def_prog_mode();
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/keyname.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/keyname.c
deleted file mode 100644
index 5bfeb6e..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/keyname.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: keyname.c,v 1.8 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: keyname
-
- Synopsis:
- char *keyname(int key);
-
- char *key_name(wchar_t c);
-
- bool has_key(int key);
-
- Description:
- keyname() returns a string corresponding to the argument key.
- key may be any key returned by wgetch().
-
- key_name() is the wide-character version. It takes a wchar_t
- parameter, but still returns a char *.
-
- has_key() returns TRUE for recognized keys, FALSE otherwise.
- This function is an ncurses extension.
-
- Portability X/Open BSD SYS V
- keyname Y - 3.0
- key_name Y
- has_key - - -
-
-**man-end****************************************************************/
-
-const char *keyname(int key)
-{
- /* Key names must be in exactly the same order as in curses.h */
-
- static const char *key_name[] =
- {
- "KEY_BREAK", "KEY_DOWN", "KEY_UP", "KEY_LEFT", "KEY_RIGHT",
- "KEY_HOME", "KEY_BACKSPACE", "KEY_F0", "KEY_F(1)", "KEY_F(2)",
- "KEY_F(3)", "KEY_F(4)", "KEY_F(5)", "KEY_F(6)", "KEY_F(7)",
- "KEY_F(8)", "KEY_F(9)", "KEY_F(10)", "KEY_F(11)", "KEY_F(12)",
- "KEY_F(13)", "KEY_F(14)", "KEY_F(15)", "KEY_F(16)", "KEY_F(17)",
- "KEY_F(18)", "KEY_F(19)", "KEY_F(20)", "KEY_F(21)", "KEY_F(22)",
- "KEY_F(23)", "KEY_F(24)", "KEY_F(25)", "KEY_F(26)", "KEY_F(27)",
- "KEY_F(28)", "KEY_F(29)", "KEY_F(30)", "KEY_F(31)", "KEY_F(32)",
- "KEY_F(33)", "KEY_F(34)", "KEY_F(35)", "KEY_F(36)", "KEY_F(37)",
- "KEY_F(38)", "KEY_F(39)", "KEY_F(40)", "KEY_F(41)", "KEY_F(42)",
- "KEY_F(43)", "KEY_F(44)", "KEY_F(45)", "KEY_F(46)", "KEY_F(47)",
- "KEY_F(48)", "KEY_F(49)", "KEY_F(50)", "KEY_F(51)", "KEY_F(52)",
- "KEY_F(53)", "KEY_F(54)", "KEY_F(55)", "KEY_F(56)", "KEY_F(57)",
- "KEY_F(58)", "KEY_F(59)", "KEY_F(60)", "KEY_F(61)", "KEY_F(62)",
- "KEY_F(63)", "KEY_DL", "KEY_IL", "KEY_DC", "KEY_IC", "KEY_EIC",
- "KEY_CLEAR", "KEY_EOS", "KEY_EOL", "KEY_SF", "KEY_SR",
- "KEY_NPAGE", "KEY_PPAGE", "KEY_STAB", "KEY_CTAB", "KEY_CATAB",
- "KEY_ENTER", "KEY_SRESET", "KEY_RESET", "KEY_PRINT", "KEY_LL",
- "KEY_ABORT", "KEY_SHELP", "KEY_LHELP", "KEY_BTAB", "KEY_BEG",
- "KEY_CANCEL", "KEY_CLOSE", "KEY_COMMAND", "KEY_COPY",
- "KEY_CREATE", "KEY_END", "KEY_EXIT", "KEY_FIND", "KEY_HELP",
- "KEY_MARK", "KEY_MESSAGE", "KEY_MOVE", "KEY_NEXT", "KEY_OPEN",
- "KEY_OPTIONS", "KEY_PREVIOUS", "KEY_REDO", "KEY_REFERENCE",
- "KEY_REFRESH", "KEY_REPLACE", "KEY_RESTART", "KEY_RESUME",
- "KEY_SAVE", "KEY_SBEG", "KEY_SCANCEL", "KEY_SCOMMAND",
- "KEY_SCOPY", "KEY_SCREATE", "KEY_SDC", "KEY_SDL", "KEY_SELECT",
- "KEY_SEND", "KEY_SEOL", "KEY_SEXIT", "KEY_SFIND", "KEY_SHOME",
- "KEY_SIC", "UNKNOWN KEY", "KEY_SLEFT", "KEY_SMESSAGE",
- "KEY_SMOVE", "KEY_SNEXT", "KEY_SOPTIONS", "KEY_SPREVIOUS",
- "KEY_SPRINT", "KEY_SREDO", "KEY_SREPLACE", "KEY_SRIGHT",
- "KEY_SRSUME", "KEY_SSAVE", "KEY_SSUSPEND", "KEY_SUNDO",
- "KEY_SUSPEND", "KEY_UNDO", "ALT_0", "ALT_1", "ALT_2", "ALT_3",
- "ALT_4", "ALT_5", "ALT_6", "ALT_7", "ALT_8", "ALT_9", "ALT_A",
- "ALT_B", "ALT_C", "ALT_D", "ALT_E", "ALT_F", "ALT_G", "ALT_H",
- "ALT_I", "ALT_J", "ALT_K", "ALT_L", "ALT_M", "ALT_N", "ALT_O",
- "ALT_P", "ALT_Q", "ALT_R", "ALT_S", "ALT_T", "ALT_U", "ALT_V",
- "ALT_W", "ALT_X", "ALT_Y", "ALT_Z", "CTL_LEFT", "CTL_RIGHT",
- "CTL_PGUP", "CTL_PGDN", "CTL_HOME", "CTL_END", "KEY_A1",
- "KEY_A2", "KEY_A3", "KEY_B1", "KEY_B2", "KEY_B3", "KEY_C1",
- "KEY_C2", "KEY_C3", "PADSLASH", "PADENTER", "CTL_PADENTER",
- "ALT_PADENTER", "PADSTOP", "PADSTAR", "PADMINUS", "PADPLUS",
- "CTL_PADSTOP", "CTL_PADCENTER", "CTL_PADPLUS", "CTL_PADMINUS",
- "CTL_PADSLASH", "CTL_PADSTAR", "ALT_PADPLUS", "ALT_PADMINUS",
- "ALT_PADSLASH", "ALT_PADSTAR", "ALT_PADSTOP", "CTL_INS",
- "ALT_DEL", "ALT_INS", "CTL_UP", "CTL_DOWN", "CTL_TAB",
- "ALT_TAB", "ALT_MINUS", "ALT_EQUAL", "ALT_HOME", "ALT_PGUP",
- "ALT_PGDN", "ALT_END", "ALT_UP", "ALT_DOWN", "ALT_RIGHT",
- "ALT_LEFT", "ALT_ENTER", "ALT_ESC", "ALT_BQUOTE",
- "ALT_LBRACKET", "ALT_RBRACKET", "ALT_SEMICOLON", "ALT_FQUOTE",
- "ALT_COMMA", "ALT_STOP", "ALT_FSLASH", "ALT_BKSP", "CTL_BKSP",
- "PAD0", "CTL_PAD0", "CTL_PAD1", "CTL_PAD2", "CTL_PAD3",
- "CTL_PAD4", "CTL_PAD5", "CTL_PAD6", "CTL_PAD7","CTL_PAD8",
- "CTL_PAD9", "ALT_PAD0", "ALT_PAD1", "ALT_PAD2", "ALT_PAD3",
- "ALT_PAD4", "ALT_PAD5", "ALT_PAD6", "ALT_PAD7", "ALT_PAD8",
- "ALT_PAD9", "CTL_DEL", "ALT_BSLASH", "CTL_ENTER",
- "SHF_PADENTER", "SHF_PADSLASH", "SHF_PADSTAR", "SHF_PADPLUS",
- "SHF_PADMINUS", "SHF_UP", "SHF_DOWN", "SHF_IC", "SHF_DC",
- "KEY_MOUSE", "KEY_SHIFT_L", "KEY_SHIFT_R", "KEY_CONTROL_L",
- "KEY_CONTROL_R", "KEY_ALT_L", "KEY_ALT_R", "KEY_RESIZE",
- "KEY_SUP", "KEY_SDOWN"
- };
-
- PDC_LOG(("keyname() - called: key %d\n", key));
-
- if ((key >= 0) && (key < 0x80))
- return unctrl((chtype)key);
-
- return has_key(key) ? key_name[key - KEY_MIN] : "UNKNOWN KEY";
-}
-
-bool has_key(int key)
-{
- PDC_LOG(("has_key() - called: key %d\n", key));
-
- return (key >= KEY_MIN && key <= KEY_MAX);
-}
-
-#ifdef PDC_WIDE
-char *key_name(wchar_t c)
-{
- PDC_LOG(("key_name() - called\n"));
-
- return keyname((int)c);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/mouse.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/mouse.c
deleted file mode 100644
index 5071886..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/mouse.c
+++ /dev/null
@@ -1,429 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: mouse.c,v 1.45 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: mouse
-
- Synopsis:
- int mouse_set(unsigned long mbe);
- int mouse_on(unsigned long mbe);
- int mouse_off(unsigned long mbe);
- int request_mouse_pos(void);
- int map_button(unsigned long button);
- void wmouse_position(WINDOW *win, int *y, int *x);
- unsigned long getmouse(void);
- unsigned long getbmap(void);
-
- int mouseinterval(int wait);
- bool wenclose(const WINDOW *win, int y, int x);
- bool wmouse_trafo(const WINDOW *win, int *y, int *x, bool to_screen);
- bool mouse_trafo(int *y, int *x, bool to_screen);
- mmask_t mousemask(mmask_t mask, mmask_t *oldmask);
- int nc_getmouse(MEVENT *event);
- int ungetmouse(MEVENT *event);
-
- Description:
- As of PDCurses 3.0, there are two separate mouse interfaces: the
- classic interface, which is based on the undocumented Sys V
- mouse functions; and an ncurses-compatible interface. Both are
- active at all times, and you can mix and match functions from
- each, though it's not recommended. The ncurses interface is
- essentially an emulation layer built on top of the classic
- interface; it's here to allow easier porting of ncurses apps.
-
- The classic interface: mouse_set(), mouse_on(), mouse_off(),
- request_mouse_pos(), map_button(), wmouse_position(),
- getmouse(), and getbmap(). An application using this interface
- would start by calling mouse_set() or mouse_on() with a non-zero
- value, often ALL_MOUSE_EVENTS. Then it would check for a
- KEY_MOUSE return from getch(). If found, it would call
- request_mouse_pos() to get the current mouse status.
-
- mouse_set(), mouse_on() and mouse_off() are analagous to
- attrset(), attron() and attroff(). These functions set the
- mouse button events to trap. The button masks used in these
- functions are defined in curses.h and can be or'ed together.
- They are the group of masks starting with BUTTON1_RELEASED.
-
- request_mouse_pos() requests curses to fill in the Mouse_status
- structure with the current state of the mouse.
-
- map_button() enables the specified mouse action to activate the
- Soft Label Keys if the action occurs over the area of the screen
- where the Soft Label Keys are displayed. The mouse actions are
- defined in curses.h in the group that starts with BUTTON_RELEASED.
-
- wmouse_position() determines if the current mouse position is
- within the window passed as an argument. If the mouse is
- outside the current window, -1 is returned in the y and x
- arguments; otherwise the y and x coordinates of the mouse
- (relative to the top left corner of the window) are returned in
- y and x.
-
- getmouse() returns the current status of the trapped mouse
- buttons as set by mouse_set() or mouse_on().
-
- getbmap() returns the current status of the button action used
- to map a mouse action to the Soft Label Keys as set by the
- map_button() function.
-
- The ncurses interface: mouseinterval(), wenclose(),
- wmouse_trafo(), mouse_trafo(), mousemask(), nc_getmouse(), and
- ungetmouse(). A typical application using this interface would
- start by calling mousemask() with a non-zero value, often
- ALL_MOUSE_EVENTS. Then it would check for a KEY_MOUSE return
- from getch(). If found, it would call nc_getmouse() to get the
- current mouse status.
-
- mouseinterval() sets the timeout for a mouse click. On all
- current platforms, PDCurses receives mouse button press and
- release events, but must synthesize click events. It does this
- by checking whether a release event is queued up after a press
- event. If it gets a press event, and there are no more events
- waiting, it will wait for the timeout interval, then check again
- for a release. A press followed by a release is reported as
- BUTTON_CLICKED; otherwise it's passed through as BUTTON_PRESSED.
- The default timeout is 150ms; valid values are 0 (no clicks
- reported) through 1000ms. In x11, the timeout can also be set
- via the clickPeriod resource. The return value from
- mouseinterval() is the old timeout. To check the old value
- without setting a new one, call it with a parameter of -1. Note
- that although there's no classic equivalent for this function
- (apart from the clickPeriod resource), the value set applies in
- both interfaces.
-
- wenclose() reports whether the given screen-relative y, x
- coordinates fall within the given window.
-
- wmouse_trafo() converts between screen-relative and window-
- relative coordinates. A to_screen parameter of TRUE means to
- convert from window to screen; otherwise the reverse. The
- function returns FALSE if the coordinates aren't within the
- window, or if any of the parameters are NULL. The coordinates
- have been converted when the function returns TRUE.
-
- mouse_trafo() is the stdscr version of wmouse_trafo().
-
- mousemask() is nearly equivalent to mouse_set(), but instead of
- OK/ERR, it returns the value of the mask after setting it. (This
- isn't necessarily the same value passed in, since the mask could
- be altered on some platforms.) And if the second parameter is a
- non-null pointer, mousemask() stores the previous mask value
- there. Also, since the ncurses interface doesn't work with
- PDCurses' BUTTON_MOVED events, mousemask() filters them out.
-
- nc_getmouse() returns the current mouse status in an MEVENT
- struct. This is equivalent to ncurses' getmouse(), renamed to
- avoid conflict with PDCurses' getmouse(). But if you define
- NCURSES_MOUSE_VERSION (preferably as 2) before including
- curses.h, it defines getmouse() to nc_getmouse(), along with a
- few other redefintions needed for compatibility with ncurses
- code. nc_getmouse() calls request_mouse_pos(), which (not
- getmouse()) is the classic equivalent.
-
- ungetmouse() is the mouse equivalent of ungetch(). However,
- PDCurses doesn't maintain a queue of mouse events; only one can
- be pushed back, and it can overwrite or be overwritten by real
- mouse events.
-
- Portability X/Open BSD SYS V
- mouse_set - - 4.0
- mouse_on - - 4.0
- mouse_off - - 4.0
- request_mouse_pos - - 4.0
- map_button - - 4.0
- wmouse_position - - 4.0
- getmouse - - 4.0
- getbmap - - 4.0
- mouseinterval - - -
- wenclose - - -
- wmouse_trafo - - -
- mouse_trafo - - -
- mousemask - - -
- nc_getmouse - - -
- ungetmouse - - -
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-static bool ungot = FALSE;
-
-int mouse_set(unsigned long mbe)
-{
- PDC_LOG(("mouse_set() - called: event %x\n", mbe));
-
- SP->_trap_mbe = mbe;
- return PDC_mouse_set();
-}
-
-int mouse_on(unsigned long mbe)
-{
- PDC_LOG(("mouse_on() - called: event %x\n", mbe));
-
- SP->_trap_mbe |= mbe;
- return PDC_mouse_set();
-}
-
-int mouse_off(unsigned long mbe)
-{
- PDC_LOG(("mouse_off() - called: event %x\n", mbe));
-
- SP->_trap_mbe &= ~mbe;
- return PDC_mouse_set();
-}
-
-int map_button(unsigned long button)
-{
- PDC_LOG(("map_button() - called: button %x\n", button));
-
-/****************** this does nothing at the moment ***************/
- SP->_map_mbe_to_key = button;
-
- return OK;
-}
-
-int request_mouse_pos(void)
-{
- PDC_LOG(("request_mouse_pos() - called\n"));
-
- Mouse_status = pdc_mouse_status;
-
- return OK;
-}
-
-void wmouse_position(WINDOW *win, int *y, int *x)
-{
- PDC_LOG(("wmouse_position() - called\n"));
-
- if (win && wenclose(win, MOUSE_Y_POS, MOUSE_X_POS))
- {
- if (y)
- *y = MOUSE_Y_POS - win->_begy;
- if (x)
- *x = MOUSE_X_POS - win->_begx;
- }
- else
- {
- if (y)
- *y = -1;
- if (x)
- *x = -1;
- }
-}
-
-unsigned long getmouse(void)
-{
- PDC_LOG(("getmouse() - called\n"));
-
- return SP->_trap_mbe;
-}
-
-unsigned long getbmap(void)
-{
- PDC_LOG(("getbmap() - called\n"));
-
- return SP->_map_mbe_to_key;
-}
-
-/* ncurses mouse interface */
-
-int mouseinterval(int wait)
-{
- int old_wait;
-
- PDC_LOG(("mouseinterval() - called: %d\n", wait));
-
- old_wait = SP->mouse_wait;
-
- if (wait >= 0 && wait <= 1000)
- SP->mouse_wait = wait;
-
- return old_wait;
-}
-
-bool wenclose(const WINDOW *win, int y, int x)
-{
- PDC_LOG(("wenclose() - called: %p %d %d\n", win, y, x));
-
- return (win && y >= win->_begy && y < win->_begy + win->_maxy
- && x >= win->_begx && x < win->_begx + win->_maxx);
-}
-
-bool wmouse_trafo(const WINDOW *win, int *y, int *x, bool to_screen)
-{
- int newy, newx;
-
- PDC_LOG(("wmouse_trafo() - called\n"));
-
- if (!win || !y || !x)
- return FALSE;
-
- newy = *y;
- newx = *x;
-
- if (to_screen)
- {
- newy += win->_begy;
- newx += win->_begx;
-
- if (!wenclose(win, newy, newx))
- return FALSE;
- }
- else
- {
- if (wenclose(win, newy, newx))
- {
- newy -= win->_begy;
- newx -= win->_begx;
- }
- else
- return FALSE;
- }
-
- *y = newy;
- *x = newx;
-
- return TRUE;
-}
-
-bool mouse_trafo(int *y, int *x, bool to_screen)
-{
- PDC_LOG(("mouse_trafo() - called\n"));
-
- return wmouse_trafo(stdscr, y, x, to_screen);
-}
-
-mmask_t mousemask(mmask_t mask, mmask_t *oldmask)
-{
- PDC_LOG(("mousemask() - called\n"));
-
- if (oldmask)
- *oldmask = SP->_trap_mbe;
-
- /* The ncurses interface doesn't work with our move events, so
- filter them here */
-
- mask &= ~(BUTTON1_MOVED | BUTTON2_MOVED | BUTTON3_MOVED);
-
- mouse_set(mask);
-
- return SP->_trap_mbe;
-}
-
-int nc_getmouse(MEVENT *event)
-{
- int i;
- mmask_t bstate = 0;
-
- PDC_LOG(("nc_getmouse() - called\n"));
-
- if (!event)
- return ERR;
-
- ungot = FALSE;
-
- request_mouse_pos();
-
- event->id = 0;
-
- event->x = Mouse_status.x;
- event->y = Mouse_status.y;
- event->z = 0;
-
- for (i = 0; i < 3; i++)
- {
- if (Mouse_status.changes & (1 << i))
- {
- int shf = i * 5;
- short button = Mouse_status.button[i] & BUTTON_ACTION_MASK;
-
- if (button == BUTTON_RELEASED)
- bstate |= (BUTTON1_RELEASED << shf);
- else if (button == BUTTON_PRESSED)
- bstate |= (BUTTON1_PRESSED << shf);
- else if (button == BUTTON_CLICKED)
- bstate |= (BUTTON1_CLICKED << shf);
- else if (button == BUTTON_DOUBLE_CLICKED)
- bstate |= (BUTTON1_DOUBLE_CLICKED << shf);
-
- button = Mouse_status.button[i] & BUTTON_MODIFIER_MASK;
-
- if (button & PDC_BUTTON_SHIFT)
- bstate |= BUTTON_MODIFIER_SHIFT;
- if (button & PDC_BUTTON_CONTROL)
- bstate |= BUTTON_MODIFIER_CONTROL;
- if (button & PDC_BUTTON_ALT)
- bstate |= BUTTON_MODIFIER_ALT;
- }
- }
-
- if (MOUSE_WHEEL_UP)
- bstate |= BUTTON4_PRESSED;
- else if (MOUSE_WHEEL_DOWN)
- bstate |= BUTTON5_PRESSED;
-
- /* extra filter pass -- mainly for button modifiers */
-
- event->bstate = bstate & SP->_trap_mbe;
-
- return OK;
-}
-
-int ungetmouse(MEVENT *event)
-{
- int i;
- unsigned long bstate;
-
- PDC_LOG(("ungetmouse() - called\n"));
-
- if (!event || ungot)
- return ERR;
-
- ungot = TRUE;
-
- pdc_mouse_status.x = event->x;
- pdc_mouse_status.y = event->y;
-
- pdc_mouse_status.changes = 0;
- bstate = event->bstate;
-
- for (i = 0; i < 3; i++)
- {
- int shf = i * 5;
- short button = 0;
-
- if (bstate & ((BUTTON1_RELEASED | BUTTON1_PRESSED |
- BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED) << shf))
- {
- pdc_mouse_status.changes |= 1 << i;
-
- if (bstate & (BUTTON1_PRESSED << shf))
- button = BUTTON_PRESSED;
- if (bstate & (BUTTON1_CLICKED << shf))
- button = BUTTON_CLICKED;
- if (bstate & (BUTTON1_DOUBLE_CLICKED << shf))
- button = BUTTON_DOUBLE_CLICKED;
-
- if (bstate & BUTTON_MODIFIER_SHIFT)
- button |= PDC_BUTTON_SHIFT;
- if (bstate & BUTTON_MODIFIER_CONTROL)
- button |= PDC_BUTTON_CONTROL;
- if (bstate & BUTTON_MODIFIER_ALT)
- button |= PDC_BUTTON_ALT;
- }
-
- pdc_mouse_status.button[i] = button;
- }
-
- if (bstate & BUTTON4_PRESSED)
- pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_UP;
- else if (bstate & BUTTON5_PRESSED)
- pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_DOWN;
-
- return ungetch(KEY_MOUSE);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/move.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/move.c
deleted file mode 100644
index 30e5908..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/move.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: move.c,v 1.28 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: move
-
- Synopsis:
- int move(int y, int x);
- int wmove(WINDOW *win, int y, int x);
-
- Description:
- The cursor associated with the window is moved to the given
- location. This does not move the physical cursor of the
- terminal until refresh() is called. The position specified is
- relative to the upper left corner of the window, which is (0,0).
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- move Y Y Y
- wmove Y Y Y
-
-**man-end****************************************************************/
-
-int move(int y, int x)
-{
- PDC_LOG(("move() - called: y=%d x=%d\n", y, x));
-
- if (!stdscr || x < 0 || y < 0 || x >= stdscr->_maxx || y >= stdscr->_maxy)
- return ERR;
-
- stdscr->_curx = x;
- stdscr->_cury = y;
-
- return OK;
-}
-
-int wmove(WINDOW *win, int y, int x)
-{
- PDC_LOG(("wmove() - called: y=%d x=%d\n", y, x));
-
- if (!win || x < 0 || y < 0 || x >= win->_maxx || y >= win->_maxy)
- return ERR;
-
- win->_curx = x;
- win->_cury = y;
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/outopts.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/outopts.c
deleted file mode 100644
index 9b04eb9..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/outopts.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: outopts.c,v 1.39 2008/07/14 12:22:13 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: outopts
-
- Synopsis:
- int clearok(WINDOW *win, bool bf);
- int idlok(WINDOW *win, bool bf);
- void idcok(WINDOW *win, bool bf);
- void immedok(WINDOW *win, bool bf);
- int leaveok(WINDOW *win, bool bf);
- int setscrreg(int top, int bot);
- int wsetscrreg(WINDOW *win, int top, int bot);
- int scrollok(WINDOW *win, bool bf);
-
- int raw_output(bool bf);
-
- Description:
- With clearok(), if bf is TRUE, the next call to wrefresh() with
- this window will clear the screen completely and redraw the
- entire screen.
-
- immedok(), called with a second argument of TRUE, causes an
- automatic wrefresh() every time a change is made to the
- specified window.
-
- Normally, the hardware cursor is left at the location of the
- window being refreshed. leaveok() allows the cursor to be
- left wherever the update happens to leave it. It's useful
- for applications where the cursor is not used, since it reduces
- the need for cursor motions. If possible, the cursor is made
- invisible when this option is enabled.
-
- wsetscrreg() sets a scrolling region in a window; "top" and
- "bot" are the line numbers for the top and bottom margins. If
- this option and scrollok() are enabled, any attempt to move off
- the bottom margin will cause all lines in the scrolling region
- to scroll up one line. setscrreg() is the stdscr version.
-
- idlok() and idcok() do nothing in PDCurses, but are provided for
- compatibility with other curses implementations.
-
- raw_output() enables the output of raw characters using the
- standard *add* and *ins* curses functions (that is, it disables
- translation of control characters).
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- clearok Y Y Y
- idlok Y Y Y
- idcok Y - 4.0
- immedok Y - 4.0
- leaveok Y Y Y
- setscrreg Y Y Y
- wsetscrreg Y Y Y
- scrollok Y Y Y
- raw_output - - -
-
-**man-end****************************************************************/
-
-int clearok(WINDOW *win, bool bf)
-{
- PDC_LOG(("clearok() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_clear = bf;
-
- return OK;
-}
-
-int idlok(WINDOW *win, bool bf)
-{
- PDC_LOG(("idlok() - called\n"));
-
- return OK;
-}
-
-void idcok(WINDOW *win, bool bf)
-{
- PDC_LOG(("idcok() - called\n"));
-}
-
-void immedok(WINDOW *win, bool bf)
-{
- PDC_LOG(("immedok() - called\n"));
-
- if (win)
- win->_immed = bf;
-}
-
-int leaveok(WINDOW *win, bool bf)
-{
- PDC_LOG(("leaveok() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_leaveit = bf;
-
- curs_set(!bf);
-
- return OK;
-}
-
-int setscrreg(int top, int bottom)
-{
- PDC_LOG(("setscrreg() - called: top %d bottom %d\n", top, bottom));
-
- return wsetscrreg(stdscr, top, bottom);
-}
-
-int wsetscrreg(WINDOW *win, int top, int bottom)
-{
- PDC_LOG(("wsetscrreg() - called: top %d bottom %d\n", top, bottom));
-
- if (win && 0 <= top && top <= win->_cury &&
- win->_cury <= bottom && bottom < win->_maxy)
- {
- win->_tmarg = top;
- win->_bmarg = bottom;
-
- return OK;
- }
- else
- return ERR;
-}
-
-int scrollok(WINDOW *win, bool bf)
-{
- PDC_LOG(("scrollok() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_scroll = bf;
-
- return OK;
-}
-
-int raw_output(bool bf)
-{
- PDC_LOG(("raw_output() - called\n"));
-
- SP->raw_out = bf;
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/overlay.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/overlay.c
deleted file mode 100644
index d1e9f21..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/overlay.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: overlay.c,v 1.36 2008/07/14 12:35:23 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: overlay
-
- Synopsis:
- int overlay(const WINDOW *src_w, WINDOW *dst_w)
- int overwrite(const WINDOW *src_w, WINDOW *dst_w)
- int copywin(const WINDOW *src_w, WINDOW *dst_w, int src_tr,
- int src_tc, int dst_tr, int dst_tc, int dst_br,
- int dst_bc, bool overlay)
-
- Description:
- overlay() and overwrite() copy all the text from src_w into
- dst_w. The windows need not be the same size. Those characters
- in the source window that intersect with the destination window
- are copied, so that the characters appear in the same physical
- position on the screen. The difference between the two functions
- is that overlay() is non-destructive (blanks are not copied)
- while overwrite() is destructive (blanks are copied).
-
- copywin() is similar, but doesn't require that the two windows
- overlap. The arguments src_tc and src_tr specify the top left
- corner of the region to be copied. dst_tc, dst_tr, dst_br, and
- dst_bc specify the region within the destination window to copy
- to. The argument "overlay", if TRUE, indicates that the copy is
- done non-destructively (as in overlay()); blanks in the source
- window are not copied to the destination window. When overlay is
- FALSE, blanks are copied.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- overlay Y Y Y
- overwrite Y Y Y
- copywin Y - 3.0
-
-**man-end****************************************************************/
-
-/* Thanks to Andreas Otte <venn@@uni-paderborn.de> for the
- corrected overlay()/overwrite() behavior. */
-
-static int _copy_win(const WINDOW *src_w, WINDOW *dst_w, int src_tr,
- int src_tc, int src_br, int src_bc, int dst_tr,
- int dst_tc, bool _overlay)
-{
- int col, line, y1, fc, *minchng, *maxchng;
- chtype *w1ptr, *w2ptr;
-
- int lc = 0;
- int xdiff = src_bc - src_tc;
- int ydiff = src_br - src_tr;
-
- if (!src_w || !dst_w)
- return ERR;
-
- minchng = dst_w->_firstch;
- maxchng = dst_w->_lastch;
-
- for (y1 = 0; y1 < dst_tr; y1++)
- {
- minchng++;
- maxchng++;
- }
-
- for (line = 0; line < ydiff; line++)
- {
- w1ptr = src_w->_y[line + src_tr] + src_tc;
- w2ptr = dst_w->_y[line + dst_tr] + dst_tc;
-
- fc = _NO_CHANGE;
-
- for (col = 0; col < xdiff; col++)
- {
- if ((*w1ptr) != (*w2ptr) &&
- !((*w1ptr & A_CHARTEXT) == ' ' && _overlay))
- {
- *w2ptr = *w1ptr;
-
- if (fc == _NO_CHANGE)
- fc = col + dst_tc;
-
- lc = col + dst_tc;
- }
-
- w1ptr++;
- w2ptr++;
- }
-
- if (*minchng == _NO_CHANGE)
- {
- *minchng = fc;
- *maxchng = lc;
- }
- else if (fc != _NO_CHANGE)
- {
- if (fc < *minchng)
- *minchng = fc;
- if (lc > *maxchng)
- *maxchng = lc;
- }
-
- minchng++;
- maxchng++;
- }
-
- return OK;
-}
-
-int overlay(const WINDOW *src_w, WINDOW *dst_w)
-{
- int first_line, first_col, last_line, last_col;
- int src_start_x, src_start_y, dst_start_x, dst_start_y;
- int xdiff, ydiff;
-
- PDC_LOG(("overlay() - called\n"));
-
- if (!src_w || !dst_w)
- return ERR;
-
- first_col = max(dst_w->_begx, src_w->_begx);
- first_line = max(dst_w->_begy, src_w->_begy);
-
- last_col = min(src_w->_begx + src_w->_maxx, dst_w->_begx + dst_w->_maxx);
- last_line = min(src_w->_begy + src_w->_maxy, dst_w->_begy + dst_w->_maxy);
-
- /* determine the overlapping region of the two windows in real
- coordinates */
-
- /* if no overlapping region, do nothing */
-
- if ((last_col < first_col) || (last_line < first_line))
- return OK;
-
- /* size of overlapping region */
-
- xdiff = last_col - first_col;
- ydiff = last_line - first_line;
-
- if (src_w->_begx <= dst_w->_begx)
- {
- src_start_x = dst_w->_begx - src_w->_begx;
- dst_start_x = 0;
- }
- else
- {
- dst_start_x = src_w->_begx - dst_w->_begx;
- src_start_x = 0;
- }
-
- if (src_w->_begy <= dst_w->_begy)
- {
- src_start_y = dst_w->_begy - src_w->_begy;
- dst_start_y = 0;
- }
- else
- {
- dst_start_y = src_w->_begy - dst_w->_begy;
- src_start_y = 0;
- }
-
- return _copy_win(src_w, dst_w, src_start_y, src_start_x,
- src_start_y + ydiff, src_start_x + xdiff,
- dst_start_y, dst_start_x, TRUE);
-}
-
-int overwrite(const WINDOW *src_w, WINDOW *dst_w)
-{
- int first_line, first_col, last_line, last_col;
- int src_start_x, src_start_y, dst_start_x, dst_start_y;
- int xdiff, ydiff;
-
- PDC_LOG(("overwrite() - called\n"));
-
- if (!src_w || !dst_w)
- return ERR;
-
- first_col = max(dst_w->_begx, src_w->_begx);
- first_line = max(dst_w->_begy, src_w->_begy);
-
- last_col = min(src_w->_begx + src_w->_maxx, dst_w->_begx + dst_w->_maxx);
- last_line = min(src_w->_begy + src_w->_maxy, dst_w->_begy + dst_w->_maxy);
-
- /* determine the overlapping region of the two windows in real
- coordinates */
-
- /* if no overlapping region, do nothing */
-
- if ((last_col < first_col) || (last_line < first_line))
- return OK;
-
- /* size of overlapping region */
-
- xdiff = last_col - first_col;
- ydiff = last_line - first_line;
-
- if (src_w->_begx <= dst_w->_begx)
- {
- src_start_x = dst_w->_begx - src_w->_begx;
- dst_start_x = 0;
- }
- else
- {
- dst_start_x = src_w->_begx - dst_w->_begx;
- src_start_x = 0;
- }
-
- if (src_w->_begy <= dst_w->_begy)
- {
- src_start_y = dst_w->_begy - src_w->_begy;
- dst_start_y = 0;
- }
- else
- {
- dst_start_y = src_w->_begy - dst_w->_begy;
- src_start_y = 0;
- }
-
- return _copy_win(src_w, dst_w, src_start_y, src_start_x,
- src_start_y + ydiff, src_start_x + xdiff,
- dst_start_y, dst_start_x, FALSE);
-}
-
-int copywin(const WINDOW *src_w, WINDOW *dst_w, int src_tr, int src_tc,
- int dst_tr, int dst_tc, int dst_br, int dst_bc, int _overlay)
-{
- int src_end_x, src_end_y;
- int src_rows, src_cols, dst_rows, dst_cols;
- int min_rows, min_cols;
-
- PDC_LOG(("copywin() - called\n"));
-
- if (!src_w || !dst_w || dst_w == curscr || dst_br > dst_w->_maxy
- || dst_bc > dst_w->_maxx || dst_tr < 0 || dst_tc < 0)
- return ERR;
-
- src_rows = src_w->_maxy - src_tr;
- src_cols = src_w->_maxx - src_tc;
- dst_rows = dst_br - dst_tr + 1;
- dst_cols = dst_bc - dst_tc + 1;
-
- min_rows = min(src_rows, dst_rows);
- min_cols = min(src_cols, dst_cols);
-
- src_end_y = src_tr + min_rows;
- src_end_x = src_tc + min_cols;
-
- return _copy_win(src_w, dst_w, src_tr, src_tc, src_end_y, src_end_x,
- dst_tr, dst_tc, _overlay);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/pad.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/pad.c
deleted file mode 100644
index d4cad07..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/pad.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: pad.c,v 1.50 2008/07/14 12:22:13 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pad
-
- Synopsis:
- WINDOW *newpad(int nlines, int ncols);
- WINDOW *subpad(WINDOW *orig, int nlines, int ncols,
- int begy, int begx);
- int prefresh(WINDOW *win, int py, int px, int sy1, int sx1,
- int sy2, int sx2);
- int pnoutrefresh(WINDOW *w, int py, int px, int sy1, int sx1,
- int sy2, int sx2);
- int pechochar(WINDOW *pad, chtype ch);
- int pecho_wchar(WINDOW *pad, const cchar_t *wch);
-
- Description:
- A pad is a special kind of window, which is not restricted by
- the screen size, and is not necessarily associated with a
- particular part of the screen. You can use a pad when you need
- a large window, and only a part of the window will be on the
- screen at one time. Pads are not refreshed automatically (e.g.,
- from scrolling or echoing of input). You can't call wrefresh()
- with a pad as an argument; use prefresh() or pnoutrefresh()
- instead. Note that these routines require additional parameters
- to specify the part of the pad to be displayed, and the location
- to use on the screen.
-
- newpad() creates a new pad data structure.
-
- subpad() creates a new sub-pad within a pad, at position (begy,
- begx), with dimensions of nlines lines and ncols columns. This
- position is relative to the pad, and not to the screen as with
- subwin. Changes to either the parent pad or sub-pad will affect
- both. When using sub-pads, you may need to call touchwin()
- before calling prefresh().
-
- pnoutrefresh() copies the specified pad to the virtual screen.
-
- prefresh() calls pnoutrefresh(), followed by doupdate().
-
- These routines are analogous to wnoutrefresh() and wrefresh().
- (py, px) specifies the upper left corner of the part of the pad
- to be displayed; (sy1, sx1) and (sy2, sx2) describe the screen
- rectangle that will contain the selected part of the pad.
-
- pechochar() is functionally equivalent to addch() followed by
- a call to prefresh(), with the last-used coordinates and
- dimensions. pecho_wchar() is the wide-character version.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- newpad Y - Y
- subpad Y - Y
- prefresh Y - Y
- pnoutrefresh Y - Y
- pechochar Y - 3.0
- pecho_wchar Y
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-/* save values for pechochar() */
-
-static int save_pminrow, save_pmincol;
-static int save_sminrow, save_smincol, save_smaxrow, save_smaxcol;
-
-WINDOW *newpad(int nlines, int ncols)
-{
- WINDOW *win;
-
- PDC_LOG(("newpad() - called: lines=%d cols=%d\n", nlines, ncols));
-
- if ( !(win = PDC_makenew(nlines, ncols, -1, -1))
- || !(win = PDC_makelines(win)) )
- return (WINDOW *)NULL;
-
- werase(win);
-
- win->_flags = _PAD;
-
- /* save default values in case pechochar() is the first call to
- prefresh(). */
-
- save_pminrow = 0;
- save_pmincol = 0;
- save_sminrow = 0;
- save_smincol = 0;
- save_smaxrow = min(LINES, nlines) - 1;
- save_smaxcol = min(COLS, ncols) - 1;
-
- return win;
-}
-
-WINDOW *subpad(WINDOW *orig, int nlines, int ncols, int begy, int begx)
-{
- WINDOW *win;
- int i;
- int j = begy;
- int k = begx;
-
- PDC_LOG(("subpad() - called: lines=%d cols=%d begy=%d begx=%d\n",
- nlines, ncols, begy, begx));
-
- if (!orig || !(orig->_flags & _PAD))
- return (WINDOW *)NULL;
-
- /* make sure window fits inside the original one */
-
- if ((begy < orig->_begy) || (begx < orig->_begx) ||
- (begy + nlines) > (orig->_begy + orig->_maxy) ||
- (begx + ncols) > (orig->_begx + orig->_maxx))
- return (WINDOW *)NULL;
-
- if (!nlines)
- nlines = orig->_maxy - 1 - j;
-
- if (!ncols)
- ncols = orig->_maxx - 1 - k;
-
- if ( !(win = PDC_makenew(nlines, ncols, begy, begx)) )
- return (WINDOW *)NULL;
-
- /* initialize window variables */
-
- win->_attrs = orig->_attrs;
- win->_leaveit = orig->_leaveit;
- win->_scroll = orig->_scroll;
- win->_nodelay = orig->_nodelay;
- win->_use_keypad = orig->_use_keypad;
- win->_parent = orig;
-
- for (i = 0; i < nlines; i++)
- win->_y[i] = (orig->_y[j++]) + k;
-
- win->_flags = _SUBPAD;
-
- /* save default values in case pechochar() is the first call
- to prefresh(). */
-
- save_pminrow = 0;
- save_pmincol = 0;
- save_sminrow = 0;
- save_smincol = 0;
- save_smaxrow = min(LINES, nlines) - 1;
- save_smaxcol = min(COLS, ncols) - 1;
-
- return win;
-}
-
-int prefresh(WINDOW *win, int py, int px, int sy1, int sx1, int sy2, int sx2)
-{
- PDC_LOG(("prefresh() - called\n"));
-
- if (pnoutrefresh(win, py, px, sy1, sx1, sy2, sx2) == ERR)
- return ERR;
-
- doupdate();
- return OK;
-}
-
-int pnoutrefresh(WINDOW *w, int py, int px, int sy1, int sx1, int sy2, int sx2)
-{
- int num_cols;
- int sline = sy1;
- int pline = py;
-
- PDC_LOG(("pnoutrefresh() - called\n"));
-
- if (!w || !(w->_flags & (_PAD|_SUBPAD)) || (sy2 >= LINES) || (sy2 >= COLS))
- return ERR;
-
- if (py < 0)
- py = 0;
- if (px < 0)
- px = 0;
- if (sy1 < 0)
- sy1 = 0;
- if (sx1 < 0)
- sx1 = 0;
-
- if (sy2 < sy1 || sx2 < sx1)
- return ERR;
-
- num_cols = min((sx2 - sx1 + 1), (w->_maxx - px));
-
- while (sline <= sy2)
- {
- if (pline < w->_maxy)
- {
- memcpy(curscr->_y[sline] + sx1, w->_y[pline] + px,
- num_cols * sizeof(chtype));
-
- if ((curscr->_firstch[sline] == _NO_CHANGE)
- || (curscr->_firstch[sline] > sx1))
- curscr->_firstch[sline] = sx1;
-
- if (sx2 > curscr->_lastch[sline])
- curscr->_lastch[sline] = sx2;
-
- w->_firstch[pline] = _NO_CHANGE; /* updated now */
- w->_lastch[pline] = _NO_CHANGE; /* updated now */
- }
-
- sline++;
- pline++;
- }
-
- if (w->_clear)
- {
- w->_clear = FALSE;
- curscr->_clear = TRUE;
- }
-
- /* position the cursor to the pad's current position if possible --
- is the pad current position going to end up displayed? if not,
- then don't move the cursor; if so, move it to the correct place */
-
- if (!w->_leaveit && w->_cury >= py && w->_curx >= px &&
- w->_cury <= py + (sy2 - sy1) && w->_curx <= px + (sx2 - sx1))
- {
- curscr->_cury = (w->_cury - py) + sy1;
- curscr->_curx = (w->_curx - px) + sx1;
- }
-
- return OK;
-}
-
-int pechochar(WINDOW *pad, chtype ch)
-{
- PDC_LOG(("pechochar() - called\n"));
-
- if (waddch(pad, ch) == ERR)
- return ERR;
-
- return prefresh(pad, save_pminrow, save_pmincol, save_sminrow,
- save_smincol, save_smaxrow, save_smaxcol);
-}
-
-#ifdef PDC_WIDE
-int pecho_wchar(WINDOW *pad, const cchar_t *wch)
-{
- PDC_LOG(("pecho_wchar() - called\n"));
-
- if (!wch || (waddch(pad, *wch) == ERR))
- return ERR;
-
- return prefresh(pad, save_pminrow, save_pmincol, save_sminrow,
- save_smincol, save_smaxrow, save_smaxcol);
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/panel.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/panel.c
deleted file mode 100644
index 87b987d..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/panel.c
+++ /dev/null
@@ -1,630 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: panel.c,v 1.8 2008/07/14 12:35:23 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: panel
-
- Synopsis:
- int bottom_panel(PANEL *pan);
- int del_panel(PANEL *pan);
- int hide_panel(PANEL *pan);
- int move_panel(PANEL *pan, int starty, int startx);
- PANEL *new_panel(WINDOW *win);
- PANEL *panel_above(const PANEL *pan);
- PANEL *panel_below(const PANEL *pan);
- int panel_hidden(const PANEL *pan);
- const void *panel_userptr(const PANEL *pan);
- WINDOW *panel_window(const PANEL *pan);
- int replace_panel(PANEL *pan, WINDOW *win);
- int set_panel_userptr(PANEL *pan, const void *uptr);
- int show_panel(PANEL *pan);
- int top_panel(PANEL *pan);
- void update_panels(void);
-
- Description:
- The panel library is built using the curses library, and any
- program using panels routines must call one of the curses
- initialization routines such as initscr(). A program using these
- routines must be linked with the panels and curses libraries.
- The header <panel.h> includes the header <curses.h>.
-
- The panels package gives the applications programmer a way to
- have depth relationships between curses windows; a curses window
- is associated with every panel. The panels routines allow curses
- windows to overlap without making visible the overlapped
- portions of underlying windows. The initial curses window,
- stdscr, lies beneath all panels. The set of currently visible
- panels is the 'deck' of panels.
-
- The panels package allows the applications programmer to create
- panels, fetch and set their associated windows, shuffle panels
- in the deck, and manipulate panels in other ways.
-
- bottom_panel() places pan at the bottom of the deck. The size,
- location and contents of the panel are unchanged.
-
- del_panel() deletes pan, but not its associated winwow.
-
- hide_panel() removes a panel from the deck and thus hides it
- from view.
-
- move_panel() moves the curses window associated with pan, so
- that its upper lefthand corner is at the supplied coordinates.
- (Do not use mvwin() on the window.)
-
- new_panel() creates a new panel associated with win and returns
- the panel pointer. The new panel is placed at the top of the
- deck.
-
- panel_above() returns a pointer to the panel in the deck above
- pan, or NULL if pan is the top panel. If the value of pan passed
- is NULL, this function returns a pointer to the bottom panel in
- the deck.
-
- panel_below() returns a pointer to the panel in the deck below
- pan, or NULL if pan is the bottom panel. If the value of pan
- passed is NULL, this function returns a pointer to the top panel
- in the deck.
-
- panel_hidden() returns OK if pan is hidden and ERR if it is not.
-
- panel_userptr() - Each panel has a user pointer available for
- maintaining relevant information. This function returns a
- pointer to that information previously set up by
- set_panel_userptr().
-
- panel_window() returns a pointer to the curses window associated
- with the panel.
-
- replace_panel() replaces the current window of pan with win.
-
- set_panel_userptr() - Each panel has a user pointer available
- for maintaining relevant information. This function sets the
- value of that information.
-
- show_panel() makes a previously hidden panel visible and places
- it back in the deck on top.
-
- top_panel() places pan on the top of the deck. The size,
- location and contents of the panel are unchanged.
-
- update_panels() refreshes the virtual screen to reflect the
- depth relationships between the panels in the deck. The user
- must use doupdate() to refresh the physical screen.
-
- Return Value:
- Each routine that returns a pointer to an object returns NULL if
- an error occurs. Each panel routine that returns an integer,
- returns OK if it executes successfully and ERR if it does not.
-
- Portability X/Open BSD SYS V
- bottom_panel - - Y
- del_panel - - Y
- hide_panel - - Y
- move_panel - - Y
- new_panel - - Y
- panel_above - - Y
- panel_below - - Y
- panel_hidden - - Y
- panel_userptr - - Y
- panel_window - - Y
- replace_panel - - Y
- set_panel_userptr - - Y
- show_panel - - Y
- top_panel - - Y
- update_panels - - Y
-
- Credits:
- Original Author - Warren Tucker <wht at n4hgf.mt-park.ga.us>
-
-**man-end****************************************************************/
-
-#include <panel.h>
-#include <stdlib.h>
-
-PANEL *_bottom_panel = (PANEL *)0;
-PANEL *_top_panel = (PANEL *)0;
-PANEL _stdscr_pseudo_panel = { (WINDOW *)0 };
-
-#ifdef PANEL_DEBUG
-
-static void dPanel(char *text, PANEL *pan)
-{
- PDC_LOG(("%s id=%s b=%s a=%s y=%d x=%d", text, pan->user,
- pan->below ? pan->below->user : "--",
- pan->above ? pan->above->user : "--",
- pan->wstarty, pan->wstartx));
-}
-
-static void dStack(char *fmt, int num, PANEL *pan)
-{
- char s80[80];
-
- sprintf(s80, fmt, num, pan);
- PDC_LOG(("%s b=%s t=%s", s80, _bottom_panel ? _bottom_panel->user : "--",
- _top_panel ? _top_panel->user : "--"));
-
- if (pan)
- PDC_LOG(("pan id=%s", pan->user));
-
- pan = _bottom_panel;
-
- while (pan)
- {
- dPanel("stk", pan);
- pan = pan->above;
- }
-}
-
-/* debugging hook for wnoutrefresh */
-
-static void Wnoutrefresh(PANEL *pan)
-{
- dPanel("wnoutrefresh", pan);
- wnoutrefresh(pan->win);
-}
-
-static void Touchpan(PANEL *pan)
-{
- dPanel("Touchpan", pan);
- touchwin(pan->win);
-}
-
-static void Touchline(PANEL *pan, int start, int count)
-{
- char s80[80];
-
- sprintf(s80, "Touchline s=%d c=%d", start, count);
- dPanel(s80, pan);
- touchline(pan->win, start, count);
-}
-
-#else /* PANEL_DEBUG */
-
-#define dPanel(text, pan)
-#define dStack(fmt, num, pan)
-#define Wnoutrefresh(pan) wnoutrefresh((pan)->win)
-#define Touchpan(pan) touchwin((pan)->win)
-#define Touchline(pan, start, count) touchline((pan)->win, start, count)
-
-#endif /* PANEL_DEBUG */
-
-static bool _panels_overlapped(PANEL *pan1, PANEL *pan2)
-{
- if (!pan1 || !pan2)
- return FALSE;
-
- return ((pan1->wstarty >= pan2->wstarty && pan1->wstarty < pan2->wendy)
- || (pan2->wstarty >= pan1->wstarty && pan2->wstarty < pan1->wendy))
- && ((pan1->wstartx >= pan2->wstartx && pan1->wstartx < pan2->wendx)
- || (pan2->wstartx >= pan1->wstartx && pan2->wstartx < pan1->wendx));
-}
-
-static void _free_obscure(PANEL *pan)
-{
- PANELOBS *tobs = pan->obscure; /* "this" one */
- PANELOBS *nobs; /* "next" one */
-
- while (tobs)
- {
- nobs = tobs->above;
- free((char *)tobs);
- tobs = nobs;
- }
- pan->obscure = (PANELOBS *)0;
-}
-
-static void _override(PANEL *pan, int show)
-{
- int y;
- PANEL *pan2;
- PANELOBS *tobs = pan->obscure; /* "this" one */
-
- if (show == 1)
- Touchpan(pan);
- else if (!show)
- {
- Touchpan(pan);
- Touchpan(&_stdscr_pseudo_panel);
- }
- else if (show == -1)
- while (tobs && (tobs->pan != pan))
- tobs = tobs->above;
-
- while (tobs)
- {
- if ((pan2 = tobs->pan) != pan)
- for (y = pan->wstarty; y < pan->wendy; y++)
- if ((y >= pan2->wstarty) && (y < pan2->wendy) &&
- ((is_linetouched(pan->win, y - pan->wstarty)) ||
- (is_linetouched(stdscr, y))))
- Touchline(pan2, y - pan2->wstarty, 1);
-
- tobs = tobs->above;
- }
-}
-
-static void _calculate_obscure(void)
-{
- PANEL *pan, *pan2;
- PANELOBS *tobs; /* "this" one */
- PANELOBS *lobs; /* last one */
-
- pan = _bottom_panel;
-
- while (pan)
- {
- if (pan->obscure)
- _free_obscure(pan);
-
- lobs = (PANELOBS *)0;
- pan2 = _bottom_panel;
-
- while (pan2)
- {
- if (_panels_overlapped(pan, pan2))
- {
- if ((tobs = malloc(sizeof(PANELOBS))) == NULL)
- return;
-
- tobs->pan = pan2;
- dPanel("obscured", pan2);
- tobs->above = (PANELOBS *)0;
-
- if (lobs)
- lobs->above = tobs;
- else
- pan->obscure = tobs;
-
- lobs = tobs;
- }
-
- pan2 = pan2->above;
- }
-
- _override(pan, 1);
- pan = pan->above;
- }
-}
-
-/* check to see if panel is in the stack */
-
-static bool _panel_is_linked(const PANEL *pan)
-{
- PANEL *pan2 = _bottom_panel;
-
- while (pan2)
- {
- if (pan2 == pan)
- return TRUE;
-
- pan2 = pan2->above;
- }
-
- return FALSE;
-}
-
-/* link panel into stack at top */
-
-static void _panel_link_top(PANEL *pan)
-{
-#ifdef PANEL_DEBUG
- dStack("<lt%d>", 1, pan);
- if (_panel_is_linked(pan))
- return;
-#endif
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
-
- if (_top_panel)
- {
- _top_panel->above = pan;
- pan->below = _top_panel;
- }
-
- _top_panel = pan;
-
- if (!_bottom_panel)
- _bottom_panel = pan;
-
- _calculate_obscure();
- dStack("<lt%d>", 9, pan);
-}
-
-/* link panel into stack at bottom */
-
-static void _panel_link_bottom(PANEL *pan)
-{
-#ifdef PANEL_DEBUG
- dStack("<lb%d>", 1, pan);
- if (_panel_is_linked(pan))
- return;
-#endif
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
-
- if (_bottom_panel)
- {
- _bottom_panel->below = pan;
- pan->above = _bottom_panel;
- }
-
- _bottom_panel = pan;
-
- if (!_top_panel)
- _top_panel = pan;
-
- _calculate_obscure();
- dStack("<lb%d>", 9, pan);
-}
-
-static void _panel_unlink(PANEL *pan)
-{
- PANEL *prev;
- PANEL *next;
-
-#ifdef PANEL_DEBUG
- dStack("<u%d>", 1, pan);
- if (!_panel_is_linked(pan))
- return;
-#endif
- _override(pan, 0);
- _free_obscure(pan);
-
- prev = pan->below;
- next = pan->above;
-
- /* if non-zero, we will not update the list head */
-
- if (prev)
- {
- prev->above = next;
- if(next)
- next->below = prev;
- }
- else if (next)
- next->below = prev;
-
- if (pan == _bottom_panel)
- _bottom_panel = next;
-
- if (pan == _top_panel)
- _top_panel = prev;
-
- _calculate_obscure();
-
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
- dStack("<u%d>", 9, pan);
-
-}
-
-/************************************************************************
- * The following are the public functions for the panels library. *
- ************************************************************************/
-
-int bottom_panel(PANEL *pan)
-{
- if (!pan)
- return ERR;
-
- if (pan == _bottom_panel)
- return OK;
-
- if (_panel_is_linked(pan))
- hide_panel(pan);
-
- _panel_link_bottom(pan);
-
- return OK;
-}
-
-int del_panel(PANEL *pan)
-{
- if (pan)
- {
- if (_panel_is_linked(pan))
- hide_panel(pan);
-
- free((char *)pan);
- return OK;
- }
-
- return ERR;
-}
-
-int hide_panel(PANEL *pan)
-{
- if (!pan)
- return ERR;
-
- if (!_panel_is_linked(pan))
- {
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
- return ERR;
- }
-
- _panel_unlink(pan);
-
- return OK;
-}
-
-int move_panel(PANEL *pan, int starty, int startx)
-{
- WINDOW *win;
- int maxy, maxx;
-
- if (!pan)
- return ERR;
-
- if (_panel_is_linked(pan))
- _override(pan, 0);
-
- win = pan->win;
-
- if (mvwin(win, starty, startx) == ERR)
- return ERR;
-
- getbegyx(win, pan->wstarty, pan->wstartx);
- getmaxyx(win, maxy, maxx);
- pan->wendy = pan->wstarty + maxy;
- pan->wendx = pan->wstartx + maxx;
-
- if (_panel_is_linked(pan))
- _calculate_obscure();
-
- return OK;
-}
-
-PANEL *new_panel(WINDOW *win)
-{
- PANEL *pan = malloc(sizeof(PANEL));
-
- if (!_stdscr_pseudo_panel.win)
- {
- _stdscr_pseudo_panel.win = stdscr;
- _stdscr_pseudo_panel.wstarty = 0;
- _stdscr_pseudo_panel.wstartx = 0;
- _stdscr_pseudo_panel.wendy = LINES;
- _stdscr_pseudo_panel.wendx = COLS;
- _stdscr_pseudo_panel.user = "stdscr";
- _stdscr_pseudo_panel.obscure = (PANELOBS *)0;
- }
-
- if (pan)
- {
- int maxy, maxx;
-
- pan->win = win;
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
- getbegyx(win, pan->wstarty, pan->wstartx);
- getmaxyx(win, maxy, maxx);
- pan->wendy = pan->wstarty + maxy;
- pan->wendx = pan->wstartx + maxx;
-#ifdef PANEL_DEBUG
- pan->user = "new";
-#else
- pan->user = (char *)0;
-#endif
- pan->obscure = (PANELOBS *)0;
- show_panel(pan);
- }
-
- return pan;
-}
-
-PANEL *panel_above(const PANEL *pan)
-{
- return pan ? pan->above : _bottom_panel;
-}
-
-PANEL *panel_below(const PANEL *pan)
-{
- return pan ? pan->below : _top_panel;
-}
-
-int panel_hidden(const PANEL *pan)
-{
- if (!pan)
- return ERR;
-
- return _panel_is_linked(pan) ? ERR : OK;
-}
-
-const void *panel_userptr(const PANEL *pan)
-{
- return pan ? pan->user : NULL;
-}
-
-WINDOW *panel_window(const PANEL *pan)
-{
- PDC_LOG(("panel_window() - called\n"));
-
- return pan->win;
-}
-
-int replace_panel(PANEL *pan, WINDOW *win)
-{
- int maxy, maxx;
-
- if (!pan)
- return ERR;
-
- if (_panel_is_linked(pan))
- _override(pan, 0);
-
- pan->win = win;
- getbegyx(win, pan->wstarty, pan->wstartx);
- getmaxyx(win, maxy, maxx);
- pan->wendy = pan->wstarty + maxy;
- pan->wendx = pan->wstartx + maxx;
-
- if (_panel_is_linked(pan))
- _calculate_obscure();
-
- return OK;
-}
-
-int set_panel_userptr(PANEL *pan, const void *uptr)
-{
- if (!pan)
- return ERR;
-
- pan->user = uptr;
- return OK;
-}
-
-int show_panel(PANEL *pan)
-{
- if (!pan)
- return ERR;
-
- if (pan == _top_panel)
- return OK;
-
- if (_panel_is_linked(pan))
- hide_panel(pan);
-
- _panel_link_top(pan);
-
- return OK;
-}
-
-int top_panel(PANEL *pan)
-{
- return show_panel(pan);
-}
-
-void update_panels(void)
-{
- PANEL *pan;
-
- PDC_LOG(("update_panels() - called\n"));
-
- pan = _bottom_panel;
-
- while (pan)
- {
- _override(pan, -1);
- pan = pan->above;
- }
-
- if (is_wintouched(stdscr))
- Wnoutrefresh(&_stdscr_pseudo_panel);
-
- pan = _bottom_panel;
-
- while (pan)
- {
- if (is_wintouched(pan->win) || !pan->above)
- Wnoutrefresh(pan);
-
- pan = pan->above;
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/printw.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/printw.c
deleted file mode 100644
index ac67f91..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/printw.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: printw.c,v 1.40 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: printw
-
- Synopsis:
- int printw(const char *fmt, ...);
- int wprintw(WINDOW *win, const char *fmt, ...);
- int mvprintw(int y, int x, const char *fmt, ...);
- int mvwprintw(WINDOW *win, int y, int x, const char *fmt,...);
- int vwprintw(WINDOW *win, const char *fmt, va_list varglist);
- int vw_printw(WINDOW *win, const char *fmt, va_list varglist);
-
- Description:
- The printw() functions add a formatted string to the window at
- the current or specified cursor position. The format strings are
- the same as used in the standard C library's printf(). (printw()
- can be used as a drop-in replacement for printf().)
-
- Return Value:
- All functions return the number of characters printed, or
- ERR on error.
-
- Portability X/Open BSD SYS V
- printw Y Y Y
- wprintw Y Y Y
- mvprintw Y Y Y
- mvwprintw Y Y Y
- vwprintw Y - 4.0
- vw_printw Y
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-int vwprintw(WINDOW *win, const char *fmt, va_list varglist)
-{
- char printbuf[513];
- int len;
-
- PDC_LOG(("vwprintw() - called\n"));
-
-#ifdef HAVE_VSNPRINTF
- len = vsnprintf(printbuf, 512, fmt, varglist);
-#else
- len = vsprintf(printbuf, fmt, varglist);
-#endif
- return (waddstr(win, printbuf) == ERR) ? ERR : len;
-}
-
-int printw(const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("printw() - called\n"));
-
- va_start(args, fmt);
- retval = vwprintw(stdscr, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int wprintw(WINDOW *win, const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("wprintw() - called\n"));
-
- va_start(args, fmt);
- retval = vwprintw(win, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int mvprintw(int y, int x, const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("mvprintw() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- va_start(args, fmt);
- retval = vwprintw(stdscr, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("mvwprintw() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- va_start(args, fmt);
- retval = vwprintw(win, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int vw_printw(WINDOW *win, const char *fmt, va_list varglist)
-{
- PDC_LOG(("vw_printw() - called\n"));
-
- return vwprintw(win, fmt, varglist);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/refresh.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/refresh.c
deleted file mode 100644
index da4bb76..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/refresh.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: refresh.c,v 1.56 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: refresh
-
- Synopsis:
- int refresh(void);
- int wrefresh(WINDOW *win);
- int wnoutrefresh(WINDOW *win);
- int doupdate(void);
- int redrawwin(WINDOW *win);
- int wredrawln(WINDOW *win, int beg_line, int num_lines);
-
- Description:
- wrefresh() copies the named window to the physical terminal
- screen, taking into account what is already there in order to
- optimize cursor movement. refresh() does the same, using stdscr.
- These routines must be called to get any output on the terminal,
- as other routines only manipulate data structures. Unless
- leaveok() has been enabled, the physical cursor of the terminal
- is left at the location of the window's cursor.
-
- wnoutrefresh() and doupdate() allow multiple updates with more
- efficiency than wrefresh() alone. wrefresh() works by first
- calling wnoutrefresh(), which copies the named window to the
- virtual screen. It then calls doupdate(), which compares the
- virtual screen to the physical screen and does the actual
- update. A series of calls to wrefresh() will result in
- alternating calls to wnoutrefresh() and doupdate(), causing
- several bursts of output to the screen. By first calling
- wnoutrefresh() for each window, it is then possible to call
- doupdate() only once.
-
- In PDCurses, redrawwin() is equivalent to touchwin(), and
- wredrawln() is the same as touchline(). In some other curses
- implementations, there's a subtle distinction, but it has no
- meaning in PDCurses.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- refresh Y Y Y
- wrefresh Y Y Y
- wnoutrefresh Y Y Y
- doupdate Y Y Y
- redrawwin Y - 4.0
- wredrawln Y - 4.0
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-int wnoutrefresh(WINDOW *win)
-{
- int begy, begx; /* window's place on screen */
- int i, j;
-
- PDC_LOG(("wnoutrefresh() - called: win=%p\n", win));
-
- if ( !win || (win->_flags & (_PAD|_SUBPAD)) )
- return ERR;
-
- begy = win->_begy;
- begx = win->_begx;
-
- for (i = 0, j = begy; i < win->_maxy; i++, j++)
- {
- if (win->_firstch[i] != _NO_CHANGE)
- {
- chtype *src = win->_y[i];
- chtype *dest = curscr->_y[j] + begx;
-
- int first = win->_firstch[i]; /* first changed */
- int last = win->_lastch[i]; /* last changed */
-
- /* ignore areas on the outside that are marked as changed,
- but really aren't */
-
- while (first <= last && src[first] == dest[first])
- first++;
-
- while (last >= first && src[last] == dest[last])
- last--;
-
- /* if any have really changed... */
-
- if (first <= last)
- {
- memcpy(dest + first, src + first,
- (last - first + 1) * sizeof(chtype));
-
- first += begx;
- last += begx;
-
- if (first < curscr->_firstch[j] ||
- curscr->_firstch[j] == _NO_CHANGE)
- curscr->_firstch[j] = first;
-
- if (last > curscr->_lastch[j])
- curscr->_lastch[j] = last;
- }
-
- win->_firstch[i] = _NO_CHANGE; /* updated now */
- }
-
- win->_lastch[i] = _NO_CHANGE; /* updated now */
- }
-
- if (win->_clear)
- win->_clear = FALSE;
-
- if (!win->_leaveit)
- {
- curscr->_cury = win->_cury + begy;
- curscr->_curx = win->_curx + begx;
- }
-
- return OK;
-}
-
-int doupdate(void)
-{
- int y;
- bool clearall;
-
- PDC_LOG(("doupdate() - called\n"));
-
- if (!curscr)
- return ERR;
-
- if (isendwin()) /* coming back after endwin() called */
- {
- reset_prog_mode();
- clearall = TRUE;
- SP->alive = TRUE; /* so isendwin() result is correct */
- }
- else
- clearall = curscr->_clear;
-
- for (y = 0; y < SP->lines; y++)
- {
- PDC_LOG(("doupdate() - Transforming line %d of %d: %s\n",
- y, SP->lines, (curscr->_firstch[y] != _NO_CHANGE) ?
- "Yes" : "No"));
-
- if (clearall || curscr->_firstch[y] != _NO_CHANGE)
- {
- int first, last;
-
- chtype *src = curscr->_y[y];
- chtype *dest = pdc_lastscr->_y[y];
-
- if (clearall)
- {
- first = 0;
- last = COLS - 1;
- }
- else
- {
- first = curscr->_firstch[y];
- last = curscr->_lastch[y];
- }
-
- while (first <= last)
- {
- int len = 0;
-
- /* build up a run of changed cells; if two runs are
- separated by a single unchanged cell, ignore the
- break */
-
- if (clearall)
- len = last - first + 1;
- else
- while (first + len <= last &&
- (src[first + len] != dest[first + len] ||
- (len && first + len < last &&
- src[first + len + 1] != dest[first + len + 1])
- )
- )
- len++;
-
- /* update the screen, and pdc_lastscr */
-
- if (len)
- {
- PDC_transform_line(y, first, len, src + first);
- memcpy(dest + first, src + first, len * sizeof(chtype));
- first += len;
- }
-
- /* skip over runs of unchanged cells */
-
- while (first <= last && src[first] == dest[first])
- first++;
- }
-
- curscr->_firstch[y] = _NO_CHANGE;
- curscr->_lastch[y] = _NO_CHANGE;
- }
- }
-
- curscr->_clear = FALSE;
-
- if (SP->visibility)
- PDC_gotoyx(curscr->_cury, curscr->_curx);
-
- SP->cursrow = curscr->_cury;
- SP->curscol = curscr->_curx;
-
- return OK;
-}
-
-int wrefresh(WINDOW *win)
-{
- bool save_clear;
-
- PDC_LOG(("wrefresh() - called\n"));
-
- if ( !win || (win->_flags & (_PAD|_SUBPAD)) )
- return ERR;
-
- save_clear = win->_clear;
-
- if (win == curscr)
- curscr->_clear = TRUE;
- else
- wnoutrefresh(win);
-
- if (save_clear && win->_maxy == SP->lines && win->_maxx == SP->cols)
- curscr->_clear = TRUE;
-
- return doupdate();
-}
-
-int refresh(void)
-{
- PDC_LOG(("refresh() - called\n"));
-
- return wrefresh(stdscr);
-}
-
-int wredrawln(WINDOW *win, int start, int num)
-{
- int i;
-
- PDC_LOG(("wredrawln() - called: win=%p start=%d num=%d\n",
- win, start, num));
-
- if (!win || start > win->_maxy || start + num > win->_maxy)
- return ERR;
-
- for (i = start; i < start + num; i++)
- {
- win->_firstch[i] = 0;
- win->_lastch[i] = win->_maxx - 1;
- }
-
- return OK;
-}
-
-int redrawwin(WINDOW *win)
-{
- PDC_LOG(("redrawwin() - called: win=%p\n", win));
-
- if (!win)
- return ERR;
-
- return wredrawln(win, 0, win->_maxy);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scanw.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scanw.c
deleted file mode 100644
index 47f2050..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scanw.c
+++ /dev/null
@@ -1,575 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: scanw.c,v 1.42 2008/07/14 12:22:13 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: scanw
-
- Synopsis:
- int scanw(const char *fmt, ...);
- int wscanw(WINDOW *win, const char *fmt, ...);
- int mvscanw(int y, int x, const char *fmt, ...);
- int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...);
- int vwscanw(WINDOW *win, const char *fmt, va_list varglist);
- int vw_scanw(WINDOW *win, const char *fmt, va_list varglist);
-
- Description:
- These routines correspond to the standard C library's scanf()
- family. Each gets a string from the window via wgetnstr(), and
- uses the resulting line as input for the scan.
-
- Return Value:
- On successful completion, these functions return the number of
- items successfully matched. Otherwise they return ERR.
-
- Portability X/Open BSD SYS V
- scanw Y Y Y
- wscanw Y Y Y
- mvscanw Y Y Y
- mvwscanw Y Y Y
- vwscanw Y - 4.0
- vw_scanw Y
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-#ifndef HAVE_VSSCANF
-# include <stdlib.h>
-# include <ctype.h>
-# include <limits.h>
-
-static int _pdc_vsscanf(const char *, const char *, va_list);
-
-# define vsscanf _pdc_vsscanf
-#endif
-
-int vwscanw(WINDOW *win, const char *fmt, va_list varglist)
-{
- char scanbuf[256];
-
- PDC_LOG(("vwscanw() - called\n"));
-
- if (wgetnstr(win, scanbuf, 255) == ERR)
- return ERR;
-
- return vsscanf(scanbuf, fmt, varglist);
-}
-
-int scanw(const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("scanw() - called\n"));
-
- va_start(args, fmt);
- retval = vwscanw(stdscr, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int wscanw(WINDOW *win, const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("wscanw() - called\n"));
-
- va_start(args, fmt);
- retval = vwscanw(win, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int mvscanw(int y, int x, const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("mvscanw() - called\n"));
-
- if (move(y, x) == ERR)
- return ERR;
-
- va_start(args, fmt);
- retval = vwscanw(stdscr, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...)
-{
- va_list args;
- int retval;
-
- PDC_LOG(("mvscanw() - called\n"));
-
- if (wmove(win, y, x) == ERR)
- return ERR;
-
- va_start(args, fmt);
- retval = vwscanw(win, fmt, args);
- va_end(args);
-
- return retval;
-}
-
-int vw_scanw(WINDOW *win, const char *fmt, va_list varglist)
-{
- PDC_LOG(("vw_scanw() - called\n"));
-
- return vwscanw(win, fmt, varglist);
-}
-
-#ifndef HAVE_VSSCANF
-
-/* _pdc_vsscanf() - Internal routine to parse and format an input
- buffer. It scans a series of input fields; each field is formatted
- according to a supplied format string and the formatted input is
- stored in the variable number of addresses passed. Returns the number
- of input fields or EOF on error.
-
- Don't compile this unless required. Some compilers (at least Borland
- C++ 3.0) have to link with math libraries due to the use of floats.
-
- Based on vsscanf.c and input.c from emx 0.8f library source,
- Copyright (c) 1990-1992 by Eberhard Mattes, who has kindly agreed to
- its inclusion in PDCurses. */
-
-#define WHITE(x) ((x) == ' ' || (x) == '\t' || (x) == '\n')
-
-#define NEXT(x) \
- do { \
- x = *buf++; \
- if (!x) \
- return (count ? count : EOF); \
- ++chars; \
- } while (0)
-
-#define UNGETC() \
- do { \
- --buf; --chars; \
- } while (0)
-
-static int _pdc_vsscanf(const char *buf, const char *fmt, va_list arg_ptr)
-{
- int count, chars, c, width, radix, d, i;
- int *int_ptr;
- long *long_ptr;
- short *short_ptr;
- char *char_ptr;
- unsigned char f;
- char neg, assign, ok, size;
- long n;
- char map[256], end;
- double dx, dd, *dbl_ptr;
- float *flt_ptr;
- int exp;
- char eneg;
-
- count = 0;
- chars = 0;
- c = 0;
- while ((f = *fmt) != 0)
- {
- if (WHITE(f))
- {
- do
- {
- ++fmt;
- f = *fmt;
- }
- while (WHITE(f));
- do
- {
- c = *buf++;
- if (!c)
- {
- if (!f || count)
- return count;
- else
- return EOF;
- } else
- ++chars;
- }
- while (WHITE(c));
- UNGETC();
- } else if (f != '%')
- {
- NEXT(c);
- if (c != f)
- return count;
- ++fmt;
- } else
- {
- assign = TRUE;
- width = INT_MAX;
- char_ptr = NULL;
- ++fmt;
- if (*fmt == '*')
- {
- assign = FALSE;
- ++fmt;
- }
- if (isdigit(*fmt))
- {
- width = 0;
- while (isdigit(*fmt))
- width = width * 10 + (*fmt++ - '0');
- if (!width)
- width = INT_MAX;
- }
- size = 0;
- if (*fmt == 'h' || *fmt == 'l')
- size = *fmt++;
- f = *fmt;
- switch (f)
- {
- case 'c':
- if (width == INT_MAX)
- width = 1;
- if (assign)
- char_ptr = va_arg(arg_ptr, char *);
- while (width > 0)
- {
- --width;
- NEXT(c);
- if (assign)
- {
- *char_ptr++ = (char) c;
- ++count;
- }
- }
- break;
- case '[':
- memset(map, 0, 256);
- end = 0;
- ++fmt;
- if (*fmt == '^')
- {
- ++fmt;
- end = 1;
- }
- i = 0;
- for (;;)
- {
- f = (unsigned char) *fmt;
- switch (f)
- {
- case 0:
- /* avoid skipping past 0 */
- --fmt;
- NEXT(c);
- goto string;
- case ']':
- if (i > 0)
- {
- NEXT(c);
- goto string;
- }
- /* no break */
- default:
- if (fmt[1] == '-' && fmt[2]
- && f < (unsigned char)fmt[2])
- {
- memset(map + f, 1, (unsigned char)fmt[2] - f);
- fmt += 2;
- }
- else
- map[f] = 1;
- break;
- }
- ++fmt;
- ++i;
- }
- case 's':
- memset(map, 0, 256);
- map[' '] = 1;
- map['\n'] = 1;
- map['\r'] = 1;
- map['\t'] = 1;
- end = 1;
- do
- {
- NEXT(c);
- }
- while (WHITE(c));
- string:
- if (assign)
- char_ptr = va_arg(arg_ptr, char *);
- while (width > 0 && map[(unsigned char) c] != end)
- {
- --width;
- if (assign)
- *char_ptr++ = (char) c;
- c = *buf++;
- if (!c)
- break;
- else
- ++chars;
- }
- if (assign)
- {
- *char_ptr = 0;
- ++count;
- }
- if (!c)
- return count;
- else
- UNGETC();
- break;
- case 'f':
- case 'e':
- case 'E':
- case 'g':
- case 'G':
- neg = ok = FALSE;
- dx = 0.0;
- do
- {
- NEXT(c);
- }
- while (WHITE(c));
- if (c == '+')
- {
- NEXT(c);
- --width;
- } else if (c == '-')
- {
- neg = TRUE;
- NEXT(c);
- --width;
- }
- while (width > 0 && isdigit(c))
- {
- --width;
- dx = dx * 10.0 + (double) (c - '0');
- ok = TRUE;
- c = *buf++;
- if (!c)
- break;
- else
- ++chars;
- }
- if (width > 0 && c == '.')
- {
- --width;
- dd = 10.0;
- NEXT(c);
- while (width > 0 && isdigit(c))
- {
- --width;
- dx += (double) (c - '0') / dd;
- dd *= 10.0;
- ok = TRUE;
- c = *buf++;
- if (!c)
- break;
- else
- ++chars;
- }
- }
- if (!ok)
- return count;
- if (width > 0 && (c == 'e' || c == 'E'))
- {
- eneg = FALSE;
- exp = 0;
- NEXT(c);
- --width;
- if (width > 0 && c == '+')
- {
- NEXT(c);
- --width;
- } else if (width > 0 && c == '-')
- {
- eneg = TRUE;
- NEXT(c);
- --width;
- }
- if (!(width > 0 && isdigit(c)))
- {
- UNGETC();
- return count;
- }
- while (width > 0 && isdigit(c))
- {
- --width;
- exp = exp * 10 + (c - '0');
- c = *buf++;
- if (!c)
- break;
- else
- ++chars;
- }
- if (eneg)
- exp = -exp;
- while (exp > 0)
- {
- dx *= 10.0;
- --exp;
- }
- while (exp < 0)
- {
- dx /= 10.0;
- ++exp;
- }
- }
- if (assign)
- {
- if (neg)
- dx = -dx;
- if (size == 'l')
- {
- dbl_ptr = va_arg(arg_ptr, double *);
- *dbl_ptr = dx;
- }
- else
- {
- flt_ptr = va_arg(arg_ptr, float *);
- *flt_ptr = (float)dx;
- }
- ++count;
- }
- if (!c)
- return count;
- else
- UNGETC();
- break;
- case 'i':
- neg = FALSE;
- radix = 10;
- do
- {
- NEXT(c);
- }
- while (WHITE(c));
- if (!(width > 0 && c == '0'))
- goto scan_complete_number;
- NEXT(c);
- --width;
- if (width > 0 && (c == 'x' || c == 'X'))
- {
- NEXT(c);
- radix = 16;
- --width;
- }
- else if (width > 0 && (c >= '0' && c <= '7'))
- radix = 8;
- goto scan_unsigned_number;
- case 'd':
- case 'u':
- case 'o':
- case 'x':
- case 'X':
- do
- {
- NEXT(c);
- }
- while (WHITE(c));
- switch (f)
- {
- case 'o':
- radix = 8;
- break;
- case 'x':
- case 'X':
- radix = 16;
- break;
- default:
- radix = 10;
- break;
- }
- scan_complete_number:
- neg = FALSE;
- if (width > 0 && c == '+')
- {
- NEXT(c);
- --width;
- }
- else if (width > 0 && c == '-' && radix == 10)
- {
- neg = TRUE;
- NEXT(c);
- --width;
- }
- scan_unsigned_number:
- n = 0;
- ok = FALSE;
- while (width > 0)
- {
- --width;
- if (isdigit(c))
- d = c - '0';
- else if (isupper(c))
- d = c - 'A' + 10;
- else if (islower(c))
- d = c - 'a' + 10;
- else
- break;
- if (d < 0 || d >= radix)
- break;
- ok = TRUE;
- n = n * radix + d;
- c = *buf++;
- if (!c)
- break;
- else
- ++chars;
- }
- if (!ok)
- return count;
- if (assign)
- {
- if (neg)
- n = -n;
- switch (size)
- {
- case 'h':
- short_ptr = va_arg(arg_ptr, short *);
- *short_ptr = (short) n;
- break;
- case 'l':
- long_ptr = va_arg(arg_ptr, long *);
- *long_ptr = (long) n;
- break;
- default:
- int_ptr = va_arg(arg_ptr, int *);
- *int_ptr = (int) n;
- }
- ++count;
- }
- if (!c)
- return count;
- else
- UNGETC();
- break;
- case 'n':
- if (assign)
- {
- int_ptr = va_arg(arg_ptr, int *);
- *int_ptr = chars;
- ++count;
- }
- break;
- default:
- if (!f) /* % at end of string */
- return count;
- NEXT(c);
- if (c != f)
- return count;
- break;
- }
- ++fmt;
- }
- }
- return count;
-}
-#endif /* HAVE_VSSCANF */
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scr_dump.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scr_dump.c
deleted file mode 100644
index 6727ba3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scr_dump.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: scr_dump.c,v 1.30 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: scr_dump
-
- Synopsis:
- int putwin(WINDOW *win, FILE *filep);
- WINDOW *getwin(FILE *filep);
- int scr_dump(const char *filename);
- int scr_init(const char *filename);
- int scr_restore(const char *filename);
- int scr_set(const char *filename);
-
- Description:
- getwin() reads window-related data previously stored in a file
- by putwin(). It then creates and initialises a new window using
- that data.
-
- putwin() writes all data associated with a window into a file,
- using an unspecified format. This information can be retrieved
- later using getwin().
-
- scr_dump() writes the current contents of the virtual screen to
- the file named by filename in an unspecified format.
-
- scr_restore() function sets the virtual screen to the contents
- of the file named by filename, which must have been written
- using scr_dump(). The next refresh operation restores the screen
- to the way it looked in the dump file.
-
- In PDCurses, scr_init() does nothing, and scr_set() is a synonym
- for scr_restore(). Also, scr_dump() and scr_restore() save and
- load from curscr. This differs from some other implementations,
- where scr_init() works with curscr, and scr_restore() works with
- newscr; but the effect should be the same. (PDCurses has no
- newscr.)
-
- Return Value:
- On successful completion, getwin() returns a pointer to the
- window it created. Otherwise, it returns a null pointer. Other
- functions return OK or ERR.
-
- Portability X/Open BSD SYS V
- putwin Y
- getwin Y
- scr_dump Y
- scr_init Y
- scr_restore Y
- scr_set Y
-
-**man-end****************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-
-#define DUMPVER 1 /* Should be updated whenever the WINDOW struct is
- changed */
-
-int putwin(WINDOW *win, FILE *filep)
-{
- static const char *marker = "PDC";
- static const unsigned char version = DUMPVER;
-
- PDC_LOG(("putwin() - called\n"));
-
- /* write the marker and the WINDOW struct */
-
- if (filep && fwrite(marker, strlen(marker), 1, filep)
- && fwrite(&version, 1, 1, filep)
- && fwrite(win, sizeof(WINDOW), 1, filep))
- {
- int i;
-
- /* write each line */
-
- for (i = 0; i < win->_maxy && win->_y[i]; i++)
- if (!fwrite(win->_y[i], win->_maxx * sizeof(chtype), 1, filep))
- return ERR;
-
- return OK;
- }
-
- return ERR;
-}
-
-WINDOW *getwin(FILE *filep)
-{
- WINDOW *win;
- char marker[4];
- int i, nlines, ncols;
-
- PDC_LOG(("getwin() - called\n"));
-
- if ( !(win = malloc(sizeof(WINDOW))) )
- return (WINDOW *)NULL;
-
- /* check for the marker, and load the WINDOW struct */
-
- if (!filep || !fread(marker, 4, 1, filep) || strncmp(marker, "PDC", 3)
- || marker[3] != DUMPVER || !fread(win, sizeof(WINDOW), 1, filep))
- {
- free(win);
- return (WINDOW *)NULL;
- }
-
- nlines = win->_maxy;
- ncols = win->_maxx;
-
- /* allocate the line pointer array */
-
- if ( !(win->_y = malloc(nlines * sizeof(chtype *))) )
- {
- free(win);
- return (WINDOW *)NULL;
- }
-
- /* allocate the minchng and maxchng arrays */
-
- if ( !(win->_firstch = malloc(nlines * sizeof(int))) )
- {
- free(win->_y);
- free(win);
- return (WINDOW *)NULL;
- }
-
- if ( !(win->_lastch = malloc(nlines * sizeof(int))) )
- {
- free(win->_firstch);
- free(win->_y);
- free(win);
- return (WINDOW *)NULL;
- }
-
- /* allocate the lines */
-
- if ( !(win = PDC_makelines(win)) )
- return (WINDOW *)NULL;
-
- /* read them */
-
- for (i = 0; i < nlines; i++)
- {
- if (!fread(win->_y[i], ncols * sizeof(chtype), 1, filep))
- {
- delwin(win);
- return (WINDOW *)NULL;
- }
- }
-
- touchwin(win);
-
- return win;
-}
-
-int scr_dump(const char *filename)
-{
- FILE *filep;
-
- PDC_LOG(("scr_dump() - called: filename %s\n", filename));
-
- if (filename && (filep = fopen(filename, "wb")) != NULL)
- {
- int result = putwin(curscr, filep);
- fclose(filep);
- return result;
- }
-
- return ERR;
-}
-
-int scr_init(const char *filename)
-{
- PDC_LOG(("scr_init() - called: filename %s\n", filename));
-
- return OK;
-}
-
-int scr_restore(const char *filename)
-{
- FILE *filep;
-
- PDC_LOG(("scr_restore() - called: filename %s\n", filename));
-
- if (filename && (filep = fopen(filename, "rb")) != NULL)
- {
- WINDOW *replacement = getwin(filep);
- fclose(filep);
-
- if (replacement)
- {
- int result = overwrite(replacement, curscr);
- delwin(replacement);
- return result;
- }
- }
-
- return ERR;
-}
-
-int scr_set(const char *filename)
-{
- PDC_LOG(("scr_set() - called: filename %s\n", filename));
-
- return scr_restore(filename);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scroll.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scroll.c
deleted file mode 100644
index bc6c082..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/scroll.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: scroll.c,v 1.36 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: scroll
-
- Synopsis:
- int scroll(WINDOW *win);
- int scrl(int n);
- int wscrl(WINDOW *win, int n);
-
- Description:
- scroll() causes the window to scroll up one line. This involves
- moving the lines in the window data strcture.
-
- With a positive n, scrl() and wscrl() scroll the window up n
- lines (line i + n becomes i); otherwise they scroll the window
- down n lines.
-
- For these functions to work, scrolling must be enabled via
- scrollok(). Note also that scrolling is not allowed if the
- supplied window is a pad.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- scroll Y Y Y
- scrl Y - 4.0
- wscrl Y - 4.0
-
-**man-end****************************************************************/
-
-int wscrl(WINDOW *win, int n)
-{
- int i, l, dir, start, end;
- chtype blank, *temp;
-
- /* Check if window scrolls. Valid for window AND pad */
-
- if (!win || !win->_scroll || !n)
- return ERR;
-
- blank = win->_bkgd;
-
- if (n > 0)
- {
- start = win->_tmarg;
- end = win->_bmarg;
- dir = 1;
- }
- else
- {
- start = win->_bmarg;
- end = win->_tmarg;
- dir = -1;
- }
-
- for (l = 0; l < (n * dir); l++)
- {
- temp = win->_y[start];
-
- /* re-arrange line pointers */
-
- for (i = start; i != end; i += dir)
- win->_y[i] = win->_y[i + dir];
-
- win->_y[end] = temp;
-
- /* make a blank line */
-
- for (i = 0; i < win->_maxx; i++)
- *temp++ = blank;
- }
-
- touchline(win, win->_tmarg, win->_bmarg - win->_tmarg + 1);
-
- PDC_sync(win);
- return OK;
-}
-
-int scrl(int n)
-{
- PDC_LOG(("scrl() - called\n"));
-
- return wscrl(stdscr, n);
-}
-
-int scroll(WINDOW *win)
-{
- PDC_LOG(("scroll() - called\n"));
-
- return wscrl(win, 1);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/slk.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/slk.c
deleted file mode 100644
index 1491e2b..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/slk.c
+++ /dev/null
@@ -1,643 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: slk.c,v 1.61 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: slk
-
- Synopsis:
- int slk_init(int fmt);
- int slk_set(int labnum, const char *label, int justify);
- int slk_refresh(void);
- int slk_noutrefresh(void);
- char *slk_label(int labnum);
- int slk_clear(void);
- int slk_restore(void);
- int slk_touch(void);
- int slk_attron(const chtype attrs);
- int slk_attr_on(const attr_t attrs, void *opts);
- int slk_attrset(const chtype attrs);
- int slk_attr_set(const attr_t attrs, short color_pair, void *opts);
- int slk_attroff(const chtype attrs);
- int slk_attr_off(const attr_t attrs, void *opts);
- int slk_color(short color_pair);
-
- int slk_wset(int labnum, const wchar_t *label, int justify);
-
- int PDC_mouse_in_slk(int y, int x);
- void PDC_slk_free(void);
- void PDC_slk_initialize(void);
-
- wchar_t *slk_wlabel(int labnum)
-
- Description:
- These functions manipulate a window that contain Soft Label Keys
- (SLK). To use the SLK functions, a call to slk_init() must be
- made BEFORE initscr() or newterm(). slk_init() removes 1 or 2
- lines from the useable screen, depending on the format selected.
-
- The line(s) removed from the screen are used as a separate
- window, in which SLKs are displayed.
-
- slk_init() requires a single parameter which describes the
- format of the SLKs as follows:
-
- 0 3-2-3 format
- 1 4-4 format
- 2 4-4-4 format (ncurses extension)
- 3 4-4-4 format with index line (ncurses extension)
- 2 lines used
- 55 5-5 format (pdcurses format)
-
- slk_refresh(), slk_noutrefresh() and slk_touch() are analogous
- to refresh(), noutrefresh() and touch().
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- slk_init Y - Y
- slk_set Y - Y
- slk_refresh Y - Y
- slk_noutrefresh Y - Y
- slk_label Y - Y
- slk_clear Y - Y
- slk_restore Y - Y
- slk_touch Y - Y
- slk_attron Y - Y
- slk_attrset Y - Y
- slk_attroff Y - Y
- slk_attr_on Y
- slk_attr_set Y
- slk_attr_off Y
- slk_wset Y
- PDC_mouse_in_slk - - -
- PDC_slk_free - - -
- PDC_slk_initialize - - -
- slk_wlabel - - -
-
-**man-end****************************************************************/
-
-#include <stdlib.h>
-
-enum { LABEL_NORMAL = 8, LABEL_EXTENDED = 10, LABEL_NCURSES_EXTENDED = 12 };
-
-static int label_length = 0;
-static int labels = 0;
-static int label_fmt = 0;
-static int label_line = 0;
-static bool hidden = FALSE;
-
-static struct SLK {
- chtype label[32];
- int len;
- int format;
- int start_col;
-} *slk = (struct SLK *)NULL;
-
-/* slk_init() is the slk initialization routine.
- This must be called before initscr().
-
- label_fmt = 0, 1 or 55.
- 0 = 3-2-3 format
- 1 = 4 - 4 format
- 2 = 4-4-4 format (ncurses extension for PC 12 function keys)
- 3 = 4-4-4 format (ncurses extension for PC 12 function keys -
- with index line)
- 55 = 5 - 5 format (extended for PC, 10 function keys) */
-
-int slk_init(int fmt)
-{
- PDC_LOG(("slk_init() - called\n"));
-
- if (SP)
- return ERR;
-
- switch (fmt)
- {
- case 0: /* 3 - 2 - 3 */
- labels = LABEL_NORMAL;
- break;
-
- case 1: /* 4 - 4 */
- labels = LABEL_NORMAL;
- break;
-
- case 2: /* 4 4 4 */
- labels = LABEL_NCURSES_EXTENDED;
- break;
-
- case 3: /* 4 4 4 with index */
- labels = LABEL_NCURSES_EXTENDED;
- break;
-
- case 55: /* 5 - 5 */
- labels = LABEL_EXTENDED;
- break;
-
- default:
- return ERR;
- }
-
- label_fmt = fmt;
-
- slk = calloc(labels, sizeof(struct SLK));
-
- if (!slk)
- labels = 0;
-
- return slk ? OK : ERR;
-}
-
-/* draw a single button */
-
-static void _drawone(int num)
-{
- int i, col, slen;
-
- if (hidden)
- return;
-
- slen = slk[num].len;
-
- switch (slk[num].format)
- {
- case 0: /* LEFT */
- col = 0;
- break;
-
- case 1: /* CENTER */
- col = (label_length - slen) / 2;
-
- if (col + slen > label_length)
- --col;
- break;
-
- default: /* RIGHT */
- col = label_length - slen;
- }
-
- wmove(SP->slk_winptr, label_line, slk[num].start_col);
-
- for (i = 0; i < label_length; ++i)
- waddch(SP->slk_winptr, (i >= col && i < (col + slen)) ?
- slk[num].label[i - col] : ' ');
-}
-
-/* redraw each button */
-
-static void _redraw(void)
-{
- int i;
-
- for (i = 0; i < labels; ++i)
- _drawone(i);
-}
-
-/* slk_set() Used to set a slk label to a string.
-
- labnum = 1 - 8 (or 10) (number of the label)
- label = string (8 or 7 bytes total), or NULL
- justify = 0 : left, 1 : center, 2 : right */
-
-int slk_set(int labnum, const char *label, int justify)
-{
-#ifdef PDC_WIDE
- wchar_t wlabel[32];
-
- PDC_mbstowcs(wlabel, label, 31);
- return slk_wset(labnum, wlabel, justify);
-#else
- PDC_LOG(("slk_set() - called\n"));
-
- if (labnum < 1 || labnum > labels || justify < 0 || justify > 2)
- return ERR;
-
- labnum--;
-
- if (!label || !(*label))
- {
- /* Clear the label */
-
- *slk[labnum].label = 0;
- slk[labnum].format = 0;
- slk[labnum].len = 0;
- }
- else
- {
- int i, j = 0;
-
- /* Skip leading spaces */
-
- while (label[j] == ' ')
- j++;
-
- /* Copy it */
-
- for (i = 0; i < label_length; i++)
- {
- chtype ch = label[i + j];
-
- slk[labnum].label[i] = ch;
-
- if (!ch)
- break;
- }
-
- /* Drop trailing spaces */
-
- while ((i + j) && (label[i + j - 1] == ' '))
- i--;
-
- slk[labnum].label[i] = 0;
- slk[labnum].format = justify;
- slk[labnum].len = i;
- }
-
- _drawone(labnum);
-
- return OK;
-#endif
-}
-
-int slk_refresh(void)
-{
- PDC_LOG(("slk_refresh() - called\n"));
-
- return (slk_noutrefresh() == ERR) ? ERR : doupdate();
-}
-
-int slk_noutrefresh(void)
-{
- PDC_LOG(("slk_noutrefresh() - called\n"));
-
- return wnoutrefresh(SP->slk_winptr);
-}
-
-char *slk_label(int labnum)
-{
- static char temp[33];
-#ifdef PDC_WIDE
- wchar_t *wtemp = slk_wlabel(labnum);
-
- PDC_wcstombs(temp, wtemp, 32);
-#else
- chtype *p;
- int i;
-
- PDC_LOG(("slk_label() - called\n"));
-
- if (labnum < 1 || labnum > labels)
- return (char *)0;
-
- for (i = 0, p = slk[labnum - 1].label; *p; i++)
- temp[i] = *p++;
-
- temp[i] = '\0';
-#endif
- return temp;
-}
-
-int slk_clear(void)
-{
- PDC_LOG(("slk_clear() - called\n"));
-
- hidden = TRUE;
- werase(SP->slk_winptr);
- return wrefresh(SP->slk_winptr);
-}
-
-int slk_restore(void)
-{
- PDC_LOG(("slk_restore() - called\n"));
-
- hidden = FALSE;
- _redraw();
- return wrefresh(SP->slk_winptr);
-}
-
-int slk_touch(void)
-{
- PDC_LOG(("slk_touch() - called\n"));
-
- return touchwin(SP->slk_winptr);
-}
-
-int slk_attron(const chtype attrs)
-{
- int rc;
-
- PDC_LOG(("slk_attron() - called\n"));
-
- rc = wattron(SP->slk_winptr, attrs);
- _redraw();
-
- return rc;
-}
-
-int slk_attr_on(const attr_t attrs, void *opts)
-{
- PDC_LOG(("slk_attr_on() - called\n"));
-
- return slk_attron(attrs);
-}
-
-int slk_attroff(const chtype attrs)
-{
- int rc;
-
- PDC_LOG(("slk_attroff() - called\n"));
-
- rc = wattroff(SP->slk_winptr, attrs);
- _redraw();
-
- return rc;
-}
-
-int slk_attr_off(const attr_t attrs, void *opts)
-{
- PDC_LOG(("slk_attr_off() - called\n"));
-
- return slk_attroff(attrs);
-}
-
-int slk_attrset(const chtype attrs)
-{
- int rc;
-
- PDC_LOG(("slk_attrset() - called\n"));
-
- rc = wattrset(SP->slk_winptr, attrs);
- _redraw();
-
- return rc;
-}
-
-int slk_color(short color_pair)
-{
- int rc;
-
- PDC_LOG(("slk_color() - called\n"));
-
- rc = wcolor_set(SP->slk_winptr, color_pair, NULL);
- _redraw();
-
- return rc;
-}
-
-int slk_attr_set(const attr_t attrs, short color_pair, void *opts)
-{
- PDC_LOG(("slk_attr_set() - called\n"));
-
- return slk_attrset(attrs | COLOR_PAIR(color_pair));
-}
-
-static void _slk_calc(void)
-{
- int i, center, col = 0;
- label_length = COLS / labels;
-
- if (label_length > 31)
- label_length = 31;
-
- switch (label_fmt)
- {
- case 0: /* 3 - 2 - 3 F-Key layout */
-
- --label_length;
-
- slk[0].start_col = col;
- slk[1].start_col = (col += label_length);
- slk[2].start_col = (col += label_length);
-
- center = COLS / 2;
-
- slk[3].start_col = center - label_length + 1;
- slk[4].start_col = center + 1;
-
- col = COLS - (label_length * 3) + 1;
-
- slk[5].start_col = col;
- slk[6].start_col = (col += label_length);
- slk[7].start_col = (col += label_length);
- break;
-
- case 1: /* 4 - 4 F-Key layout */
-
- for (i = 0; i < 8; i++)
- {
- slk[i].start_col = col;
- col += label_length;
-
- if (i == 3)
- col = COLS - (label_length * 4) + 1;
- }
-
- break;
-
- case 2: /* 4 4 4 F-Key layout */
- case 3: /* 4 4 4 F-Key layout with index */
-
- for (i = 0; i < 4; i++)
- {
- slk[i].start_col = col;
- col += label_length;
- }
-
- center = COLS/2;
-
- slk[4].start_col = center - (label_length * 2) + 1;
- slk[5].start_col = center - label_length - 1;
- slk[6].start_col = center + 1;
- slk[7].start_col = center + label_length + 1;
-
- col = COLS - (label_length * 4) + 1;
-
- for (i = 8; i < 12; i++)
- {
- slk[i].start_col = col;
- col += label_length;
- }
-
- break;
-
- default: /* 5 - 5 F-Key layout */
-
- for (i = 0; i < 10; i++)
- {
- slk[i].start_col = col;
- col += label_length;
-
- if (i == 4)
- col = COLS - (label_length * 5) + 1;
- }
- }
-
- --label_length;
-
- /* make sure labels are all in window */
-
- _redraw();
-}
-
-void PDC_slk_initialize(void)
-{
- if (slk)
- {
- if (label_fmt == 3)
- {
- SP->slklines = 2;
- label_line = 1;
- }
- else
- SP->slklines = 1;
-
- if (!SP->slk_winptr)
- {
- if ( !(SP->slk_winptr = newwin(SP->slklines, COLS,
- LINES - SP->slklines, 0)) )
- return;
-
- wattrset(SP->slk_winptr, A_REVERSE);
- }
-
- _slk_calc();
-
- /* if we have an index line, display it now */
-
- if (label_fmt == 3)
- {
- chtype save_attr;
- int i;
-
- save_attr = SP->slk_winptr->_attrs;
- wattrset(SP->slk_winptr, A_NORMAL);
- wmove(SP->slk_winptr, 0, 0);
- whline(SP->slk_winptr, 0, COLS);
-
- for (i = 0; i < labels; i++)
- mvwprintw(SP->slk_winptr, 0, slk[i].start_col, "F%d", i + 1);
-
- SP->slk_winptr->_attrs = save_attr;
- }
-
- touchwin(SP->slk_winptr);
- }
-}
-
-void PDC_slk_free(void)
-{
- if (slk)
- {
- if (SP->slk_winptr)
- {
- delwin(SP->slk_winptr);
- SP->slk_winptr = (WINDOW *)NULL;
- }
-
- free(slk);
- slk = (struct SLK *)NULL;
-
- label_length = 0;
- labels = 0;
- label_fmt = 0;
- label_line = 0;
- hidden = FALSE;
- }
-}
-
-int PDC_mouse_in_slk(int y, int x)
-{
- int i;
-
- PDC_LOG(("PDC_mouse_in_slk() - called: y->%d x->%d\n", y, x));
-
- /* If the line on which the mouse was clicked is NOT the last line
- of the screen, we are not interested in it. */
-
- if (!slk || !SP->slk_winptr || (y != SP->slk_winptr->_begy + label_line))
- return 0;
-
- for (i = 0; i < labels; i++)
- if (x >= slk[i].start_col && x < (slk[i].start_col + label_length))
- return i + 1;
-
- return 0;
-}
-
-#ifdef PDC_WIDE
-int slk_wset(int labnum, const wchar_t *label, int justify)
-{
- PDC_LOG(("slk_wset() - called\n"));
-
- if (labnum < 1 || labnum > labels || justify < 0 || justify > 2)
- return ERR;
-
- labnum--;
-
- if (!label || !(*label))
- {
- /* Clear the label */
-
- *slk[labnum].label = 0;
- slk[labnum].format = 0;
- slk[labnum].len = 0;
- }
- else
- {
- int i, j = 0;
-
- /* Skip leading spaces */
-
- while (label[j] == L' ')
- j++;
-
- /* Copy it */
-
- for (i = 0; i < label_length; i++)
- {
- chtype ch = label[i + j];
-
- slk[labnum].label[i] = ch;
-
- if (!ch)
- break;
- }
-
- /* Drop trailing spaces */
-
- while ((i + j) && (label[i + j - 1] == L' '))
- i--;
-
- slk[labnum].label[i] = 0;
- slk[labnum].format = justify;
- slk[labnum].len = i;
- }
-
- _drawone(labnum);
-
- return OK;
-}
-
-wchar_t *slk_wlabel(int labnum)
-{
- static wchar_t temp[33];
- chtype *p;
- int i;
-
- PDC_LOG(("slk_wlabel() - called\n"));
-
- if (labnum < 1 || labnum > labels)
- return (wchar_t *)0;
-
- for (i = 0, p = slk[labnum - 1].label; *p; i++)
- temp[i] = *p++;
-
- temp[i] = '\0';
-
- return temp;
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/termattr.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/termattr.c
deleted file mode 100644
index 7e49047..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/termattr.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: termattr.c,v 1.54 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: termattr
-
- Synopsis:
- int baudrate(void);
- char erasechar(void);
- bool has_ic(void);
- bool has_il(void);
- char killchar(void);
- char *longname(void);
- chtype termattrs(void);
- attr_t term_attrs(void);
- char *termname(void);
-
- int erasewchar(wchar_t *ch);
- int killwchar(wchar_t *ch);
-
- char wordchar(void);
-
- Description:
- baudrate() is supposed to return the output speed of the
- terminal. In PDCurses, it simply returns INT_MAX.
-
- has_ic and has_il() return TRUE. These functions have meaning in
- some other implementations of curses.
-
- erasechar() and killchar() return ^H and ^U, respectively -- the
- ERASE and KILL characters. In other curses implementations,
- these may vary by terminal type. erasewchar() and killwchar()
- are the wide-character versions; they take a pointer to a
- location in which to store the character, and return OK or ERR.
-
- longname() returns a pointer to a static area containing a
- verbose description of the current terminal. The maximum length
- of the string is 128 characters. It is defined only after the
- call to initscr() or newterm().
-
- termname() returns a pointer to a static area containing a
- short description of the current terminal (14 characters).
-
- termattrs() returns a logical OR of all video attributes
- supported by the terminal.
-
- wordchar() is a PDCurses extension of the concept behind the
- functions erasechar() and killchar(), returning the "delete
- word" character, ^W.
-
- Portability X/Open BSD SYS V
- baudrate Y Y Y
- erasechar Y Y Y
- has_ic Y Y Y
- has_il Y Y Y
- killchar Y Y Y
- longname Y Y Y
- termattrs Y Y Y
- termname Y Y Y
- erasewchar Y
- killwchar Y
- term_attrs Y
- wordchar - - -
-
-**man-end****************************************************************/
-
-#include <string.h>
-#include <limits.h>
-
-int baudrate(void)
-{
- PDC_LOG(("baudrate() - called\n"));
-
- return INT_MAX;
-}
-
-char erasechar(void)
-{
- PDC_LOG(("erasechar() - called\n"));
-
- return _ECHAR; /* character delete char (^H) */
-}
-
-bool has_ic(void)
-{
- PDC_LOG(("has_ic() - called\n"));
-
- return TRUE;
-}
-
-bool has_il(void)
-{
- PDC_LOG(("has_il() - called\n"));
-
- return TRUE;
-}
-
-char killchar(void)
-{
- PDC_LOG(("killchar() - called\n"));
-
- return _DLCHAR; /* line delete char (^U) */
-}
-
-char *longname(void)
-{
- PDC_LOG(("longname() - called\n"));
-
- return ttytype + 9; /* skip "pdcurses|" */
-}
-
-chtype termattrs(void)
-{
- chtype temp = A_BLINK | A_BOLD | A_INVIS | A_REVERSE | A_UNDERLINE;
-
- /* note: blink is bold background on some platforms */
-
- PDC_LOG(("termattrs() - called\n"));
-
- if (!SP->mono)
- temp |= A_COLOR;
-
- return temp;
-}
-
-attr_t term_attrs(void)
-{
- PDC_LOG(("term_attrs() - called\n"));
-
- return WA_BLINK | WA_BOLD | WA_INVIS | WA_LEFT | WA_REVERSE |
- WA_RIGHT | WA_UNDERLINE;
-}
-
-const char *termname(void)
-{
- PDC_LOG(("termname() - called\n"));
-
- return "pdcurses";
-}
-
-char wordchar(void)
-{
- PDC_LOG(("wordchar() - called\n"));
-
- return _DWCHAR; /* word delete char */
-}
-
-#ifdef PDC_WIDE
-int erasewchar(wchar_t *ch)
-{
- PDC_LOG(("erasewchar() - called\n"));
-
- if (!ch)
- return ERR;
-
- *ch = (wchar_t)_ECHAR;
-
- return OK;
-}
-
-int killwchar(wchar_t *ch)
-{
- PDC_LOG(("killwchar() - called\n"));
-
- if (!ch)
- return ERR;
-
- *ch = (wchar_t)_DLCHAR;
-
- return OK;
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/terminfo.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/terminfo.c
deleted file mode 100644
index abae4f2..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/terminfo.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: terminfo.c,v 1.37 2008/07/21 12:29:20 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: terminfo
-
- Synopsis:
- int mvcur(int oldrow, int oldcol, int newrow, int newcol);
- int vidattr(chtype attr);
- int vid_attr(attr_t attr, short color_pair, void *opt);
- int vidputs(chtype attr, int (*putfunc)(int));
- int vid_puts(attr_t attr, short color_pair, void *opt,
- int (*putfunc)(int));
-
- int del_curterm(TERMINAL *);
- int putp(const char *);
- int restartterm(const char *, int, int *);
- TERMINAL *set_curterm(TERMINAL *);
- int setterm(const char *term);
- int setupterm(const char *, int, int *);
- int tgetent(char *, const char *);
- int tgetflag(const char *);
- int tgetnum(const char *);
- char *tgetstr(const char *, char **);
- char *tgoto(const char *, int, int);
- int tigetflag(const char *);
- int tigetnum(const char *);
- char *tigetstr(const char *);
- char *tparm(const char *,long, long, long, long, long, long,
- long, long, long);
- int tputs(const char *, int, int (*)(int));
-
- Description:
- mvcur() lets you move the physical cursor without updating any
- window cursor positions. It returns OK or ERR.
-
- The rest of these functions are currently implemented as stubs,
- returning the appropriate errors and doing nothing else.
-
- Portability X/Open BSD SYS V
- mvcur Y Y Y
-
-**man-end****************************************************************/
-
-#include <term.h>
-
-TERMINAL *cur_term = NULL;
-
-int mvcur(int oldrow, int oldcol, int newrow, int newcol)
-{
- PDC_LOG(("mvcur() - called: oldrow %d oldcol %d newrow %d newcol %d\n",
- oldrow, oldcol, newrow, newcol));
-
- if ((newrow >= LINES) || (newcol >= COLS) || (newrow < 0) || (newcol < 0))
- return ERR;
-
- PDC_gotoyx(newrow, newcol);
- SP->cursrow = newrow;
- SP->curscol = newcol;
-
- return OK;
-}
-
-int vidattr(chtype attr)
-{
- PDC_LOG(("vidattr() - called: attr %d\n", attr));
-
- return ERR;
-}
-
-int vid_attr(attr_t attr, short color_pair, void *opt)
-{
- PDC_LOG(("vid_attr() - called\n"));
-
- return ERR;
-}
-
-int vidputs(chtype attr, int (*putfunc)(int))
-{
- PDC_LOG(("vidputs() - called: attr %d\n", attr));
-
- return ERR;
-}
-
-int vid_puts(attr_t attr, short color_pair, void *opt, int (*putfunc)(int))
-{
- PDC_LOG(("vid_puts() - called\n"));
-
- return ERR;
-}
-
-int del_curterm(TERMINAL *oterm)
-{
- PDC_LOG(("del_curterm() - called\n"));
-
- return ERR;
-}
-
-int putp(const char *str)
-{
- PDC_LOG(("putp() - called: str %s\n", str));
-
- return ERR;
-}
-
-int restartterm(const char *term, int filedes, int *errret)
-{
- PDC_LOG(("restartterm() - called\n"));
-
- if (errret)
- *errret = -1;
-
- return ERR;
-}
-
-TERMINAL *set_curterm(TERMINAL *nterm)
-{
- PDC_LOG(("set_curterm() - called\n"));
-
- return (TERMINAL *)NULL;
-}
-
-int setterm(const char *term)
-{
- PDC_LOG(("setterm() - called\n"));
-
- return ERR;
-}
-
-int setupterm(const char *term, int filedes, int *errret)
-{
- PDC_LOG(("setupterm() - called\n"));
-
- if (errret)
- *errret = -1;
- else
- fprintf(stderr, "There is no terminfo database\n");
-
- return ERR;
-}
-
-int tgetent(char *bp, const char *name)
-{
- PDC_LOG(("tgetent() - called: name %s\n", name));
-
- return ERR;
-}
-
-int tgetflag(const char *id)
-{
- PDC_LOG(("tgetflag() - called: id %s\n", id));
-
- return ERR;
-}
-
-int tgetnum(const char *id)
-{
- PDC_LOG(("tgetnum() - called: id %s\n", id));
-
- return ERR;
-}
-
-char *tgetstr(const char *id, char **area)
-{
- PDC_LOG(("tgetstr() - called: id %s\n", id));
-
- return (char *)NULL;
-}
-
-char *tgoto(const char *cap, int col, int row)
-{
- PDC_LOG(("tgoto() - called\n"));
-
- return (char *)NULL;
-}
-
-int tigetflag(const char *capname)
-{
- PDC_LOG(("tigetflag() - called: capname %s\n", capname));
-
- return -1;
-}
-
-int tigetnum(const char *capname)
-{
- PDC_LOG(("tigetnum() - called: capname %s\n", capname));
-
- return -2;
-}
-
-char *tigetstr(const char *capname)
-{
- PDC_LOG(("tigetstr() - called: capname %s\n", capname));
-
- return (char *)(-1);
-}
-
-char *tparm(const char *cap, long p1, long p2, long p3, long p4,
- long p5, long p6, long p7, long p8, long p9)
-{
- PDC_LOG(("tparm() - called: cap %s\n", cap));
-
- return (char *)NULL;
-}
-
-int tputs(const char *str, int affcnt, int (*putfunc)(int))
-{
- PDC_LOG(("tputs() - called\n"));
-
- return ERR;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/touch.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/touch.c
deleted file mode 100644
index c808058..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/touch.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: touch.c,v 1.29 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: touch
-
- Synopsis:
- int touchwin(WINDOW *win);
- int touchline(WINDOW *win, int start, int count);
- int untouchwin(WINDOW *win);
- int wtouchln(WINDOW *win, int y, int n, int changed);
- bool is_linetouched(WINDOW *win, int line);
- bool is_wintouched(WINDOW *win);
-
- Description:
- touchwin() and touchline() throw away all information about
- which parts of the window have been touched, pretending that the
- entire window has been drawn on. This is sometimes necessary
- when using overlapping windows, since a change to one window
- will affect the other window, but the records of which lines
- have been changed in the other window will not reflect the
- change.
-
- untouchwin() marks all lines in the window as unchanged since
- the last call to wrefresh().
-
- wtouchln() makes n lines in the window, starting at line y, look
- as if they have (changed == 1) or have not (changed == 0) been
- changed since the last call to wrefresh().
-
- is_linetouched() returns TRUE if the specified line in the
- specified window has been changed since the last call to
- wrefresh().
-
- is_wintouched() returns TRUE if the specified window
- has been changed since the last call to wrefresh().
-
- Return Value:
- All functions return OK on success and ERR on error except
- is_wintouched() and is_linetouched().
-
- Portability X/Open BSD SYS V
- touchwin Y Y Y
- touchline Y - 3.0
- untouchwin Y - 4.0
- wtouchln Y Y Y
- is_linetouched Y - 4.0
- is_wintouched Y - 4.0
-
-**man-end****************************************************************/
-
-int touchwin(WINDOW *win)
-{
- int i;
-
- PDC_LOG(("touchwin() - called: Win=%x\n", win));
-
- if (!win)
- return ERR;
-
- for (i = 0; i < win->_maxy; i++)
- {
- win->_firstch[i] = 0;
- win->_lastch[i] = win->_maxx - 1;
- }
-
- return OK;
-}
-
-int touchline(WINDOW *win, int start, int count)
-{
- int i;
-
- PDC_LOG(("touchline() - called: win=%p start %d count %d\n",
- win, start, count));
-
- if (!win || start > win->_maxy || start + count > win->_maxy)
- return ERR;
-
- for (i = start; i < start + count; i++)
- {
- win->_firstch[i] = 0;
- win->_lastch[i] = win->_maxx - 1;
- }
-
- return OK;
-}
-
-int untouchwin(WINDOW *win)
-{
- int i;
-
- PDC_LOG(("untouchwin() - called: win=%p", win));
-
- if (!win)
- return ERR;
-
- for (i = 0; i < win->_maxy; i++)
- {
- win->_firstch[i] = _NO_CHANGE;
- win->_lastch[i] = _NO_CHANGE;
- }
-
- return OK;
-}
-
-int wtouchln(WINDOW *win, int y, int n, int changed)
-{
- int i;
-
- PDC_LOG(("wtouchln() - called: win=%p y=%d n=%d changed=%d\n",
- win, y, n, changed));
-
- if (!win || y > win->_maxy || y + n > win->_maxy)
- return ERR;
-
- for (i = y; i < y + n; i++)
- {
- if (changed)
- {
- win->_firstch[i] = 0;
- win->_lastch[i] = win->_maxx - 1;
- }
- else
- {
- win->_firstch[i] = _NO_CHANGE;
- win->_lastch[i] = _NO_CHANGE;
- }
- }
-
- return OK;
-}
-
-bool is_linetouched(WINDOW *win, int line)
-{
- PDC_LOG(("is_linetouched() - called: win=%p line=%d\n", win, line));
-
- if (!win || line > win->_maxy || line < 0)
- return FALSE;
-
- return (win->_firstch[line] != _NO_CHANGE) ? TRUE : FALSE;
-}
-
-bool is_wintouched(WINDOW *win)
-{
- int i;
-
- PDC_LOG(("is_wintouched() - called: win=%p\n", win));
-
- if (win)
- for (i = 0; i < win->_maxy; i++)
- if (win->_firstch[i] != _NO_CHANGE)
- return TRUE;
-
- return FALSE;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/util.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/util.c
deleted file mode 100644
index 9972143..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/util.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: util.c,v 1.71 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: util
-
- Synopsis:
- char *unctrl(chtype c);
- void filter(void);
- void use_env(bool x);
- int delay_output(int ms);
-
- int getcchar(const cchar_t *wcval, wchar_t *wch, attr_t *attrs,
- short *color_pair, void *opts);
- int setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs,
- short color_pair, const void *opts);
- wchar_t *wunctrl(cchar_t *wc);
-
- int PDC_mbtowc(wchar_t *pwc, const char *s, size_t n);
- size_t PDC_mbstowcs(wchar_t *dest, const char *src, size_t n);
- size_t PDC_wcstombs(char *dest, const wchar_t *src, size_t n);
-
- Description:
- unctrl() expands the text portion of the chtype c into a
- printable string. Control characters are changed to the "^X"
- notation; others are passed through. wunctrl() is the wide-
- character version of the function.
-
- filter() and use_env() are no-ops in PDCurses.
-
- delay_output() inserts an ms millisecond pause in output.
-
- getcchar() works in two modes: When wch is not NULL, it reads
- the cchar_t pointed to by wcval and stores the attributes in
- attrs, the color pair in color_pair, and the text in the
- wide-character string wch. When wch is NULL, getcchar() merely
- returns the number of wide characters in wcval. In either mode,
- the opts argument is unused.
-
- setcchar constructs a cchar_t at wcval from the wide-character
- text at wch, the attributes in attr and the color pair in
- color_pair. The opts argument is unused.
-
- Currently, the length returned by getcchar() is always 1 or 0.
- Similarly, setcchar() will only take the first wide character
- from wch, and ignore any others that it "should" take (i.e.,
- combining characters). Nor will it correctly handle any
- character outside the basic multilingual plane (UCS-2).
-
- Return Value:
- unctrl() and wunctrl() return NULL on failure. delay_output()
- always returns OK.
-
- getcchar() returns the number of wide characters wcval points to
- when wch is NULL; when it's not, getcchar() returns OK or ERR.
-
- setcchar() returns OK or ERR.
-
- Portability X/Open BSD SYS V
- unctrl Y Y Y
- filter Y - 3.0
- use_env Y - 4.0
- delay_output Y Y Y
- getcchar Y
- setcchar Y
- wunctrl Y
- PDC_mbtowc - - -
- PDC_mbstowcs - - -
- PDC_wcstombs - - -
-
-**man-end****************************************************************/
-
-#ifdef PDC_WIDE
-# ifdef PDC_FORCE_UTF8
-# include <string.h>
-# else
-# include <stdlib.h>
-# endif
-#endif
-
-char *unctrl(chtype c)
-{
- static char strbuf[3] = {0, 0, 0};
-
- chtype ic;
-
- PDC_LOG(("unctrl() - called\n"));
-
- ic = c & A_CHARTEXT;
-
- if (ic >= 0x20 && ic != 0x7f) /* normal characters */
- {
- strbuf[0] = (char)ic;
- strbuf[1] = '\0';
- return strbuf;
- }
-
- strbuf[0] = '^'; /* '^' prefix */
-
- if (ic == 0x7f) /* 0x7f == DEL */
- strbuf[1] = '?';
- else /* other control */
- strbuf[1] = (char)(ic + '@');
-
- return strbuf;
-}
-
-void filter(void)
-{
- PDC_LOG(("filter() - called\n"));
-}
-
-void use_env(bool x)
-{
- PDC_LOG(("use_env() - called: x %d\n", x));
-}
-
-int delay_output(int ms)
-{
- PDC_LOG(("delay_output() - called: ms %d\n", ms));
-
- return napms(ms);
-}
-
-#ifdef PDC_WIDE
-int getcchar(const cchar_t *wcval, wchar_t *wch, attr_t *attrs,
- short *color_pair, void *opts)
-{
- if (!wcval)
- return ERR;
-
- if (wch)
- {
- if (!attrs || !color_pair)
- return ERR;
-
- *wch = (*wcval & A_CHARTEXT);
- *attrs = (*wcval & (A_ATTRIBUTES & ~A_COLOR));
- *color_pair = PAIR_NUMBER(*wcval & A_COLOR);
-
- if (*wch)
- *++wch = L'\0';
-
- return OK;
- }
- else
- return ((*wcval & A_CHARTEXT) != L'\0');
-}
-
-int setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs,
- short color_pair, const void *opts)
-{
- if (!wcval || !wch)
- return ERR;
-
- *wcval = *wch | attrs | COLOR_PAIR(color_pair);
-
- return OK;
-}
-
-wchar_t *wunctrl(cchar_t *wc)
-{
- static wchar_t strbuf[3] = {0, 0, 0};
-
- cchar_t ic;
-
- PDC_LOG(("wunctrl() - called\n"));
-
- ic = *wc & A_CHARTEXT;
-
- if (ic >= 0x20 && ic != 0x7f) /* normal characters */
- {
- strbuf[0] = (wchar_t)ic;
- strbuf[1] = L'\0';
- return strbuf;
- }
-
- strbuf[0] = '^'; /* '^' prefix */
-
- if (ic == 0x7f) /* 0x7f == DEL */
- strbuf[1] = '?';
- else /* other control */
- strbuf[1] = (wchar_t)(ic + '@');
-
- return strbuf;
-}
-
-int PDC_mbtowc(wchar_t *pwc, const char *s, size_t n)
-{
-# ifdef PDC_FORCE_UTF8
- wchar_t key;
- int i = -1;
- const unsigned char *string;
-
- if (!s || (n < 1))
- return -1;
-
- if (!*s)
- return 0;
-
- string = (const unsigned char *)s;
-
- key = string[0];
-
- /* Simplistic UTF-8 decoder -- only does the BMP, minimal validation */
-
- if (key & 0x80)
- {
- if ((key & 0xe0) == 0xc0)
- {
- if (1 < n)
- {
- key = ((key & 0x1f) << 6) | (string[1] & 0x3f);
- i = 2;
- }
- }
- else if ((key & 0xe0) == 0xe0)
- {
- if (2 < n)
- {
- key = ((key & 0x0f) << 12) | ((string[1] & 0x3f) << 6) |
- (string[2] & 0x3f);
- i = 3;
- }
- }
- }
- else
- i = 1;
-
- if (i)
- *pwc = key;
-
- return i;
-# else
- return mbtowc(pwc, s, n);
-# endif
-}
-
-size_t PDC_mbstowcs(wchar_t *dest, const char *src, size_t n)
-{
-# ifdef PDC_FORCE_UTF8
- size_t i = 0, len;
-
- if (!src || !dest)
- return 0;
-
- len = strlen(src);
-
- while (*src && i < n)
- {
- int retval = PDC_mbtowc(dest + i, src, len);
-
- if (retval < 1)
- return -1;
-
- src += retval;
- len -= retval;
- i++;
- }
-# else
- size_t i = mbstowcs(dest, src, n);
-# endif
- dest[i] = 0;
- return i;
-}
-
-size_t PDC_wcstombs(char *dest, const wchar_t *src, size_t n)
-{
-# ifdef PDC_FORCE_UTF8
- size_t i = 0;
-
- if (!src || !dest)
- return 0;
-
- while (*src && i < n)
- {
- chtype code = *src++;
-
- if (code < 0x80)
- {
- dest[i] = code;
- i++;
- }
- else
- if (code < 0x800)
- {
- dest[i] = ((code & 0x07c0) >> 6) | 0xc0;
- dest[i + 1] = (code & 0x003f) | 0x80;
- i += 2;
- }
- else
- {
- dest[i] = ((code & 0xf000) >> 12) | 0xe0;
- dest[i + 1] = ((code & 0x0fc0) >> 6) | 0x80;
- dest[i + 2] = (code & 0x003f) | 0x80;
- i += 3;
- }
- }
-# else
- size_t i = wcstombs(dest, src, n);
-# endif
- dest[i] = '\0';
- return i;
-}
-#endif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/window.c b/payloads/libpayload/curses/PDCurses-3.4/pdcurses/window.c
deleted file mode 100644
index b5634c7..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/pdcurses/window.c
+++ /dev/null
@@ -1,562 +0,0 @@
-/* Public Domain Curses */
-
-#include <curspriv.h>
-
-RCSID("$Id: window.c,v 1.62 2008/07/13 16:08:18 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: window
-
- Synopsis:
- WINDOW *newwin(int nlines, int ncols, int begy, int begx);
- WINDOW *derwin(WINDOW* orig, int nlines, int ncols,
- int begy, int begx);
- WINDOW *subwin(WINDOW* orig, int nlines, int ncols,
- int begy, int begx);
- WINDOW *dupwin(WINDOW *win);
- int delwin(WINDOW *win);
- int mvwin(WINDOW *win, int y, int x);
- int mvderwin(WINDOW *win, int pary, int parx);
- int syncok(WINDOW *win, bool bf);
- void wsyncup(WINDOW *win);
- void wcursyncup(WINDOW *win);
- void wsyncdown(WINDOW *win);
-
- WINDOW *resize_window(WINDOW *win, int nlines, int ncols);
- int wresize(WINDOW *win, int nlines, int ncols);
- WINDOW *PDC_makelines(WINDOW *win);
- WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx);
- void PDC_sync(WINDOW *win);
-
- Description:
- newwin() creates a new window with the given number of lines,
- nlines and columns, ncols. The upper left corner of the window
- is at line begy, column begx. If nlines is zero, it defaults to
- LINES - begy; ncols to COLS - begx. Create a new full-screen
- window by calling newwin(0, 0, 0, 0).
-
- delwin() deletes the named window, freeing all associated
- memory. In the case of overlapping windows, subwindows should be
- deleted before the main window.
-
- mvwin() moves the window so that the upper left-hand corner is
- at position (y,x). If the move would cause the window to be off
- the screen, it is an error and the window is not moved. Moving
- subwindows is allowed.
-
- subwin() creates a new subwindow within a window. The
- dimensions of the subwindow are nlines lines and ncols columns.
- The subwindow is at position (begy, begx) on the screen. This
- position is relative to the screen, and not to the window orig.
- Changes made to either window will affect both. When using this
- routine, you will often need to call touchwin() before calling
- wrefresh().
-
- derwin() is the same as subwin(), except that begy and begx are
- relative to the origin of the window orig rather than the
- screen. There is no difference between subwindows and derived
- windows.
-
- mvderwin() moves a derived window (or subwindow) inside its
- parent window. The screen-relative parameters of the window are
- not changed. This routine is used to display different parts of
- the parent window at the same physical position on the screen.
-
- dupwin() creates an exact duplicate of the window win.
-
- wsyncup() causes a touchwin() of all of the window's parents.
-
- If wsyncok() is called with a second argument of TRUE, this
- causes a wsyncup() to be called every time the window is
- changed.
-
- wcursyncup() causes the current cursor position of all of a
- window's ancestors to reflect the current cursor position of the
- current window.
-
- wsyncdown() causes a touchwin() of the current window if any of
- its parent's windows have been touched.
-
- resize_window() allows the user to resize an existing window. It
- returns the pointer to the new window, or NULL on failure.
-
- wresize() is an ncurses-compatible wrapper for resize_window().
- Note that, unlike ncurses, it will NOT process any subwindows of
- the window. (However, you still can call it _on_ subwindows.) It
- returns OK or ERR.
-
- PDC_makenew() allocates all data for a new WINDOW * except the
- actual lines themselves. If it's unable to allocate memory for
- the window structure, it will free all allocated memory and
- return a NULL pointer.
-
- PDC_makelines() allocates the memory for the lines.
-
- PDC_sync() handles wrefresh() and wsyncup() calls when a window
- is changed.
-
- Return Value:
- newwin(), subwin(), derwin() and dupwin() return a pointer
- to the new window, or NULL on failure. delwin(), mvwin(),
- mvderwin() and syncok() return OK or ERR. wsyncup(),
- wcursyncup() and wsyncdown() return nothing.
-
- Errors:
- It is an error to call resize_window() before calling initscr().
- Also, an error will be generated if we fail to create a newly
- sized replacement window for curscr, or stdscr. This could
- happen when increasing the window size. NOTE: If this happens,
- the previously successfully allocated windows are left alone;
- i.e., the resize is NOT cancelled for those windows.
-
- Portability X/Open BSD SYS V
- newwin Y Y Y
- delwin Y Y Y
- mvwin Y Y Y
- subwin Y Y Y
- derwin Y - Y
- mvderwin Y - Y
- dupwin Y - 4.0
- wsyncup Y - 4.0
- syncok Y - 4.0
- wcursyncup Y - 4.0
- wsyncdown Y - 4.0
- resize_window - - -
- wresize - - -
- PDC_makelines - - -
- PDC_makenew - - -
- PDC_sync - - -
-
-**man-end****************************************************************/
-
-#include <stdlib.h>
-
-WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx)
-{
- WINDOW *win;
-
- PDC_LOG(("PDC_makenew() - called: lines %d cols %d begy %d begx %d\n",
- nlines, ncols, begy, begx));
-
- /* allocate the window structure itself */
-
- if ((win = calloc(1, sizeof(WINDOW))) == (WINDOW *)NULL)
- return win;
-
- /* allocate the line pointer array */
-
- if ((win->_y = malloc(nlines * sizeof(chtype *))) == NULL)
- {
- free(win);
- return (WINDOW *)NULL;
- }
-
- /* allocate the minchng and maxchng arrays */
-
- if ((win->_firstch = malloc(nlines * sizeof(int))) == NULL)
- {
- free(win->_y);
- free(win);
- return (WINDOW *)NULL;
- }
-
- if ((win->_lastch = malloc(nlines * sizeof(int))) == NULL)
- {
- free(win->_firstch);
- free(win->_y);
- free(win);
- return (WINDOW *)NULL;
- }
-
- /* initialize window variables */
-
- win->_maxy = nlines; /* real max screen size */
- win->_maxx = ncols; /* real max screen size */
- win->_begy = begy;
- win->_begx = begx;
- win->_bkgd = ' '; /* wrs 4/10/93 -- initialize background to blank */
- win->_clear = (bool) ((nlines == LINES) && (ncols == COLS));
- win->_bmarg = nlines - 1;
- win->_parx = win->_pary = -1;
-
- /* init to say window all changed */
-
- touchwin(win);
-
- return win;
-}
-
-WINDOW *PDC_makelines(WINDOW *win)
-{
- int i, j, nlines, ncols;
-
- PDC_LOG(("PDC_makelines() - called: lines %d cols %d\n", nlines, ncols));
-
- if (!win)
- return (WINDOW *)NULL;
-
- nlines = win->_maxy;
- ncols = win->_maxx;
-
- for (i = 0; i < nlines; i++)
- {
- if ((win->_y[i] = malloc(ncols * sizeof(chtype))) == NULL)
- {
- /* if error, free all the data */
-
- for (j = 0; j < i; j++)
- free(win->_y[j]);
-
- free(win->_firstch);
- free(win->_lastch);
- free(win->_y);
- free(win);
-
- return (WINDOW *)NULL;
- }
- }
-
- return win;
-}
-
-void PDC_sync(WINDOW *win)
-{
- PDC_LOG(("PDC_sync() - called:\n"));
-
- if (win->_immed)
- wrefresh(win);
- if (win->_sync)
- wsyncup(win);
-}
-
-WINDOW *newwin(int nlines, int ncols, int begy, int begx)
-{
- WINDOW *win;
-
- PDC_LOG(("newwin() - called:lines=%d cols=%d begy=%d begx=%d\n",
- nlines, ncols, begy, begx));
-
- if (!nlines)
- nlines = LINES - begy;
- if (!ncols)
- ncols = COLS - begx;
-
- if ( (begy + nlines > SP->lines || begx + ncols > SP->cols)
- || !(win = PDC_makenew(nlines, ncols, begy, begx))
- || !(win = PDC_makelines(win)) )
- return (WINDOW *)NULL;
-
- werase(win);
-
- return win;
-}
-
-int delwin(WINDOW *win)
-{
- int i;
-
- PDC_LOG(("delwin() - called\n"));
-
- if (!win)
- return ERR;
-
- /* subwindows use parents' lines */
-
- if (!(win->_flags & (_SUBWIN|_SUBPAD)))
- for (i = 0; i < win->_maxy && win->_y[i]; i++)
- if (win->_y[i])
- free(win->_y[i]);
-
- free(win->_firstch);
- free(win->_lastch);
- free(win->_y);
- free(win);
-
- return OK;
-}
-
-int mvwin(WINDOW *win, int y, int x)
-{
- PDC_LOG(("mvwin() - called\n"));
-
- if (!win || (y + win->_maxy > LINES || y < 0)
- || (x + win->_maxx > COLS || x < 0))
- return ERR;
-
- win->_begy = y;
- win->_begx = x;
- touchwin(win);
-
- return OK;
-}
-
-WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begy, int begx)
-{
- WINDOW *win;
- int i;
- int j = begy - orig->_begy;
- int k = begx - orig->_begx;
-
- PDC_LOG(("subwin() - called: lines %d cols %d begy %d begx %d\n",
- nlines, ncols, begy, begx));
-
- /* make sure window fits inside the original one */
-
- if (!orig || (begy < orig->_begy) || (begx < orig->_begx) ||
- (begy + nlines) > (orig->_begy + orig->_maxy) ||
- (begx + ncols) > (orig->_begx + orig->_maxx))
- return (WINDOW *)NULL;
-
- if (!nlines)
- nlines = orig->_maxy - 1 - j;
- if (!ncols)
- ncols = orig->_maxx - 1 - k;
-
- if ( !(win = PDC_makenew(nlines, ncols, begy, begx)) )
- return (WINDOW *)NULL;
-
- /* initialize window variables */
-
- win->_attrs = orig->_attrs;
- win->_bkgd = orig->_bkgd;
- win->_leaveit = orig->_leaveit;
- win->_scroll = orig->_scroll;
- win->_nodelay = orig->_nodelay;
- win->_use_keypad = orig->_use_keypad;
- win->_immed = orig->_immed;
- win->_sync = orig->_sync;
- win->_pary = j;
- win->_parx = k;
- win->_parent = orig;
-
- for (i = 0; i < nlines; i++, j++)
- win->_y[i] = orig->_y[j] + k;
-
- win->_flags |= _SUBWIN;
-
- return win;
-}
-
-WINDOW *derwin(WINDOW *orig, int nlines, int ncols, int begy, int begx)
-{
- return subwin(orig, nlines, ncols, begy + orig->_begy, begx + orig->_begx);
-}
-
-int mvderwin(WINDOW *win, int pary, int parx)
-{
- int i, j;
- WINDOW *mypar;
-
- if (!win || !(win->_parent))
- return ERR;
-
- mypar = win->_parent;
-
- if (pary < 0 || parx < 0 || (pary + win->_maxy) > mypar->_maxy ||
- (parx + win->_maxx) > mypar->_maxx)
- return ERR;
-
- j = pary;
-
- for (i = 0; i < win->_maxy; i++)
- win->_y[i] = (mypar->_y[j++]) + parx;
-
- win->_pary = pary;
- win->_parx = parx;
-
- return OK;
-}
-
-WINDOW *dupwin(WINDOW *win)
-{
- WINDOW *new;
- chtype *ptr, *ptr1;
- int nlines, ncols, begy, begx, i;
-
- if (!win)
- return (WINDOW *)NULL;
-
- nlines = win->_maxy;
- ncols = win->_maxx;
- begy = win->_begy;
- begx = win->_begx;
-
- if ( !(new = PDC_makenew(nlines, ncols, begy, begx))
- || !(new = PDC_makelines(new)) )
- return (WINDOW *)NULL;
-
- /* copy the contents of win into new */
-
- for (i = 0; i < nlines; i++)
- {
- for (ptr = new->_y[i], ptr1 = win->_y[i];
- ptr < new->_y[i] + ncols; ptr++, ptr1++)
- *ptr = *ptr1;
-
- new->_firstch[i] = 0;
- new->_lastch[i] = ncols - 1;
- }
-
- new->_curx = win->_curx;
- new->_cury = win->_cury;
- new->_maxy = win->_maxy;
- new->_maxx = win->_maxx;
- new->_begy = win->_begy;
- new->_begx = win->_begx;
- new->_flags = win->_flags;
- new->_attrs = win->_attrs;
- new->_clear = win->_clear;
- new->_leaveit = win->_leaveit;
- new->_scroll = win->_scroll;
- new->_nodelay = win->_nodelay;
- new->_use_keypad = win->_use_keypad;
- new->_tmarg = win->_tmarg;
- new->_bmarg = win->_bmarg;
- new->_parx = win->_parx;
- new->_pary = win->_pary;
- new->_parent = win->_parent;
- new->_bkgd = win->_bkgd;
- new->_flags = win->_flags;
-
- return new;
-}
-
-WINDOW *resize_window(WINDOW *win, int nlines, int ncols)
-{
- WINDOW *new;
- int i, save_cury, save_curx, new_begy, new_begx;
-
- PDC_LOG(("resize_window() - called: nlines %d ncols %d\n",
- nlines, ncols));
-
- if (!win)
- return (WINDOW *)NULL;
-
- if (win->_flags & _SUBPAD)
- {
- if ( !(new = subpad(win->_parent, nlines, ncols,
- win->_begy, win->_begx)) )
- return (WINDOW *)NULL;
- }
- else if (win->_flags & _SUBWIN)
- {
- if ( !(new = subwin(win->_parent, nlines, ncols,
- win->_begy, win->_begx)) )
- return (WINDOW *)NULL;
- }
- else
- {
- if (win == SP->slk_winptr)
- {
- new_begy = SP->lines - SP->slklines;
- new_begx = 0;
- }
- else
- {
- new_begy = win->_begy;
- new_begx = win->_begx;
- }
-
- if ( !(new = PDC_makenew(nlines, ncols, new_begy, new_begx)) )
- return (WINDOW *)NULL;
- }
-
- save_curx = min(win->_curx, new->_maxx);
- save_cury = min(win->_cury, new->_maxy);
-
- if (!(win->_flags & (_SUBPAD|_SUBWIN)))
- {
- if ( !(new = PDC_makelines(new)) )
- return (WINDOW *)NULL;
-
- werase(new);
-
- copywin(win, new, 0, 0, 0, 0, min(win->_maxy, new->_maxy) - 1,
- min(win->_maxx, new->_maxx) - 1, FALSE);
-
- for (i = 0; i < win->_maxy && win->_y[i]; i++)
- if (win->_y[i])
- free(win->_y[i]);
- }
-
- new->_flags = win->_flags;
- new->_attrs = win->_attrs;
- new->_clear = win->_clear;
- new->_leaveit = win->_leaveit;
- new->_scroll = win->_scroll;
- new->_nodelay = win->_nodelay;
- new->_use_keypad = win->_use_keypad;
- new->_tmarg = (win->_tmarg > new->_maxy - 1) ? 0 : win->_tmarg;
- new->_bmarg = (win->_bmarg == win->_maxy - 1) ?
- new->_maxy - 1 : min(win->_bmarg, (new->_maxy - 1));
- new->_parent = win->_parent;
- new->_immed = win->_immed;
- new->_sync = win->_sync;
- new->_bkgd = win->_bkgd;
-
- new->_curx = save_curx;
- new->_cury = save_cury;
-
- free(win->_firstch);
- free(win->_lastch);
- free(win->_y);
-
- *win = *new;
- free(new);
-
- return win;
-}
-
-int wresize(WINDOW *win, int nlines, int ncols)
-{
- return (resize_window(win, nlines, ncols) ? OK : ERR);
-}
-
-void wsyncup(WINDOW *win)
-{
- WINDOW *tmp;
-
- PDC_LOG(("wsyncup() - called\n"));
-
- for (tmp = win; tmp; tmp = tmp->_parent)
- touchwin(tmp);
-}
-
-int syncok(WINDOW *win, bool bf)
-{
- PDC_LOG(("syncok() - called\n"));
-
- if (!win)
- return ERR;
-
- win->_sync = bf;
-
- return OK;
-}
-
-void wcursyncup(WINDOW *win)
-{
- WINDOW *tmp;
-
- PDC_LOG(("wcursyncup() - called\n"));
-
- for (tmp = win; tmp && tmp->_parent; tmp = tmp->_parent)
- wmove(tmp->_parent, tmp->_pary + tmp->_cury, tmp->_parx + tmp->_curx);
-}
-
-void wsyncdown(WINDOW *win)
-{
- WINDOW *tmp;
-
- PDC_LOG(("wsyncdown() - called\n"));
-
- for (tmp = win; tmp; tmp = tmp->_parent)
- {
- if (is_wintouched(tmp))
- {
- touchwin(win);
- break;
- }
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/Makefile b/payloads/libpayload/curses/PDCurses-3.4/sdl1/Makefile
deleted file mode 100644
index a8393f0..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/Makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# Makefile for PDCurses library for SDL
-
-O = o
-
-ifndef PDCURSES_SRCDIR
- PDCURSES_SRCDIR = ..
-endif
-
-include $(PDCURSES_SRCDIR)/libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)/sdl1
-
-PDCURSES_SDL_H = $(osdir)/pdcsdl.h
-
-SFLAGS = $(shell sdl-config --cflags)
-SLIBS = $(shell sdl-config --libs)
-
-# If your system doesn't have these, remove the defines here
-SFLAGS += -DHAVE_VSNPRINTF -DHAVE_VSSCANF
-
-ifeq ($(DEBUG),Y)
- CFLAGS = -g -Wall -DPDCDEBUG
-else
- CFLAGS = -O2 -Wall
-endif
-
-BUILD = $(CC) $(CFLAGS) -I$(PDCURSES_SRCDIR)
-
-ifeq ($(shell uname),Darwin)
- DEMOFLAGS = -Dmain=SDL_main
-endif
-
-LINK = $(CC)
-LDFLAGS = $(LIBCURSES) $(SLIBS)
-RANLIB = ranlib
-LIBCURSES = libpdcurses.a
-
-DEMOS = firework newdemo ptest rain testcurs tuidemo worm xmas \
-sdltest
-
-.PHONY: all libs clean demos
-
-all: libs demos
-
-libs: $(LIBCURSES)
-
-clean:
- -rm -rf *.o trace $(LIBCURSES) $(DEMOS)
-
-demos: $(DEMOS)
- strip $(DEMOS)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- ar rv $@ $?
- -$(RANLIB) $@
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_SDL_H)
-$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
-tui.o tuidemo.o : $(PDCURSES_CURSES_H)
-terminfo.o: $(TERM_HEADER)
-panel.o ptest: $(PANEL_HEADER)
-
-$(LIBOBJS) : %.o: $(srcdir)/%.c
- $(BUILD) $(SFLAGS) -c $<
-
-$(PDCOBJS) : %.o: $(osdir)/%.c
- $(BUILD) $(SFLAGS) -c $<
-
-firework: $(demodir)/firework.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-newdemo: $(demodir)/newdemo.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-ptest: $(demodir)/ptest.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-rain: $(demodir)/rain.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-testcurs: $(demodir)/testcurs.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-tuidemo: tuidemo.o tui.o
- $(LINK) tui.o tuidemo.o -o $@ $(LDFLAGS)
-
-worm: $(demodir)/worm.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-xmas: $(demodir)/xmas.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-sdltest: $(osdir)/sdltest.c
- $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
-
-tui.o: $(demodir)/tui.c $(demodir)/tui.h
- $(BUILD) -c $(DEMOFLAGS) $(demodir)/tui.c
-
-tuidemo.o: $(demodir)/tuidemo.c
- $(BUILD) -c $(DEMOFLAGS) $(demodir)/tuidemo.c
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/Makefile.mng b/payloads/libpayload/curses/PDCurses-3.4/sdl1/Makefile.mng
deleted file mode 100644
index 427edc6..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/Makefile.mng
+++ /dev/null
@@ -1,105 +0,0 @@
-# Makefile for PDCurses library for SDL
-
-O = o
-
-ifndef PDCURSES_SRCDIR
- PDCURSES_SRCDIR = ..
-endif
-
-include $(PDCURSES_SRCDIR)/libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)/sdl1
-
-PDCURSES_SDL_H = $(osdir)/pdcsdl.h
-
-ifeq ($(DEBUG),Y)
- CFLAGS = -g -Wall -DPDCDEBUG
-else
- CFLAGS = -O2 -Wall
-endif
-
-CC = gcc
-BUILD = $(CC) $(CFLAGS) -I$(PDCURSES_SRCDIR)
-LDFLAGS = -mwindows $(LIBCURSES)
-
-BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
-
-DEFDEPS = $(BASEDEF)
-
-DEFFILE = pdcurses.def
-
-ifeq ($(DLL),Y)
- BUILD += -DPDC_DLL_BUILD
- LIBEXE = gcc $(DEFFILE)
- LIBFLAGS = -Wl,--out-implib,libpdcurses.a -shared -o
- LIBCURSES = pdcurses.dll
- CLEAN = $(LIBCURSES) *.a $(DEFFILE)
- POST = -lSDL
-else
- LIBEXE = ar
- LIBFLAGS = rcv
- LIBCURSES = libpdcurses.a
- CLEAN = *.a
- LDFLAGS += -lSDL
-endif
-
-DEMOS += sdltest.exe
-
-.PHONY: all libs clean demos
-
-all: libs demos
-
-libs: $(LIBCURSES)
-
-clean:
- -del *.o $(CLEAN) *.exe
-
-demos: $(DEMOS)
- strip *.exe
-
-pdcurses.dll: $(DEFFILE)
-
-$(DEFFILE): $(DEFDEPS)
- echo LIBRARY pdcurses > $@
- echo EXPORTS >> $@
- type $(BASEDEF) >> $@
- echo pdc_screen >> $@
- echo pdc_font >> $@
- echo pdc_icon >> $@
- echo pdc_back >> $@
- echo pdc_sheight >> $@
- echo pdc_swidth >> $@
- echo pdc_yoffset >> $@
- echo pdc_xoffset >> $@
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $(LIBFLAGS) $@ $? $(POST)
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_SDL_H)
-$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
-tui.o tuidemo.o : $(PDCURSES_CURSES_H)
-terminfo.o: $(TERM_HEADER)
-panel.o ptest.exe: $(PANEL_HEADER)
-
-$(LIBOBJS) : %.o: $(srcdir)/%.c
- $(BUILD) -c $<
-
-$(PDCOBJS) : %.o: $(osdir)/%.c
- $(BUILD) -c $<
-
-firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
-ptest.exe: %.exe: $(demodir)/%.c
- $(BUILD) -o $@ $< $(LDFLAGS)
-
-tuidemo.exe: tuidemo.o tui.o
- $(CC) -o $@ tuidemo.o tui.o $(LDFLAGS)
-
-tui.o: $(demodir)/tui.c $(demodir)/tui.h
- $(BUILD) -c $<
-
-tuidemo.o: $(demodir)/tuidemo.c $(demodir)/tui.h
- $(BUILD) -c $<
-
-sdltest.exe: $(osdir)/sdltest.c
- $(BUILD) -o $@ $< -mwindows $(LIBCURSES) -lmingw32 -lSDLmain -lSDL
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/README b/payloads/libpayload/curses/PDCurses-3.4/sdl1/README
deleted file mode 100644
index 35234d3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/README
+++ /dev/null
@@ -1,33 +0,0 @@
-PDCurses for SDL
-================
-
-This is a port of PDCurses for SDL.
-
-
-Building
---------
-
-. On *nix (including Linux and Mac OS X), run "make" in the sdl1
- directory. There is no configure script (yet?) for this port. This
- assumes a working sdl-config, and GNU make. It builds the library
- libpdcurses.a (dynamic lib not implemented).
-
- With MinGW, run "make -f Makefile.mng". This assumes SDL is installed
- in the standard directories. The MinGW makefile accepts the optional
- parameters "DLL=Y" and "DEBUG=Y", as with the console version. (Wide-
- character support is not yet implemented for SDL.) Both makefiles
- recognize the optional PDCURSES_SRCDIR environment variable, as with
- the console ports. Makefile.mng builds libpdcurses.a, along with
- pdcurses.dll, if specified.
-
-
-Distribution Status
--------------------
-
-The files in this directory are released to the Public Domain.
-
-
-Acknowledgements
-----------------
-
-SDL port was provided by William McBrine <wmcbrine at users.sf.net>
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/deffont.h b/payloads/libpayload/curses/PDCurses-3.4/sdl1/deffont.h
deleted file mode 100644
index cf9cab1..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/deffont.h
+++ /dev/null
@@ -1,385 +0,0 @@
-/* Default font -- this is simply a 256x128x1 BMP, in #include'able form.
- The font is 8x16, code page 437, and is based on the pc8x16s.bdf font
- from the vgafonts.tar.gz package, by "Myrlin". */
-
-unsigned char deffont[] =
-{
- 0x42, 0x4d, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
- 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b,
- 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x60,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x76, 0xf8, 0xc0, 0x6c, 0xfe, 0x70, 0x7c, 0x18,
- 0x7e, 0x38, 0xee, 0x3c, 0x00, 0xc0, 0x1c, 0xc6, 0x00, 0x7e, 0x7e,
- 0x7e, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
- 0x00, 0x00, 0xdc, 0xcc, 0xc0, 0x6c, 0xc6, 0xd8, 0x66, 0x18, 0x18,
- 0x6c, 0x6c, 0x66, 0x00, 0x60, 0x30, 0xc6, 0xfe, 0x00, 0x00, 0x00,
- 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7e,
- 0x00, 0xd8, 0xcc, 0xc0, 0x6c, 0x60, 0xd8, 0x66, 0x18, 0x3c, 0xc6,
- 0x6c, 0x66, 0x7e, 0x7e, 0x60, 0xc6, 0x00, 0x00, 0x30, 0x0c, 0x18,
- 0xd8, 0x18, 0xdc, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00,
- 0xd8, 0xcc, 0xc0, 0x6c, 0x30, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c,
- 0x66, 0xdb, 0xf3, 0x60, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x00, 0x76, 0x00, 0x18, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00, 0xd8,
- 0xc8, 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c, 0x66,
- 0xdb, 0xdb, 0x60, 0xc6, 0xfe, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x7e,
- 0x00, 0x00, 0x18, 0x18, 0xec, 0x00, 0x00, 0x7e, 0x00, 0xdc, 0xdc,
- 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xfe, 0xc6, 0x3e, 0xdb,
- 0xdb, 0x7c, 0xc6, 0x00, 0x7e, 0x06, 0x60, 0x18, 0x18, 0x00, 0xdc,
- 0x00, 0x00, 0x00, 0x0c, 0x36, 0x7e, 0x7e, 0x00, 0x76, 0xce, 0xc0,
- 0xfe, 0x30, 0x7e, 0x66, 0xdc, 0x66, 0xc6, 0xc6, 0x0c, 0x7e, 0x7e,
- 0x60, 0xc6, 0x00, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x18, 0x76, 0x00,
- 0x00, 0x00, 0x0c, 0x36, 0x32, 0x7e, 0x00, 0x00, 0xc6, 0xc6, 0x00,
- 0x60, 0x00, 0x00, 0x76, 0x3c, 0xc6, 0xc6, 0x18, 0x00, 0x06, 0x60,
- 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x1b, 0x18, 0x00, 0x00, 0x38, 0x00,
- 0x00, 0x0c, 0x36, 0x18, 0x7e, 0x00, 0x00, 0xce, 0xc6, 0x00, 0xc6,
- 0x00, 0x00, 0x00, 0x18, 0x6c, 0x6c, 0x30, 0x00, 0x03, 0x30, 0x7c,
- 0x00, 0x00, 0x30, 0x0c, 0x1b, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00,
- 0x0c, 0x36, 0x0c, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0x00, 0xfe, 0x00,
- 0x00, 0x00, 0x7e, 0x38, 0x38, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x0c,
- 0x36, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0f, 0x6c,
- 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00,
- 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00,
- 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36,
- 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00,
- 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00,
- 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18,
- 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00,
- 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36,
- 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36,
- 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36,
- 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36,
- 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18,
- 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00,
- 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18,
- 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18,
- 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36,
- 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00,
- 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
- 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00,
- 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18,
- 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x1f, 0xff, 0xff, 0x1f, 0xff, 0xff,
- 0x1f, 0x37, 0x3f, 0x37, 0xff, 0xf7, 0x37, 0xff, 0xf7, 0xff, 0xff,
- 0xff, 0xff, 0x3f, 0x1f, 0x1f, 0x3f, 0xff, 0xff, 0xf8, 0x1f, 0xff,
- 0xff, 0xf0, 0x0f, 0x00, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18,
- 0x36, 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00,
- 0x00, 0x36, 0x18, 0x18, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00,
- 0xf0, 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x1f, 0x36,
- 0x37, 0x3f, 0xf7, 0xff, 0x37, 0xff, 0xf7, 0xff, 0x36, 0xff, 0x00,
- 0x36, 0x1f, 0x1f, 0x00, 0x36, 0xff, 0x18, 0x00, 0xff, 0x00, 0xf0,
- 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36,
- 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36,
- 0x18, 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f,
- 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00,
- 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18,
- 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff,
- 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36,
- 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00,
- 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18,
- 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00,
- 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00,
- 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18, 0x18,
- 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00, 0x36,
- 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00, 0x36,
- 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18,
- 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36,
- 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x06, 0x00, 0x00, 0x00,
- 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36,
- 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x11,
- 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36,
- 0x00, 0x00, 0x00, 0x18, 0x76, 0x18, 0x7c, 0x78, 0x66, 0xc6, 0x00,
- 0x00, 0x7c, 0x00, 0x00, 0x0c, 0x3f, 0x18, 0x00, 0x00, 0x44, 0xaa,
- 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00,
- 0x00, 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00,
- 0xc6, 0xc0, 0x06, 0x86, 0x9a, 0x3c, 0x00, 0x00, 0x11, 0x55, 0xdd,
- 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00,
- 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00, 0xc6,
- 0xc0, 0x06, 0xdc, 0xce, 0x3c, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18,
- 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00,
- 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xce, 0x00, 0x00, 0xc0, 0xc0,
- 0x06, 0x60, 0x66, 0x3c, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18,
- 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18,
- 0x7c, 0x18, 0xc6, 0xcc, 0x66, 0xde, 0x7e, 0x7c, 0x60, 0xc0, 0x06,
- 0x30, 0x30, 0x18, 0xd8, 0x36, 0x44, 0xaa, 0x77, 0x18, 0xf8, 0xf8,
- 0xf6, 0xfe, 0xf8, 0xf6, 0x36, 0xf6, 0xfe, 0xfe, 0xf8, 0xf8, 0x0c,
- 0x18, 0xc6, 0xcc, 0x66, 0xfe, 0x00, 0x00, 0x30, 0xfe, 0xfe, 0x18,
- 0x18, 0x18, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36,
- 0x00, 0x18, 0x06, 0x36, 0x06, 0x06, 0x36, 0x18, 0x00, 0x78, 0x38,
- 0x7c, 0xcc, 0x5c, 0xf6, 0x3e, 0x38, 0x30, 0x00, 0x00, 0x6c, 0x6c,
- 0x18, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18, 0x18, 0xf8, 0x36, 0x00,
- 0xf8, 0xf6, 0x36, 0xfe, 0xf6, 0x36, 0xf8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xe6, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00,
- 0x00, 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00,
- 0x36, 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x60, 0x30, 0x60, 0x60,
- 0xdc, 0xc6, 0x6c, 0x6c, 0x30, 0x00, 0x00, 0x62, 0x62, 0x18, 0x00,
- 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36,
- 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x30, 0x18, 0x30, 0x30, 0x76,
- 0x00, 0x3c, 0x38, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x18, 0x00, 0x00,
- 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36,
- 0x00, 0x36, 0x36, 0x18, 0x00, 0x18, 0x0c, 0x18, 0x18, 0x00, 0xdc,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x44,
- 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00,
- 0x36, 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x55,
- 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00, 0x36,
- 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
- 0x78, 0x7c, 0x76, 0x76, 0x76, 0x76, 0x7c, 0x7c, 0x7c, 0x7c, 0x18,
- 0x18, 0x18, 0xc6, 0xc6, 0xfc, 0x6e, 0xce, 0x7c, 0x7c, 0x7c, 0x78,
- 0x78, 0x76, 0x7c, 0x7c, 0x18, 0xfe, 0x18, 0xc6, 0x70, 0x3c, 0xcc,
- 0xc2, 0xcc, 0xcc, 0xcc, 0xcc, 0xc6, 0xc2, 0xc2, 0xc2, 0x18, 0x18,
- 0x18, 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc,
- 0xce, 0xc6, 0xc6, 0x18, 0x60, 0x7e, 0xcc, 0xd8, 0x66, 0xcc, 0xc0,
- 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18,
- 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6,
- 0xc6, 0xc6, 0x7c, 0x60, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0xc0, 0xcc,
- 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18, 0xfe,
- 0xc6, 0xc0, 0x7e, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6,
- 0xc6, 0xc6, 0x60, 0x7e, 0xcc, 0x18, 0xc0, 0xcc, 0xfe, 0x7c, 0x7c,
- 0x7c, 0x7c, 0xc0, 0xfe, 0xfe, 0xfe, 0x18, 0x18, 0x18, 0xc6, 0xfe,
- 0xf0, 0x36, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6,
- 0xc0, 0x60, 0x18, 0xde, 0x18, 0xc0, 0xcc, 0xc6, 0x0c, 0x0c, 0x0c,
- 0x0c, 0xc6, 0xc6, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0xc6, 0xc6, 0xc0,
- 0x36, 0xfe, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0,
- 0xf8, 0x3c, 0xcc, 0x7e, 0xc0, 0xcc, 0x7c, 0x78, 0x78, 0x78, 0x78,
- 0x7c, 0x7c, 0x7c, 0x7c, 0x38, 0x38, 0x38, 0x6c, 0x6c, 0xc0, 0xec,
- 0xcc, 0x7c, 0x7c, 0x7c, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0, 0x60,
- 0x66, 0xc4, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0xc0, 0x00, 0xcc,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x60, 0x66,
- 0xf8, 0x18, 0x3c, 0xcc, 0x30, 0x6c, 0x00, 0x18, 0x38, 0x00, 0x6c,
- 0x00, 0x18, 0x00, 0x66, 0x18, 0x10, 0x10, 0xfc, 0x00, 0x6c, 0x6c,
- 0x00, 0x18, 0xcc, 0x18, 0x00, 0x7c, 0xc6, 0x7c, 0x62, 0x66, 0xcc,
- 0x18, 0x00, 0xcc, 0x18, 0x38, 0xcc, 0x30, 0x6c, 0x00, 0x38, 0xc6,
- 0x30, 0x66, 0x3c, 0x30, 0x00, 0x38, 0x00, 0x00, 0x3e, 0x38, 0xc6,
- 0x30, 0x78, 0x30, 0xc6, 0x00, 0x00, 0x18, 0x3c, 0x66, 0xcc, 0x1b,
- 0x00, 0x00, 0x0c, 0x10, 0x00, 0x60, 0x38, 0x00, 0x10, 0x00, 0x60,
- 0x00, 0x18, 0x60, 0xc6, 0x6c, 0x30, 0x00, 0x00, 0x10, 0x00, 0x60,
- 0x30, 0x60, 0x00, 0xc6, 0xc6, 0x18, 0x00, 0x00, 0xf8, 0x0e, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xf8, 0x78, 0x7c, 0x7c,
- 0x30, 0x7c, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xc6, 0xcc, 0x78, 0xf8,
- 0x7c, 0xc0, 0x7c, 0x30, 0x78, 0x10, 0x6c, 0xc6, 0x76, 0xfe, 0x0e,
- 0x18, 0x70, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xc4, 0xcc, 0xc2, 0x30,
- 0xcc, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc,
- 0xc0, 0x86, 0x30, 0xcc, 0x6c, 0xfe, 0x6c, 0xce, 0xc0, 0x18, 0x18,
- 0x18, 0x00, 0xfe, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc,
- 0xcc, 0x18, 0x0c, 0xd8, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0,
- 0x06, 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x60, 0x18, 0x18, 0x18,
- 0x00, 0xc6, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc, 0xcc,
- 0x18, 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0x1c,
- 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x30, 0x18, 0x18, 0x18, 0x00,
- 0xc6, 0x00, 0x7c, 0xcc, 0xc0, 0xcc, 0xfe, 0x30, 0xcc, 0xcc, 0x18,
- 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x70, 0x30,
- 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x18, 0x18, 0x18, 0x18, 0x00, 0xc6,
- 0x00, 0x0c, 0xcc, 0xc4, 0xcc, 0xc6, 0x78, 0xcc, 0xec, 0x18, 0x0c,
- 0xd8, 0x18, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xec, 0xc2, 0x30, 0xcc,
- 0xc6, 0xc6, 0x6c, 0xc6, 0x0c, 0x70, 0x18, 0x0e, 0x00, 0x6c, 0x00,
- 0x78, 0xf8, 0x78, 0x7c, 0x7c, 0x30, 0x7c, 0xd8, 0x38, 0x0c, 0xcc,
- 0x18, 0xec, 0xb8, 0x78, 0xf8, 0x7c, 0xb8, 0x7c, 0xfc, 0xcc, 0xc6,
- 0xc6, 0xc6, 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x00, 0x38, 0x00, 0x00,
- 0xc0, 0x00, 0x0c, 0x00, 0x32, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x10, 0x0c, 0x00, 0xc0,
- 0x00, 0x0c, 0x00, 0x36, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x18, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0xc0, 0x00,
- 0x0c, 0x00, 0x1c, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x38, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0e, 0x18, 0x70, 0xdc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7c, 0xc6, 0xfc, 0x3c, 0xf8, 0xfc, 0xc0, 0x3e, 0xc6, 0x18, 0x78,
- 0xc2, 0xfc, 0xc6, 0xc6, 0x7c, 0xc0, 0x7c, 0xc6, 0x7c, 0x18, 0x7c,
- 0x10, 0x6c, 0xc6, 0x18, 0xfe, 0x3c, 0x02, 0x3c, 0x00, 0x00, 0xc0,
- 0xc6, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x66, 0xc6, 0x18, 0xcc, 0xc6,
- 0xc0, 0xc6, 0xc6, 0xc6, 0xc0, 0xde, 0xc6, 0x86, 0x18, 0xc6, 0x38,
- 0xee, 0xc6, 0x18, 0xc0, 0x30, 0x06, 0x0c, 0x00, 0x00, 0xdc, 0xc6,
- 0xc6, 0xc2, 0xce, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xcc, 0xc0,
- 0xc6, 0xc6, 0xc6, 0xc0, 0xd6, 0xcc, 0x06, 0x18, 0xc6, 0x6c, 0xfe,
- 0x6c, 0x18, 0xc0, 0x30, 0x0e, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xc6,
- 0xc0, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xd8, 0xc0, 0xc6,
- 0xc6, 0xc6, 0xc0, 0xc6, 0xcc, 0x06, 0x18, 0xc6, 0xc6, 0xd6, 0x7c,
- 0x18, 0x60, 0x30, 0x1c, 0x0c, 0x00, 0x00, 0xde, 0xfe, 0xc6, 0xc0,
- 0xc6, 0xc0, 0xc0, 0xde, 0xc6, 0x18, 0x0c, 0xf0, 0xc0, 0xc6, 0xce,
- 0xc6, 0xc0, 0xc6, 0xd8, 0x0c, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x18,
- 0x30, 0x30, 0x38, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xfc, 0xc0, 0xc6,
- 0xf8, 0xf8, 0xc0, 0xfe, 0x18, 0x0c, 0xf0, 0xc0, 0xd6, 0xde, 0xc6,
- 0xfc, 0xc6, 0xfc, 0x38, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x3c, 0x18,
- 0x30, 0x70, 0x0c, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc0, 0xc6, 0xc0,
- 0xc0, 0xc0, 0xc6, 0x18, 0x0c, 0xd8, 0xc0, 0xfe, 0xfe, 0xc6, 0xc6,
- 0xc6, 0xc6, 0x60, 0x18, 0xc6, 0xc6, 0xc6, 0x7c, 0x66, 0x0c, 0x30,
- 0xe0, 0x0c, 0x00, 0x00, 0xc6, 0x6c, 0xc6, 0xc2, 0xce, 0xc0, 0xc0,
- 0xc0, 0xc6, 0x18, 0x0c, 0xcc, 0xc0, 0xfe, 0xf6, 0xc6, 0xc6, 0xc6,
- 0xc6, 0xc0, 0x18, 0xc6, 0xc6, 0xc6, 0x6c, 0x66, 0x06, 0x30, 0xc0,
- 0x0c, 0x00, 0x00, 0x7c, 0x38, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x62,
- 0xc6, 0x18, 0x0c, 0xc6, 0xc0, 0xee, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6,
- 0xc2, 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0x06, 0x30, 0x80, 0x0c,
- 0xc6, 0x00, 0x00, 0x10, 0xfc, 0x3c, 0xf8, 0xfc, 0xfc, 0x3c, 0xc6,
- 0x18, 0x1e, 0xc2, 0xc0, 0xc6, 0xc6, 0x7c, 0xfc, 0x7c, 0xfc, 0x7c,
- 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0xfe, 0x3c, 0x00, 0x3c, 0x6c,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x7c,
- 0x86, 0x76, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x18, 0x00, 0x18, 0x80,
- 0x38, 0x18, 0xfe, 0x7c, 0x0c, 0x7c, 0x7c, 0x30, 0x7c, 0x78, 0x00,
- 0x30, 0x06, 0x00, 0x60, 0x18, 0x00, 0x18, 0x00, 0x6c, 0xc6, 0xc6,
- 0xcc, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0x18, 0xc0, 0x6c,
- 0x18, 0xc0, 0x86, 0x0c, 0x86, 0xc6, 0x30, 0xc6, 0x8c, 0x18, 0x18,
- 0x0c, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0xfe, 0x86, 0x60, 0xcc,
- 0x00, 0x30, 0x0c, 0x66, 0x18, 0x18, 0x00, 0x00, 0x60, 0xc6, 0x18,
- 0xc0, 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x18, 0x18, 0x18,
- 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x30, 0xcc, 0x00,
- 0x30, 0x0c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x30, 0xe6, 0x18, 0x60,
- 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x00, 0x00, 0x30, 0x7e,
- 0x0c, 0x18, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x18, 0xdc, 0x00, 0x30,
- 0x0c, 0xff, 0x7e, 0x00, 0xfe, 0x00, 0x18, 0xf6, 0x18, 0x30, 0x06,
- 0xfe, 0x06, 0xe6, 0x18, 0xc6, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06,
- 0x18, 0x00, 0x18, 0x00, 0x6c, 0x7c, 0x0c, 0x76, 0x00, 0x30, 0x0c,
- 0x3c, 0x18, 0x00, 0x00, 0x00, 0x0c, 0xde, 0x18, 0x18, 0x3c, 0xcc,
- 0xfc, 0xdc, 0x0c, 0x7c, 0x7e, 0x00, 0x00, 0x30, 0x00, 0x0c, 0x18,
- 0x00, 0x3c, 0x00, 0xfe, 0xc0, 0xc6, 0x38, 0x00, 0x30, 0x0c, 0x66,
- 0x18, 0x00, 0x00, 0x00, 0x06, 0xce, 0x18, 0x0c, 0x06, 0x6c, 0xc0,
- 0xc0, 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x0c, 0x00,
- 0x3c, 0x24, 0x6c, 0xc2, 0xc2, 0x6c, 0x60, 0x30, 0x0c, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x02, 0xc6, 0x78, 0x06, 0x06, 0x3c, 0xc0, 0xc0,
- 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x0c, 0x00, 0x30, 0xc6, 0x00, 0x3c,
- 0x66, 0x6c, 0xc6, 0x00, 0x6c, 0x30, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x6c, 0x38, 0xc6, 0x86, 0x1c, 0xc0, 0x60, 0x06,
- 0xc6, 0xc6, 0x00, 0x00, 0x06, 0x00, 0x60, 0xc6, 0x00, 0x18, 0x66,
- 0x00, 0x7c, 0x00, 0x38, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x18, 0x7c, 0x7c, 0x0c, 0xfe, 0x3c, 0xfe, 0x7c,
- 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x66, 0x00,
- 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
- 0x00, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7e, 0x7e, 0x10, 0x00, 0x3c, 0x3c, 0x00, 0xff, 0x00,
- 0xff, 0x78, 0x18, 0xe0, 0xe6, 0x18, 0x80, 0x02, 0x00, 0x66, 0x1b,
- 0xc6, 0xfe, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x81, 0xff, 0x38, 0x10, 0x18, 0x18, 0x00, 0xff, 0x3c, 0xc3,
- 0xcc, 0x18, 0xf0, 0xe7, 0x18, 0xc0, 0x06, 0x18, 0x66, 0x1b, 0x0c,
- 0xfe, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x10, 0x00,
- 0x81, 0xff, 0x7c, 0x38, 0x18, 0x18, 0x18, 0xe7, 0x66, 0x99, 0xcc,
- 0x7e, 0x70, 0x67, 0xdb, 0xe0, 0x0e, 0x3c, 0x00, 0x1b, 0x38, 0xfe,
- 0x3c, 0x18, 0x7e, 0x18, 0x30, 0xfe, 0x28, 0xfe, 0x38, 0x00, 0x99,
- 0xe7, 0xfe, 0x7c, 0xe7, 0x7e, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x18,
- 0x30, 0x63, 0x3c, 0xf0, 0x1e, 0x7e, 0x66, 0x1b, 0x6c, 0xfe, 0x7e,
- 0x18, 0x18, 0x0c, 0x60, 0xc0, 0x6c, 0x7c, 0x38, 0x00, 0xbd, 0xc3,
- 0xfe, 0xfe, 0xe7, 0xff, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x3c, 0x30,
- 0x63, 0xe7, 0xf8, 0x3e, 0x18, 0x66, 0x1b, 0xc6, 0x00, 0x18, 0x18,
- 0x18, 0xfe, 0xfe, 0xc0, 0xfe, 0x7c, 0x7c, 0x00, 0x81, 0xff, 0xfe,
- 0x7c, 0xe7, 0xff, 0x18, 0xe7, 0x66, 0x99, 0x78, 0x66, 0x30, 0x63,
- 0x3c, 0xfe, 0xfe, 0x18, 0x66, 0x7b, 0xc6, 0x00, 0x18, 0x18, 0x18,
- 0x0c, 0x60, 0xc0, 0x6c, 0x38, 0x7c, 0x00, 0x81, 0xff, 0xfe, 0x38,
- 0x3c, 0x7e, 0x00, 0xff, 0x3c, 0xc3, 0x32, 0x66, 0x30, 0x63, 0xdb,
- 0xf8, 0x3e, 0x18, 0x66, 0xdb, 0x6c, 0x00, 0x18, 0x18, 0x18, 0x18,
- 0x30, 0x00, 0x28, 0x38, 0xfe, 0x00, 0xa5, 0xdb, 0x6c, 0x10, 0x3c,
- 0x3c, 0x00, 0xff, 0x00, 0xff, 0x1a, 0x66, 0x3f, 0x7f, 0x18, 0xf0,
- 0x1e, 0x7e, 0x66, 0xdb, 0x38, 0x00, 0x7e, 0x7e, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0xfe, 0x00, 0x81, 0xff, 0x00, 0x00, 0x18, 0x18,
- 0x00, 0xff, 0x00, 0xff, 0x0e, 0x66, 0x33, 0x63, 0x18, 0xe0, 0x0e,
- 0x3c, 0x66, 0xdb, 0x60, 0x00, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0x00, 0xff, 0x1e, 0x3c, 0x3f, 0x7f, 0x00, 0xc0, 0x06, 0x18,
- 0x66, 0x7f, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
- 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00,
- 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
- 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/deficon.h b/payloads/libpayload/curses/PDCurses-3.4/sdl1/deficon.h
deleted file mode 100644
index 7248ab5..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/deficon.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* The PDCurses logo as #include'able BMP (from ../x11/little_icon.xbm) */
-
-unsigned char deficon[] =
-{
- 0x42, 0x4d, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
- 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x00, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b,
- 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x6f, 0x9c,
- 0xe7, 0xb5, 0xaf, 0x6b, 0x5b, 0xbd, 0xaf, 0xeb, 0xfb, 0xbd, 0xaf,
- 0x98, 0xe7, 0xbd, 0xaf, 0x7b, 0x5f, 0xb5, 0xa5, 0x6b, 0x5b, 0xcd,
- 0xab, 0x9c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xcf, 0x03, 0xff, 0xff, 0xce, 0x03, 0xff, 0xff, 0xcc, 0x73,
- 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc,
- 0x73, 0xff, 0xff, 0xc6, 0x33, 0xff, 0xff, 0xc3, 0x13, 0xff, 0xff,
- 0xc1, 0x83, 0xff, 0xff, 0xc8, 0xc3, 0xff, 0xff, 0xcc, 0x63, 0xff,
- 0xff, 0xce, 0x33, 0xff, 0xff, 0xcf, 0x33, 0xff, 0xff, 0xcf, 0x33,
- 0xff, 0xff, 0xce, 0x33, 0xff, 0xff, 0xc0, 0x73, 0xff, 0xff, 0xc0,
- 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff
-};
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcclip.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcclip.c
deleted file mode 100644
index 30cb06c..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcclip.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcsdl.h"
-
-RCSID("$Id: pdcclip.c,v 1.6 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <stdlib.h>
-
-/*man-start**************************************************************
-
- Name: clipboard
-
- Synopsis:
- int PDC_getclipboard(char **contents, long *length);
- int PDC_setclipboard(const char *contents, long length);
- int PDC_freeclipboard(char *contents);
- int PDC_clearclipboard(void);
-
- Description:
- PDC_getclipboard() gets the textual contents of the system's
- clipboard. This function returns the contents of the clipboard
- in the contents argument. It is the responsibilitiy of the
- caller to free the memory returned, via PDC_freeclipboard().
- The length of the clipboard contents is returned in the length
- argument.
-
- PDC_setclipboard copies the supplied text into the system's
- clipboard, emptying the clipboard prior to the copy.
-
- PDC_clearclipboard() clears the internal clipboard.
-
- Return Values:
- indicator of success/failure of call.
- PDC_CLIP_SUCCESS the call was successful
- PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
- the clipboard contents
- PDC_CLIP_EMPTY the clipboard contains no text
- PDC_CLIP_ACCESS_ERROR no clipboard support
-
- Portability X/Open BSD SYS V
- PDC_getclipboard - - -
- PDC_setclipboard - - -
- PDC_freeclipboard - - -
- PDC_clearclipboard - - -
-
-**man-end****************************************************************/
-
-/* global clipboard contents, should be NULL if none set */
-
-static char *pdc_SDL_clipboard = NULL;
-
-int PDC_getclipboard(char **contents, long *length)
-{
- int len;
-
- PDC_LOG(("PDC_getclipboard() - called\n"));
-
- if (!pdc_SDL_clipboard)
- return PDC_CLIP_EMPTY;
-
- len = strlen(pdc_SDL_clipboard);
- if ((*contents = malloc(len + 1)) == NULL)
- return PDC_CLIP_MEMORY_ERROR;
-
- strcpy(*contents, pdc_SDL_clipboard);
- *length = len;
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_setclipboard(const char *contents, long length)
-{
- PDC_LOG(("PDC_setclipboard() - called\n"));
-
- if (pdc_SDL_clipboard)
- {
- free(pdc_SDL_clipboard);
- pdc_SDL_clipboard = NULL;
- }
-
- if (contents)
- {
- if ((pdc_SDL_clipboard = malloc(length + 1)) == NULL)
- return PDC_CLIP_MEMORY_ERROR;
-
- strcpy(pdc_SDL_clipboard, contents);
- }
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_freeclipboard(char *contents)
-{
- PDC_LOG(("PDC_freeclipboard() - called\n"));
-
- /* should we also free empty the system clipboard? probably not */
-
- if (contents)
- {
- /* NOTE: We free the memory, but we can not set caller's pointer
- to NULL, so if caller calls again then will try to access
- free'd memory. We 1st overwrite memory with a string so if
- caller tries to use free memory they won't get what they
- expect & hopefully notice. */
-
- /* memset(contents, 0xFD, strlen(contents)); */
-
- if (strlen(contents) >= strlen("PDCURSES"))
- strcpy(contents, "PDCURSES");
-
- free(contents);
- }
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_clearclipboard(void)
-{
- PDC_LOG(("PDC_clearclipboard() - called\n"));
-
- if (pdc_SDL_clipboard)
- {
- free(pdc_SDL_clipboard);
- pdc_SDL_clipboard = NULL;
- }
-
- return PDC_CLIP_SUCCESS;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcdisp.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcdisp.c
deleted file mode 100644
index fe46335..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcdisp.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcsdl.h"
-
-RCSID("$Id: pdcdisp.c,v 1.35 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef CHTYPE_LONG
-
-# define A(x) ((chtype)x | A_ALTCHARSET)
-
-chtype acs_map[128] =
-{
- A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9),
- A(10), A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18),
- A(19), A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27),
- A(28), A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&',
- '\'', '(', ')', '*',
-
- A(0x1a), A(0x1b), A(0x18), A(0x19),
-
- '/',
-
- 0xdb,
-
- '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
- '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
-
- A(0x04), 0xb1,
-
- 'b', 'c', 'd', 'e',
-
- 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d,
- 0x2d, 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3,
- 0xf2, 0xe3, 0xd8, 0x9c, 0xf9,
-
- A(127)
-};
-
-# undef A
-
-#endif
-
-Uint32 pdc_lastupdate = 0;
-
-#define MAXRECT 200 /* maximum number of rects to queue up before
- an update is forced; the number was chosen
- arbitrarily */
-
-static SDL_Rect uprect[MAXRECT]; /* table of rects to update */
-static chtype oldch = (chtype)(-1); /* current attribute */
-static int rectcount = 0; /* index into uprect */
-static short foregr = -2, backgr = -2; /* current foreground, background */
-
-/* do the real updates on a delay */
-
-void PDC_update_rects(void)
-{
- if (rectcount)
- {
- /* if the maximum number of rects has been reached, we're
- probably better off doing a full screen update */
-
- if (rectcount == MAXRECT)
- SDL_Flip(pdc_screen);
- else
- SDL_UpdateRects(pdc_screen, rectcount, uprect);
-
- pdc_lastupdate = SDL_GetTicks();
- rectcount = 0;
- }
-}
-
-/* set the font colors to match the chtype's attribute */
-
-static void _set_attr(chtype ch)
-{
- ch &= (A_COLOR|A_BOLD|A_BLINK|A_REVERSE);
-
- if (oldch != ch)
- {
- short newfg, newbg;
-
- if (SP->mono)
- return;
-
- PDC_pair_content(PAIR_NUMBER(ch), &newfg, &newbg);
-
- newfg |= (ch & A_BOLD) ? 8 : 0;
- newbg |= (ch & A_BLINK) ? 8 : 0;
-
- if (ch & A_REVERSE)
- {
- short tmp = newfg;
- newfg = newbg;
- newbg = tmp;
- }
-
- if (newfg != foregr)
- {
- SDL_SetPalette(pdc_font, SDL_LOGPAL,
- pdc_color + newfg, pdc_flastc, 1);
- foregr = newfg;
- }
-
- if (newbg != backgr)
- {
- if (newbg == -1)
- SDL_SetColorKey(pdc_font, SDL_SRCCOLORKEY, 0);
- else
- {
- if (backgr == -1)
- SDL_SetColorKey(pdc_font, 0, 0);
-
- SDL_SetPalette(pdc_font, SDL_LOGPAL,
- pdc_color + newbg, 0, 1);
- }
-
- backgr = newbg;
- }
-
- oldch = ch;
- }
-}
-
-/* draw a cursor at (y, x) */
-
-void PDC_gotoyx(int row, int col)
-{
- SDL_Rect src, dest;
- chtype ch;
- int oldrow, oldcol;
-
- PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n",
- row, col, SP->cursrow, SP->curscol));
-
- if (SP->mono)
- return;
-
- oldrow = SP->cursrow;
- oldcol = SP->curscol;
-
- /* clear the old cursor */
-
- PDC_transform_line(oldrow, oldcol, 1, curscr->_y[oldrow] + oldcol);
-
- if (!SP->visibility)
- return;
-
- /* draw a new cursor by overprinting the existing character in
- reverse, either the full cell (when visibility == 2) or the
- lowest quarter of it (when visibility == 1) */
-
- ch = curscr->_y[row][col] ^ A_REVERSE;
-
- _set_attr(ch);
-
-#ifdef CHTYPE_LONG
- if (ch & A_ALTCHARSET && !(ch & 0xff80))
- ch = acs_map[ch & 0x7f];
-#endif
- src.h = (SP->visibility == 1) ? pdc_fheight >> 2 : pdc_fheight;
- src.w = pdc_fwidth;
-
- dest.y = (row + 1) * pdc_fheight - src.h + pdc_yoffset;
- dest.x = col * pdc_fwidth + pdc_xoffset;
-
- src.x = (ch & 0xff) % 32 * pdc_fwidth;
- src.y = (ch & 0xff) / 32 * pdc_fheight + (pdc_fheight - src.h);
-
- SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest);
-
- if (oldrow != row || oldcol != col)
- {
- if (rectcount == MAXRECT)
- PDC_update_rects();
-
- uprect[rectcount++] = dest;
- }
-}
-
-/* handle the A_*LINE attributes */
-
-static void _highlight(SDL_Rect *src, SDL_Rect *dest, chtype ch)
-{
- short col = SP->line_color;
-
- if (SP->mono)
- return;
-
- if (ch & A_UNDERLINE)
- {
- if (col != -1)
- SDL_SetPalette(pdc_font, SDL_LOGPAL,
- pdc_color + col, pdc_flastc, 1);
-
- src->x = '_' % 32 * pdc_fwidth;
- src->y = '_' / 32 * pdc_fheight;
-
- if (backgr != -1)
- SDL_SetColorKey(pdc_font, SDL_SRCCOLORKEY, 0);
-
- SDL_BlitSurface(pdc_font, src, pdc_screen, dest);
-
- if (backgr != -1)
- SDL_SetColorKey(pdc_font, 0, 0);
-
- if (col != -1)
- SDL_SetPalette(pdc_font, SDL_LOGPAL,
- pdc_color + foregr, pdc_flastc, 1);
- }
-
- if (ch & (A_LEFTLINE|A_RIGHTLINE))
- {
- if (col == -1)
- col = foregr;
-
- dest->w = 1;
-
- if (ch & A_LEFTLINE)
- SDL_FillRect(pdc_screen, dest, pdc_mapped[col]);
-
- if (ch & A_RIGHTLINE)
- {
- dest->x += pdc_fwidth - 1;
- SDL_FillRect(pdc_screen, dest, pdc_mapped[col]);
- dest->x -= pdc_fwidth - 1;
- }
-
- dest->w = pdc_fwidth;
- }
-}
-
-/* update the given physical line to look like the corresponding line in
- curscr */
-
-void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
-{
- SDL_Rect src, dest, lastrect;
- int j;
-
- PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno));
-
- if (rectcount == MAXRECT)
- PDC_update_rects();
-
- src.h = pdc_fheight;
- src.w = pdc_fwidth;
-
- dest.y = pdc_fheight * lineno + pdc_yoffset;
- dest.x = pdc_fwidth * x + pdc_xoffset;
- dest.h = pdc_fheight;
- dest.w = pdc_fwidth * len;
-
- /* if the previous rect was just above this one, with the same width
- and horizontal position, then merge the new one with it instead
- of adding a new entry */
-
- if (rectcount)
- lastrect = uprect[rectcount - 1];
-
- if (rectcount && lastrect.x == dest.x && lastrect.w == dest.w)
- {
- if (lastrect.y + lastrect.h == dest.y)
- uprect[rectcount - 1].h = lastrect.h + pdc_fheight;
- else
- if (lastrect.y != dest.y)
- uprect[rectcount++] = dest;
- }
- else
- uprect[rectcount++] = dest;
-
- dest.w = pdc_fwidth;
-
- for (j = 0; j < len; j++)
- {
- chtype ch = srcp[j];
-
- _set_attr(ch);
-#ifdef CHTYPE_LONG
- if (ch & A_ALTCHARSET && !(ch & 0xff80))
- ch = (ch & (A_ATTRIBUTES ^ A_ALTCHARSET)) | acs_map[ch & 0x7f];
-#endif
- if (backgr == -1)
- SDL_LowerBlit(pdc_tileback, &dest, pdc_screen, &dest);
-
- src.x = (ch & 0xff) % 32 * pdc_fwidth;
- src.y = (ch & 0xff) / 32 * pdc_fheight;
-
- SDL_LowerBlit(pdc_font, &src, pdc_screen, &dest);
-
- if (ch & (A_UNDERLINE|A_LEFTLINE|A_RIGHTLINE))
- _highlight(&src, &dest, ch);
-
- dest.x += pdc_fwidth;
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcgetsc.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcgetsc.c
deleted file mode 100644
index 4319235..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcgetsc.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcsdl.h"
-
-RCSID("$Id: pdcgetsc.c,v 1.8 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/* get the cursor size/shape */
-
-int PDC_get_cursor_mode(void)
-{
- PDC_LOG(("PDC_get_cursor_mode() - called\n"));
-
- return 0;
-}
-
-/* return number of screen rows */
-
-int PDC_get_rows(void)
-{
- PDC_LOG(("PDC_get_rows() - called\n"));
-
- return pdc_sheight / pdc_fheight;
-}
-
-/* return width of screen/viewport */
-
-int PDC_get_columns(void)
-{
- PDC_LOG(("PDC_get_columns() - called\n"));
-
- return pdc_swidth / pdc_fwidth;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdckbd.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdckbd.c
deleted file mode 100644
index f82acd9..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdckbd.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcsdl.h"
-
-RCSID("$Id: pdckbd.c,v 1.20 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdckbd
-
- Synopsis:
- unsigned long PDC_get_input_fd(void);
-
- Description:
- PDC_get_input_fd() returns the file descriptor that PDCurses
- reads its input from. It can be used for select().
-
- Portability X/Open BSD SYS V
- PDC_get_input_fd - - -
-
-**man-end****************************************************************/
-
-#include <string.h>
-
-unsigned long pdc_key_modifiers = 0L;
-
-static SDL_Event event;
-static SDLKey oldkey;
-static MOUSE_STATUS old_mouse_status;
-
-static struct
-{
- SDLKey keycode;
- bool numkeypad;
- unsigned short normal;
- unsigned short shifted;
- unsigned short control;
- unsigned short alt;
-} key_table[] =
-{
-/* keycode keypad normal shifted control alt*/
- {SDLK_LEFT, FALSE, KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT},
- {SDLK_RIGHT, FALSE, KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT},
- {SDLK_UP, FALSE, KEY_UP, KEY_SUP, CTL_UP, ALT_UP},
- {SDLK_DOWN, FALSE, KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN},
- {SDLK_HOME, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME},
- {SDLK_END, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END},
- {SDLK_PAGEUP, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP},
- {SDLK_PAGEDOWN,FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN},
- {SDLK_INSERT, FALSE, KEY_IC, KEY_SIC, CTL_INS, ALT_INS},
- {SDLK_DELETE, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL},
- {SDLK_F1, FALSE, KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37)},
- {SDLK_F2, FALSE, KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38)},
- {SDLK_F3, FALSE, KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39)},
- {SDLK_F4, FALSE, KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40)},
- {SDLK_F5, FALSE, KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41)},
- {SDLK_F6, FALSE, KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42)},
- {SDLK_F7, FALSE, KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43)},
- {SDLK_F8, FALSE, KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44)},
- {SDLK_F9, FALSE, KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45)},
- {SDLK_F10, FALSE, KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46)},
- {SDLK_F11, FALSE, KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47)},
- {SDLK_F12, FALSE, KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48)},
- {SDLK_F13, FALSE, KEY_F(13), KEY_F(25), KEY_F(37), KEY_F(49)},
- {SDLK_F14, FALSE, KEY_F(14), KEY_F(26), KEY_F(38), KEY_F(50)},
- {SDLK_F15, FALSE, KEY_F(15), KEY_F(27), KEY_F(39), KEY_F(51)},
- {SDLK_BACKSPACE,FALSE, 0x08, 0x08, CTL_BKSP, ALT_BKSP},
- {SDLK_TAB, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB},
- {SDLK_PRINT, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT},
- {SDLK_PAUSE, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND},
- {SDLK_CLEAR, FALSE, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR},
- {SDLK_BREAK, FALSE, KEY_BREAK, KEY_BREAK, KEY_BREAK, KEY_BREAK},
- {SDLK_HELP, FALSE, KEY_HELP, KEY_SHELP, KEY_LHELP, KEY_HELP},
- {SDLK_MENU, FALSE, KEY_OPTIONS, KEY_SOPTIONS, KEY_OPTIONS, KEY_OPTIONS},
- {SDLK_ESCAPE, FALSE, 0x1B, 0x1B, 0x1B, ALT_ESC},
- {SDLK_KP_ENTER,TRUE, PADENTER, PADENTER, CTL_PADENTER,ALT_PADENTER},
- {SDLK_KP_PLUS, TRUE, PADPLUS, '+', CTL_PADPLUS, ALT_PADPLUS},
- {SDLK_KP_MINUS,TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS},
- {SDLK_KP_MULTIPLY,TRUE,PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
- {SDLK_KP_DIVIDE,TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
- {SDLK_KP_PERIOD,TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP},
- {SDLK_KP0, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0},
- {SDLK_KP1, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1},
- {SDLK_KP2, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2},
- {SDLK_KP3, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
- {SDLK_KP4, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4},
- {SDLK_KP5, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
- {SDLK_KP6, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6},
- {SDLK_KP7, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
- {SDLK_KP8, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8},
- {SDLK_KP9, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
- {0, 0, 0, 0, 0, 0}
-};
-
-unsigned long PDC_get_input_fd(void)
-{
- PDC_LOG(("PDC_get_input_fd() - called\n"));
-
- return 0L; /* test this */
-}
-
-void PDC_set_keyboard_binary(bool on)
-{
- PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
-}
-
-/* check if a key or mouse event is waiting */
-
-bool PDC_check_key(void)
-{
- Uint32 current = SDL_GetTicks();
- int haveevent = SDL_PollEvent(&event);
-
- /* if we have an event, or 30 ms have passed without a screen
- update, or the timer has wrapped, update now */
-
- if (haveevent ||
- current < pdc_lastupdate || ((current - pdc_lastupdate) > 30))
- PDC_update_rects();
-
- return haveevent;
-}
-
-static int _process_key_event(void)
-{
- int i, key = 0;
-
- pdc_key_modifiers = 0L;
- SP->key_code = FALSE;
-
- if (event.type == SDL_KEYUP)
- {
- if (SP->return_key_modifiers && event.key.keysym.sym == oldkey)
- {
- switch (oldkey)
- {
- case SDLK_RSHIFT:
- return KEY_SHIFT_R;
- case SDLK_LSHIFT:
- return KEY_SHIFT_L;
- case SDLK_RCTRL:
- return KEY_CONTROL_R;
- case SDLK_LCTRL:
- return KEY_CONTROL_L;
- case SDLK_RALT:
- return KEY_ALT_R;
- case SDLK_LALT:
- return KEY_ALT_L;
- default:
- break;
- }
- }
-
- return -1;
- }
-
- oldkey = event.key.keysym.sym;
-
- if (SP->save_key_modifiers)
- {
- if (event.key.keysym.mod & KMOD_NUM)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
-
- if (event.key.keysym.mod & KMOD_SHIFT)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
-
- if (event.key.keysym.mod & KMOD_CTRL)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
-
- if (event.key.keysym.mod & KMOD_ALT)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
- }
-
- for (i = 0; key_table[i].keycode; i++)
- {
- if (key_table[i].keycode == event.key.keysym.sym)
- {
- if ((event.key.keysym.mod & KMOD_SHIFT) ||
- (key_table[i].numkeypad && (event.key.keysym.mod & KMOD_NUM)))
- {
- key = key_table[i].shifted;
- }
- else if (event.key.keysym.mod & KMOD_CTRL)
- {
- key = key_table[i].control;
- }
- else if (event.key.keysym.mod & KMOD_ALT)
- {
- key = key_table[i].alt;
- }
-
- /* To get here, we ignore all other modifiers */
-
- else
- key = key_table[i].normal;
-
- SP->key_code = (key > 0x100);
- break;
- }
- }
-
- if (!key)
- {
- key = event.key.keysym.unicode;
-
- if (key > 0x7f)
- key = 0;
- }
-
- /* Handle ALT letters and numbers */
-
- if (event.key.keysym.mod & KMOD_ALT)
- {
- if (key >= 'A' && key <= 'Z')
- {
- key += ALT_A - 'A';
- SP->key_code = TRUE;
- }
-
- if (key >= 'a' && key <= 'z')
- {
- key += ALT_A - 'a';
- SP->key_code = TRUE;
- }
-
- if (key >= '0' && key <= '9')
- {
- key += ALT_0 - '0';
- SP->key_code = TRUE;
- }
- }
-
- return key ? key : -1;
-}
-
-static int _process_mouse_event(void)
-{
- SDLMod keymods;
- short shift_flags = 0;
-
- memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS));
-
- keymods = SDL_GetModState();
-
- if (keymods & KMOD_SHIFT)
- shift_flags |= BUTTON_SHIFT;
-
- if (keymods & KMOD_CTRL)
- shift_flags |= BUTTON_CONTROL;
-
- if (keymods & KMOD_ALT)
- shift_flags |= BUTTON_ALT;
-
- if (event.type == SDL_MOUSEMOTION)
- {
- int i;
-
- pdc_mouse_status.x = event.motion.x / pdc_fwidth;
- pdc_mouse_status.y = event.motion.y / pdc_fheight;
-
- if (!event.motion.state ||
- (pdc_mouse_status.x == old_mouse_status.x &&
- pdc_mouse_status.y == old_mouse_status.y))
- return -1;
-
- pdc_mouse_status.changes = PDC_MOUSE_MOVED;
-
- for (i = 0; i < 3; i++)
- {
- if (event.motion.state & SDL_BUTTON(i + 1))
- {
- pdc_mouse_status.button[i] = BUTTON_MOVED | shift_flags;
- pdc_mouse_status.changes |= (1 << i);
- }
- }
- }
- else
- {
- short action = (event.button.state == SDL_PRESSED) ?
- BUTTON_PRESSED : BUTTON_RELEASED;
- Uint8 btn = event.button.button;
-
- /* handle scroll wheel */
-
- if ((btn == 4 || btn == 5) && action == BUTTON_RELEASED)
- {
- pdc_mouse_status.x = pdc_mouse_status.y = -1;
-
- pdc_mouse_status.changes = (btn == 5) ?
- PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP;
-
- return KEY_MOUSE;
- }
-
- if (btn < 1 || btn > 3)
- return -1;
-
- /* check for a click -- a press followed immediately by a release */
-
- if (action == BUTTON_PRESSED && SP->mouse_wait)
- {
- SDL_Event rel;
-
- napms(SP->mouse_wait);
-
- if (SDL_PollEvent(&rel))
- {
- if (rel.type == SDL_MOUSEBUTTONUP && rel.button.button == btn)
- action = BUTTON_CLICKED;
- else
- SDL_PushEvent(&rel);
- }
- }
-
- pdc_mouse_status.x = event.button.x / pdc_fwidth;
- pdc_mouse_status.y = event.button.y / pdc_fheight;
-
- btn--;
-
- pdc_mouse_status.button[btn] = action | shift_flags;
- pdc_mouse_status.changes = (1 << btn);
- }
-
- old_mouse_status = pdc_mouse_status;
-
- return KEY_MOUSE;
-}
-
-/* return the next available key or mouse event */
-
-int PDC_get_key(void)
-{
- switch (event.type)
- {
- case SDL_QUIT:
- exit(1);
- case SDL_VIDEORESIZE:
- if (pdc_own_screen &&
- (event.resize.h / pdc_fheight != LINES ||
- event.resize.w / pdc_fwidth != COLS))
- {
- pdc_sheight = event.resize.h;
- pdc_swidth = event.resize.w;
-
- if (!SP->resized)
- {
- SP->resized = TRUE;
- return KEY_RESIZE;
- }
- }
- break;
- case SDL_MOUSEMOTION:
- SDL_ShowCursor(SDL_ENABLE);
- case SDL_MOUSEBUTTONUP:
- case SDL_MOUSEBUTTONDOWN:
- oldkey = SDLK_SPACE;
- if (SP->_trap_mbe)
- return _process_mouse_event();
- break;
- case SDL_KEYUP:
- case SDL_KEYDOWN:
- PDC_mouse_set();
- return _process_key_event();
- }
-
- return -1;
-}
-
-/* discard any pending keyboard or mouse input -- this is the core
- routine for flushinp() */
-
-void PDC_flushinp(void)
-{
- PDC_LOG(("PDC_flushinp() - called\n"));
-
- while (PDC_check_key());
-}
-
-int PDC_mouse_set(void)
-{
- SDL_ShowCursor(SP->_trap_mbe ? SDL_ENABLE : SDL_DISABLE);
-
- return OK;
-}
-
-int PDC_modifiers_set(void)
-{
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcscrn.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcscrn.c
deleted file mode 100644
index e422b25..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcscrn.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcsdl.h"
-
-RCSID("$Id: pdcscrn.c,v 1.34 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <stdlib.h>
-#include "deffont.h"
-#include "deficon.h"
-
-SDL_Surface *pdc_screen = NULL, *pdc_font = NULL, *pdc_icon = NULL,
- *pdc_back = NULL, *pdc_tileback = NULL;
-int pdc_sheight = 0, pdc_swidth = 0, pdc_yoffset = 0, pdc_xoffset = 0;
-
-SDL_Color pdc_color[16];
-Uint32 pdc_mapped[16];
-int pdc_fheight, pdc_fwidth, pdc_flastc;
-bool pdc_own_screen;
-
-/* COLOR_PAIR to attribute encoding table. */
-
-static struct {short f, b;} atrtab[PDC_COLOR_PAIRS];
-
-void PDC_retile(void)
-{
- if (pdc_tileback)
- SDL_FreeSurface(pdc_tileback);
-
- pdc_tileback = SDL_DisplayFormat(pdc_screen);
-
- if (pdc_back)
- {
- SDL_Rect dest;
-
- dest.y = 0;
-
- while (dest.y < pdc_tileback->h)
- {
- dest.x = 0;
-
- while (dest.x < pdc_tileback->w)
- {
- SDL_BlitSurface(pdc_back, 0, pdc_tileback, &dest);
- dest.x += pdc_back->w;
- }
-
- dest.y += pdc_back->h;
- }
-
- SDL_BlitSurface(pdc_tileback, 0, pdc_screen, 0);
- }
-}
-
-void PDC_scr_close(void)
-{
- PDC_LOG(("PDC_scr_close() - called\n"));
-}
-
-void PDC_scr_free(void)
-{
- if (SP)
- free(SP);
-}
-
-/* open the physical screen -- allocate SP, miscellaneous intialization */
-
-int PDC_scr_open(int argc, char **argv)
-{
- int i;
-
- PDC_LOG(("PDC_scr_open() - called\n"));
-
- SP = calloc(1, sizeof(SCREEN));
-
- if (!SP)
- return ERR;
-
- pdc_own_screen = !pdc_screen;
-
- if (pdc_own_screen)
- {
- if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) < 0)
- {
- fprintf(stderr, "Could not start SDL: %s\n", SDL_GetError());
- return ERR;
- }
-
- atexit(SDL_Quit);
- }
-
- if (!pdc_font)
- {
- const char *fname = getenv("PDC_FONT");
- pdc_font = SDL_LoadBMP(fname ? fname : "pdcfont.bmp");
- }
-
- if (!pdc_font)
- pdc_font = SDL_LoadBMP_RW(SDL_RWFromMem(deffont, sizeof(deffont)), 0);
-
- if (!pdc_font)
- {
- fprintf(stderr, "Could not load font\n");
- return ERR;
- }
-
- SP->mono = !pdc_font->format->palette;
-
- if (!SP->mono && !pdc_back)
- {
- const char *bname = getenv("PDC_BACKGROUND");
- pdc_back = SDL_LoadBMP(bname ? bname : "pdcback.bmp");
- }
-
- if (!SP->mono && (pdc_back || !pdc_own_screen))
- {
- SP->orig_attr = TRUE;
- SP->orig_fore = COLOR_WHITE;
- SP->orig_back = -1;
- }
- else
- SP->orig_attr = FALSE;
-
- pdc_fheight = pdc_font->h / 8;
- pdc_fwidth = pdc_font->w / 32;
-
- if (!SP->mono)
- pdc_flastc = pdc_font->format->palette->ncolors - 1;
-
- if (pdc_own_screen && !pdc_icon)
- {
- const char *iname = getenv("PDC_ICON");
- pdc_icon = SDL_LoadBMP(iname ? iname : "pdcicon.bmp");
-
- if (!pdc_icon)
- pdc_icon = SDL_LoadBMP_RW(SDL_RWFromMem(deficon,
- sizeof(deficon)), 0);
-
- if (pdc_icon)
- SDL_WM_SetIcon(pdc_icon, NULL);
- }
-
- if (pdc_own_screen)
- {
- const char *env = getenv("PDC_LINES");
- pdc_sheight = (env ? atoi(env) : 25) * pdc_fheight;
-
- env = getenv("PDC_COLS");
- pdc_swidth = (env ? atoi(env) : 80) * pdc_fwidth;
-
- pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0,
- SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE);
- }
- else
- {
- if (!pdc_sheight)
- pdc_sheight = pdc_screen->h - pdc_yoffset;
-
- if (!pdc_swidth)
- pdc_swidth = pdc_screen->w - pdc_xoffset;
- }
-
- if (!pdc_screen)
- {
- fprintf(stderr, "Couldn't create a surface: %s\n", SDL_GetError());
- return ERR;
- }
-
- if (SP->orig_attr)
- PDC_retile();
-
- for (i = 0; i < 8; i++)
- {
- pdc_color[i].r = (i & COLOR_RED) ? 0xc0 : 0;
- pdc_color[i].g = (i & COLOR_GREEN) ? 0xc0 : 0;
- pdc_color[i].b = (i & COLOR_BLUE) ? 0xc0 : 0;
-
- pdc_color[i + 8].r = (i & COLOR_RED) ? 0xff : 0x40;
- pdc_color[i + 8].g = (i & COLOR_GREEN) ? 0xff : 0x40;
- pdc_color[i + 8].b = (i & COLOR_BLUE) ? 0xff : 0x40;
- }
-
- for (i = 0; i < 16; i++)
- pdc_mapped[i] = SDL_MapRGB(pdc_screen->format, pdc_color[i].r,
- pdc_color[i].g, pdc_color[i].b);
-
- SDL_EnableUNICODE(1);
-
- PDC_mouse_set();
-
- if (pdc_own_screen)
- PDC_set_title(argc ? argv[0] : "PDCurses");
-
- SP->lines = PDC_get_rows();
- SP->cols = PDC_get_columns();
-
- SP->mouse_wait = PDC_CLICK_PERIOD;
- SP->audible = FALSE;
-
- PDC_reset_prog_mode();
-
- return OK;
-}
-
-/* the core of resize_term() */
-
-int PDC_resize_screen(int nlines, int ncols)
-{
- if (!pdc_own_screen)
- return ERR;
-
- if (nlines && ncols)
- {
- pdc_sheight = nlines * pdc_fheight;
- pdc_swidth = ncols * pdc_fwidth;
- }
-
- SDL_FreeSurface(pdc_screen);
-
- pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0,
- SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE);
-
- if (pdc_tileback)
- PDC_retile();
-
- SP->resized = FALSE;
- SP->cursrow = SP->curscol = 0;
-
- return OK;
-}
-
-void PDC_reset_prog_mode(void)
-{
- PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
-
- PDC_flushinp();
- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
-}
-
-void PDC_reset_shell_mode(void)
-{
- PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
-
- SDL_EnableKeyRepeat(0, 0);
- PDC_flushinp();
-}
-
-void PDC_restore_screen_mode(int i)
-{
-}
-
-void PDC_save_screen_mode(int i)
-{
-}
-
-void PDC_init_pair(short pair, short fg, short bg)
-{
- atrtab[pair].f = fg;
- atrtab[pair].b = bg;
-}
-
-int PDC_pair_content(short pair, short *fg, short *bg)
-{
- *fg = atrtab[pair].f;
- *bg = atrtab[pair].b;
-
- return OK;
-}
-
-bool PDC_can_change_color(void)
-{
- return TRUE;
-}
-
-int PDC_color_content(short color, short *red, short *green, short *blue)
-{
- *red = DIVROUND(pdc_color[color].r * 1000, 255);
- *green = DIVROUND(pdc_color[color].g * 1000, 255);
- *blue = DIVROUND(pdc_color[color].b * 1000, 255);
-
- return OK;
-}
-
-int PDC_init_color(short color, short red, short green, short blue)
-{
- pdc_color[color].r = DIVROUND(red * 255, 1000);
- pdc_color[color].g = DIVROUND(green * 255, 1000);
- pdc_color[color].b = DIVROUND(blue * 255, 1000);
-
- pdc_mapped[color] = SDL_MapRGB(pdc_screen->format, pdc_color[color].r,
- pdc_color[color].g, pdc_color[color].b);
-
- wrefresh(curscr);
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcsdl.h b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcsdl.h
deleted file mode 100644
index 79df21a..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcsdl.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: pdcsdl.h,v 1.17 2008/07/14 04:24:52 wmcbrine Exp $ */
-
-#include <curspriv.h>
-
-#include <SDL/SDL.h>
-
-PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back;
-PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset;
-
-extern SDL_Surface *pdc_tileback; /* used to regenerate the background
- of "transparent" cells */
-extern SDL_Color pdc_color[16]; /* colors for font palette */
-extern Uint32 pdc_mapped[16]; /* colors for FillRect(), as
- used in _highlight() */
-extern int pdc_fheight, pdc_fwidth; /* font height and width */
-extern int pdc_flastc; /* font palette's last color
- (treated as the foreground) */
-extern bool pdc_own_screen; /* if pdc_screen was not set
- before initscr(), PDCurses is
- responsible for (owns) it */
-extern Uint32 pdc_lastupdate; /* time of last update, in ticks */
-
-void PDC_update_rects(void);
-void PDC_retile(void);
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcsetsc.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcsetsc.c
deleted file mode 100644
index 6794354..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcsetsc.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcsdl.h"
-
-RCSID("$Id: pdcsetsc.c,v 1.7 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdcsetsc
-
- Synopsis:
- int PDC_set_blink(bool blinkon);
- void PDC_set_title(const char *title);
-
- Description:
- PDC_set_blink() toggles whether the A_BLINK attribute sets an
- actual blink mode (TRUE), or sets the background color to high
- intensity (FALSE). The default is platform-dependent (FALSE in
- most cases). It returns OK if it could set the state to match
- the given parameter, ERR otherwise. Current platforms also
- adjust the value of COLORS according to this function -- 16 for
- FALSE, and 8 for TRUE.
-
- PDC_set_title() sets the title of the window in which the curses
- program is running. This function may not do anything on some
- platforms. (Currently it only works in Win32 and X11.)
-
- Portability X/Open BSD SYS V
- PDC_set_blink - - -
- PDC_set_title - - -
-
-**man-end****************************************************************/
-
-int PDC_curs_set(int visibility)
-{
- int ret_vis;
-
- PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
-
- ret_vis = SP->visibility;
-
- SP->visibility = visibility;
-
- PDC_gotoyx(SP->cursrow, SP->curscol);
-
- return ret_vis;
-}
-
-void PDC_set_title(const char *title)
-{
- PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
-
- SDL_WM_SetCaption(title, title);
-}
-
-int PDC_set_blink(bool blinkon)
-{
- if (pdc_color_started)
- COLORS = 16;
-
- return blinkon ? ERR : OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcutil.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcutil.c
deleted file mode 100644
index b2d8404..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/pdcutil.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcsdl.h"
-
-RCSID("$Id: pdcutil.c,v 1.6 2008/07/14 04:24:52 wmcbrine Exp $")
-
-void PDC_beep(void)
-{
- PDC_LOG(("PDC_beep() - called\n"));
-}
-
-void PDC_napms(int ms)
-{
- PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
-
- PDC_update_rects();
- SDL_Delay(ms);
-}
-
-const char *PDC_sysname(void)
-{
- return "SDL";
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/sdl1/sdltest.c b/payloads/libpayload/curses/PDCurses-3.4/sdl1/sdltest.c
deleted file mode 100644
index 840d15a..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/sdl1/sdltest.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Here's a simple example of combining SDL and PDCurses functionality.
- The top portion of the window is devoted to SDL, with a four-line
- (assuming the default 8x16 font) stdscr at the bottom.
-
- $Id: sdltest.c,v 1.2 2008/07/14 04:24:52 wmcbrine Exp $
-*/
-
-#include <SDL/SDL.h>
-#include <curses.h>
-#include <stdlib.h>
-#include <time.h>
-
-/* You could #include pdcsdl.h, or just add the relevant declarations
- here: */
-
-PDCEX SDL_Surface *pdc_screen;
-PDCEX int pdc_yoffset;
-
-int main(int argc, char **argv)
-{
- char inp[60];
- int i, j, seed;
-
- seed = time((time_t *)0);
- srand(seed);
-
- /* Initialize SDL */
-
- if (SDL_Init(SDL_INIT_VIDEO) < 0)
- exit(1);
-
- atexit(SDL_Quit);
-
- pdc_screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE|SDL_ANYFORMAT);
-
- /* Initialize PDCurses */
-
- pdc_yoffset = 416; /* 480 - 4 * 16 */
-
- initscr();
- start_color();
- scrollok(stdscr, TRUE);
-
- PDC_set_title("PDCurses for SDL");
-
- /* Do some SDL stuff */
-
- for (i = 640, j = 416; j; i -= 2, j -= 2)
- {
- SDL_Rect dest;
-
- dest.x = (640 - i) / 2;
- dest.y = (416 - j) / 2;
- dest.w = i;
- dest.h = j;
-
- SDL_FillRect(pdc_screen, &dest,
- SDL_MapRGB(pdc_screen->format, rand() % 256,
- rand() % 256, rand() % 256));
- }
-
- SDL_UpdateRect(pdc_screen, 0, 0, 640, 416);
-
- /* Do some curses stuff */
-
- init_pair(1, COLOR_WHITE + 8, COLOR_BLUE);
- bkgd(COLOR_PAIR(1));
-
- addstr("This is a demo of ");
- attron(A_UNDERLINE);
- addstr("PDCurses for SDL");
- attroff(A_UNDERLINE);
- addstr(".\nYour comments here: ");
- getnstr(inp, 59);
- addstr("Press any key to exit.");
-
- getch();
- endwin();
-
- return 0;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/term.h b/payloads/libpayload/curses/PDCurses-3.4/term.h
deleted file mode 100644
index caacbdf..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/term.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: term.h,v 1.16 2008/07/13 16:08:16 wmcbrine Exp $ */
-
-/* PDCurses doesn't operate with terminfo, but we need these functions for
- compatibility, to allow some things (notably, interface libraries for
- other languages) to be compiled. Anyone who tries to actually _use_
- them will be disappointed, since they only return ERR. */
-
-#ifndef __PDCURSES_TERM_H__
-#define __PDCURSES_TERM_H__ 1
-
-#include <curses.h>
-
-#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
-extern "C"
-{
-#endif
-
-typedef struct
-{
- const char *_termname;
-} TERMINAL;
-
-#ifdef PDC_DLL_BUILD
-# ifndef CURSES_LIBRARY
-__declspec(dllimport) TERMINAL *cur_term;
-# else
-__declspec(dllexport) extern TERMINAL *cur_term;
-# endif
-#else
-extern TERMINAL *cur_term;
-#endif
-
-int del_curterm(TERMINAL *);
-int putp(const char *);
-int restartterm(const char *, int, int *);
-TERMINAL *set_curterm(TERMINAL *);
-int setterm(const char *);
-int setupterm(const char *, int, int *);
-int tgetent(char *, const char *);
-int tgetflag(const char *);
-int tgetnum(const char *);
-char *tgetstr(const char *, char **);
-char *tgoto(const char *, int, int);
-int tigetflag(const char *);
-int tigetnum(const char *);
-char *tigetstr(const char *);
-char *tparm(const char *, long, long, long, long, long,
- long, long, long, long);
-int tputs(const char *, int, int (*)(int));
-
-#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
-}
-#endif
-
-#endif /* __PDCURSES_TERM_H__ */
diff --git a/payloads/libpayload/curses/PDCurses-3.4/version.mif b/payloads/libpayload/curses/PDCurses-3.4/version.mif
deleted file mode 100644
index 9ff7335..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/version.mif
+++ /dev/null
@@ -1,4 +0,0 @@
-# Version number macros for inclusion from makefiles
-
-VER = 34
-VERDOT = 3.4
diff --git a/payloads/libpayload/curses/PDCurses-3.4/watcom.mif b/payloads/libpayload/curses/PDCurses-3.4/watcom.mif
deleted file mode 100644
index 023ea37..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/watcom.mif
+++ /dev/null
@@ -1,59 +0,0 @@
-# Common elements for the Watcom makefiles
-
-srcdir = $(PDCURSES_SRCDIR)\pdcurses
-demodir = $(PDCURSES_SRCDIR)\demos
-
-LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj &
-border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj &
-getch.obj getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj &
-insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj &
-outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj &
-scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj &
-touch.obj util.obj window.obj debug.obj
-
-PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj &
-pdcsetsc.obj pdcutil.obj
-
-DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe firework.exe &
-ptest.exe rain.exe worm.exe
-
-LIBCURSES = pdcurses.lib
-
-LINK = wlink
-
-!ifdef __LOADDLL__
-! loaddll wcc wccd
-! loaddll wcc386 wccd386
-! loaddll wlink wlink
-! loaddll wlib wlibd
-!endif
-
-all: $(LIBCURSES) $(DEMOS)
-
-clean
- -del *.obj
- -del *.lib
- -del *.exe
- -del *.err
-
-demos: $(DEMOS)
-
-.c: $(srcdir);$(osdir);$(demodir)
-.c.obj: .autodepend
- $(CC) $(CFLAGS) $<
-
-.obj.exe:
- $(LINK) $(LDFLAGS) n $@ f $*.obj l $(LIBCURSES)
-
-testcurs.exe: testcurs.obj $(LIBCURSES)
-newdemo.exe: newdemo.obj $(LIBCURSES)
-xmas.exe: xmas.obj $(LIBCURSES)
-firework.exe: firework.obj $(LIBCURSES)
-rain.exe: rain.obj $(LIBCURSES)
-worm.exe: worm.obj $(LIBCURSES)
-ptest.exe: ptest.obj $(LIBCURSES)
-
-tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
- $(LINK) $(LDFLAGS) n $@ f tuidemo.obj f tui.obj l $(LIBCURSES)
-
-dist: .symbolic
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/README b/payloads/libpayload/curses/PDCurses-3.4/win32/README
deleted file mode 100644
index bfe2ad9..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/README
+++ /dev/null
@@ -1,76 +0,0 @@
-PDCurses for Win32
-==================
-
-This directory contains PDCurses source code files specific to Win32
-console mode (Win9x/Me/NT/2k/XP/Vista).
-
-
-Building
---------
-
-. Choose the appropriate makefile for your compiler:
-
- bccwin32.mak - Borland C++ 4.0.2+
- dmcwin32.mak - Digital Mars
- gccwin32.mak - Cygnus GNU Compiler
- lccwin32.mak - LCC-Win32
- mingwin32.mak - MinGW
- vcwin32.mak - Microsoft Visual C++ 2.0+
- wccwin32.mak - Watcom 10.6+
-
-. Optionally, you can build in a different directory than the platform
- directory by setting PDCURSES_SRCDIR to point to the directory where
- you unpacked PDCurses, and changing to your target directory:
-
- set PDCURSES_SRCDIR=c:\pdcurses
-
- This won't work with the LCC or Digital Mars makefiles, nor will the
- options described below.
-
-. Build it:
-
- make -f makefilename
-
- (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll
- get the libraries (pdcurses.lib or .a, depending on your compiler; and
- panel.lib or .a), the demos (*.exe), and a lot of object files. Note
- that the panel library is just a copy of the main library, provided
- for convenience; both panel and curses functions are in the main
- library.
-
- You can also give the optional parameter "WIDE=Y", to build the
- library with wide-character (Unicode) support:
-
- make -f mingwin32.mak WIDE=Y
-
- When built this way, the library is not compatible with Windows 9x,
- unless you also link with the Microsoft Layer for Unicode (not
- tested).
-
- Another option, "UTF8=Y", makes PDCurses ignore the system locale, and
- treat all narrow-character strings as UTF-8. This option has no effect
- unless WIDE=Y is also set. Use it to get around the poor support for
- UTF-8 in the Win32 console:
-
- make -f mingwin32.mak WIDE=Y UTF8=Y
-
- You can also use the optional parameter "DLL=Y" with Visual C++,
- MinGW or Cygwin, to build the library as a DLL:
-
- nmake -f vcwin32.mak WIDE=Y DLL=Y
-
- When you build the library as a Windows DLL, you must always define
- PDCURSES_DLL_BUILD when linking against it. (Or, if you only want to
- use the DLL, you could add this definition to your curses.h.)
-
-
-Distribution Status
--------------------
-
-The files in this directory are released to the Public Domain.
-
-
-Acknowledgements
-----------------
-
-Generic Win32 port was provided by Chris Szurgot <szurgot at itribe.net>
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/bccwin32.mak b/payloads/libpayload/curses/PDCurses-3.4/win32/bccwin32.mak
deleted file mode 100644
index 229ab4b..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/bccwin32.mak
+++ /dev/null
@@ -1,85 +0,0 @@
-# Borland MAKE Makefile for PDCurses library - Win32 BC++ 4.0+
-#
-# Usage: make -f [path\]bccwin32.mak [DEBUG=] [WIDE=] [UTF8=] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-O = obj
-
-!ifndef PDCURSES_SRCDIR
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-!include $(PDCURSES_SRCDIR)\libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)\win32
-
-CC = bcc32 -q
-
-!ifdef DEBUG
-CFLAGS = -N -v -y -DPDCDEBUG
-!else
-CFLAGS = -O
-!endif
-
-!ifdef WIDE
-WIDEOPT = -DPDC_WIDE
-!endif
-
-!ifdef UTF8
-UTF8OPT = -DPDC_FORCE_UTF8
-!endif
-
-BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c -Tpe -w32 $(CFLAGS) -w-par \
-$(WIDEOPT) $(UTF8OPT)
-
-LIBEXE = tlib /C /E /0 /a
-
-LIBCURSES = pdcurses.lib
-
-all: $(LIBCURSES) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.tds
- -del *.exe
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- -del $@
- $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
- -copy $(LIBCURSES) panel.lib
-
-.autodepend
-
-{$(srcdir)\}.c.obj:
- $(BUILD) $<
-
-{$(osdir)\}.c.obj:
- $(BUILD) $<
-
-{$(demodir)\}.c.obj:
- $(BUILD) $<
-
-.c.obj:
- $(BUILD) $<
-
-.obj.exe:
- $(CC) -e$@ $** $(LIBCURSES)
-
-tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
- $(CC) -e$@ $**
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
- $(BUILD) -I$(demodir) $(demodir)\tui.c
-
-tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
- $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
-
-PLATFORM1 = Borland C++ Win32
-PLATFORM2 = Borland C/C++ 5.5 for Win32
-ARCNAME = pdc$(VER)_bcc_w32
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/dmcwin32.mak b/payloads/libpayload/curses/PDCurses-3.4/win32/dmcwin32.mak
deleted file mode 100644
index 23522cc..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/dmcwin32.mak
+++ /dev/null
@@ -1,253 +0,0 @@
-# Makefile for PDCurses library - WIN32 Digital Mars
-#
-# Usage: make -f dmcwin32.mak [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-PDCURSES_SRCDIR = ..
-
-PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h
-PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h
-PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
-
-PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h
-TERM_HEADER = $(PDCURSES_SRCDIR)\term.h
-
-srcdir = $(PDCURSES_SRCDIR)\pdcurses
-osdir = $(PDCURSES_SRCDIR)\win32
-demodir = $(PDCURSES_SRCDIR)\demos
-
-PDCURSES_WIN_H = $(osdir)\pdcwin.h
-
-CC = dmc
-
-CFLAGS = -c -o+space -Nc
-
-CPPFLAGS = -I$(PDCURSES_SRCDIR) #-DPDC_WIDE -DPDC_FORCE_UTF8
-
-LINK = dmc
-LIBEXE = lib
-
-LIBCURSES = pdcurses.lib
-
-BUILD = $(CC) $(CFLAGS) $(CPPFLAGS)
-
-DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe \
-firework.exe ptest.exe rain.exe worm.exe
-
-all: $(LIBCURSES) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.exe
- -del *.map
- -del advapi32.def
-
-LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \
-border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \
-getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \
-insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \
-outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \
-scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \
-touch.obj util.obj window.obj debug.obj
-
-PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \
-pdcsetsc.obj pdcutil.obj
-
-DEMOOBJS = testcurs.obj newdemo.obj xmas.obj tuidemo.obj tui.obj \
-firework.obj ptest.obj rain.obj worm.obj
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_WIN_H)
-panel.obj ptest.obj: $(PANEL_HEADER)
-terminfo.obj: $(TERM_HEADER)
-
-$(DEMOOBJS) : $(PDCURSES_CURSES_H)
-$(DEMOS) : $(LIBCURSES)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) -c $@ $(LIBOBJS) $(PDCOBJS)
- -copy $(LIBCURSES) panel.lib
-
-SRCBUILD = $(BUILD) $(srcdir)\$*.c
-OSBUILD = $(BUILD) $(osdir)\$*.c
-DEMOBUILD = $(LINK) $(CPPFLAGS) -o+space $@ $**
-
-addch.obj: $(srcdir)\addch.c
- $(SRCBUILD)
-
-addchstr.obj: $(srcdir)\addchstr.c
- $(SRCBUILD)
-
-addstr.obj: $(srcdir)\addstr.c
- $(SRCBUILD)
-
-attr.obj: $(srcdir)\attr.c
- $(SRCBUILD)
-
-beep.obj: $(srcdir)\beep.c
- $(SRCBUILD)
-
-bkgd.obj: $(srcdir)\bkgd.c
- $(SRCBUILD)
-
-border.obj: $(srcdir)\border.c
- $(SRCBUILD)
-
-clear.obj: $(srcdir)\clear.c
- $(SRCBUILD)
-
-color.obj: $(srcdir)\color.c
- $(SRCBUILD)
-
-delch.obj: $(srcdir)\delch.c
- $(SRCBUILD)
-
-deleteln.obj: $(srcdir)\deleteln.c
- $(SRCBUILD)
-
-deprec.obj: $(srcdir)\deprec.c
- $(SRCBUILD)
-
-getch.obj: $(srcdir)\getch.c
- $(SRCBUILD)
-
-getstr.obj: $(srcdir)\getstr.c
- $(SRCBUILD)
-
-getyx.obj: $(srcdir)\getyx.c
- $(SRCBUILD)
-
-inch.obj: $(srcdir)\inch.c
- $(SRCBUILD)
-
-inchstr.obj: $(srcdir)\inchstr.c
- $(SRCBUILD)
-
-initscr.obj: $(srcdir)\initscr.c
- $(SRCBUILD)
-
-inopts.obj: $(srcdir)\inopts.c
- $(SRCBUILD)
-
-insch.obj: $(srcdir)\insch.c
- $(SRCBUILD)
-
-insstr.obj: $(srcdir)\insstr.c
- $(SRCBUILD)
-
-instr.obj: $(srcdir)\instr.c
- $(SRCBUILD)
-
-kernel.obj: $(srcdir)\kernel.c
- $(SRCBUILD)
-
-keyname.obj: $(srcdir)\keyname.c
- $(SRCBUILD)
-
-mouse.obj: $(srcdir)\mouse.c
- $(SRCBUILD)
-
-move.obj: $(srcdir)\move.c
- $(SRCBUILD)
-
-outopts.obj: $(srcdir)\outopts.c
- $(SRCBUILD)
-
-overlay.obj: $(srcdir)\overlay.c
- $(SRCBUILD)
-
-pad.obj: $(srcdir)\pad.c
- $(SRCBUILD)
-
-panel.obj: $(srcdir)\panel.c
- $(SRCBUILD)
-
-printw.obj: $(srcdir)\printw.c
- $(SRCBUILD)
-
-refresh.obj: $(srcdir)\refresh.c
- $(SRCBUILD)
-
-scanw.obj: $(srcdir)\scanw.c
- $(SRCBUILD)
-
-scr_dump.obj: $(srcdir)\scr_dump.c
- $(SRCBUILD)
-
-scroll.obj: $(srcdir)\scroll.c
- $(SRCBUILD)
-
-slk.obj: $(srcdir)\slk.c
- $(SRCBUILD)
-
-termattr.obj: $(srcdir)\termattr.c
- $(SRCBUILD)
-
-terminfo.obj: $(srcdir)\terminfo.c
- $(SRCBUILD)
-
-touch.obj: $(srcdir)\touch.c
- $(SRCBUILD)
-
-util.obj: $(srcdir)\util.c
- $(SRCBUILD)
-
-window.obj: $(srcdir)\window.c
- $(SRCBUILD)
-
-debug.obj: $(srcdir)\debug.c
- $(SRCBUILD)
-
-pdcclip.obj: $(osdir)\pdcclip.c
- $(OSBUILD)
-
-pdcdisp.obj: $(osdir)\pdcdisp.c
- $(OSBUILD)
-
-pdcgetsc.obj: $(osdir)\pdcgetsc.c
- $(OSBUILD)
-
-pdckbd.obj: $(osdir)\pdckbd.c
- $(OSBUILD)
-
-pdcscrn.obj: $(osdir)\pdcscrn.c
- $(OSBUILD)
-
-pdcsetsc.obj: $(osdir)\pdcsetsc.c
- $(OSBUILD)
-
-pdcutil.obj: $(osdir)\pdcutil.c
- $(OSBUILD)
-
-firework.exe: $(demodir)\firework.c
- $(DEMOBUILD)
-
-newdemo.exe: $(demodir)\newdemo.c
- $(DEMOBUILD)
-
-ptest.exe: $(demodir)\ptest.c
- $(DEMOBUILD)
-
-rain.exe: $(demodir)\rain.c
- $(DEMOBUILD)
-
-testcurs.exe: $(demodir)\testcurs.c
- $(DEMOBUILD) advapi32.lib
-
-tuidemo.exe: tuidemo.obj tui.obj
- $(DEMOBUILD)
-
-worm.exe: $(demodir)\worm.c
- $(DEMOBUILD)
-
-xmas.exe: $(demodir)\xmas.c
- $(DEMOBUILD)
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h
- $(BUILD) -I$(demodir) $(demodir)\$*.c
-
-tuidemo.obj: $(demodir)\tuidemo.c
- $(BUILD) -I$(demodir) $(demodir)\$*.c
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/gccwin32.mak b/payloads/libpayload/curses/PDCurses-3.4/win32/gccwin32.mak
deleted file mode 100644
index 7504bb3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/gccwin32.mak
+++ /dev/null
@@ -1,128 +0,0 @@
-# GNU MAKE Makefile for PDCurses library - WIN32 Cygnus GCC
-#
-# Usage: make -f [path\]gccwin32.mak [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] [tgt]
-#
-# where tgt can be any of:
-# [all|demos|pdcurses.a|testcurs.exe...]
-
-O = o
-
-ifndef PDCURSES_SRCDIR
- PDCURSES_SRCDIR = ..
-endif
-
-include $(PDCURSES_SRCDIR)/version.mif
-include $(PDCURSES_SRCDIR)/libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)/win32
-
-PDCURSES_WIN_H = $(osdir)/pdcwin.h
-
-CC = gcc
-
-ifeq ($(DEBUG),Y)
- CFLAGS = -g -Wall -DPDCDEBUG
- LDFLAGS = -g
-else
- CFLAGS = -O2 -Wall
- LDFLAGS =
-endif
-
-CFLAGS += -I$(PDCURSES_SRCDIR)
-
-BASEDEF = $(PDCURSES_SRCDIR)/exp-base.def
-WIDEDEF = $(PDCURSES_SRCDIR)/exp-wide.def
-
-DEFDEPS = $(BASEDEF)
-
-ifeq ($(WIDE),Y)
- CFLAGS += -DPDC_WIDE
- DEFDEPS += $(WIDEDEF)
-endif
-
-ifeq ($(UTF8),Y)
- CFLAGS += -DPDC_FORCE_UTF8
-endif
-
-DEFFILE = pdcurses.def
-
-LINK = gcc
-
-ifeq ($(DLL),Y)
- CFLAGS += -DPDC_DLL_BUILD
- LIBEXE = gcc $(DEFFILE)
- LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o
- LIBCURSES = pdcurses.dll
- LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
- CLEAN = $(LIBCURSES) *.a $(DEFFILE)
-else
- LIBEXE = ar
- LIBFLAGS = rcv
- LIBCURSES = pdcurses.a
- LIBDEPS = $(LIBOBJS) $(PDCOBJS)
- CLEAN = *.a
-endif
-
-.PHONY: all libs clean demos dist
-
-all: libs demos
-
-libs: $(LIBCURSES)
-
-clean:
- -rm -f *.o
- -rm -f *.exe
- -rm -f $(CLEAN)
-
-demos: $(DEMOS)
- strip *.exe
-
-$(DEFFILE): $(DEFDEPS)
- echo LIBRARY pdcurses > $@
- echo EXPORTS >> $@
- cat $(BASEDEF) >> $@
-ifeq ($(WIDE),Y)
- cat $(WIDEDEF) >> $@
-endif
-
-$(LIBCURSES) : $(LIBDEPS)
- $(LIBEXE) $(LIBFLAGS) $@ $?
- -cp pdcurses.a panel.a
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_WIN_H)
-$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
-panel.o : $(PANEL_HEADER)
-terminfo.o: $(TERM_HEADER)
-
-$(LIBOBJS) : %.o: $(srcdir)/%.c
- $(CC) -c $(CFLAGS) $<
-
-$(PDCOBJS) : %.o: $(osdir)/%.c
- $(CC) -c $(CFLAGS) $<
-
-firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
-ptest.exe: %.exe: $(demodir)/%.c
- $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES)
-
-tuidemo.exe: tuidemo.o tui.o
- $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES)
-
-tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H)
- $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
-
-tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H)
- $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
-
-dist: $(PDCLIBS)
- echo PDCurses $(VERDOT) for Cygnus Win32 > file_id.diz
- echo ------------------------------------------ >> file_id.diz
- echo Public Domain Curses library for >> file_id.diz
- echo Cygnus GCC for Win32. >> file_id.diz
- echo Source available in PDCURS$(VER).ZIP >> file_id.diz
- echo Public Domain. >> file_id.diz
- zip -9jX pdc$(VER)_cyg_w32 \
- $(PDCURSES_SRCDIR)/README $(PDCURSES_SRCDIR)/HISTORY \
- $(PDCURSES_SRCDIR)/curses.h $(PDCURSES_SRCDIR)/panel.h \
- $(LIBCURSES) $(LIBPANEL) file_id.diz
- rm file_id.diz
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/lccwin32.mak b/payloads/libpayload/curses/PDCurses-3.4/win32/lccwin32.mak
deleted file mode 100644
index 90c1c89..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/lccwin32.mak
+++ /dev/null
@@ -1,273 +0,0 @@
-# Makefile for PDCurses library - WIN32 LCC-Win32
-#
-# Usage: make -f lccwin32.mak [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-PDCURSES_SRCDIR = ..
-
-PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h
-PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h
-PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
-
-PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h
-TERM_HEADER = $(PDCURSES_SRCDIR)\term.h
-
-srcdir = $(PDCURSES_SRCDIR)\pdcurses
-osdir = $(PDCURSES_SRCDIR)\win32
-demodir = $(PDCURSES_SRCDIR)\demos
-
-PDCURSES_WIN_H = $(osdir)\pdcwin.h
-
-CC = lcc
-
-#CFLAGS = -c -g3 -A -ansic
-CFLAGS = -c -O -A -ansic
-
-CPPFLAGS = -I$(PDCURSES_SRCDIR) #-DPDC_WIDE -DPDC_FORCE_UTF8
-
-LINK = lcclnk
-LIBEXE = lcclib
-
-LIBCURSES = pdcurses.lib
-
-BUILD = $(CC) $(CFLAGS) $(CPPFLAGS)
-PDCLIBS = $(LIBCURSES)
-
-DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe \
-firework.exe ptest.exe rain.exe worm.exe
-
-all: $(PDCLIBS) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.exe
-
-LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \
-border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \
-getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \
-insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \
-outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \
-scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \
-touch.obj util.obj window.obj debug.obj
-
-PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \
-pdcsetsc.obj pdcutil.obj
-
-DEMOOBJS = testcurs.obj newdemo.obj xmas.obj tuidemo.obj tui.obj \
-firework.obj ptest.obj rain.obj worm.obj
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_WIN_H)
-panel.obj ptest.obj: $(PANEL_HEADER)
-terminfo.obj: $(TERM_HEADER)
-
-$(DEMOOBJS) : $(PDCURSES_CURSES_H)
-$(DEMOS) : $(LIBCURSES)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) /out:$@ $(LIBOBJS) $(PDCOBJS)
- -copy $(LIBCURSES) panel.lib
-
-SRCBUILD = $(BUILD) $(srcdir)\$*.c
-OSBUILD = $(BUILD) $(osdir)\$*.c
-
-addch.obj: $(srcdir)\addch.c
- $(SRCBUILD)
-
-addchstr.obj: $(srcdir)\addchstr.c
- $(SRCBUILD)
-
-addstr.obj: $(srcdir)\addstr.c
- $(SRCBUILD)
-
-attr.obj: $(srcdir)\attr.c
- $(SRCBUILD)
-
-beep.obj: $(srcdir)\beep.c
- $(SRCBUILD)
-
-bkgd.obj: $(srcdir)\bkgd.c
- $(SRCBUILD)
-
-border.obj: $(srcdir)\border.c
- $(SRCBUILD)
-
-clear.obj: $(srcdir)\clear.c
- $(SRCBUILD)
-
-color.obj: $(srcdir)\color.c
- $(SRCBUILD)
-
-delch.obj: $(srcdir)\delch.c
- $(SRCBUILD)
-
-deleteln.obj: $(srcdir)\deleteln.c
- $(SRCBUILD)
-
-deprec.obj: $(srcdir)\deprec.c
- $(SRCBUILD)
-
-getch.obj: $(srcdir)\getch.c
- $(SRCBUILD)
-
-getstr.obj: $(srcdir)\getstr.c
- $(SRCBUILD)
-
-getyx.obj: $(srcdir)\getyx.c
- $(SRCBUILD)
-
-inch.obj: $(srcdir)\inch.c
- $(SRCBUILD)
-
-inchstr.obj: $(srcdir)\inchstr.c
- $(SRCBUILD)
-
-initscr.obj: $(srcdir)\initscr.c
- $(SRCBUILD)
-
-inopts.obj: $(srcdir)\inopts.c
- $(SRCBUILD)
-
-insch.obj: $(srcdir)\insch.c
- $(SRCBUILD)
-
-insstr.obj: $(srcdir)\insstr.c
- $(SRCBUILD)
-
-instr.obj: $(srcdir)\instr.c
- $(SRCBUILD)
-
-kernel.obj: $(srcdir)\kernel.c
- $(SRCBUILD)
-
-keyname.obj: $(srcdir)\keyname.c
- $(SRCBUILD)
-
-mouse.obj: $(srcdir)\mouse.c
- $(SRCBUILD)
-
-move.obj: $(srcdir)\move.c
- $(SRCBUILD)
-
-outopts.obj: $(srcdir)\outopts.c
- $(SRCBUILD)
-
-overlay.obj: $(srcdir)\overlay.c
- $(SRCBUILD)
-
-pad.obj: $(srcdir)\pad.c
- $(SRCBUILD)
-
-panel.obj: $(srcdir)\panel.c
- $(SRCBUILD)
-
-printw.obj: $(srcdir)\printw.c
- $(SRCBUILD)
-
-refresh.obj: $(srcdir)\refresh.c
- $(SRCBUILD)
-
-scanw.obj: $(srcdir)\scanw.c
- $(SRCBUILD)
-
-scr_dump.obj: $(srcdir)\scr_dump.c
- $(SRCBUILD)
-
-scroll.obj: $(srcdir)\scroll.c
- $(SRCBUILD)
-
-slk.obj: $(srcdir)\slk.c
- $(SRCBUILD)
-
-termattr.obj: $(srcdir)\termattr.c
- $(SRCBUILD)
-
-terminfo.obj: $(srcdir)\terminfo.c
- $(SRCBUILD)
-
-touch.obj: $(srcdir)\touch.c
- $(SRCBUILD)
-
-util.obj: $(srcdir)\util.c
- $(SRCBUILD)
-
-window.obj: $(srcdir)\window.c
- $(SRCBUILD)
-
-debug.obj: $(srcdir)\debug.c
- $(SRCBUILD)
-
-pdcclip.obj: $(osdir)\pdcclip.c
- $(OSBUILD)
-
-pdcdisp.obj: $(osdir)\pdcdisp.c
- $(OSBUILD)
-
-pdcgetsc.obj: $(osdir)\pdcgetsc.c
- $(OSBUILD)
-
-pdckbd.obj: $(osdir)\pdckbd.c
- $(OSBUILD)
-
-pdcscrn.obj: $(osdir)\pdcscrn.c
- $(OSBUILD)
-
-pdcsetsc.obj: $(osdir)\pdcsetsc.c
- $(OSBUILD)
-
-pdcutil.obj: $(osdir)\pdcutil.c
- $(OSBUILD)
-
-firework.exe: firework.obj
- $(LINK) -o $@ firework.obj $(LIBCURSES)
-
-newdemo.exe: newdemo.obj
- $(LINK) -o $@ newdemo.obj $(LIBCURSES)
-
-ptest.exe: ptest.obj
- $(LINK) -o $@ ptest.obj $(LIBCURSES)
-
-rain.exe: rain.obj
- $(LINK) -o $@ rain.obj $(LIBCURSES)
-
-testcurs.exe: testcurs.obj
- $(LINK) -o $@ testcurs.obj $(LIBCURSES)
-
-tuidemo.exe: tuidemo.obj tui.obj
- $(LINK) -o $@ tuidemo.obj tui.obj $(LIBCURSES)
-
-worm.exe: worm.obj
- $(LINK) -o $@ worm.obj $(LIBCURSES)
-
-xmas.exe: xmas.obj
- $(LINK) -o $@ xmas.obj $(LIBCURSES)
-
-firework.obj: $(demodir)\firework.c
- $(BUILD) $(demodir)\$*.c
-
-newdemo.obj: $(demodir)\newdemo.c
- $(BUILD) $(demodir)\$*.c
-
-ptest.obj: $(demodir)\ptest.c
- $(BUILD) $(demodir)\$*.c
-
-rain.obj: $(demodir)\rain.c
- $(BUILD) $(demodir)\$*.c
-
-testcurs.obj: $(demodir)\testcurs.c
- $(BUILD) $(demodir)\$*.c
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h
- $(BUILD) -I$(demodir) $(demodir)\$*.c
-
-tuidemo.obj: $(demodir)\tuidemo.c
- $(BUILD) -I$(demodir) $(demodir)\$*.c
-
-worm.obj: $(demodir)\worm.c
- $(BUILD) $(demodir)\$*.c
-
-xmas.obj: $(demodir)\xmas.c
- $(BUILD) $(demodir)\$*.c
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/mingwin32.mak b/payloads/libpayload/curses/PDCurses-3.4/win32/mingwin32.mak
deleted file mode 100644
index 7fb17e8..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/mingwin32.mak
+++ /dev/null
@@ -1,121 +0,0 @@
-# GNU MAKE Makefile for PDCurses library - WIN32 MinGW GCC
-#
-# Usage: make -f [path\]mingwin32.mak [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] [tgt]
-#
-# where tgt can be any of:
-# [all|demos|pdcurses.a|testcurs.exe...]
-
-O = o
-
-ifndef PDCURSES_SRCDIR
- PDCURSES_SRCDIR = ..
-endif
-
-include $(PDCURSES_SRCDIR)/version.mif
-include $(PDCURSES_SRCDIR)/libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)/win32
-
-PDCURSES_WIN_H = $(osdir)/pdcwin.h
-
-CC = gcc
-
-ifeq ($(DEBUG),Y)
- CFLAGS = -g -Wall -DPDCDEBUG
- LDFLAGS = -g
-else
- CFLAGS = -O2 -Wall
- LDFLAGS =
-endif
-
-CFLAGS += -I$(PDCURSES_SRCDIR)
-
-BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
-WIDEDEF = $(PDCURSES_SRCDIR)\exp-wide.def
-
-DEFDEPS = $(BASEDEF)
-
-ifeq ($(WIDE),Y)
- CFLAGS += -DPDC_WIDE
- DEFDEPS += $(WIDEDEF)
-endif
-
-ifeq ($(UTF8),Y)
- CFLAGS += -DPDC_FORCE_UTF8
-endif
-
-DEFFILE = pdcurses.def
-
-LINK = gcc
-
-ifeq ($(DLL),Y)
- CFLAGS += -DPDC_DLL_BUILD
- LIBEXE = gcc $(DEFFILE)
- LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o
- LIBCURSES = pdcurses.dll
- LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
- CLEAN = $(LIBCURSES) *.a $(DEFFILE)
-else
- LIBEXE = ar
- LIBFLAGS = rcv
- LIBCURSES = pdcurses.a
- LIBDEPS = $(LIBOBJS) $(PDCOBJS)
- CLEAN = *.a
-endif
-
-.PHONY: all libs clean demos dist
-
-all: libs demos
-
-libs: $(LIBCURSES)
-
-clean:
- -del *.o
- -del *.exe
- -del $(CLEAN)
-
-demos: $(DEMOS)
- strip *.exe
-
-$(DEFFILE): $(DEFDEPS)
- echo LIBRARY pdcurses > $@
- echo EXPORTS >> $@
- type $(BASEDEF) >> $@
-ifeq ($(WIDE),Y)
- type $(WIDEDEF) >> $@
-endif
-
-$(LIBCURSES) : $(LIBDEPS)
- $(LIBEXE) $(LIBFLAGS) $@ $?
- -copy pdcurses.a panel.a
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_WIN_H)
-$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
-panel.o : $(PANEL_HEADER)
-terminfo.o: $(TERM_HEADER)
-
-$(LIBOBJS) : %.o: $(srcdir)/%.c
- $(CC) -c $(CFLAGS) $<
-
-$(PDCOBJS) : %.o: $(osdir)/%.c
- $(CC) -c $(CFLAGS) $<
-
-firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
-ptest.exe: %.exe: $(demodir)/%.c
- $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES)
-
-tuidemo.exe: tuidemo.o tui.o
- $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES)
-
-tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H)
- $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
-
-tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H)
- $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
-
-PLATFORM1 = MinGW Win32
-PLATFORM2 = MinGW for Win32
-ARCNAME = pdc$(VER)_ming_w32
-
-include $(PDCURSES_SRCDIR)/makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcclip.c b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcclip.c
deleted file mode 100644
index 4feefae..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcclip.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcwin.h"
-
-RCSID("$Id: pdcclip.c,v 1.30 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: clipboard
-
- Synopsis:
- int PDC_getclipboard(char **contents, long *length);
- int PDC_setclipboard(const char *contents, long length);
- int PDC_freeclipboard(char *contents);
- int PDC_clearclipboard(void);
-
- Description:
- PDC_getclipboard() gets the textual contents of the system's
- clipboard. This function returns the contents of the clipboard
- in the contents argument. It is the responsibilitiy of the
- caller to free the memory returned, via PDC_freeclipboard().
- The length of the clipboard contents is returned in the length
- argument.
-
- PDC_setclipboard copies the supplied text into the system's
- clipboard, emptying the clipboard prior to the copy.
-
- PDC_clearclipboard() clears the internal clipboard.
-
- Return Values:
- indicator of success/failure of call.
- PDC_CLIP_SUCCESS the call was successful
- PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
- the clipboard contents
- PDC_CLIP_EMPTY the clipboard contains no text
- PDC_CLIP_ACCESS_ERROR no clipboard support
-
- Portability X/Open BSD SYS V
- PDC_getclipboard - - -
- PDC_setclipboard - - -
- PDC_freeclipboard - - -
- PDC_clearclipboard - - -
-
-**man-end****************************************************************/
-
-#ifdef PDC_WIDE
-# define PDC_TEXT CF_UNICODETEXT
-#else
-# define PDC_TEXT CF_OEMTEXT
-#endif
-
-int PDC_getclipboard(char **contents, long *length)
-{
- HANDLE handle;
- long len;
-
- PDC_LOG(("PDC_getclipboard() - called\n"));
-
- if (!OpenClipboard(NULL))
- return PDC_CLIP_ACCESS_ERROR;
-
- if ((handle = GetClipboardData(PDC_TEXT)) == NULL)
- {
- CloseClipboard();
- return PDC_CLIP_EMPTY;
- }
-
-#ifdef PDC_WIDE
- len = wcslen((wchar_t *)handle) * 3;
-#else
- len = strlen((char *)handle);
-#endif
- *contents = (char *)GlobalAlloc(GMEM_FIXED, len + 1);
-
- if (!*contents)
- {
- CloseClipboard();
- return PDC_CLIP_MEMORY_ERROR;
- }
-
-#ifdef PDC_WIDE
- len = PDC_wcstombs((char *)*contents, (wchar_t *)handle, len);
-#else
- strcpy((char *)*contents, (char *)handle);
-#endif
- *length = len;
- CloseClipboard();
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_setclipboard(const char *contents, long length)
-{
- HGLOBAL ptr1;
- LPTSTR ptr2;
-
- PDC_LOG(("PDC_setclipboard() - called\n"));
-
- if (!OpenClipboard(NULL))
- return PDC_CLIP_ACCESS_ERROR;
-
- ptr1 = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE,
- (length + 1) * sizeof(TCHAR));
-
- if (!ptr1)
- return PDC_CLIP_MEMORY_ERROR;
-
- ptr2 = GlobalLock(ptr1);
-
-#ifdef PDC_WIDE
- PDC_mbstowcs((wchar_t *)ptr2, contents, length);
-#else
- memcpy((char *)ptr2, contents, length + 1);
-#endif
- GlobalUnlock(ptr1);
- EmptyClipboard();
-
- if (!SetClipboardData(PDC_TEXT, ptr1))
- {
- GlobalFree(ptr1);
- return PDC_CLIP_ACCESS_ERROR;
- }
-
- CloseClipboard();
- GlobalFree(ptr1);
-
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_freeclipboard(char *contents)
-{
- PDC_LOG(("PDC_freeclipboard() - called\n"));
-
- GlobalFree(contents);
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_clearclipboard(void)
-{
- PDC_LOG(("PDC_clearclipboard() - called\n"));
-
- EmptyClipboard();
-
- return PDC_CLIP_SUCCESS;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcdisp.c b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcdisp.c
deleted file mode 100644
index a9c37eb..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcdisp.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcwin.h"
-
-RCSID("$Id: pdcdisp.c,v 1.47 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef CHTYPE_LONG
-
-# define A(x) ((chtype)x | A_ALTCHARSET)
-
-chtype acs_map[128] =
-{
- A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10),
- A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18), A(19),
- A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27), A(28),
- A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&', '\'', '(',
- ')', '*',
-
-# ifdef PDC_WIDE
- 0x2192, 0x2190, 0x2191, 0x2193,
-# else
- A(0x1a), A(0x1b), A(0x18), A(0x19),
-# endif
-
- '/',
-
-# ifdef PDC_WIDE
- 0x2588,
-# else
- 0xdb,
-# endif
-
- '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
- '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
-
-# ifdef PDC_WIDE
- 0x2666, 0x2592,
-# else
- A(0x04), 0xb1,
-# endif
-
- 'b', 'c', 'd', 'e',
-
-# ifdef PDC_WIDE
- 0x00b0, 0x00b1, 0x2591, 0x00a4, 0x2518, 0x2510, 0x250c, 0x2514,
- 0x253c, 0x23ba, 0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524,
- 0x2534, 0x252c, 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3,
- 0x00b7,
-# else
- 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d, 0x2d,
- 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3, 0xf2, 0xe3,
- 0xd8, 0x9c, 0xf9,
-# endif
-
- A(127)
-};
-
-# undef A
-
-#endif
-
-/* position hardware cursor at (y, x) */
-
-void PDC_gotoyx(int row, int col)
-{
- COORD coord;
-
- PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n",
- row, col, SP->cursrow, SP->curscol));
-
- coord.X = col;
- coord.Y = row;
-
- SetConsoleCursorPosition(pdc_con_out, coord);
-}
-
-/* update the given physical line to look like the corresponding line in
- curscr */
-
-void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
-{
- CHAR_INFO ci[512];
- int j;
- COORD bufSize, bufPos;
- SMALL_RECT sr;
-
- PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno));
-
- bufPos.X = bufPos.Y = 0;
-
- bufSize.X = len;
- bufSize.Y = 1;
-
- sr.Top = lineno;
- sr.Bottom = lineno;
- sr.Left = x;
- sr.Right = x + len - 1;
-
- for (j = 0; j < len; j++)
- {
- chtype ch = srcp[j];
-
- ci[j].Attributes = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
-#ifdef CHTYPE_LONG
- if (ch & A_ALTCHARSET && !(ch & 0xff80))
- ch = acs_map[ch & 0x7f];
-#endif
- ci[j].Char.UnicodeChar = ch & A_CHARTEXT;
- }
-
- WriteConsoleOutput(pdc_con_out, ci, bufSize, bufPos, &sr);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcgetsc.c b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcgetsc.c
deleted file mode 100644
index 7c76523..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcgetsc.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcwin.h"
-
-RCSID("$Id: pdcgetsc.c,v 1.36 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/* get the cursor size/shape */
-
-int PDC_get_cursor_mode(void)
-{
- CONSOLE_CURSOR_INFO ci;
-
- PDC_LOG(("PDC_get_cursor_mode() - called\n"));
-
- GetConsoleCursorInfo(pdc_con_out, &ci);
-
- return ci.dwSize;
-}
-
-/* return number of screen rows */
-
-int PDC_get_rows(void)
-{
- CONSOLE_SCREEN_BUFFER_INFO scr;
-
- PDC_LOG(("PDC_get_rows() - called\n"));
-
- GetConsoleScreenBufferInfo(pdc_con_out, &scr);
-
- return scr.srWindow.Bottom - scr.srWindow.Top + 1;
-}
-
-/* return number of buffer rows */
-
-int PDC_get_buffer_rows(void)
-{
- CONSOLE_SCREEN_BUFFER_INFO scr;
-
- PDC_LOG(("PDC_get_buffer_rows() - called\n"));
-
- GetConsoleScreenBufferInfo(pdc_con_out, &scr);
-
- return scr.dwSize.Y;
-}
-
-/* return width of screen/viewport */
-
-int PDC_get_columns(void)
-{
- CONSOLE_SCREEN_BUFFER_INFO scr;
-
- PDC_LOG(("PDC_get_columns() - called\n"));
-
- GetConsoleScreenBufferInfo(pdc_con_out, &scr);
-
- return scr.srWindow.Right - scr.srWindow.Left + 1;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdckbd.c b/payloads/libpayload/curses/PDCurses-3.4/win32/pdckbd.c
deleted file mode 100644
index a23ec95..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdckbd.c
+++ /dev/null
@@ -1,656 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcwin.h"
-
-RCSID("$Id: pdckbd.c,v 1.115 2008/07/20 20:12:04 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdckbd
-
- Synopsis:
- unsigned long PDC_get_input_fd(void);
-
- Description:
- PDC_get_input_fd() returns the file descriptor that PDCurses
- reads its input from. It can be used for select().
-
- Portability X/Open BSD SYS V
- PDC_get_input_fd - - -
-
-**man-end****************************************************************/
-
-unsigned long pdc_key_modifiers = 0L;
-
-/* These variables are used to store information about the next
- Input Event. */
-
-static INPUT_RECORD save_ip;
-static MOUSE_STATUS old_mouse_status;
-static DWORD event_count = 0;
-static SHORT left_key;
-static int key_count = 0;
-static int save_press = 0;
-
-#define KEV save_ip.Event.KeyEvent
-#define MEV save_ip.Event.MouseEvent
-
-/************************************************************************
- * Table for key code translation of function keys in keypad mode *
- * These values are for strict IBM keyboard compatibles only *
- ************************************************************************/
-
-typedef struct
-{
- unsigned short normal;
- unsigned short shift;
- unsigned short control;
- unsigned short alt;
- unsigned short extended;
-} KPTAB;
-
-static KPTAB kptab[] =
-{
- {0, 0, 0, 0, 0 }, /* 0 */
- {0, 0, 0, 0, 0 }, /* 1 VK_LBUTTON */
- {0, 0, 0, 0, 0 }, /* 2 VK_RBUTTON */
- {0, 0, 0, 0, 0 }, /* 3 VK_CANCEL */
- {0, 0, 0, 0, 0 }, /* 4 VK_MBUTTON */
- {0, 0, 0, 0, 0 }, /* 5 */
- {0, 0, 0, 0, 0 }, /* 6 */
- {0, 0, 0, 0, 0 }, /* 7 */
- {0x08, 0x08, 0x7F, ALT_BKSP, 0 }, /* 8 VK_BACK */
- {0x09, KEY_BTAB, CTL_TAB, ALT_TAB, 999 }, /* 9 VK_TAB */
- {0, 0, 0, 0, 0 }, /* 10 */
- {0, 0, 0, 0, 0 }, /* 11 */
- {KEY_B2, 0x35, CTL_PAD5, ALT_PAD5, 0 }, /* 12 VK_CLEAR */
- {0x0D, 0x0D, CTL_ENTER, ALT_ENTER, 1 }, /* 13 VK_RETURN */
- {0, 0, 0, 0, 0 }, /* 14 */
- {0, 0, 0, 0, 0 }, /* 15 */
- {0, 0, 0, 0, 0 }, /* 16 VK_SHIFT HANDLED SEPARATELY */
- {0, 0, 0, 0, 0 }, /* 17 VK_CONTROL HANDLED SEPARATELY */
- {0, 0, 0, 0, 0 }, /* 18 VK_MENU HANDLED SEPARATELY */
- {0, 0, 0, 0, 0 }, /* 19 VK_PAUSE */
- {0, 0, 0, 0, 0 }, /* 20 VK_CAPITAL HANDLED SEPARATELY */
- {0, 0, 0, 0, 0 }, /* 21 VK_HANGUL */
- {0, 0, 0, 0, 0 }, /* 22 */
- {0, 0, 0, 0, 0 }, /* 23 VK_JUNJA */
- {0, 0, 0, 0, 0 }, /* 24 VK_FINAL */
- {0, 0, 0, 0, 0 }, /* 25 VK_HANJA */
- {0, 0, 0, 0, 0 }, /* 26 */
- {0x1B, 0x1B, 0x1B, ALT_ESC, 0 }, /* 27 VK_ESCAPE */
- {0, 0, 0, 0, 0 }, /* 28 VK_CONVERT */
- {0, 0, 0, 0, 0 }, /* 29 VK_NONCONVERT */
- {0, 0, 0, 0, 0 }, /* 30 VK_ACCEPT */
- {0, 0, 0, 0, 0 }, /* 31 VK_MODECHANGE */
- {0x20, 0x20, 0x20, 0x20, 0 }, /* 32 VK_SPACE */
- {KEY_A3, 0x39, CTL_PAD9, ALT_PAD9, 3 }, /* 33 VK_PRIOR */
- {KEY_C3, 0x33, CTL_PAD3, ALT_PAD3, 4 }, /* 34 VK_NEXT */
- {KEY_C1, 0x31, CTL_PAD1, ALT_PAD1, 5 }, /* 35 VK_END */
- {KEY_A1, 0x37, CTL_PAD7, ALT_PAD7, 6 }, /* 36 VK_HOME */
- {KEY_B1, 0x34, CTL_PAD4, ALT_PAD4, 7 }, /* 37 VK_LEFT */
- {KEY_A2, 0x38, CTL_PAD8, ALT_PAD8, 8 }, /* 38 VK_UP */
- {KEY_B3, 0x36, CTL_PAD6, ALT_PAD6, 9 }, /* 39 VK_RIGHT */
- {KEY_C2, 0x32, CTL_PAD2, ALT_PAD2, 10 }, /* 40 VK_DOWN */
- {0, 0, 0, 0, 0 }, /* 41 VK_SELECT */
- {0, 0, 0, 0, 0 }, /* 42 VK_PRINT */
- {0, 0, 0, 0, 0 }, /* 43 VK_EXECUTE */
- {0, 0, 0, 0, 0 }, /* 44 VK_SNAPSHOT*/
- {PAD0, 0x30, CTL_PAD0, ALT_PAD0, 11 }, /* 45 VK_INSERT */
- {PADSTOP, 0x2E, CTL_PADSTOP, ALT_PADSTOP,12 }, /* 46 VK_DELETE */
- {0, 0, 0, 0, 0 }, /* 47 VK_HELP */
- {0x30, 0x29, 0, ALT_0, 0 }, /* 48 */
- {0x31, 0x21, 0, ALT_1, 0 }, /* 49 */
- {0x32, 0x40, 0, ALT_2, 0 }, /* 50 */
- {0x33, 0x23, 0, ALT_3, 0 }, /* 51 */
- {0x34, 0x24, 0, ALT_4, 0 }, /* 52 */
- {0x35, 0x25, 0, ALT_5, 0 }, /* 53 */
- {0x36, 0x5E, 0, ALT_6, 0 }, /* 54 */
- {0x37, 0x26, 0, ALT_7, 0 }, /* 55 */
- {0x38, 0x2A, 0, ALT_8, 0 }, /* 56 */
- {0x39, 0x28, 0, ALT_9, 0 }, /* 57 */
- {0, 0, 0, 0, 0 }, /* 58 */
- {0, 0, 0, 0, 0 }, /* 59 */
- {0, 0, 0, 0, 0 }, /* 60 */
- {0, 0, 0, 0, 0 }, /* 61 */
- {0, 0, 0, 0, 0 }, /* 62 */
- {0, 0, 0, 0, 0 }, /* 63 */
- {0, 0, 0, 0, 0 }, /* 64 */
- {0x61, 0x41, 0x01, ALT_A, 0 }, /* 65 */
- {0x62, 0x42, 0x02, ALT_B, 0 }, /* 66 */
- {0x63, 0x43, 0x03, ALT_C, 0 }, /* 67 */
- {0x64, 0x44, 0x04, ALT_D, 0 }, /* 68 */
- {0x65, 0x45, 0x05, ALT_E, 0 }, /* 69 */
- {0x66, 0x46, 0x06, ALT_F, 0 }, /* 70 */
- {0x67, 0x47, 0x07, ALT_G, 0 }, /* 71 */
- {0x68, 0x48, 0x08, ALT_H, 0 }, /* 72 */
- {0x69, 0x49, 0x09, ALT_I, 0 }, /* 73 */
- {0x6A, 0x4A, 0x0A, ALT_J, 0 }, /* 74 */
- {0x6B, 0x4B, 0x0B, ALT_K, 0 }, /* 75 */
- {0x6C, 0x4C, 0x0C, ALT_L, 0 }, /* 76 */
- {0x6D, 0x4D, 0x0D, ALT_M, 0 }, /* 77 */
- {0x6E, 0x4E, 0x0E, ALT_N, 0 }, /* 78 */
- {0x6F, 0x4F, 0x0F, ALT_O, 0 }, /* 79 */
- {0x70, 0x50, 0x10, ALT_P, 0 }, /* 80 */
- {0x71, 0x51, 0x11, ALT_Q, 0 }, /* 81 */
- {0x72, 0x52, 0x12, ALT_R, 0 }, /* 82 */
- {0x73, 0x53, 0x13, ALT_S, 0 }, /* 83 */
- {0x74, 0x54, 0x14, ALT_T, 0 }, /* 84 */
- {0x75, 0x55, 0x15, ALT_U, 0 }, /* 85 */
- {0x76, 0x56, 0x16, ALT_V, 0 }, /* 86 */
- {0x77, 0x57, 0x17, ALT_W, 0 }, /* 87 */
- {0x78, 0x58, 0x18, ALT_X, 0 }, /* 88 */
- {0x79, 0x59, 0x19, ALT_Y, 0 }, /* 89 */
- {0x7A, 0x5A, 0x1A, ALT_Z, 0 }, /* 90 */
- {0, 0, 0, 0, 0 }, /* 91 VK_LWIN */
- {0, 0, 0, 0, 0 }, /* 92 VK_RWIN */
- {0, 0, 0, 0, 0 }, /* 93 VK_APPS */
- {0, 0, 0, 0, 0 }, /* 94 */
- {0, 0, 0, 0, 0 }, /* 95 */
- {0x30, 0, CTL_PAD0, ALT_PAD0, 0 }, /* 96 VK_NUMPAD0 */
- {0x31, 0, CTL_PAD1, ALT_PAD1, 0 }, /* 97 VK_NUMPAD1 */
- {0x32, 0, CTL_PAD2, ALT_PAD2, 0 }, /* 98 VK_NUMPAD2 */
- {0x33, 0, CTL_PAD3, ALT_PAD3, 0 }, /* 99 VK_NUMPAD3 */
- {0x34, 0, CTL_PAD4, ALT_PAD4, 0 }, /* 100 VK_NUMPAD4 */
- {0x35, 0, CTL_PAD5, ALT_PAD5, 0 }, /* 101 VK_NUMPAD5 */
- {0x36, 0, CTL_PAD6, ALT_PAD6, 0 }, /* 102 VK_NUMPAD6 */
- {0x37, 0, CTL_PAD7, ALT_PAD7, 0 }, /* 103 VK_NUMPAD7 */
- {0x38, 0, CTL_PAD8, ALT_PAD8, 0 }, /* 104 VK_NUMPAD8 */
- {0x39, 0, CTL_PAD9, ALT_PAD9, 0 }, /* 105 VK_NUMPAD9 */
- {PADSTAR, SHF_PADSTAR,CTL_PADSTAR, ALT_PADSTAR,999 }, /* 106 VK_MULTIPLY*/
- {PADPLUS, SHF_PADPLUS,CTL_PADPLUS, ALT_PADPLUS,999 }, /* 107 VK_ADD */
- {0, 0, 0, 0, 0 }, /* 108 VK_SEPARATOR */
- {PADMINUS, SHF_PADMINUS,CTL_PADMINUS,ALT_PADMINUS,999}, /* 109 VK_SUBTRACT*/
- {0x2E, 0, CTL_PADSTOP, ALT_PADSTOP,0 }, /* 110 VK_DECIMAL */
- {PADSLASH, SHF_PADSLASH,CTL_PADSLASH,ALT_PADSLASH,2 }, /* 111 VK_DIVIDE */
- {KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37), 0 }, /* 112 VK_F1 */
- {KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38), 0 }, /* 113 VK_F2 */
- {KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39), 0 }, /* 114 VK_F3 */
- {KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40), 0 }, /* 115 VK_F4 */
- {KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41), 0 }, /* 116 VK_F5 */
- {KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42), 0 }, /* 117 VK_F6 */
- {KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43), 0 }, /* 118 VK_F7 */
- {KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44), 0 }, /* 119 VK_F8 */
- {KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45), 0 }, /* 120 VK_F9 */
- {KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46), 0 }, /* 121 VK_F10 */
- {KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47), 0 }, /* 122 VK_F11 */
- {KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48), 0 }, /* 123 VK_F12 */
-
- /* 124 through 218 */
-
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
- {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
-
- {0x5B, 0x7B, 0x1B, ALT_LBRACKET,0 }, /* 219 */
- {0x5C, 0x7C, 0x1C, ALT_BSLASH, 0 }, /* 220 */
- {0x5D, 0x7D, 0x1D, ALT_RBRACKET,0 }, /* 221 */
- {0, 0, 0x27, ALT_FQUOTE, 0 }, /* 222 */
- {0, 0, 0, 0, 0 }, /* 223 */
- {0, 0, 0, 0, 0 }, /* 224 */
- {0, 0, 0, 0, 0 } /* 225 */
-};
-
-static KPTAB ext_kptab[] =
-{
- {0, 0, 0, 0, }, /* MUST BE EMPTY */
- {PADENTER, SHF_PADENTER, CTL_PADENTER, ALT_PADENTER}, /* 13 */
- {PADSLASH, SHF_PADSLASH, CTL_PADSLASH, ALT_PADSLASH}, /* 111 */
- {KEY_PPAGE, KEY_SPREVIOUS, CTL_PGUP, ALT_PGUP }, /* 33 */
- {KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN }, /* 34 */
- {KEY_END, KEY_SEND, CTL_END, ALT_END }, /* 35 */
- {KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME }, /* 36 */
- {KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT }, /* 37 */
- {KEY_UP, KEY_SUP, CTL_UP, ALT_UP }, /* 38 */
- {KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT }, /* 39 */
- {KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN }, /* 40 */
- {KEY_IC, KEY_SIC, CTL_INS, ALT_INS }, /* 45 */
- {KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL }, /* 46 */
- {PADSLASH, SHF_PADSLASH, CTL_PADSLASH, ALT_PADSLASH}, /* 191 */
-};
-
-/* End of kptab[] */
-
-unsigned long PDC_get_input_fd(void)
-{
- PDC_LOG(("PDC_get_input_fd() - called\n"));
-
- return 0L;
-}
-
-void PDC_set_keyboard_binary(bool on)
-{
- PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
-}
-
-/* check if a key or mouse event is waiting */
-
-bool PDC_check_key(void)
-{
- if (key_count > 0)
- return TRUE;
-
- GetNumberOfConsoleInputEvents(pdc_con_in, &event_count);
-
- return (event_count != 0);
-}
-
-/* _get_key_count returns 0 if save_ip doesn't contain an event which
- should be passed back to the user. This function filters "useless"
- events.
-
- The function returns the number of keys waiting. This may be > 1
- if the repetition of real keys pressed so far are > 1.
-
- Returns 0 on NUMLOCK, CAPSLOCK, SCROLLLOCK.
-
- Returns 1 for SHIFT, ALT, CTRL only if no other key has been pressed
- in between, and SP->return_key_modifiers is set; these are returned
- on keyup.
-
- Normal keys are returned on keydown only. The number of repetitions
- are returned. Dead keys (diacritics) are omitted. See below for a
- description.
-*/
-
-static int _get_key_count(void)
-{
- int num_keys = 0, vk;
-
- PDC_LOG(("_get_key_count() - called\n"));
-
- vk = KEV.wVirtualKeyCode;
-
- if (KEV.bKeyDown)
- {
- /* key down */
-
- save_press = 0;
-
- if (vk == VK_CAPITAL || vk == VK_NUMLOCK || vk == VK_SCROLL)
- {
- /* throw away these modifiers */
- }
- else if (vk == VK_SHIFT || vk == VK_CONTROL || vk == VK_MENU)
- {
- /* These keys are returned on keyup only. */
-
- save_press = vk;
- switch (vk)
- {
- case VK_SHIFT:
- left_key = GetKeyState(VK_LSHIFT);
- break;
- case VK_CONTROL:
- left_key = GetKeyState(VK_LCONTROL);
- break;
- case VK_MENU:
- left_key = GetKeyState(VK_LMENU);
- }
- }
- else
- {
- /* Check for diacritics. These are dead keys. Some locales
- have modified characters like umlaut-a, which is an "a"
- with two dots on it. In some locales you have to press a
- special key (the dead key) immediately followed by the
- "a" to get a composed umlaut-a. The special key may have
- a normal meaning with different modifiers. */
-
- if (KEV.uChar.UnicodeChar || !(MapVirtualKey(vk, 2) & 0x80000000))
- num_keys = KEV.wRepeatCount;
- }
- }
- else
- {
- /* key up */
-
- /* Only modifier keys or the results of ALT-numpad entry are
- returned on keyup */
-
- if ((vk == VK_MENU && KEV.uChar.UnicodeChar) ||
- ((vk == VK_SHIFT || vk == VK_CONTROL || vk == VK_MENU) &&
- vk == save_press))
- {
- save_press = 0;
- num_keys = 1;
- }
- }
-
- PDC_LOG(("_get_key_count() - returning: num_keys %d\n", num_keys));
-
- return num_keys;
-}
-
-/* _process_key_event returns -1 if the key in save_ip should be
- ignored. Otherwise it returns the keycode which should be returned
- by PDC_get_key(). save_ip must be a key event.
-
- CTRL-ALT support has been disabled, when is it emitted plainly? */
-
-static int _process_key_event(void)
-{
- int key = (unsigned short)KEV.uChar.UnicodeChar;
- WORD vk = KEV.wVirtualKeyCode;
- DWORD state = KEV.dwControlKeyState;
-
- int idx;
- BOOL enhanced;
-
- SP->key_code = TRUE;
-
- /* Save the key modifiers if required. Do this first to allow to
- detect e.g. a pressed CTRL key after a hit of NUMLOCK. */
-
- if (SP->save_key_modifiers)
- {
- if (state & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED))
- pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
-
- if (state & SHIFT_PRESSED)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
-
- if (state & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED))
- pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
-
- if (state & NUMLOCK_ON)
- pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
- }
-
- /* Handle modifier keys hit by themselves */
-
- switch (vk)
- {
- case VK_SHIFT: /* shift */
- if (!SP->return_key_modifiers)
- return -1;
-
- return (left_key & 0x8000) ? KEY_SHIFT_L : KEY_SHIFT_R;
-
- case VK_CONTROL: /* control */
- if (!SP->return_key_modifiers)
- return -1;
-
- return (left_key & 0x8000) ? KEY_CONTROL_L : KEY_CONTROL_R;
-
- case VK_MENU: /* alt */
- if (!key)
- {
- if (!SP->return_key_modifiers)
- return -1;
-
- return (left_key & 0x8000) ? KEY_ALT_L : KEY_ALT_R;
- }
- }
-
- /* The system may emit Ascii or Unicode characters depending on
- whether ReadConsoleInputA or ReadConsoleInputW is used.
-
- Normally, if key != 0 then the system did the translation
- successfully. But this is not true for LEFT_ALT (different to
- RIGHT_ALT). In case of LEFT_ALT we can get key != 0. So
- check for this first. */
-
- if (key && ( !(state & LEFT_ALT_PRESSED) ||
- (state & RIGHT_ALT_PRESSED) ))
- {
- /* This code should catch all keys returning a printable
- character. Characters above 0x7F should be returned as
- positive codes. But if'ndef NUMKEYPAD we have to return
- extended keycodes for keypad codes. */
-
-#ifndef NUMKEYPAD
- if (kptab[vk].extended == 0)
-#endif
- {
- SP->key_code = FALSE;
- return key;
- }
- }
-
- /* This case happens if a functional key has been entered. */
-
- if ((state & ENHANCED_KEY) && (kptab[vk].extended != 999))
- {
- enhanced = TRUE;
- idx = kptab[vk].extended;
- }
- else
- {
- enhanced = FALSE;
- idx = vk;
- }
-
- if (state & SHIFT_PRESSED)
- key = enhanced ? ext_kptab[idx].shift : kptab[idx].shift;
-
- else if (state & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED))
- key = enhanced ? ext_kptab[idx].control : kptab[idx].control;
-
- else if (state & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED))
- key = enhanced ? ext_kptab[idx].alt : kptab[idx].alt;
-
- else
- key = enhanced ? ext_kptab[idx].normal : kptab[idx].normal;
-
- if (key < KEY_CODE_YES)
- SP->key_code = FALSE;
-
- return key;
-}
-
-static int _process_mouse_event(void)
-{
- static const DWORD button_mask[] = {1, 4, 2};
- short action, shift_flags = 0;
- int i;
-
- save_press = 0;
- SP->key_code = TRUE;
-
- memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS));
-
- /* Handle scroll wheel */
-
- if (MEV.dwEventFlags == 4)
- {
- pdc_mouse_status.changes = (MEV.dwButtonState & 0xFF000000) ?
- PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP;
-
- pdc_mouse_status.x = -1;
- pdc_mouse_status.y = -1;
-
- memset(&old_mouse_status, 0, sizeof(old_mouse_status));
-
- return KEY_MOUSE;
- }
-
- action = (MEV.dwEventFlags == 2) ? BUTTON_DOUBLE_CLICKED :
- ((MEV.dwEventFlags == 1) ? BUTTON_MOVED : BUTTON_PRESSED);
-
- for (i = 0; i < 3; i++)
- pdc_mouse_status.button[i] =
- (MEV.dwButtonState & button_mask[i]) ? action : 0;
-
- if (action == BUTTON_PRESSED && MEV.dwButtonState & 7 && SP->mouse_wait)
- {
- /* Check for a click -- a PRESS followed immediately by a release */
-
- if (!event_count)
- {
- napms(SP->mouse_wait);
-
- GetNumberOfConsoleInputEvents(pdc_con_in, &event_count);
- }
-
- if (event_count)
- {
- INPUT_RECORD ip;
- DWORD count;
- bool have_click = FALSE;
-
- PeekConsoleInput(pdc_con_in, &ip, 1, &count);
-
- for (i = 0; i < 3; i++)
- {
- if (pdc_mouse_status.button[i] == BUTTON_PRESSED &&
- !(ip.Event.MouseEvent.dwButtonState & button_mask[i]))
- {
- pdc_mouse_status.button[i] = BUTTON_CLICKED;
- have_click = TRUE;
- }
- }
-
- /* If a click was found, throw out the event */
-
- if (have_click)
- ReadConsoleInput(pdc_con_in, &ip, 1, &count);
- }
- }
-
- pdc_mouse_status.x = MEV.dwMousePosition.X;
- pdc_mouse_status.y = MEV.dwMousePosition.Y;
-
- pdc_mouse_status.changes = 0;
-
- for (i = 0; i < 3; i++)
- {
- if (old_mouse_status.button[i] != pdc_mouse_status.button[i])
- pdc_mouse_status.changes |= (1 << i);
-
- if (pdc_mouse_status.button[i] == BUTTON_MOVED)
- {
- /* Discard non-moved "moves" */
-
- if (pdc_mouse_status.x == old_mouse_status.x &&
- pdc_mouse_status.y == old_mouse_status.y)
- return -1;
-
- /* Motion events always flag the button as changed */
-
- pdc_mouse_status.changes |= (1 << i);
- pdc_mouse_status.changes |= PDC_MOUSE_MOVED;
- break;
- }
- }
-
- old_mouse_status = pdc_mouse_status;
-
- /* Treat click events as release events for comparison purposes */
-
- for (i = 0; i < 3; i++)
- {
- if (old_mouse_status.button[i] == BUTTON_CLICKED ||
- old_mouse_status.button[i] == BUTTON_DOUBLE_CLICKED)
- old_mouse_status.button[i] = BUTTON_RELEASED;
- }
-
- /* Check for SHIFT/CONTROL/ALT */
-
- if (MEV.dwControlKeyState & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED))
- shift_flags |= BUTTON_ALT;
-
- if (MEV.dwControlKeyState & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED))
- shift_flags |= BUTTON_CONTROL;
-
- if (MEV.dwControlKeyState & SHIFT_PRESSED)
- shift_flags |= BUTTON_SHIFT;
-
- if (shift_flags)
- {
- for (i = 0; i < 3; i++)
- {
- if (pdc_mouse_status.changes & (1 << i))
- pdc_mouse_status.button[i] |= shift_flags;
- }
- }
-
- return KEY_MOUSE;
-}
-
-/* return the next available key or mouse event */
-
-int PDC_get_key(void)
-{
- pdc_key_modifiers = 0L;
-
- if (!key_count)
- {
- DWORD count;
-
- ReadConsoleInput(pdc_con_in, &save_ip, 1, &count);
- event_count--;
-
- if (save_ip.EventType == MOUSE_EVENT)
- key_count = 1;
- else if (save_ip.EventType == KEY_EVENT)
- key_count = _get_key_count();
- }
-
- if (key_count)
- {
- key_count--;
-
- switch (save_ip.EventType)
- {
- case KEY_EVENT:
- return _process_key_event();
-
- case MOUSE_EVENT:
- return _process_mouse_event();
- }
- }
-
- return -1;
-}
-
-/* discard any pending keyboard or mouse input -- this is the core
- routine for flushinp() */
-
-void PDC_flushinp(void)
-{
- PDC_LOG(("PDC_flushinp() - called\n"));
-
- FlushConsoleInputBuffer(pdc_con_in);
-}
-
-int PDC_mouse_set(void)
-{
- /* If turning on mouse input: Set ENABLE_MOUSE_INPUT, and clear
- all other flags, including the extended flags;
- If turning off the mouse: Set QuickEdit Mode to the status it
- had on startup, and clear all other flags */
-
- SetConsoleMode(pdc_con_in, SP->_trap_mbe ?
- (ENABLE_MOUSE_INPUT|0x0080) : (pdc_quick_edit|0x0080));
-
- memset(&old_mouse_status, 0, sizeof(old_mouse_status));
-
- return OK;
-}
-
-int PDC_modifiers_set(void)
-{
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcscrn.c b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcscrn.c
deleted file mode 100644
index 12c1ff3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcscrn.c
+++ /dev/null
@@ -1,620 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcwin.h"
-
-RCSID("$Id: pdcscrn.c,v 1.92 2008/07/20 20:12:04 wmcbrine Exp $")
-
-#ifdef CHTYPE_LONG
-# define PDC_OFFSET 32
-#else
-# define PDC_OFFSET 8
-#endif
-
-/* COLOR_PAIR to attribute encoding table. */
-
-unsigned char *pdc_atrtab = (unsigned char *)NULL;
-
-HANDLE pdc_con_out = INVALID_HANDLE_VALUE;
-HANDLE pdc_con_in = INVALID_HANDLE_VALUE;
-
-DWORD pdc_quick_edit;
-
-static short curstoreal[16], realtocurs[16] =
-{
- COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED,
- COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8,
- COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8,
- COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8
-};
-
-enum { PDC_RESTORE_NONE, PDC_RESTORE_BUFFER, PDC_RESTORE_WINDOW };
-
-/* Struct for storing console registry keys, and for use with the
- undocumented WM_SETCONSOLEINFO message. Originally by James Brown,
- www.catch22.net. */
-
-static struct
-{
- ULONG Length;
- COORD ScreenBufferSize;
- COORD WindowSize;
- ULONG WindowPosX;
- ULONG WindowPosY;
-
- COORD FontSize;
- ULONG FontFamily;
- ULONG FontWeight;
- WCHAR FaceName[32];
-
- ULONG CursorSize;
- ULONG FullScreen;
- ULONG QuickEdit;
- ULONG AutoPosition;
- ULONG InsertMode;
-
- USHORT ScreenColors;
- USHORT PopupColors;
- ULONG HistoryNoDup;
- ULONG HistoryBufferSize;
- ULONG NumberOfHistoryBuffers;
-
- COLORREF ColorTable[16];
-
- ULONG CodePage;
- HWND Hwnd;
-
- WCHAR ConsoleTitle[0x100];
-} console_info;
-
-static CONSOLE_SCREEN_BUFFER_INFO orig_scr;
-
-static CHAR_INFO *ci_save = NULL;
-static DWORD old_console_mode = 0;
-
-static bool is_nt;
-
-static HWND _find_console_handle(void)
-{
- TCHAR orgtitle[1024], temptitle[1024];
- HWND wnd;
-
- GetConsoleTitle(orgtitle, 1024);
-
- wsprintf(temptitle, TEXT("%d/%d"), GetTickCount(), GetCurrentProcessId());
- SetConsoleTitle(temptitle);
-
- Sleep(40);
-
- wnd = FindWindow(NULL, temptitle);
-
- SetConsoleTitle(orgtitle);
-
- return wnd;
-}
-
-/* Undocumented console message */
-
-#define WM_SETCONSOLEINFO (WM_USER + 201)
-
-/* Wrapper around WM_SETCONSOLEINFO. We need to create the necessary
- section (file-mapping) object in the context of the process which
- owns the console, before posting the message. Originally by JB. */
-
-static void _set_console_info(void)
-{
- CONSOLE_SCREEN_BUFFER_INFO csbi;
- CONSOLE_CURSOR_INFO cci;
- DWORD dwConsoleOwnerPid;
- HANDLE hProcess;
- HANDLE hSection, hDupSection;
- PVOID ptrView;
-
- /* Each-time initialization for console_info */
-
- GetConsoleCursorInfo(pdc_con_out, &cci);
- console_info.CursorSize = cci.dwSize;
-
- GetConsoleScreenBufferInfo(pdc_con_out, &csbi);
- console_info.ScreenBufferSize = csbi.dwSize;
-
- console_info.WindowSize.X = csbi.srWindow.Right - csbi.srWindow.Left + 1;
- console_info.WindowSize.Y = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
-
- console_info.WindowPosX = csbi.srWindow.Left;
- console_info.WindowPosY = csbi.srWindow.Top;
-
- /* Open the process which "owns" the console */
-
- GetWindowThreadProcessId(console_info.Hwnd, &dwConsoleOwnerPid);
-
- hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwConsoleOwnerPid);
-
- /* Create a SECTION object backed by page-file, then map a view of
- this section into the owner process so we can write the contents
- of the CONSOLE_INFO buffer into it */
-
- hSection = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE,
- 0, sizeof(console_info), 0);
-
- /* Copy our console structure into the section-object */
-
- ptrView = MapViewOfFile(hSection, FILE_MAP_WRITE|FILE_MAP_READ,
- 0, 0, sizeof(console_info));
-
- memcpy(ptrView, &console_info, sizeof(console_info));
-
- UnmapViewOfFile(ptrView);
-
- /* Map the memory into owner process */
-
- DuplicateHandle(GetCurrentProcess(), hSection, hProcess, &hDupSection,
- 0, FALSE, DUPLICATE_SAME_ACCESS);
-
- /* Send console window the "update" message */
-
- SendMessage(console_info.Hwnd, WM_SETCONSOLEINFO, (WPARAM)hDupSection, 0);
-
- CloseHandle(hSection);
- CloseHandle(hProcess);
-}
-
-/* One-time initialization for console_info -- color table and font info
- from the registry; other values from functions. */
-
-static void _init_console_info(void)
-{
- DWORD scrnmode, len;
- HKEY reghnd;
- int i;
-
- console_info.Hwnd = _find_console_handle();
- console_info.Length = sizeof(console_info);
-
- GetConsoleMode(pdc_con_in, &scrnmode);
- console_info.QuickEdit = !!(scrnmode & 0x0040);
- console_info.InsertMode = !!(scrnmode & 0x0020);
-
- console_info.FullScreen = FALSE;
- console_info.AutoPosition = 0x10000;
- console_info.ScreenColors = SP->orig_back << 4 | SP->orig_fore;
- console_info.PopupColors = 0xf5;
-
- console_info.HistoryNoDup = FALSE;
- console_info.HistoryBufferSize = 50;
- console_info.NumberOfHistoryBuffers = 4;
-
- console_info.CodePage = GetConsoleOutputCP();
-
- RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Console"), 0,
- KEY_QUERY_VALUE, ®hnd);
-
- len = sizeof(DWORD);
-
- /* Default color table */
-
- for (i = 0; i < 16; i++)
- {
- char tname[13];
-
- sprintf(tname, "ColorTable%02d", i);
- RegQueryValueExA(reghnd, tname, NULL, NULL,
- (LPBYTE)(&(console_info.ColorTable[i])), &len);
- }
-
- /* Font info */
-
- RegQueryValueEx(reghnd, TEXT("FontSize"), NULL, NULL,
- (LPBYTE)(&console_info.FontSize), &len);
- RegQueryValueEx(reghnd, TEXT("FontFamily"), NULL, NULL,
- (LPBYTE)(&console_info.FontFamily), &len);
- RegQueryValueEx(reghnd, TEXT("FontWeight"), NULL, NULL,
- (LPBYTE)(&console_info.FontWeight), &len);
-
- len = sizeof(WCHAR) * 32;
- RegQueryValueExW(reghnd, L"FaceName", NULL, NULL,
- (LPBYTE)(console_info.FaceName), &len);
-
- RegCloseKey(reghnd);
-}
-
-/* close the physical screen -- may restore the screen to its state
- before PDC_scr_open(); miscellaneous cleanup */
-
-void PDC_scr_close(void)
-{
- COORD origin;
- SMALL_RECT rect;
-
- PDC_LOG(("PDC_scr_close() - called\n"));
-
- PDC_reset_shell_mode();
-
- if (SP->_restore != PDC_RESTORE_NONE)
- {
- if (SP->_restore == PDC_RESTORE_WINDOW)
- {
- rect.Top = orig_scr.srWindow.Top;
- rect.Left = orig_scr.srWindow.Left;
- rect.Bottom = orig_scr.srWindow.Bottom;
- rect.Right = orig_scr.srWindow.Right;
- }
- else /* PDC_RESTORE_BUFFER */
- {
- rect.Top = rect.Left = 0;
- rect.Bottom = orig_scr.dwSize.Y - 1;
- rect.Right = orig_scr.dwSize.X - 1;
- }
-
- origin.X = origin.Y = 0;
-
- if (!WriteConsoleOutput(pdc_con_out, ci_save, orig_scr.dwSize,
- origin, &rect))
- return;
- }
-
- if (SP->visibility != 1)
- curs_set(1);
-
- /* Position cursor to the bottom left of the screen. */
-
- PDC_gotoyx(PDC_get_buffer_rows() - 2, 0);
-}
-
-void PDC_scr_free(void)
-{
- if (SP)
- free(SP);
- if (pdc_atrtab)
- free(pdc_atrtab);
-
- pdc_atrtab = (unsigned char *)NULL;
-}
-
-/* open the physical screen -- allocate SP, miscellaneous intialization,
- and may save the existing screen for later restoration */
-
-int PDC_scr_open(int argc, char **argv)
-{
- COORD bufsize, origin;
- SMALL_RECT rect;
- const char *str;
- CONSOLE_SCREEN_BUFFER_INFO csbi;
- int i;
-
- PDC_LOG(("PDC_scr_open() - called\n"));
-
- SP = calloc(1, sizeof(SCREEN));
- pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1);
-
- if (!SP || !pdc_atrtab)
- return ERR;
-
- for (i = 0; i < 16; i++)
- curstoreal[realtocurs[i]] = i;
-
- pdc_con_out = GetStdHandle(STD_OUTPUT_HANDLE);
- pdc_con_in = GetStdHandle(STD_INPUT_HANDLE);
-
- if (GetFileType(pdc_con_in) != FILE_TYPE_CHAR)
- {
- fprintf(stderr, "\nRedirection is not supported.\n");
- exit(1);
- }
-
- is_nt = !(GetVersion() & 0x80000000);
-
- GetConsoleScreenBufferInfo(pdc_con_out, &csbi);
- GetConsoleScreenBufferInfo(pdc_con_out, &orig_scr);
- GetConsoleMode(pdc_con_in, &old_console_mode);
-
- /* preserve QuickEdit Mode setting for use in PDC_mouse_set() when
- the mouse is not enabled -- other console input settings are
- cleared */
-
- pdc_quick_edit = old_console_mode & 0x0040;
-
- SP->lines = (str = getenv("LINES")) ? atoi(str) : PDC_get_rows();
- SP->cols = (str = getenv("COLS")) ? atoi(str) : PDC_get_columns();
-
- SP->mouse_wait = PDC_CLICK_PERIOD;
- SP->audible = TRUE;
-
- if (SP->lines < 2 || SP->lines > csbi.dwMaximumWindowSize.Y)
- {
- fprintf(stderr, "LINES value must be >= 2 and <= %d: got %d\n",
- csbi.dwMaximumWindowSize.Y, SP->lines);
-
- return ERR;
- }
-
- if (SP->cols < 2 || SP->cols > csbi.dwMaximumWindowSize.X)
- {
- fprintf(stderr, "COLS value must be >= 2 and <= %d: got %d\n",
- csbi.dwMaximumWindowSize.X, SP->cols);
-
- return ERR;
- }
-
- SP->orig_fore = csbi.wAttributes & 0x0f;
- SP->orig_back = (csbi.wAttributes & 0xf0) >> 4;
-
- SP->orig_attr = TRUE;
-
- SP->_restore = PDC_RESTORE_NONE;
-
- if (getenv("PDC_RESTORE_SCREEN"))
- {
- /* Attempt to save the complete console buffer */
-
- ci_save = malloc(orig_scr.dwSize.X * orig_scr.dwSize.Y *
- sizeof(CHAR_INFO));
-
- if (!ci_save)
- {
- PDC_LOG(("PDC_scr_open() - malloc failure (1)\n"));
-
- return ERR;
- }
-
- bufsize.X = orig_scr.dwSize.X;
- bufsize.Y = orig_scr.dwSize.Y;
-
- origin.X = origin.Y = 0;
-
- rect.Top = rect.Left = 0;
- rect.Bottom = orig_scr.dwSize.Y - 1;
- rect.Right = orig_scr.dwSize.X - 1;
-
- if (!ReadConsoleOutput(pdc_con_out, ci_save, bufsize, origin, &rect))
- {
- /* We can't save the complete buffer, so try and save just
- the displayed window */
-
- free(ci_save);
- ci_save = NULL;
-
- bufsize.X = orig_scr.srWindow.Right - orig_scr.srWindow.Left + 1;
- bufsize.Y = orig_scr.srWindow.Bottom - orig_scr.srWindow.Top + 1;
-
- ci_save = malloc(bufsize.X * bufsize.Y * sizeof(CHAR_INFO));
-
- if (!ci_save)
- {
- PDC_LOG(("PDC_scr_open() - malloc failure (2)\n"));
-
- return ERR;
- }
-
- origin.X = origin.Y = 0;
-
- rect.Top = orig_scr.srWindow.Top;
- rect.Left = orig_scr.srWindow.Left;
- rect.Bottom = orig_scr.srWindow.Bottom;
- rect.Right = orig_scr.srWindow.Right;
-
- if (!ReadConsoleOutput(pdc_con_out, ci_save, bufsize,
- origin, &rect))
- {
-#ifdef PDCDEBUG
- CHAR LastError[256];
-
- FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL,
- GetLastError(), MAKELANGID(LANG_NEUTRAL,
- SUBLANG_DEFAULT), LastError, 256, NULL);
-
- PDC_LOG(("PDC_scr_open() - %s\n", LastError));
-#endif
- free(ci_save);
- ci_save = NULL;
-
- return ERR;
- }
-
- SP->_restore = PDC_RESTORE_WINDOW;
- }
- else
- SP->_restore = PDC_RESTORE_BUFFER;
- }
-
- SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
-
- PDC_reset_prog_mode();
-
- SP->mono = FALSE;
-
- return OK;
-}
-
- /* Calls SetConsoleWindowInfo with the given parameters, but fits them
- if a scoll bar shrinks the maximum possible value. The rectangle
- must at least fit in a half-sized window. */
-
-static BOOL _fit_console_window(HANDLE con_out, CONST SMALL_RECT *rect)
-{
- SMALL_RECT run;
- SHORT mx, my;
-
- if (SetConsoleWindowInfo(con_out, TRUE, rect))
- return TRUE;
-
- run = *rect;
- run.Right /= 2;
- run.Bottom /= 2;
-
- mx = run.Right;
- my = run.Bottom;
-
- if (!SetConsoleWindowInfo(con_out, TRUE, &run))
- return FALSE;
-
- for (run.Right = rect->Right; run.Right >= mx; run.Right--)
- if (SetConsoleWindowInfo(con_out, TRUE, &run))
- break;
-
- if (run.Right < mx)
- return FALSE;
-
- for (run.Bottom = rect->Bottom; run.Bottom >= my; run.Bottom--)
- if (SetConsoleWindowInfo(con_out, TRUE, &run))
- return TRUE;
-
- return FALSE;
-}
-
-/* the core of resize_term() */
-
-int PDC_resize_screen(int nlines, int ncols)
-{
- SMALL_RECT rect;
- COORD size, max;
-
- if (nlines < 2 || ncols < 2)
- return ERR;
-
- max = GetLargestConsoleWindowSize(pdc_con_out);
-
- rect.Left = rect.Top = 0;
- rect.Right = ncols - 1;
-
- if (rect.Right > max.X)
- rect.Right = max.X;
-
- rect.Bottom = nlines - 1;
-
- if (rect.Bottom > max.Y)
- rect.Bottom = max.Y;
-
- size.X = rect.Right + 1;
- size.Y = rect.Bottom + 1;
-
- _fit_console_window(pdc_con_out, &rect);
- SetConsoleScreenBufferSize(pdc_con_out, size);
- _fit_console_window(pdc_con_out, &rect);
- SetConsoleScreenBufferSize(pdc_con_out, size);
- SetConsoleActiveScreenBuffer(pdc_con_out);
-
- return OK;
-}
-
-void PDC_reset_prog_mode(void)
-{
- PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
-
- if (is_nt)
- {
- COORD bufsize;
- SMALL_RECT rect;
-
- bufsize.X = orig_scr.srWindow.Right - orig_scr.srWindow.Left + 1;
- bufsize.Y = orig_scr.srWindow.Bottom - orig_scr.srWindow.Top + 1;
-
- rect.Top = rect.Left = 0;
- rect.Bottom = bufsize.Y - 1;
- rect.Right = bufsize.X - 1;
-
- SetConsoleScreenBufferSize(pdc_con_out, bufsize);
- SetConsoleWindowInfo(pdc_con_out, TRUE, &rect);
- SetConsoleScreenBufferSize(pdc_con_out, bufsize);
- SetConsoleActiveScreenBuffer(pdc_con_out);
- }
-
- PDC_mouse_set();
-}
-
-void PDC_reset_shell_mode(void)
-{
- PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
-
- if (is_nt)
- {
- SetConsoleScreenBufferSize(pdc_con_out, orig_scr.dwSize);
- SetConsoleWindowInfo(pdc_con_out, TRUE, &orig_scr.srWindow);
- SetConsoleScreenBufferSize(pdc_con_out, orig_scr.dwSize);
- SetConsoleWindowInfo(pdc_con_out, TRUE, &orig_scr.srWindow);
- SetConsoleActiveScreenBuffer(pdc_con_out);
- }
-
- SetConsoleMode(pdc_con_in, old_console_mode);
-}
-
-void PDC_restore_screen_mode(int i)
-{
-}
-
-void PDC_save_screen_mode(int i)
-{
-}
-
-void PDC_init_pair(short pair, short fg, short bg)
-{
- unsigned char att, temp_bg;
- chtype i;
-
- fg = curstoreal[fg];
- bg = curstoreal[bg];
-
- for (i = 0; i < PDC_OFFSET; i++)
- {
- att = fg | (bg << 4);
-
- if (i & (A_REVERSE >> PDC_ATTR_SHIFT))
- att = bg | (fg << 4);
- if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT))
- att = 1;
- if (i & (A_INVIS >> PDC_ATTR_SHIFT))
- {
- temp_bg = att >> 4;
- att = temp_bg << 4 | temp_bg;
- }
- if (i & (A_BOLD >> PDC_ATTR_SHIFT))
- att |= 8;
- if (i & (A_BLINK >> PDC_ATTR_SHIFT))
- att |= 128;
-
- pdc_atrtab[pair * PDC_OFFSET + i] = att;
- }
-}
-
-int PDC_pair_content(short pair, short *fg, short *bg)
-{
- *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F];
- *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4];
-
- return OK;
-}
-
-bool PDC_can_change_color(void)
-{
- return is_nt;
-}
-
-int PDC_color_content(short color, short *red, short *green, short *blue)
-{
- DWORD col;
-
- if (!console_info.Hwnd)
- _init_console_info();
-
- col = console_info.ColorTable[curstoreal[color]];
-
- *red = DIVROUND(GetRValue(col) * 1000, 255);
- *green = DIVROUND(GetGValue(col) * 1000, 255);
- *blue = DIVROUND(GetBValue(col) * 1000, 255);
-
- return OK;
-}
-
-int PDC_init_color(short color, short red, short green, short blue)
-{
- if (!console_info.Hwnd)
- _init_console_info();
-
- console_info.ColorTable[curstoreal[color]] =
- RGB(DIVROUND(red * 255, 1000),
- DIVROUND(green * 255, 1000),
- DIVROUND(blue * 255, 1000));
-
- _set_console_info();
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcsetsc.c b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcsetsc.c
deleted file mode 100644
index 237b356..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcsetsc.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcwin.h"
-
-RCSID("$Id: pdcsetsc.c,v 1.40 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdcsetsc
-
- Synopsis:
- int PDC_set_blink(bool blinkon);
- void PDC_set_title(const char *title);
-
- Description:
- PDC_set_blink() toggles whether the A_BLINK attribute sets an
- actual blink mode (TRUE), or sets the background color to high
- intensity (FALSE). The default is platform-dependent (FALSE in
- most cases). It returns OK if it could set the state to match
- the given parameter, ERR otherwise. Current platforms also
- adjust the value of COLORS according to this function -- 16 for
- FALSE, and 8 for TRUE.
-
- PDC_set_title() sets the title of the window in which the curses
- program is running. This function may not do anything on some
- platforms. (Currently it only works in Win32 and X11.)
-
- Portability X/Open BSD SYS V
- PDC_set_blink - - -
- PDC_set_title - - -
-
-**man-end****************************************************************/
-
-int PDC_curs_set(int visibility)
-{
- CONSOLE_CURSOR_INFO cci;
- int ret_vis;
-
- PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
-
- ret_vis = SP->visibility;
-
- if (GetConsoleCursorInfo(pdc_con_out, &cci) == FALSE)
- return ERR;
-
- switch(visibility)
- {
- case 0: /* invisible */
- cci.bVisible = FALSE;
- break;
- case 2: /* highly visible */
- cci.bVisible = TRUE;
- cci.dwSize = 95;
- break;
- default: /* normal visibility */
- cci.bVisible = TRUE;
- cci.dwSize = SP->orig_cursor;
- break;
- }
-
- if (SetConsoleCursorInfo(pdc_con_out, &cci) == FALSE)
- return ERR;
-
- SP->visibility = visibility;
- return ret_vis;
-}
-
-void PDC_set_title(const char *title)
-{
-#ifdef PDC_WIDE
- wchar_t wtitle[512];
-#endif
- PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
-
-#ifdef PDC_WIDE
- PDC_mbstowcs(wtitle, title, 511);
- SetConsoleTitleW(wtitle);
-#else
- SetConsoleTitleA(title);
-#endif
-}
-
-int PDC_set_blink(bool blinkon)
-{
- if (pdc_color_started)
- COLORS = 16;
-
- return blinkon ? ERR : OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcurses.ico b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcurses.ico
deleted file mode 100644
index 53a6dde..0000000
Binary files a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcurses.ico and /dev/null differ
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcurses.rc b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcurses.rc
deleted file mode 100644
index 1b8bba4..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcurses.rc
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "winver.h"
-
-1 VERSIONINFO
- FILEVERSION 3,4,0,0
- PRODUCTVERSION 3,4,0,0
- FILEFLAGSMASK 0x3fL
- FILEFLAGS 0x0L
- FILEOS VOS_UNKNOWN
- FILETYPE VFT_DLL
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "Maintainer", "William McBrine\0"
- VALUE "FileDescription", "Public Domain Curses\0"
- VALUE "FileVersion", "3.4.0\0"
- VALUE "InternalName", "PDCurses\0"
- VALUE "LegalCopyright", "Public Domain\0"
- VALUE "OriginalFilename", "PDCURSES.DLL\0"
- VALUE "ProductName", "Public Domain Curses Library\0"
- VALUE "ProductVersion", "3.4.0\0"
- END
- END
-END
-
-1 ICON DISCARDABLE "PDCURSES.ico"
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcutil.c b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcutil.c
deleted file mode 100644
index f7be019..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcutil.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcwin.h"
-
-RCSID("$Id: pdcutil.c,v 1.14 2008/07/14 04:24:52 wmcbrine Exp $")
-
-void PDC_beep(void)
-{
- PDC_LOG(("PDC_beep() - called\n"));
-
-/* MessageBeep(MB_OK); */
- MessageBeep(0XFFFFFFFF);
-}
-
-void PDC_napms(int ms)
-{
- PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
-
- Sleep(ms);
-}
-
-const char *PDC_sysname(void)
-{
- return "Win32";
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcwin.h b/payloads/libpayload/curses/PDCurses-3.4/win32/pdcwin.h
deleted file mode 100644
index bb3396f..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/pdcwin.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: pdcwin.h,v 1.6 2008/07/13 06:36:32 wmcbrine Exp $ */
-
-#ifdef PDC_WIDE
-# define UNICODE
-#endif
-
-#include <windows.h>
-#undef MOUSE_MOVED
-#include <curspriv.h>
-
-extern unsigned char *pdc_atrtab;
-extern HANDLE pdc_con_out, pdc_con_in;
-extern DWORD pdc_quick_edit;
-
-extern int PDC_get_buffer_rows(void);
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/vcwin32.mak b/payloads/libpayload/curses/PDCurses-3.4/win32/vcwin32.mak
deleted file mode 100644
index b8dc404..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/vcwin32.mak
+++ /dev/null
@@ -1,136 +0,0 @@
-# Visual C++ NMakefile for PDCurses library - Win32 VC++ 2.0+
-#
-# Usage: nmake -f [path\]vcwin32.mak [DEBUG=] [DLL=] [WIDE=] [UTF8=] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-O = obj
-
-!ifndef PDCURSES_SRCDIR
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-!include $(PDCURSES_SRCDIR)\libobjs.mif
-
-osdir = $(PDCURSES_SRCDIR)\win32
-
-PDCURSES_WIN_H = $(osdir)\pdcwin.h
-
-CC = cl.exe -nologo
-
-!ifdef DEBUG
-CFLAGS = -Z7 -DPDCDEBUG
-LDFLAGS = -debug -pdb:none
-!else
-CFLAGS = -O1
-LDFLAGS =
-!endif
-
-BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
-WIDEDEF = $(PDCURSES_SRCDIR)\exp-wide.def
-
-DEFDEPS = $(BASEDEF)
-
-!ifdef WIDE
-WIDEOPT = -DPDC_WIDE
-DEFDEPS = $(DEFDEPS) $(WIDEDEF)
-!endif
-
-!ifdef UTF8
-UTF8OPT = -DPDC_FORCE_UTF8
-!endif
-
-DEFFILE = pdcurses.def
-SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /OUT:pdcurses.dll /DEF:$(DEFFILE)
-
-LINK = link.exe -nologo
-
-CCLIBS = user32.lib advapi32.lib
-# may need to add msvcrt.lib for VC 2.x, VC 5.0 doesn't want it
-#CCLIBS = msvcrt.lib user32.lib advapi32.lib
-
-LIBEXE = lib -nologo
-
-LIBCURSES = pdcurses.lib
-CURSESDLL = pdcurses.dll
-
-!ifdef DLL
-DLLOPT = -DPDC_DLL_BUILD
-PDCLIBS = $(CURSESDLL)
-!else
-PDCLIBS = $(LIBCURSES)
-!endif
-
-BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c $(CFLAGS) $(DLLOPT) \
-$(WIDEOPT) $(UTF8OPT)
-
-all: $(PDCLIBS) $(DEMOS)
-
-clean:
- -del *.obj
- -del *.lib
- -del *.exe
- -del *.dll
- -del *.exp
- -del *.res
- -del *.def
-
-DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_WIN_H)
-$(DEMOOBJS) : $(PDCURSES_CURSES_H)
-$(DEMOS) : $(LIBCURSES)
-panel.obj : $(PANEL_HEADER)
-terminfo.obj: $(TERM_HEADER)
-
-!ifndef DLL
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS)
- -copy $(LIBCURSES) panel.lib
-!endif
-
-$(DEFFILE) : $(DEFDEPS)
- echo LIBRARY pdcurses > $(DEFFILE)
- echo EXPORTS >> $(DEFFILE)
- type $(BASEDEF) >> $(DEFFILE)
-!ifdef WIDE
- type $(WIDEDEF) >> $(DEFFILE)
-!endif
-
-$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) $(DEFFILE) pdcurses.obj
- $(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(CCLIBS)
- -copy $(LIBCURSES) panel.lib
-
-pdcurses.res pdcurses.obj: $(osdir)\pdcurses.rc $(osdir)\pdcurses.ico
- rc /r /fopdcurses.res $(osdir)\pdcurses.rc
- cvtres /MACHINE:IX86 /NOLOGO /OUT:pdcurses.obj pdcurses.res
-
-{$(srcdir)\}.c{}.obj::
- $(BUILD) $<
-
-{$(osdir)\}.c{}.obj::
- $(BUILD) $<
-
-{$(demodir)\}.c{}.obj::
- $(BUILD) $<
-
-.obj.exe:
- $(LINK) $(LDFLAGS) $< $(LIBCURSES) $(CCLIBS)
-
-tuidemo.exe: tuidemo.obj tui.obj
- $(LINK) $(LDFLAGS) $*.obj tui.obj $(LIBCURSES) $(CCLIBS)
-
-tui.obj: $(demodir)\tui.c $(demodir)\tui.h
- $(BUILD) -I$(demodir) $(demodir)\tui.c
-
-tuidemo.obj: $(demodir)\tuidemo.c
- $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
-
-PLATFORM1 = Visual C++
-PLATFORM2 = Microsoft Visual C/C++ for Win32
-ARCNAME = pdc$(VER)_vc_w32
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/win32/wccwin32.mak b/payloads/libpayload/curses/PDCurses-3.4/win32/wccwin32.mak
deleted file mode 100644
index 1363897..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/win32/wccwin32.mak
+++ /dev/null
@@ -1,51 +0,0 @@
-# Watcom WMAKE Makefile for PDCurses library - Win32 Watcom C/C++ 10.6+
-#
-# Usage: wmake -f [win32\]wccwin32.mak [DEBUG=Y] [WIDE=Y] [UTF8=Y] [target]
-#
-# where target can be any of:
-# [all|demos|pdcurses.lib|testcurs.exe...]
-
-!ifdef %PDCURSES_SRCDIR
-PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
-!else
-PDCURSES_SRCDIR = ..
-!endif
-
-!include $(PDCURSES_SRCDIR)\version.mif
-
-osdir = $(PDCURSES_SRCDIR)\win32
-
-CC = wcc386
-TARGET = nt
-
-CFLAGS = /ei /zq /wx /i=$(PDCURSES_SRCDIR)
-
-!ifeq DEBUG Y
-CFLAGS += /d2 /DPDCDEBUG
-LDFLAGS = D W A op q sys $(TARGET)
-!else
-CFLAGS += /oneatx
-LDFLAGS = op q sys $(TARGET)
-!endif
-
-!ifeq WIDE Y
-CFLAGS += /DPDC_WIDE
-!endif
-
-!ifeq UTF8 Y
-CFLAGS += /DPDC_FORCE_UTF8
-!endif
-
-LIBEXE = wlib /q /n /t
-
-!include $(PDCURSES_SRCDIR)\watcom.mif
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
- -copy $(LIBCURSES) panel.lib
-
-PLATFORM1 = Watcom C++ Win32
-PLATFORM2 = Open Watcom 1.6 for Win32
-ARCNAME = pdc$(VER)_wcc_w32
-
-!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/Makefile.aix.in b/payloads/libpayload/curses/PDCurses-3.4/x11/Makefile.aix.in
deleted file mode 100644
index 0fe5db7..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/Makefile.aix.in
+++ /dev/null
@@ -1,234 +0,0 @@
-# Makefile for PDCurses library for AIX/X11
-
-SHELL = @SHELL@
-THIS = Makefile
-
- at SET_MAKE@
-
-PDCURSES_SRCDIR = ..
-
-osdir = .
-srcdir = $(PDCURSES_SRCDIR)/pdcurses
-
-PDCURSES_CONFIG_H =$(PDCURSES_SRCDIR)/config.h
-PDCURSES_CURSES_H =$(PDCURSES_SRCDIR)/curses.h
-PDCURSES_CURSPRIV_H =$(PDCURSES_SRCDIR)/curspriv.h
-PDCURSES_HEADERS =$(PDCURSES_CONFIG_H) $(PDCURSES_CURSES_H) \
-$(PDCURSES_CURSPRIV_H)
-PDCURSES_X11_H =$(osdir)/pdcx11.h
-
-MH_EXTRA_LIBS = @MH_EXTRA_LIBS@
-
-CFLAGS = @CFLAGS@ @DYN_COMP@
-
-CPPFLAGS = @DEFS@ -DXCURSES @SYS_DEFS@ -I$(PDCURSES_SRCDIR)
-
-BUILD = @CC@ -c $(CFLAGS) $(CPPFLAGS) @MH_XINC_DIR@
-
-LINK = @CC@
-LDFLAGS =
-
-LIBCURSES = libXCurses.a
-
-all : $(LIBCURSES)
-
-install :
- echo Does nothing at the moment
-
-clean :
- -rm -rf *.o *.sho trace $(LIBCURSES)
-
-distclean: clean
- -rm -f Makefile
-
-mostlyclean: clean
-
-realclean: distclean
-
-LIBOBJS = addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o \
-clear.o color.o delch.o deleteln.o deprec.o getch.o getstr.o getyx.o \
-inch.o inchstr.o initscr.o inopts.o insch.o insstr.o instr.o kernel.o \
-keyname.o mouse.o move.o outopts.o overlay.o pad.o panel.o printw.o \
-refresh.o scanw.o scr_dump.o scroll.o slk.o termattr.o terminfo.o \
-touch.o util.o window.o debug.o
-
-PDCOBJS = pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcscrn.o pdcsetsc.o \
-pdcutil.o pdcx11.o x11.o sb.o ScrollBox.o
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) curses.exp
- ld -bnoentry -bM:SRE -bE:curses.exp $(MH_LIBS) $(MH_EXTRA_LIBS) \
-$(LIBOBJS) $(PDCOBJS) -o $@
-
-$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
-$(PDCOBJS) : $(PDCURSES_X11_H)
-terminfo.o: $(TERM_HEADER)
-
-curses.exp: ../exp-base.def
- cat ../exp-base.def > curses.exp
- echo Xinitscr >> curses.exp
- echo XCursesExit >> curses.exp
- echo sb_init >> curses.exp
- echo sb_set_horz >> curses.exp
- echo sb_set_vert >> curses.exp
- echo sb_get_horz >> curses.exp
- echo sb_get_vert >> curses.exp
- echo sb_refresh >> curses.exp
-
-addch.o: $(srcdir)/addch.c
- $(BUILD) $(srcdir)/addch.c
-
-addchstr.o: $(srcdir)/addchstr.c
- $(BUILD) $(srcdir)/addchstr.c
-
-addstr.o: $(srcdir)/addstr.c
- $(BUILD) $(srcdir)/addstr.c
-
-attr.o: $(srcdir)/attr.c
- $(BUILD) $(srcdir)/attr.c
-
-beep.o: $(srcdir)/beep.c
- $(BUILD) $(srcdir)/beep.c
-
-bkgd.o: $(srcdir)/bkgd.c
- $(BUILD) $(srcdir)/bkgd.c
-
-border.o: $(srcdir)/border.c
- $(BUILD) $(srcdir)/border.c
-
-clear.o: $(srcdir)/clear.c
- $(BUILD) $(srcdir)/clear.c
-
-color.o: $(srcdir)/color.c
- $(BUILD) $(srcdir)/color.c
-
-delch.o: $(srcdir)/delch.c
- $(BUILD) $(srcdir)/delch.c
-
-deleteln.o: $(srcdir)/deleteln.c
- $(BUILD) $(srcdir)/deleteln.c
-
-deprec.o: $(srcdir)/deprec.c
- $(BUILD) $(srcdir)/deprec.c
-
-getch.o: $(srcdir)/getch.c
- $(BUILD) $(srcdir)/getch.c
-
-getstr.o: $(srcdir)/getstr.c
- $(BUILD) $(srcdir)/getstr.c
-
-getyx.o: $(srcdir)/getyx.c
- $(BUILD) $(srcdir)/getyx.c
-
-inch.o: $(srcdir)/inch.c
- $(BUILD) $(srcdir)/inch.c
-
-inchstr.o: $(srcdir)/inchstr.c
- $(BUILD) $(srcdir)/inchstr.c
-
-initscr.o: $(srcdir)/initscr.c
- $(BUILD) $(srcdir)/initscr.c
-
-inopts.o: $(srcdir)/inopts.c
- $(BUILD) $(srcdir)/inopts.c
-
-insch.o: $(srcdir)/insch.c
- $(BUILD) $(srcdir)/insch.c
-
-insstr.o: $(srcdir)/insstr.c
- $(BUILD) $(srcdir)/insstr.c
-
-instr.o: $(srcdir)/instr.c
- $(BUILD) $(srcdir)/instr.c
-
-kernel.o: $(srcdir)/kernel.c
- $(BUILD) $(srcdir)/kernel.c
-
-keyname.o: $(srcdir)/keyname.c
- $(BUILD) $(srcdir)/keyname.c
-
-mouse.o: $(srcdir)/mouse.c
- $(BUILD) $(srcdir)/mouse.c
-
-move.o: $(srcdir)/move.c
- $(BUILD) $(srcdir)/move.c
-
-outopts.o: $(srcdir)/outopts.c
- $(BUILD) $(srcdir)/outopts.c
-
-overlay.o: $(srcdir)/overlay.c
- $(BUILD) $(srcdir)/overlay.c
-
-pad.o: $(srcdir)/pad.c
- $(BUILD) $(srcdir)/pad.c
-
-panel.o: $(srcdir)/panel.c $(PDCURSES_SRCDIR)/panel.h
- $(BUILD) $(srcdir)/panel.c
-
-printw.o: $(srcdir)/printw.c
- $(BUILD) $(srcdir)/printw.c
-
-refresh.o: $(srcdir)/refresh.c
- $(BUILD) $(srcdir)/refresh.c
-
-scanw.o: $(srcdir)/scanw.c
- $(BUILD) $(srcdir)/scanw.c
-
-scr_dump.o: $(srcdir)/scr_dump.c
- $(BUILD) $(srcdir)/scr_dump.c
-
-scroll.o: $(srcdir)/scroll.c
- $(BUILD) $(srcdir)/scroll.c
-
-slk.o: $(srcdir)/slk.c
- $(BUILD) $(srcdir)/slk.c
-
-termattr.o: $(srcdir)/termattr.c
- $(BUILD) $(srcdir)/termattr.c
-
-terminfo.o: $(srcdir)/terminfo.c
- $(BUILD) $(srcdir)/terminfo.c
-
-touch.o: $(srcdir)/touch.c
- $(BUILD) $(srcdir)/touch.c
-
-util.o: $(srcdir)/util.c
- $(BUILD) $(srcdir)/util.c
-
-window.o: $(srcdir)/window.c
- $(BUILD) $(srcdir)/window.c
-
-debug.o: $(srcdir)/debug.c
- $(BUILD) $(srcdir)/debug.c
-
-pdcclip.o: $(osdir)/pdcclip.c
- $(BUILD) $(osdir)/pdcclip.c
-
-pdcdisp.o: $(osdir)/pdcdisp.c
- $(BUILD) $(osdir)/pdcdisp.c
-
-pdcgetsc.o: $(osdir)/pdcgetsc.c
- $(BUILD) $(osdir)/pdcgetsc.c
-
-pdckbd.o: $(osdir)/pdckbd.c
- $(BUILD) $(osdir)/pdckbd.c
-
-pdcscrn.o: $(osdir)/pdcscrn.c
- $(BUILD) $(osdir)/pdcscrn.c
-
-pdcsetsc.o: $(osdir)/pdcsetsc.c
- $(BUILD) $(osdir)/pdcsetsc.c
-
-pdcutil.o: $(osdir)/pdcutil.c
- $(BUILD) $(osdir)/pdcutil.c
-
-pdcx11.o: $(osdir)/pdcx11.c
- $(BUILD) $(osdir)/pdcx11.c
-
-ScrollBox.o: $(osdir)/ScrollBox.c
- $(BUILD) $(osdir)/ScrollBox.c
-
-sb.o: $(osdir)/sb.c
- $(BUILD) $(osdir)/sb.c
-
-x11.o: $(osdir)/x11.c
- $(BUILD) $(osdir)/x11.c
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/Makefile.in b/payloads/libpayload/curses/PDCurses-3.4/x11/Makefile.in
deleted file mode 100644
index d23a214..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/Makefile.in
+++ /dev/null
@@ -1,572 +0,0 @@
-# Makefile for PDCurses library for X11
-
-SHELL = @SHELL@
-THIS = Makefile
-
- at SET_MAKE@
-
-PDCURSES_SRCDIR = ..
-
-osdir = .
-srcdir = $(PDCURSES_SRCDIR)/pdcurses
-demodir = $(PDCURSES_SRCDIR)/demos
-
-PDCURSES_CONFIG_H =$(PDCURSES_SRCDIR)/config.h
-PDCURSES_CURSES_H =$(PDCURSES_SRCDIR)/curses.h
-PDCURSES_CURSPRIV_H =$(PDCURSES_SRCDIR)/curspriv.h
-PDCURSES_HEADERS =$(PDCURSES_CONFIG_H) $(PDCURSES_CURSES_H) \
-$(PDCURSES_CURSPRIV_H)
-PDCURSES_X11_H =$(osdir)/pdcx11.h
-
-SHLPRE = @SHLPRE@
-SHLPST = @SHLPST@
-LD_RXLIB1 = @LD_RXLIB1@
-LD_RXLIB2 = @MH_XLIBS@ @MH_EXTRA_LIBS@ -lc
-
-CFLAGS = @CFLAGS@
-
-CPPFLAGS = @DEFS@ -DXCURSES @SYS_DEFS@ -I$(PDCURSES_SRCDIR)
-
-BUILD = @CC@ -c $(CFLAGS) $(CPPFLAGS) @MH_XINC_DIR@
-DYN_BUILD = @O2SAVE@ $(BUILD) @DYN_COMP@ @CC2O@
-
-LINK = @PURIFY@ @CC@
-#LDFLAGS = $(LIB_DEPS) @LDFLAGS@ @LIBS@ @MH_XLIBS@ @MH_EXTRA_LIBS@
-LDFLAGS = $(LIBCURSES) @LDFLAGS@ @LIBS@ @MH_XLIBS@ @MH_EXTRA_LIBS@
-
-RANLIB = @RANLIB@
-
-LIBCURSES = libXCurses.a
-
-LIB_DEPS = -L$(PDCURSES_SRCDIR)/x11 -lXCurses
-
-PDCLIBS = $(LIBCURSES) @SHL_TARGETS@
-
-DEMOS = firework newdemo ptest rain testcurs tuidemo worm xmas
-DEMOOBJS = firework.o newdemo.o ptest.o rain.o testcurs.o tui.o \
-tuidemo.o worm.o xmas.o
-
-SHLFILE = XCurses
-
-all: $(PDCLIBS) $(DEMOS)
-
-install:
- echo Does nothing at the moment
-
-clean:
- -rm -rf *.o *.sho trace $(PDCLIBS) $(DEMOS)
-
-demos: $(DEMOS)
-
-distclean: clean
- -rm -f Makefile
-
-mostlyclean: clean
-
-realclean: distclean
-
-LIBOBJS = addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o \
-clear.o color.o delch.o deleteln.o deprec.o getch.o getstr.o getyx.o \
-inch.o inchstr.o initscr.o inopts.o insch.o insstr.o instr.o kernel.o \
-keyname.o mouse.o move.o outopts.o overlay.o pad.o panel.o printw.o \
-refresh.o scanw.o scr_dump.o scroll.o slk.o termattr.o terminfo.o \
-touch.o util.o window.o debug.o
-
-PDCOBJS = pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcscrn.o pdcsetsc.o \
-pdcutil.o pdcx11.o x11.o sb.o ScrollBox.o
-
-LIBSHOBJS = $(LIBOBJS:.o=.sho)
-PDCSHOBJS = $(PDCOBJS:.o=.sho)
-
-SHOFILES = $(LIBSHOBJS) $(PDCSHOBJS)
-
-$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
- ar rv $@ $?
- -$(RANLIB) $@
-
-$(SHLPRE)$(SHLFILE)$(SHLPST) : $(SHOFILES)
- $(LD_RXLIB1) -o $@ $(SHOFILES) $(LD_RXLIB2)
-
-$(LIBOBJS) $(PDCOBJS) $(SHOFILES) : $(PDCURSES_HEADERS)
-$(PDCOBJS) $(PDCSHOBJS) : $(PDCURSES_X11_H)
-$(DEMOOBJS) : $(PDCURSES_CURSES_H)
-$(DEMOS) : $(LIBCURSES)
-terminfo.o terminfo.sho: $(TERM_HEADER)
-
-addch.o: $(srcdir)/addch.c
- $(BUILD) $(srcdir)/addch.c
-
-addchstr.o: $(srcdir)/addchstr.c
- $(BUILD) $(srcdir)/addchstr.c
-
-addstr.o: $(srcdir)/addstr.c
- $(BUILD) $(srcdir)/addstr.c
-
-attr.o: $(srcdir)/attr.c
- $(BUILD) $(srcdir)/attr.c
-
-beep.o: $(srcdir)/beep.c
- $(BUILD) $(srcdir)/beep.c
-
-bkgd.o: $(srcdir)/bkgd.c
- $(BUILD) $(srcdir)/bkgd.c
-
-border.o: $(srcdir)/border.c
- $(BUILD) $(srcdir)/border.c
-
-clear.o: $(srcdir)/clear.c
- $(BUILD) $(srcdir)/clear.c
-
-color.o: $(srcdir)/color.c
- $(BUILD) $(srcdir)/color.c
-
-delch.o: $(srcdir)/delch.c
- $(BUILD) $(srcdir)/delch.c
-
-deleteln.o: $(srcdir)/deleteln.c
- $(BUILD) $(srcdir)/deleteln.c
-
-deprec.o: $(srcdir)/deprec.c
- $(BUILD) $(srcdir)/deprec.c
-
-getch.o: $(srcdir)/getch.c
- $(BUILD) $(srcdir)/getch.c
-
-getstr.o: $(srcdir)/getstr.c
- $(BUILD) $(srcdir)/getstr.c
-
-getyx.o: $(srcdir)/getyx.c
- $(BUILD) $(srcdir)/getyx.c
-
-inch.o: $(srcdir)/inch.c
- $(BUILD) $(srcdir)/inch.c
-
-inchstr.o: $(srcdir)/inchstr.c
- $(BUILD) $(srcdir)/inchstr.c
-
-initscr.o: $(srcdir)/initscr.c
- $(BUILD) $(srcdir)/initscr.c
-
-inopts.o: $(srcdir)/inopts.c
- $(BUILD) $(srcdir)/inopts.c
-
-insch.o: $(srcdir)/insch.c
- $(BUILD) $(srcdir)/insch.c
-
-insstr.o: $(srcdir)/insstr.c
- $(BUILD) $(srcdir)/insstr.c
-
-instr.o: $(srcdir)/instr.c
- $(BUILD) $(srcdir)/instr.c
-
-kernel.o: $(srcdir)/kernel.c
- $(BUILD) $(srcdir)/kernel.c
-
-keyname.o: $(srcdir)/keyname.c
- $(BUILD) $(srcdir)/keyname.c
-
-mouse.o: $(srcdir)/mouse.c
- $(BUILD) $(srcdir)/mouse.c
-
-move.o: $(srcdir)/move.c
- $(BUILD) $(srcdir)/move.c
-
-outopts.o: $(srcdir)/outopts.c
- $(BUILD) $(srcdir)/outopts.c
-
-overlay.o: $(srcdir)/overlay.c
- $(BUILD) $(srcdir)/overlay.c
-
-pad.o: $(srcdir)/pad.c
- $(BUILD) $(srcdir)/pad.c
-
-panel.o: $(srcdir)/panel.c $(PDCURSES_SRCDIR)/panel.h
- $(BUILD) $(srcdir)/panel.c
-
-printw.o: $(srcdir)/printw.c
- $(BUILD) $(srcdir)/printw.c
-
-refresh.o: $(srcdir)/refresh.c
- $(BUILD) $(srcdir)/refresh.c
-
-scanw.o: $(srcdir)/scanw.c
- $(BUILD) $(srcdir)/scanw.c
-
-scr_dump.o: $(srcdir)/scr_dump.c
- $(BUILD) $(srcdir)/scr_dump.c
-
-scroll.o: $(srcdir)/scroll.c
- $(BUILD) $(srcdir)/scroll.c
-
-slk.o: $(srcdir)/slk.c
- $(BUILD) $(srcdir)/slk.c
-
-termattr.o: $(srcdir)/termattr.c
- $(BUILD) $(srcdir)/termattr.c
-
-terminfo.o: $(srcdir)/terminfo.c
- $(BUILD) $(srcdir)/terminfo.c
-
-touch.o: $(srcdir)/touch.c
- $(BUILD) $(srcdir)/touch.c
-
-util.o: $(srcdir)/util.c
- $(BUILD) $(srcdir)/util.c
-
-window.o: $(srcdir)/window.c
- $(BUILD) $(srcdir)/window.c
-
-debug.o: $(srcdir)/debug.c
- $(BUILD) $(srcdir)/debug.c
-
-pdcclip.o: $(osdir)/pdcclip.c
- $(BUILD) $(osdir)/pdcclip.c
-
-pdcdisp.o: $(osdir)/pdcdisp.c
- $(BUILD) $(osdir)/pdcdisp.c
-
-pdcgetsc.o: $(osdir)/pdcgetsc.c
- $(BUILD) $(osdir)/pdcgetsc.c
-
-pdckbd.o: $(osdir)/pdckbd.c
- $(BUILD) $(osdir)/pdckbd.c
-
-pdcscrn.o: $(osdir)/pdcscrn.c
- $(BUILD) $(osdir)/pdcscrn.c
-
-pdcsetsc.o: $(osdir)/pdcsetsc.c
- $(BUILD) $(osdir)/pdcsetsc.c
-
-pdcutil.o: $(osdir)/pdcutil.c
- $(BUILD) $(osdir)/pdcutil.c
-
-pdcx11.o: $(osdir)/pdcx11.c
- $(BUILD) $(osdir)/pdcx11.c
-
-ScrollBox.o: $(osdir)/ScrollBox.c
- $(BUILD) $(osdir)/ScrollBox.c
-
-sb.o: $(osdir)/sb.c
- $(BUILD) $(osdir)/sb.c
-
-x11.o: $(osdir)/x11.c
- $(BUILD) $(osdir)/x11.c
-
-addch.sho: $(srcdir)/addch.c
- $(DYN_BUILD) $(srcdir)/addch.c
- @SAVE2O@
-
-addchstr.sho: $(srcdir)/addchstr.c
- $(DYN_BUILD) $(srcdir)/addchstr.c
- @SAVE2O@
-
-addstr.sho: $(srcdir)/addstr.c
- $(DYN_BUILD) $(srcdir)/addstr.c
- @SAVE2O@
-
-attr.sho: $(srcdir)/attr.c
- $(DYN_BUILD) $(srcdir)/attr.c
- @SAVE2O@
-
-beep.sho: $(srcdir)/beep.c
- $(DYN_BUILD) $(srcdir)/beep.c
- @SAVE2O@
-
-bkgd.sho: $(srcdir)/bkgd.c
- $(DYN_BUILD) $(srcdir)/bkgd.c
- @SAVE2O@
-
-border.sho: $(srcdir)/border.c
- $(DYN_BUILD) $(srcdir)/border.c
- @SAVE2O@
-
-clear.sho: $(srcdir)/clear.c
- $(DYN_BUILD) $(srcdir)/clear.c
- @SAVE2O@
-
-color.sho: $(srcdir)/color.c
- $(DYN_BUILD) $(srcdir)/color.c
- @SAVE2O@
-
-delch.sho: $(srcdir)/delch.c
- $(DYN_BUILD) $(srcdir)/delch.c
- @SAVE2O@
-
-deleteln.sho: $(srcdir)/deleteln.c
- $(DYN_BUILD) $(srcdir)/deleteln.c
- @SAVE2O@
-
-deprec.sho: $(srcdir)/deprec.c
- $(DYN_BUILD) $(srcdir)/deprec.c
- @SAVE2O@
-
-getch.sho: $(srcdir)/getch.c
- $(DYN_BUILD) $(srcdir)/getch.c
- @SAVE2O@
-
-getstr.sho: $(srcdir)/getstr.c
- $(DYN_BUILD) $(srcdir)/getstr.c
- @SAVE2O@
-
-getyx.sho: $(srcdir)/getyx.c
- $(DYN_BUILD) $(srcdir)/getyx.c
- @SAVE2O@
-
-inch.sho: $(srcdir)/inch.c
- $(DYN_BUILD) $(srcdir)/inch.c
- @SAVE2O@
-
-inchstr.sho: $(srcdir)/inchstr.c
- $(DYN_BUILD) $(srcdir)/inchstr.c
- @SAVE2O@
-
-initscr.sho: $(srcdir)/initscr.c
- $(DYN_BUILD) $(srcdir)/initscr.c
- @SAVE2O@
-
-inopts.sho: $(srcdir)/inopts.c
- $(DYN_BUILD) $(srcdir)/inopts.c
- @SAVE2O@
-
-insch.sho: $(srcdir)/insch.c
- $(DYN_BUILD) $(srcdir)/insch.c
- @SAVE2O@
-
-insstr.sho: $(srcdir)/insstr.c
- $(DYN_BUILD) $(srcdir)/insstr.c
- @SAVE2O@
-
-instr.sho: $(srcdir)/instr.c
- $(DYN_BUILD) $(srcdir)/instr.c
- @SAVE2O@
-
-kernel.sho: $(srcdir)/kernel.c
- $(DYN_BUILD) $(srcdir)/kernel.c
- @SAVE2O@
-
-keyname.sho: $(srcdir)/keyname.c
- $(DYN_BUILD) $(srcdir)/keyname.c
- @SAVE2O@
-
-mouse.sho: $(srcdir)/mouse.c
- $(DYN_BUILD) $(srcdir)/mouse.c
- @SAVE2O@
-
-move.sho: $(srcdir)/move.c
- $(DYN_BUILD) $(srcdir)/move.c
- @SAVE2O@
-
-outopts.sho: $(srcdir)/outopts.c
- $(DYN_BUILD) $(srcdir)/outopts.c
- @SAVE2O@
-
-overlay.sho: $(srcdir)/overlay.c
- $(DYN_BUILD) $(srcdir)/overlay.c
- @SAVE2O@
-
-pad.sho: $(srcdir)/pad.c
- $(DYN_BUILD) $(srcdir)/pad.c
- @SAVE2O@
-
-panel.sho: $(srcdir)/panel.c $(PDCURSES_SRCDIR)/panel.h
- $(DYN_BUILD) $(srcdir)/panel.c
- @SAVE2O@
-
-printw.sho: $(srcdir)/printw.c
- $(DYN_BUILD) $(srcdir)/printw.c
- @SAVE2O@
-
-refresh.sho: $(srcdir)/refresh.c
- $(DYN_BUILD) $(srcdir)/refresh.c
- @SAVE2O@
-
-scanw.sho: $(srcdir)/scanw.c
- $(DYN_BUILD) $(srcdir)/scanw.c
- @SAVE2O@
-
-scr_dump.sho: $(srcdir)/scr_dump.c
- $(DYN_BUILD) $(srcdir)/scr_dump.c
- @SAVE2O@
-
-scroll.sho: $(srcdir)/scroll.c
- $(DYN_BUILD) $(srcdir)/scroll.c
- @SAVE2O@
-
-slk.sho: $(srcdir)/slk.c
- $(DYN_BUILD) $(srcdir)/slk.c
- @SAVE2O@
-
-termattr.sho: $(srcdir)/termattr.c
- $(DYN_BUILD) $(srcdir)/termattr.c
- @SAVE2O@
-
-terminfo.sho: $(srcdir)/terminfo.c
- $(DYN_BUILD) $(srcdir)/terminfo.c
- @SAVE2O@
-
-touch.sho: $(srcdir)/touch.c
- $(DYN_BUILD) $(srcdir)/touch.c
- @SAVE2O@
-
-util.sho: $(srcdir)/util.c
- $(DYN_BUILD) $(srcdir)/util.c
- @SAVE2O@
-
-window.sho: $(srcdir)/window.c
- $(DYN_BUILD) $(srcdir)/window.c
- @SAVE2O@
-
-debug.sho: $(srcdir)/debug.c
- $(DYN_BUILD) $(srcdir)/debug.c
- @SAVE2O@
-
-pdcclip.sho: $(osdir)/pdcclip.c
- $(DYN_BUILD) $(osdir)/pdcclip.c
- @SAVE2O@
-
-pdcdisp.sho: $(osdir)/pdcdisp.c
- $(DYN_BUILD) $(osdir)/pdcdisp.c
- @SAVE2O@
-
-pdcgetsc.sho: $(osdir)/pdcgetsc.c
- $(DYN_BUILD) $(osdir)/pdcgetsc.c
- @SAVE2O@
-
-pdckbd.sho: $(osdir)/pdckbd.c
- $(DYN_BUILD) $(osdir)/pdckbd.c
- @SAVE2O@
-
-pdcscrn.sho: $(osdir)/pdcscrn.c
- $(DYN_BUILD) $(osdir)/pdcscrn.c
- @SAVE2O@
-
-pdcsetsc.sho: $(osdir)/pdcsetsc.c
- $(DYN_BUILD) $(osdir)/pdcsetsc.c
- @SAVE2O@
-
-pdcutil.sho: $(osdir)/pdcutil.c
- $(DYN_BUILD) $(osdir)/pdcutil.c
- @SAVE2O@
-
-pdcx11.sho: $(osdir)/pdcx11.c
- $(DYN_BUILD) $(osdir)/pdcx11.c
- @SAVE2O@
-
-ScrollBox.sho: $(osdir)/ScrollBox.c
- $(DYN_BUILD) $(osdir)/ScrollBox.c
- @SAVE2O@
-
-sb.sho: $(osdir)/sb.c
- $(DYN_BUILD) $(osdir)/sb.c
- @SAVE2O@
-
-x11.sho: $(osdir)/x11.c
- $(DYN_BUILD) $(osdir)/x11.c
- @SAVE2O@
-
-firework: firework.o
- $(LINK) firework.o -o $@ $(LDFLAGS)
-
-newdemo: newdemo.o
- $(LINK) newdemo.o -o $@ $(LDFLAGS)
-
-ptest: ptest.o
- $(LINK) ptest.o -o $@ $(LDFLAGS)
-
-rain: rain.o
- $(LINK) rain.o -o $@ $(LDFLAGS)
-
-testcurs: testcurs.o
- $(LINK) testcurs.o -o $@ $(LDFLAGS)
-
-tuidemo: tuidemo.o tui.o
- $(LINK) tui.o tuidemo.o -o $@ $(LDFLAGS)
-
-worm: worm.o
- $(LINK) worm.o -o $@ $(LDFLAGS)
-
-xmas: xmas.o
- $(LINK) xmas.o -o $@ $(LDFLAGS)
-
-firework.o: $(demodir)/firework.c
- $(BUILD) $(demodir)/firework.c
-
-newdemo.o: $(demodir)/newdemo.c
- $(BUILD) $(demodir)/newdemo.c
-
-ptest.o: $(demodir)/ptest.c $(PDCURSES_SRCDIR)/panel.h
- $(BUILD) $(demodir)/ptest.c
-
-rain.o: $(demodir)/rain.c
- $(BUILD) $(demodir)/rain.c
-
-testcurs.o: $(demodir)/testcurs.c
- $(BUILD) $(demodir)/testcurs.c
-
-tui.o: $(demodir)/tui.c $(demodir)/tui.h
- $(BUILD) $(demodir)/tui.c
-
-tuidemo.o: $(demodir)/tuidemo.c
- $(BUILD) $(demodir)/tuidemo.c
-
-worm.o: $(demodir)/worm.c
- $(BUILD) $(demodir)/worm.c
-
-xmas.o: $(demodir)/xmas.c
- $(BUILD) $(demodir)/xmas.c
-
-# This section provides for compiling and linking the
-# ncurses test programs.
-
-ncurses_testdir = $(HOME)/ncurses-5.6/test
-
-NCURSES_TESTS = bs gdc hanoi knight tclock ncurses
-
-ncurses_tests: $(NCURSES_TESTS)
-
-ncurses_clean:
- -rm -f *.o trace $(NCURSES_TESTS)
-
-NCFLAGS = -I. -I$(ncurses_testdir)
-
-bs: bs.o $(LIBCURSES)
- $(LINK) bs.o -o $@ $(LDFLAGS)
-
-gdc: gdc.o $(LIBCURSES)
- $(LINK) gdc.o -o $@ $(LDFLAGS)
-
-hanoi: hanoi.o $(LIBCURSES)
- $(LINK) hanoi.o -o $@ $(LDFLAGS)
-
-knight: knight.o $(LIBCURSES)
- $(LINK) knight.o -o $@ $(LDFLAGS)
-
-tclock: tclock.o $(LIBCURSES)
- $(LINK) tclock.o -o $@ $(LDFLAGS) -lm
-
-view: view.o $(LIBCURSES)
- $(LINK) view.o -o $@ $(LDFLAGS)
-
-ncurses: ncurses.o $(LIBCURSES)
- $(LINK) ncurses.o -o $@ $(LDFLAGS)
-
-bs.o: $(ncurses_testdir)/bs.c $(PDCURSES_CURSES_H)
- $(BUILD) $(NCFLAGS) $(ncurses_testdir)/bs.c
-
-gdc.o: $(ncurses_testdir)/gdc.c $(PDCURSES_CURSES_H)
- $(BUILD) $(NCFLAGS) $(ncurses_testdir)/gdc.c
-
-hanoi.o: $(ncurses_testdir)/hanoi.c $(PDCURSES_CURSES_H)
- $(BUILD) $(NCFLAGS) $(ncurses_testdir)/hanoi.c
-
-knight.o: $(ncurses_testdir)/knight.c $(PDCURSES_CURSES_H)
- $(BUILD) $(NCFLAGS) $(ncurses_testdir)/knight.c
-
-tclock.o: $(ncurses_testdir)/tclock.c $(PDCURSES_CURSES_H)
- $(BUILD) $(NCFLAGS) $(ncurses_testdir)/tclock.c
-
-view.o: $(ncurses_testdir)/view.c $(PDCURSES_CURSES_H)
- $(BUILD) $(NCFLAGS) $(ncurses_testdir)/view.c
-
-ncurses.o: $(ncurses_testdir)/ncurses.c $(PDCURSES_CURSES_H)
- $(BUILD) $(NCFLAGS) $(ncurses_testdir)/ncurses.c
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/README b/payloads/libpayload/curses/PDCurses-3.4/x11/README
deleted file mode 100644
index 37b45d0..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/README
+++ /dev/null
@@ -1,64 +0,0 @@
-PDCurses for X11
-================
-
-This is a port of PDCurses for X11, aka XCurses. It is designed to
-allow existing curses programs to be re-compiled with PDCurses,
-resulting in native X11 programs.
-
-
-Building
---------
-
-. Run "./configure" in the top-level directory.
-
- To build the wide-character version of the library, specify
- "--enable-widec" as a parameter. To use X Input Methods, add
- "--enable-xim". I recommend these options, but I haven't yet made
- them the defaults, for the sake of backwards compatibility and due to
- their new and relatively untested status.
-
- If your system is lacking in UTF-8 support, you can force the use of
- UTF-8 instead of the system locale via "--enable-force-utf8". This is
- generally more useful in Windows.
-
- If configure can't find your X include files or X libraries, you can
- specify the paths with the arguments "--x-includes=inc_path" and/or
- "--x-libraries=lib_path".
-
- By default, the library and demo programs are built with the optimizer
- switch -O2. You can turn this off, and turn on debugging (-g), by
- adding "--with-debug" to the configure command.
-
-. Run "make". This should build libXCurses and all the demo programs.
-
-. Optionally, run "make install". curses.h and panel.h will be renamed
- when installed (to xcurses.h and xpanel.h), to avoid conflicts with
- any existing curses installations. Unrenamed copies of curses.h and
- panel.h are installed in (by default) /usr/local/include/xcurses.
-
- libXpanel is just a symlink to libXCurses. Both curses and panel
- functions are in the main library.
-
-
-Distribution Status
--------------------
-
-As of April 13, 2006, the files in this directory are released to the
-Public Domain, except for ScrollBox*, which are under essentially the
-MIT X License.
-
-
-To be Done
-----------
-
-- have newterm() create a new X window
-
-- provide a command line parsing function to enable X command line
- arguments to be parsed and stripped from the arguments passed back
- to the calling procedure.
-
-
-Acknowledgements
-----------------
-
-X11 port was provided by Mark Hessling <mark at rexx.org>
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBox.c b/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBox.c
deleted file mode 100644
index e77d2c7..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBox.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright 1989 O'Reilly and Associates, Inc.
-
- The X Consortium, and any party obtaining a copy of these files from
- the X Consortium, directly or indirectly, is granted, free of charge, a
- full and unrestricted irrevocable, world-wide, paid up, royalty-free,
- nonexclusive right and license to deal in this software and
- documentation files (the "Software"), including without limitation the
- rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons who receive
- copies from any such party to do so. This license includes without
- limitation a license to do the foregoing actions under any patents of
- the party supplying this software to the X Consortium.
-
- $Id: ScrollBox.c,v 1.15 2008/07/14 04:24:52 wmcbrine Exp $
- */
-
-/* ScrollBox.c - scrollBox composite widget */
-
-#include <X11/IntrinsicP.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-
-#include "x11/ScrollBoxP.h"
-
-#include <stdio.h>
-
-#define INITIAL_WIDTH 300
-#define INITIAL_HEIGHT 300
-
-/************************************************************************
- * *
- * scrollBox Resources *
- * *
- ************************************************************************/
-
-static XtResource resources[] =
-{
- { XtNhSpace, XtCHSpace, XtRDimension, sizeof(Dimension),
- XtOffset(ScrollBoxWidget, scrollBox.h_space),
- XtRImmediate, (XtPointer)4 },
- { XtNvSpace, XtCVSpace, XtRDimension, sizeof(Dimension),
- XtOffset(ScrollBoxWidget, scrollBox.v_space),
- XtRImmediate, (XtPointer)4 },
- { XtNheightInc, XtCHeightInc, XtRDimension, sizeof(Dimension),
- XtOffset(ScrollBoxWidget, scrollBox.increment_height),
- XtRImmediate, (XtPointer)13 },
- { XtNwidthInc, XtCWidthInc, XtRDimension, sizeof(Dimension),
- XtOffset(ScrollBoxWidget, scrollBox.increment_width),
- XtRImmediate, (XtPointer)7 },
-};
-
-/************************************************************************
- * *
- * Full class record constant *
- * *
- ************************************************************************/
-
-static void Initialize(Widget, Widget, ArgList, Cardinal *);
-static void Resize(Widget);
-static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *);
-static void ChangeManaged(Widget);
-static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *,
- XtWidgetGeometry *);
-static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *,
- XtWidgetGeometry *);
-static void RefigureLocations(Widget);
-
-ScrollBoxClassRec scrollBoxClassRec = {
- {
- /* core_class fields */
- /* superclass */ (WidgetClass) &compositeClassRec,
- /* class_name */ "scrollBox",
- /* widget_size */ sizeof(ScrollBoxRec),
- /* class_initialize */ NULL,
- /* class_part_init */ NULL,
- /* class_inited */ FALSE,
- /* initialize */ Initialize,
- /* initialize_hook */ NULL,
- /* realize */ XtInheritRealize,
- /* actions */ NULL,
- /* num_actions */ 0,
- /* resources */ resources,
- /* num_resources */ XtNumber(resources),
- /* xrm_class */ NULLQUARK,
- /* compress_motion */ TRUE,
- /* compress_exposure */ TRUE,
- /* compress_enterleave */ TRUE,
- /* visible_interest */ FALSE,
- /* destroy */ NULL,
- /* resize */ Resize,
- /* expose */ NULL,
- /* set_values */ SetValues,
- /* set_values_hook */ NULL,
- /* set_values_almost */ XtInheritSetValuesAlmost,
- /* get_values_hook */ NULL,
- /* accept_focus */ NULL,
- /* version */ XtVersion,
- /* callback_private */ NULL,
- /* tm_table */ NULL,
- /* query_geometry */ QueryGeometry,
- /* display_accelerator */ XtInheritDisplayAccelerator,
- /* extension */ NULL
- },{
- /* composite_class fields */
- /* geometry_manager */ GeometryManager,
- /* change_managed */ ChangeManaged,
- /* insert_child */ XtInheritInsertChild,
- /* delete_child */ XtInheritDeleteChild,
- /* extension */ NULL
- },{
- /* scrollBox class fields */
- /* empty */ 0,
- }
-};
-
-WidgetClass scrollBoxWidgetClass = (WidgetClass)&scrollBoxClassRec;
-
-
-/************************************************************************
- * *
- * Private Routines *
- * *
- ************************************************************************/
-
-/* Do a layout, either actually assigning positions, or just
- calculating size. */
-
-static void DoLayout(Widget w, Boolean doit)
-{
- ScrollBoxWidget sbw = (ScrollBoxWidget)w;
- Widget wmain, vscroll, hscroll, child;
- Dimension mw, mh; /* main window */
- Dimension vh; /* vertical scrollbar length (height) */
- Dimension hw; /* horizontal scrollbar length (width) */
- Position vx;
- Position hy;
- Cardinal i;
-
- if (sbw->composite.num_children != 3)
- XtAppError(XtWidgetToApplicationContext(w),
- "ScrollBox: must manage exactly three widgets.");
-
- for (i = 0; i < sbw->composite.num_children; i++)
- {
- child = sbw->composite.children[i];
-
- if (!XtIsManaged(child))
- XtAppError(XtWidgetToApplicationContext(w),
- "ScrollBox: all three widgets must be managed.");
- }
-
- /* Child one is the main window, two is the vertical scrollbar,
- and three is the horizontal scrollbar. */
-
- wmain = sbw->composite.children[0];
- vscroll = sbw->composite.children[1];
- hscroll = sbw->composite.children[2];
-
- /* Size all three widgets so that space is fully utilized. */
-
- mw = sbw->core.width - (2 * sbw->scrollBox.h_space) -
- vscroll->core.width - (2 * vscroll->core.border_width) -
- (2 * wmain->core.border_width);
-
- mh = sbw->core.height - (2 * sbw->scrollBox.v_space) -
- hscroll->core.height - (2 * hscroll->core.border_width) -
- (2 * wmain->core.border_width);
-
- /* Force the main window to be sized to the appropriate increment. */
-
- mw = (mw / sbw->scrollBox.increment_width) *
- sbw->scrollBox.increment_width;
-
- mh = ((mh / sbw->scrollBox.increment_height) *
- sbw->scrollBox.increment_height) +
- sbw->scrollBox.increment_height;
-
- vx = wmain->core.x + mw + sbw->scrollBox.h_space +
- wmain->core.border_width + vscroll->core.border_width;
-
- hy = wmain->core.y + mh + sbw->scrollBox.v_space +
- wmain->core.border_width + hscroll->core.border_width;
-
- vh = mh; /* scrollbars are always same length as main window */
- hw = mw;
-
- if (doit)
- {
- XtResizeWidget(wmain, mw, mh, 1);
-
- XtResizeWidget(vscroll, vscroll->core.width, vh, 1);
- XtMoveWidget(vscroll, vx, vscroll->core.y);
-
- XtResizeWidget(hscroll, hw, hscroll->core.height, 1);
- XtMoveWidget(hscroll, hscroll->core.x, hy);
- }
-}
-
-static XtGeometryResult GeometryManager(Widget w, XtWidgetGeometry *request,
- XtWidgetGeometry *reply)
-{
- XtWidgetGeometry allowed;
-
- if (request->request_mode & ~(XtCWQueryOnly | CWWidth | CWHeight))
- return XtGeometryNo;
-
- if (request->request_mode & CWWidth)
- allowed.width = request->width;
- else
- allowed.width = w->core.width;
-
- if (request->request_mode & CWHeight)
- allowed.height = request->height;
- else
- allowed.height = w->core.height;
-
- if (allowed.width == w->core.width && allowed.height == w->core.height)
- return XtGeometryNo;
-
- if (!(request->request_mode & XtCWQueryOnly))
- RefigureLocations(w);
-
- return XtGeometryYes;
-}
-
-static void RefigureLocations(Widget w)
-{
- DoLayout(w, False);
-}
-
-/* Calculate preferred size. We can't just use the current sizes
- of the children, because that calculation would always end up with
- our current size. Could query each child, and use that size to
- recalculate a size for us, then if it ends up being larger than width
- and height passed in, accept bounding box. However, we know our
- children and they don't have any particular preferred geometry,
- except the bigger the better. Therefore, if the parent suggested a
- size, we'll take it. */
-
-static XtGeometryResult QueryGeometry(Widget w, XtWidgetGeometry *request,
- XtWidgetGeometry *reply_return)
-{
- XtGeometryResult result=XtGeometryNo;
-
- request->request_mode &= CWWidth | CWHeight;
-
- /* parent isn't going to change w or h, so nothing to re-compute */
-
- if (request->request_mode == 0)
- return XtGeometryYes;
-
- /* if proposed size is large enough, accept it. Otherwise, suggest
- our arbitrary initial size. */
-
- if (request->request_mode & CWHeight)
- {
- if (request->height < INITIAL_HEIGHT)
- {
- result = XtGeometryAlmost;
- reply_return->height = INITIAL_HEIGHT;
- reply_return->request_mode &= CWHeight;
- }
- else
- result = XtGeometryYes;
- }
-
- if (request->request_mode & CWWidth)
- {
- if (request->width < INITIAL_WIDTH)
- {
- result = XtGeometryAlmost;
- reply_return->width = INITIAL_WIDTH;
- reply_return->request_mode &= CWWidth;
- }
- else
- result = XtGeometryYes;
- }
-
- return result;
-}
-
-/* Actually layout the scrollBox */
-
-static void Resize(Widget w)
-{
- DoLayout(w, True);
-}
-
-static void ChangeManaged(Widget w)
-{
- DoLayout(w, True);
-}
-
-static void Initialize(Widget request, Widget new,
- ArgList args, Cardinal *num_args)
-{
- ScrollBoxWidget newsbw = (ScrollBoxWidget)new;
-
- if (newsbw->core.width == 0)
- newsbw->core.width = INITIAL_WIDTH;
-
- if (newsbw->core.height == 0)
- newsbw->core.height = INITIAL_HEIGHT;
-
-}
-
-static Boolean SetValues(Widget current, Widget request, Widget new,
- ArgList args, Cardinal *num_args)
-{
- ScrollBoxWidget sbwcurrent = (ScrollBoxWidget)current;
- ScrollBoxWidget sbwnew = (ScrollBoxWidget)new;
-
- /* need to relayout if h_space or v_space change */
-
- if ((sbwnew->scrollBox.h_space != sbwcurrent->scrollBox.h_space) ||
- (sbwnew->scrollBox.v_space != sbwcurrent->scrollBox.v_space))
- DoLayout(new, True);
-
- return False;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBox.h b/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBox.h
deleted file mode 100644
index 5825862..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBox.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 1989 O'Reilly and Associates, Inc.
-
- The X Consortium, and any party obtaining a copy of these files from
- the X Consortium, directly or indirectly, is granted, free of charge, a
- full and unrestricted irrevocable, world-wide, paid up, royalty-free,
- nonexclusive right and license to deal in this software and
- documentation files (the "Software"), including without limitation the
- rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons who receive
- copies from any such party to do so. This license includes without
- limitation a license to do the foregoing actions under any patents of
- the party supplying this software to the X Consortium.
-
- $Id: ScrollBox.h,v 1.4 2008/07/14 04:24:52 wmcbrine Exp $
- */
-
-#ifndef _XORAscrollBox_h
-#define _XORAscrollBox_h
-
-/************************************************************************
- * *
- * scrollBox Widget (subclass of CompositeClass) *
- * *
- ************************************************************************/
-
-/* Parameters:
-
- Name Class RepType Default Value
- ---- ----- ------- -------------
- background Background Pixel XtDefaultBackground
- border BorderColor Pixel XtDefaultForeground
- borderWidth BorderWidth Dimension 1
- destroyCallback Callback Pointer NULL
- hSpace HSpace Dimension 4
- height Height Dimension 0
- mappedWhenManaged MappedWhenManaged Boolean True
- vSpace VSpace Dimension 4
- width Width Dimension 0
- x Position Position 0
- y Position Position 0
-
-*/
-
-
-/* Class record constants */
-
-extern WidgetClass scrollBoxWidgetClass;
-
-typedef struct _ScrollBoxClassRec *ScrollBoxWidgetClass;
-typedef struct _ScrollBoxRec *ScrollBoxWidget;
-
-#endif /* _XORAscrollBox_h */
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBoxP.h b/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBoxP.h
deleted file mode 100644
index 4455138..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/ScrollBoxP.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 1989 O'Reilly and Associates, Inc.
-
- The X Consortium, and any party obtaining a copy of these files from
- the X Consortium, directly or indirectly, is granted, free of charge, a
- full and unrestricted irrevocable, world-wide, paid up, royalty-free,
- nonexclusive right and license to deal in this software and
- documentation files (the "Software"), including without limitation the
- rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons who receive
- copies from any such party to do so. This license includes without
- limitation a license to do the foregoing actions under any patents of
- the party supplying this software to the X Consortium.
-
- $Id: ScrollBoxP.h,v 1.5 2008/07/14 04:24:52 wmcbrine Exp $
- */
-
-/*
- * scrollBoxP.h - Private definitions for scrollBox widget
- *
- */
-
-#ifndef _XORAscrollBoxP_h
-#define _XORAscrollBoxP_h
-
-/************************************************************************
- * *
- * scrollBox Widget Private Data *
- * *
- ************************************************************************/
-
-#include "x11/ScrollBox.h"
-
-#include <X11/CompositeP.h>
-
-/* New fields for the scrollBox widget class record */
-typedef struct _ScrollBoxClass {
- int empty;
-} ScrollBoxClassPart;
-
-/* Full class record declaration */
-typedef struct _ScrollBoxClassRec {
- CoreClassPart core_class;
- CompositeClassPart composite_class;
- ScrollBoxClassPart scrollBox_class;
-} ScrollBoxClassRec;
-
-extern ScrollBoxClassRec scrollBoxClassRec;
-
-/* New fields for the scrollBox widget record */
-typedef struct {
- Dimension h_space, v_space;
- Dimension preferred_width, preferred_height;
- Dimension last_query_width, last_query_height;
- Dimension increment_width, increment_height;
- XtGeometryMask last_query_mode;
-} ScrollBoxPart;
-
-
-/************************************************************************
- * *
- * Full instance record declaration *
- * *
- ************************************************************************/
-
-typedef struct _ScrollBoxRec {
- CorePart core;
- CompositePart composite;
- ScrollBoxPart scrollBox;
-} ScrollBoxRec;
-
-#endif /* _XORAscrollBoxP_h */
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/big_icon.xbm b/payloads/libpayload/curses/PDCurses-3.4/x11/big_icon.xbm
deleted file mode 100644
index 04b98a5..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/big_icon.xbm
+++ /dev/null
@@ -1,46 +0,0 @@
-#define big_icon_width 64
-#define big_icon_height 64
-static unsigned char big_icon_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
- 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xc1, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0xff, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
- 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0xc7, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80,
- 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
- 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0, 0xc3, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0xf0, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8,
- 0xf1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xf8, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x7e, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f,
- 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xff, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x8f, 0xdf, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc7,
- 0xcf, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe3, 0xc7, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0xf1, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0,
- 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xc0, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x78,
- 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8,
- 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0xf0, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0,
- 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0xff, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x23, 0x50, 0x1e,
- 0x7c, 0xf0, 0xe0, 0x03, 0x60, 0x26, 0x50, 0x33, 0xc6, 0x98, 0x31, 0x06,
- 0x30, 0x2c, 0xd0, 0x61, 0x83, 0x0d, 0x1b, 0x0c, 0x10, 0x28, 0xd0, 0x40,
- 0x01, 0x05, 0x0a, 0x08, 0x10, 0x20, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08,
- 0x10, 0x20, 0x50, 0x00, 0x03, 0x04, 0x1a, 0x00, 0x10, 0x20, 0x50, 0x00,
- 0x06, 0x04, 0x32, 0x00, 0x10, 0x20, 0x50, 0x00, 0x7c, 0xfc, 0xe3, 0x03,
- 0x10, 0x20, 0x50, 0x00, 0xc0, 0x04, 0x00, 0x06, 0x10, 0x20, 0x50, 0x00,
- 0x80, 0x05, 0x00, 0x0c, 0x10, 0x20, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08,
- 0x10, 0x28, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08, 0x30, 0x6c, 0x58, 0x00,
- 0x83, 0x0d, 0x1b, 0x0c, 0x60, 0xc6, 0x4c, 0x00, 0xc6, 0x98, 0x31, 0x06,
- 0xc0, 0x83, 0x47, 0x00, 0x7c, 0xf0, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/compose.h b/payloads/libpayload/curses/PDCurses-3.4/x11/compose.h
deleted file mode 100644
index e8f7d40..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/compose.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: compose.h,v 1.3 2008/07/14 04:24:52 wmcbrine Exp $ */
-
-/* Tables and variables for the built-in compose key system. This file
- is not included when PDCurses is built with XIM support. */
-
-#define MAX_COMPOSE_CHARS 14
-#define MAX_COMPOSE_PRE 60
-
-static const char *compose_chars =
- "`'~^,/\"AaPpSs!?0123CcRr-_<>Xx.=Yy |EeIiOoUu+NnLlgDd:*TtMmVv";
-
-/*
- ` : À È Ì Ò Ù à è ì ò ù
- ' : ´ Á É Í Ó Ú Ý á é í ó ú ý ´
- ~ : Ã Ñ Õ ã ñ õ
- ^ : Â Ê Î Ô Û â ê î ô û ° ¹ ² ³
- , : ¸ Ç ç ¸
- / : Ø ø µ µ
- " : ¨ Ä Ë Ï Ö Ü ä ë ï ö ü ÿ ¨
- A : Æ À Á Ã Â Å Å Ã Â ª
- a : æ à á ã â å å ã â ª
- P : Þ ¶ ¶
- p : þ ¶ ¶
- S : § § § º ª
- s : ß § ª ¹ ² ³ º §
- ! : ¡ ¡
- ? : ¿ ¿
- 0 : ° °
- 1 : ¹ ½ ¼ ¹
- 2 : ² ²
- 3 : ³ ¾ ³
- C : © Ç ¢ ¢
- c : ¢ © ç ¢ ¢
- R : ®
- r : ®
- - : ± ¬ ¯ ÷
- _ : ¯ ¯
- < : «
- > : «
- X : ¤ ×
- x : × ¤ ×
- . : · · ·
- = : ¥ ¥
- Y : ¥ Ý ¥
- y : ¥ ý ÿ ¥ ¥
- :
- | : ¦ ¢ ¦ Þ þ ¦ £
- E : È É Ê Ë Ê
- e : è é ê ë ê
- I : Ì Í Î Ï Î
- i : ì í î ï î
- O : Ò Ó Ô Õ Ö Ø © ® Õ Ô Å å
- o : ° Å å ¤ õ ò ó ô õ ö ø ô º
- U : Ù Ú Û Ü Û
- u : ù ú û ü µ û
- + : ±
- N : Ñ Ñ ¬
- n : ñ ñ ¬
- L : £ £ £
- l : £ £ £
- g : ¤
- D : ° Ð
- d : ° ð
- : : ÷
- * : µ µ å Å
- T : Þ
- t : þ
- M : ×
- m : ×
- V : ¦
- v : ¦
-*/
-
-static const char compose_lookups[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] =
-{
-/* ` */ {'A','E','I','O','U','a','e','i','o','u', 0, 0, 0, 0},
-/* ' */ {' ','A','E','I','O','U','Y','a','e','i','o','u','y', 39},
-/* ~ */ {'A','N','O','a','n','o', 0, 0, 0, 0, 0, 0, 0, 0},
-/* ^ */ {'A','E','I','O','U','a','e','i','o','u','0','1','2','3'},
-/* , */ {' ','C','c',',', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* / */ {'O','o','u','U', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* " */ {' ','A','E','I','O','U','a','e','i','o','u','y','\"', 0},
-/* A */ {'E','`', 39,'~','^','"','o','*','-','>','_', 0, 0, 0},
-/* a */ {'e','`', 39,'~','^','"','o','*','-','>','_', 0, 0, 0},
-/* P */ {' ','G','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* p */ {' ','g','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* S */ {'S','!','O','0','A', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* s */ {'s','!','a','1','2','3','0','o', 0, 0, 0, 0, 0, 0},
-/* ! */ {' ','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* ? */ {' ','?', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 0 */ {'^','*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 1 */ {' ','2','4','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 2 */ {' ','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 3 */ {' ','4','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* C */ {'O',',','$','|', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* c */ {'|','o',',','/','$', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* R */ {'O', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* r */ {'o', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* - */ {' ','+',',','-','^',':', 0, 0, 0, 0, 0, 0, 0, 0},
-/* _ */ {'_','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* < */ {'<', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* > */ {'>', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* X */ {'O','X', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* x */ {' ','o','x', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* . */ {' ','^','.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* = */ {'Y','y', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* Y */ {'=', 39,'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* y */ {'=', 39,'"','$','-', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* */ {' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* | */ {' ','c','|','P','p','^','-', 0, 0, 0, 0, 0, 0, 0},
-/* E */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* e */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* I */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* i */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* O */ {'`', 39,'^','~','"','/','C','R','-','>','A','a', 0, 0},
-/* o */ {' ','A','a','x','-','`', 39,'^','~','"','/','>','_', 0},
-/* U */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* u */ {'`', 39,'^','"',' ','>', 0, 0, 0, 0, 0, 0, 0, 0},
-/* + */ {'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* N */ {'~','-','O', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* n */ {'~','-','o', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* L */ {'$','=','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* l */ {'$','=','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* g */ {'$', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* D */ {'E','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* d */ {'e','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* : */ {'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* * */ {'m','M','a','A', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* T */ {'H', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* t */ {'h', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* M */ {'U', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* m */ {'u', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* V */ {'B', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* v */ {'b', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-};
-
-static const unsigned char compose_keys[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] =
-{
-/* ` */ {192,200,204,210,217,224,232,236,242,249, 0, 0, 0, 0},
-/* ' */ {180,193,201,205,211,218,221,225,233,237,243,250,253,180},
-/* ~ */ {195,209,213,227,241,245, 0, 0, 0, 0, 0, 0, 0, 0},
-/* ^ */ {194,202,206,212,219,226,234,238,244,251,176,185,178,179},
-/* , */ {184,199,231,184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* / */ {216,248,181,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* " */ {168,196,203,207,214,220,228,235,239,246,252,255,168, 0},
-/* A */ {198,192,193,195,194,196,197,197,195,194,170, 0, 0, 0},
-/* a */ {230,224,225,227,226,228,229,229,227,226,170, 0, 0, 0},
-/* P */ {222,182,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* p */ {254,182,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* S */ {167,167,167,186,170, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* s */ {223,167,170,185,178,179,186,167, 0, 0, 0, 0, 0, 0},
-/* ! */ {161,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* ? */ {191,191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 0 */ {176,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 1 */ {185,189,188,185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 2 */ {178,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* 3 */ {179,190,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* C */ {169,199,162,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* c */ {162,169,231,162,162, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* R */ {174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* r */ {174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* - */ {173,177,172,173,175,247, 0, 0, 0, 0, 0, 0, 0, 0},
-/* _ */ {175,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* < */ {171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* > */ {187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* X */ {164,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* x */ {215,164,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* . */ {183,183,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* = */ {165,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* Y */ {165,221,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* y */ {165,253,255,165,165, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* */ {160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* | */ {166,162,166,222,254,166,163, 0, 0, 0, 0, 0, 0, 0},
-/* E */ {200,201,202,203,202, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* e */ {232,233,234,235,234, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* I */ {204,205,206,207,206, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* i */ {236,237,238,239,238, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* O */ {210,211,212,213,214,216,169,174,213,212,197,229, 0, 0},
-/* o */ {176,197,229,164,245,242,243,244,245,246,248,244,186, 0},
-/* U */ {217,218,219,220,219, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* u */ {249,250,251,252,181,251, 0, 0, 0, 0, 0, 0, 0, 0},
-/* + */ {177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* N */ {209,209,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* n */ {241,241,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* L */ {163,163,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* l */ {163,163,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* g */ {164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* D */ {176,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* d */ {176,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* : */ {247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* * */ {181,181,229,197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* T */ {222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* t */ {254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* M */ {215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* u */ {215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* V */ {166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-/* v */ {166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-};
-
-static KeySym compose_key = 0;
-static int compose_mask = 0;
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/little_icon.xbm b/payloads/libpayload/curses/PDCurses-3.4/x11/little_icon.xbm
deleted file mode 100644
index d3e777e..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/little_icon.xbm
+++ /dev/null
@@ -1,14 +0,0 @@
-#define little_icon_width 32
-#define little_icon_height 32
-static unsigned char little_icon_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xfc, 0x30, 0x00, 0x00, 0xfc, 0x31, 0x00, 0x00, 0x8c, 0x33, 0x00,
- 0x00, 0x0c, 0x33, 0x00, 0x00, 0x0c, 0x33, 0x00, 0x00, 0x8c, 0x33, 0x00,
- 0x00, 0xcc, 0x39, 0x00, 0x00, 0xec, 0x3c, 0x00, 0x00, 0x7c, 0x3e, 0x00,
- 0x00, 0x3c, 0x37, 0x00, 0x00, 0x9c, 0x33, 0x00, 0x00, 0xcc, 0x31, 0x00,
- 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x31, 0x00,
- 0x00, 0x8c, 0x3f, 0x00, 0x00, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2a, 0xc6, 0x18, 0x52, 0x5a, 0x29, 0x25,
- 0x42, 0x0a, 0x21, 0x05, 0x42, 0x0a, 0xe6, 0x18, 0x42, 0x0a, 0x28, 0x20,
- 0x52, 0x0a, 0x29, 0x25, 0x8c, 0x09, 0xc6, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/ncurses_cfg.h b/payloads/libpayload/curses/PDCurses-3.4/x11/ncurses_cfg.h
deleted file mode 100644
index e4b74e3..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/ncurses_cfg.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $Id: ncurses_cfg.h,v 1.8 2006/12/28 01:02:03 wmcbrine Exp $
- *
- * This file is only used with the ncurses test programs.
- *
- * Have ncurses-5.6 unpacked in your $(HOME) (you don't need to build
- * it), or edit ncurses_testdir appropriately in the Makefile. Configure
- * and build PDCurses for X11. (Sorry, other ports won't work yet.)
- * Change to this directory, and:
- *
- * "make ncurses_tests" to start.
- * "make ncurses_clean" when you're done.
- *
- * Builds: bs gdc hanoi knight tclock ncurses
- */
-
-#define NCURSES_MOUSE_VERSION 2
-
-#include "../config.h"
-#include <curses.h>
-
-#define ExitProgram exit
-
-#define HAVE_CURSES_VERSION 1
-#define HAVE_GETBEGX 1
-#define HAVE_GETCURX 1
-#define HAVE_GETMAXX 1
-#define HAVE_GETNSTR 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_GETWIN 1
-#define HAVE_LIBPANEL 1
-#define HAVE_LOCALE_H 1
-#define HAVE_NAPMS 1
-#define HAVE_PANEL_H 1
-#define HAVE_PUTWIN 1
-#define HAVE_SLK_COLOR 1
-#define HAVE_SLK_INIT 1
-#define HAVE_WRESIZE 1
-
-#ifdef PDC_WIDE
-# define USE_WIDEC_SUPPORT 1
-#endif
-
-/* Fool ncurses.c so it gives us all the tests, and doesn't redefine
- ACS_ chars
-*/
-
-#define NCURSES_VERSION PDCURSES
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcclip.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcclip.c
deleted file mode 100644
index bba080f..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcclip.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdcclip.c,v 1.35 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <stdlib.h>
-
-/*man-start**************************************************************
-
- Name: clipboard
-
- Synopsis:
- int PDC_getclipboard(char **contents, long *length);
- int PDC_setclipboard(const char *contents, long length);
- int PDC_freeclipboard(char *contents);
- int PDC_clearclipboard(void);
-
- Description:
- PDC_getclipboard() gets the textual contents of the system's
- clipboard. This function returns the contents of the clipboard
- in the contents argument. It is the responsibilitiy of the
- caller to free the memory returned, via PDC_freeclipboard().
- The length of the clipboard contents is returned in the length
- argument.
-
- PDC_setclipboard copies the supplied text into the system's
- clipboard, emptying the clipboard prior to the copy.
-
- PDC_clearclipboard() clears the internal clipboard.
-
- Return Values:
- indicator of success/failure of call.
- PDC_CLIP_SUCCESS the call was successful
- PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
- the clipboard contents
- PDC_CLIP_EMPTY the clipboard contains no text
- PDC_CLIP_ACCESS_ERROR no clipboard support
-
- Portability X/Open BSD SYS V
- PDC_getclipboard - - -
- PDC_setclipboard - - -
- PDC_freeclipboard - - -
- PDC_clearclipboard - - -
-
-**man-end****************************************************************/
-
-int PDC_getclipboard(char **contents, long *length)
-{
-#ifdef PDC_WIDE
- wchar_t *wcontents;
-#endif
- int result = 0;
- int len;
-
- PDC_LOG(("PDC_getclipboard() - called\n"));
-
- XCursesInstructAndWait(CURSES_GET_SELECTION);
-
- if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0)
- XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
-
- if (result == PDC_CLIP_SUCCESS)
- {
- if (XC_read_socket(xc_display_sock, &len, sizeof(int)) < 0)
- XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
-#ifdef PDC_WIDE
- wcontents = malloc((len + 1) * sizeof(wchar_t));
- *contents = malloc(len * 3 + 1);
-
- if (!wcontents || !*contents)
-#else
- *contents = malloc(len + 1);
-
- if (!*contents)
-#endif
- XCursesExitCursesProcess(6, "exiting from PDC_getclipboard - "
- "synchronization error");
-
- if (len)
- {
- if (XC_read_socket(xc_display_sock,
-#ifdef PDC_WIDE
- wcontents, len * sizeof(wchar_t)) < 0)
-#else
- *contents, len) < 0)
-#endif
- XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
- }
-
-#ifdef PDC_WIDE
- wcontents[len] = 0;
- len = PDC_wcstombs(*contents, wcontents, len * 3);
- free(wcontents);
-#endif
- (*contents)[len] = '\0';
- *length = len;
- }
-
- return result;
-}
-
-int PDC_setclipboard(const char *contents, long length)
-{
-#ifdef PDC_WIDE
- wchar_t *wcontents;
-#endif
- int rc;
-
- PDC_LOG(("PDC_setclipboard() - called\n"));
-
-#ifdef PDC_WIDE
- wcontents = malloc((length + 1) * sizeof(wchar_t));
- if (!wcontents)
- return PDC_CLIP_MEMORY_ERROR;
-
- length = PDC_mbstowcs(wcontents, contents, length);
-#endif
- XCursesInstruct(CURSES_SET_SELECTION);
-
- /* Write, then wait for X to do its stuff; expect return code. */
-
- if (XC_write_socket(xc_display_sock, &length, sizeof(long)) >= 0)
- {
- if (XC_write_socket(xc_display_sock,
-#ifdef PDC_WIDE
- wcontents, length * sizeof(wchar_t)) >= 0)
- {
- free(wcontents);
-#else
- contents, length) >= 0)
- {
-#endif
- if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0)
- return rc;
- }
- }
-
- XCursesExitCursesProcess(5, "exiting from PDC_setclipboard");
-
- return PDC_CLIP_ACCESS_ERROR; /* not reached */
-}
-
-int PDC_freeclipboard(char *contents)
-{
- PDC_LOG(("PDC_freeclipboard() - called\n"));
-
- free(contents);
- return PDC_CLIP_SUCCESS;
-}
-
-int PDC_clearclipboard(void)
-{
- int rc;
- long len = 0;
-
- PDC_LOG(("PDC_clearclipboard() - called\n"));
-
- XCursesInstruct(CURSES_CLEAR_SELECTION);
-
- /* Write, then wait for X to do its stuff; expect return code. */
-
- if (XC_write_socket(xc_display_sock, &len, sizeof(long)) >= 0)
- if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0)
- return rc;
-
- XCursesExitCursesProcess(5, "exiting from PDC_clearclipboard");
-
- return PDC_CLIP_ACCESS_ERROR; /* not reached */
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcdisp.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcdisp.c
deleted file mode 100644
index a22e944..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcdisp.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdcdisp.c,v 1.46 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <string.h>
-
-#ifdef CHTYPE_LONG
-
-# define A(x) ((chtype)x | A_ALTCHARSET)
-
-chtype acs_map[128] =
-{
- A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10),
- A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18), A(19),
- A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27), A(28),
- A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&', '\'', '(',
- ')', '*',
-
-# ifdef PDC_WIDE
- 0x2192, 0x2190, 0x2191, 0x2193,
-# else
- '>', '<', '^', 'v',
-# endif
-
- '/',
-
-# ifdef PDC_WIDE
- 0x2588,
-# else
- A(0),
-# endif
-
- '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
- '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
-
-# ifdef PDC_WIDE
- 0x2666, 0x2592,
-# else
- A(1), A(2),
-# endif
-
- 'b', 'c', 'd', 'e',
-
-# ifdef PDC_WIDE
- 0x00b0, 0x00b1, 0x2591, 0x00a4, 0x2518, 0x2510, 0x250c, 0x2514,
- 0x253c, 0x23ba, 0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524,
- 0x2534, 0x252c, 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3,
- 0x00b7,
-# else
- A(7), A(8), '#', 0xa4, A(11), A(12), A(13), A(14), A(15), A(16),
- A(17), A(18), A(19), A(20), A(21), A(22), A(23), A(24), A(25),
- A(26), A(27), A(28), A(29), A(30), 0xb7,
-# endif
-
- A(127)
-};
-
-# undef A
-
-#endif
-
-int PDC_display_cursor(int oldrow, int oldcol, int newrow, int newcol,
- int visibility)
-{
- char buf[30];
- int idx, pos;
-
- PDC_LOG(("%s:PDC_display_cursor() - called: NEW row %d col %d, vis %d\n",
- XCLOGMSG, newrow, newcol, visibility));
-
- if (visibility == -1)
- {
- /* Only send the CURSES_DISPLAY_CURSOR message, no data */
-
- idx = CURSES_DISPLAY_CURSOR;
- memcpy(buf, &idx, sizeof(int));
- idx = sizeof(int);
- }
- else
- {
- idx = CURSES_CURSOR;
- memcpy(buf, &idx, sizeof(int));
-
- idx = sizeof(int);
- pos = oldrow + (oldcol << 8);
- memcpy(buf + idx, &pos, sizeof(int));
-
- idx += sizeof(int);
- pos = newrow + (newcol << 8);
- memcpy(buf + idx, &pos, sizeof(int));
-
- idx += sizeof(int);
- }
-
- if (XC_write_socket(xc_display_sock, buf, idx) < 0)
- XCursesExitCursesProcess(1, "exiting from PDC_display_cursor");
-
- return OK;
-}
-
-/* position hardware cursor at (y, x) */
-
-void PDC_gotoyx(int row, int col)
-{
- PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
-
- PDC_display_cursor(SP->cursrow, SP->curscol, row, col, SP->visibility);
-}
-
-/* update the given physical line to look like the corresponding line in
- curscr */
-
-void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
-{
- PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
-
- XC_get_line_lock(lineno);
-
- memcpy(Xcurscr + XCURSCR_Y_OFF(lineno) + (x * sizeof(chtype)), srcp,
- len * sizeof(chtype));
-
- *(Xcurscr + XCURSCR_START_OFF + lineno) = x;
- *(Xcurscr + XCURSCR_LENGTH_OFF + lineno) = len;
-
- XC_release_line_lock(lineno);
-
- XCursesInstructAndWait(CURSES_REFRESH);
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcgetsc.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcgetsc.c
deleted file mode 100644
index 8f7c0ad..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcgetsc.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdcgetsc.c,v 1.26 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/* return width of screen/viewport */
-
-int PDC_get_columns(void)
-{
- PDC_LOG(("PDC_get_columns() - called\n"));
-
- return XCursesCOLS;
-}
-
-/* get the cursor size/shape */
-
-int PDC_get_cursor_mode(void)
-{
- return 0;
-}
-
-/* return number of screen rows */
-
-int PDC_get_rows(void)
-{
- PDC_LOG(("PDC_get_rows() - called\n"));
-
- return XCursesLINES;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdckbd.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdckbd.c
deleted file mode 100644
index 2f85ba0..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdckbd.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdckbd.c,v 1.62 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: pdckbd
-
- Synopsis:
- unsigned long PDC_get_input_fd(void);
-
- Description:
- PDC_get_input_fd() returns the file descriptor that PDCurses
- reads its input from. It can be used for select().
-
- Portability X/Open BSD SYS V
- PDC_get_input_fd - - -
-
-**man-end****************************************************************/
-
-/* check if a key or mouse event is waiting */
-
-bool PDC_check_key(void)
-{
- struct timeval socket_timeout = {0};
- int s;
-
- /* Is something ready to be read on the socket ? Must be a key. */
-
- FD_ZERO(&xc_readfds);
- FD_SET(xc_key_sock, &xc_readfds);
-
- if ((s = select(FD_SETSIZE, (FD_SET_CAST)&xc_readfds, NULL,
- NULL, &socket_timeout)) < 0)
- XCursesExitCursesProcess(3, "child - exiting from "
- "PDC_check_key select failed");
-
- PDC_LOG(("%s:PDC_check_key() - returning %s\n", XCLOGMSG,
- s ? "TRUE" : "FALSE"));
-
- return !!s;
-}
-
-/* return the next available key or mouse event */
-
-int PDC_get_key(void)
-{
- unsigned long newkey = 0;
- int key = 0;
-
- if (XC_read_socket(xc_key_sock, &newkey, sizeof(unsigned long)) < 0)
- XCursesExitCursesProcess(2, "exiting from PDC_get_key");
-
- pdc_key_modifiers = (newkey >> 24) & 0xFF;
- key = (int)(newkey & 0x00FFFFFF);
-
- if (key == KEY_MOUSE && SP->key_code)
- {
- if (XC_read_socket(xc_key_sock, &pdc_mouse_status,
- sizeof(MOUSE_STATUS)) < 0)
- XCursesExitCursesProcess(2, "exiting from PDC_get_key");
- }
-
- PDC_LOG(("%s:PDC_get_key() - key %d returned\n", XCLOGMSG, key));
-
- return key;
-}
-
-unsigned long PDC_get_input_fd(void)
-{
- PDC_LOG(("PDC_get_input_fd() - called\n"));
-
- return xc_key_sock;
-}
-
-void PDC_set_keyboard_binary(bool on)
-{
- PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
-}
-
-/* discard any pending keyboard or mouse input -- this is the core
- routine for flushinp() */
-
-void PDC_flushinp(void)
-{
- PDC_LOG(("PDC_flushinp() - called\n"));
-
- while (PDC_check_key())
- PDC_get_key();
-}
-
-int PDC_mouse_set(void)
-{
- return OK;
-}
-
-int PDC_modifiers_set(void)
-{
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcscrn.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcscrn.c
deleted file mode 100644
index b84b1c6..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcscrn.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdcscrn.c,v 1.55 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/* COLOR_PAIR to attribute encoding table. */
-
-short *xc_atrtab = (short *)NULL;
-
-/* close the physical screen */
-
-void PDC_scr_close(void)
-{
- PDC_LOG(("PDC_scr_close() - called\n"));
-}
-
-void PDC_scr_free(void)
-{
- XCursesExit();
-
- xc_atrtab = (short *)NULL;
-}
-
-/* open the physical screen -- allocate SP, miscellaneous intialization */
-
-int PDC_scr_open(int argc, char **argv)
-{
- extern bool sb_started;
-
- PDC_LOG(("PDC_scr_open() - called\n"));
-
- if ((XCursesInitscr(argc, argv) == ERR) || !SP)
- return ERR;
-
- SP->cursrow = SP->curscol = 0;
- SP->orig_attr = FALSE;
- SP->sb_on = sb_started;
- SP->sb_total_y = 0;
- SP->sb_viewport_y = 0;
- SP->sb_cur_y = 0;
- SP->sb_total_x = 0;
- SP->sb_viewport_x = 0;
- SP->sb_cur_x = 0;
-
- return OK;
-}
-
-/* the core of resize_term() */
-
-int PDC_resize_screen(int nlines, int ncols)
-{
- PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
- nlines, ncols));
-
- if (nlines || ncols || !SP->resized)
- return ERR;
-
- shmdt((char *)Xcurscr);
- XCursesInstructAndWait(CURSES_RESIZE);
-
- if ((shmid_Xcurscr = shmget(shmkey_Xcurscr,
- SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0)
- {
- perror("Cannot allocate shared memory for curscr");
- kill(xc_otherpid, SIGKILL);
- return ERR;
- }
-
- XCursesLINES = SP->lines;
- XCursesCOLS = SP->cols;
-
- PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d SP->lines %d "
- "SP->cols %d\n", XCLOGMSG, shmid_Xcurscr,
- shmkey_Xcurscr, SP->lines, SP->cols));
-
- Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0);
- xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
-
- SP->resized = FALSE;
-
- return OK;
-}
-
-void PDC_reset_prog_mode(void)
-{
- PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
-}
-
-void PDC_reset_shell_mode(void)
-{
- PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
-}
-
-void PDC_restore_screen_mode(int i)
-{
-}
-
-void PDC_save_screen_mode(int i)
-{
-}
-
-void PDC_init_pair(short pair, short fg, short bg)
-{
- xc_atrtab[pair * 2] = fg;
- xc_atrtab[pair * 2 + 1] = bg;
-}
-
-int PDC_pair_content(short pair, short *fg, short *bg)
-{
- *fg = xc_atrtab[pair * 2];
- *bg = xc_atrtab[pair * 2 + 1];
-
- return OK;
-}
-
-bool PDC_can_change_color(void)
-{
- return TRUE;
-}
-
-int PDC_color_content(short color, short *red, short *green, short *blue)
-{
- XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
-
- tmp->pixel = color;
-
- XCursesInstructAndWait(CURSES_GET_COLOR);
-
- *red = ((double)(tmp->red) * 1000 / 65535) + 0.5;
- *green = ((double)(tmp->green) * 1000 / 65535) + 0.5;
- *blue = ((double)(tmp->blue) * 1000 / 65535) + 0.5;
-
- return OK;
-}
-
-int PDC_init_color(short color, short red, short green, short blue)
-{
- XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
-
- tmp->pixel = color;
-
- tmp->red = ((double)red * 65535 / 1000) + 0.5;
- tmp->green = ((double)green * 65535 / 1000) + 0.5;
- tmp->blue = ((double)blue * 65535 / 1000) + 0.5;
-
- XCursesInstructAndWait(CURSES_SET_COLOR);
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcsetsc.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcsetsc.c
deleted file mode 100644
index bdcc856..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcsetsc.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdcsetsc.c,v 1.33 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <string.h>
-
-/*man-start**************************************************************
-
- Name: pdcsetsc
-
- Synopsis:
- int PDC_set_blink(bool blinkon);
- void PDC_set_title(const char *title);
-
- Description:
- PDC_set_blink() toggles whether the A_BLINK attribute sets an
- actual blink mode (TRUE), or sets the background color to high
- intensity (FALSE). The default is platform-dependent (FALSE in
- most cases). It returns OK if it could set the state to match
- the given parameter, ERR otherwise. Current platforms also
- adjust the value of COLORS according to this function -- 16 for
- FALSE, and 8 for TRUE.
-
- PDC_set_title() sets the title of the window in which the curses
- program is running. This function may not do anything on some
- platforms. (Currently it only works in Win32 and X11.)
-
- Portability X/Open BSD SYS V
- PDC_set_blink - - -
- PDC_set_title - - -
-
-**man-end****************************************************************/
-
-int PDC_curs_set(int visibility)
-{
- int ret_vis = SP->visibility;
-
- PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
-
- if (visibility != -1)
- SP->visibility = visibility;
-
- PDC_display_cursor(SP->cursrow, SP->curscol, SP->cursrow,
- SP->curscol, visibility);
-
- return ret_vis;
-}
-
-void PDC_set_title(const char *title)
-{
- int len;
-
- PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
-
- len = strlen(title) + 1; /* write nul character */
-
- XCursesInstruct(CURSES_TITLE);
-
- if (XC_write_display_socket_int(len) >= 0)
- if (XC_write_socket(xc_display_sock, title, len) >= 0)
- return;
-
- XCursesExitCursesProcess(1, "exiting from PDC_set_title");
-}
-
-int PDC_set_blink(bool blinkon)
-{
- if (pdc_color_started)
- COLORS = 16;
-
- return blinkon ? ERR : OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcutil.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcutil.c
deleted file mode 100644
index 5b5109f..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcutil.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdcutil.c,v 1.10 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#if defined(HAVE_POLL) && !defined(HAVE_USLEEP)
-# include <poll.h>
-#endif
-
-void PDC_beep(void)
-{
- PDC_LOG(("PDC_beep() - called\n"));
-
- XCursesInstruct(CURSES_BELL);
-}
-
-void PDC_napms(int ms)
-{
- PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
-
-#if defined(HAVE_USLEEP)
-
- usleep(1000 * ms);
-
-#elif defined(HAVE_POLL)
- {
- struct pollfd fd;
- fd.fd = -1;
- fd.events = 0;
- poll(&fd, 1, ms);
- }
-#endif
-}
-
-const char *PDC_sysname(void)
-{
- return "X11";
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcx11.c b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcx11.c
deleted file mode 100644
index 370cedb..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcx11.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: pdcx11.c,v 1.96 2008/07/14 04:24:52 wmcbrine Exp $")
-
-#include <errno.h>
-#include <stdlib.h>
-
-/*** Functions that are called by both processes ***/
-
-unsigned char *Xcurscr;
-
-int XCursesProcess = 1;
-int shmidSP;
-int shmid_Xcurscr;
-int shmkeySP;
-int shmkey_Xcurscr;
-int xc_otherpid;
-int XCursesLINES = 24;
-int XCursesCOLS = 80;
-int xc_display_sock;
-int xc_key_sock;
-int xc_display_sockets[2];
-int xc_key_sockets[2];
-int xc_exit_sock;
-
-fd_set xc_readfds;
-
-static void _dummy_function(void)
-{
-}
-
-void XC_get_line_lock(int row)
-{
- /* loop until we can write to the line -- Patch by:
- Georg Fuchs, georg.fuchs at rz.uni-regensburg.de */
-
- while (*(Xcurscr + XCURSCR_FLAG_OFF + row))
- _dummy_function();
-
- *(Xcurscr + XCURSCR_FLAG_OFF + row) = 1;
-}
-
-void XC_release_line_lock(int row)
-{
- *(Xcurscr + XCURSCR_FLAG_OFF + row) = 0;
-}
-
-int XC_write_socket(int sock_num, const void *buf, int len)
-{
- int start = 0, rc;
-
- PDC_LOG(("%s:XC_write_socket called: sock_num %d len %d\n",
- XCLOGMSG, sock_num, len));
-
-#ifdef MOUSE_DEBUG
- if (sock_num == xc_key_sock)
- printf("%s:XC_write_socket(key) len: %d\n", XCLOGMSG, len);
-#endif
- while (1)
- {
- rc = write(sock_num, buf + start, len);
-
- if (rc < 0 || rc == len)
- return rc;
-
- len -= rc;
- start = rc;
- }
-}
-
-int XC_read_socket(int sock_num, void *buf, int len)
-{
- int start = 0, length = len, rc;
-
- PDC_LOG(("%s:XC_read_socket called: sock_num %d len %d\n",
- XCLOGMSG, sock_num, len));
-
- while (1)
- {
- rc = read(sock_num, buf + start, length);
-
-#ifdef MOUSE_DEBUG
- if (sock_num == xc_key_sock)
- printf("%s:XC_read_socket(key) rc %d errno %d "
- "resized: %d\n", XCLOGMSG, rc, errno, SP->resized);
-#endif
- if (rc < 0 && sock_num == xc_key_sock && errno == EINTR
- && SP->resized != FALSE)
- {
- MOUSE_LOG(("%s:continuing\n", XCLOGMSG));
-
- rc = 0;
-
- if (SP->resized > 1)
- SP->resized = TRUE;
- else
- SP->resized = FALSE;
-
- memcpy(buf, &rc, sizeof(int));
-
- return 0;
- }
-
- if (rc <= 0 || rc == length)
- return rc;
-
- length -= rc;
- start = rc;
- }
-}
-
-int XC_write_display_socket_int(int x)
-{
- return XC_write_socket(xc_display_sock, &x, sizeof(int));
-}
-
-#ifdef PDCDEBUG
-void XC_say(const char *msg)
-{
- PDC_LOG(("%s:%s", XCLOGMSG, msg));
-}
-#endif
-
-/*** Functions that are called by the "curses" process ***/
-
-int XCursesInstruct(int flag)
-{
- PDC_LOG(("%s:XCursesInstruct() - called flag %d\n", XCLOGMSG, flag));
-
- /* Send a request to X */
-
- if (XC_write_display_socket_int(flag) < 0)
- XCursesExitCursesProcess(4, "exiting from XCursesInstruct");
-
- return OK;
-}
-
-int XCursesInstructAndWait(int flag)
-{
- int result;
-
- XC_LOG(("XCursesInstructAndWait() - called\n"));
-
- /* tell X we want to do something */
-
- XCursesInstruct(flag);
-
- /* wait for X to say the refresh has occurred*/
-
- if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0)
- XCursesExitCursesProcess(5, "exiting from XCursesInstructAndWait");
-
- if (result != CURSES_CONTINUE)
- XCursesExitCursesProcess(6, "exiting from XCursesInstructAndWait"
- " - synchronization error");
-
- return OK;
-}
-
-static int _setup_curses(void)
-{
- int wait_value;
-
- XC_LOG(("_setup_curses called\n"));
-
- close(xc_display_sockets[1]);
- close(xc_key_sockets[1]);
-
- xc_display_sock = xc_display_sockets[0];
- xc_key_sock = xc_key_sockets[0];
-
- FD_ZERO(&xc_readfds);
-
- XC_read_socket(xc_display_sock, &wait_value, sizeof(int));
-
- if (wait_value != CURSES_CHILD)
- return ERR;
-
- /* Set LINES and COLS now so that the size of the shared memory
- segment can be allocated */
-
- if ((shmidSP = shmget(shmkeySP, sizeof(SCREEN) + XCURSESSHMMIN, 0700)) < 0)
- {
- perror("Cannot allocate shared memory for SCREEN");
- kill(xc_otherpid, SIGKILL);
- return ERR;
- }
-
- SP = (SCREEN*)shmat(shmidSP, 0, 0);
-
- XCursesLINES = SP->lines;
- LINES = XCursesLINES - SP->linesrippedoff - SP->slklines;
- XCursesCOLS = COLS = SP->cols;
-
- if ((shmid_Xcurscr = shmget(shmkey_Xcurscr,
- SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0)
- {
- perror("Cannot allocate shared memory for curscr");
- kill(xc_otherpid, SIGKILL);
- return ERR;
- }
-
- PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d LINES %d COLS %d\n",
- XCLOGMSG, shmid_Xcurscr, shmkey_Xcurscr, LINES, COLS));
-
- Xcurscr = (unsigned char *)shmat(shmid_Xcurscr, 0, 0);
- xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
-
- XC_LOG(("cursesprocess exiting from Xinitscr\n"));
-
- /* Always trap SIGWINCH if the C library supports SIGWINCH */
-
- XCursesSetSignal(SIGWINCH, XCursesSigwinchHandler);
-
- atexit(XCursesExit);
-
- return OK;
-}
-
-int XCursesInitscr(int argc, char *argv[])
-{
- int pid, rc;
-
- XC_LOG(("XCursesInitscr() - called\n"));
-
- shmkeySP = getpid();
-
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_display_sockets) < 0)
- {
- fprintf(stderr, "ERROR: cannot create display socketpair\n");
- return ERR;
- }
-
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_key_sockets) < 0)
- {
- fprintf(stderr, "ERROR: cannot create key socketpair\n");
- return ERR;
- }
-
- pid = fork();
-
- switch(pid)
- {
- case -1:
- fprintf(stderr, "ERROR: cannot fork()\n");
- return ERR;
- break;
-
- case 0: /* child */
- shmkey_Xcurscr = getpid();
-#ifdef XISPARENT
- XCursesProcess = 0;
- rc = _setup_curses();
-#else
- XCursesProcess = 1;
- xc_otherpid = getppid();
- rc = XCursesSetupX(argc, argv);
-#endif
- break;
-
- default: /* parent */
- shmkey_Xcurscr = pid;
-#ifdef XISPARENT
- XCursesProcess = 1;
- xc_otherpid = pid;
- rc = XCursesSetupX(argc, argv);
-#else
- XCursesProcess = 0;
- rc = _setup_curses();
-#endif
- }
-
- return rc;
-}
-
-static void _cleanup_curses_process(int rc)
-{
- PDC_LOG(("%s:_cleanup_curses_process() - called: %d\n", XCLOGMSG, rc));
-
- shutdown(xc_display_sock, 2);
- close(xc_display_sock);
-
- shutdown(xc_key_sock, 2);
- close(xc_key_sock);
-
- shmdt((char *)SP);
- shmdt((char *)Xcurscr);
-
- if (rc)
- _exit(rc);
-}
-
-void XCursesExitCursesProcess(int rc, char *msg)
-{
- PDC_LOG(("%s:XCursesExitCursesProcess() - called: %d %s\n",
- XCLOGMSG, rc, msg));
-
- endwin();
- _cleanup_curses_process(rc);
-}
-
-void XCursesExit(void)
-{
- static bool called = FALSE;
-
- XC_LOG(("XCursesExit() - called\n"));
-
- if (FALSE == called)
- {
- XCursesInstruct(CURSES_EXIT);
- _cleanup_curses_process(0);
-
- called = TRUE;
- }
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcx11.h b/payloads/libpayload/curses/PDCurses-3.4/x11/pdcx11.h
deleted file mode 100644
index dc7b9ae..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/pdcx11.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Public Domain Curses */
-
-/* $Id: pdcx11.h,v 1.64 2008/07/14 04:24:52 wmcbrine Exp $ */
-
-#include <curspriv.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <signal.h>
-#include <ctype.h>
-#include <pwd.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#ifdef HAVE_SYS_SELECT_H
-# include <sys/select.h> /* AIX needs this for FD_ZERO etc macros */
-#endif
-#include <sys/ipc.h>
-#include <sys/shm.h>
-
-#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
-#include <Intrinsic.h>
-#include <StringDefs.h>
-#include <Shell.h>
-
-#ifdef USE_XAW3D
-# include <Xaw3d/Box.h>
-# include <Xaw3d/Scrollbar.h>
-#elif defined(USE_NEXTAW)
-# include <neXtaw/Box.h>
-# include <neXtaw/Scrollbar.h>
-#else
-# include <Xaw/Box.h>
-# include <Xaw/Scrollbar.h>
-#endif
-#include "x11/ScrollBox.h"
-
-#include "Xmu/StdSel.h"
-#include "Xmu/Atoms.h"
-
-#include <keysym.h>
-#include <Xatom.h>
-
-#define XCURSCR_Y_SIZE (XCursesLINES * XCursesCOLS * sizeof(chtype))
-#define XCURSCR_FLAG_SIZE (XCursesLINES * sizeof(int))
-#define XCURSCR_START_SIZE (XCursesLINES * sizeof(int))
-#define XCURSCR_LENGTH_SIZE (XCursesLINES * sizeof(int))
-#define XCURSCR_ATRTAB_SIZE (PDC_COLOR_PAIRS * 2 * sizeof(short))
-#define XCURSCR_SIZE (XCURSCR_FLAG_SIZE + XCURSCR_START_SIZE + \
- XCURSCR_LENGTH_SIZE + XCURSCR_Y_SIZE + XCURSCR_ATRTAB_SIZE + \
- sizeof(XColor))
-
-#define XCURSCR_Y_OFF(y) ((y) * XCursesCOLS * sizeof(chtype))
-#define XCURSCR_FLAG_OFF (XCURSCR_Y_OFF(0) + XCURSCR_Y_SIZE)
-#define XCURSCR_START_OFF (XCURSCR_FLAG_OFF + XCURSCR_FLAG_SIZE)
-#define XCURSCR_LENGTH_OFF (XCURSCR_START_OFF + XCURSCR_START_SIZE)
-#define XCURSCR_ATRTAB_OFF (XCURSCR_LENGTH_OFF + XCURSCR_LENGTH_SIZE)
-#define XCURSCR_XCOLOR_OFF (XCURSCR_ATRTAB_OFF + XCURSCR_ATRTAB_SIZE)
-
-typedef struct
-{
- int lines;
- int cols;
- Pixel cursorColor;
- Pixel colorBlack;
- Pixel colorRed;
- Pixel colorGreen;
- Pixel colorYellow;
- Pixel colorBlue;
- Pixel colorMagenta;
- Pixel colorCyan;
- Pixel colorWhite;
- Pixel colorBoldBlack;
- Pixel colorBoldRed;
- Pixel colorBoldGreen;
- Pixel colorBoldYellow;
- Pixel colorBoldBlue;
- Pixel colorBoldMagenta;
- Pixel colorBoldCyan;
- Pixel colorBoldWhite;
- Pixel pointerForeColor;
- Pixel pointerBackColor;
- XFontStruct *normalFont;
- XFontStruct *italicFont;
- char *bitmap;
-#ifdef HAVE_XPM_H
- char *pixmap;
-#endif
- char *composeKey;
- Cursor pointer;
- int shmmin;
- int borderWidth;
- int borderColor;
- int clickPeriod;
- int doubleClickPeriod;
- int scrollbarWidth;
- int cursorBlinkRate;
- char *textCursor;
-} XCursesAppData;
-
-extern XCursesAppData xc_app_data;
-
-#define XCURSESSHMMIN xc_app_data.shmmin
-
-#define XCLOGMSG (XCursesProcess ? " X" : "CURSES")
-
-void XC_get_line_lock(int);
-void XC_release_line_lock(int);
-
-int PDC_display_cursor(int, int, int, int, int);
-
-void XCursesExitCursesProcess(int, char *);
-int XCursesInstruct(int);
-int XCursesInstructAndWait(int);
-int XCursesInitscr(int, char **);
-
-int XC_write_socket(int, const void *, int);
-int XC_read_socket(int, void *, int);
-int XC_write_display_socket_int(int);
-
-int XCursesSetupX(int argc, char *argv[]);
-RETSIGTYPE XCursesSigwinchHandler(int signo);
-
-#ifdef _HPUX_SOURCE
-# define FD_SET_CAST int *
-#else
-# define FD_SET_CAST fd_set *
-#endif
-
-extern fd_set xc_readfds;
-
-extern unsigned char *Xcurscr;
-extern int XCursesProcess;
-extern int shmidSP;
-extern int shmid_Xcurscr;
-extern int shmkeySP;
-extern int shmkey_Xcurscr;
-extern int xc_otherpid;
-extern int XCursesLINES;
-extern int XCursesCOLS;
-extern int xc_display_sock;
-extern int xc_key_sock;
-extern int xc_display_sockets[2];
-extern int xc_key_sockets[2];
-extern int xc_exit_sock;
-
-typedef RETSIGTYPE (*signal_handler)();
-
-signal_handler XCursesSetSignal(int, signal_handler);
-
-#ifdef PDCDEBUG
-void XC_say(const char *msg);
-# define XC_LOG(x) XC_say x
-#else
-# define XC_LOG(x)
-#endif
-
-#ifdef MOUSE_DEBUG
-# define MOUSE_LOG(x) printf x
-#else
-# define MOUSE_LOG(x)
-#endif
-
-enum
-{
- CURSES_CLEAR_SELECTION, CURSES_DISPLAY_CURSOR, CURSES_SET_SELECTION,
- CURSES_GET_SELECTION, CURSES_TITLE, CURSES_REFRESH_SCROLLBAR,
- CURSES_RESIZE, CURSES_BELL, CURSES_CONTINUE, CURSES_CURSOR,
- CURSES_CHILD, CURSES_REFRESH, CURSES_GET_COLOR, CURSES_SET_COLOR,
- CURSES_EXIT
-};
-
-extern short *xc_atrtab;
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/sb.c b/payloads/libpayload/curses/PDCurses-3.4/x11/sb.c
deleted file mode 100644
index 95b0292..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/sb.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: sb.c,v 1.27 2008/07/14 04:24:52 wmcbrine Exp $")
-
-/*man-start**************************************************************
-
- Name: sb
-
- Synopsis:
- int sb_init(void)
- int sb_set_horz(int total, int viewport, int cur)
- int sb_set_vert(int total, int viewport, int cur)
- int sb_get_horz(int *total, int *viewport, int *cur)
- int sb_get_vert(int *total, int *viewport, int *cur)
- int sb_refresh(void);
-
- Description:
- These functions manipulate the scrollbar.
-
- Return Value:
- All functions return OK on success and ERR on error.
-
- Portability X/Open BSD SYS V
- sb_init - - -
- sb_set_horz - - -
- sb_set_vert - - -
- sb_get_horz - - -
- sb_get_vert - - -
- sb_refresh - - -
-
-**man-end****************************************************************/
-
-bool sb_started = FALSE;
-
-/* sb_init() is the sb initialization routine.
- This must be called before initscr(). */
-
-int sb_init(void)
-{
- PDC_LOG(("sb_init() - called\n"));
-
- if (SP)
- return ERR;
-
- sb_started = TRUE;
-
- return OK;
-}
-
-/* sb_set_horz() - Used to set horizontal scrollbar.
-
- total = total number of columns
- viewport = size of viewport in columns
- cur = current column in total */
-
-int sb_set_horz(int total, int viewport, int cur)
-{
- PDC_LOG(("sb_set_horz() - called: total %d viewport %d cur %d\n",
- total, viewport, cur));
-
- if (!SP)
- return ERR;
-
- SP->sb_total_x = total;
- SP->sb_viewport_x = viewport;
- SP->sb_cur_x = cur;
-
- return OK;
-}
-
-/* sb_set_vert() - Used to set vertical scrollbar.
-
- total = total number of columns on line
- viewport = size of viewport in columns
- cur = current column in total */
-
-int sb_set_vert(int total, int viewport, int cur)
-{
- PDC_LOG(("sb_set_vert() - called: total %d viewport %d cur %d\n",
- total, viewport, cur));
-
- if (!SP)
- return ERR;
-
- SP->sb_total_y = total;
- SP->sb_viewport_y = viewport;
- SP->sb_cur_y = cur;
-
- return OK;
-}
-
-/* sb_get_horz() - Used to get horizontal scrollbar.
-
- total = total number of lines
- viewport = size of viewport in lines
- cur = current line in total */
-
-int sb_get_horz(int *total, int *viewport, int *cur)
-{
- PDC_LOG(("sb_get_horz() - called\n"));
-
- if (!SP)
- return ERR;
-
- if (total)
- *total = SP->sb_total_x;
- if (viewport)
- *viewport = SP->sb_viewport_x;
- if (cur)
- *cur = SP->sb_cur_x;
-
- return OK;
-}
-
-/* sb_get_vert() - Used to get vertical scrollbar.
-
- total = total number of lines
- viewport = size of viewport in lines
- cur = current line in total */
-
-int sb_get_vert(int *total, int *viewport, int *cur)
-{
- PDC_LOG(("sb_get_vert() - called\n"));
-
- if (!SP)
- return ERR;
-
- if (total)
- *total = SP->sb_total_y;
- if (viewport)
- *viewport = SP->sb_viewport_y;
- if (cur)
- *cur = SP->sb_cur_y;
-
- return OK;
-}
-
-/* sb_refresh() - Used to draw the scrollbars. */
-
-int sb_refresh(void)
-{
- PDC_LOG(("sb_refresh() - called\n"));
-
- if (!SP)
- return ERR;
-
- XCursesInstruct(CURSES_REFRESH_SCROLLBAR);
-
- return OK;
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/x11.c b/payloads/libpayload/curses/PDCurses-3.4/x11/x11.c
deleted file mode 100644
index 69c3199..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/x11.c
+++ /dev/null
@@ -1,3229 +0,0 @@
-/* Public Domain Curses */
-
-#include "pdcx11.h"
-
-RCSID("$Id: x11.c,v 1.94 2008/07/14 04:33:26 wmcbrine Exp $")
-
-#ifdef HAVE_DECKEYSYM_H
-# include <DECkeysym.h>
-#endif
-
-#ifdef HAVE_SUNKEYSYM_H
-# include <Sunkeysym.h>
-#endif
-
-#ifdef HAVE_XPM_H
-# include <xpm.h>
-#endif
-
-#if defined PDC_XIM
-# include <Xlocale.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef XPOINTER_TYPEDEFED
-typedef char * XPointer;
-#endif
-
-#ifndef MAX_PATH
-# define MAX_PATH 256
-#endif
-
-XCursesAppData xc_app_data;
-
-#if NeedWidePrototypes
-# define PDC_SCROLLBAR_TYPE double
-#else
-# define PDC_SCROLLBAR_TYPE float
-#endif
-
-#define MAX_COLORS 16 /* maximum of "normal" colors */
-#define COLOR_CURSOR MAX_COLORS /* color of cursor */
-#define COLOR_BORDER MAX_COLORS + 1 /* color of border */
-
-#define XCURSESDISPLAY (XtDisplay(drawing))
-#define XCURSESWIN (XtWindow(drawing))
-
-/* Default icons for XCurses applications. */
-
-#include "big_icon.xbm"
-#include "little_icon.xbm"
-
-static void _selection_off(void);
-static void _display_cursor(int, int, int, int);
-static void _redraw_cursor(void);
-static void _exit_process(int, int, char *);
-static void _send_key_to_curses(unsigned long, MOUSE_STATUS *, bool);
-
-static void XCursesButton(Widget, XEvent *, String *, Cardinal *);
-static void XCursesHandleString(Widget, XEvent *, String *, Cardinal *);
-static void XCursesKeyPress(Widget, XEvent *, String *, Cardinal *);
-static void XCursesPasteSelection(Widget, XButtonEvent *);
-
-static struct
-{
- KeySym keycode;
- bool numkeypad;
- unsigned short normal;
- unsigned short shifted;
- unsigned short control;
- unsigned short alt;
-} key_table[] =
-{
-/* keycode keypad normal shifted control alt*/
- {XK_Left, FALSE, KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT},
- {XK_Right, FALSE, KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT},
- {XK_Up, FALSE, KEY_UP, KEY_SUP, CTL_UP, ALT_UP},
- {XK_Down, FALSE, KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN},
- {XK_Home, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME},
-/* Sun Type 4 keyboard */
- {XK_R7, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME},
- {XK_End, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END},
-/* Sun Type 4 keyboard */
- {XK_R13, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END},
- {XK_Prior, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP},
-/* Sun Type 4 keyboard */
- {XK_R9, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP},
- {XK_Next, FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN},
-/* Sun Type 4 keyboard */
- {XK_R15, FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN},
- {XK_Insert, FALSE, KEY_IC, KEY_SIC, CTL_INS, ALT_INS},
- {XK_Delete, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL},
- {XK_F1, FALSE, KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37)},
- {XK_F2, FALSE, KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38)},
- {XK_F3, FALSE, KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39)},
- {XK_F4, FALSE, KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40)},
- {XK_F5, FALSE, KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41)},
- {XK_F6, FALSE, KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42)},
- {XK_F7, FALSE, KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43)},
- {XK_F8, FALSE, KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44)},
- {XK_F9, FALSE, KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45)},
- {XK_F10, FALSE, KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46)},
- {XK_F11, FALSE, KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47)},
- {XK_F12, FALSE, KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48)},
- {XK_F13, FALSE, KEY_F(13), KEY_F(25), KEY_F(37), KEY_F(49)},
- {XK_F14, FALSE, KEY_F(14), KEY_F(26), KEY_F(38), KEY_F(50)},
- {XK_F15, FALSE, KEY_F(15), KEY_F(27), KEY_F(39), KEY_F(51)},
- {XK_F16, FALSE, KEY_F(16), KEY_F(28), KEY_F(40), KEY_F(52)},
- {XK_F17, FALSE, KEY_F(17), KEY_F(29), KEY_F(41), KEY_F(53)},
- {XK_F18, FALSE, KEY_F(18), KEY_F(30), KEY_F(42), KEY_F(54)},
- {XK_F19, FALSE, KEY_F(19), KEY_F(31), KEY_F(43), KEY_F(55)},
- {XK_F20, FALSE, KEY_F(20), KEY_F(32), KEY_F(44), KEY_F(56)},
- {XK_BackSpace, FALSE, 0x08, 0x08, CTL_BKSP, ALT_BKSP},
- {XK_Tab, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB},
- {XK_Select, FALSE, KEY_SELECT, KEY_SELECT, KEY_SELECT, KEY_SELECT},
- {XK_Print, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT},
- {XK_Find, FALSE, KEY_FIND, KEY_SFIND, KEY_FIND, KEY_FIND},
- {XK_Pause, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND},
- {XK_Clear, FALSE, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR},
- {XK_Cancel, FALSE, KEY_CANCEL, KEY_SCANCEL, KEY_CANCEL, KEY_CANCEL},
- {XK_Break, FALSE, KEY_BREAK, KEY_BREAK, KEY_BREAK, KEY_BREAK},
- {XK_Help, FALSE, KEY_HELP, KEY_SHELP, KEY_LHELP, KEY_HELP},
- {XK_L4, FALSE, KEY_UNDO, KEY_SUNDO, KEY_UNDO, KEY_UNDO},
- {XK_L6, FALSE, KEY_COPY, KEY_SCOPY, KEY_COPY, KEY_COPY},
- {XK_L9, FALSE, KEY_FIND, KEY_SFIND, KEY_FIND, KEY_FIND},
- {XK_Menu, FALSE, KEY_OPTIONS, KEY_SOPTIONS, KEY_OPTIONS, KEY_OPTIONS},
-#ifdef HAVE_SUNKEYSYM_H
- {SunXK_F36, FALSE, KEY_F(41), KEY_F(43), KEY_F(45), KEY_F(47)},
- {SunXK_F37, FALSE, KEY_F(42), KEY_F(44), KEY_F(46), KEY_F(48)},
-#endif
-#ifdef HAVE_DECKEYSYM_H
- {DXK_Remove, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL},
-#endif
- {XK_Escape, FALSE, 0x1B, 0x1B, 0x1B, ALT_ESC},
- {XK_KP_Enter, TRUE, PADENTER, PADENTER, CTL_PADENTER,ALT_PADENTER},
- {XK_KP_Add, TRUE, PADPLUS, '+', CTL_PADPLUS, ALT_PADPLUS},
- {XK_KP_Subtract,TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS},
- {XK_KP_Multiply,TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
-/* Sun Type 4 keyboard */
- {XK_R6, TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
- {XK_KP_Divide, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
-/* Sun Type 4 keyboard */
- {XK_R5, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
- {XK_KP_Decimal,TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP},
- {XK_KP_0, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0},
- {XK_KP_1, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1},
- {XK_KP_2, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2},
- {XK_KP_3, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
- {XK_KP_4, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4},
- {XK_KP_5, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
-/* Sun Type 4 keyboard */
- {XK_R11, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
- {XK_KP_6, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6},
- {XK_KP_7, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
- {XK_KP_8, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8},
- {XK_KP_9, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
-/* the following added to support Sun Type 5 keyboards */
- {XK_F21, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND},
- {XK_F22, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT},
- {XK_F24, TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS},
-/* Sun Type 4 keyboard */
- {XK_F25, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
-/* Sun Type 4 keyboard */
- {XK_F26, TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
- {XK_F27, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
- {XK_F29, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
- {XK_F31, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
- {XK_F35, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
-#ifdef HAVE_XK_KP_DELETE
- {XK_KP_Delete, TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP},
-#endif
-#ifdef HAVE_XK_KP_INSERT
- {XK_KP_Insert, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0},
-#endif
-#ifdef HAVE_XK_KP_END
- {XK_KP_End, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1},
-#endif
-#ifdef HAVE_XK_KP_DOWN
- {XK_KP_Down, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2},
-#endif
-#ifdef HAVE_XK_KP_NEXT
- {XK_KP_Next, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
-#endif
-#ifdef HAVE_XK_KP_LEFT
- {XK_KP_Left, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4},
-#endif
-#ifdef HAVE_XK_KP_BEGIN
- {XK_KP_Begin, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
-#endif
-#ifdef HAVE_XK_KP_RIGHT
- {XK_KP_Right, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6},
-#endif
-#ifdef HAVE_XK_KP_HOME
- {XK_KP_Home, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
-#endif
-#ifdef HAVE_XK_KP_UP
- {XK_KP_Up, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8},
-#endif
-#ifdef HAVE_XK_KP_PRIOR
- {XK_KP_Prior, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
-#endif
- {0, 0, 0, 0, 0, 0}
-};
-
-#ifndef PDC_XIM
-# include "compose.h"
-#endif
-
-#define BITMAPDEPTH 1
-
-unsigned long pdc_key_modifiers = 0L;
-
-static GC normal_gc, block_cursor_gc, rect_cursor_gc, italic_gc, border_gc;
-static int font_height, font_width, font_ascent, font_descent,
- window_width, window_height;
-static int resize_window_width = 0, resize_window_height = 0;
-static char *bitmap_file = NULL;
-#ifdef HAVE_XPM_H
-static char *pixmap_file = NULL;
-#endif
-static KeySym keysym = 0;
-
-static int state_mask[8] =
-{
- ShiftMask,
- LockMask,
- ControlMask,
- Mod1Mask,
- Mod2Mask,
- Mod3Mask,
- Mod4Mask,
- Mod5Mask
-};
-
-static Atom wm_atom[2];
-static String class_name = "XCurses";
-static XtAppContext app_context;
-static Widget topLevel, drawing, scrollBox, scrollVert, scrollHoriz;
-static int received_map_notify = 0;
-static bool mouse_selection = FALSE;
-static chtype *tmpsel = NULL;
-static unsigned long tmpsel_length = 0;
-static int selection_start_x = 0, selection_start_y = 0,
- selection_end_x = 0, selection_end_y = 0;
-static Pixmap icon_bitmap;
-#ifdef HAVE_XPM_H
-static Pixmap icon_pixmap;
-static Pixmap icon_pixmap_mask;
-#endif
-static bool visible_cursor = FALSE;
-static bool window_entered = TRUE;
-static char *program_name;
-
-/* Macros just for app_resources */
-
-#ifdef PDC_WIDE
-# define DEFFONT "-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1"
-#else
-# define DEFFONT "7x13"
-#endif
-
-#define APPDATAOFF(n) XtOffsetOf(XCursesAppData, n)
-
-#define RINT(name1, name2, value) { \
- #name1, #name2, XtRInt, \
- sizeof(int), APPDATAOFF(name1), XtRImmediate, \
- (XtPointer)value \
- }
-
-#define RPIXEL(name1, name2, value) { \
- #name1, #name2, XtRPixel, \
- sizeof(Pixel), APPDATAOFF(name1), XtRString, \
- (XtPointer)#value \
- }
-
-#define RCOLOR(name, value) RPIXEL(color##name, Color##name, value)
-
-
-#define RSTRINGP(name1, name2, param) { \
- #name1, #name2, XtRString, \
- MAX_PATH, APPDATAOFF(name1), XtRString, (XtPointer)param \
- }
-
-#define RSTRING(name1, name2) RSTRINGP(name1, name2, "")
-
-#define RFONT(name1, name2, value) { \
- #name1, #name2, XtRFontStruct, \
- sizeof(XFontStruct), APPDATAOFF(name1), XtRString, \
- (XtPointer)value \
- }
-
-#define RCURSOR(name1, name2, value) { \
- #name1, #name2, XtRCursor, \
- sizeof(Cursor), APPDATAOFF(name1), XtRString, \
- (XtPointer)#value \
- }
-
-static XtResource app_resources[] =
-{
- RINT(lines, Lines, 24),
- RINT(cols, Cols, 80),
-
- RPIXEL(cursorColor, CursorColor, Red),
-
- RCOLOR(Black, Black),
- RCOLOR(Red, red3),
- RCOLOR(Green, green3),
- RCOLOR(Yellow, yellow3),
- RCOLOR(Blue, blue3),
- RCOLOR(Magenta, magenta3),
- RCOLOR(Cyan, cyan3),
- RCOLOR(White, Grey),
-
- RCOLOR(BoldBlack, grey40),
- RCOLOR(BoldRed, red1),
- RCOLOR(BoldGreen, green1),
- RCOLOR(BoldYellow, yellow1),
- RCOLOR(BoldBlue, blue1),
- RCOLOR(BoldMagenta, magenta1),
- RCOLOR(BoldCyan, cyan1),
- RCOLOR(BoldWhite, White),
-
- RFONT(normalFont, NormalFont, DEFFONT),
- RFONT(italicFont, ItalicFont, DEFFONT),
-
- RSTRING(bitmap, Bitmap),
-#ifdef HAVE_XPM_H
- RSTRING(pixmap, Pixmap),
-#endif
- RSTRINGP(composeKey, ComposeKey, "Multi_key"),
-
- RCURSOR(pointer, Pointer, xterm),
-
- RPIXEL(pointerForeColor, PointerForeColor, Black),
- RPIXEL(pointerBackColor, PointerBackColor, White),
-
- RINT(shmmin, Shmmin, 0),
- RINT(borderWidth, BorderWidth, 0),
-
- RPIXEL(borderColor, BorderColor, Black),
-
- RINT(doubleClickPeriod, DoubleClickPeriod, (PDC_CLICK_PERIOD * 2)),
- RINT(clickPeriod, ClickPeriod, PDC_CLICK_PERIOD),
- RINT(scrollbarWidth, ScrollbarWidth, 15),
- RINT(cursorBlinkRate, CursorBlinkRate, 0),
-
- RSTRING(textCursor, TextCursor)
-};
-
-#undef RCURSOR
-#undef RFONT
-#undef RSTRING
-#undef RCOLOR
-#undef RPIXEL
-#undef RINT
-#undef APPDATAOFF
-#undef DEFFONT
-
-/* Macros for options */
-
-#define COPT(name) {"-" #name, "*" #name, XrmoptionSepArg, NULL}
-#define CCOLOR(name) COPT(color##name)
-
-static XrmOptionDescRec options[] =
-{
- COPT(lines), COPT(cols), COPT(normalFont), COPT(italicFont),
- COPT(bitmap),
-#ifdef HAVE_XPM_H
- COPT(pixmap),
-#endif
- COPT(pointer), COPT(shmmin), COPT(composeKey), COPT(clickPeriod),
- COPT(doubleClickPeriod), COPT(scrollbarWidth),
- COPT(pointerForeColor), COPT(pointerBackColor),
- COPT(cursorBlinkRate), COPT(cursorColor), COPT(textCursor),
-
- CCOLOR(Black), CCOLOR(Red), CCOLOR(Green), CCOLOR(Yellow),
- CCOLOR(Blue), CCOLOR(Magenta), CCOLOR(Cyan), CCOLOR(White),
-
- CCOLOR(BoldBlack), CCOLOR(BoldRed), CCOLOR(BoldGreen),
- CCOLOR(BoldYellow), CCOLOR(BoldBlue), CCOLOR(BoldMagenta),
- CCOLOR(BoldCyan), CCOLOR(BoldWhite)
-};
-
-#undef CCOLOR
-#undef COPT
-
-static XtActionsRec action_table[] =
-{
- {"XCursesButton", (XtActionProc)XCursesButton},
- {"XCursesKeyPress", (XtActionProc)XCursesKeyPress},
- {"XCursesPasteSelection", (XtActionProc)XCursesPasteSelection},
- {"string", (XtActionProc)XCursesHandleString}
-};
-
-static bool after_first_curses_request = FALSE;
-static Pixel colors[MAX_COLORS + 2];
-static bool vertical_cursor = FALSE;
-
-#ifdef PDC_XIM
-static XIM Xim = NULL;
-static XIC Xic = NULL;
-#endif
-
-static const char *default_translations =
-{
- "<Key>: XCursesKeyPress() \n" \
- "<KeyUp>: XCursesKeyPress() \n" \
- "<BtnDown>: XCursesButton() \n" \
- "<BtnUp>: XCursesButton() \n" \
- "<BtnMotion>: XCursesButton()"
-};
-
-static int _to_utf8(char *outcode, chtype code)
-{
-#ifdef PDC_WIDE
- if (code & A_ALTCHARSET && !(code & 0xff80))
- code = acs_map[code & 0x7f];
-#endif
- code &= A_CHARTEXT;
-
- if (code < 0x80)
- {
- outcode[0] = code;
- return 1;
- }
- else
- if (code < 0x800)
- {
- outcode[0] = ((code & 0x07c0) >> 6) | 0xc0;
- outcode[1] = (code & 0x003f) | 0x80;
- return 2;
- }
- else
- {
- outcode[0] = ((code & 0xf000) >> 12) | 0xe0;
- outcode[1] = ((code & 0x0fc0) >> 6) | 0x80;
- outcode[2] = (code & 0x003f) | 0x80;
- return 3;
- }
-}
-
-static int _from_utf8(wchar_t *pwc, const char *s, size_t n)
-{
- wchar_t key;
- int i = -1;
- const unsigned char *string;
-
- if (!s || (n < 1))
- return -1;
-
- if (!*s)
- return 0;
-
- string = (const unsigned char *)s;
-
- key = string[0];
-
- /* Simplistic UTF-8 decoder -- only does the BMP, minimal validation */
-
- if (key & 0x80)
- {
- if ((key & 0xe0) == 0xc0)
- {
- if (1 < n)
- {
- key = ((key & 0x1f) << 6) | (string[1] & 0x3f);
- i = 2;
- }
- }
- else if ((key & 0xe0) == 0xe0)
- {
- if (2 < n)
- {
- key = ((key & 0x0f) << 12) |
- ((string[1] & 0x3f) << 6) | (string[2] & 0x3f);
- i = 3;
- }
- }
- }
- else
- i = 1;
-
- if (i)
- *pwc = key;
-
- return i;
-}
-
-#ifndef X_HAVE_UTF8_STRING
-static Atom XA_UTF8_STRING(Display *dpy)
-{
- static AtomPtr p = NULL;
-
- if (!p)
- p = XmuMakeAtom("UTF8_STRING");
-
- return XmuInternAtom(dpy, p);
-}
-#endif
-
-signal_handler XCursesSetSignal(int signo, signal_handler action)
-{
-#if defined(SA_INTERRUPT) || defined(SA_RESTART)
- struct sigaction sigact, osigact;
-
- sigact.sa_handler = action;
-
- sigact.sa_flags =
-# ifdef SA_INTERRUPT
-# ifdef SA_RESTART
- SA_INTERRUPT | SA_RESTART;
-# else
- SA_INTERRUPT;
-# endif
-# else /* must be SA_RESTART */
- SA_RESTART;
-# endif
- sigemptyset(&sigact.sa_mask);
-
- if (sigaction(signo, &sigact, &osigact))
- return SIG_ERR;
-
- return osigact.sa_handler;
-
-#else /* not SA_INTERRUPT or SA_RESTART, use plain signal */
- return signal(signo, action);
-#endif
-}
-
-RETSIGTYPE XCursesSigwinchHandler(int signo)
-{
- PDC_LOG(("%s:XCursesSigwinchHandler() - called: SIGNO: %d\n",
- XCLOGMSG, signo));
-
- /* Patch by: Georg Fuchs, georg.fuchs at rz.uni-regensburg.de
- 02-Feb-1999 */
-
- SP->resized += 1;
-
- /* Always trap SIGWINCH if the C library supports SIGWINCH */
-
-#ifdef SIGWINCH
- XCursesSetSignal(SIGWINCH, XCursesSigwinchHandler);
-#endif
-}
-
-/* Convert character positions x and y to pixel positions, stored in
- xpos and ypos */
-
-static void _make_xy(int x, int y, int *xpos, int *ypos)
-{
- *xpos = (x * font_width) + xc_app_data.borderWidth;
- *ypos = xc_app_data.normalFont->ascent + (y * font_height) +
- xc_app_data.borderWidth;
-}
-
-/* Output a block of characters with common attributes */
-
-static int _new_packet(chtype attr, bool rev, int len, int col, int row,
-#ifdef PDC_WIDE
- XChar2b *text)
-#else
- char *text)
-#endif
-{
- GC gc;
- int xpos, ypos;
- short fore, back;
-
- PDC_pair_content(PAIR_NUMBER(attr), &fore, &back);
-
-#ifdef PDC_WIDE
- text[len].byte1 = text[len].byte2 = 0;
-#else
- text[len] = '\0';
-#endif
-
- /* Specify the color table offsets */
-
- fore |= (attr & A_BOLD) ? 8 : 0;
- back |= (attr & A_BLINK) ? 8 : 0;
-
- /* Reverse flag = highlighted selection XOR A_REVERSE set */
-
- rev ^= !!(attr & A_REVERSE);
-
- /* Determine which GC to use - normal or italic */
-
- gc = (attr & A_ITALIC) ? italic_gc : normal_gc;
-
- /* Draw it */
-
- XSetForeground(XCURSESDISPLAY, gc, colors[rev ? back : fore]);
- XSetBackground(XCURSESDISPLAY, gc, colors[rev ? fore : back]);
-
- _make_xy(col, row, &xpos, &ypos);
-
-#ifdef PDC_WIDE
- XDrawImageString16(
-#else
- XDrawImageString(
-#endif
- XCURSESDISPLAY, XCURSESWIN, gc, xpos, ypos, text, len);
-
- /* Underline, etc. */
-
- if (attr & (A_LEFTLINE|A_RIGHTLINE|A_UNDERLINE))
- {
- int k;
-
- if (SP->line_color != -1)
- XSetForeground(XCURSESDISPLAY, gc, colors[SP->line_color]);
-
- if (attr & A_UNDERLINE) /* UNDER */
- XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc,
- xpos, ypos + 1, xpos + font_width * len, ypos + 1);
-
- if (attr & A_LEFTLINE) /* LEFT */
- for (k = 0; k < len; k++)
- {
- int x = xpos + font_width * k - 1;
- XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc,
- x, ypos - font_ascent, x, ypos + font_descent);
- }
-
- if (attr & A_RIGHTLINE) /* RIGHT */
- for (k = 0; k < len; k++)
- {
- int x = xpos + font_width * (k + 1) - 1;
- XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc,
- x, ypos - font_ascent, x, ypos + font_descent);
- }
- }
-
- PDC_LOG(("%s:_new_packet() - row: %d col: %d "
- "num_cols: %d fore: %d back: %d text:<%s>\n",
- XCLOGMSG, row, col, len, fore, back, text));
-
- return OK;
-}
-
-/* The core display routine -- update one line of text */
-
-static int _display_text(const chtype *ch, int row, int col,
- int num_cols, bool highlight)
-{
-#ifdef PDC_WIDE
- XChar2b text[513];
-#else
- char text[513];
-#endif
- chtype old_attr, attr;
- int i, j;
-
- PDC_LOG(("%s:_display_text() - called: row: %d col: %d "
- "num_cols: %d\n", XCLOGMSG, row, col, num_cols));
-
- if (!num_cols)
- return OK;
-
- old_attr = *ch & A_ATTRIBUTES;
-
- for (i = 0, j = 0; j < num_cols; j++)
- {
- chtype curr = ch[j];
-
- attr = curr & A_ATTRIBUTES;
-
-#ifdef CHTYPE_LONG
- if (attr & A_ALTCHARSET && !(curr & 0xff80))
- {
- attr ^= A_ALTCHARSET;
- curr = acs_map[curr & 0x7f];
- }
-#endif
-
-#ifndef PDC_WIDE
- /* Special handling for ACS_BLOCK */
-
- if (!(curr & A_CHARTEXT))
- {
- curr |= ' ';
- attr ^= A_REVERSE;
- }
-#endif
- if (attr != old_attr)
- {
- if (_new_packet(old_attr, highlight, i, col, row, text) == ERR)
- return ERR;
-
- old_attr = attr;
- col += i;
- i = 0;
- }
-
-#ifdef PDC_WIDE
- text[i].byte1 = (curr & 0xff00) >> 8;
- text[i++].byte2 = curr & 0x00ff;
-#else
- text[i++] = curr & 0xff;
-#endif
- }
-
- return _new_packet(old_attr, highlight, i, col, row, text);
-}
-
-static void _get_gc(GC *gc, XFontStruct *font_info, int fore, int back)
-{
- XGCValues values;
-
- /* Create default Graphics Context */
-
- *gc = XCreateGC(XCURSESDISPLAY, XCURSESWIN, 0L, &values);
-
- /* specify font */
-
- XSetFont(XCURSESDISPLAY, *gc, font_info->fid);
-
- XSetForeground(XCURSESDISPLAY, *gc, colors[fore]);
- XSetBackground(XCURSESDISPLAY, *gc, colors[back]);
-}
-
-static void _initialize_colors(void)
-{
- colors[COLOR_BLACK] = xc_app_data.colorBlack;
- colors[COLOR_RED] = xc_app_data.colorRed;
- colors[COLOR_GREEN] = xc_app_data.colorGreen;
- colors[COLOR_YELLOW] = xc_app_data.colorYellow;
- colors[COLOR_BLUE] = xc_app_data.colorBlue;
- colors[COLOR_MAGENTA] = xc_app_data.colorMagenta;
- colors[COLOR_CYAN] = xc_app_data.colorCyan;
- colors[COLOR_WHITE] = xc_app_data.colorWhite;
-
- colors[COLOR_BLACK + 8] = xc_app_data.colorBoldBlack;
- colors[COLOR_RED + 8] = xc_app_data.colorBoldRed;
- colors[COLOR_GREEN + 8] = xc_app_data.colorBoldGreen;
- colors[COLOR_YELLOW + 8] = xc_app_data.colorBoldYellow;
- colors[COLOR_BLUE + 8] = xc_app_data.colorBoldBlue;
- colors[COLOR_MAGENTA + 8] = xc_app_data.colorBoldMagenta;
- colors[COLOR_CYAN + 8] = xc_app_data.colorBoldCyan;
- colors[COLOR_WHITE + 8] = xc_app_data.colorBoldWhite;
-
- colors[COLOR_CURSOR] = xc_app_data.cursorColor;
- colors[COLOR_BORDER] = xc_app_data.borderColor;
-}
-
-static void _refresh_scrollbar(void)
-{
- XC_LOG(("_refresh_scrollbar() - called\n"));
-
- if (SP->sb_on)
- {
- PDC_SCROLLBAR_TYPE total_y = SP->sb_total_y;
- PDC_SCROLLBAR_TYPE total_x = SP->sb_total_x;
-
- if (total_y)
- XawScrollbarSetThumb(scrollVert,
- (PDC_SCROLLBAR_TYPE)(SP->sb_cur_y) / total_y,
- (PDC_SCROLLBAR_TYPE)(SP->sb_viewport_y) / total_y);
-
- if (total_x)
- XawScrollbarSetThumb(scrollHoriz,
- (PDC_SCROLLBAR_TYPE)(SP->sb_cur_x) / total_x,
- (PDC_SCROLLBAR_TYPE)(SP->sb_viewport_x) / total_x);
- }
-}
-
-static void _set_cursor_color(chtype *ch, short *fore, short *back)
-{
- int attr;
- short f, b;
-
- attr = PAIR_NUMBER(*ch);
-
- if (attr)
- {
- PDC_pair_content(attr, &f, &b);
- *fore = 7 - (f % 8);
- *back = 7 - (b % 8);
- }
- else
- {
- if (*ch & A_REVERSE)
- {
- *back = COLOR_BLACK;
- *fore = COLOR_WHITE;
- }
- else
- {
- *back = COLOR_WHITE;
- *fore = COLOR_BLACK;
- }
- }
-}
-
-static void _get_icon(void)
-{
- XIconSize *icon_size;
- int size_count = 0;
- Status rc;
- unsigned char *bitmap_bits = NULL;
- unsigned icon_bitmap_width = 0, icon_bitmap_height = 0,
- file_bitmap_width = 0, file_bitmap_height = 0;
-
- XC_LOG(("_get_icon() - called\n"));
-
- icon_size = XAllocIconSize();
-
- rc = XGetIconSizes(XtDisplay(topLevel),
- RootWindowOfScreen(XtScreen(topLevel)),
- &icon_size, &size_count);
-
- /* if the WM can advise on icon sizes... */
-
- if (rc && size_count)
- {
- int i, max_height = 0, max_width = 0;
-
- PDC_LOG(("%s:size_count: %d rc: %d\n", XCLOGMSG, size_count, rc));
-
- for (i = 0; i < size_count; i++)
- {
- if (icon_size[i].max_width > max_width)
- max_width = icon_size[i].max_width;
- if (icon_size[i].max_height > max_height)
- max_height = icon_size[i].max_height;
-
- PDC_LOG(("%s:min: %d %d\n", XCLOGMSG,
- icon_size[i].min_width, icon_size[i].min_height));
-
- PDC_LOG(("%s:max: %d %d\n", XCLOGMSG,
- icon_size[i].max_width, icon_size[i].max_height));
-
- PDC_LOG(("%s:inc: %d %d\n", XCLOGMSG,
- icon_size[i].width_inc, icon_size[i].height_inc));
- }
-
- if (max_width >= big_icon_width && max_height >= big_icon_height)
- {
- icon_bitmap_width = big_icon_width;
- icon_bitmap_height = big_icon_height;
- bitmap_bits = (unsigned char *)big_icon_bits;
- }
- else
- {
- icon_bitmap_width = little_icon_width;
- icon_bitmap_height = little_icon_height;
- bitmap_bits = (unsigned char *)little_icon_bits;
- }
-
- }
- else /* use small icon */
- {
- icon_bitmap_width = little_icon_width;
- icon_bitmap_height = little_icon_height;
- bitmap_bits = (unsigned char *)little_icon_bits;
- }
-
- XFree(icon_size);
-
-#ifdef HAVE_XPM_H
- if (xc_app_data.pixmap && xc_app_data.pixmap[0]) /* supplied pixmap */
- {
- XpmReadFileToPixmap(XtDisplay(topLevel),
- RootWindowOfScreen(XtScreen(topLevel)),
- (char *)xc_app_data.pixmap,
- &icon_pixmap, &icon_pixmap_mask, NULL);
- return;
- }
-#endif
-
- if (xc_app_data.bitmap && xc_app_data.bitmap[0]) /* supplied bitmap */
- {
- int x_hot = 0, y_hot = 0;
-
- rc = XReadBitmapFile(XtDisplay(topLevel),
- RootWindowOfScreen(XtScreen(topLevel)),
- (char *)xc_app_data.bitmap,
- &file_bitmap_width, &file_bitmap_height,
- &icon_bitmap, &x_hot, &y_hot);
-
- switch(rc)
- {
- case BitmapOpenFailed:
- fprintf(stderr, "bitmap file %s: not found\n",
- xc_app_data.bitmap);
- break;
- case BitmapFileInvalid:
- fprintf(stderr, "bitmap file %s: contents invalid\n",
- xc_app_data.bitmap);
- break;
- default:
- return;
- }
- }
-
- icon_bitmap = XCreateBitmapFromData(XtDisplay(topLevel),
- RootWindowOfScreen(XtScreen(topLevel)),
- (char *)bitmap_bits, icon_bitmap_width, icon_bitmap_height);
-}
-
-static void _draw_border(void)
-{
- /* Draw the border if required */
-
- if (xc_app_data.borderWidth)
- XDrawRectangle(XCURSESDISPLAY, XCURSESWIN, border_gc,
- xc_app_data.borderWidth / 2,
- xc_app_data.borderWidth / 2,
- window_width - xc_app_data.borderWidth,
- window_height - xc_app_data.borderWidth);
-}
-
-/* Redraw the entire screen */
-
-static void _display_screen(void)
-{
- int row;
-
- XC_LOG(("_display_screen() - called\n"));
-
- for (row = 0; row < XCursesLINES; row++)
- {
- XC_get_line_lock(row);
-
- _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row)),
- row, 0, COLS, FALSE);
-
- XC_release_line_lock(row);
- }
-
- _redraw_cursor();
- _draw_border();
-}
-
-/* Draw changed portions of the screen */
-
-static void _refresh_screen(void)
-{
- int row, start_col, num_cols;
-
- XC_LOG(("_refresh_screen() - called\n"));
-
- for (row = 0; row < XCursesLINES; row++)
- {
- num_cols = (int)*(Xcurscr + XCURSCR_LENGTH_OFF + row);
-
- if (num_cols)
- {
- XC_get_line_lock(row);
-
- start_col = (int)*(Xcurscr + XCURSCR_START_OFF + row);
-
- _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row) +
- (start_col * sizeof(chtype))), row, start_col,
- num_cols, FALSE);
-
- *(Xcurscr + XCURSCR_LENGTH_OFF + row) = 0;
-
- XC_release_line_lock(row);
- }
- }
-
- if (mouse_selection)
- _selection_off();
-}
-
-static void _handle_expose(Widget w, XtPointer client_data, XEvent *event,
- Boolean *unused)
-{
- XC_LOG(("_handle_expose() - called\n"));
-
- /* ignore all Exposes except last */
-
- if (event->xexpose.count)
- return;
-
- if (after_first_curses_request && received_map_notify)
- _display_screen();
-}
-
-static void _handle_nonmaskable(Widget w, XtPointer client_data, XEvent *event,
- Boolean *unused)
-{
- XClientMessageEvent *client_event = (XClientMessageEvent *)event;
-
- PDC_LOG(("%s:_handle_nonmaskable called: xc_otherpid %d event %d\n",
- XCLOGMSG, xc_otherpid, event->type));
-
- if (event->type == ClientMessage)
- {
- XC_LOG(("ClientMessage received\n"));
-
- /* This code used to include handling of WM_SAVE_YOURSELF, but
- it resulted in continual failure of THE on my Toshiba laptop.
- Removed on 3-3-2001. Now only exits on WM_DELETE_WINDOW. */
-
- if ((Atom)client_event->data.s[0] == wm_atom[0])
- _exit_process(0, SIGKILL, "");
- }
-}
-
-static void XCursesKeyPress(Widget w, XEvent *event, String *params,
- Cardinal *nparams)
-{
- enum { STATE_NORMAL, STATE_COMPOSE, STATE_CHAR };
-
-#ifdef PDC_XIM
- Status status;
- wchar_t buffer[120];
-#else
- unsigned char buffer[120];
- XComposeStatus compose;
- static int compose_state = STATE_NORMAL;
- static int compose_index = 0;
- int char_idx = 0;
-#endif
- unsigned long key = 0;
- int buflen = 40;
- int i, count;
- unsigned long modifier = 0;
- bool key_code = FALSE;
-
- XC_LOG(("XCursesKeyPress() - called\n"));
-
- /* Handle modifier keys first; ignore other KeyReleases */
-
- if (event->type == KeyRelease)
- {
- /* The keysym value was set by a previous call to this function
- with a KeyPress event (or reset by the mouse event handler) */
-
- if (SP->return_key_modifiers &&
-#ifndef PDC_XIM
- keysym != compose_key &&
-#endif
- IsModifierKey(keysym))
- {
- switch (keysym) {
- case XK_Shift_L:
- key = KEY_SHIFT_L;
- break;
- case XK_Shift_R:
- key = KEY_SHIFT_R;
- break;
- case XK_Control_L:
- key = KEY_CONTROL_L;
- break;
- case XK_Control_R:
- key = KEY_CONTROL_R;
- break;
- case XK_Alt_L:
- key = KEY_ALT_L;
- break;
- case XK_Alt_R:
- key = KEY_ALT_R;
- }
-
- if (key)
- _send_key_to_curses(key, NULL, TRUE);
- }
-
- return;
- }
-
- buffer[0] = '\0';
-
-#ifdef PDC_XIM
- count = XwcLookupString(Xic, &(event->xkey), buffer, buflen,
- &keysym, &status);
-#else
- count = XLookupString(&(event->xkey), (char *)buffer, buflen,
- &keysym, &compose);
-#endif
-
- /* translate keysym into curses key code */
-
- PDC_LOG(("%s:Key mask: %x\n", XCLOGMSG, event->xkey.state));
-
-#ifdef PDCDEBUG
- for (i = 0; i < 4; i++)
- PDC_debug("%s:Keysym %x %d\n", XCLOGMSG,
- XKeycodeToKeysym(XCURSESDISPLAY, event->xkey.keycode, i), i);
-#endif
-
-#ifndef PDC_XIM
-
- /* Check if the key just pressed is the user-specified compose
- key; if it is, set the compose state and exit. */
-
- if (keysym == compose_key)
- {
- chtype *ch;
- int xpos, ypos, save_visibility = SP->visibility;
- short fore = 0, back = 0;
-
- /* Change the shape of the cursor to an outline rectangle to
- indicate we are in "compose" status */
-
- SP->visibility = 0;
-
- _redraw_cursor();
-
- SP->visibility = save_visibility;
- _make_xy(SP->curscol, SP->cursrow, &xpos, &ypos);
-
- ch = (chtype *)(Xcurscr + XCURSCR_Y_OFF(SP->cursrow) +
- (SP->curscol * sizeof(chtype)));
-
- _set_cursor_color(ch, &fore, &back);
-
- XSetForeground(XCURSESDISPLAY, rect_cursor_gc, colors[back]);
-
- XDrawRectangle(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc,
- xpos + 1, ypos - font_height +
- xc_app_data.normalFont->descent + 1,
- font_width - 2, font_height - 2);
-
- compose_state = STATE_COMPOSE;
- return;
- }
-
- switch (compose_state)
- {
- case STATE_COMPOSE:
- if (IsModifierKey(keysym))
- return;
-
- if (event->xkey.state & compose_mask)
- {
- compose_state = STATE_NORMAL;
- _redraw_cursor();
- break;
- }
-
- if (buffer[0] && count == 1)
- key = buffer[0];
-
- compose_index = -1;
-
- for (i = 0; i < (int)strlen(compose_chars); i++)
- if (compose_chars[i] == key)
- {
- compose_index = i;
- break;
- }
-
- if (compose_index == -1)
- {
- compose_state = STATE_NORMAL;
- compose_index = 0;
- _redraw_cursor();
- break;
- }
-
- compose_state = STATE_CHAR;
- return;
-
- case STATE_CHAR:
- if (IsModifierKey(keysym))
- return;
-
- if (event->xkey.state & compose_mask)
- {
- compose_state = STATE_NORMAL;
- _redraw_cursor();
- break;
- }
-
- if (buffer[0] && count == 1)
- key = buffer[0];
-
- char_idx = -1;
-
- for (i = 0; i < MAX_COMPOSE_CHARS; i++)
- if (compose_lookups[compose_index][i] == key)
- {
- char_idx = i;
- break;
- }
-
- if (char_idx == -1)
- {
- compose_state = STATE_NORMAL;
- compose_index = 0;
- _redraw_cursor();
- break;
- }
-
- _send_key_to_curses(compose_keys[compose_index][char_idx],
- NULL, FALSE);
-
- compose_state = STATE_NORMAL;
- compose_index = 0;
-
- _redraw_cursor();
-
- return;
- }
-
-#endif /* PDC_XIM */
-
- /* To get here we are procesing "normal" keys */
-
- PDC_LOG(("%s:Keysym %x %d\n", XCLOGMSG,
- XKeycodeToKeysym(XCURSESDISPLAY, event->xkey.keycode, key), key));
-
- if (SP->save_key_modifiers)
- {
- /* 0x10: usually, numlock modifier */
-
- if (event->xkey.state & Mod2Mask)
- modifier |= PDC_KEY_MODIFIER_NUMLOCK;
-
- /* 0x01: shift modifier */
-
- if (event->xkey.state & ShiftMask)
- modifier |= PDC_KEY_MODIFIER_SHIFT;
-
- /* 0x04: control modifier */
-
- if (event->xkey.state & ControlMask)
- modifier |= PDC_KEY_MODIFIER_CONTROL;
-
- /* 0x08: usually, alt modifier */
-
- if (event->xkey.state & Mod1Mask)
- modifier |= PDC_KEY_MODIFIER_ALT;
- }
-
- for (i = 0; key_table[i].keycode; i++)
- {
- if (key_table[i].keycode == keysym)
- {
- PDC_LOG(("%s:State %x\n", XCLOGMSG, event->xkey.state));
-
- /* ControlMask: 0x04: control modifier
- Mod1Mask: 0x08: usually, alt modifier
- Mod2Mask: 0x10: usually, numlock modifier
- ShiftMask: 0x01: shift modifier */
-
- if ((event->xkey.state & ShiftMask) ||
- (key_table[i].numkeypad &&
- (event->xkey.state & Mod2Mask)))
- {
- key = key_table[i].shifted;
- }
- else if (event->xkey.state & ControlMask)
- {
- key = key_table[i].control;
- }
- else if (event->xkey.state & Mod1Mask)
- {
- key = key_table[i].alt;
- }
-
- /* To get here, we ignore all other modifiers */
-
- else
- key = key_table[i].normal;
-
- key_code = (key > 0x100);
- break;
- }
- }
-
- if (!key && buffer[0] && count == 1)
- key = buffer[0];
-
- PDC_LOG(("%s:Key: %s pressed - %x Mod: %x\n", XCLOGMSG,
- XKeysymToString(keysym), key, event->xkey.state));
-
- /* Handle ALT letters and numbers */
-
- if (event->xkey.state == Mod1Mask)
- {
- if (key >= 'A' && key <= 'Z')
- {
- key += ALT_A - 'A';
- key_code = TRUE;
- }
-
- if (key >= 'a' && key <= 'z')
- {
- key += ALT_A - 'a';
- key_code = TRUE;
- }
-
- if (key >= '0' && key <= '9')
- {
- key += ALT_0 - '0';
- key_code = TRUE;
- }
- }
-
- /* After all that, send the key back to the application if is
- NOT zero. */
-
- if (key)
- {
- key |= (modifier << 24);
-
- _send_key_to_curses(key, NULL, key_code);
- }
-}
-
-static void XCursesHandleString(Widget w, XEvent *event, String *params,
- Cardinal *nparams)
-{
- unsigned char *ptr;
-
- if (*nparams != 1)
- return;
-
- ptr = (unsigned char *)*params;
-
- if (ptr[0] == '0' && ptr[1] == 'x' && ptr[2] != '\0')
- {
- unsigned char c;
- unsigned long total = 0;
-
- for (ptr += 2; (c = tolower(*ptr)); ptr++)
- {
- total <<= 4;
-
- if (c >= '0' && c <= '9')
- total += c - '0';
- else
- if (c >= 'a' && c <= 'f')
- total += c - ('a' - 10);
- else
- break;
- }
-
- if (c == '\0')
- _send_key_to_curses(total, NULL, FALSE);
- }
- else
- for (; *ptr; ptr++)
- _send_key_to_curses((unsigned long)*ptr, NULL, FALSE);
-}
-
-static void _paste_string(Widget w, XtPointer data, Atom *selection, Atom *type,
- XtPointer value, unsigned long *length, int *format)
-{
- unsigned long i, key;
- unsigned char *string = value;
-
- XC_LOG(("_paste_string() - called\n"));
-
- if (!*type || !*length || !string)
- return;
-
- for (i = 0; string[i] && (i < (*length)); i++)
- {
- key = string[i];
-
- if (key == 10) /* new line - convert to ^M */
- key = 13;
-
- _send_key_to_curses(key, NULL, FALSE);
- }
-
- XtFree(value);
-}
-
-static void _paste_utf8(Widget w, XtPointer event, Atom *selection, Atom *type,
- XtPointer value, unsigned long *length, int *format)
-{
- wchar_t key;
- size_t i = 0, len;
- char *string = value;
-
- XC_LOG(("_paste_utf8() - called\n"));
-
- if (!*type || !*length)
- {
- XtGetSelectionValue(w, XA_PRIMARY, XA_STRING, _paste_string,
- event, ((XButtonEvent *)event)->time);
- return;
- }
-
- len = *length;
-
- if (!string)
- return;
-
- while (string[i] && (i < len))
- {
- int retval = _from_utf8(&key, string + i, len - i);
-
- if (retval < 1)
- return;
-
- if (key == 10) /* new line - convert to ^M */
- key = 13;
-
- _send_key_to_curses(key, NULL, FALSE);
-
- i += retval;
- }
-
- XtFree(value);
-}
-
-static void XCursesPasteSelection(Widget w, XButtonEvent *button_event)
-{
- XC_LOG(("XCursesPasteSelection() - called\n"));
-
- XtGetSelectionValue(w, XA_PRIMARY, XA_UTF8_STRING(XtDisplay(w)),
- _paste_utf8, (XtPointer)button_event,
- button_event->time);
-}
-
-static Boolean _convert_proc(Widget w, Atom *selection, Atom *target,
- Atom *type_return, XtPointer *value_return,
- unsigned long *length_return, int *format_return)
-{
- XC_LOG(("_convert_proc() - called\n"));
-
- if (*target == XA_TARGETS(XtDisplay(topLevel)))
- {
- XSelectionRequestEvent *req = XtGetSelectionRequest(w,
- *selection, (XtRequestId)NULL);
-
- Atom *targetP;
- XPointer std_targets;
- unsigned long std_length;
-
- XmuConvertStandardSelection(topLevel, req->time, selection,
- target, type_return, &std_targets,
- &std_length, format_return);
-
- *length_return = std_length + 2;
- *value_return = XtMalloc(sizeof(Atom) * (*length_return));
-
- targetP = *(Atom**)value_return;
- *targetP++ = XA_STRING;
- *targetP++ = XA_UTF8_STRING(XtDisplay(topLevel));
-
- memmove((void *)targetP, (const void *)std_targets,
- sizeof(Atom) * std_length);
-
- XtFree((char *)std_targets);
- *type_return = XA_ATOM;
- *format_return = sizeof(Atom) * 8;
-
- return True;
- }
- else if (*target == XA_UTF8_STRING(XtDisplay(topLevel)) ||
- *target == XA_STRING)
- {
- bool utf8 = !(*target == XA_STRING);
- char *data = XtMalloc(tmpsel_length * 3 + 1);
- chtype *tmp = tmpsel;
- int ret_length = 0;
-
- if (utf8)
- {
- while (*tmp)
- ret_length += _to_utf8(data + ret_length, *tmp++);
- }
- else
- while (*tmp)
- data[ret_length++] = *tmp++ & 0xff;
-
- data[ret_length++] = '\0';
-
- *value_return = data;
- *length_return = ret_length;
- *format_return = 8;
- *type_return = *target;
-
- return True;
- }
- else
- return XmuConvertStandardSelection(topLevel, CurrentTime,
- selection, target, type_return, (XPointer*)value_return,
- length_return, format_return);
-}
-
-static void _lose_ownership(Widget w, Atom *type)
-{
- XC_LOG(("_lose_ownership() - called\n"));
-
- if (tmpsel)
- free(tmpsel);
-
- tmpsel = NULL;
- tmpsel_length = 0;
- _selection_off();
-}
-
-static void _show_selection(int start_x, int start_y, int end_x, int end_y,
- bool highlight)
-{
- int i, num_cols, start_col, row;
-
- PDC_LOG(("%s:_show_selection() - called StartX: %d StartY: %d "
- "EndX: %d EndY: %d Highlight: %d\n", XCLOGMSG,
- start_x, start_y, end_x, end_y, highlight));
-
- for (i = 0; i < end_y - start_y + 1; i++)
- {
- if (start_y == end_y) /* only one line */
- {
- start_col = start_x;
- num_cols = end_x - start_x + 1;
- row = start_y;
- }
- else if (!i) /* first line */
- {
- start_col = start_x;
- num_cols = COLS - start_x;
- row = start_y;
- }
- else if (start_y + i == end_y) /* last line */
- {
- start_col = 0;
- num_cols = end_x + 1;
- row = end_y;
- }
- else /* full line */
- {
- start_col = 0;
- num_cols = COLS;
- row = start_y + i;
- }
-
- XC_get_line_lock(row);
-
- _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row) +
- (start_col * sizeof(chtype))), row, start_col,
- num_cols, highlight);
-
- XC_release_line_lock(row);
- }
-}
-
-static void _selection_off(void)
-{
- XC_LOG(("_selection_off() - called\n"));
-
- _display_screen();
-
- selection_start_x = selection_start_y = selection_end_x =
- selection_end_y = 0;
-
- mouse_selection = FALSE;
-}
-
-static void _selection_on(int x, int y)
-{
- XC_LOG(("_selection_on() - called\n"));
-
- selection_start_x = selection_end_x = x;
- selection_start_y = selection_end_y = y;
-}
-
-static void _selection_extend(int x, int y)
-{
- int temp, current_start, current_end, current_start_x,
- current_end_x, current_start_y, current_end_y, new_start,
- new_end, new_start_x, new_end_x, new_start_y, new_end_y;
-
- XC_LOG(("_selection_extend() - called\n"));
-
- mouse_selection = TRUE;
-
- /* convert x/y coordinates into start/stop */
-
- current_start = (selection_start_y * COLS) + selection_start_x;
- current_end = (selection_end_y * COLS) + selection_end_x;
-
- if (current_start > current_end)
- {
- current_start_x = selection_end_x;
- current_start_y = selection_end_y;
- current_end_x = selection_start_x;
- current_end_y = selection_start_y;
- temp = current_start;
- current_start = current_end;
- current_end = temp;
- }
- else
- {
- current_end_x = selection_end_x;
- current_end_y = selection_end_y;
- current_start_x = selection_start_x;
- current_start_y = selection_start_y;
- }
-
- /* Now we have the current selection as a linear expression.
- Convert the new position to a linear expression. */
-
- selection_end_x = x;
- selection_end_y = y;
-
- /* convert x/y coordinates into start/stop */
-
- new_start = (selection_start_y * COLS) + selection_start_x;
- new_end = (selection_end_y * COLS) + selection_end_x;
-
- if (new_start > new_end)
- {
- new_start_x = selection_end_x;
- new_start_y = selection_end_y;
- new_end_x = selection_start_x;
- new_end_y = selection_start_y;
- temp = new_start;
- new_start = new_end;
- new_end = temp;
- }
- else
- {
- new_end_x = selection_end_x;
- new_end_y = selection_end_y;
- new_start_x = selection_start_x;
- new_start_y = selection_start_y;
- }
-
- if (new_end > current_end)
- _show_selection(current_end_x, current_end_y, new_end_x,
- new_end_y, TRUE);
- else if (new_end < current_end)
- _show_selection(new_end_x, new_end_y, current_end_x,
- current_end_y, FALSE);
- else if (new_start < current_start)
- _show_selection(new_start_x, new_start_y, current_start_x,
- current_start_y, TRUE);
- else if (new_start > current_start)
- _show_selection(current_start_x, current_start_y,
- new_start_x, new_start_y, FALSE);
- else
- _show_selection(current_start_x, current_start_y,
- new_start_x, new_start_y, TRUE);
-}
-
-static void _selection_set(void)
-{
- int i, j, start, end, start_x, end_x, start_y, end_y, num_cols,
- start_col, row, num_chars, ch, last_nonblank, length, newlen;
- chtype *ptr = NULL;
-
- XC_LOG(("_selection_set() - called\n"));
-
- /* convert x/y coordinates into start/stop */
-
- start = (selection_start_y * COLS) + selection_start_x;
- end = (selection_end_y * COLS) + selection_end_x;
-
- if (start == end)
- {
- if (tmpsel)
- free(tmpsel);
-
- tmpsel = NULL;
- tmpsel_length = 0;
-
- return;
- }
-
- if (start > end)
- {
- start_x = selection_end_x;
- start_y = selection_end_y;
- end_x = selection_start_x;
- end_y = selection_start_y;
- length = start - end + 1;
- }
- else
- {
- end_x = selection_end_x;
- end_y = selection_end_y;
- start_x = selection_start_x;
- start_y = selection_start_y;
- length = end - start + 1;
- }
-
- newlen = length + end_y - start_y + 2;
-
- if (length > (int)tmpsel_length)
- {
- if (!tmpsel_length)
- tmpsel = malloc(newlen * sizeof(chtype));
- else
- tmpsel = realloc(tmpsel, newlen * sizeof(chtype));
- }
-
- if (!tmpsel)
- {
- tmpsel_length = 0;
- return;
- }
-
- tmpsel_length = length;
- num_chars = 0;
-
- for (i = 0; i < end_y - start_y + 1; i++)
- {
-
- if (start_y == end_y) /* only one line */
- {
- start_col = start_x;
- num_cols = end_x - start_x + 1;
- row = start_y;
- }
- else if (!i) /* first line */
- {
- start_col = start_x;
- num_cols = COLS - start_x;
- row = start_y;
- }
- else if (start_y + i == end_y) /* last line */
- {
- start_col = 0;
- num_cols = end_x + 1;
- row = end_y;
- }
- else /* full line */
- {
- start_col = 0;
- num_cols = COLS;
- row = start_y + i;
- }
-
- XC_get_line_lock(row);
-
- ptr = (chtype *)(Xcurscr + XCURSCR_Y_OFF(row) +
- start_col * sizeof(chtype));
-
- if (i < end_y - start_y)
- {
- last_nonblank = 0;
-
- for (j = 0; j < num_cols; j++)
- {
- ch = (int)(ptr[j] & A_CHARTEXT);
- if (ch != (int)' ')
- last_nonblank = j;
- }
- }
- else
- last_nonblank = num_cols - 1;
-
- for (j = 0; j <= last_nonblank; j++)
- tmpsel[num_chars++] = ptr[j];
-
- XC_release_line_lock(row);
-
- if (i < end_y - start_y)
- tmpsel[num_chars++] = '\n';
- }
-
- tmpsel[num_chars] = '\0';
- tmpsel_length = num_chars;
-}
-
-static void _display_cursor(int old_row, int old_x, int new_row, int new_x)
-{
- int xpos, ypos, i;
- chtype *ch;
- short fore = 0, back = 0;
-
- PDC_LOG(("%s:_display_cursor() - draw char at row: %d col %d\n",
- XCLOGMSG, old_row, old_x));
-
- /* if the cursor position is outside the boundary of the screen,
- ignore the request */
-
- if (old_row >= XCursesLINES || old_x >= COLS ||
- new_row >= XCursesLINES || new_x >= COLS)
- return;
-
- /* display the character at the current cursor position */
-
- PDC_LOG(("%s:_display_cursor() - draw char at row: %d col %d\n",
- XCLOGMSG, old_row, old_x));
-
- _display_text((const chtype *)(Xcurscr + (XCURSCR_Y_OFF(old_row) +
- (old_x * sizeof(chtype)))), old_row, old_x, 1, FALSE);
-
- /* display the cursor at the new cursor position */
-
- if (!SP->visibility)
- return; /* cursor not displayed, no more to do */
-
- _make_xy(new_x, new_row, &xpos, &ypos);
-
- ch = (chtype *)(Xcurscr + XCURSCR_Y_OFF(new_row) + new_x * sizeof(chtype));
-
- _set_cursor_color(ch, &fore, &back);
-
- if (vertical_cursor)
- {
- XSetForeground(XCURSESDISPLAY, rect_cursor_gc, colors[back]);
-
- for (i = 1; i <= SP->visibility; i++)
- XDrawLine(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc,
- xpos + i, ypos - xc_app_data.normalFont->ascent,
- xpos + i, ypos - xc_app_data.normalFont->ascent +
- font_height - 1);
- }
- else
- {
- if (SP->visibility == 1)
- {
- /* cursor visibility normal */
-
- XSetForeground(XCURSESDISPLAY, rect_cursor_gc, colors[back]);
-
- for (i = 0; i < xc_app_data.normalFont->descent + 2; i++)
- XDrawLine(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc,
- xpos, ypos - 2 + i, xpos + font_width, ypos - 2 + i);
- }
- else
- {
- /* cursor visibility high */
-#ifdef PDC_WIDE
- XChar2b buf[2];
-
- buf[0].byte1 = (*ch & 0xff00) >> 8;
- buf[0].byte2 = *ch & 0x00ff;
-
- buf[1].byte1 = buf[1].byte2 = 0;
-#else
- char buf[2];
-
- buf[0] = *ch & 0xff;
- buf[1] = '\0';
-#endif
- XSetForeground(XCURSESDISPLAY, block_cursor_gc, colors[fore]);
- XSetBackground(XCURSESDISPLAY, block_cursor_gc, colors[back]);
-#ifdef PDC_WIDE
- XDrawImageString16(
-#else
- XDrawImageString(
-#endif
- XCURSESDISPLAY, XCURSESWIN, block_cursor_gc,
- xpos, ypos, buf, 1);
- }
- }
-
- PDC_LOG(("%s:_display_cursor() - draw cursor at row %d col %d\n",
- XCLOGMSG, new_row, new_x));
-}
-
-static void _redraw_cursor(void)
-{
- _display_cursor(SP->cursrow, SP->curscol, SP->cursrow, SP->curscol);
-}
-
-static void _handle_enter_leave(Widget w, XtPointer client_data,
- XEvent *event, Boolean *unused)
-{
- XC_LOG(("_handle_enter_leave called\n"));
-
- switch(event->type)
- {
- case EnterNotify:
- XC_LOG(("EnterNotify received\n"));
-
- window_entered = TRUE;
- break;
-
- case LeaveNotify:
- XC_LOG(("LeaveNotify received\n"));
-
- window_entered = FALSE;
-
- /* Display the cursor so it stays on while the window is
- not current */
-
- _redraw_cursor();
- break;
-
- default:
- PDC_LOG(("%s:_handle_enter_leave - unknown event %d\n",
- XCLOGMSG, event->type));
- }
-}
-
-static void _send_key_to_curses(unsigned long key, MOUSE_STATUS *ms,
- bool key_code)
-{
- PDC_LOG(("%s:_send_key_to_curses() - called: sending %d\n",
- XCLOGMSG, key));
-
- SP->key_code = key_code;
-
- if (XC_write_socket(xc_key_sock, &key, sizeof(unsigned long)) < 0)
- _exit_process(1, SIGKILL, "exiting from _send_key_to_curses");
-
- if (ms)
- {
- MOUSE_LOG(("%s:writing mouse stuff\n", XCLOGMSG));
-
- if (XC_write_socket(xc_key_sock, ms, sizeof(MOUSE_STATUS)) < 0)
- _exit_process(1, SIGKILL, "exiting from _send_key_to_curses");
- }
-}
-
-static void _blink_cursor(XtPointer unused, XtIntervalId *id)
-{
- XC_LOG(("_blink_cursor() - called:\n"));
-
- if (window_entered)
- {
- if (visible_cursor)
- {
- /* Cursor currently ON, turn it off */
-
- int save_visibility = SP->visibility;
- SP->visibility = 0;
- _redraw_cursor();
- SP->visibility = save_visibility;
- visible_cursor = FALSE;
- }
- else
- {
- /* Cursor currently OFF, turn it on */
-
- _redraw_cursor();
- visible_cursor = TRUE;
- }
- }
-
- XtAppAddTimeOut(app_context, xc_app_data.cursorBlinkRate,
- _blink_cursor, NULL);
-}
-
-static void XCursesButton(Widget w, XEvent *event, String *params,
- Cardinal *nparams)
-{
- int button_no;
- static int last_button_no = 0;
- static Time last_button_press_time = 0;
- MOUSE_STATUS save_mouse_status;
- bool send_key = TRUE;
- static bool remove_release;
- static bool handle_real_release;
-
- XC_LOG(("XCursesButton() - called\n"));
-
- keysym = 0; /* suppress any modifier key return */
-
- save_mouse_status = Mouse_status;
- button_no = event->xbutton.button;
-
- /* It appears that under X11R6 (at least on Linux), that an
- event_type of ButtonMotion does not include the mouse button in
- the event. The following code is designed to cater for this
- situation. */
-
- if (!button_no)
- button_no = last_button_no;
-
- last_button_no = button_no;
-
- Mouse_status.changes = 0;
-
- switch(event->type)
- {
- case ButtonPress:
- /* Handle button 4 and 5, which are normally mapped to the wheel
- mouse scroll up and down */
-
- if (button_no == 4 || button_no == 5)
- {
- /* Send the KEY_MOUSE to curses program */
-
- memset(&Mouse_status, 0, sizeof(Mouse_status));
-
- Mouse_status.changes = (button_no == 5) ?
- PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP;
-
- MOUSE_X_POS = MOUSE_Y_POS = -1;
- _send_key_to_curses(KEY_MOUSE, &Mouse_status, TRUE);
- remove_release = TRUE;
-
- return;
- }
-
- if (button_no == 2 &&
- (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
- {
- XCursesPasteSelection(drawing, (XButtonEvent *)event);
- remove_release = TRUE;
-
- return;
- }
-
- remove_release = False;
- handle_real_release = False;
-
- MOUSE_LOG(("\nButtonPress\n"));
-
- if ((event->xbutton.time - last_button_press_time) <
- xc_app_data.doubleClickPeriod)
- {
- MOUSE_X_POS = save_mouse_status.x;
- MOUSE_Y_POS = save_mouse_status.y;
- BUTTON_STATUS(button_no) = BUTTON_DOUBLE_CLICKED;
-
- _selection_off();
- remove_release = True;
- }
- else
- {
- napms(SP->mouse_wait);
- event->type = ButtonRelease;
- XSendEvent(event->xbutton.display, event->xbutton.window,
- True, 0, event);
- last_button_press_time = event->xbutton.time;
-
- return;
- }
-
- last_button_press_time = event->xbutton.time;
- break;
-
- case MotionNotify:
- MOUSE_LOG(("\nMotionNotify: y: %d x: %d Width: %d "
- "Height: %d\n", event->xbutton.y, event->xbutton.x,
- font_width, font_height));
-
- MOUSE_X_POS = (event->xbutton.x - xc_app_data.borderWidth) /
- font_width;
- MOUSE_Y_POS = (event->xbutton.y - xc_app_data.borderWidth) /
- font_height;
-
- if (button_no == 1 &&
- (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
- {
- _selection_extend(MOUSE_X_POS, MOUSE_Y_POS);
- send_key = FALSE;
- }
- else
- _selection_off();
-
- /* Throw away mouse movements if they are in the same character
- position as the last mouse event, or if we are currently in
- the middle of a double click event. */
-
- if ((MOUSE_X_POS == save_mouse_status.x &&
- MOUSE_Y_POS == save_mouse_status.y) ||
- save_mouse_status.button[button_no - 1] == BUTTON_DOUBLE_CLICKED)
- {
- send_key = FALSE;
- break;
- }
-
- Mouse_status.changes |= PDC_MOUSE_MOVED;
- break;
-
- case ButtonRelease:
- if (remove_release)
- {
- MOUSE_LOG(("Release at: %ld - removed\n", event->xbutton.time));
- return;
- }
- else
- {
- MOUSE_X_POS = (event->xbutton.x - xc_app_data.borderWidth) /
- font_width;
- MOUSE_Y_POS = (event->xbutton.y - xc_app_data.borderWidth) /
- font_height;
-
- if (!handle_real_release)
- {
- if ((event->xbutton.time - last_button_press_time) <
- SP->mouse_wait &&
- (event->xbutton.time != last_button_press_time))
- {
- /* The "real" release was shorter than usleep() time;
- therefore generate a click event */
-
- MOUSE_LOG(("Release at: %ld - click\n",
- event->xbutton.time));
-
- BUTTON_STATUS(button_no) = BUTTON_CLICKED;
-
- if (button_no == 1 && mouse_selection &&
- (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
- {
- send_key = FALSE;
-
- if (XtOwnSelection(topLevel, XA_PRIMARY,
- event->xbutton.time, _convert_proc,
- _lose_ownership, NULL) == False)
- _selection_off();
- }
- else
- _selection_off();
-
- /* Ensure the "pseudo" release event is ignored */
-
- remove_release = True;
- handle_real_release = False;
- break;
- }
- else
- {
- /* Button release longer than usleep() time;
- therefore generate a press and wait for the real
- release to occur later. */
-
- MOUSE_LOG(("Generated Release at: %ld - "
- "press & release\n", event->xbutton.time));
-
- BUTTON_STATUS(button_no) = BUTTON_PRESSED;
-
- if (button_no == 1 &&
- (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
- {
- _selection_off();
- _selection_on(MOUSE_X_POS, MOUSE_Y_POS);
- }
-
- handle_real_release = True;
- break;
- }
- }
- else
- {
- MOUSE_LOG(("Release at: %ld - released\n",
- event->xbutton.time));
- }
- }
-
- MOUSE_LOG(("\nButtonRelease\n"));
-
- BUTTON_STATUS(button_no) = BUTTON_RELEASED;
-
- if (button_no == 1 && mouse_selection &&
- (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
- {
- send_key = FALSE;
-
- if (XtOwnSelection(topLevel, XA_PRIMARY,
- event->xbutton.time, _convert_proc,
- _lose_ownership, NULL) == False)
- _selection_off();
-
- _selection_set();
- }
- else
- _selection_off();
-
- break;
- }
-
- /* Set up the mouse status fields in preparation for sending */
-
- Mouse_status.changes |= 1 << (button_no - 1);
-
- if (Mouse_status.changes & PDC_MOUSE_MOVED &&
- BUTTON_STATUS(button_no) == BUTTON_PRESSED)
- BUTTON_STATUS(button_no) = BUTTON_MOVED;
-
- if (event->xbutton.state & ShiftMask)
- BUTTON_STATUS(button_no) |= BUTTON_SHIFT;
- if (event->xbutton.state & ControlMask)
- BUTTON_STATUS(button_no) |= BUTTON_CONTROL;
- if (event->xbutton.state & Mod1Mask)
- BUTTON_STATUS(button_no) |= BUTTON_ALT;
-
- /* If we are ignoring the event, or the mouse position is outside
- the bounds of the screen (because of the border), return here */
-
- MOUSE_LOG(("Button: %d x: %d y: %d Button status: %x "
- "Mouse status: %x\n", button_no, MOUSE_X_POS, MOUSE_Y_POS,
- BUTTON_STATUS(button_no), Mouse_status.changes));
-
- MOUSE_LOG(("Send: %d Button1: %x Button2: %x Button3: %x %d %d\n",
- send_key, BUTTON_STATUS(1), BUTTON_STATUS(2),
- BUTTON_STATUS(3), XCursesLINES, XCursesCOLS));
-
- if (!send_key || MOUSE_X_POS < 0 || MOUSE_X_POS >= XCursesCOLS ||
- MOUSE_Y_POS < 0 || MOUSE_Y_POS >= XCursesLINES)
- return;
-
- /* Send the KEY_MOUSE to curses program */
-
- _send_key_to_curses(KEY_MOUSE, &Mouse_status, TRUE);
-}
-
-static void _scroll_up_down(Widget w, XtPointer client_data,
- XtPointer call_data)
-{
- int pixels = (long) call_data;
- int total_y = SP->sb_total_y * font_height;
- int viewport_y = SP->sb_viewport_y * font_height;
- int cur_y = SP->sb_cur_y * font_height;
-
- /* When pixels is negative, right button pressed, move data down,
- thumb moves up. Otherwise, left button pressed, pixels positive,
- move data up, thumb down. */
-
- cur_y += pixels;
-
- /* limit panning to size of overall */
-
- if (cur_y < 0)
- cur_y = 0;
- else
- if (cur_y > (total_y - viewport_y))
- cur_y = total_y - viewport_y;
-
- SP->sb_cur_y = cur_y / font_height;
-
- XawScrollbarSetThumb(w, (double)((double)cur_y / (double)total_y),
- (double)((double)viewport_y / (double)total_y));
-
- /* Send a key: if pixels negative, send KEY_SCROLL_DOWN */
-
- _send_key_to_curses(KEY_SF, NULL, TRUE);
-}
-
-static void _scroll_left_right(Widget w, XtPointer client_data,
- XtPointer call_data)
-{
- int pixels = (long) call_data;
- int total_x = SP->sb_total_x * font_width;
- int viewport_x = SP->sb_viewport_x * font_width;
- int cur_x = SP->sb_cur_x * font_width;
-
- cur_x += pixels;
-
- /* limit panning to size of overall */
-
- if (cur_x < 0)
- cur_x = 0;
- else
- if (cur_x > (total_x - viewport_x))
- cur_x = total_x - viewport_x;
-
- SP->sb_cur_x = cur_x / font_width;
-
- XawScrollbarSetThumb(w, (double)((double)cur_x / (double)total_x),
- (double)((double)viewport_x / (double)total_x));
-
- _send_key_to_curses(KEY_SR, NULL, TRUE);
-}
-
-static void _thumb_up_down(Widget w, XtPointer client_data,
- XtPointer call_data)
-{
- double percent = *(double *) call_data;
- double total_y = (double)SP->sb_total_y;
- double viewport_y = (double)SP->sb_viewport_y;
- int cur_y = SP->sb_cur_y;
-
- /* If the size of the viewport is > overall area simply return,
- as no scrolling is permitted. */
-
- if (SP->sb_viewport_y >= SP->sb_total_y)
- return;
-
- if ((SP->sb_cur_y = (int)((double)total_y * percent)) >=
- (total_y - viewport_y))
- SP->sb_cur_y = total_y - viewport_y;
-
- XawScrollbarSetThumb(w, (double)(cur_y / total_y),
- (double)(viewport_y / total_y));
-
- _send_key_to_curses(KEY_SF, NULL, TRUE);
-}
-
-static void _thumb_left_right(Widget w, XtPointer client_data,
- XtPointer call_data)
-{
- double percent = *(double *) call_data;
- double total_x = (double)SP->sb_total_x;
- double viewport_x = (double)SP->sb_viewport_x;
- int cur_x = SP->sb_cur_x;
-
- if (SP->sb_viewport_x >= SP->sb_total_x)
- return;
-
- if ((SP->sb_cur_x = (int)((float)total_x * percent)) >=
- (total_x - viewport_x))
- SP->sb_cur_x = total_x - viewport_x;
-
- XawScrollbarSetThumb(w, (double)(cur_x / total_x),
- (double)(viewport_x / total_x));
-
- _send_key_to_curses(KEY_SR, NULL, TRUE);
-}
-
-static void _exit_process(int rc, int sig, char *msg)
-{
- if (rc || sig)
- fprintf(stderr, "%s:_exit_process() - called: rc:%d sig:%d <%s>\n",
- XCLOGMSG, rc, sig, msg);
-
- shmdt((char *)SP);
- shmdt((char *)Xcurscr);
- shmctl(shmidSP, IPC_RMID, 0);
- shmctl(shmid_Xcurscr, IPC_RMID, 0);
-
- if (bitmap_file)
- {
- XFreePixmap(XCURSESDISPLAY, icon_bitmap);
- free(bitmap_file);
- }
-
-#ifdef HAVE_XPM_H
- if (pixmap_file)
- {
- XFreePixmap(XCURSESDISPLAY, icon_pixmap);
- XFreePixmap(XCURSESDISPLAY, icon_pixmap_mask);
- free(pixmap_file);
- }
-#endif
- XFreeGC(XCURSESDISPLAY, normal_gc);
- XFreeGC(XCURSESDISPLAY, italic_gc);
- XFreeGC(XCURSESDISPLAY, block_cursor_gc);
- XFreeGC(XCURSESDISPLAY, rect_cursor_gc);
- XFreeGC(XCURSESDISPLAY, border_gc);
-#ifdef PDC_XIM
- XDestroyIC(Xic);
-#endif
-
- shutdown(xc_display_sock, 2);
- close(xc_display_sock);
-
- shutdown(xc_exit_sock, 2);
- close(xc_exit_sock);
-
- shutdown(xc_key_sock, 2);
- close(xc_key_sock);
-
- if (sig)
- kill(xc_otherpid, sig); /* to kill parent process */
-
- _exit(rc);
-}
-
-static void _resize(void)
-{
- short save_atrtab[PDC_COLOR_PAIRS * 2];
-
- after_first_curses_request = FALSE;
-
- SP->lines = XCursesLINES = ((resize_window_height -
- (2 * xc_app_data.borderWidth)) / font_height);
-
- LINES = XCursesLINES - SP->linesrippedoff - SP->slklines;
-
- SP->cols = COLS = XCursesCOLS = ((resize_window_width -
- (2 * xc_app_data.borderWidth)) / font_width);
-
- window_width = resize_window_width;
- window_height = resize_window_height;
- visible_cursor = TRUE;
-
- _draw_border();
-
- /* Detach and drop the current shared memory segment and create and
- attach to a new segment */
-
- memcpy(save_atrtab, xc_atrtab, sizeof(save_atrtab));
-
- SP->XcurscrSize = XCURSCR_SIZE;
- shmdt((char *)Xcurscr);
- shmctl(shmid_Xcurscr, IPC_RMID, 0);
-
- if ((shmid_Xcurscr = shmget(shmkey_Xcurscr,
- SP->XcurscrSize + XCURSESSHMMIN, 0700 | IPC_CREAT)) < 0)
- {
- perror("Cannot allocate shared memory for curscr");
-
- _exit_process(4, SIGKILL, "exiting from _process_curses_requests");
- }
-
- Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0);
- memset(Xcurscr, 0, SP->XcurscrSize);
- xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
- memcpy(xc_atrtab, save_atrtab, sizeof(save_atrtab));
-}
-
-/* For PDC_set_title() */
-
-static void _set_title(void)
-{
- char title[1024]; /* big enough for window title */
- int pos;
-
- if ((XC_read_socket(xc_display_sock, &pos, sizeof(int)) < 0) ||
- (XC_read_socket(xc_display_sock, title, pos) < 0))
- {
- _exit_process(5, SIGKILL, "exiting from _set_title");
- }
-
- XtVaSetValues(topLevel, XtNtitle, title, NULL);
-}
-
-/* For color_content() */
-
-static void _get_color(void)
-{
- XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
- int index = tmp->pixel;
- Colormap cmap = DefaultColormap(XCURSESDISPLAY,
- DefaultScreen(XCURSESDISPLAY));
-
- if (index < 0 || index >= MAX_COLORS)
- _exit_process(4, SIGKILL, "exiting from _get_color");
-
- tmp->pixel = colors[index];
- XQueryColor(XCURSESDISPLAY, cmap, tmp);
-}
-
-/* For init_color() */
-
-static void _set_color(void)
-{
- XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
- int index = tmp->pixel;
- Colormap cmap = DefaultColormap(XCURSESDISPLAY,
- DefaultScreen(XCURSESDISPLAY));
-
- if (index < 0 || index >= MAX_COLORS)
- _exit_process(4, SIGKILL, "exiting from _set_color");
-
- if (XAllocColor(XCURSESDISPLAY, cmap, tmp))
- {
- XFreeColors(XCURSESDISPLAY, cmap, colors + index, 1, 0);
- colors[index] = tmp->pixel;
-
- _display_screen();
- }
-}
-
-/* For PDC_getclipboard() */
-
-static void _get_selection(Widget w, XtPointer data, Atom *selection,
- Atom *type, XtPointer value,
- unsigned long *length, int *format)
-{
- unsigned char *src = value;
- int pos, len = *length;
-
- XC_LOG(("_get_selection() - called\n"));
-
- if (!value && !len)
- {
- if (XC_write_display_socket_int(PDC_CLIP_EMPTY) < 0)
- _exit_process(4, SIGKILL, "exiting from _get_selection");
- }
- else
- {
- /* Here all is OK, send PDC_CLIP_SUCCESS, then length, then
- contents */
-
- if (XC_write_display_socket_int(PDC_CLIP_SUCCESS) < 0)
- _exit_process(4, SIGKILL, "exiting from _get_selection");
-
- if (XC_write_display_socket_int(len) < 0)
- _exit_process(4, SIGKILL, "exiting from _get_selection");
-
- for (pos = 0; pos < len; pos++)
- {
-#ifdef PDC_WIDE
- wchar_t c;
-#else
- unsigned char c;
-#endif
- c = *src++;
-
- if (XC_write_socket(xc_display_sock, &c, sizeof(c)) < 0)
- _exit_process(4, SIGKILL, "exiting from _get_selection");
- }
- }
-}
-
-#ifdef PDC_WIDE
-static void _get_selection_utf8(Widget w, XtPointer data, Atom *selection,
- Atom *type, XtPointer value,
- unsigned long *length, int *format)
-{
- int len = *length;
-
- XC_LOG(("_get_selection_utf8() - called\n"));
-
- if (!*type || !*length)
- {
- XtGetSelectionValue(w, XA_PRIMARY, XA_STRING, _get_selection,
- (XtPointer)NULL, 0);
- return;
- }
-
- if (!value && !len)
- {
- if (XC_write_display_socket_int(PDC_CLIP_EMPTY) >= 0)
- return;
- }
- else
- {
- wchar_t *wcontents = malloc((len + 1) * sizeof(wchar_t));
- char *src = value;
- int i = 0;
-
- while (*src && i < (*length))
- {
- int retval = _from_utf8(wcontents + i, src, len);
-
- src += retval;
- len -= retval;
- i++;
- }
-
- wcontents[i] = 0;
- len = i;
-
- /* Here all is OK, send PDC_CLIP_SUCCESS, then length, then
- contents */
-
- if (XC_write_display_socket_int(PDC_CLIP_SUCCESS) >= 0)
- if (XC_write_display_socket_int(len) >= 0)
- if (XC_write_socket(xc_display_sock,
- wcontents, len * sizeof(wchar_t)) >= 0)
- {
- free(wcontents);
- return;
- }
- }
-
- _exit_process(4, SIGKILL, "exiting from _get_selection_utf8");
-}
-#endif
-
-/* For PDC_setclipboard() */
-
-static void _set_selection(void)
-{
- long length, pos;
- int status;
-
- if (XC_read_socket(xc_display_sock, &length, sizeof(long)) < 0)
- _exit_process(5, SIGKILL, "exiting from _set_selection");
-
- if (length > (long)tmpsel_length)
- {
- if (!tmpsel_length)
- tmpsel = malloc((length + 1) * sizeof(chtype));
- else
- tmpsel = realloc(tmpsel, (length + 1) * sizeof(chtype));
- }
-
- if (!tmpsel)
- if (XC_write_display_socket_int(PDC_CLIP_MEMORY_ERROR) < 0)
- _exit_process(4, SIGKILL, "exiting from _set_selection");
-
- for (pos = 0; pos < length; pos++)
- {
-#ifdef PDC_WIDE
- wchar_t c;
-#else
- unsigned char c;
-#endif
- if (XC_read_socket(xc_display_sock, &c, sizeof(c)) < 0)
- _exit_process(5, SIGKILL, "exiting from _set_selection");
-
- tmpsel[pos] = c;
- }
-
- tmpsel_length = length;
- tmpsel[length] = 0;
-
- if (XtOwnSelection(topLevel, XA_PRIMARY, CurrentTime,
- _convert_proc, _lose_ownership, NULL) == False)
- {
- status = PDC_CLIP_ACCESS_ERROR;
- free(tmpsel);
- tmpsel = NULL;
- tmpsel_length = 0;
- }
- else
- status = PDC_CLIP_SUCCESS;
-
- _selection_off();
-
- if (XC_write_display_socket_int(status) < 0)
- _exit_process(4, SIGKILL, "exiting from _set_selection");
-}
-
-/* The curses process is waiting; tell it to continue */
-
-static void _resume_curses(void)
-{
- if (XC_write_display_socket_int(CURSES_CONTINUE) < 0)
- _exit_process(4, SIGKILL, "exiting from _process_curses_requests");
-}
-
-/* The curses process sent us a message */
-
-static void _process_curses_requests(XtPointer client_data, int *fid,
- XtInputId *id)
-{
- struct timeval socket_timeout = {0};
- int s;
- int old_row, new_row;
- int old_x, new_x;
- int pos, num_cols;
-
- char buf[12]; /* big enough for 2 integers */
-
- XC_LOG(("_process_curses_requests() - called\n"));
-
- if (!received_map_notify)
- return;
-
- FD_ZERO(&xc_readfds);
- FD_SET(xc_display_sock, &xc_readfds);
-
- if ((s = select(FD_SETSIZE, (FD_SET_CAST)&xc_readfds, NULL,
- NULL, &socket_timeout)) < 0)
- _exit_process(2, SIGKILL, "exiting from _process_curses_requests"
- " - select failed");
-
- if (!s) /* no requests pending - should never happen! */
- return;
-
- if (FD_ISSET(xc_display_sock, &xc_readfds))
- {
- /* read first integer to determine total message has been
- received */
-
- XC_LOG(("_process_curses_requests() - before XC_read_socket()\n"));
-
- if (XC_read_socket(xc_display_sock, &num_cols, sizeof(int)) < 0)
- _exit_process(3, SIGKILL, "exiting from _process_curses_requests"
- " - first read");
-
- XC_LOG(("_process_curses_requests() - after XC_read_socket()\n"));
-
- after_first_curses_request = TRUE;
-
- switch(num_cols)
- {
- case CURSES_EXIT: /* request from curses to stop */
- XC_LOG(("CURSES_EXIT received from child\n"));
- _exit_process(0, 0, "XCursesProcess requested to exit by child");
- break;
-
- case CURSES_BELL:
- XC_LOG(("CURSES_BELL received from child\n"));
- XBell(XCURSESDISPLAY, 50);
- break;
-
- /* request from curses to confirm completion of display */
-
- case CURSES_REFRESH:
- XC_LOG(("CURSES_REFRESH received from child\n"));
- _refresh_screen();
- _resume_curses();
- break;
-
- case CURSES_REFRESH_SCROLLBAR:
- _refresh_scrollbar();
- break;
-
- case CURSES_CURSOR:
- XC_LOG(("CURSES_CURSOR received from child\n"));
-
- if (XC_read_socket(xc_display_sock, buf, sizeof(int) * 2) < 0)
- _exit_process(5, SIGKILL, "exiting from CURSES_CURSOR "
- "_process_curses_requests");
-
- memcpy(&pos, buf, sizeof(int));
- old_row = pos & 0xFF;
- old_x = pos >> 8;
-
- memcpy(&pos, buf + sizeof(int), sizeof(int));
- new_row = pos & 0xFF;
- new_x = pos >> 8;
-
- visible_cursor = TRUE;
- _display_cursor(old_row, old_x, new_row, new_x);
- break;
-
- case CURSES_DISPLAY_CURSOR:
- XC_LOG(("CURSES_DISPLAY_CURSOR received from child. Vis now: "));
- XC_LOG((visible_cursor ? "1\n" : "0\n"));
-
- /* If the window is not active, ignore this command. The
- cursor will stay solid. */
-
- if (window_entered)
- {
- if (visible_cursor)
- {
- /* Cursor currently ON, turn it off */
-
- int save_visibility = SP->visibility;
- SP->visibility = 0;
- _redraw_cursor();
- SP->visibility = save_visibility;
- visible_cursor = FALSE;
- }
- else
- {
- /* Cursor currently OFF, turn it on */
-
- _redraw_cursor();
- visible_cursor = TRUE;
- }
- }
-
- break;
-
- case CURSES_TITLE:
- XC_LOG(("CURSES_TITLE received from child\n"));
- _set_title();
- break;
-
- case CURSES_RESIZE:
- XC_LOG(("CURSES_RESIZE received from child\n"));
- _resize();
- _resume_curses();
- break;
-
- case CURSES_GET_SELECTION:
- XC_LOG(("CURSES_GET_SELECTION received from child\n"));
-
- _resume_curses();
-
- XtGetSelectionValue(topLevel, XA_PRIMARY,
-#ifdef PDC_WIDE
- XA_UTF8_STRING(XtDisplay(topLevel)),
- _get_selection_utf8,
-#else
- XA_STRING, _get_selection,
-#endif
- (XtPointer)NULL, 0);
-
- break;
-
- case CURSES_SET_SELECTION:
- XC_LOG(("CURSES_SET_SELECTION received from child\n"));
- _set_selection();
- break;
-
- case CURSES_CLEAR_SELECTION:
- XC_LOG(("CURSES_CLEAR_SELECTION received from child\n"));
- _resume_curses();
- _selection_off();
- break;
-
- case CURSES_GET_COLOR:
- XC_LOG(("CURSES_GET_COLOR recieved from child\n"));
- _get_color();
- _resume_curses();
- break;
-
- case CURSES_SET_COLOR:
- XC_LOG(("CURSES_SET_COLOR recieved from child\n"));
- _set_color();
- _resume_curses();
- break;
-
- default:
- PDC_LOG(("%s:Unknown request %d\n", XCLOGMSG, num_cols));
- }
- }
-}
-
-static void _handle_structure_notify(Widget w, XtPointer client_data,
- XEvent *event, Boolean *unused)
-{
- XC_LOG(("_handle_structure_notify() - called\n"));
-
- switch(event->type)
- {
- case ConfigureNotify:
- XC_LOG(("ConfigureNotify received\n"));
-
- /* Window has been resized, change width and height to send to
- place_text and place_graphics in next Expose. Also will need
- to kill (SIGWINCH) curses process if screen size changes. */
-
- resize_window_width = event->xconfigure.width;
- resize_window_height = event->xconfigure.height;
-
- after_first_curses_request = FALSE;
-
-#ifdef SIGWINCH
- SP->resized = 1;
-
- kill(xc_otherpid, SIGWINCH);
-#endif
- _send_key_to_curses(KEY_RESIZE, NULL, TRUE);
- break;
-
- case MapNotify:
- XC_LOG(("MapNotify received\n"));
-
- received_map_notify = 1;
-
- _draw_border();
- break;
-
- default:
- PDC_LOG(("%s:_handle_structure_notify - unknown event %d\n",
- XCLOGMSG, event->type));
- }
-}
-
-static RETSIGTYPE _handle_signals(int signo)
-{
- int flag = CURSES_EXIT;
-
- PDC_LOG(("%s:_handle_signals() - called: %d\n", XCLOGMSG, signo));
-
- /* Patch by: Georg Fuchs */
-
- XCursesSetSignal(signo, _handle_signals);
-
-#ifdef SIGTSTP
- if (signo == SIGTSTP)
- {
- pause();
- return;
- }
-#endif
-#ifdef SIGCONT
- if (signo == SIGCONT)
- return;
-#endif
-#ifdef SIGCLD
- if (signo == SIGCLD)
- return;
-#endif
-#ifdef SIGTTIN
- if (signo == SIGTTIN)
- return;
-#endif
-#ifdef SIGWINCH
- if (signo == SIGWINCH)
- return;
-#endif
-
- /* End of patch by: Georg Fuchs */
-
- XCursesSetSignal(signo, SIG_IGN);
-
- /* Send a CURSES_EXIT to myself */
-
- if (XC_write_socket(xc_exit_sock, &flag, sizeof(int)) < 0)
- _exit_process(7, signo, "exiting from _handle_signals");
-}
-
-#ifdef PDC_XIM
-static void _dummy_handler(Widget w, XtPointer client_data,
- XEvent *event, Boolean *unused)
-{
-}
-#endif
-
-int XCursesSetupX(int argc, char *argv[])
-{
- char *myargv[] = {"PDCurses", NULL};
- extern bool sb_started;
-
- int italic_font_valid;
- XColor pointerforecolor, pointerbackcolor;
- XrmValue rmfrom, rmto;
- int i = 0;
- int minwidth, minheight;
-
- XC_LOG(("XCursesSetupX called\n"));
-
- if (!argv)
- {
- argv = myargv;
- argc = 1;
- }
-
- program_name = argv[0];
-
- /* Keep open the 'write' end of the socket so the XCurses process
- can send a CURSES_EXIT to itself from within the signal handler */
-
- xc_exit_sock = xc_display_sockets[0];
- xc_display_sock = xc_display_sockets[1];
-
- close(xc_key_sockets[0]);
- xc_key_sock = xc_key_sockets[1];
-
- /* Trap all signals when XCurses is the child process, but only if
- they haven't already been ignored by the application. */
-
- for (i = 0; i < PDC_MAX_SIGNALS; i++)
- if (XCursesSetSignal(i, _handle_signals) == SIG_IGN)
- XCursesSetSignal(i, SIG_IGN);
-
- /* Start defining X Toolkit things */
-
-#if XtSpecificationRelease > 4
- XtSetLanguageProc(NULL, (XtLanguageProc)NULL, NULL);
-#endif
-
- /* Exit if no DISPLAY variable set */
-
- if (!getenv("DISPLAY"))
- {
- fprintf(stderr, "Error: no DISPLAY variable set\n");
- kill(xc_otherpid, SIGKILL);
- return ERR;
- }
-
- /* Initialise the top level widget */
-
- topLevel = XtVaAppInitialize(&app_context, class_name, options,
- XtNumber(options), &argc, argv, NULL, NULL);
-
- XtVaGetApplicationResources(topLevel, &xc_app_data, app_resources,
- XtNumber(app_resources), NULL);
-
- /* Check application resource values here */
-
- font_width = xc_app_data.normalFont->max_bounds.rbearing -
- xc_app_data.normalFont->min_bounds.lbearing;
-
- font_height = xc_app_data.normalFont->max_bounds.ascent +
- xc_app_data.normalFont->max_bounds.descent;
-
- font_ascent = xc_app_data.normalFont->max_bounds.ascent;
- font_descent = xc_app_data.normalFont->max_bounds.descent;
-
- /* Check that the italic font and normal fonts are the same size */
- /* This appears backwards */
-
- italic_font_valid = font_width !=
- xc_app_data.italicFont->max_bounds.rbearing -
- xc_app_data.italicFont->min_bounds.lbearing ||
- font_height !=
- xc_app_data.italicFont->max_bounds.ascent +
- xc_app_data.italicFont->max_bounds.descent;
-
- /* Calculate size of display window */
-
- XCursesCOLS = xc_app_data.cols;
- XCursesLINES = xc_app_data.lines;
-
- window_width = font_width * XCursesCOLS +
- 2 * xc_app_data.borderWidth;
-
- window_height = font_height * XCursesLINES +
- 2 * xc_app_data.borderWidth;
-
- minwidth = font_width * 2 + xc_app_data.borderWidth * 2;
- minheight = font_height * 2 + xc_app_data.borderWidth * 2;
-
- /* Set up the icon for the application; the default is an internal
- one for PDCurses. Then set various application level resources. */
-
- _get_icon();
-
-#ifdef HAVE_XPM_H
- if (xc_app_data.pixmap && xc_app_data.pixmap[0])
- XtVaSetValues(topLevel, XtNminWidth, minwidth, XtNminHeight,
- minheight, XtNbaseWidth, xc_app_data.borderWidth * 2,
- XtNbaseHeight, xc_app_data.borderWidth * 2,
- XtNiconPixmap, icon_pixmap,
- XtNiconMask, icon_pixmap_mask, NULL);
- else
-#endif
- XtVaSetValues(topLevel, XtNminWidth, minwidth, XtNminHeight,
- minheight, XtNbaseWidth, xc_app_data.borderWidth * 2,
- XtNbaseHeight, xc_app_data.borderWidth * 2,
- XtNiconPixmap, icon_bitmap, NULL);
-
- /* Create a BOX widget in which to draw */
-
- if (xc_app_data.scrollbarWidth && sb_started)
- {
- scrollBox = XtVaCreateManagedWidget(program_name,
- scrollBoxWidgetClass, topLevel, XtNwidth,
- window_width + xc_app_data.scrollbarWidth,
- XtNheight, window_height + xc_app_data.scrollbarWidth,
- XtNwidthInc, font_width, XtNheightInc, font_height, NULL);
-
- drawing = XtVaCreateManagedWidget(program_name,
- boxWidgetClass, scrollBox, XtNwidth,
- window_width, XtNheight, window_height, XtNwidthInc,
- font_width, XtNheightInc, font_height, NULL);
-
- scrollVert = XtVaCreateManagedWidget("scrollVert",
- scrollbarWidgetClass, scrollBox, XtNorientation,
- XtorientVertical, XtNheight, window_height, XtNwidth,
- xc_app_data.scrollbarWidth, NULL);
-
- XtAddCallback(scrollVert, XtNscrollProc, _scroll_up_down, drawing);
- XtAddCallback(scrollVert, XtNjumpProc, _thumb_up_down, drawing);
-
- scrollHoriz = XtVaCreateManagedWidget("scrollHoriz",
- scrollbarWidgetClass, scrollBox, XtNorientation,
- XtorientHorizontal, XtNwidth, window_width, XtNheight,
- xc_app_data.scrollbarWidth, NULL);
-
- XtAddCallback(scrollHoriz, XtNscrollProc, _scroll_left_right, drawing);
- XtAddCallback(scrollHoriz, XtNjumpProc, _thumb_left_right, drawing);
- }
- else
- {
- drawing = XtVaCreateManagedWidget(program_name, boxWidgetClass,
- topLevel, XtNwidth, window_width, XtNheight, window_height,
- XtNwidthInc, font_width, XtNheightInc, font_height, NULL);
-
- XtVaSetValues(topLevel, XtNwidthInc, font_width, XtNheightInc,
- font_height, NULL);
- }
-
- /* Process any default translations */
-
- XtAugmentTranslations(drawing,
- XtParseTranslationTable(default_translations));
- XtAppAddActions(app_context, action_table, XtNumber(action_table));
-
- /* Process the supplied colors */
-
- _initialize_colors();
-
- /* Determine text cursor alignment from resources */
-
- if (!strcmp(xc_app_data.textCursor, "vertical"))
- vertical_cursor = TRUE;
-
- /* Now have LINES and COLS. Set these in the shared SP so the curses
- program can find them. */
-
- LINES = XCursesLINES;
- COLS = XCursesCOLS;
-
- if ((shmidSP = shmget(shmkeySP, sizeof(SCREEN) + XCURSESSHMMIN,
- 0700 | IPC_CREAT)) < 0)
- {
- perror("Cannot allocate shared memory for SCREEN");
- kill(xc_otherpid, SIGKILL);
- return ERR;
- }
-
- SP = (SCREEN*)shmat(shmidSP, 0, 0);
- memset(SP, 0, sizeof(SCREEN));
- SP->XcurscrSize = XCURSCR_SIZE;
- SP->lines = XCursesLINES;
- SP->cols = XCursesCOLS;
-
- SP->mouse_wait = xc_app_data.clickPeriod;
- SP->audible = TRUE;
-
- PDC_LOG(("%s:SHM size for curscr %d\n", XCLOGMSG, SP->XcurscrSize));
-
- if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, SP->XcurscrSize +
- XCURSESSHMMIN, 0700 | IPC_CREAT)) < 0)
- {
- perror("Cannot allocate shared memory for curscr");
- kill(xc_otherpid, SIGKILL);
- shmdt((char *)SP);
- shmctl(shmidSP, IPC_RMID, 0);
- return ERR;
- }
-
- Xcurscr = (unsigned char *)shmat(shmid_Xcurscr, 0, 0);
- memset(Xcurscr, 0, SP->XcurscrSize);
- xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
-
- PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d LINES %d COLS %d\n",
- XCLOGMSG, shmid_Xcurscr, shmkey_Xcurscr, LINES, COLS));
-
- /* Add Event handlers to the drawing widget */
-
- XtAddEventHandler(drawing, ExposureMask, False, _handle_expose, NULL);
- XtAddEventHandler(drawing, StructureNotifyMask, False,
- _handle_structure_notify, NULL);
- XtAddEventHandler(drawing, EnterWindowMask | LeaveWindowMask, False,
- _handle_enter_leave, NULL);
- XtAddEventHandler(topLevel, 0, True, _handle_nonmaskable, NULL);
-
- /* Add input handler from xc_display_sock (requests from curses
- program) */
-
- XtAppAddInput(app_context, xc_display_sock, (XtPointer)XtInputReadMask,
- _process_curses_requests, NULL);
-
- /* If there is a cursorBlink resource, start the Timeout event */
-
- if (xc_app_data.cursorBlinkRate)
- XtAppAddTimeOut(app_context, xc_app_data.cursorBlinkRate,
- _blink_cursor, NULL);
-
- /* Leave telling the curses process that it can start to here so
- that when the curses process makes a request, the Xcurses
- process can service the request. */
-
- XC_write_display_socket_int(CURSES_CHILD);
-
- XtRealizeWidget(topLevel);
-
- /* Handle trapping of the WM_DELETE_WINDOW property */
-
- wm_atom[0] = XInternAtom(XtDisplay(topLevel), "WM_DELETE_WINDOW", False);
-
- XSetWMProtocols(XtDisplay(topLevel), XtWindow(topLevel), wm_atom, 1);
-
- /* Create the Graphics Context for drawing. This MUST be done AFTER
- the associated widget has been realized. */
-
- XC_LOG(("before _get_gc\n"));
-
- _get_gc(&normal_gc, xc_app_data.normalFont, COLOR_WHITE, COLOR_BLACK);
-
- _get_gc(&italic_gc, italic_font_valid ? xc_app_data.italicFont :
- xc_app_data.normalFont, COLOR_WHITE, COLOR_BLACK);
-
- _get_gc(&block_cursor_gc, xc_app_data.normalFont,
- COLOR_BLACK, COLOR_CURSOR);
-
- _get_gc(&rect_cursor_gc, xc_app_data.normalFont,
- COLOR_CURSOR, COLOR_BLACK);
-
- _get_gc(&border_gc, xc_app_data.normalFont, COLOR_BORDER, COLOR_BLACK);
-
- XSetLineAttributes(XCURSESDISPLAY, rect_cursor_gc, 2,
- LineSolid, CapButt, JoinMiter);
-
- XSetLineAttributes(XCURSESDISPLAY, border_gc, xc_app_data.borderWidth,
- LineSolid, CapButt, JoinMiter);
-
- /* Set the cursor for the application */
-
- XDefineCursor(XCURSESDISPLAY, XCURSESWIN, xc_app_data.pointer);
- rmfrom.size = sizeof(Pixel);
- rmto.size = sizeof(XColor);
-
- rmto.addr = (XPointer)&pointerforecolor;
- rmfrom.addr = (XPointer)&(xc_app_data.pointerForeColor);
- XtConvertAndStore(drawing, XtRPixel, &rmfrom, XtRColor, &rmto);
-
- rmfrom.size = sizeof(Pixel);
- rmto.size = sizeof(XColor);
-
- rmfrom.addr = (XPointer)&(xc_app_data.pointerBackColor);
- rmto.addr = (XPointer)&pointerbackcolor;
- XtConvertAndStore(drawing, XtRPixel, &rmfrom, XtRColor, &rmto);
-
- XRecolorCursor(XCURSESDISPLAY, xc_app_data.pointer,
- &pointerforecolor, &pointerbackcolor);
-
-#ifndef PDC_XIM
-
- /* Convert the supplied compose key to a Keysym */
-
- compose_key = XStringToKeysym(xc_app_data.composeKey);
-
- if (compose_key && IsModifierKey(compose_key))
- {
- int i, j;
- KeyCode *kcp;
- XModifierKeymap *map;
- KeyCode compose_keycode = XKeysymToKeycode(XCURSESDISPLAY, compose_key);
-
- map = XGetModifierMapping(XCURSESDISPLAY);
- kcp = map->modifiermap;
-
- for (i = 0; i < 8; i++)
- {
- for (j = 0; j < map->max_keypermod; j++, kcp++)
- {
- if (!*kcp)
- continue;
-
- if (compose_keycode == *kcp)
- {
- compose_mask = state_mask[i];
- break;
- }
- }
-
- if (compose_mask)
- break;
- }
-
- XFreeModifiermap(map);
- }
-
-#else
- Xim = XOpenIM(XCURSESDISPLAY, NULL, NULL, NULL);
-
- if (Xim)
- {
- Xic = XCreateIC(Xim, XNInputStyle,
- XIMPreeditNothing | XIMStatusNothing,
- XNClientWindow, XCURSESWIN, NULL);
- }
-
- if (Xic)
- {
- long im_event_mask;
-
- XGetICValues(Xic, XNFilterEvents, &im_event_mask, NULL);
- if (im_event_mask)
- XtAddEventHandler(drawing, im_event_mask, False,
- _dummy_handler, NULL);
-
- XSetICFocus(Xic);
- }
- else
- {
- perror("ERROR: Cannot create input context");
- kill(xc_otherpid, SIGKILL);
- shmdt((char *)SP);
- shmdt((char *)Xcurscr);
- shmctl(shmidSP, IPC_RMID, 0);
- shmctl(shmid_Xcurscr, IPC_RMID, 0);
- return ERR;
- }
-
-#endif
-
- /* Wait for events */
-
- XtAppMainLoop(app_context);
- return OK; /* won't get here */
-}
diff --git a/payloads/libpayload/curses/PDCurses-3.4/x11/xcurses-config.in b/payloads/libpayload/curses/PDCurses-3.4/x11/xcurses-config.in
deleted file mode 100644
index 55b4704..0000000
--- a/payloads/libpayload/curses/PDCurses-3.4/x11/xcurses-config.in
+++ /dev/null
@@ -1,76 +0,0 @@
-#! /bin/sh
-#
-# The idea to this kind of setup info script was stolen from numerous
-# other packages, such as neon, libxml and gnome.
-#
-# $Id: xcurses-config.in,v 1.6 2007/11/07 23:33:07 wmcbrine Exp $
-#
-
-verdot=3.4
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-includedir=@includedir@/xcurses
-
-usage()
-{
- echo "Usage: xcurses-config [OPTION]"
- echo ""
- echo "Available values for OPTION include:"
- echo ""
- echo " --help display this help and exit"
- echo " --cflags pre-processor and compiler flags"
- echo " [-I$includedir]"
- echo " --libs library linking information"
- echo " [-L$prefix/lib -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@"
- echo " --prefix PDCurses install prefix"
- echo " [$prefix]"
- echo " --version output version information"
- echo " [$verdot]"
- exit $1
-}
-
-if test $# -eq 0; then
- usage 1
-fi
-
-while test $# -gt 0; do
- case "$1" in
- # this deals with options in the style
- # --option=value and extracts the value part
- # [not currently used]
- -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) value= ;;
- esac
-
- case "$1" in
- --prefix)
- echo $prefix
- ;;
-
- --version)
- echo $verdot
- exit 0
- ;;
-
- --help)
- usage 0
- ;;
-
- --cflags)
- echo -I$includedir
- ;;
-
- --libs)
- echo -L$prefix/lib -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@
- ;;
-
- *)
- usage
- exit 1
- ;;
- esac
- shift
-done
-
-exit 0
diff --git a/payloads/libpayload/curses/PDCurses/HISTORY b/payloads/libpayload/curses/PDCurses/HISTORY
new file mode 100644
index 0000000..7cf5b71
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/HISTORY
@@ -0,0 +1,1925 @@
+PDCurses 3.4 - 2008/09/08
+=========================
+
+Nothing much new this time, but I've been sitting on some bug fixes for
+almost a year, so it's overdue. Apart from bugs, the main changes are in
+the documentation.
+
+New features:
+
+- setsyx() is now a function rather than a macro.
+
+Bug fixes and such:
+
+- In x11, the xc_atrtab table size was under-calculated by half,
+ resulting in crashes at (oddly) certain line counts. (It should've
+ crashed a lot more.) Reported by Mark Hessling.
+
+- Test for moved cursor was omitting the window origin offset. Reported
+ by Carey Evans.
+
+- Is DOS and OS/2, the value for max items in key_table was still wrong.
+ Reported by C.E.
+
+- Changed isendwin() so it won't crash after delscreen().
+
+- Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs().
+
+- Disable QuickEdit Mode when enabling mouse input for the Win32
+ console; reported by "Zalapkrakna".
+
+- Fix for building under Innotek C (I hope). Report by Elbert Pol, fix
+ courtesy of Paul Smedley.
+
+- Unified exports list with no duplicates -- pdcurses.def is now built
+ from components at compile time.
+
+- Don't install curspriv.h, and don't include it with binary
+ distributions.
+
+- Building DLLs with LCC is no longer supported, due to the primitive
+ nature of its make.exe.
+
+- Export the terminfo stub functions from the DLLs, too.
+
+- Added support for Apple's ".dylib" in configure. Suggested by Marc
+ Vaillant (who says it's needed with OS 10.5.)
+
+- In sdl1/Makefile.mng, ensure that CC is set.
+
+- In the gcc makefiles, "$?" didn't really have the desired effect --
+ _all_ the dependencies showed up on the command line, including
+ curses.h, and pdcurses.a twice. And apparently, this can mess up some
+ old version (?) of MinGW. So, revert to spelling out "tuidemo.o
+ tui.o". Reported by "Howard L."
+
+- Extensive documentation revision and reorganizing. More to do here.
+ For example, I moved the build instructions from INSTALL (which never
+ really described installation) to the platform-specific READMEs.
+
+- New indentation standard: four spaces, no tabs.
+
+------------------------------------------------------------------------
+
+PDCurses 3.3 - 2007/07/11
+=========================
+
+This release adds an SDL backend, refines the demos, and is faster in
+some cases.
+
+New features:
+
+- SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details.
+
+- Double-buffering -- minimize screen writes by checking, in doupdate()
+ and wnoutrefresh(), whether the changes to curscr are really changes.
+ In most cases, this makes no difference (writes were already limited
+ to areas marked as changed), but it can greatly reduce the overhead
+ from touchwin(). It also helps if you have small, separated updates on
+ the same line.
+
+- The PDC_RGB colors can now be used, or not, with any platform (as long
+ as the same options are used when compiling both the library and
+ apps). This may help if you have apps that are hardwired to assume
+ certain definitions.
+
+- Restored the use_default_colors() stuff from the ncurses versions of
+ the rain and worm demos, to make them "transparent" (this is useful
+ now, with the SDL port); added transparency to newdemo.
+
+- Added setlocale() to tuidemo, to make it easier to browse files with
+ non-ASCII characters.
+
+- Sped up firework demo by replacing unneeded clear() and init_pair()
+ calls.
+
+- Allow exit from ptest demo by typing 'q'.
+
+- New functions for implementors: PDC_pair_content() and PDC_init_pair()
+ (the old pdc_atrtab stuff was arguably the last remnant of code in the
+ pdcurses directory that was based on platform details).
+
+Bug fixes and such:
+
+- Implicit wrefresh() needs to be called from wgetch() when the window's
+ cursor position is changed, even if there are no other changes.
+
+- Set SP->audible on a per-platform basis, as was documented in
+ IMPLEMNT, but not actually being done.
+
+- Minor tweaks for efficiency and readability, notably with wscrl().
+
+- tuidemo didn't work correctly on monochrome screens when A_COLOR was
+ defined -- the color pair numbers appeared as the corresponding
+ character; also, the input box was (I now realize) broken with ncurses
+ since our 2.7, and broke more subtly with PDCurses' new implicit
+ refresh handling; also, the path to the default file for the Browse
+ function was a bit off.
+
+- Assume in the demos that curs_set() is always available -- there's no
+ good test for this, and the existing tests were bogus.
+
+- Made the command-line parameter for ptest work. (If given an argument,
+ it delays that number of milliseconds between changes, instead of
+ waiting for a key, and automatically loops five times.)
+
+- Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside
+ the platform directory.
+
+- Building the X11 port with Cygwin required manually editing the
+ Makefile after configuring; no longer. Reported by Warren W. Gay.
+
+- Minor tightening of configure and makefiles.
+
+- Bogus references to "ACS_BLCORNER" in the border man page. Reported by
+ "Walrii".
+
+- slk_wlabel() was not documented.
+
+- Spelling cleanup.
+
+- Changed RCSIDs to not end with a semicolon -- avoids warnings when
+ compiling with the -pedantic option.
+
+- Merged latin-1.txt into x11.txt.
+
+- Updated config.guess and config.sub to more recent versions.
+
+------------------------------------------------------------------------
+
+PDCurses 3.2 - 2007/06/06
+=========================
+
+This release mainly covers changes to the build process, along with a
+few structural changes.
+
+New features:
+
+- The panel library has been folded into the main library. What this
+ means is that you no longer need to specify "-lpanel" or equivalent
+ when linking programs that use panel functionality with PDCurses;
+ however, panel.lib/.a is still provided (as a copy of pdcurses.lib/.a)
+ so that you can, optionally, build your projects with no changes. It
+ also means that panel functionality is available with the DLL or
+ shared library. Note that panel.h remains separate from curses.h.
+
+- Setting the PDCURSES_SRCDIR environment variable is no longer required
+ before building, unless you want to build in a location other than the
+ platform directory. (See INSTALL.)
+
+- MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y"
+ option. Partly due to Timofei Shatrov.
+
+- Support for the Digital Mars compiler.
+
+- Watcom makefiles now use the "loaddll" feature.
+
+Bug fixes and such:
+
+- Eliminated the platform defines (DOS, WIN32, OS2, XCURSES) from
+ curses.h, except for X11-specific SCREEN elements and functions.
+ Dynamically-linked X11 apps built against an old version will have
+ their red and blue swapped until rebuilt. (You can define PDC_RGB to
+ build the library with the old color scheme, but it would also have to
+ be defined when building any new app.) Any app that depends on
+ PDCurses to determine the platform it's building on will have to make
+ other arrangements.
+
+- Documentation cleanup -- added more details; removed some content that
+ didn't apply to PDCurses; moved the doc-building tool to the doc
+ directory; changed *.man to *.txt.
+
+- The EMX makefile now accepts "DLL=Y", builds pdcurses.dll instead of
+ curses.dll, builds either the static library or the DLL (not both at
+ once), and links all the demos with the DLL when building it.
+
+- In Win32, read the registry only when needed: when init_color() or
+ color_content() is called, instead of at startup.
+
+- A few additional consts in declarations.
+
+- The Win32 compilers that build DLLs now use common .def files.
+
+- panel.h functions sorted by name, as with other .h files; curses.h is
+ no longer included by repeated inclusions of panel.h or term.h.
+
+- Simplified Borland makefiles.
+
+- Makefile.aix.in depended on a file, xcurses.exp, that was never there.
+ This problem was fixed as part of the change to common .def files;
+ however, I still haven't been able to test building on AIX.
+
+------------------------------------------------------------------------
+
+PDCurses 3.1 - 2007/05/03
+=========================
+
+Primarily clipboard-related fixes, and special UTF-8 support.
+
+New features:
+
+- "Force UTF-8" mode, a compile-time option to force the use of UTF-8
+ for multibyte strings, instead of the system locale. (Mainly for
+ Windows, where UTF-8 doesn't work well in the console.) See INSTALL.
+
+- Multibyte string support in PDC_*clipboard() functions, and in Win32's
+ PDC_set_title().
+
+- Added the global string "ttytype", per other curses implementations,
+ for compatibility with old BSD curses.
+
+- Real functions for the "quasi-standard aliases" -- crmode(),
+ nocrmode(), draino(), resetterm(), fixterm() and saveterm().
+ (Corresponding macros removed.)
+
+Bug fixes and such:
+
+- In Win32, under NT-family OSes, the scrollback buffer would be
+ restored by endwin(), but would not be turned off again when resuming
+ curses after an endwin(). The result was an odd, partly-scrolled-up
+ display. Now, the buffer is toggled by PDC_reset_prog_mode() and
+ PDC_reset_shell_mode(), so it's properly turned off when returning
+ from an endwin().
+
+- In 3.0, selection in X11 didn't work. (Well, the selecting worked, but
+ the pasting elsewhere didn't.) This was due to the attempted fix
+ "don't return selection start as a press event," so that's been
+ reverted for now.
+
+- PDC_setclipboard() was locking up in X11. Reported by Mark Hessling.
+
+- Missing underscore in the declaration of XC_say() prevented
+ compilation with PDCDEBUG defined. Reported by M.H.
+
+- Off-by-one error in copywin() -- the maximum coordinates for the
+ destination window should be inclusive. Reported by Tiago Dionizio.
+
+- Start in echo mode, per X/Open. Reported by T.D.
+
+- Strip leading and trailing spaces from slk labels, per a literal
+ reading of X/Open. Suggested by Alexey Miheev (about ncurses, but it
+ also applies here).
+
+- The #endif for __PDCURSES__ needs to come _after_ the closing of the
+ extern "C". This has been broken since June 2005. Fortunately (?), it
+ only shows up if the file is included multiple times, and then only in
+ C++. Reported on the DOSBox forums.
+
+- Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the
+ clipboard functions in Win32, to match the console.
+
+- Changed the format of the string returned from longname().
+
+- In the clipboard test in the testcurs demo, use a single mvprintw() to
+ display the return from PDC_getclipboard(), instead of a loop of
+ addch(), which was incompatible with multibyte strings.
+
+- Moved has_key() into the keyname module, and documented it.
+
+- Moved RIPPEDOFFLINE to curspriv.h.
+
+- Typos in IMPLEMNT.
+
+------------------------------------------------------------------------
+
+PDCurses 3.0 - 2007/04/01
+=========================
+
+The focuses for this release are X/Open conformance, i18n, better color
+support, cleaner code, and more consistency across platforms.
+
+This is only a brief summary of the changes. For more details, consult
+the CVS log.
+
+New features:
+
+- An almost complete implementation of X/Open curses, including the
+ wide-character and attr_t functions (but excluding terminfo). The
+ wide-character functions work only in Win32 and X11, for now, and
+ require building the library with the appropriate options (see
+ INSTALL). Note that this is a simplistic implementation, with exactly
+ one wchar_t per cchar_t; the only characters it handles properly are
+ those that are one column wide.
+
+- Support for X Input Methods in the X11 port (see INSTALL). When built
+ this way, the internal compose key support is disabled in favor of
+ XIM's, which is a lot more complete, although you lose the box cursor.
+
+- Multibyte character support in the non-wide string handling functions,
+ per X/Open. This only works when the library is built with wide-
+ character support enabled.
+
+- Mouse support for DOS and OS/2. The DOS version includes untested
+ support for scroll wheels, via the "CuteMouse" driver.
+
+- An ncurses-compatible mouse interface, which can work in parallel with
+ the traditional PDCurses mouse interface. See the man page (or
+ mouse.c) for details.
+
+- DOS and OS/2 can now return modifiers as keys, as in Win32 and X11.
+
+- COLORS, which had been fixed at 8, is now either 8 or 16, depending on
+ the terminal -- usually 16. When it's 8, blinking mode is enabled
+ (controlled as before by the A_BLINK attribute); when it's 16, bright
+ background colors are used instead. On platforms where it can be
+ changed, the mode is toggled by the new function PDC_set_blink().
+ PDCurses tries to set PDC_set_blink(FALSE) at startup. (In Win32, it's
+ always set to FALSE; in DOS, with other than an EGA or VGA card, it
+ can't be.) Also, COLORS is now set to 0 until start_color() is called.
+
+- Corresponding to the change in COLORS, COLOR_PAIRS is now 256.
+
+- Working init_color() and color_content(). The OS/2 version of
+ init_color() works only in a full-screen session; the Win32 version
+ works only in windowed mode, and only in NT-family OSes; the DOS
+ version works only with VGA adapters (real or simulated). The Win32
+ version is based mostly on James Brown's setconsoleinfo.c
+ (www.catch22.net).
+
+- use_default_colors(), assume_default_colors(), and curses_version(),
+ after ncurses.
+
+- Added global int TABSIZE, after ncurses and Solaris curses; removed
+ window-specific _tabsize.
+
+- Logical extension to the wide-character slk_ funcs: slk_wlabel(), for
+ retrieving the label as a wide-character string.
+
+- A non-macro implementation of ncurses' wresize().
+
+- Working putwin(), getwin(), scr_dump() and scr_restore().
+
+- A working acs_map[]. Characters from the ACS are now stored in window
+ structures as a regular character plus the A_ALTCHARSET attribute, and
+ rendered to the ACS only when displayed. (This allows, for example,
+ the correct display on one platform of windows saved from another.)
+
+- In X11, allow selection and paste of UTF8_STRING.
+
+- The testcurs demo now includes a color chart and init_color() test, a
+ wide character input test, a display of wide ACS characters with
+ sample Unicode text, a specific test of flash(), more info in the
+ resize test, and attempts to change the width as well as the height.
+
+- Command-line option for MSVC to build DLLs (see INSTALL). Also, the
+ naming distinction for DLLs ("curses" vs. "pdcurses") is abandoned,
+ and either the static lib or DLL is built, not both at once (except
+ for X11).
+
+- For backwards compatibility, a special module just for deprecated
+ functions -- currently PDC_check_bios_key(), PDC_get_bios_key(),
+ PDC_get_ctrl_break() and PDC_set_ctrl_break(). These shouldn't be used
+ in applications, but currently are... in fact, all the "private"
+ functions (in curspriv.h) are subject to change and should be avoided.
+
+- A new document, IMPLEMNT, describing PDCurses' internal functions for
+ those wishing to port it to new platforms.
+
+- Mark Hessling has released the X11 port to the public domain.
+ (However, x11/ScrollBox* retain their separate copyright and MIT-like
+ license.)
+
+Bug fixes and such:
+
+- Most of the macros have been removed (along with the NOMACROS ifdef).
+ The only remaining ones are those which have to be macros to work, and
+ those that are required by X/Open to be macros. There were numerous
+ problems with the macros, and no apparent reason to keep them, except
+ tradition -- although it was PCcurses 1.x that first omitted them.
+
+- Clean separation of platform-specific code from the rest. Outside of
+ the platform directories, there remain only a few ifdefs in curses.h
+ and curspriv.h.
+
+- General reorganization and simplification.
+
+- Documentation revisions.
+
+- When expanding control characters in addch() or insch(), retain the
+ attributes from the chtype.
+
+- Preserve the A_ALTCHARSET attribute in addch() and insch().
+
+- Per X/Open, beep() should always return OK.
+
+- On platforms with a controlling terminal (i.e., not X11), curs_set(1)
+ now sets the cursor to the shape it had at the time of initscr(),
+ rather than always making it small. (Exception for DOS: If the video
+ mode has been changed by PDC_resize_screen(), curs_set(1) reverts to
+ line 6/7.) The shape is taken from SP->orig_cursor (the meaning of
+ which is platform-specific).
+
+- Stop updating the cursor position when the cursor is invisible (this
+ gives a huge performance boost in Win 9x); update the cursor position
+ from curs_set() if changing from invisible to visible.
+
+- Some tweaking of the behavior of def_prog_mode(), def_shell_mode(),
+ savetty(), reset_prog_mode(), reset_shell_mode() and resetty()...
+ still not quite right.
+
+- flash() was not implemented for Win32 or X. A portable implementation
+ is now used for all platforms. Note that it's much slower than the
+ old (DOS and OS/2) version, but this is only apparent on an extremely
+ slow machine, such as an XT.
+
+- In getstr(), backspacing on high-bit characters caused a double
+ backspace.
+
+- hline() and vline() used an incorrect (off by one) interpretation of
+ _maxx and _maxy. If values of n greater than the max were specified,
+ these functions could access unallocated memory.
+
+- innstr() is supposed to return the number of characters read, not just
+ OK or ERR. Reported by Mike Aubury.
+
+- A proper implementation of insch() -- the PDC_chadd()-based version
+ wasn't handling the control characters correctly.
+
+- Return ASCII and control key names from keyname() (problem revealed by
+ ncurses' movewindow test); also, per X/Open, return "UNKNOWN KEY" when
+ appropriate, rather than "NO KEY NAME".
+
+- Turn off the cursor from leaveok(TRUE), even in X11; leaveok(FALSE)
+ now calls curs_set(1), regardless of the previous state of the cursor.
+
+- In the slk area, BUTTON_CLICKED events now translate to function keys,
+ along with the previously recognized BUTTON_PRESSED events. Of course,
+ it should really be checking the events specified by map_button(),
+ which still doesn't work.
+
+- napms(0) now returns immediately.
+
+- A unified napms() implementation for DOS -- no longer throttles the
+ CPU when built with any compiler.
+
+- Allow backspace editing of the nocbreak() buffer.
+
+- pair_content(0, ...) is valid.
+
+- There was no check to ensure that the pnoutrefresh() window fit within
+ the screen. It now returns an ERR if it doesn't.
+
+- In X11, resize_term() must be called with parameters (0, 0), and only
+ when SP->resized is set, else it returns ERR.
+
+- Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's
+ web site.
+
+- slk_clear() now removes the buttons completely, as in ncurses.
+
+- Use the current foreground color for the line attributes (underline,
+ left, right), unless PDC_set_line_color() is explicitly called. After
+ setting the line color, you can reset it to this mode via
+ "PDC_set_line_color(-1)".
+
+- Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER().
+
+- Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch()
+ are now (again) the core functions.
+
+- Dropped or made static many obsolete, unused, and/or broken functions,
+ including PDC_chg_attrs(), PDC_cursor_on() and _off(),
+ PDC_fix_cursor(), PDC_get_attribute(), PDC_get_cur_col() and _row(),
+ PDC_set_80x25(), PDC_set_cursor_mode(), PDC_set_rows(),
+ PDC_wunderline(), PDC_wleftline(), PDC_wrightline(),
+ XCursesModifierPress() and XCurses_refresh_scrollbar().
+
+- Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR
+ _ENDLINE, _FULLWIN and _SCROLLWIN.
+
+- Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*,
+ _lasts*.
+
+- Obsolete/unused elements of the SCREEN struct: orgcbr, visible_cursor,
+ sizeable, shell, blank, cursor, orig_emulation, font, orig_font,
+ tahead, adapter, scrnmode, kbdinfo, direct_video, video_page,
+ video_seg, video_ofs, bogus_adapter. (Some of these persist outside
+ the SCREEN struct, in the platform directories.) Added mouse_wait and
+ key_code.
+
+- Removed all the EMALLOC stuff. Straight malloc calls were used
+ elsewhere; it was undocumented outside of comments in curspriv.h; and
+ there are better ways to use a substitute malloc().
+
+- Single mouse clicks are now reportable on all platforms (not just
+ double-clicks). And in general, mouse event reporting is more
+ consistent across platforms.
+
+- The mouse cursor no longer appears in full-screen mode in Win32 unless
+ a nonzero mouse event mask is used.
+
+- ALT-keypad input now works in Win32.
+
+- In Win32, SetConsoleMode(ENABLE_WINDOW_INPUT) is not useful, and
+ appears to be the source of a four-year-old bug report (hanging in
+ THE) by Phil Smith.
+
+- Removed the PDC_THREAD_BUILD stuff, which has never worked. For the
+ record: PDCurses is not thread-safe. Neither is ncurses; and the
+ X/Open curses spec explicitly makes it a non-requirement.
+
+- With the internal compose key system in the X11 port, modifier keys
+ were breaking out of the compose state, making it impossible to type
+ accented capitals, etc. Also, Multi_key is now the default compose
+ key, instead of leaving it undefined by default; and a few more combos
+ are supported.
+
+- In X11, the first reported mouse event after startup always read as a
+ double-click at position 0, 0. (This bug was introduced in 2.8.)
+
+- In X11, don't return selection start as a press event. (Shift-click on
+ button 1 is still returned.)
+
+- In X11, properly handle pasting of high-bit chars. (It was doing an
+ unwanted sign extension.)
+
+- In X11, BUTTON_MOVED was never returned, although PDC_MOUSE_MOVED was
+ set.
+
+- The fix in 2.8 for the scroll wheel in X11 wasn't very good -- it did
+ report the events as scroll wheel events, but it doubled them. Here's
+ a proper fix.
+
+- Changed mouse handling in X11: Simpler translation table, with
+ XCursesPasteSelection() called from XCursesButton() instead of the
+ translation table; require shift with button 1 or 2 for select or
+ paste when mouse events are being reported (as with ncurses), allowing
+ passthrough of simple button 2 events. This fixes the previously
+ unreliable button 2 behavior.
+
+- Modifier keys are now returned on key up in X11, as in Win32. And in
+ general, modifier key reporting is more consistent across platforms.
+
+- Modifiers are not returned as keys when a mouse click has occurred
+ since the key press.
+
+- In BIOS mode (in DOS), count successive identical output bytes, and
+ make only one BIOS call for all of them. This dramatically improves
+ performance.
+
+- The cursor position was not always updated correctly in BIOS mode.
+
+- In testcurs, the way the ACS test was written, it would really only
+ work with a) PDCurses (with any compiler), or b) gcc (with any
+ curses). Here's a more portable implementation.
+
+- Better reporting of mouse events in testcurs.
+
+- Blank out buffer and num before the scanw() test in testcurs, in case
+ the user just hits enter or etc.; clear the screen after resizing.
+
+- Allow tuidemo to use the last line.
+
+- Separate left/right modifier keys are now reported properly in Win32.
+ (Everything was being reported as _R.)
+
+- Attempts to redirect input in Win32 now cause program exit and an
+ error message, instead of hanging.
+
+- Dropped support for the Microway NDP compiler.
+
+- Some modules renamed, rearranged.
+
+- Fixes for errors and warnings when building with Visual C++ 2005.
+
+- In MSVC, the panel library didn't work with the DLL.
+
+- Complete export lists for DLLs.
+
+- Simplified makefiles; moved common elements to .mif files; better
+ optimization; strip demos when possible.
+
+- Changed makefile targets of "pdcurses.a/lib" and "panel.a/lib" to
+ $(LIBCURSES) and $(LIBPANEL). Suggestion of Doug Kaufman.
+
+- Changed "install" target in the makefile to a double-colon rule, to
+ get around a conflict with INSTALL on non-case-sensitive filesystems,
+ such as Mac OS X's HFS+. Reported by Douglas Godfrey et al.
+
+- Make PDCurses.man dependent on manext. Suggestion of Tiziano Mueller.
+
+- Set up configure.ac so autoheader works; removed some obsolescent
+ macros. Partly the suggestion of T.M.
+
+- The X11 port now builds in the x11 directory (including the demos), as
+ with other ports.
+
+- The X11 port should now build on more 64-bit systems. Partly due to
+ M.H.
+
+- The default window title and icons for the X11 port are now "PDCurses"
+ instead of "XCurses".
+
+- Internal functions and variables made static where possible.
+
+- Adopted a somewhat more consistent naming style: Internal functions
+ with external linkage, and only those, have the prefix "PDC_";
+ external variables that aren't part of the API use "pdc_"; static
+ functions use "_"; and "XC_" and "xc_" prefixes are used for functions
+ and variables, respectively, that are shared between both processes in
+ the X11 port. Also eliminated camel casing, where possible.
+
+- Changed the encoding for non-ASCII characters in comments and
+ documentation from Latin-1 to UTF-8.
+
+------------------------------------------------------------------------
+
+PDCurses 2.8 - 2006/04/01
+=========================
+
+As with the previous version, you should assume that apps linked against
+older dynamic versions of the library won't work with this one until
+recompiled.
+
+New features:
+
+- Simpler, faster.
+
+- Declarations for all supported, standard functions, per the X/Open
+ Curses 4.2 spec, with the notable exception of getch() and ungetch().
+ You can disable the use of the macro versions by defining NOMACROS
+ before including curses.h (see xmas.c for an example). NOMACROS yields
+ smaller but theoretically slower executables.
+
+- New functions: vwprintw(), vwscanw(), vw_printw() and vw_scanw(). This
+ completes the list of X/Open 4.2 functions, except for those concerned
+ with attr_t and wide characters. Some (especially the terminfo/termcap
+ functions) aren't yet fully fleshed out, though.
+
+- Non-macro implementations for COLOR_PAIR(), PAIR_NUMBER(), getbkgd(),
+ mvgetnstr(), mvwgetnstr(), mvhline(), mvvline(), mvwhline(), and
+ mvwvline(). (The macros are still available, too.)
+
+- newterm() works now, in a limited way -- the parameters are ignored,
+ and only the first invocation will work (i.e., only one SCREEN can be
+ used).
+
+- start_color() works now -- which is to say, if you _don't_ call it,
+ you'll only get monochrome output. Also, without calling it, the
+ terminal's default colors will be used, where supported (currently
+ only in Win32). This is equivalent to the PDC_ORIGINAL_COLORS behavior
+ introduced in 2.7, except that _only_ the default colors will be used.
+ (PDC_ORIGINAL_COLORS is still available, if you want to combine the
+ use of specific colors and the default colors.)
+
+- New logic for termname() and longname(): termname() always returns
+ "pdcurses"; longname() returns "PDCurses for [platform] [adapter]
+ [COLOR/MONO]-YxX" (adapter is only defined for DOS and OS/2). This is
+ the first time these functions return _anything_ in Win32.
+
+- New installation method for XCurses: the header files are placed in a
+ subdirectory "xcurses" within the include directory, rather than being
+ renamed. (But the renamed xcurses.h and xpanel.h are also installed,
+ for backwards compatibility.) curspriv.h and term.h are now available,
+ and existing curses-based code need no longer be edited to use
+ XCurses' curses.h. And with no more need for explicit XCursesExit()
+ calls (see below), your code need not be changed at all to move from
+ another curses implementation to XCurses. It can be as simple as "gcc
+ -I/usr/local/include/xcurses -lXCurses -oprogname progname.c".
+
+- Combined readme.* into this HISTORY file, and incorporated the old 1.x
+ (PCcurses) history.
+
+- New functionality for the testcurs demo: ACS character display; menu
+ support for PgUp, PgDn, Home and End; centered menu; and it can now
+ be resized in X.
+
+- Added modified versions of the rain and worm demos from ncurses.
+
+Bug fixes and such:
+
+- Big cleanup of dead and redundant code, including unneeded defines,
+ ifdefs, and structure elements.
+
+- flushinp() was not implemented for Win32.
+
+- resetty() was not restoring LINES and COLS.
+
+- nonl() made '\n' print a line feed without carriage return. This was
+ incorrect.
+
+- Removed bogus implementation of intrflush().
+
+- The line-breakout optimization system, disabled by default in 2.7, is
+ removed in 2.8. It simply didn't work, and never has. (The typeahead()
+ function remains, for compatibility, but does nothing.)
+
+- The declarations for the printw() and scanw() function families were
+ erroneously ifdef'd.
+
+- Safer printw() calls on platforms that support vsnprintf().
+
+- Use the native vsscanf() in DJGPP, MinGW and Cygwin.
+
+- ACS_BLOCK now works in X.
+
+- Explicit calls to XCursesExit() are no longer needed.
+
+- XCURSES is now defined automatically if not DOS, OS2 or WIN32.
+
+- The default icon for XCurses wasn't working (had to remove the focus
+ hint code to fix this). Also, the default title is now "XCurses"
+ instead of "main".
+
+- Incorrect dimensions (undercounting by two in each direction) were
+ shown while resizing in X.
+
+- Scroll wheel events were not always correctly reported in X.
+
+- 32 bits are enough for the "long" chtype, but 64 bits were used on a
+ 64-bit system, wasting memory. Now conditioned on _LP64. This could be
+ faster, too.
+
+- The short, 16-bit chtype now works with XCurses.
+
+- Corrected return value for is_linetouched(), is_wintouched(),
+ can_change_color() and isendwin() (bool instead of int).
+
+- timeout(), wtimeout(), idcok() and immedok() return void.
+
+- pair_content() takes a short.
+
+- Replaced incorrect usages of attr_t with chtype. attr_t is still
+ typedef'd, for backwards compatibility. (It's supposed to be used for
+ the WA_*-style functions, which PDCurses doesn't yet support.)
+
+- Added const where required by the spec, and in other appropriate
+ places.
+
+- Removed PDC_usleep(). napms() is now the core delay routine.
+
+- Fixed poll() support in napms().
+
+- Various changes to the internal PDC_* functions -- don't depend on
+ these, and don't use them unless you absolutely have to.
+
+- Some routines accessed window structures in their variable
+ declarations, _before_ checking for a NULL window pointer.
+
+- Dropped support for the undocumented PDC_FULL_DISPLAY, wtitle(), and
+ PDC_print().
+
+- Cleaned up remaining warnings.
+
+- Reduced unnecessary #include directives -- speeds up compilation.
+
+- Fix for demos build in Borland/DOS -- the makefile in 2.7 didn't
+ specify the memory model. Reported by Erwin Waterlander.
+
+- Simplified the makefiles; e.g., some now build each demo in a single
+ step, and Watcom no longer uses demos.lnk. Also, the demo exes are now
+ stripped when possible; maximum compression used for archives built
+ by the makefiles; xcurses-config removed as part of "make distclean";
+ and I tweaked optimization for some platforms.
+
+- Reverted to /usr/local/ as default installation directory for XCurses.
+
+- Upgraded to autoconf 2.59... instantly doubling the size of the
+ configure script. Ah well. Otherwise, simplified the build system.
+
+- Dropped support for pre-ANSI compilers. (It hasn't worked since at
+ least version 2.4, anyway.)
+
+- Revised and, I hope, clarified the boilerplate and other comments.
+
+- Simplified logging and RCS ids; added RCS ids where missing.
+
+- Consistent formatting for all code, approximately equivalent to
+ "indent -kr -i8 -bl -bli0", with adjustments for 80 columns.
+
+------------------------------------------------------------------------
+
+PDCurses 2.7 - 2005/12/30
+=========================
+
+INTRODUCTION:
+
+ Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses.
+ Here's a brief summary of changes in this release. (More details are
+ available in the CVS log and trackers on SourceForge.)
+
+NEW FEATURES:
+
+- Functions: delscreen(), getattrs(), has_key(), slk_color(),
+ wcolor_set(), wtimeout().
+
+- Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(),
+ mvwvline(), timeout(), wresize().
+
+- Stub implementations of terminfo functions (including a term.h).
+
+- More stubs for compatibility: filter(), getwin(), putwin(),
+ noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(),
+ scr_set(), use_env(), vidattr(), vidputs().
+
+- The terminal's default colors are used as curses' default colors when
+ the environment variable "PDC_ORIGINAL_COLORS" is set to any value
+ (Win32 only at the moment).
+
+- Simplified build system.
+
+- Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak
+ files for more info).
+
+- Minimal implementation of color_content() -- no longer a stub.
+
+- Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for
+ DOS/OS2/Win; "enhanced" versions of existing ACS characters used.
+
+- Support for scroll wheels.
+
+- Support for Pacific C.
+
+BUGS FIXED:
+
+- Builds correctly (including demos) on all tested platforms (see
+ below); nearly all compiler warnings have been cleaned up; the ptest
+ demo is built on all platforms; "clean" targets are improved.
+
+- The ability to build ncurses_tests has been restored (see demos dir).
+
+- Line-breakout optimization now defaults to off (equivalent to
+ "typeahead(-1)"), so output is not interrupted by keystrokes (it's
+ supposed to resume on the next refresh(), which wasn't working).
+
+- Implicit wrefresh() in wgetch() was not being invoked in nodelay mode.
+
+- subpad() was erroneously offsetting from the origin coordinates of the
+ parent pad (which are always -1,-1).
+
+- In wborder(), whline(), and wvline(), the current (wattrset) attribute
+ was being used, but not the current background (wbkgd).
+
+- Allow Russian 'r' character ASCII 0xe0 to be returned.
+
+- termattrs() now also returns A_UNDERLINE, A_REVERSE.
+
+- In Win32, with large scrollback buffers set, there was an unwanted
+ "scrollup" effect on startup.
+
+- Revamped keyboard handling for Win32.
+
+- New screen resize method for Win32.
+
+- napms(), delay_output(), etc. now work with Cygwin.
+
+- curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode --
+ the cursor stayed on.
+
+- The A_REVERSE attribute was broken in XCurses.
+
+- On 64-bit systems, XCurses was ignoring every other keystroke.
+
+- Added focus hints for XCurses.
+
+- Demos (except for tuidemo) once again have their proper titles in
+ XCurses (using Xinitscr() instead of the obsolete XCursesProgramName).
+
+- The 16-bit chtype is a working option again (by removing #define
+ CHTYPE_LONG from curses.h), except in XCurses. It's not recommended;
+ but if your needs are limited, it still works.
+
+- Reset screen size in resetty() under DOS, as in Win32 and OS/2.
+
+- Changes for cursor size under DOS.
+
+- Automatic setting of BIOS mode for CGA under DOS now works.
+
+- The cursor is now always updated in PDC_gotoxy(); this fixes the
+ problem of missing characters in BIOS mode.
+
+- Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(),
+ nl() and nonl() now return OK.
+
+- ERR and OK are now defined as -1 and 0, respectively, for
+ compatibility with other curses implementations -- note that this
+ change is not binary compatible; you'll have to rebuild programs that
+ use shared/dynamic libraries.
+
+- Added "const" to prototypes where appropriate.
+
+- Miscellaneous code cleanup.
+
+ACKNOWLEDGEMENTS:
+
+ Walter Briscoe
+ Jean-Pierre Demailly
+ Ruslan Fedyarov
+ Warren Gay
+ Florian Grosse-Coosmann
+ Vladimir Kokovic
+ Matt Maloy
+ K.H. Man
+ Michael Ryazanov
+ Ron Thibodeau
+ Alexandr Zamaraev
+
+ and of course, MARK HESSLING, for his over 13 years of service as the
+ maintainer of PDCurses. Plus, thanks to all who've reported bugs or
+ requested features. Apologies to anyone I've forgotten.
+
+ I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS;
+ DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2;
+ EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows;
+ recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++;
+ and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris.
+
+-- William McBrine
+
+------------------------------------------------------------------------
+
+PDCurses 2.6 - 2003/01/08
+=========================
+
+INTRODUCTION:
+
+ This release of PDCurses includes the following changes:
+
+BUGS FIXED:
+
+- Allow accented characters on Win32 platform when run on non-English
+ keyboards.
+
+- Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned.
+
+- Some bugs with halfdelay() fixed by William McBrine.
+
+- pechochar() should now work correctly.
+
+- redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi
+
+- Don't include "special" characters like KEY_SHIFT_L to be returned in
+ getnstr() family. Bug 542913
+
+- Entering TAB in wgetnstr() no longer exceeds requested buffer size.
+ Bug 489233
+
+- Fixed bug 550066, scrollok() and pads.
+ Also beep() called when buffer exceeded. Bug 562041.
+
+- Reverse video of X11 selection reinstated. Pablo Garcia Abio??
+
+- Right Alt modifier now works like left Alt modifier under Win32
+
+- Add support for all libXaw replacement libraries with Scrollbar bug.
+ Note that for this to work, you still have to change the libXaw
+ replacement libraries to fix the bug :-(
+
+- Don't trap signals in XCurses if calling application has ignored them.
+ Change by Frank Heckenbach.
+
+- Bug reports from Warren W. Gay:
+ - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms.
+ - Fix definition of getsyx() and setsyx() to be consistent with
+ ncurses. Bug 624424.
+ - Fix definition of echo() and noecho(). Bug 625001.
+ - Fix definition of keypad() and leaveok(). Bug 632653.
+ - Missing panel_hidden() prototype. Bug 649320.
+
+- Fixed bug with calling def_prog_mode(), resize_term(),
+ reset_prog_mode(); the resize details were being lost.
+
+NEW FEATURES:
+
+- Clipboard support now available on DOS platform, but handled
+ internally to the currently running process.
+
+- New X11 resource: textCursor, allows the text cursor to be specified
+ as a vertical bar, or the standard horizontal bar. Thanks to Frank
+ Heckenbach for the suggestion.
+
+NEW COMPILER SUPPORT:
+
+- lcc-win32 now works correctly
+
+------------------------------------------------------------------------
+
+PDCurses 2.5 - 2001/11/26
+=========================
+
+INTRODUCTION:
+
+ This release of PDCurses includes the following changes:
+
+- Set BASE address for Win32 DLL
+
+- Add KEY_SUP and KEY_SDOWN.
+
+- Add PDC_set_line_color()
+
+- Add blink support as bold background
+
+- Add bold colors
+
+- Add getbkgd() macro
+
+- Add new PDC functions for adding underline, overline, leftline and
+ rightline
+
+- Add support for shifted keypad keys.
+
+- Allow more keypad keys to work under Win32
+
+- Change Win32 and OS/2 DLL name to curses.dll
+
+- Change example resources to allow overriding from the command line
+
+- Changes for building cleanly on OS/2
+
+- Changes to handle building XCurses under AIX
+
+- Check if prefresh() and pnoutrefresh() parameters are valid.
+
+- Ensure build/install works from any directory
+
+- Handle platforms where X11 headers do not typedef XPointer.
+
+- Mention that Flexos is likely out-of-date.
+
+- Pass delaytenths to XCurses_rawgetch()
+
+- Remove boldFont
+
+- Updates for cursor blinking and italic.
+
+BUGS FIXED:
+
+- Fix bug with getting Win32 clipboard contents. Added new
+ PDC_freeclipboard() function.
+
+- Fix bug with halfdelay()
+
+- Fix bug with mouse interrupting programs that are not trapping mouse
+ events under Win32.
+
+- Fix return value from curs_set()
+
+- Reverse the left and right pointing bars in ALT_CHARSET
+
+NEW COMPILER SUPPORT:
+
+- Add QNX-RTP port
+
+------------------------------------------------------------------------
+
+PDCurses 2.4 - 2000/01/17
+=========================
+
+INTRODUCTION:
+
+ This release of PDCurses includes the following changes:
+
+- full support of X11 selection handling
+
+- removed the need for the cursos2.h file
+
+- enabled the "shifted" key on the numeric keypad
+
+- added native clipboard support for X11, Win32 and OS/2
+
+- added extra functions for obtaining internal PDCurses status
+
+- added clipboard and key modifier tests in testcurs.c
+
+- fixes for panel library
+
+- key modifiers pressed by themselves are now returned as keys:
+ KEY_SHIFT_L KEY_SHIFT_R KEY_CONTROL_L KEY_CONTROL_R KEY_ALT_L KEY_ALT_R
+ This works on Win32 and X11 ports only
+
+- Added X11 shared library support
+
+- Added extra slk formats supported by ncurses
+
+- Fixed bug with resizing the terminal when slk were on.
+
+- Changed behavior of slk_attrset(), slk_attron() slk_attroff()
+ functions to work more like ncurses.
+
+BUGS FIXED:
+
+- some minor bug and portability fixes were included in this release
+
+NEW FUNCTIONS:
+
+- PDC_getclipboard() and PDC_setclipboard() for accessing the native
+ clipboard (X11, Win32 and OS/2)
+
+- PDC_set_title() for setting the title of the window (X11 and Win32
+ only)
+
+- PDC_get_input_fd() for getting the file handle of the PDCurses input
+
+- PDC_get_key_modifiers() for getting the keyboard modifier settings at
+ the time of the last (w)getch()
+
+- Xinitscr() (only for X11 port) which allows standard X11 switches to
+ be passed to the application
+
+NEW COMPILER SUPPORT:
+
+- MingW32 GNU compiler under Win95/NT
+
+- Cygnus Win32 GNU compiler under Win95/NT
+
+- Borland C++ for OS/2 1.0+
+
+- lcc-win32 compiler under Win95/NT
+
+ACKNOWLEDGEMENTS: (for this release)
+
+ Georg Fuchs for various changes.
+ Juan David Palomar for pointing out getnstr() was not implemented.
+ William McBrine for fix to allow black/black as valid color pair.
+ Peter Preus for pointing out the missing bccos2.mak file.
+ Laura Michaels for a couple of bug fixes and changes required to
+ support Mingw32 compiler.
+ Frank Heckenbach for PDC_get_input_fd() and some portability fixes and
+ the fixes for panel library.
+ Matthias Burian for the lcc-win32 compiler support.
+
+------------------------------------------------------------------------
+
+PDCurses 2.3 - 1998/07/09
+=========================
+
+INTRODUCTION:
+
+ This release of PDCurses includes the following changes:
+
+- added more System V R4 functions
+
+- added Win32 port
+
+- the X11 port is now fully functional
+
+- the MS Visual C++ Win32 port now includes a DLL
+
+- both the X11 and Win32 ports support the mouse
+
+- the slk..() functions are now functional
+
+- support for scrollbars under X11 are experimental at this stage
+
+- long chtype extended to non-Unix ports
+
+ The name of the statically built library is pdcurses.lib (or
+ pdcurses.a). The name of the DLL import library (where applicable) is
+ curses.lib.
+
+BUGS FIXED:
+
+- some minor bugs were corrected in this release
+
+NEW FUNCTIONS:
+
+- slk..() functions
+
+NEW COMPILER SUPPORT:
+
+- MS Visual C++ under Win95/NT
+
+- Watcom C++ under OS/2, Win32 and DOS
+
+- two EMX ports have been provided:
+ - OS/2 only using OS/2 APIs
+ - OS/2 and DOS using EMX video support routines
+
+EXTRA OPTIONS:
+
+ PDCurses recognizes two environment variables which determines the
+ initialization and finalization behavior. These environment variables
+ do not apply to the X11 port.
+
+ PDC_PRESERVE_SCREEN
+ If this environment variable is set, PDCurses will not clear the screen
+ to the default white on black on startup. This allows you to overlay
+ a window over the top of the existing screen background.
+
+ PDC_RESTORE_SCREEN
+ If this environment variable is set, PDCurses will take a copy of the
+ contents of the screen at the time that PDCurses is started; initscr(),
+ and when endwin() is called, the screen will be restored.
+
+
+ACKNOWLEDGEMENTS: (for this release)
+
+ Chris Szurgot for original Win32 port.
+ Gurusamy Sarathy for some updates to the Win32 port.
+ Kim Huron for the slk..() functions.
+ Florian Grosse Coosmann for some bug fixes.
+ Esa Peuha for reducing compiler warnings.
+ Augustin Martin Domingo for patches to X11 port to enable accented
+ characters.
+
+------------------------------------------------------------------------
+
+PDCurses 2.2 - 1995/02/12
+=========================
+
+INTRODUCTION:
+
+ This release of PDCurses has includes a number of major changes:
+
+- The portable library functions are now grouped together into single
+ files with the same arrangement as System V R4 curses.
+
+- A panels library has been included. This panels library was written by
+ Warren Tucker.
+
+- Quite a few more functions have been supplied by Wade Schauer and
+ incorporated into release 2.2. Wade also supplied the support for the
+ Microway NDP C/C++ 32 bit DOS compiler.
+
+- The curses datatype has been changed from an unsigned int to a long.
+ This allows more attributes to be stored as well as increasing the
+ number of color-pairs from 32 to 64.
+
+- Xwindows port (experimental at the moment).
+
+BUGS FIXED:
+
+- mvwin() checked the wrong coordinates
+
+- removed DESQview shadow memory buffer checking bug in curses.h in
+ #define for wstandout()
+
+- lots of others I can't remember
+
+NEW FUNCTIONS:
+
+- Too many to mention. See intro.man for a complete list of the
+ functions PDCurses now supports.
+
+COMPILER SUPPORT:
+
+- DJGPP 1.12 is now supported. The run-time error that caused programs
+ to crash has been removed.
+
+- emx 0.9a is supported. A program compiled for OS/2 should also work
+ under DOS if you use the VID=EMX switch when compiling. See the
+ makefile for details.
+
+- The Microway NDP C/C++ DOS compiler is now supported. Thanks to Wade
+ Schauer for this port.
+
+- The Watcom C++ 10.0 DOS compiler is now supported. Thanks to Pieter
+ Kunst for this port.
+
+- The library now has many functions grouped together to reduce the size
+ of the library and to improve the speed of compilation.
+
+- The "names" of a couple of the compilers in the makefile has changed;
+ CSET2 is now ICC and GO32 is now GCC.
+
+EXTRA OPTIONS:
+
+ One difference between the behavior of PDCurses and Unix curses is the
+ attributes that are displayed when a character is cleared. Under Unix
+ curses, no attributes are displayed, so the result is always black.
+ Under PDCurses, these functions clear with the current attributes in
+ effect at the time. With the introduction of the bkgd functions, by
+ default, PDCurses clears using the value set by (w)bkgd(). To have
+ PDCurses behave the same way as it did before release 2.2, compile with
+ -DPDCURSES_WCLR
+
+ACKNOWLEDGEMENTS: (for this release)
+
+ Pieter Kunst, David Nugent, Warren Tucker, Darin Haugen, Stefan Strack,
+ Wade Schauer and others who either alerted me to bugs or supplied
+ fixes.
+
+------------------------------------------------------------------------
+
+PDCurses 2.1 - 1993/06/20
+=========================
+
+INTRODUCTION:
+
+ The current code contains bug fixes for the DOS and OS/2 releases and
+ also includes an alpha release for Unix. The Unix release uses another
+ public domain package (mytinfo) to handle the low-level screen writes.
+ mytinfo was posted to comp.sources.unix (or misc) in December 1992 or
+ January 1993. Unless you are a glutton for punishment I would recommend
+ you avoid the Unix port at this stage.
+
+ The other major addition to PDCurses is the support for DJGPP (the DOS
+ port of GNU C++). Thanks to David Nugent <davidn at csource.oz.au>.
+
+ Other additions are copywin() function, function debugging support and
+ getting the small and medium memory models to work. The testcurs.c demo
+ program has also been changed significantly and a new demo program,
+ tuidemo, has been added.
+
+ Some people have suggested including information on where to get dmake
+ from. oak.oakland.edu in /pub/msdos/c
+
+OTHER NOTES:
+
+ Under DOS, by default, screen writes to a CGA monitor are done via the
+ video BIOS rather than by direct video memory writes. This is due to
+ the CGA "snow" problem. If you have a CGA monitor and do not suffer
+ from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
+ This will then use cause PDCurses to write directly to the CGA video
+ memory.
+
+ Function debugging: Firstly to get function debugging, you have to
+ compile the library with OPT=N in the makefile. This also turns on
+ compiler debugging. You can control when you want PDCurses to write to
+ the debug file (called trace in the current directory) by using the
+ functions traceon() and traceoff() in your program.
+
+ Microsoft C 6.00 Users note:
+ ----------------------------
+
+ With the addition of several new functions, using dmake to compile
+ PDCurses now causes the compiler to run "out of heap space in pass 2".
+ Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes this
+ problem; hence the -EM switch.
+
+ Functional changes
+ ------------------
+
+ Added OS/2 DLL support.
+
+ A few curses functions have been fixed to exhibit their correct
+ behavior and make them more functionally portable with System V
+ curses. The functions that have changed are overlay(), overwrite() and
+ typeahead.
+
+ overlay() and overwrite()
+
+ Both of theses functions in PDCurses 2.0 allowed for one window to be
+ effectively placed on top of another, and the characters in the first
+ window were overlaid or overwritten starting at 0,0 in both windows.
+ This behavior of these functions was not correct. These functions only
+ operate on windows that physically overlap with respect to the
+ displayed screen. To achieve the same functionality as before, use the
+ new function copywin(). See the manual page for further details.
+
+ typeahead()
+
+ This function in PDCurses 2.0 effectively checked to see if there were
+ any characters remaining in the keyboard buffer. This is not the
+ behavior exhibited by System V curses. This function is intended
+ purely to set a flag so that curses can check while updating the
+ physical screen if any keyboard input is pending. To achieve the same
+ effect with typeahead() under PDCurses 2.1 the following code should be
+ used.
+
+ In place of...
+
+ while(!typeahead(stdin))
+ {
+ /* do something until any key is pressed... */
+ }
+
+ use...
+
+ /* getch() to return ERR if no key pending */
+ nodelay(stdscr,TRUE);
+ while(getch() == (ERR))
+ {
+ /* do something until any key is pressed... */
+ }
+
+
+ACKNOWLEDGEMENTS: (in no particular order)
+
+ Jason Shumate, Pieter Kunst, David Nugent, Andreas Otte, Pasi
+ Hamalainen, James McLennan, Duane Paulson, Ib Hojme
+
+ Apologies to anyone I may have left out.
+
+------------------------------------------------------------------------
+
+PDCurses 2.0 - 1992/11/23
+=========================
+
+INTRODUCTION:
+
+ Well, here it finally is; PDCurses v2.0.
+
+ PDCurses v2.0 is an almost total rewrite of PCcurses 1.4 done by John
+ 'Frotz' Fa'atuai, the previous maintainer. It adds support for OS/2 as
+ well as DOS.
+
+ This version has been tested with Microsoft C v6.0, QuickC v2.0 and
+ Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02
+ under OS/2 2.0. Also the library has been compiled successfully with
+ emx 0.8e, C Set/2 and Watcom 9. Most testing was done with the large
+ memory model, where applicable. The large memory model is probably the
+ best model to use.
+
+ The amount of testing has not been as extensive as I would have liked,
+ but demands on releasing a product have outweighed the product's
+ quality. Nothing new with that !! Hopefully with wider circulation,
+ more bugs will be fixed more quickly.
+
+ I have included just 1 makefile which is suitable for dmake 3.8 for
+ both DOS and OS/2. The makefile does not rely on customization of the
+ dmake.ini file.
+
+ If you discover bugs, and especially if you have fixes, please let me
+ know ASAP.
+
+ The source to the library is distributed as a zip file made with zip
+ 1.9. You will need Info-ZIP unzip 5.0 to unzip. Follow the directions
+ below to compile the library.
+
+DIRECTIONS:
+
+ 1. Create a new directory in which to unzip pdcurs20.zip. This will
+ create a curses directory and a number of subdirectories containing
+ source code for the library and utilities and the documentation.
+
+ 2. Make changes to the makefile where necessary:
+ Change the MODEL or model macro to the appropriate value (if it
+ applies to your compiler). Use model for Borland compilers.
+
+ Change any paths in the defined macros to be suitable for your
+ compiler.
+
+ 3. Invoke DMAKE [-e environment_options] [target]
+
+ where environment_options are:
+
+ OS (host operating system)
+ COMP (compiler)
+ OPT (optimized version or debug version) - optional. default Y
+ TOS (target operating system) - optional. default OS
+
+ see the makefile for valid combinations
+
+ targets: all, demos, lcursesd.lib, manual...
+
+ NB. dmake is case sensitive with targets, so those environments that
+ use an upper case model value (eg MSC) MUST specify the library
+ target as for eg. Lcursesd.lib
+
+ The makefile is by default set up for Borland C++. The use of -e
+ environment_options override these defaults. If you prefer, you can
+ just change the defaults in the makefile and invoke it without the
+ -e switch.
+
+OTHER NOTES:
+
+ The documentation for the library is built into each source file, a
+ couple of specific doc files and the header files. A program is
+ supplied (manext) to build the manual. This program gets compiled when
+ you build the documentation.
+
+ To generate the library response file correctly, I had to write a quick
+ and dirty program (buildlrf) to achieve this. Originally the makefiles
+ just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" which appended
+ a suitable line to the response file. Unfortunately under some
+ combinations of makefiles and command processors (eg. nmake and 4DOS)
+ the & would get treated as stderr and the echo command would fail.
+
+ The original source for PDCurses that I received from the previous
+ maintainer contained support for the FLEXOS operating system. Not
+ having access to it, I could not test the changes I made so its support
+ has fallen by the wayside. If you really need to have PDCurses running
+ under FLEXOS, contact me and I will see what can be arranged.
+
+ Under DOS, by default, screen writes to a CGA monitor are done via the
+ video BIOS rather than by direct video memory writes. This is due to
+ the CGA "snow" problem. If you have a CGA monitor and do not suffer
+ from snow, you can compile private\_queryad.c with CGA_DIRECT defined.
+ This will then use cause PDCurses to write directly to the CGA video
+ memory.
+
+ Added System V color support.
+
+COMPILER-SPECIFIC NOTES:
+
+ Microsoft C
+ -----------
+
+ It is possible with MSC 6.0 to build the OS/2 libraries and demo
+ programs from within DOS. This is the only case where it is possible to
+ specify the value of TOS on the command line to be OS2 and the value of
+ OS be DOS.
+
+ C Set/2
+ -------
+
+ I have only tested the library using the migration libraries. I doubt
+ that the demo programs will work without them.
+
+ emx
+ ---
+
+ Testing has been done with 0.8e of emx together with the 16_to_32
+ libraries. The emx\lib directory should include the vio32.lib and
+ kbd32.lib libraries from the 16_to_32 package.
+
+BUGS and UNFINISHED BUSINESS:
+
+- PDC_set_ctrl_break() function does not work under OS/2.
+
+- win_print() and PDC_print() do not work under OS/2.
+
+- The file todo.man in the doc directory also lists those functions of
+ System V 3.2 curses not yet implemented. Any volunteers?
+
+ACKNOWLEDGEMENTS:
+
+ John 'Frotz' Fa'atuai, the previous maintainer for providing an
+ excellent base for further development.
+ John Burnell <johnb at kea.am.dsir.govt.nz>, for the OS/2 port.
+ John Steele, Jason (finally NOT a John) Shumate....
+ for various fixes and suggestions.
+ Eberhardt Mattes (author of emx) for allowing code based on his
+ C library to be included with PDCurses.
+ Several others for their support, moral and actual.
+
+-- Mark Hessling
+
+------------------------------------------------------------------------
+
+PDCurses 2.0Beta - 1991/12/21
+=============================
+
+Changed back from short to int. (int is the correct size for the default
+platform. Short might be too short on some platforms. This is more
+portable. I, also, made this mistake.)
+
+Many functions are now macros. If you want the real thing, #undef the
+macro. (X/Open requirement.)
+
+Merged many sources into current release.
+
+Added many X/Open routines (not quite all yet).
+
+Added internal documentation to all routines.
+
+Added a HISTORY file to the environment.
+
+Added a CONTRIB file to the environment.
+
+------------------------------------------------------------------------
+
+PDCurses 1.5Beta - 1990/07/14
+=============================
+
+Added many levels of compiler support. Added mixed prototypes for all
+"internal" routines. Removed all assembly language. Added EGA/VGA
+support. Converted all #ifdef to #if in all modules except CURSES.H and
+CURSPRIV.H. Always include ASSERT.H. Added support for an external
+malloc(), calloc() and free(). Added support for FAST_VIDEO
+(direct-memory writes). Added various memory model support (for
+FAST_VIDEO). Added much of the December 1988 X/Open Curses
+specification.
+
+-- John 'Frotz' Fa'atuai
+
+------------------------------------------------------------------------
+
+PCcurses 1.4 - 1990/01/14
+=========================
+
+ In PCcurses v.1.4, both portability improvements and bugfixes have
+been made. The files have been changed to allow lint-free compilation
+with Microsoft C v.5.1, and with Turbo C v.2.0. The source should still
+compile without problems on older compilers, although this has not been
+verified.
+
+ The makefiles have been changed to suit both the public release and
+the author, who maintains a special kind of libraries for himself. In
+the case of Microsoft C, changes were done in the makefile to lower the
+warning level to 2 (was 3). This was to avoid ANSI warnings which are
+abundant because PCcurses does not attempt to follow strict ANSI C
+standard.
+
+ BUG FIXES FROM V.1.3 TO V.1.4:
+
+ !!!IMPORTANT CHANGE!!!
+
+ The definitions for OK and ERR in curses.h were exchanged. This was
+done to be more consistent with UNIX versions. Also, it permits
+functions like newwin() and subwin() to return 0 (=NULL) when they fail
+due to memory shortage. This incompatibility with UNIX curses was
+pointed out by Fred C. Smith. If you have tested success/failure by
+comparisons to anything other than ERR and OK, your applications will
+need to be be changed on that point. Sorry... but presumably most of you
+used the symbolic constants?
+
+ (END OF IMPORTANT CHANGE)
+
+ Fred also pointed out a bug in the file update.c. The bug caused the
+first character printed after 'unauthorized' screen changes (like during
+a shell escape, for example) to be placed at the wrong screen position.
+This happened even if the normal precautions (clear / touch / refresh)
+were taken. The problem has now been fixed.
+
+ PCcurses is currently also being used on a 68000 system with
+hard-coded ESCape sequences for ANSI terminals. However, ints used by
+the 68000 C compiler are 32 bits. Therefore ints have been turned into
+shorts wherever possible in the code (otherwise all window structures
+occupy twice as much space as required on the 68000). This does not
+affect PC versions since normally both ints and shorts are 16 bits for
+PC C compilers.
+
+ At some places in the source code there are references made to the
+68000 version. There are also a makefile, a curses68.c file, and a
+curses68.cmd file. These are for making, low-level I/O, and linking
+commands when building the 68000 version. These files are probably
+useful to no-one but the author, since it is very specific for its
+special hardware environment. Still in an effort to keep all
+curses-related sources in one place they are included. Note however that
+PCcurses will not officially support a non-PC environment.
+
+ The file cursesio.c, which was included in the package at revision
+level 1.2, and which was to be an alternative to the cursesio.asm file,
+has been verified to behave incorrectly in the function _curseskeytst().
+The problem was that the value of 'cflag' does not contain the proper
+data for the test that is attempted. Furthermore, neither Turbo C or
+Microsoft C allows any way to return the data that is needed, and
+consequently you should not use cursesio.c. The best solution is to
+simply use the ASM version. In v.1.2 and v.1.3, the user could edit the
+makefile to select which version he wanted to use. The makefiles in
+v.1.4 have removed this possibility forcing the use of the ASM file, and
+cursesio.c has been dropped from the distribution.
+
+ A bug in the wgetstr() function caused PCcurses to echo characters
+when reading a keyboard string, even if the echo had been turned off.
+Thanks to Per Foreby at Lund University, Sweden, for this. Per also
+reported bugs concerning the handling of characters with bit 8 set.
+Their ASCII code were considered as lower than 32, so they were erased
+etc. like control characters, i.e. erasing two character positions. The
+control character test was changed to cope with this.
+
+ The overlay() and overwrite() functions were changed so that the
+overlaying window is positioned at its 'own' coordinates inside the
+underlying window (it used to be at the underlying window's [0,0]
+position). There is some controversy about this - the documentation for
+different curses versions say different things. I think the choice made
+is the most reasonable.
+
+ The border() and wborder() functions were changed to actually draw a
+border, since this seems to be the correct behavior of these functions.
+They used to just set the border characters to be used by box(). These
+functions are not present in standard BSD UNIX curses.
+
+ The subwin() function previously did not allow the subwindow to be as
+big as the original window in which it was created. This has now been
+fixed. There was also the problem that the default size (set by
+specifying numlines or numcols (or both) as 0 made the resulting actual
+size 1 line/column too small.
+
+ There were a few spelling errors in function names, both in the
+function declarations and in curses.h. This was reported by Carlos
+Amaral at INESC in Portugal. Thanks! There was also an unnecessary (but
+harmless) parameter in a function call at one place.
+
+------------------------------------------------------------------------
+
+PCcurses 1.3 - 1988/10/05
+=========================
+
+ The file 'border.c' is now included. It allows you to explicitly
+specify what characters should be used as box borders when the box()
+functions are called. If the new border characters are non-0, they
+override the border characters specified in the box() call. In my
+understanding, this functionality is required for AT&T UNIX sV.3
+compatibility. Thanks for this goes to Tony L. Hansen
+(hansen at pegasus.UUCP) for posting an article about it on Usenet
+(newsgroup comp.unix.questions; his posting was not related at all to
+PCcurses).
+
+ The only other difference between v.1.2 and v.1.3 is that the latter
+has been changed to avoid warning diagnostics if the source files are
+compiled with warning switches on (for Microsoft this means '-W3', for
+Turbo C it means '-w -w-pro'). Of these, the Turbo C warning check is
+clearly to be used rather than Microsoft, even if neither of them comes
+even close to a real UNIX 'lint'. Some of the warnings in fact indicated
+real bugs, mostly functions that did not return correct return values or
+types.
+
+ The makefiles for both MSC and TRC have been modified to produce
+warning messages as part of normal compilation.
+
+------------------------------------------------------------------------
+
+PCcurses 1.2 - 1988/10/02
+=========================
+
+ The changes from v.1.1 to v.1.2 are minor. The biggest change is that
+there was a bug related to limiting the cursor movement if the
+application tried to move it outside the screen (something that should
+not be done anyway). Such erroneous application behavior is now handled
+appropriately.
+
+ All modules have been changed to have a revision string in them, which
+makes it easier to determine what version is linked into a program (or
+what library version you have).
+
+ There is now a 'cursesio.c' file. That file does the same as
+'cursesio.asm' (i.e. it provides the interface to the lower-level system
+I/O routines). It is written in C and thus it is (possibly) more
+portable than the assembler version (but still not so portable since it
+uses 8086 INT XX calls directly). When one creates new curses libraries,
+one chooses whether to use the assembler or the C version of cursesio.
+The choice is made by commenting out the appropriate dependencies for
+cursesio.obj, near the end of the makefiles.
+
+ There is now a 'setmode.c' file. That file contains functions that
+save and restore terminal modes. They do it into other variables than do
+savetty() and resetty(), so one should probably use either
+savetty()/resetty() or the new functions only - and not mix the both
+ways unless one really knows what one does.
+
+ Diff lists vs v.1.0 are no longer included in the distribution. The
+make utility still is. PCcurses v.1.2 still compiles with Microsoft C
+v.4.0, and with Borland Turbo C v.1.0. There is as far as I know no
+reason to believe that it does not compile under Microsoft C v.3.0 and
+5.x, or Turbo C v.1.5, but this has not been tested.
+
+ There are two makefiles included, one for Microsoft C, one for Turbo
+C. They are both copies of my personal makefiles, and as such they
+reflect the directory structure on my own computer. This will have to be
+changed before you run make. Check $(INCDIR) and $(LIBDIR) in
+particular, and make the choice of ASM or C cursesio version as
+mentioned above (the distribution version uses the C version of
+cursesio).
+
+ The manual file (curses.man) has been changed at appropriate places.
+
+ I would like to thank the following persons for their help:
+
+ Brandon S. Allbery (alberry at ncoast.UUCP)
+ for running comp.binaries.ibm.pc (at that time)
+ and comp.source.misc.
+
+ Steve Balogh (Steve at cit5.cit.oz.AU)
+ for writing a set of manual pages and posting
+ them to the net.
+
+ Torbjorn Lindh
+ for finding bugs and suggesting raw
+ character output routines.
+
+ Nathan Glasser (nathan at eddie.mit.edu)
+ for finding and reporting bugs.
+
+ Ingvar Olafsson (...enea!hafro!ingvar)
+ for finding and reporting bugs.
+
+ Eric Rosco (...enea!ipmoea!ericr)
+ for finding and reporting bugs.
+
+ Steve Creps (creps at silver.bacs.indiana.edu)
+ for doing a lot of work - among others
+ posting bug fixes to the net, and writing
+ the new cursesio.c module.
+
+ N. Dean Pentcheff (dean at violet.berkeley.edu)
+ for finding bugs and rewriting cursesio.asm
+ for Turbo 'C' 1.5.
+
+ Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff)
+ (jeff at ads.arpa)
+ has had a shareware version of curses deliverable since
+ about half a year before I released PCcurses 1.0 on Use-
+ Net. He is very concerned about confusion between the two
+ packages, and therefore any references on the network
+ should make clear whether they reference Dean's PCcurses
+ or Larsson's PCcurses.
+
+------------------------------------------------------------------------
+
+PCcurses 1.1 - 1988/03/06
+=========================
+
+ The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes,
+and new (non-portable) functions for verbatim IBM character font display
+have been added (in charadd.c and charins.c). The manual file
+(curses.man) has been changed at appropriate places.
+
+ In the file v10tov11.dif there are listings of the differences between
+version 1.0 and 1.1. The diff listings are in UNIX diff(1) format.
+
+ Version 1.1 compiles with Turbo C v.1.0, as well as Microsoft C v.3.0
+and v.4.0. On the release disk there is a make.exe utility which is very
+similar to UNIX make (If the package was mailed to you, the make utility
+will be in uuencoded format - in make.uu - and must be uudecoded first).
+It is much more powerful than Microsoft's different MAKEs; the latter
+ones will NOT generate libraries properly if used with the PCcurses
+makefiles.
+
+ There are three makefiles:
+
+ makefile generic MSC 3.0 makefile
+ makefile.ms MSC 4.0 makefile
+ makefile.tc Turbo C 1.0 makefile
+
+ To make a library with for example Turbo C, make directories to hold
+.H and .LIB files (these directories are the 'standard places'), edit
+makefile.tc for this, and type
+
+ make -f makefile.tc all
+
+and libraries for all memory models will be created in the .LIB
+directory, while the include files will end up in the .H directory. Also
+read what is said about installation below!
+
+------------------------------------------------------------------------
+
+PCcurses 1.0 - 1987/08/24
+=========================
+
+ This is the release notes for the PCcurses v.1.0 cursor/window control
+package. PCcurses offers the functionality of UNIX curses, plus some
+extras. Normally it should be possible to port curses-based programs
+from UNIX curses to PCcurses on the IBM PC without changes. PCcurses is
+a port/ rewrite of Pavel Curtis' public domain 'ncurses' package. All
+the code has been re-written - it is not just an edit of ncurses (or
+UNIX curses). I mention this to clarify any copyright violation claims.
+The data structures and ideas are very similar to ncurses. As for UNIX
+curses, I have not even seen any sources for it.
+
+ For an introduction to the use of 'curses' and its derivatives, you
+should read 'Screen Updating and Cursor Movement Optimization: A Library
+Package' by Kenneth C. R. C. Arnold, which describes the original
+Berkeley UNIX version of curses. It is available as part of the UNIX
+manuals. The other source of information is 'The Ncurses Reference
+Manual' by Pavel Curtis. The latter is part of Curtis' ncurses package.
+
+ The only other documentation provided is a 'man' page which describes
+all the included functions in a very terse way. In the sources, each
+function is preceded by a rather thorough description of what the
+function does. I didn't have time to write a nice manual/tutorial -
+sorry.
+
+ PCcurses is released as a number of source files, a man page, and a
+make file. A uuencoded copy of a 'make' utility, and a manpage for the
+'make' is also provided to make it easier to put together PCcurses
+libraries. Even if you are not interested in PCcurses, it may be
+worthwhile to grab the make.
+
+ The makefile assumes the presence of the Microsoft C compiler (3.0 or
+4.0), Microsoft MASM and LIB, plus some MS-DOS utilities. The reason for
+supplying MAKE.EXE is that the Microsoft 'MAKE:s' are much inferior to a
+real UNIX make. The supplied make is a port of a public domain make,
+published on Usenet. It is almost completely compatible with UNIX make.
+When generating the curses libraries, the makefile will direct make to
+do some directory creating and file copying, and then re-invoke itself
+with new targets. The workings of the makefile are not absolutely
+crystal clear at first sight... just start it and see what it does.
+
+ For portability, the curses libraries depend on one assembler file for
+access to the BIOS routines. There is no support for the EGA, but both
+CGA, MGA, and the HGA can be used. The libraries are originally for
+Microsoft C, but all C modules should be portable right away. In the
+assembler file, segment names probably need to be changed, and possibly
+the parameter passing scheme. I think Turbo C will work right away - as
+far as I understand, all its conventions are compatible with Microsoft
+C.
+
+ There are some parts left out between ncurses and PCcurses. One is the
+support for multiple terminals - not very interesting on a PC anyway.
+Because we KNOW what terminal we have, there is no need for a termcap or
+terminfo library. PCcurses also has some things that neither curses nor
+ncurses have. Compared to the original UNIX curses, PCcurses has lots of
+extras.
+
+ The BIOS routines are used directly, which gives fast screen updates.
+PCcurses does not do direct writes to screen RAM - in my opinion it is
+a bit ugly to rely that much on hardware compatibility. Anyone could fix
+that, of course...
+
+ One of the more serious problems with PCcurses is the way in which
+normal, cbreak, and raw input modes are done. All those details are in
+the 'charget' module - I do raw I/O via the BIOS, and perform any
+buffering myself. If an application program uses PCcurses, it should do
+ALL its I/O via PCcurses calls, otherwise the mix of normal and
+PCcurses I/O may mess up the display. I think my code is reasonable...
+comments are welcome, provided you express them nicely...
+
+ To install, copy all files to a work directory, edit 'makefile' to
+define the standard include and library file directory names of your
+choice (these directories must exist already, and their path names must
+be relative to the root directory, not to the current one). You must
+also run uudecode on make.uu, to generate MAKE.EXE. You can do that on
+your PC, if you have uudecode there, otherwise you can do it under UNIX
+and do a binary transfer to the PC. When you have MAKE.EXE in your work
+directory (or in your /bin directory), type make.
+
+ Make will now create 4 sub-directories (one for each memory model),
+copy some assembler include files into them, copy two include files to
+your include directory, CHDIR to each sub-directory and re-invoke itself
+with other make targets to compile and assemble all the source files
+into the appropriate directories. Then the library manager is run to
+create the library files in your desired library directory. Presto!
+
+ If you only want to generate a library for one memory model, type
+'make small', 'make large', etc. The name of the memory model must be in
+lower case, like in the makefile.
+
+ I think the package is fairly well debugged - but then again, that's
+what I always think. It was completed in May-87, and no problems found
+yet. Now it's your turn... Comments, suggestions and bug reports and
+fixes (no flames please) to
+
+-- Bjorn Larsson
diff --git a/payloads/libpayload/curses/PDCurses/IMPLEMNT b/payloads/libpayload/curses/PDCurses/IMPLEMNT
new file mode 100644
index 0000000..0445f8b
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/IMPLEMNT
@@ -0,0 +1,325 @@
+PDCurses Implementor's Guide
+============================
+
+Version 1.3 - 200?/??/?? - notes about official ports
+Version 1.2 - 2007/07/11 - added PDC_init_pair(), PDC_pair_content(),
+ version history; removed pdc_atrtab
+Version 1.1 - 2007/06/06 - minor cosmetic change
+Version 1.0 - 2007/04/01 - initial revision
+
+This document is for those wishing to port PDCurses to a new platform,
+or just wanting to better understand how it works. Nothing here should
+be needed for application programming; for that, refer to PDCurses.txt,
+as built in doc/, or distributed as a file separate from this source
+package. This document assumes that you've read the user-level
+documentation and are very familiar with application-level curses
+programming.
+
+If you want to submit your port for possible inclusion into the main
+PDCurses distribution, please follow these guidelines:
+
+ - Don't modify anything in the pdcurses directory or in other port
+ directories. Don't modify curses.h or curspriv.h unless absolutely
+ necessary. (And prefer modifying curspriv.h over curses.h.)
+
+ - Use the same indentation style, naming and scope conventions as the
+ existing code.
+
+ - Release all your code to the public domain -- no copyright. Code
+ under GPL, BSD, etc. will not be accepted.
+
+
+DATA STRUCTURES
+---------------
+
+A port of PDCurses must provide acs_map[], a 128-element array of
+chtypes, with values laid out based on the Alternate Character Set of
+the VT100 (see curses.h). PDC_transform_line() must use this table; when
+it encounters a chtype with the A_ALTCHARSET flag set, and an A_CHARTEXT
+value in the range 0-127, it must render it using the A_CHARTEXT portion
+of the corresponding value from this table, instead of the original
+value. Also, values may be read from this table by apps, and passed
+through functions such as waddch(), which does no special processing on
+control characters (0-31 and 127) when the A_ALTCHARSET flag is set.
+Thus, any control characters used in acs_map[] should also have the
+A_ALTCHARSET flag set. Implementations should provide suitable values
+for all the ACS_ macros defined in curses.h; other values in the table
+should be filled with their own indices (e.g., acs_map['E'] == 'E'). The
+table can be either hardwired, or filled by PDC_scr_open(). Existing
+ports define it in pdcdisp.c, but this is not required.
+
+
+FUNCTIONS
+---------
+
+A port of PDCurses must implement the following functions, with extern
+scope. These functions are traditionally divided into several modules,
+as indicated below; this division is not required (only the functions
+are), but may make it easier to follow for someone familiar with the
+existing ports.
+
+Any other functions you create as part of your implementation should
+have static scope, if possible. If they can't be static, they should be
+named with the "PDC_" prefix. This minimizes the risk of collision with
+an application's choices.
+
+Current PDCurses style also uses a single leading underscore with the
+name of any static function; and modified BSD/Allman-style indentation,
+approximately equivalent to "indent -kr -i8 -bl -bli0", with adjustments
+to keep every line under 80 columns. This isn't essential, but a
+consistent style helps readability.
+
+
+pdcdisp.c:
+----------
+
+void PDC_gotoyx(int y, int x);
+
+Move the physical cursor (as opposed to the logical cursor affected by
+wmove()) to the given location. This is called mainly from doupdate().
+In general, this function need not compare the old location with the new
+one, and should just move the cursor unconditionally.
+
+void PDC_transform_line(int lineno, int x, int len, const chtype *srcp);
+
+The core output routine. It takes len chtype entities from srcp (a
+pointer into curscr) and renders them to the physical screen at line
+lineno, column x. It must also translate characters 0-127 via acs_map[],
+if they're flagged with A_ALTCHARSET in the attribute portion of the
+chtype.
+
+
+pdcgetsc.c:
+-----------
+
+int PDC_get_columns(void);
+
+Returns the size of the screen in columns. It's used in resize_term() to
+set the new value of COLS. (Some existing implementations also call it
+internally from PDC_scr_open(), but this is not required.)
+
+int PDC_get_cursor_mode(void);
+
+Returns the size/shape of the cursor. The format of the result is
+unspecified, except that it must be returned as an int. This function is
+called from initscr(), and the result is stored in SP->orig_cursor,
+which is used by PDC_curs_set() to determine the size/shape of the
+cursor in normal visibility mode (curs_set(1)).
+
+int PDC_get_rows(void);
+
+Returns the size of the screen in rows. It's used in resize_term() to
+set the new value of LINES. (Some existing implementations also call it
+internally from PDC_scr_open(), but this is not required.)
+
+
+pdckbd.c:
+---------
+
+bool PDC_check_key(void);
+
+Keyboard/mouse event check, called from wgetch(). Returns TRUE if
+there's an event ready to process. This function must be non-blocking.
+
+void PDC_flushinp(void);
+
+This is the core of flushinp(). It discards any pending key or mouse
+events, removing them from any internal queue and from the OS queue, if
+applicable.
+
+int PDC_get_key(void);
+
+Get the next available key, or mouse event (indicated by a return of
+KEY_MOUSE), and remove it from the OS' input queue, if applicable. This
+function is called from wgetch(). This function may be blocking, and
+traditionally is; but it need not be. If a valid key or mouse event
+cannot be returned, for any reason, this function returns -1. Valid keys
+are those that fall within the appropriate character set, or are in the
+list of special keys found in curses.h (KEY_MIN through KEY_MAX). When
+returning a special key code, this routine must also set SP->key_code to
+TRUE; otherwise it must set it to FALSE. If SP->return_key_modifiers is
+TRUE, this function may return modifier keys (shift, control, alt),
+pressed alone, as special key codes; if SP->return_key_modifiers is
+FALSE, it must not. If modifier keys are returned, it should only happen
+if no other keys were pressed in the meantime; i.e., the return should
+happen on key up. But if this is not possible, it may return the
+modifier keys on key down (if and only if SP->return_key_modifiers is
+TRUE).
+
+int PDC_modifiers_set(void);
+
+Called from PDC_return_key_modifiers(). If your platform needs to do
+anything in response to a change in SP->return_key_modifiers, do it
+here. Returns OK or ERR, which is passed on by the caller.
+
+int PDC_mouse_set(void);
+
+Called by mouse_set(), mouse_on(), and mouse_off() -- all the functions
+that modify SP->_trap_mbe. If your platform needs to do anything in
+response to a change in SP->_trap_mbe (for example, turning the mouse
+cursor on or off), do it here. Returns OK or ERR, which is passed on by
+the caller.
+
+void PDC_set_keyboard_binary(bool on);
+
+Set keyboard input to "binary" mode. If you need to do something to keep
+the OS from processing ^C, etc. on your platform, do it here. TRUE turns
+the mode on; FALSE reverts it. This function is called from raw() and
+noraw().
+
+
+pdcscrn.c:
+----------
+
+bool PDC_can_change_color(void);
+
+Returns TRUE if init_color() and color_content() give meaningful
+results, FALSE otherwise. Called from can_change_color().
+
+int PDC_color_content(short color, short *red, short *green, short *blue);
+
+The core of color_content(). This does all the work of that function,
+except checking for values out of range and null pointers.
+
+int PDC_init_color(short color, short red, short green, short blue);
+
+The core of init_color(). This does all the work of that function,
+except checking for values out of range.
+
+void PDC_init_pair(short pair, short fg, short bg);
+
+The core of init_pair(). This does all the work of that function, except
+checking for values out of range. The values passed to this function
+should be returned by a call to PDC_pair_content() with the same pair
+number. PDC_transform_line() should use the specified colors when
+rendering a chtype with the given pair number.
+
+int PDC_pair_content(short pair, short *fg, short *bg);
+
+The core of pair_content(). This does all the work of that function,
+except checking for values out of range and null pointers.
+
+void PDC_reset_prog_mode(void);
+
+The non-portable functionality of reset_prog_mode() is handled here --
+whatever's not done in _restore_mode(). In current ports: In OS/2, this
+sets the keyboard to binary mode; in Win32, it enables or disables the
+mouse pointer to match the saved mode; in others it does nothing.
+
+void PDC_reset_shell_mode(void);
+
+The same thing, for reset_shell_mode(). In OS/2 and Win32, it restores
+the default console mode; in others it does nothing.
+
+int PDC_resize_screen(int nlines, int ncols);
+
+This does the main work of resize_term(). It may respond to non-zero
+parameters, by setting the screen to the specified size; to zero
+parameters, by setting the screen to a size chosen by the user at
+runtime, in an unspecified way (e.g., by dragging the edges of the
+window); or both. It may also do nothing, if there's no appropriate
+action for the platform.
+
+void PDC_restore_screen_mode(int i);
+
+Called from _restore_mode() in kernel.c, this function does the actual
+mode changing, if applicable. Currently used only in DOS and OS/2.
+
+void PDC_save_screen_mode(int i);
+
+Called from _save_mode() in kernel.c, this function saves the actual
+screen mode, if applicable. Currently used only in DOS and OS/2.
+
+void PDC_scr_close(void);
+
+The platform-specific part of endwin(). It may restore the image of the
+original screen saved by PDC_scr_open(), if the PDC_RESTORE_SCREEN
+environment variable is set; either way, if using an existing terminal,
+this function should restore it to the mode it had at startup, and move
+the cursor to the lower left corner. (The X11 port does nothing.)
+
+void PDC_scr_free(void);
+
+Frees the memory for SP allocated by PDC_scr_open(). Called by
+delscreen().
+
+int PDC_scr_open(int argc, char **argv);
+
+The platform-specific part of initscr(). It's actually called from
+Xinitscr(); the arguments, if present, correspond to those used with
+main(), and may be used to set the title of the terminal window, or for
+other, platform-specific purposes. (The arguments are currently used
+only in X11.) PDC_scr_open() must allocate memory for SP, and must
+initialize acs_map[] (unless it's preset) and several members of SP,
+including lines, cols, mouse_wait, orig_attr (and if orig_attr is TRUE,
+orig_fore and orig_back), mono, _restore and _preserve. (Although SP is
+used the same way in all ports, it's allocated here in order to allow
+the X11 port to map it to a block of shared memory.) If using an
+existing terminal, and the environment variable PDC_RESTORE_SCREEN is
+set, this function may also store the existing screen image for later
+restoration by PDC_scr_close().
+
+
+pdcsetsc.c:
+-----------
+
+int PDC_curs_set(int visibility);
+
+Called from curs_set(). Changes the appearance of the cursor -- 0 turns
+it off, 1 is normal (the terminal's default, if applicable, as
+determined by SP->orig_cursor), and 2 is high visibility. The exact
+appearance of these modes is not specified.
+
+
+pdcutil.c:
+----------
+
+void PDC_beep(void);
+
+Emits a short audible beep. If this is not possible on your platform,
+you must set SP->audible to FALSE during initialization (i.e., from
+PDC_scr_open() -- not here); otherwise, set it to TRUE. This function is
+called from beep().
+
+void PDC_napms(int ms);
+
+This is the core delay routine, called by napms(). It pauses for about
+(the X/Open spec says "at least") ms milliseconds, then returns. High
+degrees of accuracy and precision are not expected (though desirable, if
+you can achieve them). More important is that this function gives back
+the process' time slice to the OS, so that PDCurses idles at low CPU
+usage.
+
+const char *PDC_sysname(void);
+
+Returns a short string describing the platform, such as "DOS" or "X11".
+This is used by longname(). It must be no more than 100 characters; it
+should be much, much shorter (existing platforms use no more than 5).
+
+--------------------------------------------------------------------------
+
+The following functions are implemented in the platform directories, but
+are accessed directly by apps. Refer to the user documentation for their
+descriptions:
+
+
+pdcclip.c:
+----------
+
+int PDC_clearclipboard(void);
+int PDC_freeclipboard(char *contents);
+int PDC_getclipboard(char **contents, long *length);
+int PDC_setclipboard(const char *contents, long length);
+
+
+pdckbd.c:
+---------
+
+unsigned long PDC_get_input_fd(void);
+
+
+pdcsetsc.c:
+-----------
+
+int PDC_set_blink(bool blinkon);
+void PDC_set_title(const char *title);
diff --git a/payloads/libpayload/curses/PDCurses/Makefile.in b/payloads/libpayload/curses/PDCurses/Makefile.in
new file mode 100644
index 0000000..dc40abf
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/Makefile.in
@@ -0,0 +1,108 @@
+# Makefile for PDCurses library for X11
+
+SHELL = @SHELL@
+
+ at SET_MAKE@
+
+srcdir =@srcdir@
+prefix =@prefix@
+exec_prefix =$(DESTDIR)@exec_prefix@
+libdir =$(exec_prefix)/lib
+bindir =$(exec_prefix)/bin
+includedir =$(exec_prefix)/include
+pdcursesdir =./x11
+
+INSTALL =$(srcdir)/install-sh
+RANLIB =@RANLIB@
+SHLPRE = @SHLPRE@
+SHLPST = @SHLPST@
+SHLFILE = XCurses
+
+include $(srcdir)/version.mif
+
+PDC_DIR=PDCurses-$(VERDOT)
+
+ZIPFILE = pdcurs$(VER).zip
+TARBALL = $(PDC_DIR).tar.gz
+
+all \
+clean \
+distclean \
+mostlyclean \
+realclean ::
+ cd x11; $(MAKE) $(MFLAGS) $@
+ cd doc; $(MAKE) $(MFLAGS) $@
+
+install ::
+ $(INSTALL) -d -m 755 $(libdir)
+ $(INSTALL) -d -m 755 $(bindir)
+ $(INSTALL) -d -m 755 $(includedir)
+ $(INSTALL) -d -m 755 $(includedir)/xcurses
+ $(INSTALL) -c -m 644 $(srcdir)/curses.h $(includedir)/xcurses.h
+ $(INSTALL) -c -m 644 $(srcdir)/curses.h $(includedir)/xcurses/curses.h
+ sed -e 's/#include <curses.h>/#include <xcurses.h>/' \
+ < $(srcdir)/panel.h > ./xpanel.h
+ $(INSTALL) -m 644 ./xpanel.h $(includedir)/xpanel.h
+ $(INSTALL) -c -m 644 $(srcdir)/panel.h $(includedir)/xcurses/panel.h
+ $(INSTALL) -c -m 644 $(srcdir)/term.h $(includedir)/xcurses/term.h
+ $(INSTALL) -c -m 644 $(pdcursesdir)/libXCurses.a $(libdir)/libXCurses.a
+ -$(RANLIB) $(libdir)/libXCurses.a
+ -$(INSTALL) -c -m 755 $(pdcursesdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) \
+ $(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST)
+ ln -f -s $(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) \
+ $(libdir)/$(SHLPRE)Xpanel$(SHLPST)
+ ln -f -s $(libdir)/libXCurses.a $(libdir)/libXpanel.a
+ -$(RANLIB) $(libdir)/libXpanel.a
+ $(INSTALL) -c -m 755 x11/xcurses-config $(bindir)/xcurses-config
+
+clean ::
+ rm -f config.log config.cache config.status
+
+distclean ::
+ rm -f config.log config.cache config.status
+ rm -f config.h Makefile x11/xcurses-config
+
+manual:
+ cd doc; $(MAKE) $(MFLAGS) $@
+
+$(ZIPFILE):
+ zip -9y $(ZIPFILE) README HISTORY IMPLEMNT *.spec *.mif *.def \
+ Makefile.in config.h.in configure configure.ac config.guess \
+ config.sub x11/xcurses-config.in install-sh aclocal.m4 curses.h \
+ curspriv.h panel.h term.h pdcurses/README \
+ pdcurses/*.c demos/README demos/*.c demos/*.h dos/README dos/*.c \
+ dos/*.h dos/*.mak dos/*.lrf os2/README os2/*.c os2/*.h os2/*.mak \
+ os2/*.lrf sdl1/README sdl1/*.c sdl1/*.h sdl1/Make* \
+ win32/README win32/*.c win32/*.h win32/*.mak \
+ win32/*.ico win32/*.rc x11/README x11/*.c x11/*.h x11/Makefile.* \
+ x11/*.xbm doc/*.txt doc/manext.c doc/Makefile
+
+zip: $(ZIPFILE)
+
+../$(TARBALL):
+ (cd ..; tar cvf - $(PDC_DIR)/README $(PDC_DIR)/HISTORY \
+ $(PDC_DIR)/IMPLEMNT $(PDC_DIR)/*.spec $(PDC_DIR)/*.mif \
+ $(PDC_DIR)/*.def $(PDC_DIR)/Makefile.in $(PDC_DIR)/aclocal.m4 \
+ $(PDC_DIR)/config.h.in $(PDC_DIR)/configure \
+ $(PDC_DIR)/config.guess $(PDC_DIR)/x11/xcurses-config.in \
+ $(PDC_DIR)/config.sub $(PDC_DIR)/configure.ac \
+ $(PDC_DIR)/install-sh $(PDC_DIR)/curses.h $(PDC_DIR)/curspriv.h \
+ $(PDC_DIR)/panel.h $(PDC_DIR)/term.h \
+ $(PDC_DIR)/pdcurses/README $(PDC_DIR)/pdcurses/*.c \
+ $(PDC_DIR)/demos/README $(PDC_DIR)/demos/*.c $(PDC_DIR)/demos/*.h \
+ $(PDC_DIR)/doc/*.txt $(PDC_DIR)/dos/README $(PDC_DIR)/dos/*.c \
+ $(PDC_DIR)/dos/*.h $(PDC_DIR)/dos/*.mak $(PDC_DIR)/dos/*.lrf \
+ $(PDC_DIR)/os2/README $(PDC_DIR)/os2/*.c $(PDC_DIR)/os2/*.h \
+ $(PDC_DIR)/os2/*.mak $(PDC_DIR)/os2/*.lrf \
+ $(PDC_DIR)/sdl1/README $(PDC_DIR)/sdl1/*.c $(PDC_DIR)/sdl1/*.h \
+ $(PDC_DIR)/sdl1/Make* $(PDC_DIR)/win32/README $(PDC_DIR)/win32/*.c \
+ $(PDC_DIR)/win32/*.h $(PDC_DIR)/win32/*.mak \
+ $(PDC_DIR)/win32/*.ico $(PDC_DIR)/win32/*.rc $(PDC_DIR)/x11/README \
+ $(PDC_DIR)/x11/*.c $(PDC_DIR)/x11/*.xbm $(PDC_DIR)/x11/*.h \
+ $(PDC_DIR)/x11/Makefile.* $(PDC_DIR)/doc/manext.c \
+ $(PDC_DIR)/doc/Makefile | gzip -9 > $(TARBALL))
+
+dist: ../$(TARBALL)
+
+rpm: ../$(TARBALL)
+ rpmbuild -ba $(srcdir)/PDCurses.spec
diff --git a/payloads/libpayload/curses/PDCurses/PDCurses.spec b/payloads/libpayload/curses/PDCurses/PDCurses.spec
new file mode 100644
index 0000000..814e313
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/PDCurses.spec
@@ -0,0 +1,52 @@
+# $Id: PDCurses.spec,v 1.18 2008/07/21 12:25:20 wmcbrine Exp $
+
+%define ver 34
+%define verdot 3.4
+%define base /usr
+
+Summary: Public Domain Curses for X11
+Name: PDCurses
+Version: %verdot
+Release: 1
+Copyright: Public Domain
+Group: Development/Libraries
+Source: %{name}-%{version}.tar.gz
+URL: http://pdcurses.sourceforge.net
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+Prefix: %base
+
+%description
+PDCurses for X11 is an implementation of the curses library that lets
+you build text-mode curses programs as native X11 applications. For more
+information, visit http://pdcurses.sourceforge.net/
+
+%prep
+%setup -q
+
+%build
+./configure --prefix=%{base}
+make
+
+%install
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+rm -rf $RPM_BUILD_DIR/%{name}-%{version}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root)
+%doc README HISTORY
+%{base}/bin/xcurses-config
+%{base}/lib/libXCurses.a
+%{base}/lib/libXpanel.a
+%{base}/lib/libXCurses.so
+%{base}/include/xcurses.h
+%{base}/include/xpanel.h
+%{base}/include/xcurses/curses.h
+%{base}/include/xcurses/panel.h
+%{base}/include/xcurses/term.h
diff --git a/payloads/libpayload/curses/PDCurses/README b/payloads/libpayload/curses/PDCurses/README
new file mode 100644
index 0000000..dc476a9
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/README
@@ -0,0 +1,48 @@
+Welcome to PDCurses!
+====================
+
+Public Domain Curses, aka PDCurses, is an implementation of X/Open
+curses for multiple platforms. The latest version can be found at:
+
+ http://pdcurses.sourceforge.net/
+
+For changes, see the HISTORY file.
+
+
+Legal Stuff
+-----------
+
+The core package is in the public domain, but small portions of PDCurses
+are subject to copyright under various licenses. Each directory
+contains a README file, with a section titled "Distribution Status"
+which describes the status of the files in that directory.
+
+If you use PDCurses in an application, an acknowledgement would be
+appreciated, but is not mandatory. If you make corrections or
+enhancements to PDCurses, please forward them to the current maintainer
+for the benefit of other users.
+
+This software is provided AS IS with NO WARRANTY whatsoever.
+
+
+Ports
+-----
+
+PDCurses has been ported to DOS, OS/2, Win32, X11 and SDL. A directory
+containing the port-specific source files exists for each of these
+platforms. Build instructions are in the README file for each platform.
+
+
+Distribution Status
+-------------------
+
+All files in this directory except configure, config.guess and
+config.sub are released to the Public Domain. config.guess and
+config.sub are under the GPL; configure is under a free license
+described within it.
+
+
+Maintainer
+----------
+
+William McBrine <wmcbrine at users.sf.net>
diff --git a/payloads/libpayload/curses/PDCurses/aclocal.m4 b/payloads/libpayload/curses/PDCurses/aclocal.m4
new file mode 100644
index 0000000..ad7c3f3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/aclocal.m4
@@ -0,0 +1,613 @@
+dnl ---------------------------------------------------------------------------
+dnl This file offers the following macros...
+dnl ---------------------------------------------------------------------------
+dnl MH_IPC
+dnl MH_CHECK_X_INC
+dnl MH_CHECK_X_LIB
+dnl MH_CHECK_X_HEADERS
+dnl MH_CHECK_X_KEYDEFS
+dnl MH_CHECK_X_TYPEDEF
+dnl MH_CHECK_LIB
+dnl MH_SHARED_LIBRARY
+dnl MH_HOWTO_DYN_LINK
+dnl MH_CHECK_CC_O
+dnl MH_SHLPST
+dnl MH_CHECK_MAX_SIGNALS
+
+dnl ---------------------------------------------------------------------------
+dnl Determine if the system has System V IPC. ie sys/ipc.h and sys/shm.h
+dnl headers.
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_IPC],
+[
+AC_CHECK_HEADER(sys/ipc.h)
+if test $ac_cv_header_sys_ipc_h = no; then
+ AC_MSG_ERROR(Cannot find required header file sys/ipc.h; PDCurses cannot be configured)
+fi
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Set up the correct X header file location
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_X_INC],
+[
+mh_x11_dir=""
+mh_x11_xaw_dir=""
+
+mh_inc_dirs="$ac_x_header_dirs"
+
+dnl Provide for user supplying directory
+
+if test "x$x_includes" != xNONE ; then
+ mh_inc_dirs="$x_includes $mh_inc_dirs"
+fi
+
+dnl Try to determine the directory containing X headers
+dnl We will append X11 to all the paths above as an extra check
+
+for ac_dir in $mh_inc_dirs ; do
+ if test -r $ac_dir/Intrinsic.h; then
+ mh_x11_dir=$ac_dir
+ break
+ fi
+ if test -r $ac_dir/X11/Intrinsic.h; then
+ mh_x11_dir="$ac_dir/X11"
+ break
+ fi
+done
+
+dnl Try to determine the directory containing Xaw headers
+dnl We will append X11 to all the paths above as an extra check
+
+if test "$with_xaw3d" = yes; then
+ mh_xaw_dir="Xaw3d"
+else
+ if test "$with_nextaw" = yes; then
+ mh_xaw_dir="neXtaw"
+ else
+ mh_xaw_dir="Xaw"
+ fi
+fi
+for ac_dir in $mh_inc_dirs ; do
+ if test -r $ac_dir/$mh_xaw_dir/Box.h; then
+ mh_x11_xaw_dir=$ac_dir
+ break
+ fi
+ if test -r $ac_dir/X11/$mh_xaw_dir/Box.h; then
+ mh_x11_xaw_dir="$ac_dir/X11"
+ break
+ fi
+done
+
+if test "x$mh_x11_dir" != "x" ; then
+ mh_x11_dir_no_x11=`echo $mh_x11_dir | sed 's/\/X11$//'`
+
+ if test "$mh_x11_dir_no_x11" != "$mh_x11_dir" ; then
+ MH_XINC_DIR="-I$mh_x11_dir -I$mh_x11_dir_no_x11"
+ else
+ MH_XINC_DIR="-I$mh_x11_dir"
+ fi
+else
+ AC_MSG_ERROR(Cannot find required header file Intrinsic.h; PDCurses cannot be configured)
+fi
+
+if test "x$mh_x11_xaw_dir" != "x"; then
+ if test "$mh_x11_xaw_dir" != "$mh_x11_dir" ; then
+ MH_XINC_DIR="-I$mh_x11_xaw_dir $MH_XINC_DIR"
+ fi
+else
+ AC_MSG_ERROR(Cannot find required Xaw header file Box.h; PDCurses cannot be configured)
+fi
+
+AC_SUBST(MH_XINC_DIR)
+
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Set up the correct X library file location
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_X_LIB],
+[
+dnl Some systems require extra libraries...
+
+mh_solaris_flag=no
+mh_hpux9_flag=no
+AC_REQUIRE([AC_CANONICAL_SYSTEM])
+case "$target" in
+ *solaris*)
+ mh_solaris_flag=yes
+ ;;
+ *pc-sco*)
+ extra_x_libs="Xext"
+ ;;
+ sparc*sunos*)
+ extra_x_libs="Xext"
+ if test "$ac_cv_prog_CC" = "gcc" ; then
+ extra_ld_flags="-Wl,-Bstatic"
+ extra_ld_flags2="-Wl,-Bdynamic"
+ else
+ extra_ld_flags="-Bstatic"
+ extra_ld_flags2="-Bdynamic"
+ fi
+ ;;
+ *hpux9*)
+ mh_hpux9_flag=yes
+ ;;
+esac
+
+if test "$with_xaw3d" = yes; then
+ MH_X11_LIBS="Xaw3d Xmu Xt X11"
+else
+ if test "$with_nextaw" = yes; then
+ MH_X11_LIBS="neXtaw Xmu Xt X11"
+ else
+ MH_X11_LIBS="Xaw Xmu Xt X11"
+ fi
+fi
+MH_X11R6_LIBS="SM ICE Xext"
+mh_x11r6=no
+
+mh_lib_dirs="$x_libraries `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`"
+
+dnl try to find libSM.[a,sl,so,dylib]. If we find it we are using X11R6
+for ac_dir in $mh_lib_dirs ; do
+ for mh_xsm in libSM.a libSM.so libSM.sl libSM.dylib; do
+ if test -r $ac_dir/$mh_xsm; then
+ mh_x11r6=yes
+ break 2
+ fi
+ done
+done
+
+if test "$mh_x11r6" = yes ; then
+ mh_libs="$MH_X11_LIBS $MH_X11R6_LIBS"
+else
+ mh_libs="$MH_X11_LIBS $extra_x_libs"
+fi
+
+
+dnl Ensure that all required X libraries are found
+
+mh_prev_dir=""
+mh_where_found=""
+mh_where_found_dirs=""
+mh_solaris_path=""
+for mh_lib in $mh_libs; do
+ mh_lib_found=no
+ for ac_dir in $mh_lib_dirs ; do
+ for mh_ext in a so sl dll.a dylib; do
+ if test -r $ac_dir/lib$mh_lib.$mh_ext; then
+ if test "x$mh_prev_dir" != "x$ac_dir" ; then
+ if test "x$mh_prev_dir" = "x" ; then
+ mh_where_found="$mh_where_found found in $ac_dir"
+ else
+ mh_where_found="$mh_where_found and in $ac_dir"
+ fi
+ mh_prev_dir=$ac_dir
+ mh_where_found_dirs="$mh_where_found_dirs $ac_dir"
+ MH_XLIBS="$MH_XLIBS -L$ac_dir"
+ mh_solaris_path="${mh_solaris_path}:$ac_dir"
+ fi
+ MH_XLIBS="$MH_XLIBS -l$mh_lib"
+ mh_lib_found=yes
+ break 2
+ fi
+ done
+ done
+ if test "$mh_lib_found" = no; then
+ AC_MSG_ERROR(Cannot find required X library; lib$mh_lib. PDCurses cannot be configured)
+ fi
+done
+
+mh_solaris_path=`echo $mh_solaris_path | sed 's/^://'`
+if test "$mh_solaris_flag" = yes ; then
+ MH_XLIBS="-R$mh_solaris_path $extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2"
+else
+ MH_XLIBS="$extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2"
+fi
+if test "$mh_hpux9_flag" = yes ; then
+ grep -q XtSetLanguageProc $mh_x11_dir/Intrinsic.h
+ if test $? -eq 0 ; then
+ mh_found_xtshellstrings=no
+ for mh_acdir in $mh_where_found_dirs ; do
+ for mh_xaw in `ls $mh_acdir/libXaw.*` ; do
+ nm $mh_xaw | grep XtShellStrings | grep -qv extern
+ if test $? -eq 0 ; then
+ mh_found_xtshellstrings=yes
+ fi
+ done
+ done
+ if test "$mh_found_xtshellstrings" = no ; then
+ AC_MSG_WARN(The X11 development environment has not been installed correctly.)
+ AC_MSG_WARN(The header file; Intrinsic.h, is for X11R5 while the Athena Widget)
+ AC_MSG_WARN(Set library; libXaw is for X11R4. This is a common problem with)
+ AC_MSG_WARN(HP-UX 9.x.)
+ AC_MSG_ERROR(X11 installation incomplete; cannot continue)
+ fi
+ fi
+fi
+
+AC_SUBST(MH_XLIBS)
+
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Determine if the supplied X headers exist.
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_X_HEADERS],
+[
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $MH_XINC_DIR"
+for mh_header in $1; do
+ AC_CHECK_HEADERS($mh_header)
+done
+CPPFLAGS="$save_CPPFLAGS"
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Determine if various key definitions exist in keysym.h
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_X_KEYDEFS],
+[
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $MH_XINC_DIR"
+for mh_keydef in $1; do
+ AC_MSG_CHECKING(for $mh_keydef in keysym.h)
+ mh_upper_name="HAVE_`echo $mh_keydef | tr '[a-z]' '[A-Z]'`"
+ AC_TRY_COMPILE([#include <keysym.h>],
+[int i = $mh_keydef;],
+ mh_have_key=yes; AC_DEFINE_UNQUOTED($mh_upper_name,1), mh_have_key=no )
+ AC_MSG_RESULT($mh_have_key)
+done
+CPPFLAGS="$save_CPPFLAGS"
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Determine if supplied types have been typedefed
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_X_TYPEDEF],
+[
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $SYS_DEFS $MH_XINC_DIR"
+for td in $1 ; do
+AC_MSG_CHECKING(if $td is typedefed:)
+AC_TRY_COMPILE(
+[#include "X11/Xlib.h"],
+[$td fred],
+ [mh_td=yes],
+ [mh_td=no]
+)
+if test "$mh_td" = yes ; then
+ TD_upper=`echo $td | tr a-z A-Z`
+ AC_DEFINE_UNQUOTED(${TD_upper}_TYPEDEFED, 1)
+fi
+AC_MSG_RESULT($mh_td)
+done
+CPPFLAGS="$save_CPPFLAGS"
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Check for presence of various libraries
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_LIB],
+[
+MH_EXTRA_LIBS=''
+for mh_lib in $1; do
+ if test "$on_qnx" = yes; then
+ AC_MSG_CHECKING(for library -l${mh_lib})
+ if test -r /usr/lib/${mh_lib}3r.lib; then
+ AC_MSG_RESULT(found)
+ MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}"
+ else
+ AC_MSG_RESULT(not found)
+ fi
+ else
+ AC_CHECK_LIB($mh_lib,main,mh_lib_found=yes,mh_lib_found=no)
+ if test "$mh_lib_found" = yes; then
+ MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}"
+ fi
+ fi
+done
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Work out how to create a dynamically loaded module
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_HOWTO_DYN_LINK],
+[
+mh_compile='${CC-cc} -c $DYN_COMP conftest.$ac_ext 1>&AC_FD_CC'
+cat > conftest.$ac_ext <<EOF
+dnl [#]line __oline__ "[$]0"
+[#]line __oline__ "configure"
+int foo()
+{
+return(0);
+}
+EOF
+if AC_TRY_EVAL(mh_compile) && test -s conftest.o; then
+ mh_dyn_link='ld -shared -o conftest.rxlib conftest.o -lc 1>&AC_FD_CC'
+# mh_dyn_link='${CC} -Wl,-shared -o conftest.rxlib conftest.o -lc 1>&AC_FD_CC'
+ if AC_TRY_EVAL(mh_dyn_link) && test -s conftest.rxlib; then
+ LD_RXLIB1="ld -shared"
+# LD_RXLIB1="${CC} -Wl,-shared"
+ SHLPRE="lib"
+ SHLPST=".so"
+ else
+ mh_dyn_link='ld -G -o conftest.rxlib conftest.o 1>&AC_FD_CC'
+# mh_dyn_link='${CC} -Wl,-G -o conftest.rxlib conftest.o 1>&AC_FD_CC'
+ if AC_TRY_EVAL(mh_dyn_link) && test -s conftest.rxlib; then
+ LD_RXLIB1="ld -G"
+# LD_RXLIB1="${CC} -Wl,-G"
+ SHLPRE="lib"
+ SHLPST=".so"
+ else
+ LD_RXLIB1=""
+ SHLPRE=""
+ SHLPST=""
+ fi
+ fi
+fi
+rm -f conftest*
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Determine how to build shared libraries etc..
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_SHARED_LIBRARY],
+[
+AC_REQUIRE([MH_SHLPST])
+dnl
+dnl If compiler is gcc, then flags should be the same for all platforms
+dnl (just guessing on this)
+dnl
+AIX_DYN="no"
+BEOS_DYN="no"
+SHLFILE="$1"
+SHLFILES="$*"
+RXPACKEXPORTS=""
+SHLPRE="lib"
+LD_RXLIB1=""
+
+AC_REQUIRE([AC_CANONICAL_SYSTEM])
+case "$target" in
+ *hp-hpux*)
+ SYS_DEFS="-D_HPUX_SOURCE"
+ LD_RXLIB1="ld -b -q -n"
+ ;;
+ *ibm-aix*)
+ SYS_DEFS="-D_ALL_SOURCE -DAIX"
+ AIX_DYN="yes"
+ DYN_COMP="-DDYNAMIC"
+ LD_RXLIB1="ld -bnoentry -bM:SRE"
+ RXPACKEXPORTS="-bE:$SHLFILE.exp"
+ RXPACKEXP="$SHLFILE.exp"
+ ;;
+ *dec-osf*)
+ if test "$ac_cv_prog_CC" = "gcc"; then
+ SYS_DEFS="-D_POSIX_SOURCE -D_XOPEN_SOURCE"
+ else
+ SYS_DEFS="-D_POSIX_SOURCE -D_XOPEN_SOURCE -Olimit 800"
+ fi
+ LD_RXLIB1="ld -shared"
+ ;;
+ *sequent-dynix*|*esix*|*dgux*)
+ LD_RXLIB1="ld -G"
+ ;;
+ *solaris*)
+ if test "$ac_cv_prog_CC" = "gcc"; then
+ LD_RXLIB1="gcc -shared"
+ else
+ LD_RXLIB1="ld -G"
+ fi
+ ;;
+ sparc*sunos*)
+ SYS_DEFS="-DSUNOS -DSUNOS_STRTOD_BUG"
+ LD_RXLIB1="ld"
+ ;;
+ *linux*|*atheos*|*nto-qnx*)
+ LD_RXLIB1="${CC} -shared"
+ ;;
+ *freebsd*)
+ LD_RXLIB1="ld -Bdynamic -Bshareable"
+ ;;
+ *pc-sco*)
+ LD_RXLIB1="ld -dy -G"
+ ;;
+ *beos*)
+ LD_RXLIB1="${CC} -Wl,-shared -nostart -Xlinker -soname=\$(@)"
+ BEOS_DYN="yes"
+ ;;
+ *qnx*)
+ SHLPRE=""
+ DYN_COMP="-Q" # force no check for dynamic loading
+ SHLFILE=""
+ ;;
+ *cygwin)
+ SHLPRE=""
+ DYN_COMP="-DDYNAMIC"
+ LD_RXLIB1="dllwrap --def \$(srcdir)/../win32/pdcurses.def --target i386-cygwin32 --dllname \$(@)"
+# cygwininstall target MUST install the shared library itself because
+# it puts it into $(bindir) not $(libdir) as all other platforms
+ ;;
+ *darwin*)
+ DYN_COMP="-fno-common"
+ LD_RXLIB1="${CC} -flat_namespace -undefined suppress -dynamiclib -install_name=\$(@)"
+ ;;
+ *)
+ ;;
+esac
+
+dnl determine what switches our compiler uses for building objects
+dnl suitable for inclusion in shared libraries
+dnl Only call this if DYN_COMP is not set. If we have set DYN_COMP
+dnl above, then we know how to compile AND link for dynamic libraries
+
+if test "$DYN_COMP" = ""; then
+AC_MSG_CHECKING(compiler flags for a dynamic object)
+
+cat > conftest.$ac_ext <<EOF
+dnl [#]line __oline__ "[$]0"
+[#]line __oline__ "configure"
+int a=0
+EOF
+
+ DYN_COMP=""
+ mh_cv_stop=no
+ save_cflags="$CFLAGS"
+ mh_cv_flags="-fPIC -KPIC +Z"
+ for a in $mh_cv_flags; do
+ CFLAGS="-c $a"
+
+ mh_compile='${CC-cc} -c $CFLAGS conftest.$ac_ext > conftest.tmp 2>&1'
+ if AC_TRY_EVAL(mh_compile); then
+ DYN_COMP=""
+ else
+ slash="\\"
+ mh_dyncomp="`egrep -c $slash$a conftest.tmp`"
+ if test "$mh_dyncomp" = "0"; then
+ DYN_COMP="$a -DDYNAMIC"
+ AC_MSG_RESULT($a)
+ break
+ else
+ DYN_COMP=""
+ fi
+ fi
+ done
+ if test "$DYN_COMP" = ""; then
+ AC_MSG_RESULT(none of $mh_cv_flags supported)
+ fi
+ if test "$LD_RXLIB1" = ""; then
+ MH_HOWTO_DYN_LINK()
+ fi
+ CFLAGS=$save_cflags
+ rm -f conftest.*
+fi
+
+
+SHL_TARGETS=""
+
+if test "$AIX_DYN" = "yes"; then
+ aix_exports="config.exports.aix"
+ echo "" > $aix_exports
+fi
+
+if test "$ac_cv_header_dl_h" = "yes" -o "$ac_cv_header_dlfcn_h" = "yes" -o "$AIX_DYN" = "yes" -o "$BEOS_DYN" = "yes" -o "$DLFCNINCDIR" != "" -o "$DLFCNLIBDIR" != ""; then
+ EXPS="1,2,3,4,5,6,7,8,9"
+ for a in $SHLFILES
+ do
+ SHL_TARGETS="${SHL_TARGETS} ${SHLPRE}${a}${SHLPST}"
+ this=`echo $EXPS | cut -d, -f1`
+ EXPS=`echo $EXPS | cut -d, -f2-`
+ if test "$AIX_DYN" = "yes"; then
+ echo "RXPACKEXP$this=$a.exp" >> $aix_exports
+ echo "RXPACKEXPORTS$this=-bE:$a.exp" >> $aix_exports
+ fi
+ done
+fi
+
+AC_SUBST(DYN_COMP)
+AC_SUBST(LIBS)
+AC_SUBST(LD_RXLIB1)
+AC_SUBST(SHLPRE)
+AC_SUBST(SHLPST)
+AC_SUBST(SHL_TARGETS)
+AC_SUBST(O2SAVE)
+AC_SUBST(CC2O)
+AC_SUBST(SAVE2O)
+AC_SUBST(RXPACKEXPORTS)
+])dnl
+
+dnl ---------------------------------------------------------------------------
+dnl Check if C compiler supports -c -o file.ooo
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_CC_O],
+[
+AC_MSG_CHECKING(whether $CC understand -c and -o together)
+set dummy $CC; ac_cc="`echo [$]2 |
+changequote(, )dnl
+ sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
+changequote([, ])dnl
+AC_CACHE_VAL(ac_cv_prog_cc_${ac_cc}_c_o,
+[echo 'foo(){}' > conftest.c
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&AC_FD_CC'
+if AC_TRY_EVAL(ac_try) && test -f conftest.ooo && AC_TRY_EVAL(ac_try);
+then
+ ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&AC_FD_CC'
+ if AC_TRY_EVAL(ac_try) && test -f conftest.ooo && AC_TRY_EVAL(ac_try);
+ then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ fi
+fi
+rm -f conftest*
+])dnl
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then
+ O2SAVE=""
+ SAVE2O=""
+ CC2O="-o $"'@'
+ AC_MSG_RESULT(yes)
+else
+ O2SAVE="-mv \`basename "$'@'" .sho\`.o \`basename "$'@'" .sho\`.o.save;"
+ SAVE2O="-mv \`basename "$'@'" .sho\`.o "$'@'"; mv \`basename "$'@'" .sho\`.o.save \`basename "$'@'" .sho\`.o"
+ CC2O=""
+ AC_MSG_RESULT(no)
+fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Determines the file extension for shared libraries
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_SHLPST],
+[
+AC_MSG_CHECKING(shared library extension)
+SHLPST=".so"
+AC_REQUIRE([AC_CANONICAL_SYSTEM])
+case "$target" in
+ *hp-hpux*)
+ SHLPST=".sl"
+ ;;
+ *ibm-aix*)
+ SHLPST=".a"
+ ;;
+ *qnx*)
+ SHLPST=""
+ ;;
+ *cygwin*)
+ SHLPST=".dll"
+ ;;
+ *darwin*)
+ SHLPST=".dylib"
+ ;;
+esac
+AC_SUBST(SHLPST)
+AC_MSG_RESULT($SHLPST)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Determine the system limit for number of signals
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([MH_CHECK_MAX_SIGNALS],
+[
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $SYS_DEFS"
+AC_MSG_CHECKING(for maximum signal specifier:)
+AC_CACHE_VAL(mh_cv_max_signals,
+mh_found="no"
+for mh_sigs in $1; do
+ AC_TRY_COMPILE([#include <signal.h>],
+[return $mh_sigs;],
+ mh_found="yes"; mh_cv_max_signals="$mh_sigs" )
+ if test "$mh_found" = "yes"; then
+ break;
+ fi
+done)
+CPPFLAGS="$save_CPPFLAGS"
+if test "$mh_found" = "no"; then
+ AC_MSG_ERROR(Cannot find a system limit for number of signals. PDCurses cannot be configured on this machine.)
+else
+ AC_DEFINE_UNQUOTED(PDC_MAX_SIGNALS,$mh_cv_max_signals)
+ AC_MSG_RESULT($mh_cv_max_signals)
+fi
+])dnl
diff --git a/payloads/libpayload/curses/PDCurses/config.h.in b/payloads/libpayload/curses/PDCurses/config.h.in
new file mode 100644
index 0000000..28e9e48
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/config.h.in
@@ -0,0 +1,133 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if you have the <DECkeySym.h> header file */
+#undef HAVE_DECKEYSYM_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <dl.h> header file. */
+#undef HAVE_DL_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `poll' function. */
+#undef HAVE_POLL
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if you have the <Sunkeysym.h> header file */
+#undef HAVE_SUNKEYSYM_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Define to 1 if you have the `vsscanf' function. */
+#undef HAVE_VSSCANF
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_BEGIN
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_DELETE
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_DOWN
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_END
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_HOME
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_INSERT
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_LEFT
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_NEXT
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_PRIOR
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_RIGHT
+
+/* Define if you have this defined in <keysym.h> */
+#undef HAVE_XK_KP_UP
+
+/* Define if you have the <xpm.h> header file */
+#undef HAVE_XPM_H
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define as the system defined limit for number of signals */
+#undef PDC_MAX_SIGNALS
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Define if you want to use neXtaw library */
+#undef USE_NEXTAW
+
+/* Define if you want to use Xaw3d library */
+#undef USE_XAW3D
+
+/* Define XPointer is typedefed in X11/Xlib.h */
+#undef XPOINTER_TYPEDEFED
diff --git a/payloads/libpayload/curses/PDCurses/configure.ac b/payloads/libpayload/curses/PDCurses/configure.ac
new file mode 100644
index 0000000..cf87496
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/configure.ac
@@ -0,0 +1,285 @@
+dnl $Id: configure.ac,v 1.35 2008/07/21 12:19:21 wmcbrine Exp $
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT([PDCurses], [3.4], [wmcbrine at users.sf.net], [PDCurses])
+AC_CONFIG_SRCDIR([curspriv.h])
+
+AC_SUBST(prefix)
+
+AC_PROG_CC
+
+AC_CONFIG_HEADER(config.h)
+dnl Checks for system first
+AC_CANONICAL_SYSTEM([])
+
+mymakefile="Makefile"
+on_qnx=no
+case "$target" in
+ *hp-hpux*)
+ SYS_DEFS="-D_HPUX_SOURCE"
+ ;;
+ *ibm-aix*)
+ SYS_DEFS="-D_ALL_SOURCE"
+ mymakefile="Makefile.aix"
+ ;;
+ *dec-osf*)
+ SYS_DEFS="-D_XOPEN_SOURCE_EXTENDED"
+ ;;
+ *pc-sco*)
+ SYS_DEFS="-UM_XENIX -b elf"
+ ;;
+ *qnx*)
+ on_qnx=yes
+ SYS_DEFS="-Q"
+ ;;
+ *)
+ ;;
+esac
+AC_SUBST(SYS_DEFS)
+
+MH_CHECK_MAX_SIGNALS(NSIG __sys_nsig)
+
+dnl Check for other programs.
+AC_PROG_RANLIB
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+
+dnl ensure that the system has System V IPC support
+MH_IPC
+
+if test $ac_cv_header_stdc != yes; then
+ AC_MSG_ERROR([Need ANSI C headers])
+fi
+
+dnl Checks for libraries.
+
+AC_CHECK_HEADERS(fcntl.h \
+ sys/time.h \
+ sys/select.h \
+ dlfcn.h \
+ dl.h
+)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_TIME
+MH_CHECK_LIB(socket nls)
+AC_SUBST(MH_EXTRA_LIBS)
+MH_CHECK_CC_O
+
+dnl Checks for library functions.
+AC_TYPE_SIGNAL
+AC_CHECK_FUNCS(vsscanf usleep poll vsnprintf)
+
+dnl Check for X includes and X libraries
+AC_PATH_X
+MH_CHECK_X_INC
+MH_CHECK_X_LIB
+MH_CHECK_X_HEADERS(DECkeysym.h Sunkeysym.h xpm.h)
+MH_CHECK_X_KEYDEFS(XK_KP_Delete XK_KP_Insert XK_KP_End XK_KP_Down XK_KP_Next \
+ XK_KP_Left XK_KP_Right XK_KP_Home XK_KP_Up XK_KP_Prior XK_KP_Begin)
+MH_CHECK_X_TYPEDEF(XPointer)
+dnl
+dnl extra for xpm library
+if test $ac_cv_header_xpm_h = yes; then
+ MH_XLIBS="$MH_XLIBS -lXpm"
+fi
+dnl ---------- allow --enable-debug to compile in debug mode ---------
+AC_ARG_ENABLE(debug,
+ [ --enable-debug turn on debugging],
+ [with_debug=$enableval],
+ [with_debug=no],
+)
+cflags_g="`echo $CFLAGS | grep -c '\-g'`"
+cflags_O="`echo $CFLAGS | grep -c '\-O'`"
+
+if test "$with_debug" = yes; then
+ if test "$cflags_g" = "0"; then
+ CFLAGS="${CFLAGS} -g"
+ fi
+ if test "$cflags_O" != "0"; then
+ CFLAGS="`echo ${CFLAGS} | sed -e s/-O.//`"
+ fi
+ CFLAGS="${CFLAGS} -DPDCDEBUG"
+else
+ if test "$cflags_O" = "0"; then
+ CFLAGS="${CFLAGS} -O"
+ fi
+ if test "$cflags_g" != "0"; then
+ CFLAGS="`echo ${CFLAGS} | sed -e s/-g//`"
+ fi
+fi
+if test "$ac_cv_prog_CC" = "gcc"; then
+ if test "$with_debug" = yes; then
+ CFLAGS="${CFLAGS} -Wall"
+ else
+ CFLAGS="-O2 -Wall -fomit-frame-pointer"
+ fi
+fi
+if test "$on_qnx" = yes; then
+ if test "$with_debug" = yes; then
+ CFLAGS="-g"
+ else
+ CFLAGS="-Otax"
+ fi
+fi
+
+dnl --------------- check for wide character support -----------------
+dnl allow --enable-widec to include wide character support
+AC_ARG_ENABLE(widec,
+ [ --enable-widec include support for wide characters],
+ [with_widec=$enableval],
+ [with_widec=no],
+)
+if test "$with_widec" = yes; then
+ SYS_DEFS="$SYS_DEFS -DPDC_WIDE"
+fi
+
+dnl -------------------- check for XIM support -----------------------
+dnl allow --enable-xim to include XIM support
+AC_ARG_ENABLE(xim,
+ [ --enable-xim include support for XIM],
+ [with_xim=$enableval],
+ [with_xim=no],
+)
+if test "$with_xim" = yes; then
+ SYS_DEFS="$SYS_DEFS -DPDC_XIM"
+fi
+
+dnl ------------------------ force UTF-8? ----------------------------
+dnl allow --enable-force-utf8 to override locale settings
+AC_ARG_ENABLE(force-utf8,
+ [ --enable-force-utf8 override locale settings; use UTF-8],
+ [force_utf8=$enableval],
+ [force_utf8=no],
+)
+if test "$force_utf8" = yes; then
+ SYS_DEFS="$SYS_DEFS -DPDC_FORCE_UTF8"
+fi
+
+dnl ----------------- check for Purify support -----------------------
+dnl allow --enable-purify to enable linking with Purify
+AC_ARG_ENABLE(purify,
+ [ --enable-purify link with Purify (TM)],
+ [with_purify=$enableval],
+ [with_purify=no],
+)
+if test "$with_purify" = yes; then
+ PURIFY="purify"
+else
+ PURIFY=""
+fi
+AC_SUBST(PURIFY)
+
+dnl --------------------- check for Xaw3d library --------------------
+dnl allow --with-xaw3d to link with PDCurses
+AC_ARG_WITH(xaw3d,
+ [ --with-xaw3d link with Xaw3d],
+ [with_xaw3d=$withval],
+ [with_xaw3d=no],
+)
+if test "$with_xaw3d" = yes; then
+ AC_DEFINE([USE_XAW3D], [1],
+ [Define if you want to use Xaw3d library]
+ )
+fi
+
+dnl --------------------- check for neXtaw library -------------------
+dnl allow --with-nextaw to link with PDCurses
+AC_ARG_WITH(nextaw,
+ [ --with-nextaw link with neXtaw],
+ [with_nextaw=$withval],
+ [with_nextaw=no],
+)
+if test "$with_nextaw" = yes; then
+ AC_DEFINE([USE_NEXTAW], [1],
+ [Define if you want to use neXtaw library]
+ )
+fi
+
+dnl -------------- check how to make shared libraries ----------------
+dnl Force the ability of shared library usage
+MH_SHARED_LIBRARY(XCurses)
+
+AC_CONFIG_FILES([Makefile x11/$mymakefile x11/xcurses-config])
+AC_OUTPUT
+
+case "$target" in
+ *ibm-aix*)
+ mv x11/Makefile.aix x11/Makefile
+ AC_MSG_RESULT(renaming x11/Makefile.aix to x11/Makefile)
+ ;;
+ *)
+ ;;
+esac
+
+AC_DEFINE([PDC_MAX_SIGNALS], [],
+ [Define as the system defined limit for number of signals]
+)
+
+AC_DEFINE([HAVE_DECKEYSYM_H], [],
+ [Define if you have the <DECkeySym.h> header file]
+)
+
+AC_DEFINE([HAVE_SUNKEYSYM_H], [],
+ [Define if you have the <Sunkeysym.h> header file]
+)
+
+AC_DEFINE([HAVE_XPM_H], [],
+ [Define if you have the <xpm.h> header file]
+)
+
+AC_DEFINE([HAVE_XK_KP_DELETE], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_INSERT], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_END], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_DOWN], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_NEXT], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_LEFT], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_RIGHT], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_HOME], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_UP], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_PRIOR], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([HAVE_XK_KP_BEGIN], [],
+ [Define if you have this defined in <keysym.h>]
+)
+
+AC_DEFINE([USE_XAW3D], [],
+ [Define if you want to use Xaw3d library]
+)
+
+AC_DEFINE([USE_NEXTAW], [],
+ [Define if you want to use neXtaw library]
+)
+
+AC_DEFINE([XPOINTER_TYPEDEFED], [],
+ [Define XPointer is typedefed in X11/Xlib.h]
+)
diff --git a/payloads/libpayload/curses/PDCurses/curses.h b/payloads/libpayload/curses/PDCurses/curses.h
new file mode 100644
index 0000000..5f651fe
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/curses.h
@@ -0,0 +1,1385 @@
+/* Public Domain Curses */
+
+/* $Id: curses.h,v 1.295 2008/07/15 17:13:25 wmcbrine Exp $ */
+
+/*----------------------------------------------------------------------*
+ * PDCurses *
+ *----------------------------------------------------------------------*/
+
+#ifndef __PDCURSES__
+#define __PDCURSES__ 1
+
+/*man-start**************************************************************
+
+PDCurses definitions list: (Only define those needed)
+
+ XCURSES True if compiling for X11.
+ PDC_RGB True if you want to use RGB color definitions
+ (Red = 1, Green = 2, Blue = 4) instead of BGR.
+ PDC_WIDE True if building wide-character support.
+ PDC_DLL_BUILD True if building a Win32 DLL.
+ NCURSES_MOUSE_VERSION Use the ncurses mouse API instead
+ of PDCurses' traditional mouse API.
+
+PDCurses portable platform definitions list:
+
+ PDC_BUILD Defines API build version.
+ PDCURSES Enables access to PDCurses-only routines.
+ XOPEN Always true.
+ SYSVcurses True if you are compiling for SYSV portability.
+ BSDcurses True if you are compiling for BSD portability.
+
+**man-end****************************************************************/
+
+#define PDC_BUILD 3401
+#define PDCURSES 1 /* PDCurses-only routines */
+#define XOPEN 1 /* X/Open Curses routines */
+#define SYSVcurses 1 /* System V Curses routines */
+#define BSDcurses 1 /* BSD Curses routines */
+#define CHTYPE_LONG 1 /* size of chtype; long */
+
+/*----------------------------------------------------------------------*/
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h> /* Required by X/Open usage below */
+
+#ifdef PDC_WIDE
+# include <wchar.h>
+#endif
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+extern "C"
+{
+# define bool _bool
+#endif
+
+/*----------------------------------------------------------------------
+ *
+ * PDCurses Manifest Constants
+ *
+ */
+
+#ifndef FALSE
+# define FALSE 0
+#endif
+#ifndef TRUE
+# define TRUE 1
+#endif
+#ifndef NULL
+# define NULL (void *)0
+#endif
+#ifndef ERR
+# define ERR (-1)
+#endif
+#ifndef OK
+# define OK 0
+#endif
+
+/*----------------------------------------------------------------------
+ *
+ * PDCurses Type Declarations
+ *
+ */
+
+typedef unsigned char bool; /* PDCurses Boolean type */
+
+#ifdef CHTYPE_LONG
+# if _LP64
+typedef unsigned int chtype;
+# else
+typedef unsigned long chtype; /* 16-bit attr + 16-bit char */
+# endif
+#else
+typedef unsigned short chtype; /* 8-bit attr + 8-bit char */
+#endif
+
+#ifdef PDC_WIDE
+typedef chtype cchar_t;
+#endif
+
+typedef chtype attr_t;
+
+/*----------------------------------------------------------------------
+ *
+ * PDCurses Mouse Interface -- SYSVR4, with extensions
+ *
+ */
+
+typedef struct
+{
+ int x; /* absolute column, 0 based, measured in characters */
+ int y; /* absolute row, 0 based, measured in characters */
+ short button[3]; /* state of each button */
+ int changes; /* flags indicating what has changed with the mouse */
+} MOUSE_STATUS;
+
+#define BUTTON_RELEASED 0x0000
+#define BUTTON_PRESSED 0x0001
+#define BUTTON_CLICKED 0x0002
+#define BUTTON_DOUBLE_CLICKED 0x0003
+#define BUTTON_TRIPLE_CLICKED 0x0004
+#define BUTTON_MOVED 0x0005 /* PDCurses */
+#define WHEEL_SCROLLED 0x0006 /* PDCurses */
+#define BUTTON_ACTION_MASK 0x0007 /* PDCurses */
+
+#define PDC_BUTTON_SHIFT 0x0008 /* PDCurses */
+#define PDC_BUTTON_CONTROL 0x0010 /* PDCurses */
+#define PDC_BUTTON_ALT 0x0020 /* PDCurses */
+#define BUTTON_MODIFIER_MASK 0x0038 /* PDCurses */
+
+#define MOUSE_X_POS (Mouse_status.x)
+#define MOUSE_Y_POS (Mouse_status.y)
+
+/*
+ * Bits associated with the .changes field:
+ * 3 2 1 0
+ * 210987654321098765432109876543210
+ * 1 <- button 1 has changed
+ * 10 <- button 2 has changed
+ * 100 <- button 3 has changed
+ * 1000 <- mouse has moved
+ * 10000 <- mouse position report
+ * 100000 <- mouse wheel up
+ * 1000000 <- mouse wheel down
+ */
+
+#define PDC_MOUSE_MOVED 0x0008
+#define PDC_MOUSE_POSITION 0x0010
+#define PDC_MOUSE_WHEEL_UP 0x0020
+#define PDC_MOUSE_WHEEL_DOWN 0x0040
+
+#define A_BUTTON_CHANGED (Mouse_status.changes & 7)
+#define MOUSE_MOVED (Mouse_status.changes & PDC_MOUSE_MOVED)
+#define MOUSE_POS_REPORT (Mouse_status.changes & PDC_MOUSE_POSITION)
+#define BUTTON_CHANGED(x) (Mouse_status.changes & (1 << ((x) - 1)))
+#define BUTTON_STATUS(x) (Mouse_status.button[(x) - 1])
+#define MOUSE_WHEEL_UP (Mouse_status.changes & PDC_MOUSE_WHEEL_UP)
+#define MOUSE_WHEEL_DOWN (Mouse_status.changes & PDC_MOUSE_WHEEL_DOWN)
+
+/* mouse bit-masks */
+
+#define BUTTON1_RELEASED 0x00000001L
+#define BUTTON1_PRESSED 0x00000002L
+#define BUTTON1_CLICKED 0x00000004L
+#define BUTTON1_DOUBLE_CLICKED 0x00000008L
+#define BUTTON1_TRIPLE_CLICKED 0x00000010L
+#define BUTTON1_MOVED 0x00000010L /* PDCurses */
+
+#define BUTTON2_RELEASED 0x00000020L
+#define BUTTON2_PRESSED 0x00000040L
+#define BUTTON2_CLICKED 0x00000080L
+#define BUTTON2_DOUBLE_CLICKED 0x00000100L
+#define BUTTON2_TRIPLE_CLICKED 0x00000200L
+#define BUTTON2_MOVED 0x00000200L /* PDCurses */
+
+#define BUTTON3_RELEASED 0x00000400L
+#define BUTTON3_PRESSED 0x00000800L
+#define BUTTON3_CLICKED 0x00001000L
+#define BUTTON3_DOUBLE_CLICKED 0x00002000L
+#define BUTTON3_TRIPLE_CLICKED 0x00004000L
+#define BUTTON3_MOVED 0x00004000L /* PDCurses */
+
+/* For the ncurses-compatible functions only, BUTTON4_PRESSED and
+ BUTTON5_PRESSED are returned for mouse scroll wheel up and down;
+ otherwise PDCurses doesn't support buttons 4 and 5 */
+
+#define BUTTON4_RELEASED 0x00008000L
+#define BUTTON4_PRESSED 0x00010000L
+#define BUTTON4_CLICKED 0x00020000L
+#define BUTTON4_DOUBLE_CLICKED 0x00040000L
+#define BUTTON4_TRIPLE_CLICKED 0x00080000L
+
+#define BUTTON5_RELEASED 0x00100000L
+#define BUTTON5_PRESSED 0x00200000L
+#define BUTTON5_CLICKED 0x00400000L
+#define BUTTON5_DOUBLE_CLICKED 0x00800000L
+#define BUTTON5_TRIPLE_CLICKED 0x01000000L
+
+#define MOUSE_WHEEL_SCROLL 0x02000000L /* PDCurses */
+#define BUTTON_MODIFIER_SHIFT 0x04000000L /* PDCurses */
+#define BUTTON_MODIFIER_CONTROL 0x08000000L /* PDCurses */
+#define BUTTON_MODIFIER_ALT 0x10000000L /* PDCurses */
+
+#define ALL_MOUSE_EVENTS 0x1fffffffL
+#define REPORT_MOUSE_POSITION 0x20000000L
+
+/* ncurses mouse interface */
+
+typedef unsigned long mmask_t;
+
+typedef struct
+{
+ short id; /* unused, always 0 */
+ int x, y, z; /* x, y same as MOUSE_STATUS; z unused */
+ mmask_t bstate; /* equivalent to changes + button[], but
+ in the same format as used for mousemask() */
+} MEVENT;
+
+#ifdef NCURSES_MOUSE_VERSION
+# define BUTTON_SHIFT BUTTON_MODIFIER_SHIFT
+# define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL
+# define BUTTON_CTRL BUTTON_MODIFIER_CONTROL
+# define BUTTON_ALT BUTTON_MODIFIER_ALT
+#else
+# define BUTTON_SHIFT PDC_BUTTON_SHIFT
+# define BUTTON_CONTROL PDC_BUTTON_CONTROL
+# define BUTTON_ALT PDC_BUTTON_ALT
+#endif
+
+/*----------------------------------------------------------------------
+ *
+ * PDCurses Structure Definitions
+ *
+ */
+
+typedef struct _win /* definition of a window */
+{
+ int _cury; /* current pseudo-cursor */
+ int _curx;
+ int _maxy; /* max window coordinates */
+ int _maxx;
+ int _begy; /* origin on screen */
+ int _begx;
+ int _flags; /* window properties */
+ chtype _attrs; /* standard attributes and colors */
+ chtype _bkgd; /* background, normally blank */
+ bool _clear; /* causes clear at next refresh */
+ bool _leaveit; /* leaves cursor where it is */
+ bool _scroll; /* allows window scrolling */
+ bool _nodelay; /* input character wait flag */
+ bool _immed; /* immediate update flag */
+ bool _sync; /* synchronise window ancestors */
+ bool _use_keypad; /* flags keypad key mode active */
+ chtype **_y; /* pointer to line pointer array */
+ int *_firstch; /* first changed character in line */
+ int *_lastch; /* last changed character in line */
+ int _tmarg; /* top of scrolling region */
+ int _bmarg; /* bottom of scrolling region */
+ int _delayms; /* milliseconds of delay for getch() */
+ int _parx, _pary; /* coords relative to parent (0,0) */
+ struct _win *_parent; /* subwin's pointer to parent win */
+} WINDOW;
+
+/* Avoid using the SCREEN struct directly -- use the corresponding
+ functions if possible. This struct may eventually be made private. */
+
+typedef struct
+{
+ bool alive; /* if initscr() called, and not endwin() */
+ bool autocr; /* if cr -> lf */
+ bool cbreak; /* if terminal unbuffered */
+ bool echo; /* if terminal echo */
+ bool raw_inp; /* raw input mode (v. cooked input) */
+ bool raw_out; /* raw output mode (7 v. 8 bits) */
+ bool audible; /* FALSE if the bell is visual */
+ bool mono; /* TRUE if current screen is mono */
+ bool resized; /* TRUE if TERM has been resized */
+ bool orig_attr; /* TRUE if we have the original colors */
+ short orig_fore; /* original screen foreground color */
+ short orig_back; /* original screen foreground color */
+ int cursrow; /* position of physical cursor */
+ int curscol; /* position of physical cursor */
+ int visibility; /* visibility of cursor */
+ int orig_cursor; /* original cursor size */
+ int lines; /* new value for LINES */
+ int cols; /* new value for COLS */
+ unsigned long _trap_mbe; /* trap these mouse button events */
+ unsigned long _map_mbe_to_key; /* map mouse buttons to slk */
+ int mouse_wait; /* time to wait (in ms) for a
+ button release after a press, in
+ order to count it as a click */
+ int slklines; /* lines in use by slk_init() */
+ WINDOW *slk_winptr; /* window for slk */
+ int linesrippedoff; /* lines ripped off via ripoffline() */
+ int linesrippedoffontop; /* lines ripped off on
+ top via ripoffline() */
+ int delaytenths; /* 1/10ths second to wait block
+ getch() for */
+ bool _preserve; /* TRUE if screen background
+ to be preserved */
+ int _restore; /* specifies if screen background
+ to be restored, and how */
+ bool save_key_modifiers; /* TRUE if each key modifiers saved
+ with each key press */
+ bool return_key_modifiers; /* TRUE if modifier keys are
+ returned as "real" keys */
+ bool key_code; /* TRUE if last key is a special key;
+ used internally by get_wch() */
+#ifdef XCURSES
+ int XcurscrSize; /* size of Xcurscr shared memory block */
+ bool sb_on;
+ int sb_viewport_y;
+ int sb_viewport_x;
+ int sb_total_y;
+ int sb_total_x;
+ int sb_cur_y;
+ int sb_cur_x;
+#endif
+ short line_color; /* color of line attributes - default -1 */
+} SCREEN;
+
+/*----------------------------------------------------------------------
+ *
+ * PDCurses External Variables
+ *
+ */
+
+#ifdef PDC_DLL_BUILD
+# ifdef CURSES_LIBRARY
+# define PDCEX __declspec(dllexport) extern
+# else
+# define PDCEX __declspec(dllimport)
+# endif
+#else
+# define PDCEX extern
+#endif
+
+PDCEX int LINES; /* terminal height */
+PDCEX int COLS; /* terminal width */
+PDCEX WINDOW *stdscr; /* the default screen window */
+PDCEX WINDOW *curscr; /* the current screen image */
+PDCEX SCREEN *SP; /* curses variables */
+PDCEX MOUSE_STATUS Mouse_status;
+PDCEX int COLORS;
+PDCEX int COLOR_PAIRS;
+PDCEX int TABSIZE;
+PDCEX chtype acs_map[]; /* alternate character set map */
+PDCEX char ttytype[]; /* terminal name/description */
+
+/*man-start**************************************************************
+
+PDCurses Text Attributes
+========================
+
+Originally, PDCurses used a short (16 bits) for its chtype. To include
+color, a number of things had to be sacrificed from the strict Unix and
+System V support. The main problem was fitting all character attributes
+and color into an unsigned char (all 8 bits!).
+
+Today, PDCurses by default uses a long (32 bits) for its chtype, as in
+System V. The short chtype is still available, by undefining CHTYPE_LONG
+and rebuilding the library.
+
+The following is the structure of a win->_attrs chtype:
+
+short form:
+
+-------------------------------------------------
+|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
+-------------------------------------------------
+ color number | attrs | character eg 'a'
+
+The available non-color attributes are bold, reverse and blink. Others
+have no effect. The high order char is an index into an array of
+physical colors (defined in color.c) -- 32 foreground/background color
+pairs (5 bits) plus 3 bits for other attributes.
+
+long form:
+
+----------------------------------------------------------------------------
+|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|..| 3| 2| 1| 0|
+----------------------------------------------------------------------------
+ color number | modifiers | character eg 'a'
+
+The available non-color attributes are bold, underline, invisible,
+right-line, left-line, protect, reverse and blink. 256 color pairs (8
+bits), 8 bits for other attributes, and 16 bits for character data.
+
+**man-end****************************************************************/
+
+/*** Video attribute macros ***/
+
+#define A_NORMAL (chtype)0
+
+#ifdef CHTYPE_LONG
+# define A_ALTCHARSET (chtype)0x00010000
+# define A_RIGHTLINE (chtype)0x00020000
+# define A_LEFTLINE (chtype)0x00040000
+# define A_INVIS (chtype)0x00080000
+# define A_UNDERLINE (chtype)0x00100000
+# define A_REVERSE (chtype)0x00200000
+# define A_BLINK (chtype)0x00400000
+# define A_BOLD (chtype)0x00800000
+
+# define A_ATTRIBUTES (chtype)0xffff0000
+# define A_CHARTEXT (chtype)0x0000ffff
+# define A_COLOR (chtype)0xff000000
+
+# define A_ITALIC A_INVIS
+# define A_PROTECT (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE)
+
+# define PDC_ATTR_SHIFT 19
+# define PDC_COLOR_SHIFT 24
+#else
+# define A_BOLD (chtype)0x0100 /* X/Open */
+# define A_REVERSE (chtype)0x0200 /* X/Open */
+# define A_BLINK (chtype)0x0400 /* X/Open */
+
+# define A_ATTRIBUTES (chtype)0xff00 /* X/Open */
+# define A_CHARTEXT (chtype)0x00ff /* X/Open */
+# define A_COLOR (chtype)0xf800 /* System V */
+
+# define A_ALTCHARSET A_NORMAL /* X/Open */
+# define A_PROTECT A_NORMAL /* X/Open */
+# define A_UNDERLINE A_NORMAL /* X/Open */
+
+# define A_LEFTLINE A_NORMAL
+# define A_RIGHTLINE A_NORMAL
+# define A_ITALIC A_NORMAL
+# define A_INVIS A_NORMAL
+
+# define PDC_ATTR_SHIFT 8
+# define PDC_COLOR_SHIFT 11
+#endif
+
+#define A_STANDOUT (A_REVERSE | A_BOLD) /* X/Open */
+#define A_DIM A_NORMAL
+
+#define CHR_MSK A_CHARTEXT /* Obsolete */
+#define ATR_MSK A_ATTRIBUTES /* Obsolete */
+#define ATR_NRM A_NORMAL /* Obsolete */
+
+/* For use with attr_t -- X/Open says, "these shall be distinct", so
+ this is a non-conforming implementation. */
+
+#define WA_ALTCHARSET A_ALTCHARSET
+#define WA_BLINK A_BLINK
+#define WA_BOLD A_BOLD
+#define WA_DIM A_DIM
+#define WA_INVIS A_INVIS
+#define WA_LEFT A_LEFTLINE
+#define WA_PROTECT A_PROTECT
+#define WA_REVERSE A_REVERSE
+#define WA_RIGHT A_RIGHTLINE
+#define WA_STANDOUT A_STANDOUT
+#define WA_UNDERLINE A_UNDERLINE
+
+#define WA_HORIZONTAL A_NORMAL
+#define WA_LOW A_NORMAL
+#define WA_TOP A_NORMAL
+#define WA_VERTICAL A_NORMAL
+
+/*** Alternate character set macros ***/
+
+/* 'w' = 32-bit chtype; acs_map[] index | A_ALTCHARSET
+ 'n' = 16-bit chtype; it gets the fallback set because no bit is
+ available for A_ALTCHARSET */
+
+#ifdef CHTYPE_LONG
+# define ACS_PICK(w, n) ((chtype)w | A_ALTCHARSET)
+#else
+# define ACS_PICK(w, n) ((chtype)n)
+#endif
+
+/* VT100-compatible symbols -- box chars */
+
+#define ACS_ULCORNER ACS_PICK('l', '+')
+#define ACS_LLCORNER ACS_PICK('m', '+')
+#define ACS_URCORNER ACS_PICK('k', '+')
+#define ACS_LRCORNER ACS_PICK('j', '+')
+#define ACS_RTEE ACS_PICK('u', '+')
+#define ACS_LTEE ACS_PICK('t', '+')
+#define ACS_BTEE ACS_PICK('v', '+')
+#define ACS_TTEE ACS_PICK('w', '+')
+#define ACS_HLINE ACS_PICK('q', '-')
+#define ACS_VLINE ACS_PICK('x', '|')
+#define ACS_PLUS ACS_PICK('n', '+')
+
+/* VT100-compatible symbols -- other */
+
+#define ACS_S1 ACS_PICK('o', '-')
+#define ACS_S9 ACS_PICK('s', '_')
+#define ACS_DIAMOND ACS_PICK('`', '+')
+#define ACS_CKBOARD ACS_PICK('a', ':')
+#define ACS_DEGREE ACS_PICK('f', '\'')
+#define ACS_PLMINUS ACS_PICK('g', '#')
+#define ACS_BULLET ACS_PICK('~', 'o')
+
+/* Teletype 5410v1 symbols -- these are defined in SysV curses, but
+ are not well-supported by most terminals. Stick to VT100 characters
+ for optimum portability. */
+
+#define ACS_LARROW ACS_PICK(',', '<')
+#define ACS_RARROW ACS_PICK('+', '>')
+#define ACS_DARROW ACS_PICK('.', 'v')
+#define ACS_UARROW ACS_PICK('-', '^')
+#define ACS_BOARD ACS_PICK('h', '#')
+#define ACS_LANTERN ACS_PICK('i', '*')
+#define ACS_BLOCK ACS_PICK('0', '#')
+
+/* That goes double for these -- undocumented SysV symbols. Don't use
+ them. */
+
+#define ACS_S3 ACS_PICK('p', '-')
+#define ACS_S7 ACS_PICK('r', '-')
+#define ACS_LEQUAL ACS_PICK('y', '<')
+#define ACS_GEQUAL ACS_PICK('z', '>')
+#define ACS_PI ACS_PICK('{', 'n')
+#define ACS_NEQUAL ACS_PICK('|', '+')
+#define ACS_STERLING ACS_PICK('}', 'L')
+
+/* Box char aliases */
+
+#define ACS_BSSB ACS_ULCORNER
+#define ACS_SSBB ACS_LLCORNER
+#define ACS_BBSS ACS_URCORNER
+#define ACS_SBBS ACS_LRCORNER
+#define ACS_SBSS ACS_RTEE
+#define ACS_SSSB ACS_LTEE
+#define ACS_SSBS ACS_BTEE
+#define ACS_BSSS ACS_TTEE
+#define ACS_BSBS ACS_HLINE
+#define ACS_SBSB ACS_VLINE
+#define ACS_SSSS ACS_PLUS
+
+/* cchar_t aliases */
+
+#ifdef PDC_WIDE
+# define WACS_ULCORNER (&(acs_map['l']))
+# define WACS_LLCORNER (&(acs_map['m']))
+# define WACS_URCORNER (&(acs_map['k']))
+# define WACS_LRCORNER (&(acs_map['j']))
+# define WACS_RTEE (&(acs_map['u']))
+# define WACS_LTEE (&(acs_map['t']))
+# define WACS_BTEE (&(acs_map['v']))
+# define WACS_TTEE (&(acs_map['w']))
+# define WACS_HLINE (&(acs_map['q']))
+# define WACS_VLINE (&(acs_map['x']))
+# define WACS_PLUS (&(acs_map['n']))
+
+# define WACS_S1 (&(acs_map['o']))
+# define WACS_S9 (&(acs_map['s']))
+# define WACS_DIAMOND (&(acs_map['`']))
+# define WACS_CKBOARD (&(acs_map['a']))
+# define WACS_DEGREE (&(acs_map['f']))
+# define WACS_PLMINUS (&(acs_map['g']))
+# define WACS_BULLET (&(acs_map['~']))
+
+# define WACS_LARROW (&(acs_map[',']))
+# define WACS_RARROW (&(acs_map['+']))
+# define WACS_DARROW (&(acs_map['.']))
+# define WACS_UARROW (&(acs_map['-']))
+# define WACS_BOARD (&(acs_map['h']))
+# define WACS_LANTERN (&(acs_map['i']))
+# define WACS_BLOCK (&(acs_map['0']))
+
+# define WACS_S3 (&(acs_map['p']))
+# define WACS_S7 (&(acs_map['r']))
+# define WACS_LEQUAL (&(acs_map['y']))
+# define WACS_GEQUAL (&(acs_map['z']))
+# define WACS_PI (&(acs_map['{']))
+# define WACS_NEQUAL (&(acs_map['|']))
+# define WACS_STERLING (&(acs_map['}']))
+
+# define WACS_BSSB WACS_ULCORNER
+# define WACS_SSBB WACS_LLCORNER
+# define WACS_BBSS WACS_URCORNER
+# define WACS_SBBS WACS_LRCORNER
+# define WACS_SBSS WACS_RTEE
+# define WACS_SSSB WACS_LTEE
+# define WACS_SSBS WACS_BTEE
+# define WACS_BSSS WACS_TTEE
+# define WACS_BSBS WACS_HLINE
+# define WACS_SBSB WACS_VLINE
+# define WACS_SSSS WACS_PLUS
+#endif
+
+/*** Color macros ***/
+
+#define COLOR_BLACK 0
+
+#ifdef PDC_RGB /* RGB */
+# define COLOR_RED 1
+# define COLOR_GREEN 2
+# define COLOR_BLUE 4
+#else /* BGR */
+# define COLOR_BLUE 1
+# define COLOR_GREEN 2
+# define COLOR_RED 4
+#endif
+
+#define COLOR_CYAN (COLOR_BLUE | COLOR_GREEN)
+#define COLOR_MAGENTA (COLOR_RED | COLOR_BLUE)
+#define COLOR_YELLOW (COLOR_RED | COLOR_GREEN)
+
+#define COLOR_WHITE 7
+
+/*----------------------------------------------------------------------
+ *
+ * Function and Keypad Key Definitions.
+ * Many are just for compatibility.
+ *
+ */
+
+#define KEY_CODE_YES 0x100 /* If get_wch() gives a key code */
+
+#define KEY_BREAK 0x101 /* Not on PC KBD */
+#define KEY_DOWN 0x102 /* Down arrow key */
+#define KEY_UP 0x103 /* Up arrow key */
+#define KEY_LEFT 0x104 /* Left arrow key */
+#define KEY_RIGHT 0x105 /* Right arrow key */
+#define KEY_HOME 0x106 /* home key */
+#define KEY_BACKSPACE 0x107 /* not on pc */
+#define KEY_F0 0x108 /* function keys; 64 reserved */
+
+#define KEY_DL 0x148 /* delete line */
+#define KEY_IL 0x149 /* insert line */
+#define KEY_DC 0x14a /* delete character */
+#define KEY_IC 0x14b /* insert char or enter ins mode */
+#define KEY_EIC 0x14c /* exit insert char mode */
+#define KEY_CLEAR 0x14d /* clear screen */
+#define KEY_EOS 0x14e /* clear to end of screen */
+#define KEY_EOL 0x14f /* clear to end of line */
+#define KEY_SF 0x150 /* scroll 1 line forward */
+#define KEY_SR 0x151 /* scroll 1 line back (reverse) */
+#define KEY_NPAGE 0x152 /* next page */
+#define KEY_PPAGE 0x153 /* previous page */
+#define KEY_STAB 0x154 /* set tab */
+#define KEY_CTAB 0x155 /* clear tab */
+#define KEY_CATAB 0x156 /* clear all tabs */
+#define KEY_ENTER 0x157 /* enter or send (unreliable) */
+#define KEY_SRESET 0x158 /* soft/reset (partial/unreliable) */
+#define KEY_RESET 0x159 /* reset/hard reset (unreliable) */
+#define KEY_PRINT 0x15a /* print/copy */
+#define KEY_LL 0x15b /* home down/bottom (lower left) */
+#define KEY_ABORT 0x15c /* abort/terminate key (any) */
+#define KEY_SHELP 0x15d /* short help */
+#define KEY_LHELP 0x15e /* long help */
+#define KEY_BTAB 0x15f /* Back tab key */
+#define KEY_BEG 0x160 /* beg(inning) key */
+#define KEY_CANCEL 0x161 /* cancel key */
+#define KEY_CLOSE 0x162 /* close key */
+#define KEY_COMMAND 0x163 /* cmd (command) key */
+#define KEY_COPY 0x164 /* copy key */
+#define KEY_CREATE 0x165 /* create key */
+#define KEY_END 0x166 /* end key */
+#define KEY_EXIT 0x167 /* exit key */
+#define KEY_FIND 0x168 /* find key */
+#define KEY_HELP 0x169 /* help key */
+#define KEY_MARK 0x16a /* mark key */
+#define KEY_MESSAGE 0x16b /* message key */
+#define KEY_MOVE 0x16c /* move key */
+#define KEY_NEXT 0x16d /* next object key */
+#define KEY_OPEN 0x16e /* open key */
+#define KEY_OPTIONS 0x16f /* options key */
+#define KEY_PREVIOUS 0x170 /* previous object key */
+#define KEY_REDO 0x171 /* redo key */
+#define KEY_REFERENCE 0x172 /* ref(erence) key */
+#define KEY_REFRESH 0x173 /* refresh key */
+#define KEY_REPLACE 0x174 /* replace key */
+#define KEY_RESTART 0x175 /* restart key */
+#define KEY_RESUME 0x176 /* resume key */
+#define KEY_SAVE 0x177 /* save key */
+#define KEY_SBEG 0x178 /* shifted beginning key */
+#define KEY_SCANCEL 0x179 /* shifted cancel key */
+#define KEY_SCOMMAND 0x17a /* shifted command key */
+#define KEY_SCOPY 0x17b /* shifted copy key */
+#define KEY_SCREATE 0x17c /* shifted create key */
+#define KEY_SDC 0x17d /* shifted delete char key */
+#define KEY_SDL 0x17e /* shifted delete line key */
+#define KEY_SELECT 0x17f /* select key */
+#define KEY_SEND 0x180 /* shifted end key */
+#define KEY_SEOL 0x181 /* shifted clear line key */
+#define KEY_SEXIT 0x182 /* shifted exit key */
+#define KEY_SFIND 0x183 /* shifted find key */
+#define KEY_SHOME 0x184 /* shifted home key */
+#define KEY_SIC 0x185 /* shifted input key */
+
+#define KEY_SLEFT 0x187 /* shifted left arrow key */
+#define KEY_SMESSAGE 0x188 /* shifted message key */
+#define KEY_SMOVE 0x189 /* shifted move key */
+#define KEY_SNEXT 0x18a /* shifted next key */
+#define KEY_SOPTIONS 0x18b /* shifted options key */
+#define KEY_SPREVIOUS 0x18c /* shifted prev key */
+#define KEY_SPRINT 0x18d /* shifted print key */
+#define KEY_SREDO 0x18e /* shifted redo key */
+#define KEY_SREPLACE 0x18f /* shifted replace key */
+#define KEY_SRIGHT 0x190 /* shifted right arrow */
+#define KEY_SRSUME 0x191 /* shifted resume key */
+#define KEY_SSAVE 0x192 /* shifted save key */
+#define KEY_SSUSPEND 0x193 /* shifted suspend key */
+#define KEY_SUNDO 0x194 /* shifted undo key */
+#define KEY_SUSPEND 0x195 /* suspend key */
+#define KEY_UNDO 0x196 /* undo key */
+
+/* PDCurses-specific key definitions -- PC only */
+
+#define ALT_0 0x197
+#define ALT_1 0x198
+#define ALT_2 0x199
+#define ALT_3 0x19a
+#define ALT_4 0x19b
+#define ALT_5 0x19c
+#define ALT_6 0x19d
+#define ALT_7 0x19e
+#define ALT_8 0x19f
+#define ALT_9 0x1a0
+#define ALT_A 0x1a1
+#define ALT_B 0x1a2
+#define ALT_C 0x1a3
+#define ALT_D 0x1a4
+#define ALT_E 0x1a5
+#define ALT_F 0x1a6
+#define ALT_G 0x1a7
+#define ALT_H 0x1a8
+#define ALT_I 0x1a9
+#define ALT_J 0x1aa
+#define ALT_K 0x1ab
+#define ALT_L 0x1ac
+#define ALT_M 0x1ad
+#define ALT_N 0x1ae
+#define ALT_O 0x1af
+#define ALT_P 0x1b0
+#define ALT_Q 0x1b1
+#define ALT_R 0x1b2
+#define ALT_S 0x1b3
+#define ALT_T 0x1b4
+#define ALT_U 0x1b5
+#define ALT_V 0x1b6
+#define ALT_W 0x1b7
+#define ALT_X 0x1b8
+#define ALT_Y 0x1b9
+#define ALT_Z 0x1ba
+
+#define CTL_LEFT 0x1bb /* Control-Left-Arrow */
+#define CTL_RIGHT 0x1bc
+#define CTL_PGUP 0x1bd
+#define CTL_PGDN 0x1be
+#define CTL_HOME 0x1bf
+#define CTL_END 0x1c0
+
+#define KEY_A1 0x1c1 /* upper left on Virtual keypad */
+#define KEY_A2 0x1c2 /* upper middle on Virt. keypad */
+#define KEY_A3 0x1c3 /* upper right on Vir. keypad */
+#define KEY_B1 0x1c4 /* middle left on Virt. keypad */
+#define KEY_B2 0x1c5 /* center on Virt. keypad */
+#define KEY_B3 0x1c6 /* middle right on Vir. keypad */
+#define KEY_C1 0x1c7 /* lower left on Virt. keypad */
+#define KEY_C2 0x1c8 /* lower middle on Virt. keypad */
+#define KEY_C3 0x1c9 /* lower right on Vir. keypad */
+
+#define PADSLASH 0x1ca /* slash on keypad */
+#define PADENTER 0x1cb /* enter on keypad */
+#define CTL_PADENTER 0x1cc /* ctl-enter on keypad */
+#define ALT_PADENTER 0x1cd /* alt-enter on keypad */
+#define PADSTOP 0x1ce /* stop on keypad */
+#define PADSTAR 0x1cf /* star on keypad */
+#define PADMINUS 0x1d0 /* minus on keypad */
+#define PADPLUS 0x1d1 /* plus on keypad */
+#define CTL_PADSTOP 0x1d2 /* ctl-stop on keypad */
+#define CTL_PADCENTER 0x1d3 /* ctl-enter on keypad */
+#define CTL_PADPLUS 0x1d4 /* ctl-plus on keypad */
+#define CTL_PADMINUS 0x1d5 /* ctl-minus on keypad */
+#define CTL_PADSLASH 0x1d6 /* ctl-slash on keypad */
+#define CTL_PADSTAR 0x1d7 /* ctl-star on keypad */
+#define ALT_PADPLUS 0x1d8 /* alt-plus on keypad */
+#define ALT_PADMINUS 0x1d9 /* alt-minus on keypad */
+#define ALT_PADSLASH 0x1da /* alt-slash on keypad */
+#define ALT_PADSTAR 0x1db /* alt-star on keypad */
+#define ALT_PADSTOP 0x1dc /* alt-stop on keypad */
+#define CTL_INS 0x1dd /* ctl-insert */
+#define ALT_DEL 0x1de /* alt-delete */
+#define ALT_INS 0x1df /* alt-insert */
+#define CTL_UP 0x1e0 /* ctl-up arrow */
+#define CTL_DOWN 0x1e1 /* ctl-down arrow */
+#define CTL_TAB 0x1e2 /* ctl-tab */
+#define ALT_TAB 0x1e3
+#define ALT_MINUS 0x1e4
+#define ALT_EQUAL 0x1e5
+#define ALT_HOME 0x1e6
+#define ALT_PGUP 0x1e7
+#define ALT_PGDN 0x1e8
+#define ALT_END 0x1e9
+#define ALT_UP 0x1ea /* alt-up arrow */
+#define ALT_DOWN 0x1eb /* alt-down arrow */
+#define ALT_RIGHT 0x1ec /* alt-right arrow */
+#define ALT_LEFT 0x1ed /* alt-left arrow */
+#define ALT_ENTER 0x1ee /* alt-enter */
+#define ALT_ESC 0x1ef /* alt-escape */
+#define ALT_BQUOTE 0x1f0 /* alt-back quote */
+#define ALT_LBRACKET 0x1f1 /* alt-left bracket */
+#define ALT_RBRACKET 0x1f2 /* alt-right bracket */
+#define ALT_SEMICOLON 0x1f3 /* alt-semi-colon */
+#define ALT_FQUOTE 0x1f4 /* alt-forward quote */
+#define ALT_COMMA 0x1f5 /* alt-comma */
+#define ALT_STOP 0x1f6 /* alt-stop */
+#define ALT_FSLASH 0x1f7 /* alt-forward slash */
+#define ALT_BKSP 0x1f8 /* alt-backspace */
+#define CTL_BKSP 0x1f9 /* ctl-backspace */
+#define PAD0 0x1fa /* keypad 0 */
+
+#define CTL_PAD0 0x1fb /* ctl-keypad 0 */
+#define CTL_PAD1 0x1fc
+#define CTL_PAD2 0x1fd
+#define CTL_PAD3 0x1fe
+#define CTL_PAD4 0x1ff
+#define CTL_PAD5 0x200
+#define CTL_PAD6 0x201
+#define CTL_PAD7 0x202
+#define CTL_PAD8 0x203
+#define CTL_PAD9 0x204
+
+#define ALT_PAD0 0x205 /* alt-keypad 0 */
+#define ALT_PAD1 0x206
+#define ALT_PAD2 0x207
+#define ALT_PAD3 0x208
+#define ALT_PAD4 0x209
+#define ALT_PAD5 0x20a
+#define ALT_PAD6 0x20b
+#define ALT_PAD7 0x20c
+#define ALT_PAD8 0x20d
+#define ALT_PAD9 0x20e
+
+#define CTL_DEL 0x20f /* clt-delete */
+#define ALT_BSLASH 0x210 /* alt-back slash */
+#define CTL_ENTER 0x211 /* ctl-enter */
+
+#define SHF_PADENTER 0x212 /* shift-enter on keypad */
+#define SHF_PADSLASH 0x213 /* shift-slash on keypad */
+#define SHF_PADSTAR 0x214 /* shift-star on keypad */
+#define SHF_PADPLUS 0x215 /* shift-plus on keypad */
+#define SHF_PADMINUS 0x216 /* shift-minus on keypad */
+#define SHF_UP 0x217 /* shift-up on keypad */
+#define SHF_DOWN 0x218 /* shift-down on keypad */
+#define SHF_IC 0x219 /* shift-insert on keypad */
+#define SHF_DC 0x21a /* shift-delete on keypad */
+
+#define KEY_MOUSE 0x21b /* "mouse" key */
+#define KEY_SHIFT_L 0x21c /* Left-shift */
+#define KEY_SHIFT_R 0x21d /* Right-shift */
+#define KEY_CONTROL_L 0x21e /* Left-control */
+#define KEY_CONTROL_R 0x21f /* Right-control */
+#define KEY_ALT_L 0x220 /* Left-alt */
+#define KEY_ALT_R 0x221 /* Right-alt */
+#define KEY_RESIZE 0x222 /* Window resize */
+#define KEY_SUP 0x223 /* Shifted up arrow */
+#define KEY_SDOWN 0x224 /* Shifted down arrow */
+
+#define KEY_MIN KEY_BREAK /* Minimum curses key value */
+#define KEY_MAX KEY_SDOWN /* Maximum curses key */
+
+#define KEY_F(n) (KEY_F0 + (n))
+
+/*----------------------------------------------------------------------
+ *
+ * PDCurses Function Declarations
+ *
+ */
+
+/* Standard */
+
+int addch(const chtype);
+int addchnstr(const chtype *, int);
+int addchstr(const chtype *);
+int addnstr(const char *, int);
+int addstr(const char *);
+int attroff(chtype);
+int attron(chtype);
+int attrset(chtype);
+int attr_get(attr_t *, short *, void *);
+int attr_off(attr_t, void *);
+int attr_on(attr_t, void *);
+int attr_set(attr_t, short, void *);
+int baudrate(void);
+int beep(void);
+int bkgd(chtype);
+void bkgdset(chtype);
+int border(chtype, chtype, chtype, chtype, chtype, chtype, chtype, chtype);
+int box(WINDOW *, chtype, chtype);
+bool can_change_color(void);
+int cbreak(void);
+int chgat(int, attr_t, short, const void *);
+int clearok(WINDOW *, bool);
+int clear(void);
+int clrtobot(void);
+int clrtoeol(void);
+int color_content(short, short *, short *, short *);
+int color_set(short, void *);
+int copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, int);
+int curs_set(int);
+int def_prog_mode(void);
+int def_shell_mode(void);
+int delay_output(int);
+int delch(void);
+int deleteln(void);
+void delscreen(SCREEN *);
+int delwin(WINDOW *);
+WINDOW *derwin(WINDOW *, int, int, int, int);
+int doupdate(void);
+WINDOW *dupwin(WINDOW *);
+int echochar(const chtype);
+int echo(void);
+int endwin(void);
+char erasechar(void);
+int erase(void);
+void filter(void);
+int flash(void);
+int flushinp(void);
+chtype getbkgd(WINDOW *);
+int getnstr(char *, int);
+int getstr(char *);
+WINDOW *getwin(FILE *);
+int halfdelay(int);
+bool has_colors(void);
+bool has_ic(void);
+bool has_il(void);
+int hline(chtype, int);
+void idcok(WINDOW *, bool);
+int idlok(WINDOW *, bool);
+void immedok(WINDOW *, bool);
+int inchnstr(chtype *, int);
+int inchstr(chtype *);
+chtype inch(void);
+int init_color(short, short, short, short);
+int init_pair(short, short, short);
+WINDOW *initscr(void);
+int innstr(char *, int);
+int insch(chtype);
+int insdelln(int);
+int insertln(void);
+int insnstr(const char *, int);
+int insstr(const char *);
+int instr(char *);
+int intrflush(WINDOW *, bool);
+bool isendwin(void);
+bool is_linetouched(WINDOW *, int);
+bool is_wintouched(WINDOW *);
+const char *keyname(int);
+int keypad(WINDOW *, bool);
+char killchar(void);
+int leaveok(WINDOW *, bool);
+char *longname(void);
+int meta(WINDOW *, bool);
+int move(int, int);
+int mvaddch(int, int, const chtype);
+int mvaddchnstr(int, int, const chtype *, int);
+int mvaddchstr(int, int, const chtype *);
+int mvaddnstr(int, int, const char *, int);
+int mvaddstr(int, int, const char *);
+int mvchgat(int, int, int, attr_t, short, const void *);
+int mvcur(int, int, int, int);
+int mvdelch(int, int);
+int mvderwin(WINDOW *, int, int);
+int mvgetch(int, int);
+int mvgetnstr(int, int, char *, int);
+int mvgetstr(int, int, char *);
+int mvhline(int, int, chtype, int);
+chtype mvinch(int, int);
+int mvinchnstr(int, int, chtype *, int);
+int mvinchstr(int, int, chtype *);
+int mvinnstr(int, int, char *, int);
+int mvinsch(int, int, chtype);
+int mvinsnstr(int, int, const char *, int);
+int mvinsstr(int, int, const char *);
+int mvinstr(int, int, char *);
+int mvprintw(int, int, const char *, ...);
+int mvscanw(int, int, const char *, ...);
+int mvvline(int, int, chtype, int);
+int mvwaddchnstr(WINDOW *, int, int, const chtype *, int);
+int mvwaddchstr(WINDOW *, int, int, const chtype *);
+int mvwaddch(WINDOW *, int, int, const chtype);
+int mvwaddnstr(WINDOW *, int, int, const char *, int);
+int mvwaddstr(WINDOW *, int, int, const char *);
+int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *);
+int mvwdelch(WINDOW *, int, int);
+int mvwgetch(WINDOW *, int, int);
+int mvwgetnstr(WINDOW *, int, int, char *, int);
+int mvwgetstr(WINDOW *, int, int, char *);
+int mvwhline(WINDOW *, int, int, chtype, int);
+int mvwinchnstr(WINDOW *, int, int, chtype *, int);
+int mvwinchstr(WINDOW *, int, int, chtype *);
+chtype mvwinch(WINDOW *, int, int);
+int mvwinnstr(WINDOW *, int, int, char *, int);
+int mvwinsch(WINDOW *, int, int, chtype);
+int mvwinsnstr(WINDOW *, int, int, const char *, int);
+int mvwinsstr(WINDOW *, int, int, const char *);
+int mvwinstr(WINDOW *, int, int, char *);
+int mvwin(WINDOW *, int, int);
+int mvwprintw(WINDOW *, int, int, const char *, ...);
+int mvwscanw(WINDOW *, int, int, const char *, ...);
+int mvwvline(WINDOW *, int, int, chtype, int);
+int napms(int);
+WINDOW *newpad(int, int);
+SCREEN *newterm(const char *, FILE *, FILE *);
+WINDOW *newwin(int, int, int, int);
+int nl(void);
+int nocbreak(void);
+int nodelay(WINDOW *, bool);
+int noecho(void);
+int nonl(void);
+void noqiflush(void);
+int noraw(void);
+int notimeout(WINDOW *, bool);
+int overlay(const WINDOW *, WINDOW *);
+int overwrite(const WINDOW *, WINDOW *);
+int pair_content(short, short *, short *);
+int pechochar(WINDOW *, chtype);
+int pnoutrefresh(WINDOW *, int, int, int, int, int, int);
+int prefresh(WINDOW *, int, int, int, int, int, int);
+int printw(const char *, ...);
+int putwin(WINDOW *, FILE *);
+void qiflush(void);
+int raw(void);
+int redrawwin(WINDOW *);
+int refresh(void);
+int reset_prog_mode(void);
+int reset_shell_mode(void);
+int resetty(void);
+int ripoffline(int, int (*)(WINDOW *, int));
+int savetty(void);
+int scanw(const char *, ...);
+int scr_dump(const char *);
+int scr_init(const char *);
+int scr_restore(const char *);
+int scr_set(const char *);
+int scrl(int);
+int scroll(WINDOW *);
+int scrollok(WINDOW *, bool);
+SCREEN *set_term(SCREEN *);
+int setscrreg(int, int);
+int slk_attroff(const chtype);
+int slk_attr_off(const attr_t, void *);
+int slk_attron(const chtype);
+int slk_attr_on(const attr_t, void *);
+int slk_attrset(const chtype);
+int slk_attr_set(const attr_t, short, void *);
+int slk_clear(void);
+int slk_color(short);
+int slk_init(int);
+char *slk_label(int);
+int slk_noutrefresh(void);
+int slk_refresh(void);
+int slk_restore(void);
+int slk_set(int, const char *, int);
+int slk_touch(void);
+int standend(void);
+int standout(void);
+int start_color(void);
+WINDOW *subpad(WINDOW *, int, int, int, int);
+WINDOW *subwin(WINDOW *, int, int, int, int);
+int syncok(WINDOW *, bool);
+chtype termattrs(void);
+attr_t term_attrs(void);
+const char *termname(void);
+void timeout(int);
+int touchline(WINDOW *, int, int);
+int touchwin(WINDOW *);
+int typeahead(int);
+int untouchwin(WINDOW *);
+void use_env(bool);
+int vidattr(chtype);
+int vid_attr(attr_t, short, void *);
+int vidputs(chtype, int (*)(int));
+int vid_puts(attr_t, short, void *, int (*)(int));
+int vline(chtype, int);
+int vw_printw(WINDOW *, const char *, va_list);
+int vwprintw(WINDOW *, const char *, va_list);
+int vw_scanw(WINDOW *, const char *, va_list);
+int vwscanw(WINDOW *, const char *, va_list);
+int waddchnstr(WINDOW *, const chtype *, int);
+int waddchstr(WINDOW *, const chtype *);
+int waddch(WINDOW *, const chtype);
+int waddnstr(WINDOW *, const char *, int);
+int waddstr(WINDOW *, const char *);
+int wattroff(WINDOW *, chtype);
+int wattron(WINDOW *, chtype);
+int wattrset(WINDOW *, chtype);
+int wattr_get(WINDOW *, attr_t *, short *, void *);
+int wattr_off(WINDOW *, attr_t, void *);
+int wattr_on(WINDOW *, attr_t, void *);
+int wattr_set(WINDOW *, attr_t, short, void *);
+void wbkgdset(WINDOW *, chtype);
+int wbkgd(WINDOW *, chtype);
+int wborder(WINDOW *, chtype, chtype, chtype, chtype,
+ chtype, chtype, chtype, chtype);
+int wchgat(WINDOW *, int, attr_t, short, const void *);
+int wclear(WINDOW *);
+int wclrtobot(WINDOW *);
+int wclrtoeol(WINDOW *);
+int wcolor_set(WINDOW *, short, void *);
+void wcursyncup(WINDOW *);
+int wdelch(WINDOW *);
+int wdeleteln(WINDOW *);
+int wechochar(WINDOW *, const chtype);
+int werase(WINDOW *);
+int wgetch(WINDOW *);
+int wgetnstr(WINDOW *, char *, int);
+int wgetstr(WINDOW *, char *);
+int whline(WINDOW *, chtype, int);
+int winchnstr(WINDOW *, chtype *, int);
+int winchstr(WINDOW *, chtype *);
+chtype winch(WINDOW *);
+int winnstr(WINDOW *, char *, int);
+int winsch(WINDOW *, chtype);
+int winsdelln(WINDOW *, int);
+int winsertln(WINDOW *);
+int winsnstr(WINDOW *, const char *, int);
+int winsstr(WINDOW *, const char *);
+int winstr(WINDOW *, char *);
+int wmove(WINDOW *, int, int);
+int wnoutrefresh(WINDOW *);
+int wprintw(WINDOW *, const char *, ...);
+int wredrawln(WINDOW *, int, int);
+int wrefresh(WINDOW *);
+int wscanw(WINDOW *, const char *, ...);
+int wscrl(WINDOW *, int);
+int wsetscrreg(WINDOW *, int, int);
+int wstandend(WINDOW *);
+int wstandout(WINDOW *);
+void wsyncdown(WINDOW *);
+void wsyncup(WINDOW *);
+void wtimeout(WINDOW *, int);
+int wtouchln(WINDOW *, int, int, int);
+int wvline(WINDOW *, chtype, int);
+
+/* Wide-character functions */
+
+#ifdef PDC_WIDE
+int addnwstr(const wchar_t *, int);
+int addwstr(const wchar_t *);
+int add_wch(const cchar_t *);
+int add_wchnstr(const cchar_t *, int);
+int add_wchstr(const cchar_t *);
+int border_set(const cchar_t *, const cchar_t *, const cchar_t *,
+ const cchar_t *, const cchar_t *, const cchar_t *,
+ const cchar_t *, const cchar_t *);
+int box_set(WINDOW *, const cchar_t *, const cchar_t *);
+int echo_wchar(const cchar_t *);
+int erasewchar(wchar_t *);
+int getbkgrnd(cchar_t *);
+int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *);
+int getn_wstr(wint_t *, int);
+int get_wch(wint_t *);
+int get_wstr(wint_t *);
+int hline_set(const cchar_t *, int);
+int innwstr(wchar_t *, int);
+int ins_nwstr(const wchar_t *, int);
+int ins_wch(const cchar_t *);
+int ins_wstr(const wchar_t *);
+int inwstr(wchar_t *);
+int in_wch(cchar_t *);
+int in_wchnstr(cchar_t *, int);
+int in_wchstr(cchar_t *);
+char *key_name(wchar_t);
+int killwchar(wchar_t *);
+int mvaddnwstr(int, int, const wchar_t *, int);
+int mvaddwstr(int, int, const wchar_t *);
+int mvadd_wch(int, int, const cchar_t *);
+int mvadd_wchnstr(int, int, const cchar_t *, int);
+int mvadd_wchstr(int, int, const cchar_t *);
+int mvgetn_wstr(int, int, wint_t *, int);
+int mvget_wch(int, int, wint_t *);
+int mvget_wstr(int, int, wint_t *);
+int mvhline_set(int, int, const cchar_t *, int);
+int mvinnwstr(int, int, wchar_t *, int);
+int mvins_nwstr(int, int, const wchar_t *, int);
+int mvins_wch(int, int, const cchar_t *);
+int mvins_wstr(int, int, const wchar_t *);
+int mvinwstr(int, int, wchar_t *);
+int mvin_wch(int, int, cchar_t *);
+int mvin_wchnstr(int, int, cchar_t *, int);
+int mvin_wchstr(int, int, cchar_t *);
+int mvvline_set(int, int, const cchar_t *, int);
+int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int);
+int mvwaddwstr(WINDOW *, int, int, const wchar_t *);
+int mvwadd_wch(WINDOW *, int, int, const cchar_t *);
+int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int);
+int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *);
+int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int);
+int mvwget_wch(WINDOW *, int, int, wint_t *);
+int mvwget_wstr(WINDOW *, int, int, wint_t *);
+int mvwhline_set(WINDOW *, int, int, const cchar_t *, int);
+int mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
+int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int);
+int mvwins_wch(WINDOW *, int, int, const cchar_t *);
+int mvwins_wstr(WINDOW *, int, int, const wchar_t *);
+int mvwin_wch(WINDOW *, int, int, cchar_t *);
+int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int);
+int mvwin_wchstr(WINDOW *, int, int, cchar_t *);
+int mvwinwstr(WINDOW *, int, int, wchar_t *);
+int mvwvline_set(WINDOW *, int, int, const cchar_t *, int);
+int pecho_wchar(WINDOW *, const cchar_t*);
+int setcchar(cchar_t*, const wchar_t*, const attr_t, short, const void*);
+int slk_wset(int, const wchar_t *, int);
+int unget_wch(const wchar_t);
+int vline_set(const cchar_t *, int);
+int waddnwstr(WINDOW *, const wchar_t *, int);
+int waddwstr(WINDOW *, const wchar_t *);
+int wadd_wch(WINDOW *, const cchar_t *);
+int wadd_wchnstr(WINDOW *, const cchar_t *, int);
+int wadd_wchstr(WINDOW *, const cchar_t *);
+int wbkgrnd(WINDOW *, const cchar_t *);
+void wbkgrndset(WINDOW *, const cchar_t *);
+int wborder_set(WINDOW *, const cchar_t *, const cchar_t *,
+ const cchar_t *, const cchar_t *, const cchar_t *,
+ const cchar_t *, const cchar_t *, const cchar_t *);
+int wecho_wchar(WINDOW *, const cchar_t *);
+int wgetbkgrnd(WINDOW *, cchar_t *);
+int wgetn_wstr(WINDOW *, wint_t *, int);
+int wget_wch(WINDOW *, wint_t *);
+int wget_wstr(WINDOW *, wint_t *);
+int whline_set(WINDOW *, const cchar_t *, int);
+int winnwstr(WINDOW *, wchar_t *, int);
+int wins_nwstr(WINDOW *, const wchar_t *, int);
+int wins_wch(WINDOW *, const cchar_t *);
+int wins_wstr(WINDOW *, const wchar_t *);
+int winwstr(WINDOW *, wchar_t *);
+int win_wch(WINDOW *, cchar_t *);
+int win_wchnstr(WINDOW *, cchar_t *, int);
+int win_wchstr(WINDOW *, cchar_t *);
+wchar_t *wunctrl(cchar_t *);
+int wvline_set(WINDOW *, const cchar_t *, int);
+#endif
+
+/* Quasi-standard */
+
+chtype getattrs(WINDOW *);
+int getbegx(WINDOW *);
+int getbegy(WINDOW *);
+int getmaxx(WINDOW *);
+int getmaxy(WINDOW *);
+int getparx(WINDOW *);
+int getpary(WINDOW *);
+int getcurx(WINDOW *);
+int getcury(WINDOW *);
+void traceoff(void);
+void traceon(void);
+char *unctrl(chtype);
+
+int crmode(void);
+int nocrmode(void);
+int draino(int);
+int resetterm(void);
+int fixterm(void);
+int saveterm(void);
+int setsyx(int, int);
+
+int mouse_set(unsigned long);
+int mouse_on(unsigned long);
+int mouse_off(unsigned long);
+int request_mouse_pos(void);
+int map_button(unsigned long);
+void wmouse_position(WINDOW *, int *, int *);
+unsigned long getmouse(void);
+unsigned long getbmap(void);
+
+/* ncurses */
+
+int assume_default_colors(int, int);
+const char *curses_version(void);
+bool has_key(int);
+int use_default_colors(void);
+int wresize(WINDOW *, int, int);
+
+int mouseinterval(int);
+mmask_t mousemask(mmask_t, mmask_t *);
+bool mouse_trafo(int *, int *, bool);
+int nc_getmouse(MEVENT *);
+int ungetmouse(MEVENT *);
+bool wenclose(const WINDOW *, int, int);
+bool wmouse_trafo(const WINDOW *, int *, int *, bool);
+
+/* PDCurses */
+
+int addrawch(chtype);
+int insrawch(chtype);
+bool is_termresized(void);
+int mvaddrawch(int, int, chtype);
+int mvdeleteln(int, int);
+int mvinsertln(int, int);
+int mvinsrawch(int, int, chtype);
+int mvwaddrawch(WINDOW *, int, int, chtype);
+int mvwdeleteln(WINDOW *, int, int);
+int mvwinsertln(WINDOW *, int, int);
+int mvwinsrawch(WINDOW *, int, int, chtype);
+int raw_output(bool);
+int resize_term(int, int);
+WINDOW *resize_window(WINDOW *, int, int);
+int waddrawch(WINDOW *, chtype);
+int winsrawch(WINDOW *, chtype);
+char wordchar(void);
+
+#ifdef PDC_WIDE
+wchar_t *slk_wlabel(int);
+#endif
+
+void PDC_debug(const char *, ...);
+int PDC_ungetch(int);
+int PDC_set_blink(bool);
+int PDC_set_line_color(short);
+void PDC_set_title(const char *);
+
+int PDC_clearclipboard(void);
+int PDC_freeclipboard(char *);
+int PDC_getclipboard(char **, long *);
+int PDC_setclipboard(const char *, long);
+
+unsigned long PDC_get_input_fd(void);
+unsigned long PDC_get_key_modifiers(void);
+int PDC_return_key_modifiers(bool);
+int PDC_save_key_modifiers(bool);
+
+#ifdef XCURSES
+WINDOW *Xinitscr(int, char **);
+void XCursesExit(void);
+int sb_init(void);
+int sb_set_horz(int, int, int);
+int sb_set_vert(int, int, int);
+int sb_get_horz(int *, int *, int *);
+int sb_get_vert(int *, int *, int *);
+int sb_refresh(void);
+#endif
+
+/*** Functions defined as macros ***/
+
+/* getch() and ungetch() conflict with some DOS libraries */
+
+#define getch() wgetch(stdscr)
+#define ungetch(ch) PDC_ungetch(ch)
+
+#define COLOR_PAIR(n) (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR)
+#define PAIR_NUMBER(n) (((n) & A_COLOR) >> PDC_COLOR_SHIFT)
+
+/* These will _only_ work as macros */
+
+#define getbegyx(w, y, x) (y = getbegy(w), x = getbegx(w))
+#define getmaxyx(w, y, x) (y = getmaxy(w), x = getmaxx(w))
+#define getparyx(w, y, x) (y = getpary(w), x = getparx(w))
+#define getyx(w, y, x) (y = getcury(w), x = getcurx(w))
+
+#define getsyx(y, x) { if (curscr->_leaveit) (y)=(x)=-1; \
+ else getyx(curscr,(y),(x)); }
+
+#ifdef NCURSES_MOUSE_VERSION
+# define getmouse(x) nc_getmouse(x)
+#endif
+
+/* return codes from PDC_getclipboard() and PDC_setclipboard() calls */
+
+#define PDC_CLIP_SUCCESS 0
+#define PDC_CLIP_ACCESS_ERROR 1
+#define PDC_CLIP_EMPTY 2
+#define PDC_CLIP_MEMORY_ERROR 3
+
+/* PDCurses key modifier masks */
+
+#define PDC_KEY_MODIFIER_SHIFT 1
+#define PDC_KEY_MODIFIER_CONTROL 2
+#define PDC_KEY_MODIFIER_ALT 4
+#define PDC_KEY_MODIFIER_NUMLOCK 8
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+# undef bool
+}
+#endif
+
+/* Local functions not defined in normal curses */
+
+void curses_enable_vga(int);
+void curses_enable_serial(int);
+
+int curses_vga_enabled(void);
+int curses_serial_enabled(void);
+
+#endif /* __PDCURSES__ */
diff --git a/payloads/libpayload/curses/PDCurses/curspriv.h b/payloads/libpayload/curses/PDCurses/curspriv.h
new file mode 100644
index 0000000..8b34f01
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/curspriv.h
@@ -0,0 +1,142 @@
+/* Public Domain Curses */
+
+/* $Id: curspriv.h,v 1.158 2008/07/13 16:08:16 wmcbrine Exp $ */
+
+/* Private definitions and declarations for use within PDCurses.
+ These should generally not be referenced by applications. */
+
+#ifndef __CURSES_INTERNALS__
+#define __CURSES_INTERNALS__ 1
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define CURSES_LIBRARY
+#include <curses.h>
+
+#if defined(__TURBOC__) || defined(__EMX__) || defined(__DJGPP__) || \
+ defined(__CYGWIN32__) || defined(__MINGW32__) || \
+ defined(__WATCOMC__) || defined(__PACIFIC__)
+# ifndef HAVE_VSSCANF
+# define HAVE_VSSCANF /* have vsscanf() */
+# endif
+#endif
+
+#if defined(__CYGWIN32__) || defined(__MINGW32__) || \
+ defined(__LCC__) || defined(__WATCOMC__)
+# ifndef HAVE_VSNPRINTF
+# define HAVE_VSNPRINTF /* have vsnprintf() */
+# endif
+#endif
+
+#if defined(_MSC_VER) && defined(_WIN32) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE 1 /* kill nonsense warnings */
+#endif
+
+/*----------------------------------------------------------------------*/
+
+typedef struct /* structure for ripped off lines */
+{
+ int line;
+ int (*init)(WINDOW *, int);
+} RIPPEDOFFLINE;
+
+/* Window properties */
+
+#define _SUBWIN 0x01 /* window is a subwindow */
+#define _PAD 0x10 /* X/Open Pad. */
+#define _SUBPAD 0x20 /* X/Open subpad. */
+
+/* Miscellaneous */
+
+#define _NO_CHANGE -1 /* flags line edge unchanged */
+
+#define _ECHAR 0x08 /* Erase char (^H) */
+#define _DWCHAR 0x17 /* Delete Word char (^W) */
+#define _DLCHAR 0x15 /* Delete Line char (^U) */
+
+extern WINDOW *pdc_lastscr;
+extern bool pdc_trace_on; /* tracing flag */
+extern bool pdc_color_started;
+extern unsigned long pdc_key_modifiers;
+extern MOUSE_STATUS pdc_mouse_status;
+
+/*----------------------------------------------------------------------*/
+
+/* Platform implementation functions */
+
+void PDC_beep(void);
+bool PDC_can_change_color(void);
+int PDC_color_content(short, short *, short *, short *);
+bool PDC_check_key(void);
+int PDC_curs_set(int);
+void PDC_flushinp(void);
+int PDC_get_columns(void);
+int PDC_get_cursor_mode(void);
+int PDC_get_key(void);
+int PDC_get_rows(void);
+void PDC_gotoyx(int, int);
+int PDC_init_color(short, short, short, short);
+void PDC_init_pair(short, short, short);
+int PDC_modifiers_set(void);
+int PDC_mouse_set(void);
+void PDC_napms(int);
+int PDC_pair_content(short, short *, short *);
+void PDC_reset_prog_mode(void);
+void PDC_reset_shell_mode(void);
+int PDC_resize_screen(int, int);
+void PDC_restore_screen_mode(int);
+void PDC_save_screen_mode(int);
+void PDC_scr_close(void);
+void PDC_scr_free(void);
+int PDC_scr_open(int, char **);
+void PDC_set_keyboard_binary(bool);
+void PDC_transform_line(int, int, int, const chtype *);
+const char *PDC_sysname(void);
+
+/* Internal cross-module functions */
+
+void PDC_init_atrtab(void);
+WINDOW *PDC_makelines(WINDOW *);
+WINDOW *PDC_makenew(int, int, int, int);
+int PDC_mouse_in_slk(int, int);
+void PDC_slk_free(void);
+void PDC_slk_initialize(void);
+void PDC_sync(WINDOW *);
+
+#ifdef PDC_WIDE
+int PDC_mbtowc(wchar_t *, const char *, size_t);
+size_t PDC_mbstowcs(wchar_t *, const char *, size_t);
+size_t PDC_wcstombs(char *, const wchar_t *, size_t);
+#endif
+
+#ifdef PDCDEBUG
+# define PDC_LOG(x) if (pdc_trace_on) PDC_debug x
+# define RCSID(x) static const char *rcsid = x;
+#else
+# define PDC_LOG(x)
+# define RCSID(x)
+#endif
+
+/* Internal macros for attributes */
+
+#ifdef CHTYPE_LONG
+# define PDC_COLOR_PAIRS 256
+#else
+# define PDC_COLOR_PAIRS 32
+#endif
+
+#ifndef max
+# define max(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+#ifndef min
+# define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#define DIVROUND(num, divisor) ((num) + ((divisor) >> 1)) / (divisor)
+
+#define PDC_CLICK_PERIOD 150 /* time to wait for a click, if
+ not set by mouseinterval() */
+
+#endif /* __CURSES_INTERNALS__*/
diff --git a/payloads/libpayload/curses/PDCurses/demos/README b/payloads/libpayload/curses/PDCurses/demos/README
new file mode 100644
index 0000000..8f4b5c6
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/README
@@ -0,0 +1,25 @@
+PDCurses Demos
+==============
+
+This directory contains demonstration programs to show and test the
+capabilities of curses libraries. Some of them predate PDCurses,
+PCcurses or even pcurses/ncurses. Although some PDCurses-specific code
+has been added, all programs remain portable to other implementations
+(at a minimum, to ncurses).
+
+
+Building
+--------
+
+The demos are built by the platform-specific makefiles, in the platform
+directories. Alternatively, you can build them manually, individually,
+and link with any curses library; e.g., "cc -lcurses -orain rain.c".
+There are no dependencies besides curses and the standard C library, and
+no configuration is needed.
+
+
+Distribution Status
+-------------------
+
+Public Domain, except for rain.c and worm.c, which are under the ncurses
+license (MIT-like).
diff --git a/payloads/libpayload/curses/PDCurses/demos/firework.c b/payloads/libpayload/curses/PDCurses/demos/firework.c
new file mode 100644
index 0000000..61fd65d
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/firework.c
@@ -0,0 +1,148 @@
+/* $Id: firework.c,v 1.25 2008/07/13 16:08:17 wmcbrine Exp $ */
+
+#include <stdio.h>
+#include <signal.h>
+#include <curses.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <time.h>
+
+#define DELAYSIZE 200
+
+void myrefresh(void);
+void get_color(void);
+void explode(int, int);
+
+short color_table[] =
+{
+ COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN,
+ COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE
+};
+
+int main(int argc, char **argv)
+{
+ int i, start, end, row, diff, flag, direction, seed;
+
+#ifdef XCURSES
+ Xinitscr(argc, argv);
+#else
+ initscr();
+#endif
+ nodelay(stdscr, TRUE);
+ noecho();
+
+ if (has_colors())
+ start_color();
+
+ for (i = 0; i < 8; i++)
+ init_pair(i, color_table[i], COLOR_BLACK);
+
+ seed = time((time_t *)0);
+ srand(seed);
+ flag = 0;
+
+ while (getch() == ERR) /* loop until a key is hit */
+ {
+ do {
+ start = rand() % (COLS - 3);
+ end = rand() % (COLS - 3);
+ start = (start < 2) ? 2 : start;
+ end = (end < 2) ? 2 : end;
+ direction = (start > end) ? -1 : 1;
+ diff = abs(start - end);
+
+ } while (diff < 2 || diff >= LINES - 2);
+
+ attrset(A_NORMAL);
+
+ for (row = 0; row < diff; row++)
+ {
+ mvaddstr(LINES - row, row * direction + start,
+ (direction < 0) ? "\\" : "/");
+
+ if (flag++)
+ {
+ myrefresh();
+ erase();
+ flag = 0;
+ }
+ }
+
+ if (flag++)
+ {
+ myrefresh();
+ flag = 0;
+ }
+
+ explode(LINES - row, diff * direction + start);
+ erase();
+ myrefresh();
+ }
+
+ endwin();
+
+ return 0;
+}
+
+void explode(int row, int col)
+{
+ erase();
+ mvaddstr(row, col, "-");
+ myrefresh();
+
+ --col;
+
+ get_color();
+ mvaddstr(row - 1, col, " - ");
+ mvaddstr(row, col, "-+-");
+ mvaddstr(row + 1, col, " - ");
+ myrefresh();
+
+ --col;
+
+ get_color();
+ mvaddstr(row - 2, col, " --- ");
+ mvaddstr(row - 1, col, "-+++-");
+ mvaddstr(row, col, "-+#+-");
+ mvaddstr(row + 1, col, "-+++-");
+ mvaddstr(row + 2, col, " --- ");
+ myrefresh();
+
+ get_color();
+ mvaddstr(row - 2, col, " +++ ");
+ mvaddstr(row - 1, col, "++#++");
+ mvaddstr(row, col, "+# #+");
+ mvaddstr(row + 1, col, "++#++");
+ mvaddstr(row + 2, col, " +++ ");
+ myrefresh();
+
+ get_color();
+ mvaddstr(row - 2, col, " # ");
+ mvaddstr(row - 1, col, "## ##");
+ mvaddstr(row, col, "# #");
+ mvaddstr(row + 1, col, "## ##");
+ mvaddstr(row + 2, col, " # ");
+ myrefresh();
+
+ get_color();
+ mvaddstr(row - 2, col, " # # ");
+ mvaddstr(row - 1, col, "# #");
+ mvaddstr(row, col, " ");
+ mvaddstr(row + 1, col, "# #");
+ mvaddstr(row + 2, col, " # # ");
+ myrefresh();
+}
+
+void myrefresh(void)
+{
+ napms(DELAYSIZE);
+ move(LINES - 1, COLS - 1);
+ refresh();
+}
+
+void get_color(void)
+{
+ chtype bold = (rand() % 2) ? A_BOLD : A_NORMAL;
+ attrset(COLOR_PAIR(rand() % 8) | bold);
+}
diff --git a/payloads/libpayload/curses/PDCurses/demos/newdemo.c b/payloads/libpayload/curses/PDCurses/demos/newdemo.c
new file mode 100644
index 0000000..eefc0c1
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/newdemo.c
@@ -0,0 +1,425 @@
+/*
+ * newdemo.c - A demo program using PDCurses. The program
+ * illustrates the use of colors for text output.
+ *
+ * Hacks by jbuhler at cs.washington.edu on 12/29/96
+ *
+ * $Id: newdemo.c,v 1.39 2008/07/13 16:08:17 wmcbrine Exp $
+ */
+
+#include <stdio.h>
+#include <signal.h>
+#include <string.h>
+#include <curses.h>
+#include <stdlib.h>
+#include <time.h>
+
+int WaitForUser(void);
+int SubWinTest(WINDOW *);
+int BouncingBalls(WINDOW *);
+void trap(int);
+
+/* An ASCII map of Australia */
+
+char *AusMap[17] =
+{
+ " A ",
+ " AA AA ",
+ " N.T. AAAAA AAAA ",
+ " AAAAAAAAAAA AAAAAAAA ",
+ " AAAAAAAAAAAAAAAAAAAAAAAAA Qld.",
+ " AAAAAAAAAAAAAAAAAAAAAAAAAAAA ",
+ " AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ",
+ " AAAAAAAAAAAAAAAAAAAAAAAAAAAA ",
+ " AAAAAAAAAAAAAAAAAAAAAAAAA N.S.W.",
+ "W.A. AAAAAAAAA AAAAAA Vic.",
+ " AAA S.A. AA",
+ " A Tas.",
+ ""
+};
+
+/* Funny messages for the scroller */
+
+char *messages[] =
+{
+ "Hello from the Land Down Under",
+ "The Land of crocs, and a big Red Rock",
+ "Where the sunflower runs along the highways",
+ "The dusty red roads lead one to loneliness",
+ "Blue sky in the morning and",
+ "Freezing nights and twinkling stars",
+ NULL
+};
+
+int WaitForUser(void)
+{
+ chtype ch;
+
+ nodelay(stdscr, TRUE);
+ halfdelay(50);
+
+ ch = getch();
+
+ nodelay(stdscr, FALSE);
+ nocbreak(); /* Reset the halfdelay() value */
+ cbreak();
+
+ return (ch == '\033') ? ch : 0;
+}
+
+int SubWinTest(WINDOW *win)
+{
+ WINDOW *swin1, *swin2, *swin3;
+ int w, h, sw, sh, bx, by;
+
+ wattrset(win, 0);
+ getmaxyx(win, h, w);
+ getbegyx(win, by, bx);
+
+ sw = w / 3;
+ sh = h / 3;
+
+ if ((swin1 = derwin(win, sh, sw, 3, 5)) == NULL)
+ return 1;
+ if ((swin2 = subwin(win, sh, sw, by + 4, bx + 8)) == NULL)
+ return 1;
+ if ((swin3 = subwin(win, sh, sw, by + 5, bx + 11)) == NULL)
+ return 1;
+
+ init_pair(8, COLOR_RED, COLOR_BLUE);
+ wbkgd(swin1, COLOR_PAIR(8));
+ werase(swin1);
+ mvwaddstr(swin1, 0, 3, "Sub-window 1");
+ wrefresh(swin1);
+
+ init_pair(9, COLOR_CYAN, COLOR_MAGENTA);
+ wbkgd(swin2, COLOR_PAIR(9));
+ werase(swin2);
+ mvwaddstr(swin2, 0, 3, "Sub-window 2");
+ wrefresh(swin2);
+
+ init_pair(10, COLOR_YELLOW, COLOR_GREEN);
+ wbkgd(swin3, COLOR_PAIR(10));
+ werase(swin3);
+ mvwaddstr(swin3, 0, 3, "Sub-window 3");
+ wrefresh(swin3);
+
+ delwin(swin1);
+ delwin(swin2);
+ delwin(swin3);
+ WaitForUser();
+
+ return 0;
+}
+
+int BouncingBalls(WINDOW *win)
+{
+ chtype c1, c2, c3, ball1, ball2, ball3;
+ int w, h, x1, y1, xd1, yd1, x2, y2, xd2, yd2, x3, y3, xd3, yd3, c;
+
+ curs_set(0);
+
+ wbkgd(win, COLOR_PAIR(1));
+ wrefresh(win);
+ wattrset(win, 0);
+
+ init_pair(11, COLOR_RED, COLOR_GREEN);
+ init_pair(12, COLOR_BLUE, COLOR_RED);
+ init_pair(13, COLOR_YELLOW, COLOR_WHITE);
+
+ ball1 = 'O' | COLOR_PAIR(11);
+ ball2 = '*' | COLOR_PAIR(12);
+ ball3 = '@' | COLOR_PAIR(13);
+
+ getmaxyx(win, h, w);
+
+ x1 = 2 + rand() % (w - 4);
+ y1 = 2 + rand() % (h - 4);
+ x2 = 2 + rand() % (w - 4);
+ y2 = 2 + rand() % (h - 4);
+ x3 = 2 + rand() % (w - 4);
+ y3 = 2 + rand() % (h - 4);
+
+ xd1 = 1;
+ yd1 = 1;
+ xd2 = 1;
+ yd2 = -1;
+ xd3 = -1;
+ yd3 = 1;
+
+ nodelay(stdscr, TRUE);
+
+ while ((c = getch()) == ERR)
+ {
+ x1 += xd1;
+ if (x1 <= 1 || x1 >= w - 2)
+ xd1 *= -1;
+
+ y1 += yd1;
+ if (y1 <= 1 || y1 >= h - 2)
+ yd1 *= -1;
+
+ x2 += xd2;
+ if (x2 <= 1 || x2 >= w - 2)
+ xd2 *= -1;
+
+ y2 += yd2;
+ if (y2 <= 1 || y2 >= h - 2)
+ yd2 *= -1;
+
+ x3 += xd3;
+ if (x3 <= 1 || x3 >= w - 2)
+ xd3 *= -1;
+
+ y3 += yd3;
+ if (y3 <= 1 || y3 >= h - 2)
+ yd3 *= -1;
+
+ c1 = mvwinch(win, y1, x1);
+ c2 = mvwinch(win, y2, x2);
+ c3 = mvwinch(win, y3, x3);
+
+ mvwaddch(win, y1, x1, ball1);
+ mvwaddch(win, y2, x2, ball2);
+ mvwaddch(win, y3, x3, ball3);
+
+ wmove(win, 0, 0);
+ wrefresh(win);
+
+ mvwaddch(win, y1, x1, c1);
+ mvwaddch(win, y2, x2, c2);
+ mvwaddch(win, y3, x3, c3);
+
+ napms(150);
+ }
+
+ nodelay(stdscr, FALSE);
+ ungetch(c);
+ return 0;
+}
+
+/* Trap interrupt */
+
+void trap(int sig)
+{
+ if (sig == SIGINT)
+ {
+ endwin();
+
+ exit(0);
+ }
+}
+
+int main(int argc, char **argv)
+{
+ WINDOW *win;
+ chtype save[80], ch;
+ int width, height, w, x, y, i, j, seed;
+
+#ifdef XCURSES
+ Xinitscr(argc, argv);
+#else
+ initscr();
+#endif
+ seed = time((time_t *)0);
+ srand(seed);
+
+ start_color();
+# if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
+ use_default_colors();
+# endif
+ cbreak();
+ noecho();
+
+ curs_set(0);
+
+#if !defined(__TURBOC__) && !defined(OS2)
+ signal(SIGINT, trap);
+#endif
+ noecho();
+
+ /* refresh stdscr so that reading from it will not cause it to
+ overwrite the other windows that are being created */
+
+ refresh();
+
+ /* Create a drawing window */
+
+ width = 48;
+ height = 15;
+
+ win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
+
+ if (win == NULL)
+ {
+ endwin();
+
+ return 1;
+ }
+
+ for (;;)
+ {
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ wbkgd(win, COLOR_PAIR(1));
+ werase(win);
+
+ init_pair(2, COLOR_RED, COLOR_RED);
+ wattrset(win, COLOR_PAIR(2));
+ box(win, ' ', ' ');
+ wrefresh(win);
+
+ wattrset(win, 0);
+
+ /* Do random output of a character */
+
+ ch = 'a';
+
+ nodelay(stdscr, TRUE);
+
+ for (i = 0; i < 5000; ++i)
+ {
+ x = rand() % (width - 2) + 1;
+ y = rand() % (height - 2) + 1;
+
+ mvwaddch(win, y, x, ch);
+ wrefresh(win);
+
+ if (getch() != ERR)
+ break;
+
+ if (i == 2000)
+ {
+ ch = 'b';
+ init_pair(3, COLOR_CYAN, COLOR_YELLOW);
+ wattrset(win, COLOR_PAIR(3));
+ }
+ }
+
+ nodelay(stdscr, FALSE);
+
+ SubWinTest(win);
+
+ /* Erase and draw green window */
+
+ init_pair(4, COLOR_YELLOW, COLOR_GREEN);
+ wbkgd(win, COLOR_PAIR(4));
+ wattrset(win, A_BOLD);
+ werase(win);
+ wrefresh(win);
+
+ /* Draw RED bounding box */
+
+ wattrset(win, COLOR_PAIR(2));
+ box(win, ' ', ' ');
+ wrefresh(win);
+
+ /* Display Australia map */
+
+ wattrset(win, A_BOLD);
+ i = 0;
+
+ while (*AusMap[i])
+ {
+ mvwaddstr(win, i + 1, 8, AusMap[i]);
+ wrefresh(win);
+ napms(100);
+ ++i;
+ }
+
+ init_pair(5, COLOR_BLUE, COLOR_WHITE);
+ wattrset(win, COLOR_PAIR(5) | A_BLINK);
+ mvwaddstr(win, height - 2, 3,
+ " PDCurses 3.4 - DOS, OS/2, Win32, X11, SDL");
+ wrefresh(win);
+
+ /* Draw running messages */
+
+ init_pair(6, COLOR_BLACK, COLOR_WHITE);
+ wattrset(win, COLOR_PAIR(6));
+ w = width - 2;
+ nodelay(win, TRUE);
+
+ /* jbuhler's re-hacked scrolling messages */
+
+ for (j = 0; messages[j] != NULL; j++)
+ {
+ char *message = messages[j];
+ int msg_len = strlen(message);
+ int scroll_len = w + 2 * msg_len;
+ char *scrollbuf = malloc(scroll_len);
+ char *visbuf = scrollbuf + msg_len;
+ int stop = 0;
+ int i;
+
+ for (i = w + msg_len; i > 0; i--)
+ {
+ memset(visbuf, ' ', w);
+ strncpy(scrollbuf + i, message, msg_len);
+ mvwaddnstr(win, height / 2, 1, visbuf, w);
+ wrefresh(win);
+
+ if (wgetch(win) != ERR)
+ {
+ flushinp();
+ stop = 1;
+ break;
+ }
+
+ napms(100);
+ }
+
+ free(scrollbuf);
+
+ if (stop)
+ break;
+ }
+
+ j = 0;
+
+ /* Draw running 'A's across in RED */
+
+ init_pair(7, COLOR_RED, COLOR_GREEN);
+ wattron(win, COLOR_PAIR(7));
+
+ for (i = 2; i < width - 4; ++i)
+ {
+ ch = mvwinch(win, 5, i);
+ save[j++] = ch;
+ ch = ch & 0x7f;
+ mvwaddch(win, 5, i, ch);
+ }
+
+ wrefresh(win);
+
+ /* Put a message up; wait for a key */
+
+ i = height - 2;
+ wattrset(win, COLOR_PAIR(5));
+ mvwaddstr(win, i, 3,
+ " Type a key to continue or ESC to quit ");
+ wrefresh(win);
+
+ if (WaitForUser() == '\033')
+ break;
+
+ /* Restore the old line */
+
+ wattrset(win, 0);
+
+ for (i = 2, j = 0; i < width - 4; ++i)
+ mvwaddch(win, 5, i, save[j++]);
+
+ wrefresh(win);
+
+ BouncingBalls(win);
+
+ /* BouncingBalls() leaves a keystroke in the queue */
+
+ if (WaitForUser() == '\033')
+ break;
+ }
+
+ endwin();
+
+ return 0;
+}
diff --git a/payloads/libpayload/curses/PDCurses/demos/ptest.c b/payloads/libpayload/curses/PDCurses/demos/ptest.c
new file mode 100644
index 0000000..6071f79
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/ptest.c
@@ -0,0 +1,285 @@
+/* $Id: ptest.c,v 1.24 2008/07/13 16:08:17 wmcbrine Exp $ */
+
+#include <curses.h>
+#include <panel.h>
+#include <stdlib.h>
+
+PANEL *p1, *p2, *p3, *p4, *p5;
+WINDOW *w4, *w5;
+
+long nap_msec = 1;
+
+char *mod[] =
+{
+ "test ", "TEST ", "(**) ", "*()* ", "<--> ", "LAST "
+};
+
+void pflush(void)
+{
+ update_panels();
+ doupdate();
+}
+
+void backfill(void)
+{
+ int y, x;
+
+ erase();
+
+ for (y = 0; y < LINES - 1; y++)
+ for (x = 0; x < COLS; x++)
+ printw("%d", (y + x) % 10);
+}
+
+void wait_a_while(long msec)
+{
+ int c;
+
+ if (msec != 1)
+ timeout(msec);
+
+ c = getch();
+
+ if (c == 'q')
+ {
+ endwin();
+ exit(1);
+ }
+}
+
+void saywhat(const char *text)
+{
+ mvprintw(LINES - 1, 0, "%-20.20s", text);
+}
+
+/* mkpanel - alloc a win and panel and associate them */
+
+PANEL *mkpanel(int rows, int cols, int tly, int tlx)
+{
+ WINDOW *win = newwin(rows, cols, tly, tlx);
+ PANEL *pan = (PANEL *)0;
+
+ if (win)
+ {
+ pan = new_panel(win);
+
+ if (!pan)
+ delwin(win);
+ }
+
+ return pan;
+}
+
+void rmpanel(PANEL *pan)
+{
+ WINDOW *win = pan->win;
+
+ del_panel(pan);
+ delwin(win);
+}
+
+void fill_panel(PANEL *pan)
+{
+ WINDOW *win = pan->win;
+ char num = *((char *)pan->user + 1);
+ int y, x, maxy, maxx;
+
+ box(win, 0, 0);
+ mvwprintw(win, 1, 1, "-pan%c-", num);
+ getmaxyx(win, maxy, maxx);
+
+ for (y = 2; y < maxy - 1; y++)
+ for (x = 1; x < maxx - 1; x++)
+ mvwaddch(win, y, x, num);
+}
+
+int main(int argc, char **argv)
+{
+ int itmp, y;
+
+ if (argc > 1 && atol(argv[1]))
+ nap_msec = atol(argv[1]);
+
+#ifdef XCURSES
+ Xinitscr(argc, argv);
+#else
+ initscr();
+#endif
+ backfill();
+
+ for (y = 0; y < 5; y++)
+ {
+ p1 = mkpanel(10, 10, 0, 0);
+ set_panel_userptr(p1, "p1");
+
+ p2 = mkpanel(14, 14, 5, 5);
+ set_panel_userptr(p2, "p2");
+
+ p3 = mkpanel(6, 8, 12, 12);
+ set_panel_userptr(p3, "p3");
+
+ p4 = mkpanel(10, 10, 10, 30);
+ w4 = panel_window(p4);
+ set_panel_userptr(p4, "p4");
+
+ p5 = mkpanel(10, 10, 13, 37);
+ w5 = panel_window(p5);
+ set_panel_userptr(p5, "p5");
+
+ fill_panel(p1);
+ fill_panel(p2);
+ fill_panel(p3);
+ fill_panel(p4);
+ fill_panel(p5);
+ hide_panel(p4);
+ hide_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("h3 s1 s2 s4 s5;");
+ move_panel(p1, 0, 0);
+ hide_panel(p3);
+ show_panel(p1);
+ show_panel(p2);
+ show_panel(p4);
+ show_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s1;");
+ show_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s2;");
+ show_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m2;");
+ move_panel(p2, 10, 10);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s3;");
+ show_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m3;");
+ move_panel(p3, 5, 5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("b3;");
+ bottom_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s4;");
+ show_panel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s5;");
+ show_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t3;");
+ top_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t1;");
+ top_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t2;");
+ top_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t3;");
+ top_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t4;");
+ top_panel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ for (itmp = 0; itmp < 6; itmp++)
+ {
+ saywhat("m4;");
+ mvwaddstr(w4, 3, 1, mod[itmp]);
+ move_panel(p4, 4, itmp * 10);
+ mvwaddstr(w5, 4, 1, mod[itmp]);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m5;");
+ mvwaddstr(w4, 4, 1, mod[itmp]);
+ move_panel(p5, 7, itmp * 10 + 6);
+ mvwaddstr(w5, 3, 1, mod[itmp]);
+ pflush();
+ wait_a_while(nap_msec);
+ }
+
+ saywhat("m4;");
+ move_panel(p4, 4, itmp * 10);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t5;");
+ top_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t2;");
+ top_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t1;");
+ top_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d2;");
+ rmpanel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("h3;");
+ hide_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d1;");
+ rmpanel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d4; ");
+ rmpanel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d5; ");
+ rmpanel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ if (nap_msec == 1)
+ break;
+
+ nap_msec = 100L;
+ }
+
+ endwin();
+
+ return 0;
+} /* end of main */
diff --git a/payloads/libpayload/curses/PDCurses/demos/rain.c b/payloads/libpayload/curses/PDCurses/demos/rain.c
new file mode 100644
index 0000000..51d05a9
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/rain.c
@@ -0,0 +1,159 @@
+/****************************************************************************
+ * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+/* $Id: rain.c,v 1.11 2008/07/13 16:08:17 wmcbrine Exp $ */
+
+#include <curses.h>
+#include <stdlib.h>
+#include <time.h>
+
+/* rain 11/3/1980 EPS/CITHEP */
+
+static int next_j(int j)
+{
+ if (j == 0)
+ j = 4;
+ else
+ --j;
+
+ if (has_colors())
+ {
+ int z = rand() % 3;
+ chtype color = COLOR_PAIR(z);
+
+ if (z)
+ color |= A_BOLD;
+
+ attrset(color);
+ }
+
+ return j;
+}
+
+int main(int argc, char *argv[])
+{
+ int x, y, j, r, c, seed;
+ static int xpos[5], ypos[5];
+
+#ifdef XCURSES
+ Xinitscr(argc, argv);
+#else
+ initscr();
+#endif
+ seed = time((time_t *)0);
+ srand(seed);
+
+ if (has_colors())
+ {
+ int bg = COLOR_BLACK;
+
+ start_color();
+
+#if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
+ if (use_default_colors() == OK)
+ bg = -1;
+#endif
+ init_pair(1, COLOR_BLUE, bg);
+ init_pair(2, COLOR_CYAN, bg);
+ }
+
+ nl();
+ noecho();
+ curs_set(0);
+ timeout(0);
+ keypad(stdscr, TRUE);
+
+ r = LINES - 4;
+ c = COLS - 4;
+
+ for (j = 5; --j >= 0;)
+ {
+ xpos[j] = rand() % c + 2;
+ ypos[j] = rand() % r + 2;
+ }
+
+ for (j = 0;;)
+ {
+ x = rand() % c + 2;
+ y = rand() % r + 2;
+
+ mvaddch(y, x, '.');
+
+ mvaddch(ypos[j], xpos[j], 'o');
+
+ j = next_j(j);
+ mvaddch(ypos[j], xpos[j], 'O');
+
+ j = next_j(j);
+ mvaddch(ypos[j] - 1, xpos[j], '-');
+ mvaddstr(ypos[j], xpos[j] - 1, "|.|");
+ mvaddch(ypos[j] + 1, xpos[j], '-');
+
+ j = next_j(j);
+ mvaddch(ypos[j] - 2, xpos[j], '-');
+ mvaddstr(ypos[j] - 1, xpos[j] - 1, "/ \\");
+ mvaddstr(ypos[j], xpos[j] - 2, "| O |");
+ mvaddstr(ypos[j] + 1, xpos[j] - 1, "\\ /");
+ mvaddch(ypos[j] + 2, xpos[j], '-');
+
+ j = next_j(j);
+ mvaddch(ypos[j] - 2, xpos[j], ' ');
+ mvaddstr(ypos[j] - 1, xpos[j] - 1, " ");
+ mvaddstr(ypos[j], xpos[j] - 2, " ");
+ mvaddstr(ypos[j] + 1, xpos[j] - 1, " ");
+ mvaddch(ypos[j] + 2, xpos[j], ' ');
+
+ xpos[j] = x;
+ ypos[j] = y;
+
+ switch (getch())
+ {
+ case 'q':
+ case 'Q':
+ curs_set(1);
+ endwin();
+ return EXIT_SUCCESS;
+ case 's':
+ nodelay(stdscr, FALSE);
+ break;
+ case ' ':
+ nodelay(stdscr, TRUE);
+#ifdef KEY_RESIZE
+ break;
+ case KEY_RESIZE:
+# ifdef PDCURSES
+ resize_term(0, 0);
+ erase();
+# endif
+ r = LINES - 4;
+ c = COLS - 4;
+#endif
+ }
+ napms(50);
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/demos/testcurs.c b/payloads/libpayload/curses/PDCurses/demos/testcurs.c
new file mode 100644
index 0000000..54d44f4
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/testcurs.c
@@ -0,0 +1,1144 @@
+/*
+ * This is a test program for PDCurses. Originally by
+ * John Burnell <johnb at kea.am.dsir.govt.nz>
+ *
+ * wrs(5/28/93) -- modified to be consistent (perform identically)
+ * with either PDCurses or under Unix System V, R4
+ *
+ * $Id: testcurs.c,v 1.85 2008/07/14 12:35:23 wmcbrine Exp $
+ */
+
+#ifndef _XOPEN_SOURCE_EXTENDED
+# define _XOPEN_SOURCE_EXTENDED 1
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <curses.h>
+
+#ifdef WACS_S1
+# define HAVE_WIDE 1
+#else
+# define HAVE_WIDE 0
+#endif
+
+#include <locale.h>
+
+#if HAVE_WIDE
+# include <wchar.h>
+#endif
+
+#if defined(PDCURSES) && !defined(XCURSES)
+# define HAVE_RESIZE 1
+#else
+# define HAVE_RESIZE 0
+#endif
+
+#ifdef A_COLOR
+# define HAVE_COLOR 1
+#else
+# define HAVE_COLOR 0
+#endif
+
+/* Set to non-zero if you want to test the PDCurses clipboard */
+
+#define HAVE_CLIPBOARD 0
+
+void inputTest(WINDOW *);
+void scrollTest(WINDOW *);
+void introTest(WINDOW *);
+int initTest(WINDOW **, int, char **);
+void outputTest(WINDOW *);
+void padTest(WINDOW *);
+void acsTest(WINDOW *);
+
+#if HAVE_COLOR
+void colorTest(WINDOW *);
+#endif
+
+#if HAVE_RESIZE
+void resizeTest(WINDOW *);
+#endif
+
+#if HAVE_CLIPBOARD
+void clipboardTest(WINDOW *);
+#endif
+
+#if HAVE_WIDE
+void wideTest(WINDOW *);
+#endif
+
+void display_menu(int, int);
+
+struct commands
+{
+ const char *text;
+ void (*function)(WINDOW *);
+};
+
+typedef struct commands COMMAND;
+
+#define MAX_OPTIONS (6 + HAVE_COLOR + HAVE_RESIZE + HAVE_CLIPBOARD + HAVE_WIDE)
+
+COMMAND command[MAX_OPTIONS] =
+{
+ {"Intro Test", introTest},
+ {"Pad Test", padTest},
+#if HAVE_RESIZE
+ {"Resize Test", resizeTest},
+#endif
+ {"Scroll Test", scrollTest},
+ {"Input Test", inputTest},
+ {"Output Test", outputTest},
+ {"ACS Test", acsTest},
+#if HAVE_COLOR
+ {"Color Test", colorTest},
+#endif
+#if HAVE_CLIPBOARD
+ {"Clipboard Test", clipboardTest},
+#endif
+#if HAVE_WIDE
+ {"Wide Input", wideTest}
+#endif
+};
+
+int width, height;
+
+int main(int argc, char *argv[])
+{
+ WINDOW *win;
+ int key, old_option = -1, new_option = 0;
+ bool quit = FALSE;
+
+ setlocale(LC_ALL, "");
+
+ if (initTest(&win, argc, argv))
+ return 1;
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ wbkgd(win, COLOR_PAIR(1));
+ }
+ else
+#endif
+ wbkgd(win, A_REVERSE);
+
+ erase();
+ display_menu(old_option, new_option);
+
+ while (1)
+ {
+ noecho();
+ keypad(stdscr, TRUE);
+ raw();
+
+ key = getch();
+
+ switch(key)
+ {
+ case 10:
+ case 13:
+ case KEY_ENTER:
+ old_option = -1;
+ erase();
+ refresh();
+ (*command[new_option].function)(win);
+ erase();
+ display_menu(old_option, new_option);
+ break;
+
+ case KEY_PPAGE:
+ case KEY_HOME:
+ old_option = new_option;
+ new_option = 0;
+ display_menu(old_option, new_option);
+ break;
+
+ case KEY_NPAGE:
+ case KEY_END:
+ old_option = new_option;
+ new_option = MAX_OPTIONS - 1;
+ display_menu(old_option, new_option);
+ break;
+
+ case KEY_UP:
+ old_option = new_option;
+ new_option = (new_option == 0) ?
+ new_option : new_option - 1;
+ display_menu(old_option, new_option);
+ break;
+
+ case KEY_DOWN:
+ old_option = new_option;
+ new_option = (new_option == MAX_OPTIONS - 1) ?
+ new_option : new_option + 1;
+ display_menu(old_option, new_option);
+ break;
+#ifdef KEY_RESIZE
+ case KEY_RESIZE:
+# ifdef PDCURSES
+ resize_term(0, 0);
+# endif
+ old_option = -1;
+ erase();
+ display_menu(old_option, new_option);
+ break;
+#endif
+ case 'Q':
+ case 'q':
+ quit = TRUE;
+ }
+
+ if (quit == TRUE)
+ break;
+ }
+
+ delwin(win);
+ endwin();
+
+ return 0;
+}
+
+void Continue(WINDOW *win)
+{
+ mvwaddstr(win, 10, 1, " Press any key to continue");
+ wrefresh(win);
+ raw();
+ wgetch(win);
+}
+
+void Continue2(void)
+{
+ move(LINES - 1, 1);
+ clrtoeol();
+ mvaddstr(LINES - 2, 1, " Press any key to continue");
+ refresh();
+ raw();
+ getch();
+}
+
+int initTest(WINDOW **win, int argc, char *argv[])
+{
+#ifdef XCURSES
+ Xinitscr(argc, argv);
+#else
+ initscr();
+#endif
+#ifdef A_COLOR
+ if (has_colors())
+ start_color();
+#endif
+ /* Create a drawing window */
+
+ width = 60;
+ height = 13;
+
+ *win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
+
+ if (*win == NULL)
+ {
+ endwin();
+ return 1;
+ }
+
+ return 0;
+}
+
+void introTest(WINDOW *win)
+{
+ werase(win);
+ wmove(win, height / 2 - 5, width / 2);
+ wvline(win, ACS_VLINE, 10);
+ wmove(win, height / 2, width / 2 - 10);
+ whline(win, ACS_HLINE, 20);
+ Continue(win);
+
+ beep();
+ werase(win);
+
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
+
+ cbreak();
+ mvwaddstr(win, 1, 1,
+ "You should have a rectangle in the middle of the screen");
+ mvwaddstr(win, 2, 1, "You should have heard a beep");
+ Continue(win);
+
+ flash();
+ mvwaddstr(win, 3, 1, "You should have seen a flash");
+ Continue(win);
+}
+
+void scrollTest(WINDOW *win)
+{
+ int i, OldY;
+#ifndef PDCURSES
+ int OldX;
+#endif
+ werase(win);
+ mvwaddstr(win, height - 2, 1, "The window will now scroll slowly");
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
+ scrollok(win, TRUE);
+ napms(500);
+
+ for (i = 1; i <= height; i++)
+ {
+ napms(150);
+ scroll(win);
+ wrefresh(win);
+ };
+
+#ifdef PDCURSES
+ OldY = getmaxy(win);
+#else
+ getmaxyx(win, OldY, OldX);
+#endif
+ mvwaddstr(win, 6, 1, "The top of the window will scroll");
+ wmove(win, 1, 1);
+ wsetscrreg(win, 0, 4);
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
+
+ for (i = 1; i <= 5; i++)
+ {
+ napms(500);
+ scroll(win);
+ wrefresh(win);
+ }
+
+ mvwaddstr(win, 3, 1, "The bottom of the window will scroll");
+ wmove(win, 8, 1);
+ wsetscrreg(win, 5, --OldY);
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
+
+ for (i = 5; i <= OldY; i++)
+ {
+ napms(300);
+ wscrl(win, -1);
+ wrefresh(win);
+ }
+
+ wsetscrreg(win, 0, OldY);
+}
+
+void inputTest(WINDOW *win)
+{
+ int w, h, bx, by, sw, sh, i, c, num = 0;
+ char buffer[80];
+ WINDOW *subWin;
+ static const char spinner[4] = "/-\\|";
+ int spinner_count = 0;
+
+ wclear(win);
+
+ getmaxyx(win, h, w);
+ getbegyx(win, by, bx);
+
+ sw = w / 3;
+ sh = h / 3;
+
+ if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2))
+ == NULL)
+ return;
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(2, COLOR_WHITE, COLOR_RED);
+ wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
+ }
+ else
+#endif
+ wbkgd(subWin, A_BOLD);
+
+ box(subWin, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
+
+ nocbreak();
+
+ wclear (win);
+ mvwaddstr(win, 1, 1,
+ "Press keys (or mouse buttons) to show their names");
+ mvwaddstr(win, 2, 1, "Press spacebar to finish");
+ wrefresh(win);
+
+ keypad(win, TRUE);
+ raw();
+ noecho();
+
+ wtimeout(win, 200);
+
+#ifdef PDCURSES
+ mouse_set(ALL_MOUSE_EVENTS);
+ PDC_save_key_modifiers(TRUE);
+ PDC_return_key_modifiers(TRUE);
+#endif
+ curs_set(0); /* turn cursor off */
+
+ while (1)
+ {
+ while (1)
+ {
+ c = wgetch(win);
+
+ if (c == ERR)
+ {
+ spinner_count++;
+ if (spinner_count == 4)
+ spinner_count = 0;
+ mvwaddch(win, 3, 3, spinner[spinner_count]);
+ wrefresh(win);
+ }
+ else
+ break;
+ }
+#ifdef PDCURSES
+ wmove(win, 4, 18);
+ wclrtoeol(win);
+#endif
+ mvwaddstr(win, 3, 5, "Key Pressed: ");
+ wclrtoeol(win);
+
+ if (c >= KEY_MIN)
+ wprintw(win, "%s", keyname(c));
+ else if (isprint(c))
+ wprintw(win, "%c", c);
+ else
+ wprintw(win, "%s", unctrl(c));
+#ifdef PDCURSES
+ if (c == KEY_MOUSE)
+ {
+ int button = 0;
+ request_mouse_pos();
+
+ if (BUTTON_CHANGED(1))
+ button = 1;
+ else if (BUTTON_CHANGED(2))
+ button = 2;
+ else if (BUTTON_CHANGED(3))
+ button = 3;
+
+ if (button && (BUTTON_STATUS(button) &
+ BUTTON_MODIFIER_MASK))
+ {
+ waddstr(win, " Modifier(s):");
+
+ if (BUTTON_STATUS(button) & BUTTON_SHIFT)
+ waddstr(win, " SHIFT");
+
+ if (BUTTON_STATUS(button) & BUTTON_CONTROL)
+ waddstr(win, " CONTROL");
+
+ if (BUTTON_STATUS(button) & BUTTON_ALT)
+ waddstr(win, " ALT");
+ }
+
+ wmove(win, 4, 18);
+ wclrtoeol(win);
+ wprintw(win, "Button %d: ", button);
+
+ if (MOUSE_MOVED)
+ waddstr(win, "moved: ");
+ else if (MOUSE_WHEEL_UP)
+ waddstr(win, "wheel up: ");
+ else if (MOUSE_WHEEL_DOWN)
+ waddstr(win, "wheel dn: ");
+ else if ((BUTTON_STATUS(button) &
+ BUTTON_ACTION_MASK) == BUTTON_PRESSED)
+ waddstr(win, "pressed: ");
+ else if ((BUTTON_STATUS(button) &
+ BUTTON_ACTION_MASK) == BUTTON_CLICKED)
+ waddstr(win, "clicked: ");
+ else if ((BUTTON_STATUS(button) &
+ BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
+ waddstr(win, "double: ");
+ else
+ waddstr(win, "released: ");
+
+ wprintw(win, "Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS);
+ }
+ else if (PDC_get_key_modifiers())
+ {
+ waddstr(win, " Modifier(s):");
+ if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_SHIFT)
+ waddstr(win, " SHIFT");
+
+ if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_CONTROL)
+ waddstr(win, " CONTROL");
+
+ if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_ALT)
+ waddstr(win, " ALT");
+
+ if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_NUMLOCK)
+ waddstr(win, " NUMLOCK");
+ }
+#endif
+ wrefresh(win);
+
+ if (c == ' ')
+ break;
+ }
+
+ wtimeout(win, -1); /* turn off timeout() */
+ curs_set(1); /* turn cursor back on */
+
+#ifdef PDCURSES
+ mouse_set(0L);
+ PDC_save_key_modifiers(FALSE);
+ PDC_return_key_modifiers(FALSE);
+#endif
+ wclear(win);
+ mvwaddstr(win, 2, 1, "Press some keys for 5 seconds");
+ mvwaddstr(win, 1, 1, "Pressing ^C should do nothing");
+ wrefresh(win);
+
+ werase(subWin);
+ box(subWin, ACS_VLINE, ACS_HLINE);
+
+ for (i = 0; i < 5; i++)
+ {
+ mvwprintw(subWin, 1, 1, "Time = %d", i);
+ wrefresh(subWin);
+ napms(1000);
+ flushinp();
+ }
+
+ delwin(subWin);
+ werase(win);
+ flash();
+ wrefresh(win);
+ napms(500);
+ flushinp();
+
+ mvwaddstr(win, 2, 1, "Press a key, followed by ENTER");
+ wmove(win, 9, 10);
+ wrefresh(win);
+ echo();
+
+ keypad(win, TRUE);
+ raw();
+ wgetnstr(win, buffer, 3);
+ flushinp();
+
+ wmove(win, 9, 10);
+ wdelch(win);
+ mvwaddstr(win, 4, 1, "The character should now have been deleted");
+ Continue(win);
+
+ refresh();
+ wclear(win);
+ echo();
+ buffer[0] = '\0';
+ mvwaddstr(win, 3, 2, "The window should have moved");
+ mvwaddstr(win, 4, 2,
+ "This text should have appeared without you pressing a key");
+ mvwaddstr(win, 6, 2, "Enter a number then a string seperated by space");
+ mvwin(win, 2, 1);
+ wrefresh(win);
+ mvwscanw(win, 7, 6, "%d %s", &num, buffer);
+ mvwprintw(win, 8, 6, "String: %s Number: %d", buffer, num);
+ Continue(win);
+
+ refresh();
+ wclear(win);
+ echo();
+ mvwaddstr(win, 3, 2, "Enter a 5 character string: ");
+ wgetnstr(win, buffer, 5);
+ mvwprintw(win, 4, 2, "String: %s", buffer);
+ Continue(win);
+}
+
+void outputTest(WINDOW *win)
+{
+ WINDOW *win1;
+ char Buffer[80];
+ chtype ch;
+ int by, bx;
+
+ nl();
+ wclear(win);
+ mvwaddstr(win, 1, 1, "You should now have a screen in the upper "
+ "left corner, and this text should have wrapped");
+ waddstr(win,"\nThis text should be down\n");
+ waddstr(win, "and broken into two here ^");
+ Continue(win);
+
+ wclear(win);
+ wattron(win, A_BOLD);
+ mvwaddstr(win, 1, 1, "A new window will appear with this text in it");
+ mvwaddstr(win, 8, 1, "Press any key to continue");
+ wrefresh(win);
+ wgetch(win);
+
+ getbegyx(win, by, bx);
+
+ if (LINES < 24 || COLS < 75)
+ {
+ mvwaddstr(win, 5, 1, "Some tests have been skipped as they require a");
+ mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
+ Continue(win);
+ }
+ else
+ {
+ win1 = newwin(10, 50, 14, 25);
+
+ if (win1 == NULL)
+ {
+ endwin();
+ return;
+ }
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(3, COLOR_BLUE, COLOR_WHITE);
+ wbkgd(win1, COLOR_PAIR(3));
+ }
+ else
+#endif
+ wbkgd(win1, A_NORMAL);
+
+ wclear(win1);
+ mvwaddstr(win1, 5, 1, "This text should appear; using overlay option");
+ copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE);
+ box(win1, ACS_VLINE, ACS_HLINE);
+ wmove(win1, 8, 26);
+ wrefresh(win1);
+ wgetch(win1);
+
+ wclear(win1);
+
+ wattron(win1, A_BLINK);
+ mvwaddstr(win1, 4, 1,
+ "This blinking text should appear in only the second window");
+ wattroff(win1, A_BLINK);
+
+ mvwin(win1, by, bx);
+ overlay(win, win1);
+ mvwin(win1, 14, 25);
+ wmove(win1, 8, 26);
+ wrefresh(win1);
+ wgetch(win1);
+
+ delwin(win1);
+ }
+
+ clear();
+ wclear(win);
+ wrefresh(win);
+ mvwaddstr(win, 6, 2, "This line shouldn't appear");
+ mvwaddstr(win, 4, 2, "Only half of the next line is visible");
+ mvwaddstr(win, 5, 2, "Only half of the next line is visible");
+ wmove(win, 6, 1);
+ wclrtobot(win);
+ wmove(win, 5, 20);
+ wclrtoeol(win);
+ mvwaddstr(win, 8, 2, "This line also shouldn't appear");
+ wmove(win, 8, 1);
+ winsdelln(win, -1);
+ Continue(win);
+
+ wmove(win, 5, 9);
+ ch = winch(win);
+
+ wclear(win);
+ wmove(win, 6, 2);
+ waddstr(win, "The next char should be l: ");
+ winsch(win, ch);
+ Continue(win);
+
+ mvwinsstr(win, 6, 2, "A1B2C3D4E5");
+ Continue(win);
+
+ wmove(win, 5, 1);
+ winsdelln(win, 1);
+ mvwaddstr(win, 5, 2, "The lines below should have moved down");
+ Continue(win);
+
+ wclear(win);
+ wmove(win, 2, 2);
+ wprintw(win, "This is a formatted string in a window: %d %s\n",
+ 42, "is it");
+ mvwaddstr(win, 10, 1, "Enter a string: ");
+ wrefresh(win);
+ echo();
+ wscanw(win, "%s", Buffer);
+
+ printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
+ mvaddstr(10, 1, "Enter a string: ");
+ scanw("%s", Buffer);
+
+ wclear(win);
+ curs_set(2);
+ mvwaddstr(win, 1, 1, "The cursor should be in high-visibility mode");
+ Continue(win);
+
+ wclear(win);
+ curs_set(0);
+ mvwaddstr(win, 1, 1, "The cursor should have disappeared");
+ Continue(win);
+
+ wclear(win);
+ curs_set(1);
+ mvwaddstr(win, 1, 1, "The cursor should be normal");
+ Continue(win);
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ wclear(win);
+ mvwaddstr(win, 1, 1, "Colors should change after you press a key");
+ Continue(win);
+
+ init_pair(1, COLOR_RED, COLOR_WHITE);
+ wrefresh(win);
+ }
+#endif
+ werase(win);
+ mvwaddstr(win, 1, 1, "Information About Your Terminal");
+ mvwaddstr(win, 3, 1, termname());
+ mvwaddstr(win, 4, 1, longname());
+
+ if (termattrs() & A_BLINK)
+ mvwaddstr(win, 5, 1, "This terminal claims to support blinking.");
+ else
+ mvwaddstr(win, 5, 1, "This terminal does NOT support blinking.");
+
+ mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16);
+ wrefresh(win);
+
+ mvwinnstr(win, 7, 5, Buffer, 18);
+ mvaddstr(LINES - 2, 10, Buffer);
+ refresh();
+ Continue(win);
+}
+
+#if HAVE_RESIZE
+void resizeTest(WINDOW *dummy)
+{
+ WINDOW *win1;
+ int nwidth = 135, nheight = 52;
+ int owidth = COLS, oheight = LINES;
+
+ savetty();
+
+ resize_term(nheight, nwidth);
+
+ clear();
+ refresh();
+
+ win1 = newwin(10, 50, 14, 25);
+
+ if (win1 == NULL)
+ {
+ endwin();
+ return;
+ }
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(3, COLOR_BLUE, COLOR_WHITE);
+ wattrset(win1, COLOR_PAIR(3));
+ }
+
+ wclear(win1);
+#endif
+ mvwaddstr(win1, 0, 0, "The screen may now be resized");
+ mvwprintw(win1, 1, 4, "Given size: %d by %d", nwidth, nheight);
+ mvwprintw(win1, 2, 4, "Actual size: %d by %d", COLS, LINES);
+ Continue(win1);
+
+ wclear(win1);
+ resetty();
+
+ mvwaddstr(win1, 0, 0, "The screen should now be reset");
+ mvwprintw(win1, 1, 6, "Old size: %d by %d", owidth, oheight);
+ mvwprintw(win1, 2, 6, "Size now: %d by %d", COLS, LINES);
+ Continue(win1);
+
+ delwin(win1);
+
+ clear();
+ refresh();
+}
+#endif /* HAVE_RESIZE */
+
+void padTest(WINDOW *dummy)
+{
+ WINDOW *pad, *spad;
+
+ pad = newpad(50, 100);
+ wattron(pad, A_REVERSE);
+ mvwaddstr(pad, 5, 2, "This is a new pad");
+ wattrset(pad, 0);
+ mvwaddstr(pad, 8, 0,
+ "The end of this line should be truncated here:except now");
+ mvwaddstr(pad, 11, 1, "This line should not appear.It will now");
+ wmove(pad, 10, 1);
+ wclrtoeol(pad);
+ mvwaddstr(pad, 10, 1, " Press any key to continue");
+ prefresh(pad, 0, 0, 0, 0, 10, 45);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ spad = subpad(pad, 12, 25, 7, 52);
+ mvwaddstr(spad, 2, 2, "This is a new subpad");
+ box(spad, 0, 0);
+ prefresh(pad, 0, 0, 0, 0, 15, 75);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
+ mvwaddstr(pad, 40, 1, " Press any key to continue");
+ prefresh(pad, 30, 0, 0, 0, 10, 45);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ delwin(pad);
+}
+
+#if HAVE_CLIPBOARD
+void clipboardTest(WINDOW *win)
+{
+ static const char *text =
+ "This string placed in clipboard by PDCurses test program, testcurs.";
+ char *ptr = NULL;
+ long i, length = 0;
+
+ mvaddstr(1, 1,
+ "This test will display the contents of the system clipboard");
+
+ Continue2();
+
+ scrollok(stdscr, TRUE);
+ i = PDC_getclipboard(&ptr, &length);
+
+ switch(i)
+ {
+ case PDC_CLIP_ACCESS_ERROR:
+ mvaddstr(3, 1, "There was an error accessing the clipboard");
+ refresh();
+ break;
+
+ case PDC_CLIP_MEMORY_ERROR:
+ mvaddstr(3, 1,
+ "Unable to allocate memory for clipboard contents");
+ break;
+
+ case PDC_CLIP_EMPTY:
+ mvaddstr(3, 1, "There was no text in the clipboard");
+ break;
+
+ default:
+ wsetscrreg(stdscr, 0, LINES - 1);
+ clear();
+ mvaddstr(1, 1, "Clipboard contents...");
+ mvprintw(2, 1, "%s\n", ptr);
+ }
+
+ Continue2();
+
+ clear();
+ mvaddstr(1, 1,
+ "This test will place the following string in the system clipboard:");
+ mvaddstr(2, 1, text);
+
+ i = PDC_setclipboard(text, strlen(text));
+
+ switch(i)
+ {
+ case PDC_CLIP_ACCESS_ERROR:
+ mvaddstr(3, 1, "There was an error accessing the clipboard");
+ break;
+
+ case PDC_CLIP_MEMORY_ERROR:
+ mvaddstr(3, 1, "Unable to allocate memory for clipboard contents");
+ break;
+
+ default:
+ mvaddstr(3, 1, "The string was placed in the clipboard successfully");
+ }
+
+ Continue2();
+}
+#endif /* HAVE_CLIPBOARD */
+
+void acsTest(WINDOW *win)
+{
+#ifdef ACS_S3
+# define ACSNUM 32
+#else
+# define ACSNUM 25
+#endif
+ static const char *acs_names[] =
+ {
+ "ACS_ULCORNER", "ACS_URCORNER", "ACS_LLCORNER", "ACS_LRCORNER",
+ "ACS_LTEE", "ACS_RTEE", "ACS_TTEE", "ACS_BTEE", "ACS_HLINE",
+ "ACS_VLINE", "ACS_PLUS",
+
+ "ACS_S1", "ACS_S9", "ACS_DIAMOND", "ACS_CKBOARD", "ACS_DEGREE",
+ "ACS_PLMINUS", "ACS_BULLET",
+
+ "ACS_LARROW", "ACS_RARROW", "ACS_UARROW", "ACS_DARROW",
+ "ACS_BOARD", "ACS_LANTERN", "ACS_BLOCK"
+#ifdef ACS_S3
+ , "ACS_S3", "ACS_S7", "ACS_LEQUAL", "ACS_GEQUAL",
+ "ACS_PI", "ACS_NEQUAL", "ACS_STERLING"
+#endif
+ };
+
+ chtype acs_values[ACSNUM];
+
+#if HAVE_WIDE
+ cchar_t *wacs_values[] =
+ {
+ WACS_ULCORNER, WACS_URCORNER, WACS_LLCORNER, WACS_LRCORNER,
+ WACS_LTEE, WACS_RTEE, WACS_TTEE, WACS_BTEE, WACS_HLINE,
+ WACS_VLINE, WACS_PLUS,
+
+ WACS_S1, WACS_S9, WACS_DIAMOND, WACS_CKBOARD, WACS_DEGREE,
+ WACS_PLMINUS, WACS_BULLET,
+
+ WACS_LARROW, WACS_RARROW, WACS_UARROW, WACS_DARROW, WACS_BOARD,
+ WACS_LANTERN, WACS_BLOCK
+# ifdef WACS_S3
+ , WACS_S3, WACS_S7, WACS_LEQUAL, WACS_GEQUAL, WACS_PI,
+ WACS_NEQUAL, WACS_STERLING
+# endif
+ };
+
+ static const wchar_t russian[] = {0x0420, 0x0443, 0x0441, 0x0441,
+ 0x043a, 0x0438, 0x0439, L' ', 0x044f, 0x0437, 0x044b, 0x043a, 0};
+
+ static const wchar_t greek[] = {0x0395, 0x03bb, 0x03bb, 0x03b7,
+ 0x03bd, 0x03b9, 0x03ba, 0x03ac, 0};
+
+ static const wchar_t georgian[] = {0x10e5, 0x10d0, 0x10e0, 0x10d7,
+ 0x10e3, 0x10da, 0x10d8, L' ', 0x10d4, 0x10dc, 0x10d0, 0};
+#endif
+
+ int i, tmarg = (LINES - 22) / 2;
+
+ attrset(A_BOLD);
+ mvaddstr(tmarg, (COLS - 23) / 2, "Alternate Character Set");
+ attrset(A_NORMAL);
+
+ tmarg += 3;
+
+#define A(b,c) acs_values[b] = ACS_##c
+
+ A(0,ULCORNER); A(1,URCORNER); A(2,LLCORNER); A(3,LRCORNER);
+ A(4,LTEE); A(5,RTEE); A(6,TTEE); A(7,BTEE);
+ A(8,HLINE); A(9,VLINE); A(10,PLUS); A(11,S1);
+ A(12,S9); A(13,DIAMOND); A(14,CKBOARD); A(15,DEGREE);
+
+ A(16,PLMINUS); A(17,BULLET); A(18,LARROW); A(19,RARROW);
+ A(20,UARROW); A(21,DARROW); A(22,BOARD); A(23,LANTERN);
+ A(24,BLOCK);
+#ifdef ACS_S3
+ A(25,S3); A(26,S7); A(27,LEQUAL); A(28,GEQUAL);
+ A(29,PI); A(30,NEQUAL); A(31,STERLING);
+#endif
+
+#undef A
+
+ for (i = 0; i < ACSNUM; i++)
+ {
+ move((i % 8) * 2 + tmarg, (i / 8) * (COLS / 4) + (COLS / 8 - 7));
+ addch(acs_values[i]);
+ printw(" %s", acs_names[i]);
+ }
+
+ mvaddstr(tmarg + 18, 3, "Press any key to continue");
+ getch();
+
+#if HAVE_WIDE
+ clear();
+
+ attrset(A_BOLD);
+ mvaddstr(tmarg - 3, (COLS - 28) / 2, "Wide Alternate Character Set");
+ attrset(A_NORMAL);
+
+ for (i = 0; i < ACSNUM; i++)
+ {
+ move((i % 8) * 2 + tmarg, (i / 8) * (COLS / 4) + (COLS / 8 - 7));
+ add_wch(wacs_values[i]);
+ printw(" W%s", acs_names[i]);
+ }
+
+ /* Spanish, Russian, Greek, Georgian */
+
+ mvaddwstr(tmarg + 16, COLS / 8 - 5, L"Espa\xf1ol");
+ mvaddwstr(tmarg + 16, 3 * (COLS / 8) - 5, russian);
+ mvaddwstr(tmarg + 16, 5 * (COLS / 8) - 5, greek);
+ mvaddwstr(tmarg + 16, 7 * (COLS / 8) - 5, georgian);
+
+ mvaddstr(tmarg + 18, 3, "Press any key to continue");
+ getch();
+#endif
+}
+
+#if HAVE_COLOR
+void colorTest(WINDOW *win)
+{
+ static const short colors[] =
+ {
+ COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_BLUE,
+ COLOR_CYAN, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE
+ };
+
+ static const char *colornames[] =
+ {
+ "COLOR_BLACK", "COLOR_RED", "COLOR_GREEN", "COLOR_BLUE",
+ "COLOR_CYAN", "COLOR_MAGENTA", "COLOR_YELLOW", "COLOR_WHITE"
+ };
+
+ chtype fill = ACS_BLOCK;
+
+ int i, j, tmarg, col1, col2, col3;
+
+ if (!has_colors())
+ return;
+
+ tmarg = (LINES - 19) / 2;
+ col1 = (COLS - 60) / 2;
+ col2 = col1 + 20;
+ col3 = col2 + 20;
+
+ attrset(A_BOLD);
+ mvaddstr(tmarg, (COLS - 22) / 2, "Color Attribute Macros");
+ attrset(A_NORMAL);
+
+ mvaddstr(tmarg + 3, col2 + 4, "A_NORMAL");
+ mvaddstr(tmarg + 3, col3 + 5, "A_BOLD");
+
+ for (i = 0; i < 8; i++)
+ {
+ init_pair(i + 4, colors[i], COLOR_BLACK);
+
+ mvaddstr(tmarg + i + 5, col1, colornames[i]);
+
+ for (j = 0; j < 16; j++)
+ {
+ mvaddch(tmarg + i + 5, col2 + j, fill | COLOR_PAIR(i + 4));
+ mvaddch(tmarg + i + 5, col3 + j, fill | COLOR_PAIR(i + 4) | A_BOLD);
+ }
+ }
+
+ mvprintw(tmarg + 15, col1, "COLORS = %d", COLORS);
+ mvprintw(tmarg + 16, col1, "COLOR_PAIRS = %d", COLOR_PAIRS);
+
+ mvaddstr(tmarg + 19, 3, "Press any key to continue");
+ getch();
+
+ if (can_change_color())
+ {
+ struct
+ {
+ short red, green, blue;
+ } orgcolors[16];
+
+ int MAXCOL = (COLORS >= 16) ? 16 : 8;
+
+ if (MAXCOL < 8)
+ return;
+
+ for (i = 0; i < MAXCOL; i++)
+ color_content(i, &(orgcolors[i].red),
+ &(orgcolors[i].green),
+ &(orgcolors[i].blue));
+
+ attrset(A_BOLD);
+ mvaddstr(tmarg, (COLS - 22) / 2, " init_color() Example ");
+ attrset(A_NORMAL);
+
+ refresh();
+
+ for (i = 0; i < 8; i++)
+ {
+ init_color(colors[i], i * 125, 0, i * 125);
+
+ if (MAXCOL == 16)
+ init_color(colors[i] + 8, 0, i * 125, 0);
+ }
+
+ mvaddstr(tmarg + 19, 3, "Press any key to continue");
+ getch();
+
+ for (i = 0; i < MAXCOL; i++)
+ init_color(i, orgcolors[i].red,
+ orgcolors[i].green,
+ orgcolors[i].blue);
+ }
+}
+#endif
+
+#if HAVE_WIDE
+void wideTest(WINDOW *win)
+{
+ wchar_t tmp[513];
+ size_t i;
+
+ attrset(A_BOLD);
+ mvaddstr(1, (COLS - 25) / 2, "Wide Character Input Test");
+ attrset(A_NORMAL);
+
+ mvaddstr(4, 1, "Enter a string: ");
+
+ echo();
+
+ get_wstr((wint_t *)tmp);
+ addstr("\n\n String:\n\n ");
+ addwstr(tmp);
+ addstr("\n\n\n Hex:\n\n ");
+
+ for (i = 0; i < wcslen(tmp); i++)
+ {
+ printw("%04x ", tmp[i]);
+ addnwstr(tmp + i, 1);
+ addstr(" ");
+ }
+
+ noecho();
+
+ Continue2();
+}
+#endif
+
+void display_menu(int old_option, int new_option)
+{
+ int lmarg = (COLS - 14) / 2,
+ tmarg = (LINES - (MAX_OPTIONS + 2)) / 2;
+
+ if (old_option == -1)
+ {
+ int i;
+
+ attrset(A_BOLD);
+ mvaddstr(tmarg - 3, lmarg - 5, "PDCurses Test Program");
+ attrset(A_NORMAL);
+
+ for (i = 0; i < MAX_OPTIONS; i++)
+ mvaddstr(tmarg + i, lmarg, command[i].text);
+ }
+ else
+ mvaddstr(tmarg + old_option, lmarg, command[old_option].text);
+
+ attrset(A_REVERSE);
+ mvaddstr(tmarg + new_option, lmarg, command[new_option].text);
+ attrset(A_NORMAL);
+
+ mvaddstr(tmarg + MAX_OPTIONS + 2, lmarg - 23,
+ "Use Up and Down Arrows to select - Enter to run - Q to quit");
+ refresh();
+}
diff --git a/payloads/libpayload/curses/PDCurses/demos/tui.c b/payloads/libpayload/curses/PDCurses/demos/tui.c
new file mode 100644
index 0000000..62e0d53
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/tui.c
@@ -0,0 +1,821 @@
+/********************************* tui.c ************************************/
+/*
+ * 'textual user interface'
+ *
+ * $Id: tui.c,v 1.34 2008/07/14 12:35:23 wmcbrine Exp $
+ *
+ * Author : P.J. Kunst <kunst at prl.philips.nl>
+ * Date : 25-02-93
+ */
+
+#include <ctype.h>
+#include <curses.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include "tui.h"
+
+void statusmsg(char *);
+int waitforkey(void);
+void rmerror(void);
+
+#if defined(__unix) && !defined(__DJGPP__)
+#include <unistd.h>
+#endif
+
+#ifdef A_COLOR
+# define TITLECOLOR 1 /* color pair indices */
+# define MAINMENUCOLOR (2 | A_BOLD)
+# define MAINMENUREVCOLOR (3 | A_BOLD | A_REVERSE)
+# define SUBMENUCOLOR (4 | A_BOLD)
+# define SUBMENUREVCOLOR (5 | A_BOLD | A_REVERSE)
+# define BODYCOLOR 6
+# define STATUSCOLOR (7 | A_BOLD)
+# define INPUTBOXCOLOR 8
+# define EDITBOXCOLOR (9 | A_BOLD | A_REVERSE)
+#else
+# define TITLECOLOR 0 /* color pair indices */
+# define MAINMENUCOLOR (A_BOLD)
+# define MAINMENUREVCOLOR (A_BOLD | A_REVERSE)
+# define SUBMENUCOLOR (A_BOLD)
+# define SUBMENUREVCOLOR (A_BOLD | A_REVERSE)
+# define BODYCOLOR 0
+# define STATUSCOLOR (A_BOLD)
+# define INPUTBOXCOLOR 0
+# define EDITBOXCOLOR (A_BOLD | A_REVERSE)
+#endif
+
+
+#define th 1 /* title window height */
+#define mh 1 /* main menu height */
+#define sh 2 /* status window height */
+#define bh (LINES - th - mh - sh) /* body window height */
+#define bw COLS /* body window width */
+
+
+/******************************* STATIC ************************************/
+
+static WINDOW *wtitl, *wmain, *wbody, *wstat; /* title, menu, body, status win*/
+static int nexty, nextx;
+static int key = ERR, ch = ERR;
+static bool quit = FALSE;
+static bool incurses = FALSE;
+
+#ifndef PDCURSES
+static char wordchar(void)
+{
+ return 0x17; /* ^W */
+}
+#endif
+
+static char *padstr(char *s, int length)
+{
+ static char buf[MAXSTRLEN];
+ char fmt[10];
+
+ sprintf(fmt, (int)strlen(s) > length ? "%%.%ds" : "%%-%ds", length);
+ sprintf(buf, fmt, s);
+
+ return buf;
+}
+
+static char *prepad(char *s, int length)
+{
+ int i;
+ char *p = s;
+
+ if (length > 0)
+ {
+ memmove((void *)(s + length), (const void *)s, strlen(s) + 1);
+
+ for (i = 0; i < length; i++)
+ *p++ = ' ';
+ }
+
+ return s;
+}
+
+static void rmline(WINDOW *win, int nr) /* keeps box lines intact */
+{
+ mvwaddstr(win, nr, 1, padstr(" ", bw - 2));
+ wrefresh(win);
+}
+
+static void initcolor(void)
+{
+#ifdef A_COLOR
+ if (has_colors())
+ start_color();
+
+ /* foreground, background */
+
+ init_pair(TITLECOLOR & ~A_ATTR, COLOR_BLACK, COLOR_CYAN);
+ init_pair(MAINMENUCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN);
+ init_pair(MAINMENUREVCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK);
+ init_pair(SUBMENUCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN);
+ init_pair(SUBMENUREVCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK);
+ init_pair(BODYCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLUE);
+ init_pair(STATUSCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN);
+ init_pair(INPUTBOXCOLOR & ~A_ATTR, COLOR_BLACK, COLOR_CYAN);
+ init_pair(EDITBOXCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK);
+#endif
+}
+
+static void setcolor(WINDOW *win, chtype color)
+{
+ chtype attr = color & A_ATTR; /* extract Bold, Reverse, Blink bits */
+
+#ifdef A_COLOR
+ attr &= ~A_REVERSE; /* ignore reverse, use colors instead! */
+ wattrset(win, COLOR_PAIR(color & A_CHARTEXT) | attr);
+#else
+ attr &= ~A_BOLD; /* ignore bold, gives messy display on HP-UX */
+ wattrset(win, attr);
+#endif
+}
+
+static void colorbox(WINDOW *win, chtype color, int hasbox)
+{
+ int maxy;
+#ifndef PDCURSES
+ int maxx;
+#endif
+ chtype attr = color & A_ATTR; /* extract Bold, Reverse, Blink bits */
+
+ setcolor(win, color);
+
+#ifdef A_COLOR
+ if (has_colors())
+ wbkgd(win, COLOR_PAIR(color & A_CHARTEXT) | (attr & ~A_REVERSE));
+ else
+#endif
+ wbkgd(win, attr);
+
+ werase(win);
+
+#ifdef PDCURSES
+ maxy = getmaxy(win);
+#else
+ getmaxyx(win, maxy, maxx);
+#endif
+ if (hasbox && (maxy > 2))
+ box(win, 0, 0);
+
+ touchwin(win);
+ wrefresh(win);
+}
+
+static void idle(void)
+{
+ char buf[MAXSTRLEN];
+ time_t t;
+ struct tm *tp;
+
+ if (time (&t) == -1)
+ return; /* time not available */
+
+ tp = localtime(&t);
+ sprintf(buf, " %.2d-%.2d-%.4d %.2d:%.2d:%.2d",
+ tp->tm_mday, tp->tm_mon + 1, tp->tm_year + 1900,
+ tp->tm_hour, tp->tm_min, tp->tm_sec);
+
+ mvwaddstr(wtitl, 0, bw - strlen(buf) - 2, buf);
+ wrefresh(wtitl);
+}
+
+static void menudim(menu *mp, int *lines, int *columns)
+{
+ int n, l, mmax = 0;
+
+ for (n=0; mp->func; n++, mp++)
+ if ((l = strlen(mp->name)) > mmax) mmax = l;
+
+ *lines = n;
+ *columns = mmax + 2;
+}
+
+static void setmenupos(int y, int x)
+{
+ nexty = y;
+ nextx = x;
+}
+
+static void getmenupos(int *y, int *x)
+{
+ *y = nexty;
+ *x = nextx;
+}
+
+static int hotkey(const char *s)
+{
+ int c0 = *s; /* if no upper case found, return first char */
+
+ for (; *s; s++)
+ if (isupper((unsigned char)*s))
+ break;
+
+ return *s ? *s : c0;
+}
+
+static void repaintmenu(WINDOW *wmenu, menu *mp)
+{
+ int i;
+ menu *p = mp;
+
+ for (i = 0; p->func; i++, p++)
+ mvwaddstr(wmenu, i + 1, 2, p->name);
+
+ touchwin(wmenu);
+ wrefresh(wmenu);
+}
+
+static void repaintmainmenu(int width, menu *mp)
+{
+ int i;
+ menu *p = mp;
+
+ for (i = 0; p->func; i++, p++)
+ mvwaddstr(wmain, 0, i * width, prepad(padstr(p->name, width - 1), 1));
+
+ touchwin(wmain);
+ wrefresh(wmain);
+}
+
+static void mainhelp(void)
+{
+#ifdef ALT_X
+ statusmsg("Use arrow keys and Enter to select (Alt-X to quit)");
+#else
+ statusmsg("Use arrow keys and Enter to select");
+#endif
+}
+
+static void mainmenu(menu *mp)
+{
+ int nitems, barlen, old = -1, cur = 0, c, cur0;
+
+ menudim(mp, &nitems, &barlen);
+ repaintmainmenu(barlen, mp);
+
+ while (!quit)
+ {
+ if (cur != old)
+ {
+ if (old != -1)
+ {
+ mvwaddstr(wmain, 0, old * barlen,
+ prepad(padstr(mp[old].name, barlen - 1), 1));
+
+ statusmsg(mp[cur].desc);
+ }
+ else
+ mainhelp();
+
+ setcolor(wmain, MAINMENUREVCOLOR);
+
+ mvwaddstr(wmain, 0, cur * barlen,
+ prepad(padstr(mp[cur].name, barlen - 1), 1));
+
+ setcolor(wmain, MAINMENUCOLOR);
+ old = cur;
+ wrefresh(wmain);
+ }
+
+ switch (c = (key != ERR ? key : waitforkey()))
+ {
+ case KEY_DOWN:
+ case '\n': /* menu item selected */
+ touchwin(wbody);
+ wrefresh(wbody);
+ rmerror();
+ setmenupos(th + mh, cur * barlen);
+ curs_set(1);
+ (mp[cur].func)(); /* perform function */
+ curs_set(0);
+
+ switch (key)
+ {
+ case KEY_LEFT:
+ cur = (cur + nitems - 1) % nitems;
+ key = '\n';
+ break;
+
+ case KEY_RIGHT:
+ cur = (cur + 1) % nitems;
+ key = '\n';
+ break;
+
+ default:
+ key = ERR;
+ }
+
+ repaintmainmenu(barlen, mp);
+ old = -1;
+ break;
+
+ case KEY_LEFT:
+ cur = (cur + nitems - 1) % nitems;
+ break;
+
+ case KEY_RIGHT:
+ cur = (cur + 1) % nitems;
+ break;
+
+ case KEY_ESC:
+ mainhelp();
+ break;
+
+ default:
+ cur0 = cur;
+
+ do
+ {
+ cur = (cur + 1) % nitems;
+
+ } while ((cur != cur0) && (hotkey(mp[cur].name) != toupper(c)));
+
+ if (hotkey(mp[cur].name) == toupper(c))
+ key = '\n';
+ }
+
+ }
+
+ rmerror();
+ touchwin(wbody);
+ wrefresh(wbody);
+}
+
+static void cleanup(void) /* cleanup curses settings */
+{
+ if (incurses)
+ {
+ delwin(wtitl);
+ delwin(wmain);
+ delwin(wbody);
+ delwin(wstat);
+ curs_set(1);
+ endwin();
+ incurses = FALSE;
+ }
+}
+
+
+/******************************* EXTERNAL **********************************/
+
+void clsbody(void)
+{
+ werase(wbody);
+ wmove(wbody, 0, 0);
+}
+
+int bodylen(void)
+{
+#ifdef PDCURSES
+ return getmaxy(wbody);
+#else
+ int maxy, maxx;
+
+ getmaxyx(wbody, maxy, maxx);
+ return maxy;
+#endif
+}
+
+WINDOW *bodywin(void)
+{
+ return wbody;
+}
+
+void rmerror(void)
+{
+ rmline(wstat, 0);
+}
+
+void rmstatus(void)
+{
+ rmline(wstat, 1);
+}
+
+void titlemsg(char *msg)
+{
+ mvwaddstr(wtitl, 0, 2, padstr(msg, bw - 3));
+ wrefresh(wtitl);
+}
+
+void bodymsg(char *msg)
+{
+ waddstr(wbody, msg);
+ wrefresh(wbody);
+}
+
+void errormsg(char *msg)
+{
+ beep();
+ mvwaddstr(wstat, 0, 2, padstr(msg, bw - 3));
+ wrefresh(wstat);
+}
+
+void statusmsg(char *msg)
+{
+ mvwaddstr(wstat, 1, 2, padstr(msg, bw - 3));
+ wrefresh(wstat);
+}
+
+bool keypressed(void)
+{
+ ch = wgetch(wbody);
+
+ return ch != ERR;
+}
+
+int getkey(void)
+{
+ int c = ch;
+
+ ch = ERR;
+#ifdef ALT_X
+ quit = (c == ALT_X); /* PC only ! */
+#endif
+ return c;
+}
+
+int waitforkey(void)
+{
+ do idle(); while (!keypressed());
+ return getkey();
+}
+
+void DoExit(void) /* terminate program */
+{
+ quit = TRUE;
+}
+
+void domenu(menu *mp)
+{
+ int y, x, nitems, barlen, mheight, mw, old = -1, cur = 0, cur0;
+ bool stop = FALSE;
+ WINDOW *wmenu;
+
+ curs_set(0);
+ getmenupos(&y, &x);
+ menudim(mp, &nitems, &barlen);
+ mheight = nitems + 2;
+ mw = barlen + 2;
+ wmenu = newwin(mheight, mw, y, x);
+ colorbox(wmenu, SUBMENUCOLOR, 1);
+ repaintmenu(wmenu, mp);
+
+ key = ERR;
+
+ while (!stop && !quit)
+ {
+ if (cur != old)
+ {
+ if (old != -1)
+ mvwaddstr(wmenu, old + 1, 1,
+ prepad(padstr(mp[old].name, barlen - 1), 1));
+
+ setcolor(wmenu, SUBMENUREVCOLOR);
+ mvwaddstr(wmenu, cur + 1, 1,
+ prepad(padstr(mp[cur].name, barlen - 1), 1));
+
+ setcolor(wmenu, SUBMENUCOLOR);
+ statusmsg(mp[cur].desc);
+
+ old = cur;
+ wrefresh(wmenu);
+ }
+
+ switch (key = ((key != ERR) ? key : waitforkey()))
+ {
+ case '\n': /* menu item selected */
+ touchwin(wbody);
+ wrefresh(wbody);
+ setmenupos(y + 1, x + 1);
+ rmerror();
+
+ key = ERR;
+ curs_set(1);
+ (mp[cur].func)(); /* perform function */
+ curs_set(0);
+
+ repaintmenu(wmenu, mp);
+
+ old = -1;
+ break;
+
+ case KEY_UP:
+ cur = (cur + nitems - 1) % nitems;
+ key = ERR;
+ break;
+
+ case KEY_DOWN:
+ cur = (cur + 1) % nitems;
+ key = ERR;
+ break;
+
+ case KEY_ESC:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ if (key == KEY_ESC)
+ key = ERR; /* return to prev submenu */
+
+ stop = TRUE;
+ break;
+
+ default:
+ cur0 = cur;
+
+ do
+ {
+ cur = (cur + 1) % nitems;
+
+ } while ((cur != cur0) &&
+ (hotkey(mp[cur].name) != toupper((int)key)));
+
+ key = (hotkey(mp[cur].name) == toupper((int)key)) ? '\n' : ERR;
+ }
+
+ }
+
+ rmerror();
+ delwin(wmenu);
+ touchwin(wbody);
+ wrefresh(wbody);
+}
+
+void startmenu(menu *mp, char *mtitle)
+{
+ initscr();
+ incurses = TRUE;
+ initcolor();
+
+ wtitl = subwin(stdscr, th, bw, 0, 0);
+ wmain = subwin(stdscr, mh, bw, th, 0);
+ wbody = subwin(stdscr, bh, bw, th + mh, 0);
+ wstat = subwin(stdscr, sh, bw, th + mh + bh, 0);
+
+ colorbox(wtitl, TITLECOLOR, 0);
+ colorbox(wmain, MAINMENUCOLOR, 0);
+ colorbox(wbody, BODYCOLOR, 0);
+ colorbox(wstat, STATUSCOLOR, 0);
+
+ if (mtitle)
+ titlemsg(mtitle);
+
+ cbreak(); /* direct input (no newline required)... */
+ noecho(); /* ... without echoing */
+ curs_set(0); /* hide cursor (if possible) */
+ nodelay(wbody, TRUE); /* don't wait for input... */
+ halfdelay(10); /* ...well, no more than a second, anyway */
+ keypad(wbody, TRUE); /* enable cursor keys */
+ scrollok(wbody, TRUE); /* enable scrolling in main window */
+
+ leaveok(stdscr, TRUE);
+ leaveok(wtitl, TRUE);
+ leaveok(wmain, TRUE);
+ leaveok(wstat, TRUE);
+
+ mainmenu(mp);
+
+ cleanup();
+}
+
+static void repainteditbox(WINDOW *win, int x, char *buf)
+{
+#ifndef PDCURSES
+ int maxy;
+#endif
+ int maxx;
+
+#ifdef PDCURSES
+ maxx = getmaxx(win);
+#else
+ getmaxyx(win, maxy, maxx);
+#endif
+ werase(win);
+ mvwprintw(win, 0, 0, "%s", padstr(buf, maxx));
+ wmove(win, 0, x);
+ wrefresh(win);
+}
+
+/*
+
+ weditstr() - edit string
+
+ Description:
+ The initial value of 'str' with a maximum length of 'field' - 1,
+ which is supplied by the calling routine, is editted. The user's
+ erase (^H), kill (^U) and delete word (^W) chars are interpreted.
+ The PC insert or Tab keys toggle between insert and edit mode.
+ Escape aborts the edit session, leaving 'str' unchanged.
+ Enter, Up or Down Arrow are used to accept the changes to 'str'.
+ NOTE: editstr(), mveditstr(), and mvweditstr() are macros.
+
+ Return Value:
+ Returns the input terminating character on success (Escape,
+ Enter, Up or Down Arrow) and ERR on error.
+
+ Errors:
+ It is an error to call this function with a NULL window pointer.
+ The length of the initial 'str' must not exceed 'field' - 1.
+
+*/
+
+int weditstr(WINDOW *win, char *buf, int field)
+{
+ char org[MAXSTRLEN], *tp, *bp = buf;
+ bool defdisp = TRUE, stop = FALSE, insert = FALSE;
+ int cury, curx, begy, begx, oldattr;
+ WINDOW *wedit;
+ int c = 0;
+
+ if ((field >= MAXSTRLEN) || (buf == NULL) ||
+ ((int)strlen(buf) > field - 1))
+ return ERR;
+
+ strcpy(org, buf); /* save original */
+
+ wrefresh(win);
+ getyx(win, cury, curx);
+ getbegyx(win, begy, begx);
+
+ wedit = subwin(win, 1, field, begy + cury, begx + curx);
+ oldattr = wedit->_attrs;
+ colorbox(wedit, EDITBOXCOLOR, 0);
+
+ keypad(wedit, TRUE);
+ curs_set(1);
+
+ while (!stop)
+ {
+ idle();
+ repainteditbox(wedit, bp - buf, buf);
+
+ switch (c = wgetch(wedit))
+ {
+ case ERR:
+ break;
+
+ case KEY_ESC:
+ strcpy(buf, org); /* restore original */
+ stop = TRUE;
+ break;
+
+ case '\n':
+ case KEY_UP:
+ case KEY_DOWN:
+ stop = TRUE;
+ break;
+
+ case KEY_LEFT:
+ if (bp > buf)
+ bp--;
+ break;
+
+ case KEY_RIGHT:
+ defdisp = FALSE;
+ if (bp - buf < (int)strlen(buf))
+ bp++;
+ break;
+
+ case '\t': /* TAB -- because insert
+ is broken on HPUX */
+ case KEY_IC: /* enter insert mode */
+ case KEY_EIC: /* exit insert mode */
+ defdisp = FALSE;
+ insert = !insert;
+
+ curs_set(insert ? 2 : 1);
+ break;
+
+ default:
+ if (c == erasechar()) /* backspace, ^H */
+ {
+ if (bp > buf)
+ {
+ memmove((void *)(bp - 1), (const void *)bp, strlen(bp) + 1);
+ bp--;
+ }
+ }
+ else if (c == killchar()) /* ^U */
+ {
+ bp = buf;
+ *bp = '\0';
+ }
+ else if (c == wordchar()) /* ^W */
+ {
+ tp = bp;
+
+ while ((bp > buf) && (*(bp - 1) == ' '))
+ bp--;
+ while ((bp > buf) && (*(bp - 1) != ' '))
+ bp--;
+
+ memmove((void *)bp, (const void *)tp, strlen(tp) + 1);
+ }
+ else if (isprint(c))
+ {
+ if (defdisp)
+ {
+ bp = buf;
+ *bp = '\0';
+ defdisp = FALSE;
+ }
+
+ if (insert)
+ {
+ if ((int)strlen(buf) < field - 1)
+ {
+ memmove((void *)(bp + 1), (const void *)bp,
+ strlen(bp) + 1);
+
+ *bp++ = c;
+ }
+ }
+ else if (bp - buf < field - 1)
+ {
+ /* append new string terminator */
+
+ if (!*bp)
+ bp[1] = '\0';
+
+ *bp++ = c;
+ }
+ }
+ }
+ }
+
+ curs_set(0);
+
+ wattrset(wedit, oldattr);
+ repainteditbox(wedit, bp - buf, buf);
+ delwin(wedit);
+
+ return c;
+}
+
+WINDOW *winputbox(WINDOW *win, int nlines, int ncols)
+{
+ WINDOW *winp;
+ int cury, curx, begy, begx;
+
+ getyx(win, cury, curx);
+ getbegyx(win, begy, begx);
+
+ winp = newwin(nlines, ncols, begy + cury, begx + curx);
+ colorbox(winp, INPUTBOXCOLOR, 1);
+
+ return winp;
+}
+
+int getstrings(char *desc[], char *buf[], int field)
+{
+ WINDOW *winput;
+ int oldy, oldx, maxy, maxx, nlines, ncols, i, n, l, mmax = 0;
+ int c = 0;
+ bool stop = FALSE;
+
+ for (n = 0; desc[n]; n++)
+ if ((l = strlen(desc[n])) > mmax)
+ mmax = l;
+
+ nlines = n + 2; ncols = mmax + field + 4;
+ getyx(wbody, oldy, oldx);
+ getmaxyx(wbody, maxy, maxx);
+
+ winput = mvwinputbox(wbody, (maxy - nlines) / 2, (maxx - ncols) / 2,
+ nlines, ncols);
+
+ for (i = 0; i < n; i++)
+ mvwprintw(winput, i + 1, 2, "%s", desc[i]);
+
+ i = 0;
+
+ while (!stop)
+ {
+ switch (c = mvweditstr(winput, i+1, mmax+3, buf[i], field))
+ {
+ case KEY_ESC:
+ stop = TRUE;
+ break;
+
+ case KEY_UP:
+ i = (i + n - 1) % n;
+ break;
+
+ case '\n':
+ case '\t':
+ case KEY_DOWN:
+ if (++i == n)
+ stop = TRUE; /* all passed? */
+ }
+ }
+
+ delwin(winput);
+ touchwin(wbody);
+ wmove(wbody, oldy, oldx);
+ wrefresh(wbody);
+
+ return c;
+}
diff --git a/payloads/libpayload/curses/PDCurses/demos/tui.h b/payloads/libpayload/curses/PDCurses/demos/tui.h
new file mode 100644
index 0000000..7be9123
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/tui.h
@@ -0,0 +1,67 @@
+/*
+ * 'textual user interface'
+ *
+ * $Id: tui.h,v 1.11 2008/07/14 12:35:23 wmcbrine Exp $
+ *
+ * Author : P.J. Kunst <kunst at prl.philips.nl>
+ * Date : 25-02-93
+ */
+
+#ifndef _TUI_H_
+#define _TUI_H_
+
+#include <curses.h>
+
+#ifdef A_COLOR
+#define A_ATTR (A_ATTRIBUTES ^ A_COLOR) /* A_BLINK, A_REVERSE, A_BOLD */
+#else
+#define A_ATTR (A_ATTRIBUTES) /* standard UNIX attributes */
+#endif
+
+#define MAXSTRLEN 256
+#define KEY_ESC 0x1b /* Escape */
+
+typedef void (*FUNC)(void);
+
+typedef struct
+{
+ char *name; /* item label */
+ FUNC func; /* (pointer to) function */
+ char *desc; /* function description */
+} menu;
+
+/* ANSI C function prototypes: */
+
+void clsbody(void);
+int bodylen(void);
+WINDOW *bodywin(void);
+
+void rmerror(void);
+void rmstatus(void);
+
+void titlemsg(char *msg);
+void bodymsg(char *msg);
+void errormsg(char *msg);
+void statusmsg(char *msg);
+
+bool keypressed(void);
+int getkey(void);
+int waitforkey(void);
+
+void DoExit(void);
+void startmenu(menu *mp, char *title);
+void domenu(menu *mp);
+
+int weditstr(WINDOW *win, char *buf, int field);
+WINDOW *winputbox(WINDOW *win, int nlines, int ncols);
+int getstrings(char *desc[], char *buf[], int field);
+
+#define editstr(s,f) (weditstr(stdscr,s,f))
+#define mveditstr(y,x,s,f) (move(y,x)==ERR?ERR:editstr(s,f))
+#define mvweditstr(w,y,x,s,f) (wmove(w,y,x)==ERR?ERR:weditstr(w,s,f))
+
+#define inputbox(l,c) (winputbox(stdscr,l,c))
+#define mvinputbox(y,x,l,c) (move(y,x)==ERR?w:inputbox(l,c))
+#define mvwinputbox(w,y,x,l,c) (wmove(w,y,x)==ERR?w:winputbox(w,l,c))
+
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/demos/tuidemo.c b/payloads/libpayload/curses/PDCurses/demos/tuidemo.c
new file mode 100644
index 0000000..6f4d9f2
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/tuidemo.c
@@ -0,0 +1,233 @@
+/*
+ * $Id: tuidemo.c,v 1.22 2008/07/14 12:35:23 wmcbrine Exp $
+ *
+ * Author : P.J. Kunst <kunst at prl.philips.nl>
+ * Date : 25-02-93
+ *
+ * Purpose: This program demonstrates the use of the 'curses' library
+ * for the creation of (simple) menu-operated programs.
+ * In the PDCurses version, use is made of colors for the
+ * highlighting of subwindows (title bar, status bar etc).
+ *
+ * Acknowledgement: some ideas were borrowed from Mark Hessling's
+ * version of the 'testcurs' program.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>
+#include "tui.h"
+
+/* change this if source at other location */
+
+#ifdef XCURSES
+# define FNAME "../demos/tui.c"
+#else
+# define FNAME "..\\demos\\tui.c"
+#endif
+
+/**************************** strings entry box ***************************/
+
+void address(void)
+{
+ char *fieldname[6] =
+ {
+ "Name", "Street", "City", "State", "Country", (char *)0
+ };
+
+ char *fieldbuf[5];
+ WINDOW *wbody = bodywin();
+ int i, field = 50;
+
+ for (i = 0; i < 5; i++)
+ fieldbuf[i] = calloc(1, field + 1);
+
+ if (getstrings(fieldname, fieldbuf, field) != KEY_ESC)
+ {
+ for (i = 0; fieldname[i]; i++)
+ wprintw(wbody, "%10s : %s\n",
+ fieldname[i], fieldbuf[i]);
+
+ wrefresh(wbody);
+ }
+
+ for (i = 0; i < 5; i++)
+ free(fieldbuf[i]);
+}
+
+/**************************** string entry box ****************************/
+
+char *getfname(char *desc, char *fname, int field)
+{
+ char *fieldname[2];
+ char *fieldbuf[1];
+
+ fieldname[0] = desc;
+ fieldname[1] = 0;
+ fieldbuf[0] = fname;
+
+ return (getstrings(fieldname, fieldbuf, field) == KEY_ESC) ? NULL : fname;
+}
+
+/**************************** a very simple file browser ******************/
+
+void showfile(char *fname)
+{
+ int i, bh = bodylen();
+ FILE *fp;
+ char buf[MAXSTRLEN];
+ bool ateof = FALSE;
+
+ statusmsg("FileBrowser: Hit key to continue, Q to quit");
+
+ if ((fp = fopen(fname, "r")) != NULL) /* file available? */
+ {
+ while (!ateof)
+ {
+ clsbody();
+
+ for (i = 0; i < bh - 1 && !ateof; i++)
+ {
+ buf[0] = '\0';
+ fgets(buf, MAXSTRLEN, fp);
+
+ if (strlen(buf))
+ bodymsg(buf);
+ else
+ ateof = TRUE;
+ }
+
+ switch (waitforkey())
+ {
+ case 'Q':
+ case 'q':
+ case 0x1b:
+ ateof = TRUE;
+ }
+ }
+
+ fclose(fp);
+ }
+ else
+ {
+ sprintf(buf, "ERROR: file '%s' not found", fname);
+ errormsg(buf);
+ }
+}
+
+/***************************** forward declarations ***********************/
+
+void sub0(void), sub1(void), sub2(void), sub3(void);
+void func1(void), func2(void);
+void subfunc1(void), subfunc2(void);
+void subsub(void);
+
+/***************************** menus initialization ***********************/
+
+menu MainMenu[] =
+{
+ { "Asub", sub0, "Go inside first submenu" },
+ { "Bsub", sub1, "Go inside second submenu" },
+ { "Csub", sub2, "Go inside third submenu" },
+ { "Dsub", sub3, "Go inside fourth submenu" },
+ { "", (FUNC)0, "" } /* always add this as the last item! */
+};
+
+menu SubMenu0[] =
+{
+ { "Exit", DoExit, "Terminate program" },
+ { "", (FUNC)0, "" }
+};
+
+menu SubMenu1[] =
+{
+ { "OneBeep", func1, "Sound one beep" },
+ { "TwoBeeps", func2, "Sound two beeps" },
+ { "", (FUNC)0, "" }
+};
+
+menu SubMenu2[] =
+{
+ { "Browse", subfunc1, "Source file lister" },
+ { "Input", subfunc2, "Interactive file lister" },
+ { "Address", address, "Get address data" },
+ { "", (FUNC)0, "" }
+};
+
+menu SubMenu3[] =
+{
+ { "SubSub", subsub, "Go inside sub-submenu" },
+ { "", (FUNC)0, "" }
+};
+
+/***************************** main menu functions ************************/
+
+void sub0(void)
+{
+ domenu(SubMenu0);
+}
+
+void sub1(void)
+{
+ domenu(SubMenu1);
+}
+
+void sub2(void)
+{
+ domenu(SubMenu2);
+}
+
+void sub3(void)
+{
+ domenu(SubMenu3);
+}
+
+/***************************** submenu1 functions *************************/
+
+void func1(void)
+{
+ beep();
+ bodymsg("One beep! ");
+}
+
+void func2(void)
+{
+ beep();
+ bodymsg("Two beeps! ");
+ beep();
+}
+
+/***************************** submenu2 functions *************************/
+
+void subfunc1(void)
+{
+ showfile(FNAME);
+}
+
+void subfunc2(void)
+{
+ char fname[MAXSTRLEN];
+
+ strcpy(fname, FNAME);
+ if (getfname ("File to browse:", fname, 50))
+ showfile(fname);
+}
+
+/***************************** submenu3 functions *************************/
+
+void subsub(void)
+{
+ domenu(SubMenu2);
+}
+
+/***************************** start main menu ***************************/
+
+int main(int argc, char **argv)
+{
+ setlocale(LC_ALL, "");
+
+ startmenu(MainMenu, "TUI - 'textual user interface' demonstration program");
+
+ return 0;
+}
diff --git a/payloads/libpayload/curses/PDCurses/demos/worm.c b/payloads/libpayload/curses/PDCurses/demos/worm.c
new file mode 100644
index 0000000..5a823f9
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/worm.c
@@ -0,0 +1,434 @@
+/****************************************************************************
+ * Copyright (c) 2005 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+/*
+
+ @@@ @@@ @@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@
+ @@@ @@@ @@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@
+ @@@ @@@ @@@@ @@@@ @@@@ @@@@ @@@ @@@@
+ @@@ @@ @@@ @@@ @@@ @@@ @@@ @@@ @@@
+ @@@ @@@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@
+ @@@@ @@@@ @@@@ @@@ @@@ @@@ @@@ @@@ @@@
+ @@@@@@@@@@@@ @@@@ @@@@ @@@ @@@ @@@ @@@
+ @@@@ @@@@ @@@@@@@@@@@@ @@@ @@@ @@@ @@@
+ @@ @@ @@@@@@@@@@ @@@ @@@ @@@ @@@
+
+ Eric P. Scott
+ Caltech High Energy Physics
+ October, 1980
+
+ Color by Eric S. Raymond
+ July, 1995
+
+Options:
+ -f fill screen with copies of 'WORM' at start.
+ -l <n> set worm length
+ -n <n> set number of worms
+ -t make worms leave droppings
+
+ $Id: worm.c,v 1.16 2008/07/13 16:08:17 wmcbrine Exp $
+*/
+
+#include <curses.h>
+#include <stdlib.h>
+#include <time.h>
+
+#define FLAVORS 7
+
+static chtype flavor[FLAVORS] =
+{
+ 'O', '*', '#', '$', '%', '0', '@'
+};
+
+static const short xinc[] =
+{
+ 1, 1, 1, 0, -1, -1, -1, 0
+},
+yinc[] =
+{
+ -1, 0, 1, 1, 1, 0, -1, -1
+};
+
+static struct worm
+{
+ int orientation, head;
+ short *xpos, *ypos;
+} worm[40];
+
+static const char *field;
+static int length = 16, number = 3;
+static chtype trail = ' ';
+
+static const struct options
+{
+ int nopts;
+ int opts[3];
+} normal[8] =
+{
+ { 3, { 7, 0, 1 } }, { 3, { 0, 1, 2 } }, { 3, { 1, 2, 3 } },
+ { 3, { 2, 3, 4 } }, { 3, { 3, 4, 5 } }, { 3, { 4, 5, 6 } },
+ { 3, { 5, 6, 7 } }, { 3, { 6, 7, 0 } }
+},
+upper[8] =
+{
+ { 1, { 1, 0, 0 } }, { 2, { 1, 2, 0 } }, { 0, { 0, 0, 0 } },
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 2, { 4, 5, 0 } },
+ { 1, { 5, 0, 0 } }, { 2, { 1, 5, 0 } }
+},
+left[8] =
+{
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
+ { 2, { 2, 3, 0 } }, { 1, { 3, 0, 0 } }, { 2, { 3, 7, 0 } },
+ { 1, { 7, 0, 0 } }, { 2, { 7, 0, 0 } }
+},
+right[8] =
+{
+ { 1, { 7, 0, 0 } }, { 2, { 3, 7, 0 } }, { 1, { 3, 0, 0 } },
+ { 2, { 3, 4, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
+ { 0, { 0, 0, 0 } }, { 2, { 6, 7, 0 } }
+},
+lower[8] =
+{
+ { 0, { 0, 0, 0 } }, { 2, { 0, 1, 0 } }, { 1, { 1, 0, 0 } },
+ { 2, { 1, 5, 0 } }, { 1, { 5, 0, 0 } }, { 2, { 5, 6, 0 } },
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }
+},
+upleft[8] =
+{
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 1, { 3, 0, 0 } },
+ { 2, { 1, 3, 0 } }, { 1, { 1, 0, 0 } }
+},
+upright[8] =
+{
+ { 2, { 3, 5, 0 } }, { 1, { 3, 0, 0 } }, { 0, { 0, 0, 0 } },
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
+ { 0, { 0, 0, 0 } }, { 1, { 5, 0, 0 } }
+},
+lowleft[8] =
+{
+ { 3, { 7, 0, 1 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
+ { 1, { 1, 0, 0 } }, { 2, { 1, 7, 0 } }, { 1, { 7, 0, 0 } },
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }
+},
+lowright[8] =
+{
+ { 0, { 0, 0, 0 } }, { 1, { 7, 0, 0 } }, { 2, { 5, 7, 0 } },
+ { 1, { 5, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } },
+ { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }
+};
+
+static void cleanup(void)
+{
+ standend();
+ refresh();
+ curs_set(1);
+ endwin();
+}
+
+int main(int argc, char *argv[])
+{
+ const struct options *op;
+ struct worm *w;
+ short **ref, *ip;
+ int x, y, n, h, last, bottom, seed;
+
+ for (x = 1; x < argc; x++)
+ {
+ char *p = argv[x];
+
+ if (*p == '-')
+ p++;
+
+ switch (*p)
+ {
+ case 'f':
+ field = "WORM";
+ break;
+ case 'l':
+ if (++x == argc)
+ goto usage;
+
+ if ((length = atoi(argv[x])) < 2 || length > 1024)
+ {
+ fprintf(stderr, "%s: Invalid length\n", *argv);
+ return EXIT_FAILURE;
+ }
+
+ break;
+ case 'n':
+ if (++x == argc)
+ goto usage;
+
+ if ((number = atoi(argv[x])) < 1 || number > 40)
+ {
+ fprintf(stderr, "%s: Invalid number of worms\n", *argv);
+ return EXIT_FAILURE;
+ }
+
+ break;
+ case 't':
+ trail = '.';
+ break;
+ default:
+ usage:
+ fprintf(stderr, "usage: %s [-field] [-length #] "
+ "[-number #] [-trail]\n", *argv);
+ return EXIT_FAILURE;
+ }
+ }
+
+#ifdef XCURSES
+ Xinitscr(argc, argv);
+#else
+ initscr();
+#endif
+ seed = time((time_t *)0);
+ srand(seed);
+
+ noecho();
+ cbreak();
+ nonl();
+ keypad(stdscr, TRUE);
+
+ curs_set(0);
+
+ bottom = LINES - 1;
+ last = COLS - 1;
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ int bg = COLOR_BLACK;
+ start_color();
+
+# if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000)
+ if (use_default_colors() == OK)
+ bg = -1;
+# endif
+
+# define SET_COLOR(num, fg) \
+ init_pair(num + 1, fg, bg); \
+ flavor[num] |= COLOR_PAIR(num + 1) | A_BOLD
+
+ SET_COLOR(0, COLOR_GREEN);
+ SET_COLOR(1, COLOR_RED);
+ SET_COLOR(2, COLOR_CYAN);
+ SET_COLOR(3, COLOR_WHITE);
+ SET_COLOR(4, COLOR_MAGENTA);
+ SET_COLOR(5, COLOR_BLUE);
+ SET_COLOR(6, COLOR_YELLOW);
+ }
+#endif
+
+ ref = malloc(sizeof(short *) * LINES);
+
+ for (y = 0; y < LINES; y++)
+ {
+ ref[y] = malloc(sizeof(short) * COLS);
+
+ for (x = 0; x < COLS; x++)
+ ref[y][x] = 0;
+ }
+
+#ifdef BADCORNER
+ /* if addressing the lower right corner doesn't work in your curses */
+
+ ref[bottom][last] = 1;
+#endif
+
+ for (n = number, w = &worm[0]; --n >= 0; w++)
+ {
+ w->orientation = w->head = 0;
+
+ if ((ip = malloc(sizeof(short) * (length + 1))) == NULL)
+ {
+ fprintf(stderr, "%s: out of memory\n", *argv);
+ return EXIT_FAILURE;
+ }
+
+ w->xpos = ip;
+
+ for (x = length; --x >= 0;)
+ *ip++ = -1;
+
+ if ((ip = malloc(sizeof(short) * (length + 1))) == NULL)
+ {
+ fprintf(stderr, "%s: out of memory\n", *argv);
+ return EXIT_FAILURE;
+ }
+
+ w->ypos = ip;
+
+ for (y = length; --y >= 0;)
+ *ip++ = -1;
+ }
+
+ if (field)
+ {
+ const char *p = field;
+
+ for (y = bottom; --y >= 0;)
+ for (x = COLS; --x >= 0;)
+ {
+ addch((chtype) (*p++));
+
+ if (!*p)
+ p = field;
+ }
+ }
+
+ napms(12);
+ refresh();
+ nodelay(stdscr, TRUE);
+
+ for (;;)
+ {
+ int ch;
+
+ if ((ch = getch()) > 0)
+ {
+#ifdef KEY_RESIZE
+ if (ch == KEY_RESIZE)
+ {
+# ifdef PDCURSES
+ resize_term(0, 0);
+ erase();
+# endif
+ if (last != COLS - 1)
+ {
+ for (y = 0; y <= bottom; y++)
+ {
+ ref[y] = realloc(ref[y], sizeof(short) * COLS);
+
+ for (x = last + 1; x < COLS; x++)
+ ref[y][x] = 0;
+ }
+
+ last = COLS - 1;
+ }
+
+ if (bottom != LINES - 1)
+ {
+ for (y = LINES; y <= bottom; y++)
+ free(ref[y]);
+
+ ref = realloc(ref, sizeof(short *) * LINES);
+
+ for (y = bottom + 1; y < LINES; y++)
+ {
+ ref[y] = malloc(sizeof(short) * COLS);
+
+ for (x = 0; x < COLS; x++)
+ ref[y][x] = 0;
+ }
+
+ bottom = LINES - 1;
+ }
+ }
+
+#endif /* KEY_RESIZE */
+
+ /* Make it simple to put this into single-step mode,
+ or resume normal operation - T. Dickey */
+
+ if (ch == 'q')
+ {
+ cleanup();
+ return EXIT_SUCCESS;
+ }
+ else if (ch == 's')
+ nodelay(stdscr, FALSE);
+ else if (ch == ' ')
+ nodelay(stdscr, TRUE);
+ }
+
+ for (n = 0, w = &worm[0]; n < number; n++, w++)
+ {
+ if ((x = w->xpos[h = w->head]) < 0)
+ {
+ move(y = w->ypos[h] = bottom, x = w->xpos[h] = 0);
+ addch(flavor[n % FLAVORS]);
+ ref[y][x]++;
+ }
+ else
+ y = w->ypos[h];
+
+ if (x > last)
+ x = last;
+
+ if (y > bottom)
+ y = bottom;
+
+ if (++h == length)
+ h = 0;
+
+ if (w->xpos[w->head = h] >= 0)
+ {
+ int x1 = w->xpos[h];
+ int y1 = w->ypos[h];
+
+ if (y1 < LINES && x1 < COLS && --ref[y1][x1] == 0)
+ {
+ move(y1, x1);
+ addch(trail);
+ }
+ }
+
+ op = &(x == 0 ? (y == 0 ? upleft :
+ (y == bottom ? lowleft : left)) :
+ (x == last ? (y == 0 ? upright :
+ (y == bottom ? lowright : right)) :
+ (y == 0 ? upper :
+ (y == bottom ? lower : normal))))
+ [w->orientation];
+
+ switch (op->nopts)
+ {
+ case 0:
+ cleanup();
+ return EXIT_SUCCESS;
+ case 1:
+ w->orientation = op->opts[0];
+ break;
+ default:
+ w->orientation = op->opts[rand() % op->nopts];
+ }
+
+ move(y += yinc[w->orientation], x += xinc[w->orientation]);
+
+ if (y < 0)
+ y = 0;
+
+ addch(flavor[n % FLAVORS]);
+ ref[w->ypos[h] = y][w->xpos[h] = x]++;
+ }
+ napms(12);
+ refresh();
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/demos/xmas.c b/payloads/libpayload/curses/PDCurses/demos/xmas.c
new file mode 100644
index 0000000..706858a
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/demos/xmas.c
@@ -0,0 +1,957 @@
+/******************************************************************************/
+/* asciixmas */
+/* December 1989 Larry Bartz Indianapolis, IN */
+/* */
+/* */
+/* I'm dreaming of an ascii character-based monochrome Christmas, */
+/* Just like the one's I used to know! */
+/* Via a full duplex communications channel, */
+/* At 9600 bits per second, */
+/* Even though it's kinda slow. */
+/* */
+/* I'm dreaming of an ascii character-based monochrome Christmas, */
+/* With ev'ry C program I write! */
+/* May your screen be merry and bright! */
+/* And may all your Christmases be amber or green, */
+/* (for reduced eyestrain and improved visibility)! */
+/* */
+/* */
+/* */
+/* IMPLEMENTATION */
+/* */
+/* Feel free to modify the defined string FROMWHO to reflect you, your */
+/* organization, your site, whatever. */
+/* */
+/* This looks a lot better if you can turn off your cursor before execution. */
+/* The cursor is distracting but it doesn't really ruin the show. */
+/* */
+/* At our site, we invoke this for our users just after login and the */
+/* determination of terminal type. */
+/* */
+/* */
+/* PORTABILITY */
+/* */
+/* I wrote this using only the very simplest curses functions so that it */
+/* might be the most portable. I was personally able to test on five */
+/* different cpu/UNIX combinations. */
+/* */
+/* */
+/* COMPILE */
+/* */
+/* usually this: */
+/* */
+/* cc -O xmas.c -lcurses -o xmas -s */
+/* */
+/******************************************************************************/
+
+/* $Id: xmas.c,v 1.29 2008/07/13 16:08:17 wmcbrine Exp $ */
+
+#include <curses.h>
+#include <signal.h>
+
+void lil(WINDOW *);
+void midtop(WINDOW *);
+void bigtop(WINDOW *);
+void bigface(WINDOW *, chtype);
+void legs1(WINDOW *);
+void legs2(WINDOW *);
+void legs3(WINDOW *);
+void legs4(WINDOW *);
+void initdeer(void);
+void boxit(void);
+void seas(void);
+void greet(void);
+void fromwho(void);
+void del_msg(void);
+void tree(void);
+void balls(void);
+void star(void);
+void strng1(void);
+void strng2(void);
+void strng3(void);
+void strng4(void);
+void strng5(void);
+void blinkit(void);
+void reindeer(void);
+
+#define FROMWHO "From Larry Bartz, Mark Hessling and William McBrine"
+
+int y_pos, x_pos;
+
+WINDOW *treescrn, *treescrn2, *treescrn3, *treescrn4, *treescrn5,
+ *treescrn6, *treescrn7, *treescrn8, *dotdeer0, *stardeer0,
+ *lildeer0, *lildeer1, *lildeer2, *lildeer3, *middeer0,
+ *middeer1, *middeer2, *middeer3, *bigdeer0, *bigdeer1,
+ *bigdeer2, *bigdeer3, *bigdeer4, *lookdeer0, *lookdeer1,
+ *lookdeer2, *lookdeer3, *lookdeer4, *w_holiday, *w_del_msg;
+
+int main(int argc, char **argv)
+{
+ int loopy;
+
+#ifdef XCURSES
+ Xinitscr(argc, argv);
+#else
+ initscr();
+#endif
+ nodelay(stdscr, TRUE);
+ noecho();
+ nonl();
+ refresh();
+
+#ifdef A_COLOR
+ if (has_colors())
+ start_color();
+#endif
+ curs_set(0);
+
+ treescrn = newwin(16, 27, 3, 53);
+ treescrn2 = newwin(16, 27, 3, 53);
+ treescrn3 = newwin(16, 27, 3, 53);
+ treescrn4 = newwin(16, 27, 3, 53);
+ treescrn5 = newwin(16, 27, 3, 53);
+ treescrn6 = newwin(16, 27, 3, 53);
+ treescrn7 = newwin(16, 27, 3, 53);
+ treescrn8 = newwin(16, 27, 3, 53);
+
+ w_holiday = newwin(1, 26, 3, 27);
+
+ w_del_msg = newwin(1, 12, 23, 60);
+
+ mvwaddstr(w_holiday, 0, 0, "H A P P Y H O L I D A Y S");
+
+ initdeer();
+
+ clear();
+ werase(treescrn);
+ touchwin(treescrn);
+ werase(treescrn2);
+ touchwin(treescrn2);
+ werase(treescrn8);
+ touchwin(treescrn8);
+ refresh();
+ napms(1000);
+
+ boxit();
+ del_msg();
+ napms(1000);
+
+ seas();
+ del_msg();
+ napms(1000);
+
+ greet();
+ del_msg();
+ napms(1000);
+
+ fromwho();
+ del_msg();
+ napms(1000);
+
+ tree();
+ napms(1000);
+
+ balls();
+ napms(1000);
+
+ star();
+ napms(1000);
+
+ strng1();
+ strng2();
+ strng3();
+ strng4();
+ strng5();
+
+ /* set up the windows for our blinking trees */
+ /* **************************************** */
+ /* treescrn3 */
+
+ overlay(treescrn, treescrn3);
+
+ /* balls */
+ mvwaddch(treescrn3, 4, 18, ' ');
+ mvwaddch(treescrn3, 7, 6, ' ');
+ mvwaddch(treescrn3, 8, 19, ' ');
+ mvwaddch(treescrn3, 11, 22, ' ');
+
+ /* star */
+ mvwaddch(treescrn3, 0, 12, '*');
+
+ /* strng1 */
+ mvwaddch(treescrn3, 3, 11, ' ');
+
+ /* strng2 */
+ mvwaddch(treescrn3, 5, 13, ' ');
+ mvwaddch(treescrn3, 6, 10, ' ');
+
+ /* strng3 */
+ mvwaddch(treescrn3, 7, 16, ' ');
+ mvwaddch(treescrn3, 7, 14, ' ');
+
+ /* strng4 */
+ mvwaddch(treescrn3, 10, 13, ' ');
+ mvwaddch(treescrn3, 10, 10, ' ');
+ mvwaddch(treescrn3, 11, 8, ' ');
+
+ /* strng5 */
+ mvwaddch(treescrn3, 11, 18, ' ');
+ mvwaddch(treescrn3, 12, 13, ' ');
+
+ /* treescrn4 */
+
+ overlay(treescrn, treescrn4);
+
+ /* balls */
+ mvwaddch(treescrn4, 3, 9, ' ');
+ mvwaddch(treescrn4, 4, 16, ' ');
+ mvwaddch(treescrn4, 7, 6, ' ');
+ mvwaddch(treescrn4, 8, 19, ' ');
+ mvwaddch(treescrn4, 11, 2, ' ');
+ mvwaddch(treescrn4, 12, 23, ' ');
+
+ /* star */
+ mvwaddch(treescrn4, 0, 12, '*' | A_STANDOUT);
+
+ /* strng1 */
+ mvwaddch(treescrn4, 3, 13, ' ');
+
+ /* strng2 */
+
+ /* strng3 */
+ mvwaddch(treescrn4, 7, 15, ' ');
+ mvwaddch(treescrn4, 8, 11, ' ');
+
+ /* strng4 */
+ mvwaddch(treescrn4, 9, 16, ' ');
+ mvwaddch(treescrn4, 10, 12, ' ');
+ mvwaddch(treescrn4, 11, 8, ' ');
+
+ /* strng5 */
+ mvwaddch(treescrn4, 11, 18, ' ');
+ mvwaddch(treescrn4, 12, 14, ' ');
+
+ /* treescrn5 */
+
+ overlay(treescrn, treescrn5);
+
+ /* balls */
+ mvwaddch(treescrn5, 3, 15, ' ');
+ mvwaddch(treescrn5, 10, 20, ' ');
+ mvwaddch(treescrn5, 12, 1, ' ');
+
+ /* star */
+ mvwaddch(treescrn5, 0, 12, '*');
+
+ /* strng1 */
+ mvwaddch(treescrn5, 3, 11, ' ');
+
+ /* strng2 */
+ mvwaddch(treescrn5, 5, 12, ' ');
+
+ /* strng3 */
+ mvwaddch(treescrn5, 7, 14, ' ');
+ mvwaddch(treescrn5, 8, 10, ' ');
+
+ /* strng4 */
+ mvwaddch(treescrn5, 9, 15, ' ');
+ mvwaddch(treescrn5, 10, 11, ' ');
+ mvwaddch(treescrn5, 11, 7, ' ');
+
+ /* strng5 */
+ mvwaddch(treescrn5, 11, 17, ' ');
+ mvwaddch(treescrn5, 12, 13, ' ');
+
+ /* treescrn6 */
+
+ overlay(treescrn, treescrn6);
+
+ /* balls */
+ mvwaddch(treescrn6, 6, 7, ' ');
+ mvwaddch(treescrn6, 7, 18, ' ');
+ mvwaddch(treescrn6, 10, 4, ' ');
+ mvwaddch(treescrn6, 11, 23, ' ');
+
+ /* star */
+ mvwaddch(treescrn6, 0, 12, '*' | A_STANDOUT);
+
+ /* strng1 */
+
+ /* strng2 */
+ mvwaddch(treescrn6, 5, 11, ' ');
+
+ /* strng3 */
+ mvwaddch(treescrn6, 7, 13, ' ');
+ mvwaddch(treescrn6, 8, 9, ' ');
+
+ /* strng4 */
+ mvwaddch(treescrn6, 9, 14, ' ');
+ mvwaddch(treescrn6, 10, 10, ' ');
+ mvwaddch(treescrn6, 11, 6, ' ');
+
+ /* strng5 */
+ mvwaddch(treescrn6, 11, 16, ' ');
+ mvwaddch(treescrn6, 12, 12, ' ');
+
+ /* treescrn7 */
+
+ overlay(treescrn, treescrn7);
+
+ /* balls */
+ mvwaddch(treescrn7, 3, 15, ' ');
+ mvwaddch(treescrn7, 6, 7, ' ');
+ mvwaddch(treescrn7, 7, 18, ' ');
+ mvwaddch(treescrn7, 10, 4, ' ');
+ mvwaddch(treescrn7, 11, 22, ' ');
+
+ /* star */
+ mvwaddch(treescrn7, 0, 12, '*');
+
+ /* strng1 */
+ mvwaddch(treescrn7, 3, 12, ' ');
+
+ /* strng2 */
+ mvwaddch(treescrn7, 5, 13, ' ');
+ mvwaddch(treescrn7, 6, 9, ' ');
+
+ /* strng3 */
+ mvwaddch(treescrn7, 7, 15, ' ');
+ mvwaddch(treescrn7, 8, 11, ' ');
+
+ /* strng4 */
+ mvwaddch(treescrn7, 9, 16, ' ');
+ mvwaddch(treescrn7, 10, 12, ' ');
+ mvwaddch(treescrn7, 11, 8, ' ');
+
+ /* strng5 */
+ mvwaddch(treescrn7, 11, 18, ' ');
+ mvwaddch(treescrn7, 12, 14, ' ');
+
+ napms(1000);
+ reindeer();
+
+ touchwin(w_holiday);
+ wrefresh(w_holiday);
+ wrefresh(w_del_msg);
+
+ napms(1000);
+
+ for (loopy = 0; loopy < 50; loopy++)
+ blinkit();
+
+ clear();
+ refresh();
+ endwin();
+
+ return 0;
+}
+
+void lil(WINDOW *win)
+{
+ mvwaddch(win, 0, 0, (chtype) 'V');
+ mvwaddch(win, 1, 0, (chtype) '@');
+ mvwaddch(win, 1, 3, (chtype) '~');
+}
+
+void midtop(WINDOW *win)
+{
+ mvwaddstr(win, 0, 2, "yy");
+ mvwaddstr(win, 1, 2, "0(=)~");
+}
+
+void bigtop(WINDOW *win)
+{
+ mvwaddstr(win, 0, 17, "\\/");
+ mvwaddstr(win, 0, 20, "\\/");
+ mvwaddch(win, 1, 18, (chtype) '\\');
+ mvwaddch(win, 1, 20, (chtype) '/');
+ mvwaddstr(win, 2, 19, "|_");
+ mvwaddstr(win, 3, 18, "/^0\\");
+ mvwaddstr(win, 4, 17, "//\\");
+ mvwaddch(win, 4, 22, (chtype) '\\');
+ mvwaddstr(win, 5, 7, "^~~~~~~~~// ~~U");
+}
+
+void bigface(WINDOW *win, chtype noseattr)
+{
+ mvwaddstr(win, 0, 16, "\\/ \\/");
+ mvwaddstr(win, 1, 17, "\\Y/ \\Y/");
+ mvwaddstr(win, 2, 19, "\\=/");
+ mvwaddstr(win, 3, 17, "^\\o o/^");
+ mvwaddstr(win, 4, 17, "//( )");
+ mvwaddstr(win, 5, 7, "^~~~~~~~~// \\");
+ waddch(win, 'O' | noseattr);
+ waddstr(win, "/");
+}
+
+void legs1(WINDOW *win)
+{
+ mvwaddstr(win, 6, 7, "( \\_____( /");
+ mvwaddstr(win, 7, 8, "( ) /");
+ mvwaddstr(win, 8, 9, "\\\\ /");
+ mvwaddstr(win, 9, 11, "\\>/>");
+}
+
+void legs2(WINDOW *win)
+{
+ mvwaddstr(win, 6, 7, "(( )____( /");
+ mvwaddstr(win, 7, 7, "( / |");
+ mvwaddstr(win, 8, 8, "\\/ |");
+ mvwaddstr(win, 9, 9, "|> |>");
+}
+
+void legs3(WINDOW *win)
+{
+ mvwaddstr(win, 6, 6, "( ()_____( /");
+ mvwaddstr(win, 7, 6, "/ / /");
+ mvwaddstr(win, 8, 5, "|/ \\");
+ mvwaddstr(win, 9, 5, "/> \\>");
+}
+
+void legs4(WINDOW *win)
+{
+ mvwaddstr(win, 6, 6, "( )______( /");
+ mvwaddstr(win, 7, 5, "(/ \\");
+ mvwaddstr(win, 8, 0, "v___= ----^");
+}
+
+void initdeer(void)
+{
+ chtype noseattr;
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(31, COLOR_RED, COLOR_BLACK);
+ noseattr = COLOR_PAIR(31);
+ }
+ else
+#endif
+ noseattr = A_NORMAL;
+
+ /* set up the windows for our various reindeer */
+
+ dotdeer0 = newwin(3, 71, 0, 8);
+ stardeer0 = newwin(4, 56, 0, 8);
+ lildeer0 = newwin(7, 54, 0, 8);
+ middeer0 = newwin(15, 42, 0, 8);
+ bigdeer0 = newwin(10, 23, 0, 0);
+ lookdeer0 = newwin(10, 25, 0, 0);
+
+ /* lildeer1 */
+ lildeer1 = newwin(2, 4, 0, 0);
+ lil(lildeer1);
+ mvwaddstr(lildeer1, 1, 1, "<>");
+
+ /* lildeer2 */
+ lildeer2 = newwin(2, 4, 0, 0);
+ lil(lildeer2);
+ mvwaddstr(lildeer2, 1, 1, "||");
+
+ /* lildeer3 */
+ lildeer3 = newwin(2, 4, 0, 0);
+ lil(lildeer3);
+ mvwaddstr(lildeer3, 1, 1, "><");
+
+ /* middeer1 */
+ middeer1 = newwin(3, 7, 0, 0);
+ midtop(middeer1);
+ mvwaddstr(middeer1, 2, 3, "\\/");
+
+ /* middeer2 */
+ middeer2 = newwin(3, 7, 0, 0);
+ midtop(middeer2);
+ mvwaddch(middeer2, 2, 3, (chtype) '|');
+ mvwaddch(middeer2, 2, 5, (chtype) '|');
+
+ /* middeer3 */
+ middeer3 = newwin(3, 7, 0, 0);
+ midtop(middeer3);
+ mvwaddch(middeer3, 2, 2, (chtype) '/');
+ mvwaddch(middeer3, 2, 6, (chtype) '\\');
+
+ /* bigdeer1 */
+ bigdeer1 = newwin(10, 23, 0, 0);
+ bigtop(bigdeer1);
+ legs1(bigdeer1);
+
+ /* bigdeer2 */
+ bigdeer2 = newwin(10, 23, 0, 0);
+ bigtop(bigdeer2);
+ legs2(bigdeer2);
+
+ /* bigdeer3 */
+ bigdeer3 = newwin(10, 23, 0, 0);
+ bigtop(bigdeer3);
+ legs3(bigdeer3);
+
+ /* bigdeer4 */
+ bigdeer4 = newwin(10, 23, 0, 0);
+ bigtop(bigdeer4);
+ legs4(bigdeer4);
+
+ /* lookdeer1 */
+ lookdeer1 = newwin(10, 25, 0, 0);
+ bigface(lookdeer1, noseattr);
+ legs1(lookdeer1);
+
+ /* lookdeer2 */
+ lookdeer2 = newwin(10, 25, 0, 0);
+ bigface(lookdeer2, noseattr);
+ legs2(lookdeer2);
+
+ /* lookdeer3 */
+ lookdeer3 = newwin(10, 25, 0, 0);
+ bigface(lookdeer3, noseattr);
+ legs3(lookdeer3);
+
+ /* lookdeer4 */
+ lookdeer4 = newwin(10, 25, 0, 0);
+ bigface(lookdeer4, noseattr);
+ legs4(lookdeer4);
+}
+
+void boxit(void)
+{
+ int x;
+
+ for (x = 0; x < 20; ++x)
+ mvaddch(x, 7, '|');
+
+ for (x = 0; x < 80; ++x)
+ {
+ if (x > 7)
+ mvaddch(19, x, '_');
+
+ mvaddch(22, x, '_');
+ }
+}
+
+void seas(void)
+{
+ mvaddch(4, 1, 'S');
+ mvaddch(6, 1, 'E');
+ mvaddch(8, 1, 'A');
+ mvaddch(10, 1, 'S');
+ mvaddch(12, 1, 'O');
+ mvaddch(14, 1, 'N');
+ mvaddch(16, 1, '`');
+ mvaddch(18, 1, 'S');
+}
+
+void greet(void)
+{
+ mvaddch(3, 5, 'G');
+ mvaddch(5, 5, 'R');
+ mvaddch(7, 5, 'E');
+ mvaddch(9, 5, 'E');
+ mvaddch(11, 5, 'T');
+ mvaddch(13, 5, 'I');
+ mvaddch(15, 5, 'N');
+ mvaddch(17, 5, 'G');
+ mvaddch(19, 5, 'S');
+}
+
+void fromwho(void)
+{
+ mvaddstr(21, 13, FROMWHO);
+}
+
+void del_msg(void)
+{
+ refresh();
+}
+
+void tree(void)
+{
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(30, COLOR_GREEN, COLOR_BLACK);
+ wattrset(treescrn, COLOR_PAIR(30));
+ }
+#endif
+ mvwaddch(treescrn, 1, 11, (chtype) '/');
+ mvwaddch(treescrn, 2, 11, (chtype) '/');
+ mvwaddch(treescrn, 3, 10, (chtype) '/');
+ mvwaddch(treescrn, 4, 9, (chtype) '/');
+ mvwaddch(treescrn, 5, 9, (chtype) '/');
+ mvwaddch(treescrn, 6, 8, (chtype) '/');
+ mvwaddch(treescrn, 7, 7, (chtype) '/');
+ mvwaddch(treescrn, 8, 6, (chtype) '/');
+ mvwaddch(treescrn, 9, 6, (chtype) '/');
+ mvwaddch(treescrn, 10, 5, (chtype) '/');
+ mvwaddch(treescrn, 11, 3, (chtype) '/');
+ mvwaddch(treescrn, 12, 2, (chtype) '/');
+
+ mvwaddch(treescrn, 1, 13, (chtype) '\\');
+ mvwaddch(treescrn, 2, 13, (chtype) '\\');
+ mvwaddch(treescrn, 3, 14, (chtype) '\\');
+ mvwaddch(treescrn, 4, 15, (chtype) '\\');
+ mvwaddch(treescrn, 5, 15, (chtype) '\\');
+ mvwaddch(treescrn, 6, 16, (chtype) '\\');
+ mvwaddch(treescrn, 7, 17, (chtype) '\\');
+ mvwaddch(treescrn, 8, 18, (chtype) '\\');
+ mvwaddch(treescrn, 9, 18, (chtype) '\\');
+ mvwaddch(treescrn, 10, 19, (chtype) '\\');
+ mvwaddch(treescrn, 11, 21, (chtype) '\\');
+ mvwaddch(treescrn, 12, 22, (chtype) '\\');
+
+ mvwaddch(treescrn, 4, 10, (chtype) '_');
+ mvwaddch(treescrn, 4, 14, (chtype) '_');
+ mvwaddch(treescrn, 8, 7, (chtype) '_');
+ mvwaddch(treescrn, 8, 17, (chtype) '_');
+
+ mvwaddstr(treescrn, 13, 0,
+ "//////////// \\\\\\\\\\\\\\\\\\\\\\\\");
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(20, COLOR_YELLOW, COLOR_BLACK);
+ wattrset(treescrn, COLOR_PAIR(20));
+ }
+#endif
+ mvwaddstr(treescrn, 14, 11, "| |");
+ mvwaddstr(treescrn, 15, 11, "|_|");
+
+ wrefresh(treescrn);
+ wrefresh(w_del_msg);
+}
+
+void balls(void)
+{
+ chtype ball1, ball2, ball3, ball4, ball5, ball6;
+
+ overlay(treescrn, treescrn2);
+
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(1, COLOR_BLUE, COLOR_BLACK);
+ init_pair(2, COLOR_RED, COLOR_BLACK);
+ init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+ init_pair(4, COLOR_CYAN, COLOR_BLACK);
+ init_pair(5, COLOR_YELLOW, COLOR_BLACK);
+ init_pair(6, COLOR_WHITE, COLOR_BLACK);
+ ball1 = COLOR_PAIR(1) | '@';
+ ball2 = COLOR_PAIR(2) | '@';
+ ball3 = COLOR_PAIR(3) | '@';
+ ball4 = COLOR_PAIR(4) | '@';
+ ball5 = COLOR_PAIR(5) | '@';
+ ball6 = COLOR_PAIR(6) | '@';
+ }
+ else
+#endif
+ ball1 = ball2 = ball3 = ball4 = ball5 = ball6 = '@';
+
+ mvwaddch(treescrn2, 3, 9, ball1);
+ mvwaddch(treescrn2, 3, 15, ball2);
+ mvwaddch(treescrn2, 4, 8, ball3);
+ mvwaddch(treescrn2, 4, 16, ball4);
+ mvwaddch(treescrn2, 5, 7, ball5);
+ mvwaddch(treescrn2, 5, 17, ball6);
+ mvwaddch(treescrn2, 7, 6, ball1 | A_BOLD);
+ mvwaddch(treescrn2, 7, 18, ball2 | A_BOLD);
+ mvwaddch(treescrn2, 8, 5, ball3 | A_BOLD);
+ mvwaddch(treescrn2, 8, 19, ball4 | A_BOLD);
+ mvwaddch(treescrn2, 10, 4, ball5 | A_BOLD);
+ mvwaddch(treescrn2, 10, 20, ball6 | A_BOLD);
+ mvwaddch(treescrn2, 11, 2, ball1);
+ mvwaddch(treescrn2, 11, 22, ball2);
+ mvwaddch(treescrn2, 12, 1, ball3);
+ mvwaddch(treescrn2, 12, 23, ball4);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+}
+
+void star(void)
+{
+ mvwaddch(treescrn2, 0, 12, (chtype) '*' | A_STANDOUT);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+}
+
+void strng1(void)
+{
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(10, COLOR_YELLOW, COLOR_BLACK);
+ wattrset(treescrn2, COLOR_PAIR(10) | A_BOLD);
+ }
+#endif
+ mvwaddstr(treescrn2, 3, 11, ".:'");
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+}
+
+void strng2(void)
+{
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(11, COLOR_RED, COLOR_BLACK);
+ wattrset(treescrn2, COLOR_PAIR(11) | A_BOLD);
+ }
+#endif
+ mvwaddstr(treescrn2, 5, 11, ",.:'");
+ mvwaddstr(treescrn2, 6, 9, ":'");
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+}
+
+void strng3(void)
+{
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(12, COLOR_GREEN, COLOR_BLACK);
+ wattrset(treescrn2, COLOR_PAIR(12) | A_BOLD);
+ }
+#endif
+ mvwaddstr(treescrn2, 7, 13, ",.:'");
+ mvwaddstr(treescrn2, 8, 9, ",.:'");
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+}
+
+void strng4(void)
+{
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(13, COLOR_WHITE, COLOR_BLACK);
+ wattrset(treescrn2, COLOR_PAIR(13) | A_BOLD);
+ }
+#endif
+ mvwaddstr(treescrn2, 9, 14, ",.:'");
+ mvwaddstr(treescrn2, 10, 10, ",.:'");
+ mvwaddstr(treescrn2, 11, 6, ",.:'");
+ mvwaddch(treescrn2, 12, 5, (chtype) '\'');
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+}
+
+void strng5(void)
+{
+#ifdef A_COLOR
+ if (has_colors())
+ {
+ init_pair(14, COLOR_CYAN, COLOR_BLACK);
+ wattrset(treescrn2, COLOR_PAIR(14) | A_BOLD);
+ }
+#endif
+ mvwaddstr(treescrn2, 11, 16, ",.:'");
+ mvwaddstr(treescrn2, 12, 12, ",.:'");
+
+ /* save a fully lit tree */
+ overlay(treescrn2, treescrn);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+}
+
+void blinkit(void)
+{
+ static int cycle;
+
+ if (cycle > 4)
+ cycle = 0;
+
+ touchwin(treescrn8);
+
+ switch (cycle)
+ {
+ case 0:
+ overlay(treescrn3, treescrn8);
+ break;
+
+ case 1:
+ overlay(treescrn4, treescrn8);
+ break;
+
+ case 2:
+ overlay(treescrn5, treescrn8);
+ break;
+
+ case 3:
+ overlay(treescrn6, treescrn8);
+ break;
+
+ case 4:
+ overlay(treescrn7, treescrn8);
+ }
+
+ wrefresh(treescrn8);
+ wrefresh(w_del_msg);
+
+ napms(50);
+ touchwin(treescrn8);
+
+ /*ALL ON************************************************** */
+
+ overlay(treescrn, treescrn8);
+ wrefresh(treescrn8);
+ wrefresh(w_del_msg);
+
+ ++cycle;
+}
+
+#define TSHOW(win, pause) touchwin(win); wrefresh(win); \
+ wrefresh(w_del_msg); napms(pause)
+
+#define SHOW(win, pause) mvwin(win, y_pos, x_pos); wrefresh(win); \
+ wrefresh(w_del_msg); napms(pause)
+
+void reindeer(void)
+{
+ int looper;
+
+ y_pos = 0;
+
+ for (x_pos = 70; x_pos > 62; x_pos--)
+ {
+ if (x_pos < 62)
+ y_pos = 1;
+
+ for (looper = 0; looper < 4; looper++)
+ {
+ mvwaddch(dotdeer0, y_pos, x_pos, (chtype) '.');
+ wrefresh(dotdeer0);
+ wrefresh(w_del_msg);
+ werase(dotdeer0);
+ wrefresh(dotdeer0);
+ wrefresh(w_del_msg);
+ }
+ }
+
+ y_pos = 2;
+
+ for (; x_pos > 50; x_pos--)
+ {
+ for (looper = 0; looper < 4; looper++)
+ {
+ if (x_pos < 56)
+ {
+ y_pos = 3;
+
+ mvwaddch(stardeer0, y_pos, x_pos, (chtype) '*');
+ wrefresh(stardeer0);
+ wrefresh(w_del_msg);
+ werase(stardeer0);
+ wrefresh(stardeer0);
+ }
+ else
+ {
+ mvwaddch(dotdeer0, y_pos, x_pos, (chtype) '*');
+ wrefresh(dotdeer0);
+ wrefresh(w_del_msg);
+ werase(dotdeer0);
+ wrefresh(dotdeer0);
+ }
+ wrefresh(w_del_msg);
+ }
+ }
+
+ x_pos = 58;
+
+ for (y_pos = 2; y_pos < 5; y_pos++)
+ {
+ TSHOW(lildeer0, 50);
+
+ for (looper = 0; looper < 4; looper++)
+ {
+ SHOW(lildeer3, 50);
+ SHOW(lildeer2, 50);
+ SHOW(lildeer1, 50);
+ SHOW(lildeer2, 50);
+ SHOW(lildeer3, 50);
+
+ TSHOW(lildeer0, 50);
+
+ x_pos -= 2;
+ }
+ }
+
+ x_pos = 35;
+
+ for (y_pos = 5; y_pos < 10; y_pos++)
+ {
+ touchwin(middeer0);
+ wrefresh(middeer0);
+ wrefresh(w_del_msg);
+
+ for (looper = 0; looper < 2; looper++)
+ {
+ SHOW(middeer3, 50);
+ SHOW(middeer2, 50);
+ SHOW(middeer1, 50);
+ SHOW(middeer2, 50);
+ SHOW(middeer3, 50);
+
+ TSHOW(middeer0, 50);
+
+ x_pos -= 3;
+ }
+ }
+
+ napms(2000);
+
+ y_pos = 1;
+
+ for (x_pos = 8; x_pos < 16; x_pos++)
+ {
+ SHOW(bigdeer4, 30);
+ SHOW(bigdeer3, 30);
+ SHOW(bigdeer2, 30);
+ SHOW(bigdeer1, 30);
+ SHOW(bigdeer2, 30);
+ SHOW(bigdeer3, 30);
+ SHOW(bigdeer4, 30);
+ SHOW(bigdeer0, 30);
+ }
+
+ --x_pos;
+
+ for (looper = 0; looper < 6; looper++)
+ {
+ SHOW(lookdeer4, 40);
+ SHOW(lookdeer3, 40);
+ SHOW(lookdeer2, 40);
+ SHOW(lookdeer1, 40);
+ SHOW(lookdeer2, 40);
+ SHOW(lookdeer3, 40);
+ SHOW(lookdeer4, 40);
+ }
+
+ SHOW(lookdeer0, 40);
+
+ for (; y_pos < 10; y_pos++)
+ {
+ for (looper = 0; looper < 2; looper++)
+ {
+ SHOW(bigdeer4, 30);
+ SHOW(bigdeer3, 30);
+ SHOW(bigdeer2, 30);
+ SHOW(bigdeer1, 30);
+ SHOW(bigdeer2, 30);
+ SHOW(bigdeer3, 30);
+ SHOW(bigdeer4, 30);
+ }
+
+ SHOW(bigdeer0, 30);
+ }
+
+ --y_pos;
+
+ mvwin(lookdeer3, y_pos, x_pos);
+ wrefresh(lookdeer3);
+ wrefresh(w_del_msg);
+}
diff --git a/payloads/libpayload/curses/PDCurses/doc/Makefile b/payloads/libpayload/curses/PDCurses/doc/Makefile
new file mode 100644
index 0000000..8b5f337
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/doc/Makefile
@@ -0,0 +1,37 @@
+# Makefile for PDCurses manext program.
+
+all: manual
+
+manual: PDCurses.txt
+
+PDCurses.txt: manext
+ cat intro.txt > PDCurses.txt
+ echo PDCurses Definitions and Variables >> PDCurses.txt
+ echo ================================== >> PDCurses.txt
+ ./manext ../curses.h >> PDCurses.txt
+ echo PDCurses Functions >> PDCurses.txt
+ echo ================== >> PDCurses.txt
+ ./manext ../pdcurses/*.c >> PDCurses.txt
+ ./manext ../x11/*.c >> PDCurses.txt
+ cat x11.txt >> PDCurses.txt
+ echo >> PDCurses.txt
+ echo >> PDCurses.txt
+ echo \
+-------------------------------------------------------------------------- \
+>> PDCurses.txt
+ echo >> PDCurses.txt
+ cat sdl.txt >> PDCurses.txt
+
+manext: manext.c
+
+install:
+ echo Does nothing at the moment
+
+clean:
+ -rm -rf *.o manext PDCurses.txt
+
+distclean: clean
+
+mostlyclean: clean
+
+realclean: distclean
diff --git a/payloads/libpayload/curses/PDCurses/doc/intro.txt b/payloads/libpayload/curses/PDCurses/doc/intro.txt
new file mode 100644
index 0000000..b54dcf0
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/doc/intro.txt
@@ -0,0 +1,833 @@
+PDCurses User's Guide
+=====================
+
+Curses Overview
+---------------
+
+The X/Open Curses Interface Definition describes a set of C-Language
+functions that provide screen-handling and updating, which are
+collectively known as the curses library.
+
+The curses library permits manipulation of data structures called
+windows which may be thought of as two-dimensional arrays of
+characters representing all or part of a terminal's screen. The
+windows are manipulated using a procedural interface described
+elsewhere. The curses package maintains a record of what characters
+are on the screen. At the most basic level, manipulation is done with
+the routines move() and addch() which are used to "move" the curses
+around and add characters to the default window, stdscr, which
+represents the whole screen.
+
+An application may use these routines to add data to the window in any
+convenient order. Once all data have been added, the routine
+refresh() is called. The package then determines what changes have
+been made which affect the screen. The screen contents are then
+changed to reflect those characters now in the window, using a
+sequence of operations optimized for the type of terminal in use.
+
+At a higher level routines combining the actions of move() and addch()
+are defined, as are routines to add whole strings and to perform
+format conversions in the manner of printf().
+
+Interfaces are also defined to erase the entire window and to specify
+the attributes of individual characters in the window. Attributes
+such as inverse video, underline and blink can be used on a
+per-character basis.
+
+New windows can be created by allowing the application to build
+several images of the screen and display the appropriate one very
+quickly. New windows are created using the routine newwin(). For
+each routine that manipulates the default window, stdscr, there is a
+corresponding routine prefixed with w to manipulate the contents of a
+specified window; for example, move() and wmove(). In fact, move(...)
+is functionally equivalent to wmove( stdscr, ...). This is similar to
+the interface offered by printf(...) and fprintf(stdout, ...).
+
+Windows do not have to correspond to the entire screen. It is
+possible to create smaller windows, and also to indicate that the
+window is only partially visible on the screen. Furthermore, large
+windows or pads, which are bigger than the actual screen size, may be
+created.
+
+Interfaces are also defined to allow input character manipulation and
+to disable and enable many input attributes: character echo, single
+character input with or without signal processing (cbreak or raw
+modes), carriage returns mapping to newlines, screen scrolling, etc.
+
+
+Data Types and the <curses.h> Header
+------------------------------------
+
+The data types supported by curses are described in this section.
+
+As the library supports a procedural interface to the data types, actual
+structure contents are not described. All curses data are manipulated
+using the routines provided.
+
+
+THE <curses.h> HEADER
+
+The <curses.h> header defines various constants and declares the data
+types that are available to the application.
+
+
+DATA TYPES
+
+The following data types are declared:
+
+ WINDOW * pointer to screen representation
+ SCREEN * pointer to terminal descriptor
+ bool boolean data type
+ chtype representation of a character in a window
+ cchar_t the wide-character equivalent of chtype
+ attr_t for WA_-style attributes
+
+The actual WINDOW and SCREEN objects used to store information are
+created by the corresponding routines and a pointer to them is provided.
+All manipulation is through that pointer.
+
+
+VARIABLES
+
+The following variables are defined:
+
+ LINES number of lines on terminal screen
+ COLS number of columns on terminal screen
+ stdscr pointer to the default screen window
+ curscr pointer to the current screen image
+ SP pointer to the current SCREEN struct
+ Mouse_status status of the mouse
+ COLORS number of colors available
+ COLOR_PAIRS number of color pairs available
+ TABSIZE size of one TAB block
+ acs_map[] alternate character set map
+ ttytype[] terminal name/description
+
+
+CONSTANTS
+
+The following constants are defined:
+
+GENERAL
+
+ FALSE boolean false value
+ TRUE boolean true value
+ NULL zero pointer value
+ ERR value returned on error condition
+ OK value returned on successful completion
+
+VIDEO ATTRIBUTES
+
+Normally, attributes are a property of the character.
+
+For chtype:
+
+ A_ALTCHARSET use the alternate character set
+ A_BLINK bright background or blinking
+ A_BOLD bright foreground or bold
+ A_DIM half bright -- no effect in PDCurses
+ A_INVIS invisible
+ A_ITALIC italic
+ A_LEFTLINE line along the left edge
+ A_PROTECT protected (?) -- PDCurses renders this as a
+ combination of the *LINE attributes
+ A_REVERSE reverse video
+ A_RIGHTLINE line along the right edge
+ A_STANDOUT terminal's best highlighting mode
+ A_UNDERLINE underline
+
+ A_ATTRIBUTES bit-mask to extract attributes
+ A_CHARTEXT bit-mask to extract a character
+ A_COLOR bit-mask to extract a color-pair
+
+Not all attributes will work on all terminals. A_RIGHTLINE, A_LEFTLINE
+and A_ITALIC are specific to PDCurses. A_INVIS and A_ITALIC are given
+the same value in PDCurses.
+
+For attr_t:
+
+ WA_ALTCHARSET same as A_ALTCHARSET
+ WA_BLINK same as A_BLINK
+ WA_BOLD same as A_BOLD
+ WA_DIM same as A_DIM
+ WA_INVIS same as A_INVIS
+ WA_LEFT same as A_LEFTLINE
+ WA_PROTECT same as A_PROTECT
+ WA_REVERSE same as A_REVERSE
+ WA_RIGHT same as A_RIGHTLINE
+ WA_STANDOUT same as A_STANDOUT
+ WA_UNDERLINE same as A_UNDERLINE
+
+Note that while A_LEFTLINE and A_RIGHTLINE are PDCurses-specific,
+WA_LEFT and WA_RIGHT are standard. The following are also defined, for
+compatibility, but currently have no effect in PDCurses: WA_HORIZONTAL,
+WA_LOW, WA_TOP, WA_VERTICAL.
+
+THE ALTERNATE CHARACTER SET
+
+For use in chtypes and with related functions. These are a portable way
+to represent graphics characters on different terminals.
+
+VT100-compatible symbols -- box characters:
+
+ ACS_ULCORNER upper left box corner
+ ACS_LLCORNER lower left box corner
+ ACS_URCORNER upper right box corner
+ ACS_LRCORNER lower right box corner
+ ACS_RTEE right "T"
+ ACS_LTEE left "T"
+ ACS_BTEE bottom "T"
+ ACS_TTEE top "T"
+ ACS_HLINE horizontal line
+ ACS_VLINE vertical line
+ ACS_PLUS plus sign, cross, or four-corner piece
+
+VT100-compatible symbols -- other:
+
+ ACS_S1 scan line 1
+ ACS_S9 scan line 9
+ ACS_DIAMOND diamond
+ ACS_CKBOARD checkerboard -- 50% grey
+ ACS_DEGREE degree symbol
+ ACS_PLMINUS plus/minus sign
+ ACS_BULLET bullet
+
+Teletype 5410v1 symbols -- these are defined in SysV curses, but
+are not well-supported by most terminals. Stick to VT100 characters
+for optimum portability:
+
+ ACS_LARROW left arrow
+ ACS_RARROW right arrow
+ ACS_DARROW down arrow
+ ACS_UARROW up arrow
+ ACS_BOARD checkerboard -- lighter (less dense) than
+ ACS_CKBOARD
+ ACS_LANTERN lantern symbol
+ ACS_BLOCK solid block
+
+That goes double for these -- undocumented SysV symbols. Don't use
+them:
+
+ ACS_S3 scan line 3
+ ACS_S7 scan line 7
+ ACS_LEQUAL less than or equal
+ ACS_GEQUAL greater than or equal
+ ACS_PI pi
+ ACS_NEQUAL not equal
+ ACS_STERLING pounds sterling symbol
+
+Box character aliases:
+
+ ACS_BSSB same as ACS_ULCORNER
+ ACS_SSBB same as ACS_LLCORNER
+ ACS_BBSS same as ACS_URCORNER
+ ACS_SBBS same as ACS_LRCORNER
+ ACS_SBSS same as ACS_RTEE
+ ACS_SSSB same as ACS_LTEE
+ ACS_SSBS same as ACS_BTEE
+ ACS_BSSS same as ACS_TTEE
+ ACS_BSBS same as ACS_HLINE
+ ACS_SBSB same as ACS_VLINE
+ ACS_SSSS same as ACS_PLUS
+
+For cchar_t and wide-character functions, WACS_ equivalents are also
+defined.
+
+COLORS
+
+For use with init_pair(), color_set(), etc.:
+
+ COLOR_BLACK
+ COLOR_BLUE
+ COLOR_GREEN
+ COLOR_CYAN
+ COLOR_RED
+ COLOR_MAGENTA
+ COLOR_YELLOW
+ COLOR_WHITE
+
+Use these instead of numeric values. The definition of the colors
+depends on the implementation of curses.
+
+
+INPUT VALUES
+
+The following constants might be returned by getch() if keypad() has
+been enabled. Note that not all of these may be supported on a
+particular terminal:
+
+ KEY_BREAK break key
+ KEY_DOWN the four arrow keys
+ KEY_UP
+ KEY_LEFT
+ KEY_RIGHT
+ KEY_HOME home key (upward+left arrow)
+ KEY_BACKSPACE backspace
+ KEY_F0 function keys; space for 64 keys is reserved
+ KEY_F(n) (KEY_F0+(n))
+ KEY_DL delete line
+ KEY_IL insert line
+ KEY_DC delete character
+ KEY_IC insert character
+ KEY_EIC exit insert character mode
+ KEY_CLEAR clear screen
+ KEY_EOS clear to end of screen
+ KEY_EOL clear to end of line
+ KEY_SF scroll 1 line forwards
+ KEY_SR scroll 1 line backwards (reverse)
+ KEY_NPAGE next page
+ KEY_PPAGE previous page
+ KEY_STAB set tab
+ KEY_CTAB clear tab
+ KEY_CATAB clear all tabs
+ KEY_ENTER enter or send
+ KEY_SRESET soft (partial) reset
+ KEY_RESET reset or hard reset
+ KEY_PRINT print or copy
+ KEY_LL home down or bottom (lower left)
+ KEY_A1 upper left of virtual keypad
+ KEY_A3 upper right of virtual keypad
+ KEY_B2 center of virtual keypad
+ KEY_C1 lower left of virtual keypad
+ KEY_C3 lower right of virtual keypad
+
+ KEY_BTAB Back tab key
+ KEY_BEG Beginning key
+ KEY_CANCEL Cancel key
+ KEY_CLOSE Close key
+ KEY_COMMAND Cmd (command) key
+ KEY_COPY Copy key
+ KEY_CREATE Create key
+ KEY_END End key
+ KEY_EXIT Exit key
+ KEY_FIND Find key
+ KEY_HELP Help key
+ KEY_MARK Mark key
+ KEY_MESSAGE Message key
+ KEY_MOVE Move key
+ KEY_NEXT Next object key
+ KEY_OPEN Open key
+ KEY_OPTIONS Options key
+ KEY_PREVIOUS Previous object key
+ KEY_REDO Redo key
+ KEY_REFERENCE Reference key
+ KEY_REFRESH Refresh key
+ KEY_REPLACE Replace key
+ KEY_RESTART Restart key
+ KEY_RESUME Resume key
+ KEY_SAVE Save key
+ KEY_SBEG Shifted beginning key
+ KEY_SCANCEL Shifted cancel key
+ KEY_SCOMMAND Shifted command key
+ KEY_SCOPY Shifted copy key
+ KEY_SCREATE Shifted create key
+ KEY_SDC Shifted delete char key
+ KEY_SDL Shifted delete line key
+ KEY_SELECT Select key
+ KEY_SEND Shifted end key
+ KEY_SEOL Shifted clear line key
+ KEY_SEXIT Shifted exit key
+ KEY_SFIND Shifted find key
+ KEY_SHELP Shifted help key
+ KEY_SHOME Shifted home key
+ KEY_SIC Shifted input key
+ KEY_SLEFT Shifted left arrow key
+ KEY_SMESSAGE Shifted message key
+ KEY_SMOVE Shifted move key
+ KEY_SNEXT Shifted next key
+ KEY_SOPTIONS Shifted options key
+ KEY_SPREVIOUS Shifted prev key
+ KEY_SPRINT Shifted print key
+ KEY_SREDO Shifted redo key
+ KEY_SREPLACE Shifted replace key
+ KEY_SRIGHT Shifted right arrow
+ KEY_SRSUME Shifted resume key
+ KEY_SSAVE Shifted save key
+ KEY_SSUSPEND Shifted suspend key
+ KEY_SUNDO Shifted undo key
+ KEY_SUSPEND Suspend key
+ KEY_UNDO Undo key
+
+The virtual keypad is arranged like this:
+
+ A1 up A3
+ left B2 right
+ C1 down C3
+
+This list is incomplete -- see curses.h for the full list, and use the
+testcurs demo to see what values are actually returned. The above are
+just the keys required by X/Open. In particular, PDCurses defines many
+CTL_ and ALT_ combinations; these are not portable.
+
+
+FUNCTIONS
+
+The following table lists each curses routine and the name of the manual
+page on which it is described.
+
+Functions from the X/Open curses standard -- complete, except for
+getch() and ungetch(), which are implemented as macros for DOS
+compatibility:
+
+ Curses Function Manual Page Name
+
+ addch addch
+ addchnstr addchstr
+ addchstr addchstr
+ addnstr addstr
+ addstr addstr
+ attroff attr
+ attron attr
+ attrset attr
+ attr_get attr
+ attr_off attr
+ attr_on attr
+ attr_set attr
+ baudrate termattr
+ beep beep
+ bkgd bkgd
+ bkgdset bkgd
+ border border
+ box border
+ can_change_color color
+ cbreak inopts
+ chgat attr
+ clearok outopts
+ clear clear
+ clrtobot clear
+ clrtoeol clear
+ color_content color
+ color_set attr
+ copywin overlay
+ curs_set kernel
+ def_prog_mode kernel
+ def_shell_mode kernel
+ del_curterm terminfo
+ delay_output util
+ delch delch
+ deleteln deleteln
+ delscreen initscr
+ delwin window
+ derwin window
+ doupdate refresh
+ dupwin window
+ echochar addch
+ echo inopts
+ endwin initscr
+ erasechar termattr
+ erase clear
+ filter util
+ flash beep
+ flushinp getch
+ getbkgd bkgd
+ getnstr getstr
+ getstr getstr
+ getwin scr_dump
+ halfdelay inopts
+ has_colors color
+ has_ic termattr
+ has_il termattr
+ hline border
+ idcok outopts
+ idlok outopts
+ immedok outopts
+ inchnstr inchstr
+ inchstr inchstr
+ inch inch
+ init_color color
+ init_pair color
+ initscr initscr
+ innstr instr
+ insch insch
+ insdelln deleteln
+ insertln deleteln
+ insnstr innstr
+ insstr innstr
+ instr instr
+ intrflush inopts
+ isendwin initscr
+ is_linetouched touch
+ is_wintouched touch
+ keyname keyname
+ keypad inopts
+ killchar termattr
+ leaveok outopts
+ longname termattr
+ meta inopts
+ move move
+ mvaddch addch
+ mvaddchnstr addchstr
+ mvaddchstr addchstr
+ mvaddnstr addstr
+ mvaddstr addstr
+ mvchgat attr
+ mvcur terminfo
+ mvdelch delch
+ mvderwin window
+ mvgetch getch
+ mvgetnstr getstr
+ mvgetstr getstr
+ mvhline border
+ mvinch inch
+ mvinchnstr inchstr
+ mvinchstr inchstr
+ mvinnstr instr
+ mvinsch insch
+ mvinsnstr insstr
+ mvinsstr insstr
+ mvinstr instr
+ mvprintw printw
+ mvscanw scanw
+ mvvline border
+ mvwaddchnstr addchstr
+ mvwaddchstr addchstr
+ mvwaddch addch
+ mvwaddnstr addstr
+ mvwaddstr addstr
+ mvwchgat attr
+ mvwdelch delch
+ mvwgetch getch
+ mvwgetnstr getstr
+ mvwgetstr getstr
+ mvwhline border
+ mvwinchnstr inchstr
+ mvwinchstr inchstr
+ mvwinch inch
+ mvwinnstr instr
+ mvwinsch insch
+ mvwinsnstr insstr
+ mvwinsstr insstr
+ mvwinstr instr
+ mvwin window
+ mvwprintw printw
+ mvwscanw scanw
+ mvwvline border
+ napms kernel
+ newpad pad
+ newterm initscr
+ newwin window
+ nl inopts
+ nocbreak inopts
+ nodelay inopts
+ noecho inopts
+ nonl inopts
+ noqiflush inopts
+ noraw inopts
+ notimeout inopts
+ overlay overlay
+ overwrite overlay
+ pair_content color
+ pechochar pad
+ pnoutrefresh pad
+ prefresh pad
+ printw printw
+ putp terminfo
+ putwin scr_dump
+ qiflush inopts
+ raw inopts
+ redrawwin refresh
+ refresh refresh
+ reset_prog_mode kernel
+ reset_shell_mode kernel
+ resetty kernel
+ restartterm terminfo
+ ripoffline kernel
+ savetty kernel
+ scanw scanw
+ scr_dump scr_dump
+ scr_init scr_dump
+ scr_restore scr_dump
+ scr_set scr_dump
+ scrl scroll
+ scroll scroll
+ scrollok outopts
+ set_term initscr
+ setscrreg outopts
+ setterm terminfo
+ setupterm terminfo
+ slk_attroff slk
+ slk_attr_off slk
+ slk_attron slk
+ slk_attr_on slk
+ slk_attrset slk
+ slk_attr_set slk
+ slk_clear slk
+ slk_color slk
+ slk_init slk
+ slk_label slk
+ slk_noutrefresh slk
+ slk_refresh slk
+ slk_restore slk
+ slk_set slk
+ slk_touch slk
+ standend attr
+ standout attr
+ start_color color
+ subpad pad
+ subwin window
+ syncok window
+ termattrs termattrs
+ term_attrs termattrs
+ termname termattrs
+ tgetent termcap
+ tgetflag termcap
+ tgetnum termcap
+ tgetstr termcap
+ tgoto termcap
+ tigetflag terminfo
+ tigetnum terminfo
+ tigetstr terminfo
+ timeout inopts
+ touchline touch
+ touchwin touch
+ tparm terminfo
+ tputs terminfo
+ typeahead inopts
+ untouchwin touch
+ use_env util
+ vidattr terminfo
+ vid_attr terminfo
+ vidputs terminfo
+ vid_puts terminfo
+ vline border
+ vw_printw printw
+ vwprintw printw
+ vw_scanw scanw
+ vwscanw scanw
+ waddchnstr addchstr
+ waddchstr addchstr
+ waddch addch
+ waddnstr addstr
+ waddstr addstr
+ wattroff attr
+ wattron attr
+ wattrset attr
+ wattr_get attr
+ wattr_off attr
+ wattr_on attr
+ wattr_set attr
+ wbkgdset bkgd
+ wbkgd bkgd
+ wborder border
+ wchgat attr
+ wclear clear
+ wclrtobot clear
+ wclrtoeol clear
+ wcolor_set attr
+ wcursyncup window
+ wdelch delch
+ wdeleteln deleteln
+ wechochar addch
+ werase clear
+ wgetch getch
+ wgetnstr getstr
+ wgetstr getstr
+ whline border
+ winchnstr inchstr
+ winchstr inchstr
+ winch inch
+ winnstr instr
+ winsch insch
+ winsdelln deleteln
+ winsertln deleteln
+ winsnstr insstr
+ winsstr insstr
+ winstr instr
+ wmove move
+ wnoutrefresh refresh
+ wprintw printw
+ wredrawln refresh
+ wrefresh refresh
+ wscanw scanw
+ wscrl scroll
+ wsetscrreg outopts
+ wstandend attr
+ wstandout attr
+ wsyncdown window
+ wsyncup window
+ wtimeout inopts
+ wtouchln touch
+ wvline border
+
+Wide-character functions from the X/Open standard -- these are only
+available when PDCurses is built with PDC_WIDE defined, and the
+prototypes are only available from curses.h when PDC_WIDE is defined
+before its inclusion in your app:
+
+ addnwstr addstr
+ addwstr addstr
+ add_wch addch
+ add_wchnstr addchstr
+ add_wchstr addchstr
+ border_set border
+ box_set border
+ echo_wchar addch
+ erasewchar termattr
+ getbkgrnd bkgd
+ getcchar util
+ getn_wstr getstr
+ get_wch getch
+ get_wstr getstr
+ hline_set border
+ innwstr instr
+ ins_nwstr insstr
+ ins_wch insch
+ ins_wstr insstr
+ inwstr instr
+ in_wch inch
+ in_wchnstr inchstr
+ in_wchstr inchstr
+ key_name keyname
+ killwchar termattr
+ mvaddnwstr addstr
+ mvaddwstr addstr
+ mvadd_wch addch
+ mvadd_wchnstr addchstr
+ mvadd_wchstr addchstr
+ mvgetn_wstr getstr
+ mvget_wch getch
+ mvget_wstr getstr
+ mvhline_set border
+ mvinnwstr instr
+ mvins_nwstr insstr
+ mvins_wch insch
+ mvins_wstr insstr
+ mvinwstr instr
+ mvwaddnwstr addstr
+ mvwaddwstr addstr
+ mvwadd_wch addch
+ mvwadd_wchnstr addchstr
+ mvwadd_wchstr addchstr
+ mvwgetn_wstr getstr
+ mvwget_wch getch
+ mvwget_wstr getstr
+ mvwhline_set border
+ mvwinnwstr instr
+ mvwins_nwstr insstr
+ mvwins_wch insch
+ mvwins_wstr insstr
+ mvwin_wch inch
+ mvwin_wchnstr inchstr
+ mvwin_wchstr inchstr
+ mvwinwstr instr
+ mvwvline_set border
+ pecho_wchar pad
+ setcchar util
+ slk_wset slk
+ unget_wch getch
+ vline_set border
+ waddnwstr addstr
+ waddwstr addstr
+ wadd_wch addch
+ wadd_wchnstr addchstr
+ wadd_wchstr addchstr
+ wbkgrnd bkgd
+ wbkgrndset bkgd
+ wborder_set border
+ wecho_wchar addch
+ wgetbkgrnd bkgd
+ wgetn_wstr getstr
+ wget_wch getch
+ wget_wstr getstr
+ whline_set border
+ winnwstr instr
+ wins_nwstr insstr
+ wins_wch insch
+ wins_wstr insstr
+ winwstr instr
+ win_wch inch
+ win_wchnstr inchstr
+ win_wchstr inchstr
+ wunctrl util
+ wvline_set border
+
+Quasi-standard functions, from Sys V or BSD curses:
+
+ getattrs attr
+ getbegx getyx
+ getbegy getyx
+ getmaxx getyx
+ getmaxy getyx
+ getparx getyx
+ getparx getyx
+ traceoff debug
+ traceon debug
+ unctrl util
+
+Classic PDCurses mouse functions, based on Sys V:
+
+ mouse_set mouse
+ mouse_on mouse
+ mouse_off mouse
+ request_mouse_pos mouse
+ map_button mouse
+ wmouse_position mouse
+ getmouse mouse
+ getbmap mouse
+
+Functions from ncurses:
+
+ assume_default_colors color
+ curses_version initscr
+ has_key keyname
+ use_default_colors color
+ wresize window
+
+ mouseinterval mouse
+ mousemask mouse
+ mouse_trafo mouse
+ nc_getmouse mouse
+ ungetmouse mouse
+ wenclose mouse
+ wmouse_trafo mouse
+
+PDCurses-specific functions -- avoid these in code that's intended to be
+portable:
+
+ addrawch addch
+ insrawch insch
+ is_termresized initscr
+ mvaddrawch addch
+ mvdeleteln deleteln
+ mvinsertln deleteln
+ mvinsrawch insch
+ mvwaddrawch addch
+ mvwdeleteln deleteln
+ mvwinsertln deleteln
+ mvwinsrawch insch
+ raw_output outopts
+ resize_term initscr
+ resize_window window
+ slk_wlabel slk
+ waddrawch addch
+ winsrawch insch
+ wordchar termattr
+
+ PDC_debug debug
+ PDC_ungetch getch
+ PDC_set_blink pdcsetsc
+ PDC_set_line_color color
+ PDC_set_title pdcsetsc
+
+ PDC_clearclipboard pdcclip
+ PDC_freeclipboard pdcclip
+ PDC_getclipboard pdcclip
+ PDC_setclipboard pdcclip
+
+ PDC_get_input_fd pdckbd
+ PDC_get_key_modifiers getch
+ PDC_return_key_modifiers getch
+ PDC_save_key_modifiers getch
+
+Functions specific to the X11 port of PDCurses:
+
+ Xinitscr initscr
+ XCursesExit -
+ sb_init sb
+ sb_set_horz sb
+ sb_set_vert sb
+ sb_get_horz sb
+ sb_get_vert sb
+ sb_refresh sb
+
+--------------------------------------------------------------------------
diff --git a/payloads/libpayload/curses/PDCurses/doc/manext.c b/payloads/libpayload/curses/PDCurses/doc/manext.c
new file mode 100644
index 0000000..4ce7cbf
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/doc/manext.c
@@ -0,0 +1,119 @@
+/***********************************************************************/
+/* MANEXT - Extract manual pages from C source code. */
+/***********************************************************************/
+/*
+ * MANEXT - A program to extract manual pages from C source code.
+ * Copyright (C) 1991-1996 Mark Hessling
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * If you make modifications to this software that you feel increases
+ * it usefulness for the rest of the community, please email the
+ * changes, enhancements, bug fixes as well as any and all ideas to me.
+ * This software is going to be maintained and enhanced as deemed
+ * necessary by the community.
+ *
+ * Mark Hessling <mark at rexx.org>
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define MAX_LINE 255
+
+void display_info()
+{
+ fprintf(stderr, "\nMANEXT 1.03 Copyright (C) 1991-1996 Mark Hessling\n"
+ "All rights reserved.\n"
+ "MANEXT is distributed under the terms of the GNU\n"
+ "General Public License and comes with NO WARRANTY.\n"
+ "See the file COPYING for details.\n"
+ "\nUsage: manext sourcefile [...]\n\n");
+}
+
+int main(int argc, char **argv)
+{
+ char s[MAX_LINE + 1]; /* input line */
+ int i;
+ FILE *fp;
+
+#ifdef __EMX__
+ _wildcard(&argc, &argv);
+#endif
+ if (strcmp(argv[1], "-h") == 0)
+ {
+ display_info();
+ exit(1);
+ }
+
+ for (i = 1; i < argc; i++)
+ {
+ if ((fp = fopen(argv[i], "r")) == NULL)
+ {
+ fprintf(stderr, "\nCould not open %s\n", argv[i]);
+ continue;
+ }
+
+ while (!feof(fp))
+ {
+ if (fgets(s, (int)sizeof(s), fp) == NULL)
+ {
+ if (ferror(fp) != 0)
+ {
+ fprintf(stderr, "*** Error reading %s. Exiting.\n",
+ argv[i]);
+ exit(1);
+ }
+
+ break;
+ }
+
+ /* check for manual entry marker at beginning of line */
+
+ if (strncmp(s, "/*man-start*", 12) != 0)
+ continue;
+
+ /* inner loop */
+
+ for (;;)
+ {
+ /* read next line of manual entry */
+
+ if (fgets(s, (int)sizeof(s), fp) == NULL)
+ {
+ if (ferror(fp) != 0)
+ {
+ fprintf(stderr, "*** Error reading %s. Exiting.\n",
+ argv[i]);
+ exit(1);
+ }
+
+ break;
+ }
+
+ /* check for end of entry marker */
+
+ if (strncmp(s, "**man-end", 9) == 0)
+ break;
+
+ printf("%s", s);
+ }
+
+ printf("\n\n-----------------------------------"
+ "---------------------------------------\n\n");
+ }
+
+ fclose(fp);
+ }
+
+ return 0;
+}
diff --git a/payloads/libpayload/curses/PDCurses/doc/sdl.txt b/payloads/libpayload/curses/PDCurses/doc/sdl.txt
new file mode 100644
index 0000000..6a54b9b
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/doc/sdl.txt
@@ -0,0 +1,152 @@
+SDL Considerations
+==================
+
+There are no special requirements to use PDCurses for SDL -- all
+PDCurses-compatible code should work fine. (In fact, you can even build
+against the Win32 console pdcurses.dll, and then swap in the SDL
+pdcurses.dll.) Nothing extra is needed beyond the base SDL library.
+However, there are some optional special features, described here.
+
+The principal limitation of this port is that input is currently
+restricted to ASCII (i.e., 0-127), plus the special keys like KEY_LEFT.
+(You could have Unicode input, but then the input wouldn't match the
+output, which is in Code Page 437.) Also, see the note about the
+potential for incomplete output under "PDC_update_rects()", below.
+
+
+Fonts
+-----
+
+The font is a simple BMP, 32 characters wide by 8 characters tall,
+preferably with a palette. (BMPs without palettes still work, but in
+that case, no attributes will be available, nor will the cursor work.)
+The first entry in the palette (usually black) is treated as the
+background color; the last entry (usually white) is treated as the
+foreground. These are changed or made transparent as appropriate; any
+other colors in the palette are passed through unchanged. So -- although
+a one-bit depth is sufficient for a normal font -- you could redraw some
+characters as multi-colored tiles.
+
+The font must be monospaced. The size of each character is derived by
+dividing the width of the BMP by 32 and the height by 8. There is no
+constraint on the dimensions.
+
+As provided in the default font and expected by acs_map[], the font is
+in Code Page 437 form. But you can of course use any layout if you're
+not relying on correct values for the ACS_* macros.
+
+The font can be set via the environment variable PDC_FONT. If it's not
+set, PDCurses looks for a file named "pdcfont.bmp" in the current
+directory at the time of initscr(). If neither is found, it uses the
+built-in default font encoded in deffont.h.
+
+
+Backgrounds
+-----------
+
+PDCurses for SDL supports an optional background image BMP. This is used
+whenever start_color() has not been called (see the ptest demo for an
+example), or when use_default_colors() has been called after
+start_color(), and the background color of a pair has been set to -1
+(see newdemo, worm, and rain for examples). The usage parallels that of
+ncurses in an appropriate terminal (e.g., Gnome Terminal). The image is
+tiled to cover the PDCurses window, and can be any size or depth.
+
+As with the font, you can point to a location for the background via the
+environment variable PDC_BACKGROUND; "pdcback.bmp" is the fallback.
+(There is no default background.)
+
+
+Icons
+-----
+
+The icon (used with SDL_WM_SetIcon() -- not used for the executable
+file) can be set via the environment variable PDC_ICON, and falls back
+to "pdcicon.bmp", and then to the built-in icon from deficon.h. The
+built-in icon is the PDCurses logo, as seen in ../x11/little_icon.xbm.
+The SDL docs say that the icon must be 32x32, at least for use with MS
+Windows.
+
+If pdc_screen is preinitialized (see below), PDCurses does not attempt
+to set the icon.
+
+
+Screen size
+-----------
+
+The default screen size is 80x25 characters (whatever size they may be),
+but you can override this via the environment variables PDC_COLS and/or
+PDC_LINES. (Some other ports use COLS and LINES; this is not done here
+because those values are, or should be, those of the controlling
+terminal, and PDCurses for SDL is independent of the terminal.) If
+pdc_screen is preinitialized (see below), these are ignored.
+
+
+Integration with SDL
+--------------------
+
+If you want to go further, you can mix PDCurses and SDL functions. (Of
+course this is extremely non-portable!) To aid you, there are several
+external variables and functions specific to the SDL port; you could
+include pdcsdl.h, or just add the declarations you need in your code:
+
+ PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back;
+ PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset;
+
+ void PDC_update_rects(void);
+ void PDC_retile(void);
+
+pdc_screen is the main surface, created by SDL_SetVideoMode(), unless
+it's preset before initscr(). You can perform normal SDL operations on
+this surface, but PDCurses won't respect them when it updates. (For
+that, see PDC_retile().) As an alternative, you can preinitialize this
+surface before calling initscr(). In that case, you can use pdc_sheight,
+pdc_swidth, pdc_yoffset and/or pdc_xoffset (q.v.) to confine PDCurses to
+only a specific area of the surface, reserving the rest for other SDL
+operations. If you preinitialize pdc_screen, you'll have to close it
+yourself; PDCurses will ignore resize events, and won't try to set the
+icon. Also note that if you preinitialize pdc_screen, it need not be the
+display surface.
+
+pdc_font, pdc_icon, and pdc_back are the SDL_surfaces for the font,
+icon, and background, respectively. You can set any or all of them
+before initscr(), and thus override any of the other ways to set them.
+But note that pdc_icon will be ignored if pdc_screen is preset.
+
+pdc_sheight and pdc_swidth are the dimensions of the area of pdc_screen
+to be used by PDCurses. You can preset them before initscr(); if either
+is not set, it defaults to the full screen size minus the x or y offset,
+as appropriate.
+
+pdc_xoffset and pdc_yoffset are the x and y offset for the area of
+pdc_screen to be used by PDCurses. See the sdltest demo for an example.
+
+PDC_retile() makes a copy of pdc_screen, then tiles it with the
+background image, if any. The resulting surface is used as the
+background for transparent character cells. PDC_retile() is called from
+initscr() and resize_term(). However, you can also use it at other
+times, to take advantage of the way it copies pdc_screen: Draw some SDL
+stuff; call PDC_retile(); do some curses stuff -- it will use whatever
+was on pdc_screen as the background. Then you can erase the curses
+screen, do some more SDL stuff, and call PDC_retile() again to make a
+new background. (If you don't erase the curses screen, it will be
+incorporated into the background when you call PDC_retile().) But this
+only works if no background image is set.
+
+PDC_update_rects() is how the screen actually gets updated. For
+performance reasons, when drawing, PDCurses for SDL maintains a table of
+rectangles that need updating, and only updates (by calling this
+function) during getch(), napms(), or when the table gets full.
+Normally, this is sufficient; but if you're pausing in some way other
+than by using napms(), and you're not doing keyboard checks, you may get
+an incomplete update. If that happens, you can call PDC_update_rects()
+manually.
+
+
+Interaction with stdio
+----------------------
+
+As with X11, it's a bad idea to mix curses and stdio calls. (In fact,
+that's true for PDCurses on any platform; but especially these two,
+which don't run under terminals.) Depending on how SDL is built, stdout
+and stderr may be redirected to files.
diff --git a/payloads/libpayload/curses/PDCurses/doc/x11.txt b/payloads/libpayload/curses/PDCurses/doc/x11.txt
new file mode 100644
index 0000000..db05683
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/doc/x11.txt
@@ -0,0 +1,416 @@
+X11 Considerations
+==================
+
+PDCurses for X11 uses the System V IPC shared memory facility, along
+with sockets, to share data between the curses program and the child
+process created to manage the X stuff.
+
+When compiling your application, you need to include the <curses.h> or
+<xcurses.h> that comes with PDCurses. You also need to link your code
+with libXCurses. You may need to link with the following libraries under
+X11R5:
+ Xaw Xmu Xt X11
+
+or, under X11R6:
+ Xaw Xmu Xt X11 SM ICE Xext
+
+You can run "xcurses-config --libs" to show the link parameters for your
+system. If using dynamic linking, on some systems, "-lXCurses" suffices.
+
+By calling Xinitscr() rather than initscr(), you can pass your program
+name and resource overrides to PDCurses. The program name is used as the
+title of the X window, and for defining X resources specific to your
+program.
+
+
+Interaction with stdio
+----------------------
+
+Be aware that curses programs that expect to have a normal tty
+underneath them will be very disappointed! Output directed to stdout
+will go to the xterm that invoked the PDCurses application, or to the
+console if not invoked directly from an xterm. Similarly, stdin will
+expect its input from the same place as stdout.
+
+
+X Resources
+-----------
+
+PDCurses for X11 recognizes the following resources:
+
+ lines
+ cols
+ normalFont
+ italicFont
+ pointer
+ pointerForeColor
+ pointerBackColor
+ cursorColor
+ textCursor
+ colorBlack
+ colorRed
+ colorGreen
+ colorYellow
+ colorBlue
+ colorMagenta
+ colorCyan
+ colorWhite
+ colorBoldBlack
+ colorBoldRed
+ colorBoldGreen
+ colorBoldYellow
+ colorBoldBlue
+ colorBoldMagenta
+ colorBoldCyan
+ colorBoldWhite
+ bitmap
+ pixmap
+ translations
+ shmmin
+ borderWidth
+ borderColor
+ clickPeriod
+ doubleClickPeriod
+ composeKey
+
+lines: Specifies the number of lines the "screen" will have.
+ Directly equates to LINES.
+ There is no theoretical maximum.
+ The minimum value must be 2.
+ Default: 24
+
+cols: Specifies the number of columns the "screen" will have.
+ Directly equates to COLS.
+ There is no theoretical maximum.
+ The minimum value must be 2.
+ Default: 80
+
+normalFont: The name of a fixed width font.
+ Default: 7x13
+
+italicFont: The name of a fixed width font to be used for
+ characters with A_ITALIC attributes. Must have the
+ same cell size as normalFont.
+ Default: 7x13 (obviously not an italic font)
+
+pointer: The name of a valid pointer cursor.
+ Default: xterm
+
+pointerForeColor: The foreground color of the pointer.
+ Default: black
+
+pointerBackColor: The background color of the pointer.
+ Default: white
+
+textCursor: The alignment of the text cursor; horizontal or vertical.
+ Default: horizontal
+
+colorBlack: The color of the COLOR_BLACK attribute.
+ Default: Black
+
+colorRed: The color of the COLOR_RED attribute.
+ Default: red3
+
+colorGreen: The color of the COLOR_GREEN attribute.
+ Default: green3
+
+colorYellow: The color of the COLOR_YELLOW attribute.
+ Default: yellow3
+
+colorBlue: The color of the COLOR_BLUE attribute.
+ Default: blue3
+
+colorMagenta: The color of the COLOR_MAGENTA attribute.
+ Default: magenta3
+
+colorCyan: The color of the COLOR_CYAN attribute.
+ Default: cyan3
+
+colorWhite: The color of the COLOR_WHITE attribute.
+ Default: Grey
+
+colorBoldBlack: COLOR_BLACK combined with A_BOLD.
+ Default: grey40
+
+colorBoldRed: COLOR_RED combined with A_BOLD.
+ Default: red1
+
+colorBoldGreen: COLOR_GREEN combined with A_BOLD.
+ Default: green1
+
+colorBoldYellow: COLOR_YELLOW combined with A_BOLD.
+ Default: yellow1
+
+colorBoldBlue: COLOR_BLUE combined with A_BOLD.
+ Default: blue1
+
+colorBoldMagenta: COLOR_MAGENTA combined with A_BOLD.
+ Default: magenta1
+
+colorBoldCyan: COLOR_CYAN combined with A_BOLD.
+ Default: cyan1
+
+colorBoldWhite: COLOR_WHITE combined with A_BOLD.
+ Default: White
+
+bitmap: The name of a valid bitmap file of depth 1 (black and white)
+ used for the application's icon. The file is an X bitmap.
+ Default: a 32x32 or 64x64 pixmap depending on the
+ window manager
+
+pixmap: The name of a valid pixmap file of any depth
+ supported by the window manager (color) for the
+ application's icon, The file is an X11 pixmap. This
+ resource is only available if the libXpm package has
+ been installed (most systems have this by default).
+ This resource overrides the "bitmap" resource.
+ Default: none, uses default bitmap above
+
+translations: Translations enable the user to customize the action
+ that occurs when a key, combination of keys, or a
+ button is pressed. The translations are similar to
+ those used by xterm.
+ Defaults:
+ <Key>: XCursesKeyPress()
+ <KeyUp>: XCursesKeyPress()
+ <BtnDown>: XCursesButton()
+ <BtnUp>: XCursesButton()
+ <BtnMotion>: XCursesButton()
+
+ The most useful action for KeyPress translations is
+ string(). The argument to the string() action can be
+ either a string or a hex representation of a
+ character; e.g., string(0x1b) will send the ASCII
+ escape character to the application; string("[11~")
+ will send [ 1 1 ~ , as separate keystrokes.
+
+shmmin: On most systems, there are two Unix kernel parameters
+ that determine the allowable size of a shared memory
+ segment. These parameters are usually something like
+ SHMMIN and SHMMAX. To use shared memory, a program
+ must allocate a segment of shared memory that is
+ between these two values. Usually these values are
+ like 1 for SHMMIN and some large number for SHMMAX.
+ Sometimes the Unix kernel is configured to have a
+ value of SHMMIN that is bigger than the size of one
+ of the shared memory segments that libXCurses uses.
+ On these systems an error message like:
+
+ Cannot allocate shared memory for SCREEN: Invalid argument
+
+ will result. To overcome this problem, this resource
+ should be set to the kernel value for SHMMIN. This
+ ensures that a shared memory segment will always be
+ bigger than the kernel value for SHMMIN (and
+ hopefully less than SHMMAX!)
+
+ Default: 0
+
+borderColor: The color of the border around the screen.
+ Default: black
+
+borderWidth: The width in pixels of the border around the screen.
+ Default: 0
+
+clickPeriod: The period (in milliseconds) between a button
+ press and a button release that determines if a click
+ of a button has occurred.
+ Default: 100
+
+doubleClickPeriod: The period (in milliseconds) between two button
+ press events that determines if a double click
+ of a button has occurred.
+ Default: 200
+
+composeKey: The name of the X key that defines the "compose key",
+ which is used to enter characters in the Latin-1
+ character set above 0xA0. (See "Compose Keys for
+ Latin-1" below.) This is used only when PDCurses is
+ built without XIM support. While in compose mode, the
+ text cursor will appear as a hollow rectangle.
+ Default: Multi_key
+
+
+Using Resources
+---------------
+
+All applications have a top-level class name of "XCurses". If Xinitscr()
+is used, it sets an application's top-level widget name. (Otherwise the
+name defaults to "PDCurses".)
+
+Examples for app-defaults or .Xdefaults:
+
+!
+! resources for XCurses class of programs
+!
+XCurses*lines: 30
+XCurses*cols: 80
+XCurses*normalFont: 9x13
+XCurses*bitmap: /tmp/xcurses.xbm
+XCurses*pointer: top_left_arrow
+!
+! resources for testcurs - XCurses
+!
+testcurs.colorRed: orange
+testcurs.colorBlack: midnightblue
+testcurs.lines: 25
+*testcurs.Translations: #override \n \
+ <Key>F12: string(0x1b) string("[11~") \n
+!
+! resources for THE - XCurses
+!
+! resources with the * wildcard can be overridden by a parameter passed
+! to initscr()
+!
+the*normalFont: 9x15
+the*lines: 40
+the*cols: 86
+the*pointer: xterm
+the*pointerForeColor: white
+the*pointerBackColor: black
+!
+! resources with the . format can not be overridden by a parameter passed
+! to Xinitscr()
+!
+the.bitmap: /home/mark/the/the64.xbm
+the.pixmap: /home/mark/the/the64.xpm
+
+Resources may also be passed as parameters to the Xinitscr() function.
+Parameters are strings in the form of switches; e.g., to set the color
+"red" to "indianred", and the number of lines to 30, the string passed
+to Xinitscr would be: "-colorRed indianred -lines 30"
+
+
+Compose Keys for Latin-1
+------------------------
+
+When built without XIM support, PDCurses for X11 provides its own,
+limited compose key system for Latin-1 characters. The available
+combinations are listed here. For a given character, any of the
+combinations shown in the last column may be used. To generate a
+character, press the "compose" key followed by one of the pairs of
+keystrokes. Where no key is evident, the spacebar is used. Thus, to
+generate the NO-BREAK SPACE, press the "compose" key followed by two
+hits of the spacebar.
+
+With a typical modern X server, you can get many more compose key
+combinations by using XIM instead. Configure PDCurses with --enable-xim
+to use XIM support.
+
+This document is encoded in UTF-8.
+
++----+-----+---+---------------------------------+---------------------------+
+|Hex | Dec |Chr| Description ISO 10646-1:1993(E) | Compose key combinations |
++----+-----+---+---------------------------------+---------------------------+
+| A0 | 160 | | NO-BREAK SPACE | |
+| A1 | 161 | ¡ | INVERTED EXCLAMATION MARK | ! !! |
+| A2 | 162 | ¢ | CENT SIGN | c| |c c/ c$ C$ C| |
+| A3 | 163 | £ | POUND SIGN | L- L$ L= l- l$ l= |-|
+| A4 | 164 | ¤ | CURRENCY SIGN | xo ox XO g$ |
+| A5 | 165 | ¥ | YEN SIGN | =y y= =Y Y= Y- y$ y-|
+| A6 | 166 | ¦ | BROKEN BAR | | || vb VB |^ |
+| A7 | 167 | § | SECTION SIGN | SO SS s! S! so |
+| A8 | 168 | ¨ | DIAERESIS | " "" |
+| A9 | 169 | © | COPYRIGHT SIGN | CO co OC |
+| AA | 170 | ª | FEMININE ORDINAL INDICATOR | sa SA a_ A_ |
+| AB | 171 | « | LEFT DOUBLE ANGLE QUOTES | << |
+| AC | 172 | ¬ | NOT SIGN | -, no NO |
+| AD | 173 | | SOFT HYPHEN | - -- |
+| AE | 174 | ® | REGISTERED SIGN | RO ro OR |
+| AF | 175 | ¯ | MACRON | -^ _^ __ |
+| B0 | 176 | ° | DEGREE SIGN | o 0^ 0* de DE ^0 |
+| B1 | 177 | ± | PLUS-MINUS SIGN | -+ +- |
+| B2 | 178 | ² | SUPERSCRIPT TWO | 2 2^ s2 ^2 |
+| B3 | 179 | ³ | SUPERSCRIPT THREE | 3 3^ s3 ^3 |
+| B4 | 180 | ´ | ACUTE ACCENT | ' '' |
+| B5 | 181 | µ | MICRO SIGN | u /u /U *m *M |
+| B6 | 182 | ¶ | PILCROW SIGN | p! P! pg PG |
+| B7 | 183 | · | MIDDLE DOT | . .^ .. |
+| B8 | 184 | ¸ | CEDILLA | , ,, |
+| B9 | 185 | ¹ | SUPERSCRIPT ONE | 1 1^ s1 ^1 |
+| BA | 186 | º | MASCULINE ORDINAL INDICATOR | o_ s0 S0 |
+| BB | 187 | » | RIGHT DOUBLE ANGLE QUOTES | >> |
+| BC | 188 | ¼ | VULGAR FRACTION ONE QUARTER | 14 |
+| BD | 189 | ½ | VULGAR FRACTION ONE HALF | 12 |
+| BE | 190 | ¾ | VULGAR FRACTION THREE QUARTERS | 34 |
+| BF | 191 | ¿ | INVERTED QUESTION MARK | ? ?? |
+| C0 | 192 | À | CAPITAL A WITH GRAVE ACCENT | `A A` |
+| C1 | 193 | Á | CAPITAL A WITH ACUTE ACCENT | 'A A' |
+| C2 | 194 | Â | CAPITAL A WITH CIRCUMFLEX ACCENT| ^A A^ A> |
+| C3 | 195 | Ã | CAPITAL A WITH TILDE | ~A A~ A- |
+| C4 | 196 | Ä | CAPITAL A WITH DIAERESIS | "A A" |
+| C5 | 197 | Å | CAPITAL A WITH RING ABOVE | oA Ao A* OA *A |
+| C6 | 198 | Æ | CAPITAL LIGATURE AE | AE |
+| C7 | 199 | Ç | CAPITAL C WITH CEDILLA | ,C C, |
+| C8 | 200 | È | CAPITAL E WITH GRAVE ACCENT | `E E` |
+| C9 | 201 | É | CAPITAL E WITH ACUTE ACCENT | 'E E' |
+| CA | 202 | Ê | CAPITAL E WITH CIRCUMFLEX ACCENT| ^E E^ E> |
+| CB | 203 | Ë | CAPITAL E WITH DIAERESIS | "E E" |
+| CC | 204 | Ì | CAPITAL I WITH GRAVE ACCENT | `I I` |
+| CD | 205 | Í | CAPITAL I WITH ACUTE ACCENT | 'I I' |
+| CE | 206 | Î | CAPITAL I WITH CIRCUMFLEX ACCENT| ^I I^ I> |
+| CF | 207 | Ï | CAPITAL I WITH DIAERESIS | "I I" |
+| D0 | 208 | Ð | CAPITAL ETH | D- |
+| D1 | 209 | Ñ | CAPITAL N WITH TILDE | ~N N~ N- |
+| D2 | 210 | Ò | CAPITAL O WITH GRAVE ACCENT | `O O` |
+| D3 | 211 | Ó | CAPITAL O WITH ACUTE ACCENT | 'O O' |
+| D4 | 212 | Ô | CAPITAL O WITH CIRCUMFLEX ACCENT| ^O O^ O> |
+| D5 | 213 | Õ | CAPITAL O WITH TILDE | ~O O~ O- |
+| D6 | 214 | Ö | CAPITAL O WITH DIAERESIS | "O O" |
+| D7 | 215 | × | MULTIPLICATION SIGN | x xx XX mu MU |
+| D8 | 216 | Ø | CAPITAL O WITH STROKE | /O O/ |
+| D9 | 217 | Ù | CAPITAL U WITH GRAVE ACCENT | `U U` |
+| DA | 218 | Ú | CAPITAL U WITH ACUTE ACCENT | 'U U' |
+| DB | 219 | Û | CAPITAL U WITH CIRCUMFLEX ACCENT| ^U U^ U> |
+| DC | 220 | Ü | CAPITAL U WITH DIAERESIS | "U U" |
+| DD | 221 | Ý | CAPITAL Y WITH ACUTE ACCENT | 'Y Y' |
+| DE | 222 | Þ | CAPITAL THORN | P TH |P |
+| DF | 223 | ß | SMALL SHARP S | ss |
+| E0 | 224 | à | SMALL A WITH GRAVE ACCENT | `a a` |
+| E1 | 225 | á | SMALL A WITH ACUTE ACCENT | 'a a' |
+| E2 | 226 | â | SMALL A WITH CIRCUMFLEX ACCENT | ^a a^ a> |
+| E3 | 227 | ã | SMALL A WITH TILDE | ~a a~ a- |
+| E4 | 228 | ä | SMALL A WITH DIAERESIS | "a a" |
+| E5 | 229 | å | SMALL A WITH RING ABOVE | oa ao Oa a* *a |
+| E6 | 230 | æ | SMALL LIGATURE AE | ae |
+| E7 | 231 | ç | SMALL C WITH CEDILLA | ,c c, |
+| E8 | 232 | è | SMALL E WITH GRAVE ACCENT | `e e` |
+| E9 | 233 | é | SMALL E WITH ACUTE ACCENT | 'e e' |
+| EA | 234 | ê | SMALL E WITH CIRCUMFLEX ACCENT | ^e e^ e> |
+| EB | 235 | ë | SMALL E WITH DIAERESIS | "e e" |
+| EC | 236 | ì | SMALL I WITH GRAVE ACCENT | `i i` |
+| ED | 237 | í | SMALL I WITH ACUTE ACCENT | 'i i' |
+| EE | 238 | î | SMALL I WITH CIRCUMFLEX ACCENT | ^i i^ i> |
+| EF | 239 | ï | SMALL I WITH DIAERESIS | "i i" |
+| F0 | 240 | ð | SMALL ETH | d- |
+| F1 | 241 | ñ | SMALL N WITH TILDE | ~n n~ n- |
+| F2 | 242 | ò | SMALL O WITH GRAVE ACCENT | `o o` |
+| F3 | 243 | ó | SMALL O WITH ACUTE ACCENT | 'o o' |
+| F4 | 244 | ô | SMALL O WITH CIRCUMFLEX ACCENT | ^o o^ o> |
+| F5 | 245 | õ | SMALL O WITH TILDE | ~o o~ o- |
+| F6 | 246 | ö | SMALL O WITH DIAERESIS | "o o" |
+| F7 | 247 | ÷ | DIVISION SIGN | -: :- |
+| F8 | 248 | ø | SMALL O WITH OBLIQUE BAR | /o o/ |
+| F9 | 249 | ù | SMALL U WITH GRAVE ACCENT | `u u` |
+| FA | 250 | ú | SMALL U WITH ACUTE ACCENT | 'u u' |
+| FB | 251 | û | SMALL U WITH CIRCUMFLEX ACCENT | ^u u^ u> |
+| FC | 252 | ü | SMALL U WITH DIAERESIS | "u u" |
+| FD | 253 | ý | SMALL Y WITH ACUTE ACCENT | 'y y' |
+| FE | 254 | þ | SMALL THORN | p th |p |
+| FF | 255 | ÿ | SMALL Y WITH DIAERESIS | "y y" |
++----+-----+---+---------------------------------+---------------------------+
+
+
+Deprecated
+----------
+
+XCursesProgramName is no longer used. To set the program name, you must
+use Xinitscr(), or PDC_set_title() to set just the window title.
+
+The XCursesExit() function is now called automatically via atexit().
+(Multiple calls to it are OK, so you don't need to remove it if you've
+already added it for previous versions of PDCurses.)
+
+XCURSES is no longer defined automatically, but need not be defined,
+unless you want the X11-specific prototypes. (Normal curses programs
+won't need it.)
diff --git a/payloads/libpayload/curses/PDCurses/dos/README b/payloads/libpayload/curses/PDCurses/dos/README
new file mode 100644
index 0000000..569034b
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/README
@@ -0,0 +1,49 @@
+PDCurses for DOS
+================
+
+This directory contains PDCurses source code files specific to DOS.
+
+
+Building
+--------
+
+. Choose the appropriate makefile for your compiler:
+
+ bccdos.mak - Borland C++ 3.0+
+ gccdos.mak - DJGPP V2
+ mscdos.mak - Microsoft C
+ wccdos16.mak - Watcom 10.6+ (16-bit)
+ wccdos4g.mak - Watcom 10.6+ (32-bit)
+
+. For 16-bit compilers, you can change the memory MODEL in the makefile.
+ (Large model is the default, and recommended.)
+
+. Optionally, you can build in a different directory than the platform
+ directory by setting PDCURSES_SRCDIR to point to the directory where
+ you unpacked PDCurses, and changing to your target directory:
+
+ set PDCURSES_SRCDIR=c:\pdcurses
+
+. Build it:
+
+ make -f makefile
+
+ (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll
+ get the libraries (pdcurses.lib or .a, depending on your compiler; and
+ panel.lib or .a), the demos (*.exe), and a lot of object files. Note
+ that the panel library is just a copy of the main library, provided
+ for convenience; both panel and curses functions are in the main
+ library.
+
+
+Distribution Status
+-------------------
+
+The files in this directory are released to the Public Domain.
+
+
+Acknowledgements
+----------------
+
+Watcom C port was provided by Pieter Kunst <kunst at prl.philips.nl>
+DJGPP 1.x port was provided by David Nugent <davidn at csource.oz.au>
diff --git a/payloads/libpayload/curses/PDCurses/dos/bccdos.lrf b/payloads/libpayload/curses/PDCurses/dos/bccdos.lrf
new file mode 100644
index 0000000..9bd18c6
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/bccdos.lrf
@@ -0,0 +1,9 @@
++addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj &
++border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj &
++getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj &
++inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj &
++mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj &
++printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj &
++termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj &
++pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj &
++pdcsetsc.obj +pdcutil.obj ,lib.map
diff --git a/payloads/libpayload/curses/PDCurses/dos/bccdos.mak b/payloads/libpayload/curses/PDCurses/dos/bccdos.mak
new file mode 100644
index 0000000..6361a4d
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/bccdos.mak
@@ -0,0 +1,82 @@
+# Borland MAKE Makefile for PDCurses library - DOS BC++ 3.0+
+#
+# Usage: make -f [path\]bccdos.mak [DEBUG=] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+# Change the memory MODEL here, if desired
+MODEL = l
+
+O = obj
+
+!ifndef PDCURSES_SRCDIR
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+!include $(PDCURSES_SRCDIR)\libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)\dos
+
+!ifdef DEBUG
+CFLAGS = -N -v -y -DPDCDEBUG
+!else
+CFLAGS = -O
+!endif
+
+CPPFLAGS = -I$(PDCURSES_SRCDIR)
+
+BUILD = $(CC) -1- -K -G -rd -d -w-eff -w-par -c \
+-m$(MODEL) $(CFLAGS) $(CPPFLAGS)
+
+LIBEXE = tlib /C /E
+
+LIBCURSES = pdcurses.lib
+
+all: $(LIBCURSES) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.map
+ -del *.exe
+
+demos: $(DEMOS)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ -del $@
+ $(LIBEXE) $@ @$(osdir)\bccdos.lrf
+ -copy $(LIBCURSES) panel.lib
+
+.autodepend
+
+{$(srcdir)\}.c.obj:
+ $(BUILD) $<
+
+{$(osdir)\}.c.obj:
+ $(BUILD) $<
+
+{$(demodir)\}.c.obj:
+ $(BUILD) $<
+
+.c.obj:
+ $(BUILD) $<
+
+.obj.exe:
+ $(CC) -m$(MODEL) -e$@ $** $(LIBCURSES)
+
+tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
+ $(CC) -m$(MODEL) -e$@ $**
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
+ $(BUILD) -I$(demodir) $(demodir)\tui.c
+
+tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
+ $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
+
+PLATFORM1 = Borland C++ 3.1
+PLATFORM2 = Borland C/C++ 3.1 for DOS
+ARCNAME = pdc$(VER)bcc
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/dos/gccdos.mak b/payloads/libpayload/curses/PDCurses/dos/gccdos.mak
new file mode 100644
index 0000000..26a4ed3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/gccdos.mak
@@ -0,0 +1,87 @@
+# GNU MAKE (3.79.1) Makefile for PDCurses library - DOS DJGPP V2.0+
+#
+# Usage: make -f [path\]gccdos.mak [DEBUG=Y] [target]
+#
+# where target can be any of:
+# [all|libs|demos|dist|pdcurses.a|testcurs.exe...]
+
+O = o
+
+ifndef PDCURSES_SRCDIR
+ PDCURSES_SRCDIR = ..
+endif
+
+include $(PDCURSES_SRCDIR)/version.mif
+include $(PDCURSES_SRCDIR)/libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)/dos
+
+PDCURSES_DOS_H = $(osdir)/pdcdos.h
+
+CC = gcc
+
+ifeq ($(DEBUG),Y)
+ CFLAGS = -g -Wall -DPDCDEBUG
+ LDFLAGS = -g
+else
+ CFLAGS = -O2 -Wall
+ LDFLAGS =
+endif
+
+CFLAGS += -I$(PDCURSES_SRCDIR)
+
+LINK = gcc
+
+LIBEXE = ar
+LIBFLAGS = rcv
+
+LIBCURSES = pdcurses.a
+
+.PHONY: all libs clean demos dist
+
+all: libs demos
+
+libs: $(LIBCURSES)
+
+clean:
+ -del *.o
+ -del *.a
+ -del *.exe
+
+demos: $(DEMOS)
+ strip *.exe
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $(LIBFLAGS) $@ $?
+ -copy $(LIBCURSES) panel.a
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_DOS_H)
+$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
+panel.o : $(PANEL_HEADER)
+terminfo.o: $(TERM_HEADER)
+
+$(LIBOBJS) : %.o: $(srcdir)/%.c
+ $(CC) -c $(CFLAGS) $<
+
+$(PDCOBJS) : %.o: $(osdir)/%.c
+ $(CC) -c $(CFLAGS) $<
+
+firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
+ptest.exe: %.exe: $(demodir)/%.c
+ $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES)
+
+tuidemo.exe: tuidemo.o tui.o
+ $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES)
+
+tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H)
+ $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
+
+tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H)
+ $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
+
+PLATFORM1 = DJGPP 2.03
+PLATFORM2 = DJGPP 2.03 for DOS
+ARCNAME = pdc$(VER)djg
+
+include $(PDCURSES_SRCDIR)/makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/dos/mscdos.lrf b/payloads/libpayload/curses/PDCurses/dos/mscdos.lrf
new file mode 100644
index 0000000..b1fdf37
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/mscdos.lrf
@@ -0,0 +1,50 @@
+-+addch.obj &
+-+addchstr.obj &
+-+addstr.obj &
+-+attr.obj &
+-+beep.obj &
+-+bkgd.obj &
+-+border.obj &
+-+clear.obj &
+-+color.obj &
+-+delch.obj &
+-+deleteln.obj &
+-+deprec.obj &
+-+getch.obj &
+-+getstr.obj &
+-+getyx.obj &
+-+inch.obj &
+-+inchstr.obj &
+-+initscr.obj &
+-+inopts.obj &
+-+insch.obj &
+-+insstr.obj &
+-+instr.obj &
+-+kernel.obj &
+-+keyname.obj &
+-+mouse.obj &
+-+move.obj &
+-+outopts.obj &
+-+overlay.obj &
+-+pad.obj &
+-+panel.obj &
+-+printw.obj &
+-+refresh.obj &
+-+scanw.obj &
+-+scr_dump.obj &
+-+scroll.obj &
+-+slk.obj &
+-+termattr.obj &
+-+terminfo.obj &
+-+touch.obj &
+-+util.obj &
+-+window.obj &
+-+debug.obj &
+-+pdcclip.obj &
+-+pdcdisp.obj &
+-+pdcgetsc.obj &
+-+pdckbd.obj &
+-+pdcscrn.obj &
+-+pdcsetsc.obj &
+-+pdcutil.obj &
+,lib.map;
diff --git a/payloads/libpayload/curses/PDCurses/dos/mscdos.mak b/payloads/libpayload/curses/PDCurses/dos/mscdos.mak
new file mode 100644
index 0000000..7aa6c5f
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/mscdos.mak
@@ -0,0 +1,114 @@
+# NMAKE Makefile for PDCurses library - Microsoft C for DOS
+#
+# Usage: nmake -f [path\]dosmsc.mak [DEBUG=] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+# Change the memory MODEL here, if desired
+MODEL = L # one of L, S, M, T, H, C
+SIZE = LARGE # one of LARGE, SMALL, MEDIUM, TINY, HUGE, COMPACT
+
+O = obj
+
+!ifndef PDCURSES_SRCDIR
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+!include $(PDCURSES_SRCDIR)\libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)\dos
+
+PDCURSES_DOS_H = $(osdir)\pdcdos.h
+
+CC = cl
+
+!ifdef DEBUG
+CFLAGS = /Od /Zi /DPDCDEBUG
+LDFLAGS = /CO /NOE /SE:160
+!else
+CFLAGS = /Ox
+LDFLAGS = /NOE /SE:160
+!endif
+
+CPPFLAGS = -I$(PDCURSES_SRCDIR)
+
+BUILD = $(CC) /J /nologo /c /D$(SIZE) /A$(MODEL) $(CFLAGS) $(CPPFLAGS)
+
+LINK = link
+
+CCLIBS =
+
+LIBEXE = lib
+
+LIBCURSES = pdcurses.lib
+
+all: $(LIBCURSES) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.exe
+
+demos: $(DEMOS)
+
+DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(DEMOOBJS) : $(PDCURSES_CURSES_H)
+$(DEMOS) : $(LIBCURSES)
+panel.obj : $(PANEL_HEADER)
+terminfo.obj: $(TERM_HEADER)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $@ @$(osdir)\mscdos.lrf
+ -copy $(LIBCURSES) panel.lib
+
+{$(srcdir)\}.c{}.obj:
+ $(BUILD) $<
+
+{$(osdir)\}.c{}.obj:
+ $(BUILD) $<
+
+{$(demodir)\}.c{}.obj:
+ $(BUILD) $<
+
+firework.exe: firework.obj
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+newdemo.exe: newdemo.obj
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+ptest.exe: ptest.obj
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+rain.exe: rain.obj
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+testcurs.exe: testcurs.obj
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+tuidemo.exe: tuidemo.obj tui.obj
+ $(LINK) $(LDFLAGS) $*.obj+tui.obj,$*,,$(LIBCURSES);
+
+worm.exe: worm.obj
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+xmas.exe: xmas.obj
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+ptest.obj: $(demodir)\ptest.c $(PANEL_HEADER)
+ $(BUILD) $(demodir)\ptest.c
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h
+ $(BUILD) -I$(demodir) $(demodir)\tui.c
+
+tuidemo.obj: $(demodir)\tuidemo.c
+ $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
+
+PLATFORM1 = Microsoft C
+PLATFORM2 = Microsoft C for DOS
+ARCNAME = pdc$(VER)msc
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcclip.c b/payloads/libpayload/curses/PDCurses/dos/pdcclip.c
new file mode 100644
index 0000000..c5fa291
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdcclip.c
@@ -0,0 +1,129 @@
+/* Public Domain Curses */
+
+#include "pdcdos.h"
+
+RCSID("$Id: pdcclip.c,v 1.33 2008/07/13 16:08:17 wmcbrine Exp $")
+
+#include <stdlib.h>
+
+/*man-start**************************************************************
+
+ Name: clipboard
+
+ Synopsis:
+ int PDC_getclipboard(char **contents, long *length);
+ int PDC_setclipboard(const char *contents, long length);
+ int PDC_freeclipboard(char *contents);
+ int PDC_clearclipboard(void);
+
+ Description:
+ PDC_getclipboard() gets the textual contents of the system's
+ clipboard. This function returns the contents of the clipboard
+ in the contents argument. It is the responsibilitiy of the
+ caller to free the memory returned, via PDC_freeclipboard().
+ The length of the clipboard contents is returned in the length
+ argument.
+
+ PDC_setclipboard copies the supplied text into the system's
+ clipboard, emptying the clipboard prior to the copy.
+
+ PDC_clearclipboard() clears the internal clipboard.
+
+ Return Values:
+ indicator of success/failure of call.
+ PDC_CLIP_SUCCESS the call was successful
+ PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
+ the clipboard contents
+ PDC_CLIP_EMPTY the clipboard contains no text
+ PDC_CLIP_ACCESS_ERROR no clipboard support
+
+ Portability X/Open BSD SYS V
+ PDC_getclipboard - - -
+ PDC_setclipboard - - -
+ PDC_freeclipboard - - -
+ PDC_clearclipboard - - -
+
+**man-end****************************************************************/
+
+/* global clipboard contents, should be NULL if none set */
+
+static char *pdc_DOS_clipboard = NULL;
+
+int PDC_getclipboard(char **contents, long *length)
+{
+ int len;
+
+ PDC_LOG(("PDC_getclipboard() - called\n"));
+
+ if (!pdc_DOS_clipboard)
+ return PDC_CLIP_EMPTY;
+
+ len = strlen(pdc_DOS_clipboard);
+ if ((*contents = malloc(len + 1)) == NULL)
+ return PDC_CLIP_MEMORY_ERROR;
+
+ strcpy(*contents, pdc_DOS_clipboard);
+ *length = len;
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_setclipboard(const char *contents, long length)
+{
+ PDC_LOG(("PDC_setclipboard() - called\n"));
+
+ if (pdc_DOS_clipboard)
+ {
+ free(pdc_DOS_clipboard);
+ pdc_DOS_clipboard = NULL;
+ }
+
+ if (contents)
+ {
+ if ((pdc_DOS_clipboard = malloc(length + 1)) == NULL)
+ return PDC_CLIP_MEMORY_ERROR;
+
+ strcpy(pdc_DOS_clipboard, contents);
+ }
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_freeclipboard(char *contents)
+{
+ PDC_LOG(("PDC_freeclipboard() - called\n"));
+
+ /* should we also free empty the system clipboard? probably not */
+
+ if (contents)
+ {
+
+ /* NOTE: We free the memory, but we can not set caller's pointer
+ to NULL, so if caller calls again then will try to access
+ free'd memory. We 1st overwrite memory with a string so if
+ caller tries to use free memory they won't get what they
+ expect & hopefully notice. */
+
+ /* memset(contents, 0xFD, strlen(contents)); */
+
+ if (strlen(contents) >= strlen("PDCURSES"))
+ strcpy(contents, "PDCURSES");
+
+ free(contents);
+ }
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_clearclipboard(void)
+{
+ PDC_LOG(("PDC_clearclipboard() - called\n"));
+
+ if (pdc_DOS_clipboard)
+ {
+ free(pdc_DOS_clipboard);
+ pdc_DOS_clipboard = NULL;
+ }
+
+ return PDC_CLIP_SUCCESS;
+}
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcdisp.c b/payloads/libpayload/curses/PDCurses/dos/pdcdisp.c
new file mode 100644
index 0000000..d170cb1
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdcdisp.c
@@ -0,0 +1,158 @@
+/* Public Domain Curses */
+
+#include "pdcdos.h"
+
+RCSID("$Id: pdcdisp.c,v 1.65 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/* ACS definitions originally by jshumate at wrdis01.robins.af.mil -- these
+ match code page 437 and compatible pages (CP850, CP852, etc.) */
+
+#ifdef CHTYPE_LONG
+
+# define A(x) ((chtype)x | A_ALTCHARSET)
+
+chtype acs_map[128] =
+{
+ A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10),
+ A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18), A(19),
+ A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27), A(28),
+ A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&', '\'', '(',
+ ')', '*',
+
+ A(0x1a), A(0x1b), A(0x18), A(0x19),
+
+ '/',
+
+ 0xdb,
+
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
+ '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
+
+ A(0x04), 0xb1,
+
+ 'b', 'c', 'd', 'e',
+
+ 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d, 0x2d,
+ 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3, 0xf2, 0xe3,
+ 0xd8, 0x9c, 0xf9,
+
+ A(127)
+};
+
+# undef A
+
+#endif
+
+#ifdef __PACIFIC__
+void movedata(unsigned sseg, unsigned soff, unsigned dseg,
+ unsigned doff, unsigned n)
+{
+ far char *src = MK_FP(sseg, soff);
+ far char *dst = MK_FP(dseg, doff);
+
+ while (n--)
+ *dst++ = *src++;
+}
+#endif
+
+/* position hardware cursor at (y, x) */
+
+void PDC_gotoyx(int row, int col)
+{
+ PDCREGS regs;
+
+ PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
+
+ regs.h.ah = 0x02;
+ regs.h.bh = 0;
+ regs.h.dh = (unsigned char) row;
+ regs.h.dl = (unsigned char) col;
+ PDCINT(0x10, regs);
+}
+
+/* update the given physical line to look like the corresponding line in
+ curscr */
+
+void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
+{
+ int j;
+
+ PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
+
+ if (pdc_direct_video)
+ {
+#if SMALL || MEDIUM
+# ifndef __PACIFIC__
+ struct SREGS segregs;
+# endif
+ int ds;
+#endif
+ /* this should be enough for the maximum width of a screen */
+
+ struct {unsigned char text, attr;} temp_line[256];
+
+ /* replace the attribute part of the chtype with the actual
+ color value for each chtype in the line */
+
+ for (j = 0; j < len; j++)
+ {
+ chtype ch = srcp[j];
+
+ temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
+#ifdef CHTYPE_LONG
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
+ ch = acs_map[ch & 0x7f];
+#endif
+ temp_line[j].text = ch & 0xff;
+ }
+
+#ifdef __DJGPP__
+ dosmemput(temp_line, len * 2,
+ (unsigned long)_FAR_POINTER(pdc_video_seg,
+ pdc_video_ofs + (lineno * curscr->_maxx + x) * 2));
+#else
+# if SMALL || MEDIUM
+# ifdef __PACIFIC__
+ ds = FP_SEG((void far *) temp_line);
+# else
+ segread(&segregs);
+ ds = segregs.ds;
+# endif
+ movedata(ds, (int)temp_line, pdc_video_seg,
+ pdc_video_ofs + (lineno * curscr->_maxx + x) * 2, len * 2);
+# else
+ memcpy((void *)_FAR_POINTER(pdc_video_seg,
+ pdc_video_ofs + (lineno * curscr->_maxx + x) * 2),
+ temp_line, len * 2);
+# endif
+#endif
+
+ }
+ else
+ for (j = 0; j < len;)
+ {
+ PDCREGS regs;
+ unsigned short count = 1;
+ chtype ch = srcp[j];
+
+ while ((j + count < len) && (ch == srcp[j + count]))
+ count++;
+
+ PDC_gotoyx(lineno, j + x);
+
+ regs.h.ah = 0x09;
+ regs.W.bx = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
+ regs.W.cx = count;
+#ifdef CHTYPE_LONG
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
+ ch = acs_map[ch & 0x7f];
+#endif
+ regs.h.al = (unsigned char) (ch & 0xff);
+
+ PDCINT(0x10, regs);
+
+ j += count;
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcdos.h b/payloads/libpayload/curses/PDCurses/dos/pdcdos.h
new file mode 100644
index 0000000..99b0368
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdcdos.h
@@ -0,0 +1,186 @@
+/* Public Domain Curses */
+
+/* $Id: pdcdos.h,v 1.30 2008/07/13 16:08:17 wmcbrine Exp $ */
+
+#include <curspriv.h>
+#include <string.h>
+
+#if defined(_MSC_VER) || defined(_QC)
+# define MSC 1
+#endif
+
+#if defined(__PACIFIC__) && !defined(__SMALL__)
+# define __SMALL__
+#endif
+
+#if defined(__HIGHC__) || MSC
+# include <bios.h>
+#endif
+
+/*----------------------------------------------------------------------
+ * MEMORY MODEL SUPPORT:
+ *
+ * MODELS
+ * TINY cs,ds,ss all in 1 segment (not enough memory!)
+ * SMALL cs:1 segment, ds:1 segment
+ * MEDIUM cs:many segments, ds:1 segment
+ * COMPACT cs:1 segment, ds:many segments
+ * LARGE cs:many segments, ds:many segments
+ * HUGE cs:many segments, ds:segments > 64K
+ */
+
+#ifdef __TINY__
+# define SMALL 1
+#endif
+#ifdef __SMALL__
+# define SMALL 1
+#endif
+#ifdef __MEDIUM__
+# define MEDIUM 1
+#endif
+#ifdef __COMPACT__
+# define COMPACT 1
+#endif
+#ifdef __LARGE__
+# define LARGE 1
+#endif
+#ifdef __HUGE__
+# define HUGE 1
+#endif
+
+#include <dos.h>
+
+extern unsigned char *pdc_atrtab;
+extern int pdc_adapter;
+extern int pdc_scrnmode;
+extern int pdc_font;
+extern bool pdc_direct_video;
+extern bool pdc_bogus_adapter;
+extern unsigned pdc_video_seg;
+extern unsigned pdc_video_ofs;
+
+#ifdef __DJGPP__ /* Note: works only in plain DOS... */
+# if DJGPP == 2
+# define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o)))
+# else
+# define _FAR_POINTER(s,o) (0xe0000000 + (((int)(s)) << 4) + ((int)(o)))
+# endif
+# define _FP_SEGMENT(p) (unsigned short)((((long)p) >> 4) & 0xffff)
+#else
+# ifdef __TURBOC__
+# define _FAR_POINTER(s,o) MK_FP(s,o)
+# else
+# if defined(__WATCOMC__) && defined(__FLAT__)
+# define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o)))
+# else
+# define _FAR_POINTER(s,o) (((long)s << 16) | (long)o)
+# endif
+# endif
+# define _FP_SEGMENT(p) (unsigned short)(((long)p) >> 4)
+#endif
+#define _FP_OFFSET(p) ((unsigned short)p & 0x000f)
+
+#ifdef __DJGPP__
+# include <sys/movedata.h>
+unsigned char getdosmembyte(int offs);
+unsigned short getdosmemword(int offs);
+unsigned long getdosmemdword(int offs);
+void setdosmembyte(int offs, unsigned char b);
+void setdosmemword(int offs, unsigned short w);
+#else
+# if SMALL || MEDIUM || MSC
+# define PDC_FAR far
+# else
+# define PDC_FAR
+# endif
+# define getdosmembyte(offs) \
+ (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs)))
+# define getdosmemword(offs) \
+ (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs)))
+# define getdosmemdword(offs) \
+ (*((unsigned long PDC_FAR *) _FAR_POINTER(0,offs)))
+# define setdosmembyte(offs,x) \
+ (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs)) = (x))
+# define setdosmemword(offs,x) \
+ (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs)) = (x))
+#endif
+
+#if defined(__WATCOMC__) && defined(__386__)
+
+typedef union
+{
+ struct
+ {
+ unsigned long edi, esi, ebp, res, ebx, edx, ecx, eax;
+ } d;
+
+ struct
+ {
+ unsigned short di, di_hi, si, si_hi, bp, bp_hi, res, res_hi,
+ bx, bx_hi, dx, dx_hi, cx, cx_hi, ax, ax_hi,
+ flags, es, ds, fs, gs, ip, cs, sp, ss;
+ } w;
+
+ struct
+ {
+ unsigned char edi[4], esi[4], ebp[4], res[4],
+ bl, bh, ebx_b2, ebx_b3, dl, dh, edx_b2, edx_b3,
+ cl, ch, ecx_b2, ecx_b3, al, ah, eax_b2, eax_b3;
+ } h;
+} pdc_dpmi_regs;
+
+void PDC_dpmi_int(int, pdc_dpmi_regs *);
+
+#endif
+
+#ifdef __DJGPP__
+# include <dpmi.h>
+# define PDCREGS __dpmi_regs
+# define PDCINT(vector, regs) __dpmi_int(vector, ®s)
+#else
+# ifdef __WATCOMC__
+# ifdef __386__
+# define PDCREGS pdc_dpmi_regs
+# define PDCINT(vector, regs) PDC_dpmi_int(vector, ®s)
+# else
+# define PDCREGS union REGPACK
+# define PDCINT(vector, regs) intr(vector, ®s)
+# endif
+# else
+# define PDCREGS union REGS
+# define PDCINT(vector, regs) int86(vector, ®s, ®s)
+# endif
+#endif
+
+/* Wide registers in REGS: w or x? */
+
+#ifdef __WATCOMC__
+# define W w
+#else
+# define W x
+#endif
+
+/* Monitor (terminal) type information */
+
+enum
+{
+ _NONE, _MDA, _CGA,
+ _EGACOLOR = 0x04, _EGAMONO,
+ _VGACOLOR = 0x07, _VGAMONO,
+ _MCGACOLOR = 0x0a, _MCGAMONO,
+ _MDS_GENIUS = 0x30
+};
+
+/* Text-mode font size information */
+
+enum
+{
+ _FONT8 = 8,
+ _FONT14 = 14,
+ _FONT15, /* GENIUS */
+ _FONT16
+};
+
+#ifdef __PACIFIC__
+void movedata(unsigned, unsigned, unsigned, unsigned, unsigned);
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c b/payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c
new file mode 100644
index 0000000..290db5a
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c
@@ -0,0 +1,100 @@
+/* Public Domain Curses */
+
+#include "pdcdos.h"
+
+RCSID("$Id: pdcgetsc.c,v 1.42 2008/07/13 16:08:17 wmcbrine Exp $")
+
+#include <stdlib.h>
+
+/* return width of screen/viewport */
+
+int PDC_get_columns(void)
+{
+ PDCREGS regs;
+ int cols;
+ const char *env_cols;
+
+ PDC_LOG(("PDC_get_columns() - called\n"));
+
+ /* use the value from COLS environment variable, if set. MH 10-Jun-92 */
+ /* and use the minimum of COLS and return from int10h MH 18-Jun-92 */
+
+ regs.h.ah = 0x0f;
+ PDCINT(0x10, regs);
+ cols = (int)regs.h.ah;
+
+ env_cols = getenv("COLS");
+
+ if (env_cols)
+ cols = min(atoi(env_cols), cols);
+
+ PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols));
+
+ return cols;
+}
+
+/* get the cursor size/shape */
+
+int PDC_get_cursor_mode(void)
+{
+ PDC_LOG(("PDC_get_cursor_mode() - called\n"));
+
+ return getdosmemword(0x460);
+}
+
+/* return number of screen rows */
+
+int PDC_get_rows(void)
+{
+ const char *env_rows;
+ int rows;
+
+ PDC_LOG(("PDC_get_rows() - called\n"));
+
+ /* use the value from LINES environment variable, if set. MH 10-Jun-92 */
+ /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */
+
+ rows = getdosmembyte(0x484) + 1;
+ env_rows = getenv("LINES");
+
+ if (env_rows)
+ rows = min(atoi(env_rows), rows);
+
+ if (rows == 1 && pdc_adapter == _MDS_GENIUS)
+ rows = 66;
+ if (rows == 1 && pdc_adapter == _MDA)
+ rows = 25;
+
+ if (rows == 1)
+ {
+ rows = 25;
+ pdc_direct_video = FALSE;
+ }
+
+ switch (pdc_adapter)
+ {
+ case _EGACOLOR:
+ case _EGAMONO:
+ switch (rows)
+ {
+ case 25:
+ case 43:
+ break;
+ default:
+ rows = 25;
+ }
+ break;
+
+ case _VGACOLOR:
+ case _VGAMONO:
+ break;
+
+ default:
+ rows = 25;
+ break;
+ }
+
+ PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows));
+
+ return rows;
+}
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdckbd.c b/payloads/libpayload/curses/PDCurses/dos/pdckbd.c
new file mode 100644
index 0000000..c44393f
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdckbd.c
@@ -0,0 +1,511 @@
+/* Public Domain Curses */
+
+/* MS C doesn't return flags from int86() */
+#ifdef MSC
+# define USE_KBHIT
+#endif
+
+#ifdef USE_KBHIT
+# include <conio.h>
+#endif
+
+#include "pdcdos.h"
+
+RCSID("$Id: pdckbd.c,v 1.87 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdckbd
+
+ Synopsis:
+ unsigned long PDC_get_input_fd(void);
+
+ Description:
+ PDC_get_input_fd() returns the file descriptor that PDCurses
+ reads its input from. It can be used for select().
+
+ Portability X/Open BSD SYS V
+ PDC_get_input_fd - - -
+
+**man-end****************************************************************/
+
+#ifdef __DJGPP__
+# include <fcntl.h>
+# include <io.h>
+# include <signal.h>
+#endif
+
+/************************************************************************
+ * Table for key code translation of function keys in keypad mode *
+ * These values are for strict IBM keyboard compatibles only *
+ ************************************************************************/
+
+static short key_table[] =
+{
+ -1, ALT_ESC, -1, 0,
+ -1, -1, -1, -1,
+ -1, -1, -1, -1,
+ -1, -1, ALT_BKSP, KEY_BTAB,
+ ALT_Q, ALT_W, ALT_E, ALT_R,
+ ALT_T, ALT_Y, ALT_U, ALT_I,
+ ALT_O, ALT_P, ALT_LBRACKET, ALT_RBRACKET,
+ ALT_ENTER, -1, ALT_A, ALT_S,
+ ALT_D, ALT_F, ALT_G, ALT_H,
+ ALT_J, ALT_K, ALT_L, ALT_SEMICOLON,
+ ALT_FQUOTE, ALT_BQUOTE, -1, ALT_BSLASH,
+ ALT_Z, ALT_X, ALT_C, ALT_V,
+ ALT_B, ALT_N, ALT_M, ALT_COMMA,
+ ALT_STOP, ALT_FSLASH, -1, ALT_PADSTAR,
+ -1, -1, -1, KEY_F(1),
+ KEY_F(2), KEY_F(3), KEY_F(4), KEY_F(5),
+ KEY_F(6), KEY_F(7), KEY_F(8), KEY_F(9),
+ KEY_F(10), -1, -1, KEY_HOME,
+ KEY_UP, KEY_PPAGE, ALT_PADMINUS, KEY_LEFT,
+ KEY_B2, KEY_RIGHT, ALT_PADPLUS, KEY_END,
+ KEY_DOWN, KEY_NPAGE, KEY_IC, KEY_DC,
+ KEY_F(13), KEY_F(14), KEY_F(15), KEY_F(16),
+ KEY_F(17), KEY_F(18), KEY_F(19), KEY_F(20),
+ KEY_F(21), KEY_F(22), KEY_F(25), KEY_F(26),
+ KEY_F(27), KEY_F(28), KEY_F(29), KEY_F(30),
+ KEY_F(31), KEY_F(32), KEY_F(33), KEY_F(34),
+ KEY_F(37), KEY_F(38), KEY_F(39), KEY_F(40),
+ KEY_F(41), KEY_F(42), KEY_F(43), KEY_F(44),
+ KEY_F(45), KEY_F(46), -1, CTL_LEFT,
+ CTL_RIGHT, CTL_END, CTL_PGDN, CTL_HOME,
+ ALT_1, ALT_2, ALT_3, ALT_4,
+ ALT_5, ALT_6, ALT_7, ALT_8,
+ ALT_9, ALT_0, ALT_MINUS, ALT_EQUAL,
+ CTL_PGUP, KEY_F(11), KEY_F(12), KEY_F(23),
+ KEY_F(24), KEY_F(35), KEY_F(36), KEY_F(47),
+ KEY_F(48), CTL_UP, CTL_PADMINUS, CTL_PADCENTER,
+ CTL_PADPLUS, CTL_DOWN, CTL_INS, CTL_DEL,
+ CTL_TAB, CTL_PADSLASH, CTL_PADSTAR, ALT_HOME,
+ ALT_UP, ALT_PGUP, -1, ALT_LEFT,
+ -1, ALT_RIGHT, -1, ALT_END,
+ ALT_DOWN, ALT_PGDN, ALT_INS, ALT_DEL,
+ ALT_PADSLASH, ALT_TAB, ALT_PADENTER, -1
+};
+
+unsigned long pdc_key_modifiers = 0L;
+
+static struct {unsigned short pressed, released;} button[3];
+
+static bool mouse_avail = FALSE, mouse_vis = FALSE, mouse_moved = FALSE,
+ mouse_button = FALSE, key_pressed = FALSE;
+
+static unsigned char mouse_scroll = 0;
+static PDCREGS ms_regs, old_ms;
+static unsigned short shift_status, old_shift = 0;
+static unsigned char keyboard_function = 0xff, shift_function = 0xff,
+ check_function = 0xff;
+
+static const unsigned short button_map[3] = {0, 2, 1};
+
+unsigned long PDC_get_input_fd(void)
+{
+ PDC_LOG(("PDC_get_input_fd() - called\n"));
+
+ return (unsigned long)fileno(stdin);
+}
+
+void PDC_set_keyboard_binary(bool on)
+{
+ PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
+
+#ifdef __DJGPP__
+ setmode(fileno(stdin), on ? O_BINARY : O_TEXT);
+ signal(SIGINT, on ? SIG_IGN : SIG_DFL);
+#endif
+}
+
+/* check if a key or mouse event is waiting */
+
+bool PDC_check_key(void)
+{
+ PDCREGS regs;
+
+ if (shift_function == 0xff)
+ {
+ int scan;
+
+ /* get shift status for all keyboards */
+
+ regs.h.ah = 0x02;
+ PDCINT(0x16, regs);
+ scan = regs.h.al;
+
+ /* get shift status for enhanced keyboards */
+
+ regs.h.ah = 0x12;
+ PDCINT(0x16, regs);
+
+ if (scan == regs.h.al && getdosmembyte(0x496) == 0x10)
+ {
+ keyboard_function = 0x10;
+ check_function = 0x11;
+ shift_function = 0x12;
+ }
+ else
+ {
+ keyboard_function = 0;
+ check_function = 1;
+ shift_function = 2;
+ }
+ }
+
+ regs.h.ah = shift_function;
+ PDCINT(0x16, regs);
+
+ shift_status = regs.W.ax;
+
+ if (mouse_vis)
+ {
+ unsigned short i;
+
+ ms_regs.W.ax = 3;
+ PDCINT(0x33, ms_regs);
+
+ mouse_button = FALSE;
+
+ for (i = 0; i < 3; i++)
+ {
+ regs.W.ax = 6;
+ regs.W.bx = button_map[i];
+ PDCINT(0x33, regs);
+ button[i].released = regs.W.bx;
+ if (regs.W.bx)
+ {
+ ms_regs.W.cx = regs.W.cx;
+ ms_regs.W.dx = regs.W.dx;
+ mouse_button = TRUE;
+ }
+
+ regs.W.ax = 5;
+ regs.W.bx = button_map[i];
+ PDCINT(0x33, regs);
+ button[i].pressed = regs.W.bx;
+ if (regs.W.bx)
+ {
+ ms_regs.W.cx = regs.W.cx;
+ ms_regs.W.dx = regs.W.dx;
+ mouse_button = TRUE;
+ }
+ }
+
+ mouse_scroll = ms_regs.h.bh;
+
+ mouse_moved = !mouse_button && ms_regs.h.bl &&
+ ms_regs.h.bl == old_ms.h.bl &&
+ (((ms_regs.W.cx ^ old_ms.W.cx) >> 3) ||
+ ((ms_regs.W.dx ^ old_ms.W.dx) >> 3));
+
+ if (mouse_scroll || mouse_button || mouse_moved)
+ return TRUE;
+ }
+
+ if (old_shift && !shift_status) /* modifier released */
+ {
+ if (!key_pressed && SP->return_key_modifiers)
+ return TRUE;
+ }
+ else if (!old_shift && shift_status) /* modifier pressed */
+ key_pressed = FALSE;
+
+ old_shift = shift_status;
+
+#ifndef USE_KBHIT
+ regs.h.ah = check_function;
+ PDCINT(0x16, regs);
+
+ return !(regs.W.flags & 64);
+#else
+ return kbhit();
+#endif
+}
+
+static int _process_mouse_events(void)
+{
+ int i;
+ short shift_flags = 0;
+
+ memset(&pdc_mouse_status, 0, sizeof(pdc_mouse_status));
+
+ key_pressed = TRUE;
+ old_shift = shift_status;
+ SP->key_code = TRUE;
+
+ /* Set shift modifiers */
+
+ if (shift_status & 3)
+ shift_flags |= BUTTON_SHIFT;
+
+ if (shift_status & 4)
+ shift_flags |= BUTTON_CONTROL;
+
+ if (shift_status & 8)
+ shift_flags |= BUTTON_ALT;
+
+ /* Scroll wheel support for CuteMouse */
+
+ if (mouse_scroll)
+ {
+ pdc_mouse_status.changes = mouse_scroll & 0x80 ?
+ PDC_MOUSE_WHEEL_UP : PDC_MOUSE_WHEEL_DOWN;
+
+ pdc_mouse_status.x = -1;
+ pdc_mouse_status.y = -1;
+
+ return KEY_MOUSE;
+ }
+
+ if (mouse_moved)
+ {
+ pdc_mouse_status.changes = PDC_MOUSE_MOVED;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (ms_regs.h.bl & (1 << button_map[i]))
+ {
+ pdc_mouse_status.button[i] = BUTTON_MOVED | shift_flags;
+ pdc_mouse_status.changes |= (1 << i);
+ }
+ }
+ }
+ else /* button event */
+ {
+ for (i = 0; i < 3; i++)
+ {
+ if (button[i].pressed)
+ {
+ /* Check for a click -- a PRESS followed
+ immediately by a release */
+
+ if (!button[i].released)
+ {
+ if (SP->mouse_wait)
+ {
+ PDCREGS regs;
+
+ napms(SP->mouse_wait);
+
+ regs.W.ax = 6;
+ regs.W.bx = button_map[i];
+ PDCINT(0x33, regs);
+
+ pdc_mouse_status.button[i] = regs.W.bx ?
+ BUTTON_CLICKED : BUTTON_PRESSED;
+ }
+ else
+ pdc_mouse_status.button[i] = BUTTON_PRESSED;
+ }
+ else
+ pdc_mouse_status.button[i] = BUTTON_CLICKED;
+ }
+
+ if (button[i].pressed || button[i].released)
+ {
+ pdc_mouse_status.button[i] |= shift_flags;
+ pdc_mouse_status.changes |= (1 << i);
+ }
+ }
+ }
+
+ pdc_mouse_status.x = ms_regs.W.cx >> 3;
+ pdc_mouse_status.y = ms_regs.W.dx >> 3;
+
+ old_ms = ms_regs;
+
+ return KEY_MOUSE;
+}
+
+/* return the next available key or mouse event */
+
+int PDC_get_key(void)
+{
+ PDCREGS regs;
+ int key, scan;
+
+ pdc_key_modifiers = 0;
+
+ if (mouse_vis && (mouse_scroll || mouse_button || mouse_moved))
+ return _process_mouse_events();
+
+ /* Return modifiers as keys? */
+
+ if (old_shift && !shift_status)
+ {
+ key = -1;
+
+ if (old_shift & 1)
+ key = KEY_SHIFT_R;
+
+ if (old_shift & 2)
+ key = KEY_SHIFT_L;
+
+ if (shift_function == 0x12)
+ {
+ if (old_shift & 0x400)
+ key = KEY_CONTROL_R;
+
+ if (old_shift & 0x100)
+ key = KEY_CONTROL_L;
+
+ if (old_shift & 0x800)
+ key = KEY_ALT_R;
+
+ if (old_shift & 0x200)
+ key = KEY_ALT_L;
+ }
+ else
+ {
+ if (old_shift & 4)
+ key = KEY_CONTROL_R;
+
+ if (old_shift & 8)
+ key = KEY_ALT_R;
+ }
+
+ key_pressed = FALSE;
+ old_shift = shift_status;
+
+ SP->key_code = TRUE;
+ return key;
+ }
+
+ regs.h.ah = keyboard_function;
+ PDCINT(0x16, regs);
+ key = regs.h.al;
+ scan = regs.h.ah;
+
+ if (SP->save_key_modifiers)
+ {
+ if (shift_status & 3)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
+
+ if (shift_status & 4)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
+
+ if (shift_status & 8)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
+
+ if (shift_status & 0x20)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
+ }
+
+ if (scan == 0x1c && key == 0x0a) /* ^Enter */
+ key = CTL_ENTER;
+ else if (scan == 0xe0 && key == 0x0d) /* PadEnter */
+ key = PADENTER;
+ else if (scan == 0xe0 && key == 0x0a) /* ^PadEnter */
+ key = CTL_PADENTER;
+ else if (scan == 0x37 && key == 0x2a) /* Star */
+ key = PADSTAR;
+ else if (scan == 0x4a && key == 0x2d) /* Minus */
+ key = PADMINUS;
+ else if (scan == 0x4e && key == 0x2b) /* Plus */
+ key = PADPLUS;
+ else if (scan == 0xe0 && key == 0x2f) /* Slash */
+ key = PADSLASH;
+ else if (key == 0x00 || (key == 0xe0 && scan > 53 && scan != 86))
+ key = (scan > 0xa7) ? -1 : key_table[scan];
+
+ if (shift_status & 3)
+ {
+ switch (key)
+ {
+ case KEY_HOME: /* Shift Home */
+ key = KEY_SHOME;
+ break;
+ case KEY_UP: /* Shift Up */
+ key = KEY_SUP;
+ break;
+ case KEY_PPAGE: /* Shift PgUp */
+ key = KEY_SPREVIOUS;
+ break;
+ case KEY_LEFT: /* Shift Left */
+ key = KEY_SLEFT;
+ break;
+ case KEY_RIGHT: /* Shift Right */
+ key = KEY_SRIGHT;
+ break;
+ case KEY_END: /* Shift End */
+ key = KEY_SEND;
+ break;
+ case KEY_DOWN: /* Shift Down */
+ key = KEY_SDOWN;
+ break;
+ case KEY_NPAGE: /* Shift PgDn */
+ key = KEY_SNEXT;
+ break;
+ case KEY_IC: /* Shift Ins */
+ key = KEY_SIC;
+ break;
+ case KEY_DC: /* Shift Del */
+ key = KEY_SDC;
+ }
+ }
+
+ key_pressed = TRUE;
+ SP->key_code = ((unsigned)key >= 256);
+
+ return key;
+}
+
+/* discard any pending keyboard or mouse input -- this is the core
+ routine for flushinp() */
+
+void PDC_flushinp(void)
+{
+ PDC_LOG(("PDC_flushinp() - called\n"));
+
+ /* Force the BIOS keyboard buffer head and tail pointers to be
+ the same... Real nasty trick... */
+
+ setdosmemword(0x41a, getdosmemword(0x41c));
+}
+
+int PDC_mouse_set(void)
+{
+ PDCREGS regs;
+ unsigned long mbe = SP->_trap_mbe;
+
+ if (mbe && !mouse_avail)
+ {
+ regs.W.ax = 0;
+ PDCINT(0x33, regs);
+
+ mouse_avail = !!(regs.W.ax);
+ }
+
+ if (mbe)
+ {
+ if (mouse_avail && !mouse_vis)
+ {
+ memset(&old_ms, 0, sizeof(old_ms));
+
+ regs.W.ax = 1;
+ PDCINT(0x33, regs);
+
+ mouse_vis = TRUE;
+ }
+ }
+ else
+ {
+ if (mouse_avail && mouse_vis)
+ {
+ regs.W.ax = 2;
+ PDCINT(0x33, regs);
+
+ mouse_vis = FALSE;
+ }
+ }
+
+ return (mouse_avail || !mbe) ? OK : ERR;
+}
+
+int PDC_modifiers_set(void)
+{
+ key_pressed = FALSE;
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcscrn.c b/payloads/libpayload/curses/PDCurses/dos/pdcscrn.c
new file mode 100644
index 0000000..fc3bbfc
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdcscrn.c
@@ -0,0 +1,757 @@
+/* Public Domain Curses */
+
+#include "pdcdos.h"
+
+RCSID("$Id: pdcscrn.c,v 1.89 2008/07/13 16:08:17 wmcbrine Exp $")
+
+#include <stdlib.h>
+
+#ifdef CHTYPE_LONG
+# define PDC_OFFSET 32
+#else
+# define PDC_OFFSET 8
+#endif
+
+/* COLOR_PAIR to attribute encoding table. */
+
+unsigned char *pdc_atrtab = (unsigned char *)NULL;
+
+int pdc_adapter; /* screen type */
+int pdc_scrnmode; /* default screen mode */
+int pdc_font; /* default font size */
+bool pdc_direct_video; /* allow direct screen memory writes */
+bool pdc_bogus_adapter; /* TRUE if adapter has insane values */
+unsigned pdc_video_seg; /* video base segment */
+unsigned pdc_video_ofs; /* video base offset */
+
+static short curstoreal[16], realtocurs[16] =
+{
+ COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED,
+ COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8,
+ COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8,
+ COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8
+};
+
+static bool sizeable = FALSE; /* TRUE if adapter is resizeable */
+
+static unsigned short *saved_screen = NULL;
+static int saved_lines = 0;
+static int saved_cols = 0;
+
+static int saved_scrnmode[3];
+static int saved_font[3];
+
+/* Thanks to Jeff Duntemann, K16RA for providing the impetus
+ (through the Dr. Dobbs Journal, March 1989 issue) for getting
+ the routines below merged into Bjorn Larsson's PDCurses 1.3...
+ -- frotz at dri.com 900730 */
+
+/* _get_font() - Get the current font size */
+
+static int _get_font(void)
+{
+ int retval;
+
+ retval = getdosmemword(0x485);
+
+ /* Assume the MDS Genius is in 66 line mode. */
+
+ if ((retval == 0) && (pdc_adapter == _MDS_GENIUS))
+ retval = _FONT15;
+
+ switch (pdc_adapter)
+ {
+ case _MDA:
+ retval = 10; /* POINTS is not certain on MDA/Hercules */
+ break;
+
+ case _EGACOLOR:
+ case _EGAMONO:
+ switch (retval)
+ {
+ case _FONT8:
+ case _FONT14:
+ break;
+ default:
+ retval = _FONT14;
+ }
+ break;
+
+ case _CGA:
+ retval = _FONT8;
+ }
+
+ return retval;
+}
+
+/* _set_font() - Sets the current font size, if the adapter allows such a
+ change. It is an error to attempt to change the font size on a
+ "bogus" adapter. The reason for this is that we have a known video
+ adapter identity problem. e.g. Two adapters report the same identifying
+ characteristics. */
+
+static void _set_font(int size)
+{
+ PDCREGS regs;
+
+ if (pdc_bogus_adapter)
+ return;
+
+ switch (pdc_adapter)
+ {
+ case _CGA:
+ case _MDA:
+ case _MCGACOLOR:
+ case _MCGAMONO:
+ case _MDS_GENIUS:
+ break;
+
+ case _EGACOLOR:
+ case _EGAMONO:
+ if (sizeable && (pdc_font != size))
+ {
+ switch (size)
+ {
+ case _FONT8:
+ regs.W.ax = 0x1112;
+ regs.h.bl = 0x00;
+ PDCINT(0x10, regs);
+ break;
+ case _FONT14:
+ regs.W.ax = 0x1111;
+ regs.h.bl = 0x00;
+ PDCINT(0x10, regs);
+ }
+ }
+ break;
+
+ case _VGACOLOR:
+ case _VGAMONO:
+ if (sizeable && (pdc_font != size))
+ {
+ switch (size)
+ {
+ case _FONT8:
+ regs.W.ax = 0x1112;
+ regs.h.bl = 0x00;
+ PDCINT(0x10, regs);
+ break;
+ case _FONT14:
+ regs.W.ax = 0x1111;
+ regs.h.bl = 0x00;
+ PDCINT(0x10, regs);
+ break;
+ case _FONT16:
+ regs.W.ax = 0x1114;
+ regs.h.bl = 0x00;
+ PDCINT(0x10, regs);
+ }
+ }
+ }
+
+ curs_set(SP->visibility);
+
+ pdc_font = _get_font();
+}
+
+/* _set_80x25() - force a known screen state: 80x25 text mode. Forces the
+ appropriate 80x25 alpha mode given the display adapter. */
+
+static void _set_80x25(void)
+{
+ PDCREGS regs;
+
+ switch (pdc_adapter)
+ {
+ case _CGA:
+ case _EGACOLOR:
+ case _EGAMONO:
+ case _VGACOLOR:
+ case _VGAMONO:
+ case _MCGACOLOR:
+ case _MCGAMONO:
+ regs.h.ah = 0x00;
+ regs.h.al = 0x03;
+ PDCINT(0x10, regs);
+ break;
+ case _MDA:
+ regs.h.ah = 0x00;
+ regs.h.al = 0x07;
+ PDCINT(0x10, regs);
+ }
+}
+
+/* _get_scrn_mode() - Return the current BIOS video mode */
+
+static int _get_scrn_mode(void)
+{
+ PDCREGS regs;
+
+ regs.h.ah = 0x0f;
+ PDCINT(0x10, regs);
+
+ return (int)regs.h.al;
+}
+
+/* _set_scrn_mode() - Sets the BIOS Video Mode Number only if it is
+ different from the current video mode. */
+
+static void _set_scrn_mode(int new_mode)
+{
+ PDCREGS regs;
+
+ if (_get_scrn_mode() != new_mode)
+ {
+ regs.h.ah = 0;
+ regs.h.al = (unsigned char) new_mode;
+ PDCINT(0x10, regs);
+ }
+
+ pdc_font = _get_font();
+ pdc_scrnmode = new_mode;
+ LINES = PDC_get_rows();
+ COLS = PDC_get_columns();
+}
+
+/* _sanity_check() - A video adapter identification sanity check. This
+ routine will force sane values for various control flags. */
+
+static int _sanity_check(int adapter)
+{
+ int fontsize = _get_font();
+ int rows = PDC_get_rows();
+
+ PDC_LOG(("_sanity_check() - called: Adapter %d\n", adapter));
+
+ switch (adapter)
+ {
+ case _EGACOLOR:
+ case _EGAMONO:
+ switch (rows)
+ {
+ case 25:
+ case 43:
+ break;
+ default:
+ pdc_bogus_adapter = TRUE;
+ }
+
+ switch (fontsize)
+ {
+ case _FONT8:
+ case _FONT14:
+ break;
+ default:
+ pdc_bogus_adapter = TRUE;
+ }
+ break;
+
+ case _VGACOLOR:
+ case _VGAMONO:
+ break;
+
+ case _CGA:
+ case _MDA:
+ case _MCGACOLOR:
+ case _MCGAMONO:
+ switch (rows)
+ {
+ case 25:
+ break;
+ default:
+ pdc_bogus_adapter = TRUE;
+ }
+ break;
+
+ default:
+ pdc_bogus_adapter = TRUE;
+ }
+
+ if (pdc_bogus_adapter)
+ {
+ sizeable = FALSE;
+ pdc_direct_video = FALSE;
+ }
+
+ return adapter;
+}
+
+/* _query_adapter_type() - Determine PC video adapter type. */
+
+static int _query_adapter_type(void)
+{
+ PDCREGS regs;
+ int retval = _NONE;
+
+ /* thanks to paganini at ax.apc.org for the GO32 fix */
+
+#if !defined(__DJGPP__) && !defined(__WATCOMC__)
+ struct SREGS segs;
+#endif
+ short video_base = getdosmemword(0x463);
+
+ PDC_LOG(("_query_adapter_type() - called\n"));
+
+ /* attempt to call VGA Identify Adapter Function */
+
+ regs.W.ax = 0x1a00;
+ PDCINT(0x10, regs);
+
+ if ((regs.h.al == 0x1a) && (retval == _NONE))
+ {
+ /* We know that the PS/2 video BIOS is alive and well. */
+
+ switch (regs.h.al)
+ {
+ case 0:
+ retval = _NONE;
+ break;
+ case 1:
+ retval = _MDA;
+ break;
+ case 2:
+ retval = _CGA;
+ break;
+ case 4:
+ retval = _EGACOLOR;
+ sizeable = TRUE;
+ break;
+ case 5:
+ retval = _EGAMONO;
+ break;
+ case 26: /* ...alt. VGA BIOS... */
+ case 7:
+ retval = _VGACOLOR;
+ sizeable = TRUE;
+ break;
+ case 8:
+ retval = _VGAMONO;
+ break;
+ case 10:
+ case 13:
+ retval = _MCGACOLOR;
+ break;
+ case 12:
+ retval = _MCGAMONO;
+ break;
+ default:
+ retval = _CGA;
+ }
+ }
+ else
+ {
+ /* No VGA BIOS, check for an EGA BIOS by selecting an
+ Alternate Function Service...
+
+ bx == 0x0010 --> return EGA information */
+
+ regs.h.ah = 0x12;
+ regs.W.bx = 0x10;
+ PDCINT(0x10, regs);
+
+ if ((regs.h.bl != 0x10) && (retval == _NONE))
+ {
+ /* An EGA BIOS exists */
+
+ regs.h.ah = 0x12;
+ regs.h.bl = 0x10;
+ PDCINT(0x10, regs);
+
+ if (regs.h.bh == 0)
+ retval = _EGACOLOR;
+ else
+ retval = _EGAMONO;
+ }
+ else if (retval == _NONE)
+ {
+ /* Now we know we only have CGA or MDA */
+
+ PDCINT(0x11, regs);
+
+ switch (regs.h.al & 0x30)
+ {
+ case 0x10:
+ case 0x20:
+ retval = _CGA;
+ break;
+ case 0x30:
+ retval = _MDA;
+ break;
+ default:
+ retval = _NONE;
+ }
+ }
+ }
+
+ if (video_base == 0x3d4)
+ {
+ pdc_video_seg = 0xb800;
+ switch (retval)
+ {
+ case _EGAMONO:
+ retval = _EGACOLOR;
+ break;
+ case _VGAMONO:
+ retval = _VGACOLOR;
+ }
+ }
+
+ if (video_base == 0x3b4)
+ {
+ pdc_video_seg = 0xb000;
+ switch (retval)
+ {
+ case _EGACOLOR:
+ retval = _EGAMONO;
+ break;
+ case _VGACOLOR:
+ retval = _VGAMONO;
+ }
+ }
+
+ if ((retval == _NONE)
+#ifndef CGA_DIRECT
+ || (retval == _CGA)
+#endif
+ )
+ pdc_direct_video = FALSE;
+
+ if ((unsigned)pdc_video_seg == 0xb000)
+ SP->mono = TRUE;
+ else
+ SP->mono = FALSE;
+
+ /* Check for DESQview shadow buffer
+ thanks to paganini at ax.apc.org for the GO32 fix */
+
+#ifndef __WATCOMC__
+ regs.h.ah = 0xfe;
+ regs.h.al = 0;
+ regs.x.di = pdc_video_ofs;
+# ifdef __DJGPP__
+ regs.x.es = pdc_video_seg;
+ __dpmi_int(0x10, ®s);
+ pdc_video_seg = regs.x.es;
+# else
+ segs.es = pdc_video_seg;
+ int86x(0x10, ®s, ®s, &segs);
+ pdc_video_seg = segs.es;
+# endif
+ pdc_video_ofs = regs.x.di;
+#endif
+ if (!pdc_adapter)
+ pdc_adapter = retval;
+
+ return _sanity_check(retval);
+}
+
+/* close the physical screen -- may restore the screen to its state
+ before PDC_scr_open(); miscellaneous cleanup */
+
+void PDC_scr_close(void)
+{
+#if SMALL || MEDIUM
+# ifndef __PACIFIC__
+ struct SREGS segregs;
+# endif
+ int ds;
+#endif
+ PDC_LOG(("PDC_scr_close() - called\n"));
+
+ if (getenv("PDC_RESTORE_SCREEN") && saved_screen)
+ {
+#ifdef __DJGPP__
+ dosmemput(saved_screen, saved_lines * saved_cols * 2,
+ (unsigned long)_FAR_POINTER(pdc_video_seg,
+ pdc_video_ofs));
+#else
+# if (SMALL || MEDIUM)
+# ifdef __PACIFIC__
+ ds = FP_SEG((void far *)saved_screen);
+# else
+ segread(&segregs);
+ ds = segregs.ds;
+# endif
+ movedata(ds, (int)saved_screen, pdc_video_seg, pdc_video_ofs,
+ (saved_lines * saved_cols * 2));
+# else
+ memcpy((void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs),
+ (void *)saved_screen, (saved_lines * saved_cols * 2));
+# endif
+#endif
+ free(saved_screen);
+ saved_screen = NULL;
+ }
+
+ reset_shell_mode();
+
+ if (SP->visibility != 1)
+ curs_set(1);
+
+ /* Position cursor to the bottom left of the screen. */
+
+ PDC_gotoyx(PDC_get_rows() - 2, 0);
+}
+
+void PDC_scr_free(void)
+{
+ if (SP)
+ free(SP);
+ if (pdc_atrtab)
+ free(pdc_atrtab);
+
+ pdc_atrtab = (unsigned char *)NULL;
+}
+
+/* open the physical screen -- allocate SP, miscellaneous intialization,
+ and may save the existing screen for later restoration */
+
+int PDC_scr_open(int argc, char **argv)
+{
+#if SMALL || MEDIUM
+# ifndef __PACIFIC__
+ struct SREGS segregs;
+# endif
+ int ds;
+#endif
+ int i;
+
+ PDC_LOG(("PDC_scr_open() - called\n"));
+
+ SP = calloc(1, sizeof(SCREEN));
+ pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1);
+
+ if (!SP || !pdc_atrtab)
+ return ERR;
+
+ for (i = 0; i < 16; i++)
+ curstoreal[realtocurs[i]] = i;
+
+ SP->orig_attr = FALSE;
+
+ pdc_direct_video = TRUE; /* Assume that we can */
+ pdc_video_seg = 0xb000; /* Base screen segment addr */
+ pdc_video_ofs = 0x0; /* Base screen segment ofs */
+
+ pdc_adapter = _query_adapter_type();
+ pdc_scrnmode = _get_scrn_mode();
+ pdc_font = _get_font();
+
+ SP->lines = PDC_get_rows();
+ SP->cols = PDC_get_columns();
+
+ SP->mouse_wait = PDC_CLICK_PERIOD;
+ SP->audible = TRUE;
+
+ /* If the environment variable PDCURSES_BIOS is set, the DOS int10()
+ BIOS calls are used in place of direct video memory access. */
+
+ if (getenv("PDCURSES_BIOS"))
+ pdc_direct_video = FALSE;
+
+ /* This code for preserving the current screen. */
+
+ if (getenv("PDC_RESTORE_SCREEN"))
+ {
+ saved_lines = SP->lines;
+ saved_cols = SP->cols;
+
+ saved_screen = malloc(saved_lines * saved_cols * 2);
+
+ if (!saved_screen)
+ {
+ SP->_preserve = FALSE;
+ return OK;
+ }
+#ifdef __DJGPP__
+ dosmemget((unsigned long)_FAR_POINTER(pdc_video_seg, pdc_video_ofs),
+ saved_lines * saved_cols * 2, saved_screen);
+#else
+# if SMALL || MEDIUM
+# ifdef __PACIFIC__
+ ds = FP_SEG((void far *) saved_screen);
+# else
+ segread(&segregs);
+ ds = segregs.ds;
+# endif
+ movedata(pdc_video_seg, pdc_video_ofs, ds, (int)saved_screen,
+ (saved_lines * saved_cols * 2));
+# else
+ memcpy((void *)saved_screen,
+ (void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs),
+ (saved_lines * saved_cols * 2));
+# endif
+#endif
+ }
+
+ SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
+
+ return OK;
+}
+
+/* the core of resize_term() */
+
+int PDC_resize_screen(int nlines, int ncols)
+{
+ PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
+ nlines, ncols));
+
+ /* Trash the stored value of orig_cursor -- it's only good if the
+ video mode doesn't change */
+
+ SP->orig_cursor = 0x0607;
+
+ switch (pdc_adapter)
+ {
+ case _EGACOLOR:
+ if (nlines >= 43)
+ _set_font(_FONT8);
+ else
+ _set_80x25();
+ break;
+
+ case _VGACOLOR:
+ if (nlines > 28)
+ _set_font(_FONT8);
+ else
+ if (nlines > 25)
+ _set_font(_FONT14);
+ else
+ _set_80x25();
+ }
+
+ PDC_set_blink(COLORS == 8);
+
+ return OK;
+}
+
+void PDC_reset_prog_mode(void)
+{
+ PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
+}
+
+void PDC_reset_shell_mode(void)
+{
+ PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
+}
+
+void PDC_restore_screen_mode(int i)
+{
+ if (i >= 0 && i <= 2)
+ {
+ pdc_font = _get_font();
+ _set_font(saved_font[i]);
+
+ if (_get_scrn_mode() != saved_scrnmode[i])
+ _set_scrn_mode(saved_scrnmode[i]);
+ }
+}
+
+void PDC_save_screen_mode(int i)
+{
+ if (i >= 0 && i <= 2)
+ {
+ saved_font[i] = pdc_font;
+ saved_scrnmode[i] = pdc_scrnmode;
+ }
+}
+
+void PDC_init_pair(short pair, short fg, short bg)
+{
+ unsigned char att, temp_bg;
+ chtype i;
+
+ fg = curstoreal[fg];
+ bg = curstoreal[bg];
+
+ for (i = 0; i < PDC_OFFSET; i++)
+ {
+ att = fg | (bg << 4);
+
+ if (i & (A_REVERSE >> PDC_ATTR_SHIFT))
+ att = bg | (fg << 4);
+ if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT))
+ att = 1;
+ if (i & (A_INVIS >> PDC_ATTR_SHIFT))
+ {
+ temp_bg = att >> 4;
+ att = temp_bg << 4 | temp_bg;
+ }
+ if (i & (A_BOLD >> PDC_ATTR_SHIFT))
+ att |= 8;
+ if (i & (A_BLINK >> PDC_ATTR_SHIFT))
+ att |= 128;
+
+ pdc_atrtab[pair * PDC_OFFSET + i] = att;
+ }
+}
+
+int PDC_pair_content(short pair, short *fg, short *bg)
+{
+ *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F];
+ *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4];
+
+ return OK;
+}
+
+/* _egapal() - Find the EGA palette value (0-63) for the color (0-15).
+ On VGA, this is an index into the DAC. */
+
+static short _egapal(short color)
+{
+ PDCREGS regs;
+
+ regs.W.ax = 0x1007;
+ regs.h.bl = curstoreal[color];
+
+ PDCINT(0x10, regs);
+
+ return regs.h.bh;
+}
+
+bool PDC_can_change_color(void)
+{
+ return (pdc_adapter == _VGACOLOR);
+}
+
+/* These are only valid when pdc_adapter == _VGACOLOR */
+
+int PDC_color_content(short color, short *red, short *green, short *blue)
+{
+ PDCREGS regs;
+
+ /* Read single DAC register */
+
+ regs.W.ax = 0x1015;
+ regs.h.bl = _egapal(color);
+
+ PDCINT(0x10, regs);
+
+ /* Scale and store */
+
+ *red = DIVROUND((unsigned)(regs.h.dh) * 1000, 63);
+ *green = DIVROUND((unsigned)(regs.h.ch) * 1000, 63);
+ *blue = DIVROUND((unsigned)(regs.h.cl) * 1000, 63);
+
+ return OK;
+}
+
+int PDC_init_color(short color, short red, short green, short blue)
+{
+ PDCREGS regs;
+
+ /* Scale */
+
+ regs.h.dh = DIVROUND((unsigned)red * 63, 1000);
+ regs.h.ch = DIVROUND((unsigned)green * 63, 1000);
+ regs.h.cl = DIVROUND((unsigned)blue * 63, 1000);
+
+ /* Set single DAC register */
+
+ regs.W.ax = 0x1010;
+ regs.W.bx = _egapal(color);
+
+ PDCINT(0x10, regs);
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcsetsc.c b/payloads/libpayload/curses/PDCurses/dos/pdcsetsc.c
new file mode 100644
index 0000000..4b2314e
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdcsetsc.c
@@ -0,0 +1,99 @@
+/* Public Domain Curses */
+
+#include "pdcdos.h"
+
+RCSID("$Id: pdcsetsc.c,v 1.39 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdcsetsc
+
+ Synopsis:
+ int PDC_set_blink(bool blinkon);
+ void PDC_set_title(const char *title);
+
+ Description:
+ PDC_set_blink() toggles whether the A_BLINK attribute sets an
+ actual blink mode (TRUE), or sets the background color to high
+ intensity (FALSE). The default is platform-dependent (FALSE in
+ most cases). It returns OK if it could set the state to match
+ the given parameter, ERR otherwise. Current platforms also
+ adjust the value of COLORS according to this function -- 16 for
+ FALSE, and 8 for TRUE.
+
+ PDC_set_title() sets the title of the window in which the curses
+ program is running. This function may not do anything on some
+ platforms. (Currently it only works in Win32 and X11.)
+
+ Portability X/Open BSD SYS V
+ PDC_set_blink - - -
+ PDC_set_title - - -
+
+**man-end****************************************************************/
+
+int PDC_curs_set(int visibility)
+{
+ PDCREGS regs;
+ int ret_vis, start, end;
+
+ PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
+
+ ret_vis = SP->visibility;
+ SP->visibility = visibility;
+
+ switch (visibility)
+ {
+ case 0: /* invisible */
+ start = 32;
+ end = 0; /* was 32 */
+ break;
+ case 2: /* highly visible */
+ start = 0; /* full-height block */
+ end = 7;
+ break;
+ default: /* normal visibility */
+ start = (SP->orig_cursor >> 8) & 0xff;
+ end = SP->orig_cursor & 0xff;
+ }
+
+ /* if scrnmode is not set, some BIOSes hang */
+
+ regs.h.ah = 0x01;
+ regs.h.al = (unsigned char)pdc_scrnmode;
+ regs.h.ch = (unsigned char)start;
+ regs.h.cl = (unsigned char)end;
+ PDCINT(0x10, regs);
+
+ return ret_vis;
+}
+
+void PDC_set_title(const char *title)
+{
+ PDC_LOG(("PDC_set_title() - called: <%s>\n", title));
+}
+
+int PDC_set_blink(bool blinkon)
+{
+ PDCREGS regs;
+
+ switch (pdc_adapter)
+ {
+ case _EGACOLOR:
+ case _EGAMONO:
+ case _VGACOLOR:
+ case _VGAMONO:
+ regs.W.ax = 0x1003;
+ regs.W.bx = blinkon;
+
+ PDCINT(0x10, regs);
+
+ if (pdc_color_started)
+ COLORS = blinkon ? 8 : 16;
+
+ break;
+ default:
+ COLORS = 8;
+ }
+
+ return (COLORS - (blinkon * 8) != 8) ? OK : ERR;
+}
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcutil.c b/payloads/libpayload/curses/PDCurses/dos/pdcutil.c
new file mode 100644
index 0000000..b209352
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/pdcutil.c
@@ -0,0 +1,105 @@
+/* Public Domain Curses */
+
+#include "pdcdos.h"
+
+RCSID("$Id: pdcutil.c,v 1.24 2008/07/13 16:08:17 wmcbrine Exp $")
+
+void PDC_beep(void)
+{
+ PDCREGS regs;
+
+ PDC_LOG(("PDC_beep() - called\n"));
+
+ regs.W.ax = 0x0e07; /* Write ^G in TTY fashion */
+ regs.W.bx = 0;
+ PDCINT(0x10, regs);
+}
+
+void PDC_napms(int ms)
+{
+ PDCREGS regs;
+ long goal, start, current;
+
+ PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
+
+ goal = DIVROUND((long)ms, 50);
+ if (!goal)
+ goal++;
+
+ start = getdosmemdword(0x46c);
+
+ goal += start;
+
+ while (goal > (current = getdosmemdword(0x46c)))
+ {
+ if (current < start) /* in case of midnight reset */
+ return;
+
+ regs.W.ax = 0x1680;
+ PDCINT(0x2f, regs);
+ PDCINT(0x28, regs);
+ }
+}
+
+const char *PDC_sysname(void)
+{
+ return "DOS";
+}
+
+#ifdef __DJGPP__
+
+unsigned char getdosmembyte(int offset)
+{
+ unsigned char b;
+
+ dosmemget(offset, sizeof(unsigned char), &b);
+ return b;
+}
+
+unsigned short getdosmemword(int offset)
+{
+ unsigned short w;
+
+ dosmemget(offset, sizeof(unsigned short), &w);
+ return w;
+}
+
+unsigned long getdosmemdword(int offset)
+{
+ unsigned long dw;
+
+ dosmemget(offset, sizeof(unsigned long), &dw);
+ return dw;
+}
+
+void setdosmembyte(int offset, unsigned char b)
+{
+ dosmemput(&b, sizeof(unsigned char), offset);
+}
+
+void setdosmemword(int offset, unsigned short w)
+{
+ dosmemput(&w, sizeof(unsigned short), offset);
+}
+
+#endif
+
+#if defined(__WATCOMC__) && defined(__386__)
+
+void PDC_dpmi_int(int vector, pdc_dpmi_regs *rmregs)
+{
+ union REGPACK regs = {0};
+
+ rmregs->w.ss = 0;
+ rmregs->w.sp = 0;
+ rmregs->w.flags = 0;
+
+ regs.w.ax = 0x300;
+ regs.h.bl = vector;
+ regs.x.edi = FP_OFF(rmregs);
+ regs.x.es = FP_SEG(rmregs);
+
+ intr(0x31, ®s);
+}
+
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/dos/wccdos16.mak b/payloads/libpayload/curses/PDCurses/dos/wccdos16.mak
new file mode 100644
index 0000000..a0cbb22
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/wccdos16.mak
@@ -0,0 +1,48 @@
+# Watcom WMAKE Makefile for PDCurses library - DOS (16 bit) Watcom C/C++ 10.6+
+#
+# Usage: wmake -f [path\]wccdos16.mak [DEBUG=Y] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+# Change the memory MODEL here, if desired
+MODEL = l
+
+!ifdef %PDCURSES_SRCDIR
+PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
+!else
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+
+osdir = $(PDCURSES_SRCDIR)\dos
+
+CC = wcc
+TARGET = dos
+
+CFLAGS = /bt=$(TARGET) /zq /wx /m$(MODEL) /i=$(PDCURSES_SRCDIR)
+
+!ifeq DEBUG Y
+CFLAGS += /d2 /DPDCDEBUG
+LDFLAGS = D W A op q sys $(TARGET)
+!else
+CFLAGS += /oneatx
+LDFLAGS = op q sys $(TARGET)
+!endif
+
+LIBEXE = wlib /q /n /t
+
+!include $(PDCURSES_SRCDIR)\watcom.mif
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ %write wccdos.lrf $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $@ @wccdos.lrf
+ -del wccdos.lrf
+ -copy $(LIBCURSES) panel.lib
+
+PLATFORM1 = Watcom C++ 16-bit DOS
+PLATFORM2 = Open Watcom 1.6 for 16-bit DOS
+ARCNAME = pdc$(VER)16w
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/dos/wccdos4g.mak b/payloads/libpayload/curses/PDCurses/dos/wccdos4g.mak
new file mode 100644
index 0000000..e1ba1cd
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/dos/wccdos4g.mak
@@ -0,0 +1,45 @@
+# Watcom WMAKE Makefile for PDCurses library - DOS/4GW Watcom C/C++ 10.6+
+#
+# Usage: wmake -f [path\]wccdos4g.mak [DEBUG=Y] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+!ifdef %PDCURSES_SRCDIR
+PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
+!else
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+
+osdir = $(PDCURSES_SRCDIR)\dos
+
+CC = wcc386
+TARGET = dos4g
+
+CFLAGS = /bt=$(TARGET) /zq /wx /mf /i=$(PDCURSES_SRCDIR)
+
+!ifeq DEBUG Y
+CFLAGS += /d2 /DPDCDEBUG
+LDFLAGS = D W A op q sys $(TARGET)
+!else
+CFLAGS += /oneatx
+LDFLAGS = op q sys $(TARGET)
+!endif
+
+LIBEXE = wlib /q /n /t
+
+!include $(PDCURSES_SRCDIR)\watcom.mif
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ %write wccdos.lrf $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $@ @wccdos.lrf
+ -del wccdos.lrf
+ -copy $(LIBCURSES) panel.lib
+
+PLATFORM1 = Watcom C++ 32-bit DOS
+PLATFORM2 = Open Watcom 1.6 for 32-bit DOS
+ARCNAME = pdc$(VER)32w
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/exp-base.def b/payloads/libpayload/curses/PDCurses/exp-base.def
new file mode 100644
index 0000000..222b133
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/exp-base.def
@@ -0,0 +1,374 @@
+LINES
+COLS
+stdscr
+curscr
+SP
+Mouse_status
+COLORS
+COLOR_PAIRS
+TABSIZE
+acs_map
+ttytype
+addch
+addchnstr
+addchstr
+addnstr
+addstr
+attroff
+attron
+attrset
+attr_get
+attr_off
+attr_on
+attr_set
+baudrate
+beep
+bkgd
+bkgdset
+border
+box
+can_change_color
+cbreak
+chgat
+clearok
+clear
+clrtobot
+clrtoeol
+color_content
+color_set
+copywin
+curs_set
+def_prog_mode
+def_shell_mode
+delay_output
+delch
+deleteln
+delscreen
+delwin
+derwin
+doupdate
+dupwin
+echochar
+echo
+endwin
+erasechar
+erase
+filter
+flash
+flushinp
+getbkgd
+getnstr
+getstr
+getwin
+halfdelay
+has_colors
+has_ic
+has_il
+hline
+idcok
+idlok
+immedok
+inchnstr
+inchstr
+inch
+init_color
+init_pair
+initscr
+innstr
+insch
+insdelln
+insertln
+insnstr
+insstr
+instr
+intrflush
+isendwin
+is_linetouched
+is_wintouched
+keyname
+keypad
+killchar
+leaveok
+longname
+meta
+move
+mvaddch
+mvaddchnstr
+mvaddchstr
+mvaddnstr
+mvaddstr
+mvchgat
+mvcur
+mvdelch
+mvderwin
+mvgetch
+mvgetnstr
+mvgetstr
+mvhline
+mvinch
+mvinchnstr
+mvinchstr
+mvinnstr
+mvinsch
+mvinsnstr
+mvinsstr
+mvinstr
+mvprintw
+mvscanw
+mvvline
+mvwaddchnstr
+mvwaddchstr
+mvwaddch
+mvwaddnstr
+mvwaddstr
+mvwchgat
+mvwdelch
+mvwgetch
+mvwgetnstr
+mvwgetstr
+mvwhline
+mvwinchnstr
+mvwinchstr
+mvwinch
+mvwinnstr
+mvwinsch
+mvwinsnstr
+mvwinsstr
+mvwinstr
+mvwin
+mvwprintw
+mvwscanw
+mvwvline
+napms
+newpad
+newterm
+newwin
+nl
+nocbreak
+nodelay
+noecho
+nonl
+noqiflush
+noraw
+notimeout
+overlay
+overwrite
+pair_content
+pechochar
+pnoutrefresh
+prefresh
+printw
+putwin
+qiflush
+raw
+redrawwin
+refresh
+reset_prog_mode
+reset_shell_mode
+resetty
+ripoffline
+savetty
+scanw
+scr_dump
+scr_init
+scrl
+scrollok
+scroll
+scr_restore
+scr_set
+setscrreg
+setsyx
+set_term
+slk_attroff
+slk_attr_off
+slk_attron
+slk_attr_on
+slk_attrset
+slk_attr_set
+slk_clear
+slk_color
+slk_init
+slk_label
+slk_noutrefresh
+slk_refresh
+slk_restore
+slk_set
+slk_touch
+standend
+standout
+start_color
+subpad
+subwin
+syncok
+termattrs
+term_attrs
+termname
+timeout
+touchline
+touchwin
+typeahead
+untouchwin
+use_env
+vidattr
+vid_attr
+vidputs
+vid_puts
+vline
+vw_printw
+vwprintw
+vw_scanw
+vwscanw
+waddchnstr
+waddchstr
+waddch
+waddnstr
+waddstr
+wattroff
+wattron
+wattrset
+wattr_get
+wattr_off
+wattr_on
+wattr_set
+wbkgdset
+wbkgd
+wborder
+wchgat
+wclear
+wclrtobot
+wclrtoeol
+wcolor_set
+wcursyncup
+wdelch
+wdeleteln
+wechochar
+werase
+wgetch
+wgetnstr
+wgetstr
+whline
+winchnstr
+winchstr
+winch
+winnstr
+winsch
+winsdelln
+winsertln
+winsnstr
+winsstr
+winstr
+wmove
+wnoutrefresh
+wprintw
+wredrawln
+wrefresh
+wscanw
+wscrl
+wsetscrreg
+wstandend
+wstandout
+wsyncdown
+wsyncup
+wtimeout
+wtouchln
+wvline
+getattrs
+getbegx
+getbegy
+getmaxx
+getmaxy
+getparx
+getpary
+getcurx
+getcury
+traceoff
+traceon
+unctrl
+crmode
+nocrmode
+draino
+resetterm
+fixterm
+saveterm
+mouse_set
+mouse_on
+mouse_off
+request_mouse_pos
+map_button
+wmouse_position
+getmouse
+getbmap
+assume_default_colors
+curses_version
+has_key
+use_default_colors
+wresize
+mouseinterval
+mousemask
+mouse_trafo
+nc_getmouse
+ungetmouse
+wenclose
+wmouse_trafo
+addrawch
+insrawch
+is_termresized
+mvaddrawch
+mvdeleteln
+mvinsertln
+mvinsrawch
+mvwaddrawch
+mvwdeleteln
+mvwinsertln
+mvwinsrawch
+raw_output
+resize_term
+resize_window
+waddrawch
+winsrawch
+wordchar
+bottom_panel
+del_panel
+hide_panel
+move_panel
+new_panel
+panel_above
+panel_below
+panel_hidden
+panel_userptr
+panel_window
+replace_panel
+set_panel_userptr
+show_panel
+top_panel
+update_panels
+PDC_debug
+PDC_ungetch
+PDC_set_blink
+PDC_set_line_color
+PDC_set_title
+PDC_clearclipboard
+PDC_freeclipboard
+PDC_getclipboard
+PDC_setclipboard
+PDC_get_input_fd
+PDC_get_key_modifiers
+PDC_save_key_modifiers
+PDC_return_key_modifiers
+cur_term
+del_curterm
+putp
+restartterm
+set_curterm
+setterm
+setupterm
+tgetent
+tgetflag
+tgetnum
+tgetstr
+tgoto
+tigetflag
+tigetnum
+tigetstr
+tparm
+tputs
diff --git a/payloads/libpayload/curses/PDCurses/exp-wide.def b/payloads/libpayload/curses/PDCurses/exp-wide.def
new file mode 100644
index 0000000..ebf6bc2
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/exp-wide.def
@@ -0,0 +1,90 @@
+addnwstr
+addwstr
+add_wch
+add_wchnstr
+add_wchstr
+border_set
+box_set
+echo_wchar
+erasewchar
+getbkgrnd
+getcchar
+getn_wstr
+get_wch
+get_wstr
+hline_set
+innwstr
+ins_nwstr
+ins_wch
+ins_wstr
+inwstr
+in_wch
+in_wchnstr
+in_wchstr
+key_name
+killwchar
+mvaddnwstr
+mvaddwstr
+mvadd_wch
+mvadd_wchnstr
+mvadd_wchstr
+mvgetn_wstr
+mvget_wch
+mvget_wstr
+mvhline_set
+mvinnwstr
+mvins_nwstr
+mvins_wch
+mvins_wstr
+mvinwstr
+mvin_wch
+mvin_wchnstr
+mvin_wchstr
+mvvline_set
+mvwaddnwstr
+mvwaddwstr
+mvwadd_wch
+mvwadd_wchnstr
+mvwadd_wchstr
+mvwgetn_wstr
+mvwget_wch
+mvwget_wstr
+mvwhline_set
+mvwinnwstr
+mvwins_nwstr
+mvwins_wch
+mvwins_wstr
+mvwin_wch
+mvwin_wchnstr
+mvwin_wchstr
+mvwinwstr
+mvwvline_set
+pecho_wchar
+setcchar
+slk_wset
+unget_wch
+vline_set
+waddnwstr
+waddwstr
+wadd_wch
+wadd_wchnstr
+wadd_wchstr
+wbkgrnd
+wbkgrndset
+wborder_set
+wecho_wchar
+wgetbkgrnd
+wgetn_wstr
+wget_wch
+wget_wstr
+whline_set
+winnwstr
+wins_nwstr
+wins_wch
+wins_wstr
+winwstr
+win_wch
+win_wchnstr
+win_wchstr
+wunctrl
+wvline_set
diff --git a/payloads/libpayload/curses/PDCurses/install-sh b/payloads/libpayload/curses/PDCurses/install-sh
new file mode 100755
index 0000000..fb9e848
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/install-sh
@@ -0,0 +1,253 @@
+#! /bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission. M.I.T. makes no representations about the
+# suitability of this software for any purpose. It is provided "as is"
+# without express or implied warranty.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+#
+# Modified 1 Feb 2000 MHES to cater for mkdir -p
+#
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+mkdircmd="$mkdirprog -p"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+ case $1 in
+ -c) instcmd="$cpprog"
+ shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd="$stripprog"
+ shift
+ continue;;
+
+ -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+ shift
+ continue;;
+
+ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+ shift
+ continue;;
+
+ *) if [ x"$src" = x ]
+ then
+ src=$1
+ else
+ # this colon is to work around a 386BSD /bin/sh bug
+ :
+ dst=$1
+ fi
+ shift
+ continue;;
+ esac
+done
+
+if [ x"$src" = x ]
+then
+ echo "install: no input file specified"
+ exit 1
+else
+ true
+fi
+
+if [ x"$dir_arg" != x ]; then
+ dst=$src
+ src=""
+
+ if [ -d $dst ]; then
+ instcmd=:
+ else
+ instcmd=mkdir
+ fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+ if [ -f $src -o -d $src ]
+ then
+ true
+ else
+ echo "install: $src does not exist"
+ exit 1
+ fi
+
+ if [ x"$dst" = x ]
+ then
+ echo "install: no destination specified"
+ exit 1
+ else
+ true
+ fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+ if [ -d $dst ]
+ then
+ dst="$dst"/`basename $src`
+ else
+ true
+ fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+# this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+ pathcomp="${pathcomp}${1}"
+ shift
+
+ if [ ! -d "${pathcomp}" ] ;
+ then
+ $mkdircmd "${pathcomp}"
+ else
+ true
+ fi
+
+ pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+ $doit $instcmd $dst &&
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+ if [ x"$transformarg" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ dstfile=`basename $dst $transformbasename |
+ sed $transformarg`$transformbasename
+ fi
+
+# don't allow the sed command to completely eliminate the filename
+
+ if [ x"$dstfile" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ true
+ fi
+
+# Make a temp file name in the proper directory.
+
+ dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+ $doit $instcmd $src $dsttmp &&
+
+ trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing. If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+ $doit $rmcmd -f $dstdir/$dstfile &&
+ $doit $mvcmd $dsttmp $dstdir/$dstfile
+
+fi &&
+
+exit 0
diff --git a/payloads/libpayload/curses/PDCurses/libobjs.mif b/payloads/libpayload/curses/PDCurses/libobjs.mif
new file mode 100644
index 0000000..6705323
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/libobjs.mif
@@ -0,0 +1,26 @@
+# Common elements for most of the DOS, OS/2 and Win32
+# makefiles (not Watcom or LCC)
+
+PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)/curses.h
+PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)/curspriv.h
+PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
+PANEL_HEADER = $(PDCURSES_SRCDIR)/panel.h
+TERM_HEADER = $(PDCURSES_SRCDIR)/term.h
+
+srcdir = $(PDCURSES_SRCDIR)/pdcurses
+demodir = $(PDCURSES_SRCDIR)/demos
+
+LIBOBJS = addch.$(O) addchstr.$(O) addstr.$(O) attr.$(O) beep.$(O) \
+bkgd.$(O) border.$(O) clear.$(O) color.$(O) delch.$(O) deleteln.$(O) \
+deprec.$(O) getch.$(O) getstr.$(O) getyx.$(O) inch.$(O) inchstr.$(O) \
+initscr.$(O) inopts.$(O) insch.$(O) insstr.$(O) instr.$(O) kernel.$(O) \
+keyname.$(O) mouse.$(O) move.$(O) outopts.$(O) overlay.$(O) pad.$(O) \
+panel.$(O) printw.$(O) refresh.$(O) scanw.$(O) scr_dump.$(O) scroll.$(O) \
+slk.$(O) termattr.$(O) terminfo.$(O) touch.$(O) util.$(O) window.$(O) \
+debug.$(O)
+
+PDCOBJS = pdcclip.$(O) pdcdisp.$(O) pdcgetsc.$(O) pdckbd.$(O) pdcscrn.$(O) \
+pdcsetsc.$(O) pdcutil.$(O)
+
+DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe firework.exe \
+ptest.exe rain.exe worm.exe
diff --git a/payloads/libpayload/curses/PDCurses/makedist.mif b/payloads/libpayload/curses/PDCurses/makedist.mif
new file mode 100644
index 0000000..e7495a5
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/makedist.mif
@@ -0,0 +1,20 @@
+# Makefile include: build a binary archive with Info-ZIP
+# under DOS, OS/2 or Win32
+
+dist: $(PDCLIBS)
+ echo PDCurses $(VERDOT) for $(PLATFORM1) > file_id.diz
+ echo ------------------------------------------ >> file_id.diz
+ echo Public Domain Curses library for >> file_id.diz
+ echo $(PLATFORM2). >> file_id.diz
+ echo Source available in PDCURS$(VER).ZIP >> file_id.diz
+ echo Public Domain. >> file_id.diz
+ echo $(PDCURSES_SRCDIR)\README > flist
+ echo $(PDCURSES_SRCDIR)\HISTORY >> flist
+ echo $(PDCURSES_SRCDIR)\curses.h >> flist
+ echo $(PDCURSES_SRCDIR)\panel.h >> flist
+ echo $(PDCURSES_SRCDIR)\term.h >> flist
+ echo $(LIBCURSES) >> flist
+ echo file_id.diz >> flist
+ zip -9jX $(ARCNAME) -@ <flist
+ del flist
+ del file_id.diz
diff --git a/payloads/libpayload/curses/PDCurses/os2/README b/payloads/libpayload/curses/PDCurses/os2/README
new file mode 100644
index 0000000..7fde884
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/README
@@ -0,0 +1,43 @@
+PDCurses for OS/2
+=================
+
+This directory contains PDCurses source code files specific to OS/2.
+
+
+Building
+--------
+
+. Choose the appropriate makefile for your compiler:
+
+ bccos2.mak - Borland C++ 2.0
+ gccos2.mak - EMX 0.9b+
+ iccos2.mak - C Set/2
+ wccos2.mak - Watcom 10.6+ (32-bit)
+
+. Optionally, you can build in a different directory than the platform
+ directory by setting PDCURSES_SRCDIR to point to the directory where
+ you unpacked PDCurses, and changing to your target directory:
+
+ set PDCURSES_SRCDIR=c:\pdcurses
+
+. Build it:
+
+ make -f makefilename
+
+ (For Watcom, use "wmake" instead of "make"; for MSVC or C Set/2,
+ "nmake".) You'll get the libraries (pdcurses.lib or .a, depending on
+ your compiler; and panel.lib or .a), the demos (*.exe), and a lot of
+ object files. Note that the panel library is just a copy of the main
+ library, provided for convenience; both panel and curses functions are
+ in the main library.
+
+ You can also use the optional parameter "DLL=Y" with EMX, to build the
+ library as a DLL:
+
+ make -f gccos2.mak DLL=Y
+
+
+Distribution Status
+-------------------
+
+The files in this directory are released to the Public Domain.
diff --git a/payloads/libpayload/curses/PDCurses/os2/bccos2.mak b/payloads/libpayload/curses/PDCurses/os2/bccos2.mak
new file mode 100644
index 0000000..1c7d77a
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/bccos2.mak
@@ -0,0 +1,90 @@
+# Borland MAKE Makefile for PDCurses library - OS/2 BC++ 1.0+
+#
+# Usage: make -f [path\]bccos2.mak [DEBUG=] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+O = obj
+
+!ifndef PDCURSES_SRCDIR
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+!include $(PDCURSES_SRCDIR)\libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)\os2
+
+CC = bcc
+
+!ifdef DEBUG
+CFLAGS = -N -v -y -DPDCDEBUG
+!else
+CFLAGS = -O
+!endif
+
+CPPFLAGS = -I$(PDCURSES_SRCDIR)
+
+BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS)
+
+LINK = tlink
+
+LIBEXE = tlib /C /E
+
+LIBCURSES = pdcurses.lib
+
+all: $(LIBCURSES) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.exe
+
+demos: $(DEMOS)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ -del $@
+ $(LIBEXE) $@ \
++addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj \
++border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj \
++getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj \
++inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj \
++mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj \
++printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj \
++termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj \
++pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj \
++pdcsetsc.obj +pdcutil.obj ,lib.map
+ -copy $(LIBCURSES) panel.lib
+
+.autodepend
+
+{$(srcdir)\}.c.obj:
+ $(BUILD) $<
+
+{$(osdir)\}.c.obj:
+ $(BUILD) $<
+
+{$(demodir)\}.c.obj:
+ $(BUILD) $<
+
+.c.obj:
+ $(BUILD) $<
+
+.obj.exe:
+ $(CC) -e$@ $** $(LIBCURSES)
+
+tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
+ $(CC) -e$@ $**
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
+ $(BUILD) -I$(demodir) $(demodir)\tui.c
+
+tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
+ $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
+
+PLATFORM1 = Borland C++ OS/2 1.0
+PLATFORM2 = Borland C/C++ OS/2 1.0
+ARCNAME = pdc$(VER)bcos2
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/os2/gccos2.mak b/payloads/libpayload/curses/PDCurses/os2/gccos2.mak
new file mode 100644
index 0000000..07d4dca
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/gccos2.mak
@@ -0,0 +1,148 @@
+# GNU MAKE Makefile for PDCurses library - OS/2 emx 0.9c+
+#
+# Usage: make -f [path\]gccos2.mak [DEBUG=Y] [EMXVIDEO=Y] [DLL=Y] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.a|testcurs.exe...]
+#
+# The EMXVIDEO option compiles with the emx video library, which
+# enables a PDCurses program to run under OS/2 and DOS.
+
+O = o
+
+ifndef PDCURSES_SRCDIR
+ PDCURSES_SRCDIR = ..
+endif
+
+include $(PDCURSES_SRCDIR)/version.mif
+include $(PDCURSES_SRCDIR)/libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)/os2
+
+PDCURSES_OS2_H = $(osdir)/pdcos2.h
+
+CC = gcc
+
+CFLAGS = -I$(PDCURSES_SRCDIR) -c -Wall
+
+ifeq ($(EMXVIDEO),Y)
+ CFLAGS += -DEMXVIDEO
+ CCLIBS = -lvideo
+ BINDFLAGS = -acm
+else
+ CCLIBS =
+ BINDFLAGS =
+endif
+
+ifeq ($(DEBUG),Y)
+ CFLAGS += -g -DPDCDEBUG
+ LDFLAGS = -g
+else
+ CFLAGS += -O2
+ LDFLAGS =
+endif
+
+BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
+
+DEFDEPS = $(BASEDEF)
+
+DEFFILE = pdcurses.def
+
+DLLTARGET = pdcurses.dll
+DLLFLAGS = -Zdll -Zcrtdll -Zomf
+
+LINK = gcc
+EMXBIND = emxbind
+EMXOMF = emxomf
+
+LIBEXE = ar
+LIBFLAGS = rcv
+
+ifeq ($(DLL),Y)
+ CFLAGS += -Zdll -Zcrtdll -Zomf
+ LDFLAGS += -Zlinker /PM:VIO -Zomf -Zcrtdll
+ LIBCURSES = pdcurses.lib
+ LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
+ PDCLIBS = $(DLLTARGET)
+ EXEPOST =
+ TUIPOST =
+ CLEAN = *.dll *.lib $(DEFFILE)
+else
+ LIBCURSES = pdcurses.a
+ LIBDEPS = $(LIBOBJS) $(PDCOBJS)
+ PDCLIBS = $(LIBCURSES)
+ EXEPOST = $(EMXBIND) $* $(BINDFLAGS)
+ TUIPOST = $(EMXBIND) tuidemo $(BINDFLAGS)
+ CLEAN = *.a testcurs newdemo xmas tuidemo firework ptest rain worm
+endif
+
+.PHONY: all libs clean demos dist
+
+all: libs demos
+
+libs: $(PDCLIBS)
+
+clean:
+ -del *.o
+ -del *.exe
+ -del $(CLEAN)
+
+demos: $(DEMOS)
+
+DEMOOBJS = testcurs.o newdemo.o xmas.o tui.o tuidemo.o firework.o \
+ptest.o rain.o worm.o
+
+$(DEFFILE) : $(DEFDEPS)
+ echo LIBRARY PDCURSES > $@
+ echo DESCRIPTION 'PDCurses 3.4 Dynamic Linking library' >> $@
+ echo PROTMODE >>$@
+ echo DATA MULTIPLE READWRITE LOADONCALL >> $@
+ echo CODE LOADONCALL >> $@
+ echo EXPORTS >> $@
+ type $(BASEDEF) >> $@
+
+$(LIBCURSES) : $(LIBDEPS)
+ $(LIBEXE) $(LIBFLAGS) $@ $?
+ -copy $(LIBCURSES) panel.a
+
+$(DLLTARGET) : $(LIBDEPS)
+ $(LINK) $(DLLFLAGS) -o $(DLLTARGET) $? $(DEFFILE)
+# lxlite $(DLLTARGET)
+ emximp -o $(LIBCURSES) $(DEFFILE)
+
+$(LIBOBJS) $(PDCOBJS) $(DEMOOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_OS2_H)
+$(DEMOS) : $(LIBCURSES)
+panel.o ptest.o: $(PANEL_HEADER)
+terminfo.o: $(TERM_HEADER)
+
+$(LIBOBJS) : %.o: $(srcdir)/%.c
+ $(CC) -c $(CFLAGS) -o$@ $<
+
+$(PDCOBJS) : %.o: $(osdir)/%.c
+ $(CC) -c $(CFLAGS) -o$@ $<
+
+firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
+ptest.exe: %.exe: %.o
+ $(LINK) $(LDFLAGS) -o $* $< $(LIBCURSES) $(CCLIBS)
+ $(EXEPOST)
+
+tuidemo.exe: tuidemo.o tui.o
+ $(LINK) $(LDFLAGS) -o tuidemo tuidemo.o tui.o $(LIBCURSES) $(CCLIBS)
+ $(TUIPOST)
+
+firework.o newdemo.o ptest.o rain.o testcurs.o worm.o xmas.o: %.o: \
+$(demodir)/%.c
+ $(CC) $(CFLAGS) -o$@ $<
+
+tui.o: $(demodir)\tui.c $(demodir)\tui.h
+ $(CC) $(CFLAGS) -I$(demodir) -o $@ $<
+
+tuidemo.o: $(demodir)\tuidemo.c
+ $(CC) $(CFLAGS) -I$(demodir) -o $@ $<
+
+PLATFORM1 = EMX OS/2
+PLATFORM2 = EMX 0.9d for OS/2
+ARCNAME = pdc$(VER)_emx_os2
+
+include $(PDCURSES_SRCDIR)/makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/os2/iccos2.lrf b/payloads/libpayload/curses/PDCurses/os2/iccos2.lrf
new file mode 100644
index 0000000..b1fdf37
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/iccos2.lrf
@@ -0,0 +1,50 @@
+-+addch.obj &
+-+addchstr.obj &
+-+addstr.obj &
+-+attr.obj &
+-+beep.obj &
+-+bkgd.obj &
+-+border.obj &
+-+clear.obj &
+-+color.obj &
+-+delch.obj &
+-+deleteln.obj &
+-+deprec.obj &
+-+getch.obj &
+-+getstr.obj &
+-+getyx.obj &
+-+inch.obj &
+-+inchstr.obj &
+-+initscr.obj &
+-+inopts.obj &
+-+insch.obj &
+-+insstr.obj &
+-+instr.obj &
+-+kernel.obj &
+-+keyname.obj &
+-+mouse.obj &
+-+move.obj &
+-+outopts.obj &
+-+overlay.obj &
+-+pad.obj &
+-+panel.obj &
+-+printw.obj &
+-+refresh.obj &
+-+scanw.obj &
+-+scr_dump.obj &
+-+scroll.obj &
+-+slk.obj &
+-+termattr.obj &
+-+terminfo.obj &
+-+touch.obj &
+-+util.obj &
+-+window.obj &
+-+debug.obj &
+-+pdcclip.obj &
+-+pdcdisp.obj &
+-+pdcgetsc.obj &
+-+pdckbd.obj &
+-+pdcscrn.obj &
+-+pdcsetsc.obj &
+-+pdcutil.obj &
+,lib.map;
diff --git a/payloads/libpayload/curses/PDCurses/os2/iccos2.mak b/payloads/libpayload/curses/PDCurses/os2/iccos2.mak
new file mode 100644
index 0000000..06a2c1f
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/iccos2.mak
@@ -0,0 +1,256 @@
+# NMAKE Makefile for PDCurses library - OS/2 C Set/2
+#
+# Usage: nmake -f [path\]iccos2.mak [DEBUG=] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+O = obj
+
+!ifndef PDCURSES_SRCDIR
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+!include $(PDCURSES_SRCDIR)\libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)\os2
+
+PDCURSES_OS2_H = $(osdir)\pdcos2.h
+
+CC = icc
+
+!ifdef DEBUG
+CFLAGS = /Sm /Ti+ /O- /Q+ /dPDCDEBUG
+LDFLAGS = /NOLOGO /NOE /SE:160 /DEBUG /PMTYPE:VIO
+!else
+CFLAGS = /Sm /Ti- /O+ /Q+
+LDFLAGS = /NOLOGO /NOE /EXEPACK /PACKCODE /PACKDATA /PMTYPE:VIO
+!endif
+
+CPPFLAGS = -I$(PDCURSES_SRCDIR)
+
+BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS)
+
+LINK = link386
+
+LIBEXE = lib
+
+LIBCURSES = pdcurses.lib
+
+all: $(LIBCURSES) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.exe
+
+demos: $(DEMOS)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $@ @$(osdir)\iccos2.lrf
+ -copy $(LIBCURSES) panel.lib
+
+addch.obj: $(srcdir)\addch.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\addch.c
+
+addchstr.obj: $(srcdir)\addchstr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\addchstr.c
+
+addstr.obj: $(srcdir)\addstr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\addstr.c
+
+attr.obj: $(srcdir)\attr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\attr.c
+
+beep.obj: $(srcdir)\beep.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\beep.c
+
+bkgd.obj: $(srcdir)\bkgd.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\bkgd.c
+
+border.obj: $(srcdir)\border.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\border.c
+
+clear.obj: $(srcdir)\clear.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\clear.c
+
+color.obj: $(srcdir)\color.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\color.c
+
+delch.obj: $(srcdir)\delch.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\delch.c
+
+deleteln.obj: $(srcdir)\deleteln.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\deleteln.c
+
+deprec.obj: $(srcdir)\deprec.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\deprec.c
+
+getch.obj: $(srcdir)\getch.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\getch.c
+
+getstr.obj: $(srcdir)\getstr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\getstr.c
+
+getyx.obj: $(srcdir)\getyx.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\getyx.c
+
+inch.obj: $(srcdir)\inch.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\inch.c
+
+inchstr.obj: $(srcdir)\inchstr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\inchstr.c
+
+initscr.obj: $(srcdir)\initscr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\initscr.c
+
+inopts.obj: $(srcdir)\inopts.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\inopts.c
+
+insch.obj: $(srcdir)\insch.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\insch.c
+
+insstr.obj: $(srcdir)\insstr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\insstr.c
+
+instr.obj: $(srcdir)\instr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\instr.c
+
+kernel.obj: $(srcdir)\kernel.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\kernel.c
+
+keyname.obj: $(srcdir)\keyname.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\keyname.c
+
+mouse.obj: $(srcdir)\mouse.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\mouse.c
+
+move.obj: $(srcdir)\move.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\move.c
+
+outopts.obj: $(srcdir)\outopts.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\outopts.c
+
+overlay.obj: $(srcdir)\overlay.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\overlay.c
+
+pad.obj: $(srcdir)\pad.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\pad.c
+
+panel.obj: $(srcdir)\panel.c $(PDCURSES_HEADERS) $(PANEL_HEADER)
+ $(BUILD) $(srcdir)\panel.c
+
+printw.obj: $(srcdir)\printw.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\printw.c
+
+refresh.obj: $(srcdir)\refresh.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\refresh.c
+
+scanw.obj: $(srcdir)\scanw.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\scanw.c
+
+scr_dump.obj: $(srcdir)\scr_dump.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\scr_dump.c
+
+scroll.obj: $(srcdir)\scroll.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\scroll.c
+
+slk.obj: $(srcdir)\slk.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\slk.c
+
+termattr.obj: $(srcdir)\termattr.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\termattr.c
+
+terminfo.obj: $(srcdir)\terminfo.c $(PDCURSES_HEADERS) $(TERM_HEADER)
+ $(BUILD) $(srcdir)\terminfo.c
+
+touch.obj: $(srcdir)\touch.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\touch.c
+
+util.obj: $(srcdir)\util.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\util.c
+
+window.obj: $(srcdir)\window.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\window.c
+
+debug.obj: $(srcdir)\debug.c $(PDCURSES_HEADERS)
+ $(BUILD) $(srcdir)\debug.c
+
+pdcclip.obj: $(osdir)\pdcclip.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
+ $(BUILD) $(osdir)\pdcclip.c
+
+pdcdisp.obj: $(osdir)\pdcdisp.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
+ $(BUILD) $(osdir)\pdcdisp.c
+
+pdcgetsc.obj: $(osdir)\pdcgetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
+ $(BUILD) $(osdir)\pdcgetsc.c
+
+pdckbd.obj: $(osdir)\pdckbd.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
+ $(BUILD) $(osdir)\pdckbd.c
+
+pdcscrn.obj: $(osdir)\pdcscrn.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
+ $(BUILD) $(osdir)\pdcscrn.c
+
+pdcsetsc.obj: $(osdir)\pdcsetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
+ $(BUILD) $(osdir)\pdcsetsc.c
+
+pdcutil.obj: $(osdir)\pdcutil.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H)
+ $(BUILD) $(osdir)\pdcutil.c
+
+firework.exe: firework.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+newdemo.exe: newdemo.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+ptest.exe: ptest.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+rain.exe: rain.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+testcurs.exe: testcurs.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj+tui.obj,$*,,$(LIBCURSES);
+
+worm.exe: worm.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+xmas.exe: xmas.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES);
+
+firework.obj: $(demodir)\firework.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\firework.c
+
+newdemo.obj: $(demodir)\newdemo.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\newdemo.c
+
+ptest.obj: $(demodir)\ptest.c $(PANEL_HEADER) $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\ptest.c
+
+rain.obj: $(demodir)\rain.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\rain.c
+
+testcurs.obj: $(demodir)\testcurs.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\testcurs.c
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\tui.c
+
+tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\tuidemo.c
+
+worm.obj: $(demodir)\worm.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\worm.c
+
+xmas.obj: $(demodir)\xmas.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(demodir)\xmas.c
+
+PLATFORM1 = C Set/2 OS/2
+PLATFORM2 = C Set/2 for OS/2
+ARCNAME = pdc$(VER)_icc_os2
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdcclip.c b/payloads/libpayload/curses/PDCurses/os2/pdcclip.c
new file mode 100644
index 0000000..1922bb8
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdcclip.c
@@ -0,0 +1,185 @@
+/* Public Domain Curses */
+
+#include "pdcos2.h"
+
+RCSID("$Id: pdcclip.c,v 1.33 2008/07/14 04:24:51 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: clipboard
+
+ Synopsis:
+ int PDC_getclipboard(char **contents, long *length);
+ int PDC_setclipboard(const char *contents, long length);
+ int PDC_freeclipboard(char *contents);
+ int PDC_clearclipboard(void);
+
+ Description:
+ PDC_getclipboard() gets the textual contents of the system's
+ clipboard. This function returns the contents of the clipboard
+ in the contents argument. It is the responsibilitiy of the
+ caller to free the memory returned, via PDC_freeclipboard().
+ The length of the clipboard contents is returned in the length
+ argument.
+
+ PDC_setclipboard copies the supplied text into the system's
+ clipboard, emptying the clipboard prior to the copy.
+
+ PDC_clearclipboard() clears the internal clipboard.
+
+ Return Values:
+ indicator of success/failure of call.
+ PDC_CLIP_SUCCESS the call was successful
+ PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
+ the clipboard contents
+ PDC_CLIP_EMPTY the clipboard contains no text
+ PDC_CLIP_ACCESS_ERROR no clipboard support
+
+ Portability X/Open BSD SYS V
+ PDC_getclipboard - - -
+ PDC_setclipboard - - -
+ PDC_freeclipboard - - -
+ PDC_clearclipboard - - -
+
+**man-end****************************************************************/
+
+int PDC_getclipboard(char **contents, long *length)
+{
+#ifndef EMXVIDEO
+ HMQ hmq;
+ HAB hab;
+ PTIB ptib;
+ PPIB ppib;
+ ULONG ulRet;
+ long len;
+ int rc;
+#endif
+ PDC_LOG(("PDC_getclipboard() - called\n"));
+
+#ifndef EMXVIDEO
+ DosGetInfoBlocks(&ptib, &ppib);
+ ppib->pib_ultype = 3;
+ hab = WinInitialize(0);
+ hmq = WinCreateMsgQueue(hab, 0);
+
+ if (!WinOpenClipbrd(hab))
+ {
+ WinDestroyMsgQueue(hmq);
+ WinTerminate(hab);
+ return PDC_CLIP_ACCESS_ERROR;
+ }
+
+ rc = PDC_CLIP_EMPTY;
+
+ ulRet = WinQueryClipbrdData(hab, CF_TEXT);
+
+ if (ulRet)
+ {
+ len = strlen((char *)ulRet);
+ *contents = malloc(len + 1);
+
+ if (!*contents)
+ rc = PDC_CLIP_MEMORY_ERROR;
+ else
+ {
+ strcpy((char *)*contents, (char *)ulRet);
+ *length = len;
+ rc = PDC_CLIP_SUCCESS;
+ }
+ }
+
+ WinCloseClipbrd(hab);
+ WinDestroyMsgQueue(hmq);
+ WinTerminate(hab);
+
+ return rc;
+#else
+ return PDC_CLIP_ACCESS_ERROR;
+#endif
+}
+
+int PDC_setclipboard(const char *contents, long length)
+{
+#ifndef EMXVIDEO
+ HAB hab;
+ PTIB ptib;
+ PPIB ppib;
+ ULONG ulRC;
+ PSZ szTextOut = NULL;
+ int rc;
+#endif
+ PDC_LOG(("PDC_setclipboard() - called\n"));
+
+#ifndef EMXVIDEO
+ DosGetInfoBlocks(&ptib, &ppib);
+ ppib->pib_ultype = 3;
+ hab = WinInitialize(0);
+
+ if (!WinOpenClipbrd(hab))
+ {
+ WinTerminate(hab);
+ return PDC_CLIP_ACCESS_ERROR;
+ }
+
+ rc = PDC_CLIP_MEMORY_ERROR;
+
+ ulRC = DosAllocSharedMem((PVOID)&szTextOut, NULL, length + 1,
+ PAG_WRITE | PAG_COMMIT | OBJ_GIVEABLE);
+
+ if (ulRC == 0)
+ {
+ strcpy(szTextOut, contents);
+ WinEmptyClipbrd(hab);
+
+ if (WinSetClipbrdData(hab, (ULONG)szTextOut, CF_TEXT, CFI_POINTER))
+ rc = PDC_CLIP_SUCCESS;
+ else
+ {
+ DosFreeMem(szTextOut);
+ rc = PDC_CLIP_ACCESS_ERROR;
+ }
+ }
+
+ WinCloseClipbrd(hab);
+ WinTerminate(hab);
+
+ return rc;
+#else
+ return PDC_CLIP_ACCESS_ERROR;
+#endif
+}
+
+int PDC_freeclipboard(char *contents)
+{
+ PDC_LOG(("PDC_freeclipboard() - called\n"));
+
+ if (contents)
+ free(contents);
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_clearclipboard(void)
+{
+#ifndef EMXVIDEO
+ HAB hab;
+ PTIB ptib;
+ PPIB ppib;
+#endif
+ PDC_LOG(("PDC_clearclipboard() - called\n"));
+
+#ifndef EMXVIDEO
+ DosGetInfoBlocks(&ptib, &ppib);
+ ppib->pib_ultype = 3;
+ hab = WinInitialize(0);
+
+ WinEmptyClipbrd(hab);
+
+ WinCloseClipbrd(hab);
+ WinTerminate(hab);
+
+ return PDC_CLIP_SUCCESS;
+#else
+ return PDC_CLIP_ACCESS_ERROR;
+#endif
+}
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdcdisp.c b/payloads/libpayload/curses/PDCurses/os2/pdcdisp.c
new file mode 100644
index 0000000..4f886da
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdcdisp.c
@@ -0,0 +1,95 @@
+/* Public Domain Curses */
+
+#include "pdcos2.h"
+
+RCSID("$Id: pdcdisp.c,v 1.49 2008/07/14 04:24:51 wmcbrine Exp $")
+
+/* ACS definitions originally by jshumate at wrdis01.robins.af.mil -- these
+ match code page 437 and compatible pages (CP850, CP852, etc.) */
+
+#ifdef CHTYPE_LONG
+
+# define A(x) ((chtype)x | A_ALTCHARSET)
+
+chtype acs_map[128] =
+{
+ A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9),
+ A(10), A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18),
+ A(19), A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27),
+ A(28), A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&',
+ '\'', '(', ')', '*',
+
+ A(0x1a), A(0x1b), A(0x18), A(0x19),
+
+ '/',
+
+ 0xdb,
+
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
+ '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
+
+ A(0x04), 0xb1,
+
+ 'b', 'c', 'd', 'e',
+
+ 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d,
+ 0x2d, 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3,
+ 0xf2, 0xe3, 0xd8, 0x9c, 0xf9,
+
+ A(127)
+};
+
+# undef A
+
+#endif
+
+/* position hardware cursor at (y, x) */
+
+void PDC_gotoyx(int row, int col)
+{
+ PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
+
+#ifdef EMXVIDEO
+ v_gotoxy(col, row);
+#else
+ VioSetCurPos(row, col, 0);
+#endif
+}
+
+/* update the given physical line to look like the corresponding line in
+ curscr */
+
+void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
+{
+ /* this should be enough for the maximum width of a screen. */
+
+ struct {unsigned char text, attr;} temp_line[256];
+ int j;
+
+ PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
+
+ /* replace the attribute part of the chtype with the
+ actual color value for each chtype in the line */
+
+ for (j = 0; j < len; j++)
+ {
+ chtype ch = srcp[j];
+
+ temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
+
+#ifdef CHTYPE_LONG
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
+ ch = acs_map[ch & 0x7f];
+#endif
+ temp_line[j].text = ch & 0xff;
+ }
+
+#ifdef EMXVIDEO
+ v_putline((char *)temp_line, x, lineno, len);
+#else
+ VioWrtCellStr((PCH)temp_line, (USHORT)(len * sizeof(unsigned short)),
+ (USHORT)lineno, (USHORT)x, 0);
+#endif
+}
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdcgetsc.c b/payloads/libpayload/curses/PDCurses/os2/pdcgetsc.c
new file mode 100644
index 0000000..d712dad
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdcgetsc.c
@@ -0,0 +1,91 @@
+/* Public Domain Curses */
+
+#include "pdcos2.h"
+
+RCSID("$Id: pdcgetsc.c,v 1.39 2008/07/14 04:24:51 wmcbrine Exp $")
+
+/* return width of screen/viewport */
+
+int PDC_get_columns(void)
+{
+#ifdef EMXVIDEO
+ int rows = 0;
+#else
+ VIOMODEINFO modeInfo = {0};
+#endif
+ int cols = 0;
+ const char *env_cols;
+
+ PDC_LOG(("PDC_get_columns() - called\n"));
+
+#ifdef EMXVIDEO
+ v_dimen(&cols, &rows);
+#else
+ modeInfo.cb = sizeof(modeInfo);
+ VioGetMode(&modeInfo, 0);
+ cols = modeInfo.col;
+#endif
+ env_cols = getenv("COLS");
+
+ if (env_cols)
+ cols = min(atoi(env_cols), cols);
+
+ PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols));
+
+ return cols;
+}
+
+/* get the cursor size/shape */
+
+int PDC_get_cursor_mode(void)
+{
+#ifdef EMXVIDEO
+ int curstart = 0, curend = 0;
+#else
+ VIOCURSORINFO cursorInfo;
+#endif
+ PDC_LOG(("PDC_get_cursor_mode() - called\n"));
+
+#ifdef EMXVIDEO
+ v_getctype(&curstart, &curend);
+ return (curstart << 8) | curend;
+#else
+ VioGetCurType (&cursorInfo, 0);
+
+ return (cursorInfo.yStart << 8) | cursorInfo.cEnd;
+#endif
+}
+
+/* return number of screen rows */
+
+int PDC_get_rows(void)
+{
+#ifdef EMXVIDEO
+ int cols = 0;
+#else
+ VIOMODEINFO modeInfo = {0};
+#endif
+ int rows = 0;
+ const char *env_rows;
+
+ PDC_LOG(("PDC_get_rows() - called\n"));
+
+ /* use the value from LINES environment variable, if set. MH 10-Jun-92 */
+ /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */
+
+#ifdef EMXVIDEO
+ v_dimen(&cols, &rows);
+#else
+ modeInfo.cb = sizeof(modeInfo);
+ VioGetMode(&modeInfo, 0);
+ rows = modeInfo.row;
+#endif
+ env_rows = getenv("LINES");
+
+ if (env_rows)
+ rows = min(atoi(env_rows), rows);
+
+ PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows));
+
+ return rows;
+}
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdckbd.c b/payloads/libpayload/curses/PDCurses/os2/pdckbd.c
new file mode 100644
index 0000000..df79882
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdckbd.c
@@ -0,0 +1,519 @@
+/* Public Domain Curses */
+
+#if defined(__EMX__) || defined(__WATCOMC__) || defined(__IBMC__) || \
+defined(__TURBOC__)
+# define HAVE_SIGNAL
+# include <signal.h>
+#endif
+
+#include "pdcos2.h"
+
+RCSID("$Id: pdckbd.c,v 1.89 2008/07/14 04:24:51 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdckbd
+
+ Synopsis:
+ unsigned long PDC_get_input_fd(void);
+
+ Description:
+ PDC_get_input_fd() returns the file descriptor that PDCurses
+ reads its input from. It can be used for select().
+
+ Portability X/Open BSD SYS V
+ PDC_get_input_fd - - -
+
+**man-end****************************************************************/
+
+#ifdef EMXVIDEO
+# include <termios.h>
+static int tahead = -1;
+#else
+static KBDINFO kbdinfo; /* default keyboard mode */
+static HMOU mouse_handle = 0;
+static MOUSE_STATUS old_mouse_status;
+static USHORT old_shift = 0;
+static bool key_pressed = FALSE;
+static int mouse_events = 0;
+#endif
+
+/************************************************************************
+ * Table for key code translation of function keys in keypad mode *
+ * These values are for strict IBM keyboard compatibles only *
+ ************************************************************************/
+
+static short key_table[] =
+{
+ -1, ALT_ESC, -1, 0,
+ -1, -1, -1, -1,
+ -1, -1, -1, -1,
+ -1, -1, ALT_BKSP, KEY_BTAB,
+ ALT_Q, ALT_W, ALT_E, ALT_R,
+ ALT_T, ALT_Y, ALT_U, ALT_I,
+ ALT_O, ALT_P, ALT_LBRACKET, ALT_RBRACKET,
+ ALT_ENTER, -1, ALT_A, ALT_S,
+ ALT_D, ALT_F, ALT_G, ALT_H,
+ ALT_J, ALT_K, ALT_L, ALT_SEMICOLON,
+ ALT_FQUOTE, ALT_BQUOTE, -1, ALT_BSLASH,
+ ALT_Z, ALT_X, ALT_C, ALT_V,
+ ALT_B, ALT_N, ALT_M, ALT_COMMA,
+ ALT_STOP, ALT_FSLASH, -1, ALT_PADSTAR,
+ -1, -1, -1, KEY_F(1),
+ KEY_F(2), KEY_F(3), KEY_F(4), KEY_F(5),
+ KEY_F(6), KEY_F(7), KEY_F(8), KEY_F(9),
+ KEY_F(10), -1, -1, KEY_HOME,
+ KEY_UP, KEY_PPAGE, ALT_PADMINUS, KEY_LEFT,
+ KEY_B2, KEY_RIGHT, ALT_PADPLUS, KEY_END,
+ KEY_DOWN, KEY_NPAGE, KEY_IC, KEY_DC,
+ KEY_F(13), KEY_F(14), KEY_F(15), KEY_F(16),
+ KEY_F(17), KEY_F(18), KEY_F(19), KEY_F(20),
+ KEY_F(21), KEY_F(22), KEY_F(25), KEY_F(26),
+ KEY_F(27), KEY_F(28), KEY_F(29), KEY_F(30),
+ KEY_F(31), KEY_F(32), KEY_F(33), KEY_F(34),
+ KEY_F(37), KEY_F(38), KEY_F(39), KEY_F(40),
+ KEY_F(41), KEY_F(42), KEY_F(43), KEY_F(44),
+ KEY_F(45), KEY_F(46), -1, CTL_LEFT,
+ CTL_RIGHT, CTL_END, CTL_PGDN, CTL_HOME,
+ ALT_1, ALT_2, ALT_3, ALT_4,
+ ALT_5, ALT_6, ALT_7, ALT_8,
+ ALT_9, ALT_0, ALT_MINUS, ALT_EQUAL,
+ CTL_PGUP, KEY_F(11), KEY_F(12), KEY_F(23),
+ KEY_F(24), KEY_F(35), KEY_F(36), KEY_F(47),
+ KEY_F(48), CTL_UP, CTL_PADMINUS, CTL_PADCENTER,
+ CTL_PADPLUS, CTL_DOWN, CTL_INS, CTL_DEL,
+ CTL_TAB, CTL_PADSLASH, CTL_PADSTAR, ALT_HOME,
+ ALT_UP, ALT_PGUP, -1, ALT_LEFT,
+ -1, ALT_RIGHT, -1, ALT_END,
+ ALT_DOWN, ALT_PGDN, ALT_INS, ALT_DEL,
+ ALT_PADSLASH, ALT_TAB, ALT_PADENTER, -1
+};
+
+unsigned long pdc_key_modifiers = 0L;
+
+unsigned long PDC_get_input_fd(void)
+{
+ PDC_LOG(("PDC_get_input_fd() - called\n"));
+
+ return (unsigned long)fileno(stdin);
+}
+
+#ifndef EMXVIDEO
+
+void PDC_get_keyboard_info(void)
+{
+ kbdinfo.cb = sizeof(kbdinfo);
+ KbdGetStatus(&kbdinfo, 0);
+}
+
+void PDC_set_keyboard_default(void)
+{
+ KbdSetStatus(&kbdinfo, 0);
+}
+
+#endif /* ifndef EMXVIDEO */
+
+void PDC_set_keyboard_binary(bool on)
+{
+ PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
+
+#ifndef EMXVIDEO
+ if (on)
+ {
+ kbdinfo.fsMask &= ~(KEYBOARD_ASCII_MODE);
+ kbdinfo.fsMask |= KEYBOARD_BINARY_MODE;
+ }
+ else
+ {
+ kbdinfo.fsMask &= ~(KEYBOARD_BINARY_MODE);
+ kbdinfo.fsMask |= KEYBOARD_ASCII_MODE;
+ }
+
+ KbdSetStatus(&kbdinfo, 0);
+#endif
+
+#ifdef HAVE_SIGNAL
+ signal(SIGBREAK, on ? SIG_IGN : SIG_DFL);
+#endif
+}
+
+/* check if a key or mouse event is waiting */
+
+bool PDC_check_key(void)
+{
+#if !defined(_MSC_VER) && !defined(EMXVIDEO)
+ KBDKEYINFO keyInfo = {0};
+#endif
+
+#ifdef EMXVIDEO
+ if (tahead == -1) /* Nothing typed yet */
+ {
+ tahead = _read_kbd(0, 0, 0);
+
+ /* Read additional */
+
+ if (tahead == 0)
+ tahead = _read_kbd(0, 1, 0) << 8;
+ }
+
+ return (tahead != -1);
+#else
+# ifndef _MSC_VER
+
+ KbdGetStatus(&kbdinfo, 0);
+
+ if (mouse_handle)
+ {
+ MOUQUEINFO queue;
+
+ MouGetNumQueEl(&queue, mouse_handle);
+ mouse_events = queue.cEvents;
+
+ if (mouse_events)
+ return TRUE;
+ }
+
+ if (old_shift && !kbdinfo.fsState) /* modifier released */
+ {
+ if (!key_pressed && SP->return_key_modifiers)
+ return TRUE;
+ }
+ else if (!old_shift && kbdinfo.fsState) /* modifier pressed */
+ key_pressed = FALSE;
+
+ old_shift = kbdinfo.fsState;
+
+ KbdPeek(&keyInfo, 0); /* peek at keyboard */
+ return (keyInfo.fbStatus != 0);
+# else
+ return kbhit();
+# endif
+#endif
+}
+
+#ifndef EMXVIDEO
+
+static int _process_mouse_events(void)
+{
+ MOUEVENTINFO event;
+ static const USHORT button_mask[] = {6, 96, 24},
+ move_mask[] = {2, 32, 8},
+ press_mask[] = {4, 64, 16};
+ USHORT count = 1;
+ short shift_flags = 0;
+ int i;
+
+ MouReadEventQue(&event, &count, mouse_handle);
+ mouse_events--;
+
+ for (i = 0; i < 3; i++)
+ {
+ pdc_mouse_status.button[i] =
+ ((event.fs & move_mask[i]) ? BUTTON_MOVED : 0) |
+ ((event.fs & press_mask[i]) ? BUTTON_PRESSED : 0);
+
+ /* PRESS events are sometimes mistakenly reported as MOVE
+ events. A MOVE should always follow a PRESS, so treat a MOVE
+ immediately after a RELEASE as a PRESS. */
+
+ if ((pdc_mouse_status.button[i] == BUTTON_MOVED) &&
+ (old_mouse_status.button[i] == BUTTON_RELEASED))
+ {
+ pdc_mouse_status.button[i] = BUTTON_PRESSED;
+ }
+
+ if (pdc_mouse_status.button[i] == BUTTON_PRESSED && SP->mouse_wait)
+ {
+ /* Check for a click -- a PRESS followed immediately by a
+ release */
+
+ if (!mouse_events)
+ {
+ MOUQUEINFO queue;
+
+ napms(SP->mouse_wait);
+
+ MouGetNumQueEl(&queue, mouse_handle);
+ mouse_events = queue.cEvents;
+ }
+
+ if (mouse_events)
+ {
+ MouReadEventQue(&event, &count, mouse_handle);
+
+ if (!(event.fs & button_mask[i]))
+ pdc_mouse_status.button[i] = BUTTON_CLICKED;
+ }
+ }
+ }
+
+ pdc_mouse_status.x = event.col;
+ pdc_mouse_status.y = event.row;
+
+ pdc_mouse_status.changes = 0;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (old_mouse_status.button[i] != pdc_mouse_status.button[i])
+ pdc_mouse_status.changes |= (1 << i);
+
+ if (pdc_mouse_status.button[i] == BUTTON_MOVED)
+ {
+ /* Discard non-moved "moves" */
+
+ if (pdc_mouse_status.x == old_mouse_status.x &&
+ pdc_mouse_status.y == old_mouse_status.y)
+ return -1;
+
+ /* Motion events always flag the button as changed */
+
+ pdc_mouse_status.changes |= (1 << i);
+ pdc_mouse_status.changes |= PDC_MOUSE_MOVED;
+ break;
+ }
+ }
+
+ old_mouse_status = pdc_mouse_status;
+
+ /* Treat click events as release events for comparison purposes */
+
+ for (i = 0; i < 3; i++)
+ {
+ if (old_mouse_status.button[i] == BUTTON_CLICKED)
+ old_mouse_status.button[i] = BUTTON_RELEASED;
+ }
+
+ /* Check for SHIFT/CONTROL/ALT */
+
+ if (kbdinfo.fsState & KBDSTF_ALT)
+ shift_flags |= BUTTON_ALT;
+
+ if (kbdinfo.fsState & KBDSTF_CONTROL)
+ shift_flags |= BUTTON_CONTROL;
+
+ if (kbdinfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
+ shift_flags |= BUTTON_SHIFT;
+
+ if (shift_flags)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ if (pdc_mouse_status.changes & (1 << i))
+ pdc_mouse_status.button[i] |= shift_flags;
+ }
+ }
+
+ old_shift = kbdinfo.fsState;
+ key_pressed = TRUE;
+
+ SP->key_code = TRUE;
+ return KEY_MOUSE;
+}
+
+#endif
+
+/* return the next available key or mouse event */
+
+int PDC_get_key(void)
+{
+ int key, scan;
+#ifndef EMXVIDEO
+ KBDKEYINFO keyInfo = {0};
+#endif
+
+#ifdef EMXVIDEO
+ if (tahead == -1)
+ {
+ tahead = _read_kbd(0, 1, 0);
+
+ /* Read additional */
+
+ if (tahead == 0)
+ tahead = _read_kbd(0, 1, 0) << 8;
+ }
+
+ key = tahead & 0xff;
+ scan = tahead >> 8;
+ pdc_key_modifiers = 0L;
+
+ tahead = -1;
+#else
+ pdc_key_modifiers = 0L;
+
+ if (mouse_handle && mouse_events)
+ return _process_mouse_events();
+
+ if (old_shift && !kbdinfo.fsState)
+ {
+ key = -1;
+
+ if (old_shift & KBDSTF_LEFTALT)
+ {
+ key = KEY_ALT_L;
+ }
+ else if (old_shift & KBDSTF_RIGHTALT)
+ {
+ key = KEY_ALT_R;
+ }
+ else if (old_shift & KBDSTF_LEFTCONTROL)
+ {
+ key = KEY_CONTROL_L;
+ }
+ else if (old_shift & KBDSTF_RIGHTCONTROL)
+ {
+ key = KEY_CONTROL_R;
+ }
+ else if (old_shift & KBDSTF_LEFTSHIFT)
+ {
+ key = KEY_SHIFT_L;
+ }
+ else if (old_shift & KBDSTF_RIGHTSHIFT)
+ {
+ key = KEY_SHIFT_R;
+ }
+
+ key_pressed = FALSE;
+ old_shift = kbdinfo.fsState;
+
+ SP->key_code = TRUE;
+ return key;
+ }
+
+ KbdCharIn(&keyInfo, IO_WAIT, 0); /* get a character */
+
+ key = keyInfo.chChar;
+ scan = keyInfo.chScan;
+
+ if (SP->save_key_modifiers)
+ {
+ if (keyInfo.fsState & KBDSTF_ALT)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
+
+ if (keyInfo.fsState & KBDSTF_CONTROL)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
+
+ if (keyInfo.fsState & KBDSTF_NUMLOCK_ON)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
+
+ if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
+ }
+#endif
+ if (scan == 0x1c && key == 0x0a) /* ^Enter */
+ key = CTL_ENTER;
+ else if (scan == 0xe0 && key == 0x0d) /* PadEnter */
+ key = PADENTER;
+ else if (scan == 0xe0 && key == 0x0a) /* ^PadEnter */
+ key = CTL_PADENTER;
+ else if (scan == 0x37 && key == 0x2a) /* Star */
+ key = PADSTAR;
+ else if (scan == 0x4a && key == 0x2d) /* Minus */
+ key = PADMINUS;
+ else if (scan == 0x4e && key == 0x2b) /* Plus */
+ key = PADPLUS;
+ else if (scan == 0xe0 && key == 0x2f) /* Slash */
+ key = PADSLASH;
+ else if (key == 0x00 || (key == 0xe0 && scan > 53 && scan != 86))
+ key = (scan > 0xa7) ? -1 : key_table[scan];
+
+ if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT))
+ {
+ switch (key)
+ {
+ case KEY_HOME: /* Shift Home */
+ key = KEY_SHOME;
+ break;
+ case KEY_UP: /* Shift Up */
+ key = KEY_SUP;
+ break;
+ case KEY_PPAGE: /* Shift PgUp */
+ key = KEY_SPREVIOUS;
+ break;
+ case KEY_LEFT: /* Shift Left */
+ key = KEY_SLEFT;
+ break;
+ case KEY_RIGHT: /* Shift Right */
+ key = KEY_SRIGHT;
+ break;
+ case KEY_END: /* Shift End */
+ key = KEY_SEND;
+ break;
+ case KEY_DOWN: /* Shift Down */
+ key = KEY_SDOWN;
+ break;
+ case KEY_NPAGE: /* Shift PgDn */
+ key = KEY_SNEXT;
+ break;
+ case KEY_IC: /* Shift Ins */
+ key = KEY_SIC;
+ break;
+ case KEY_DC: /* Shift Del */
+ key = KEY_SDC;
+ }
+ }
+
+ key_pressed = TRUE;
+ SP->key_code = ((unsigned)key >= 256);
+
+ return key;
+}
+
+/* discard any pending keyboard or mouse input -- this is the core
+ routine for flushinp() */
+
+void PDC_flushinp(void)
+{
+ PDC_LOG(("PDC_flushinp() - called\n"));
+
+#ifdef EMXVIDEO
+ tcflush(0, TCIFLUSH);
+#else
+ if (mouse_handle)
+ MouFlushQue(mouse_handle);
+
+ KbdFlushBuffer(0);
+#endif
+}
+
+int PDC_mouse_set(void)
+{
+#ifndef EMXVIDEO
+
+ unsigned long mbe = SP->_trap_mbe;
+
+ if (mbe && !mouse_handle)
+ {
+ memset(&old_mouse_status, 0, sizeof(MOUSE_STATUS));
+ MouOpen(NULL, &mouse_handle);
+ if (mouse_handle)
+ MouDrawPtr(mouse_handle);
+ }
+ else if (!mbe && mouse_handle)
+ {
+ MouClose(mouse_handle);
+ mouse_handle = 0;
+ }
+
+ if (mbe && mouse_handle)
+ {
+ USHORT mask = ((mbe & (BUTTON1_PRESSED | BUTTON1_CLICKED |
+ BUTTON1_MOVED)) ? 6 : 0) |
+
+ ((mbe & (BUTTON3_PRESSED | BUTTON3_CLICKED |
+ BUTTON3_MOVED)) ? 24 : 0) |
+
+ ((mbe & (BUTTON2_PRESSED | BUTTON2_CLICKED |
+ BUTTON2_MOVED)) ? 96 : 0);
+
+ MouSetEventMask(&mask, mouse_handle);
+ }
+#endif
+ return OK;
+}
+
+int PDC_modifiers_set(void)
+{
+ key_pressed = FALSE;
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdcos2.h b/payloads/libpayload/curses/PDCurses/os2/pdcos2.h
new file mode 100644
index 0000000..1c11d48
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdcos2.h
@@ -0,0 +1,51 @@
+/* Public Domain Curses */
+
+/* $Id: pdcos2.h,v 1.9 2008/08/14 06:38:35 wmcbrine Exp $ */
+
+#ifdef _MSC_VER
+# define USE_OS2_H 1 /* Use the os2.h for the compiler */
+# define APIRET USHORT
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef EMXVIDEO
+# include <sys/video.h>
+#else
+# define INCL_DOS
+# define INCL_DOSMISC
+# define INCL_WIN
+# define INCL_VIO
+# define INCL_KBD
+# define INCL_MOU
+# include <os2.h>
+#endif
+
+#include <curspriv.h>
+
+#ifdef __WATCOMC__
+# define PDCTHUNK(x) ((ptr_16)(x))
+# ifdef __386__
+# define SEG16 _Seg16
+# else
+# define SEG16
+# endif
+
+typedef void * SEG16 ptr_16;
+
+#else
+# ifdef __EMX__
+# ifdef __INNOTEK_LIBC__
+# define PDCTHUNK(x) ((PCH)_libc_32to16(x))
+# else
+# define PDCTHUNK(x) ((PCH)_emx_32to16(x))
+# endif
+# endif
+#endif
+
+extern unsigned char *pdc_atrtab;
+extern int pdc_font;
+
+extern void PDC_get_keyboard_info(void);
+extern void PDC_set_keyboard_default(void);
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdcscrn.c b/payloads/libpayload/curses/PDCurses/os2/pdcscrn.c
new file mode 100644
index 0000000..daecb50
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdcscrn.c
@@ -0,0 +1,422 @@
+/* Public Domain Curses */
+
+#include "pdcos2.h"
+
+RCSID("$Id: pdcscrn.c,v 1.76 2008/07/14 04:24:51 wmcbrine Exp $")
+
+#ifdef CHTYPE_LONG
+# define PDC_OFFSET 32
+#else
+# define PDC_OFFSET 8
+#endif
+
+/* COLOR_PAIR to attribute encoding table. */
+
+unsigned char *pdc_atrtab = (unsigned char *)NULL;
+
+int pdc_font; /* default font size */
+
+static short curstoreal[16], realtocurs[16] =
+{
+ COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED,
+ COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8,
+ COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8,
+ COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8
+};
+
+#ifdef EMXVIDEO
+static unsigned char *saved_screen = NULL;
+static int saved_lines = 0;
+static int saved_cols = 0;
+#else
+# ifdef PDCTHUNK
+# ifdef __EMX__
+# define THUNKEDVIO VIOCOLORREG
+# else
+
+typedef struct {
+ USHORT cb;
+ USHORT type;
+ USHORT firstcolorreg;
+ USHORT numcolorregs;
+ ptr_16 colorregaddr;
+} THUNKEDVIO;
+
+# endif
+# endif
+
+static PCH saved_screen = NULL;
+static USHORT saved_lines = 0;
+static USHORT saved_cols = 0;
+static VIOMODEINFO scrnmode; /* default screen mode */
+static VIOMODEINFO saved_scrnmode[3];
+static int saved_font[3];
+static bool can_change = FALSE;
+
+static int _get_font(void)
+{
+ VIOMODEINFO modeInfo = {0};
+
+ modeInfo.cb = sizeof(modeInfo);
+
+ VioGetMode(&modeInfo, 0);
+ return (modeInfo.vres / modeInfo.row);
+}
+
+static void _set_font(int size)
+{
+ VIOMODEINFO modeInfo = {0};
+
+ if (pdc_font != size)
+ {
+ modeInfo.cb = sizeof(modeInfo);
+
+ /* set most parameters of modeInfo */
+
+ VioGetMode(&modeInfo, 0);
+ modeInfo.cb = 8; /* ignore horiz an vert resolution */
+ modeInfo.row = modeInfo.vres / size;
+ VioSetMode(&modeInfo, 0);
+ }
+
+ curs_set(SP->visibility);
+
+ pdc_font = _get_font();
+}
+
+#endif
+
+/* close the physical screen -- may restore the screen to its state
+ before PDC_scr_open(); miscellaneous cleanup */
+
+void PDC_scr_close(void)
+{
+ PDC_LOG(("PDC_scr_close() - called\n"));
+
+ if (saved_screen && getenv("PDC_RESTORE_SCREEN"))
+ {
+#ifdef EMXVIDEO
+ v_putline(saved_screen, 0, 0, saved_lines * saved_cols);
+#else
+ VioWrtCellStr(saved_screen, saved_lines * saved_cols * 2,
+ 0, 0, (HVIO)NULL);
+#endif
+ free(saved_screen);
+ saved_screen = NULL;
+ }
+
+ reset_shell_mode();
+
+ if (SP->visibility != 1)
+ curs_set(1);
+
+ /* Position cursor to the bottom left of the screen. */
+
+ PDC_gotoyx(PDC_get_rows() - 2, 0);
+}
+
+void PDC_scr_free(void)
+{
+ if (SP)
+ free(SP);
+ if (pdc_atrtab)
+ free(pdc_atrtab);
+
+ pdc_atrtab = (unsigned char *)NULL;
+}
+
+/* open the physical screen -- allocate SP, miscellaneous intialization,
+ and may save the existing screen for later restoration */
+
+int PDC_scr_open(int argc, char **argv)
+{
+#ifdef EMXVIDEO
+ int adapter;
+#else
+ USHORT totchars;
+#endif
+ int i;
+ short r, g, b;
+
+ PDC_LOG(("PDC_scr_open() - called\n"));
+
+ SP = calloc(1, sizeof(SCREEN));
+ pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1);
+
+ if (!SP || !pdc_atrtab)
+ return ERR;
+
+ for (i = 0; i < 16; i++)
+ curstoreal[realtocurs[i]] = i;
+
+#ifdef EMXVIDEO
+ v_init();
+#endif
+ SP->orig_attr = FALSE;
+
+#ifdef EMXVIDEO
+ adapter = v_hardware();
+ SP->mono = (adapter == V_MONOCHROME);
+
+ pdc_font = SP->mono ? 14 : (adapter == V_COLOR_8) ? 8 : 12;
+#else
+ VioGetMode(&scrnmode, 0);
+ PDC_get_keyboard_info();
+
+ pdc_font = _get_font();
+#endif
+ SP->lines = PDC_get_rows();
+ SP->cols = PDC_get_columns();
+
+ SP->mouse_wait = PDC_CLICK_PERIOD;
+ SP->audible = TRUE;
+
+ /* This code for preserving the current screen */
+
+ if (getenv("PDC_RESTORE_SCREEN"))
+ {
+ saved_lines = SP->lines;
+ saved_cols = SP->cols;
+
+ saved_screen = malloc(2 * saved_lines * saved_cols);
+
+ if (!saved_screen)
+ {
+ SP->_preserve = FALSE;
+ return OK;
+ }
+#ifdef EMXVIDEO
+ v_getline(saved_screen, 0, 0, saved_lines * saved_cols);
+#else
+ totchars = saved_lines * saved_cols * 2;
+ VioReadCellStr((PCH)saved_screen, &totchars, 0, 0, (HVIO)NULL);
+#endif
+ }
+
+ SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
+
+ can_change = (PDC_color_content(0, &r, &g, &b) == OK);
+
+ return OK;
+}
+
+/* the core of resize_term() */
+
+int PDC_resize_screen(int nlines, int ncols)
+{
+#ifndef EMXVIDEO
+ VIOMODEINFO modeInfo = {0};
+ USHORT result;
+#endif
+
+ PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
+ nlines, ncols));
+
+#ifdef EMXVIDEO
+ return ERR;
+#else
+ modeInfo.cb = sizeof(modeInfo);
+
+ /* set most parameters of modeInfo */
+
+ VioGetMode(&modeInfo, 0);
+ modeInfo.fbType = 1;
+ modeInfo.row = nlines;
+ modeInfo.col = ncols;
+ result = VioSetMode(&modeInfo, 0);
+
+ LINES = PDC_get_rows();
+ COLS = PDC_get_columns();
+
+ return (result == 0) ? OK : ERR;
+#endif
+}
+
+void PDC_reset_prog_mode(void)
+{
+ PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
+
+#ifndef EMXVIDEO
+ PDC_set_keyboard_binary(TRUE);
+#endif
+}
+
+void PDC_reset_shell_mode(void)
+{
+ PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
+
+#ifndef EMXVIDEO
+ PDC_set_keyboard_default();
+#endif
+}
+
+#ifndef EMXVIDEO
+
+static bool _screen_mode_equals(VIOMODEINFO *oldmode)
+{
+ VIOMODEINFO current = {0};
+
+ VioGetMode(¤t, 0);
+
+ return ((current.cb == oldmode->cb) &&
+ (current.fbType == oldmode->fbType) &&
+ (current.color == oldmode->color) &&
+ (current.col == oldmode->col) &&
+ (current.row == oldmode->row) &&
+ (current.hres == oldmode->vres) &&
+ (current.vres == oldmode->vres));
+}
+
+#endif
+
+void PDC_restore_screen_mode(int i)
+{
+#ifndef EMXVIDEO
+ if (i >= 0 && i <= 2)
+ {
+ pdc_font = _get_font();
+ _set_font(saved_font[i]);
+
+ if (!_screen_mode_equals(&saved_scrnmode[i]))
+ if (VioSetMode(&saved_scrnmode[i], 0) != 0)
+ {
+ pdc_font = _get_font();
+ scrnmode = saved_scrnmode[i];
+ LINES = PDC_get_rows();
+ COLS = PDC_get_columns();
+ }
+ }
+#endif
+}
+
+void PDC_save_screen_mode(int i)
+{
+#ifndef EMXVIDEO
+ if (i >= 0 && i <= 2)
+ {
+ saved_font[i] = pdc_font;
+ saved_scrnmode[i] = scrnmode;
+ }
+#endif
+}
+
+void PDC_init_pair(short pair, short fg, short bg)
+{
+ unsigned char att, temp_bg;
+ chtype i;
+
+ fg = curstoreal[fg];
+ bg = curstoreal[bg];
+
+ for (i = 0; i < PDC_OFFSET; i++)
+ {
+ att = fg | (bg << 4);
+
+ if (i & (A_REVERSE >> PDC_ATTR_SHIFT))
+ att = bg | (fg << 4);
+ if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT))
+ att = 1;
+ if (i & (A_INVIS >> PDC_ATTR_SHIFT))
+ {
+ temp_bg = att >> 4;
+ att = temp_bg << 4 | temp_bg;
+ }
+ if (i & (A_BOLD >> PDC_ATTR_SHIFT))
+ att |= 8;
+ if (i & (A_BLINK >> PDC_ATTR_SHIFT))
+ att |= 128;
+
+ pdc_atrtab[pair * PDC_OFFSET + i] = att;
+ }
+}
+
+int PDC_pair_content(short pair, short *fg, short *bg)
+{
+ *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F];
+ *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4];
+
+ return OK;
+}
+
+bool PDC_can_change_color(void)
+{
+ return can_change;
+}
+
+int PDC_color_content(short color, short *red, short *green, short *blue)
+{
+#ifdef PDCTHUNK
+ THUNKEDVIO vcr;
+ USHORT palbuf[4];
+ unsigned char pal[3];
+ int rc;
+
+ /* Read single DAC register */
+
+ palbuf[0] = 8;
+ palbuf[1] = 0;
+ palbuf[2] = curstoreal[color];
+
+ rc = VioGetState(&palbuf, 0);
+ if (rc)
+ return ERR;
+
+ vcr.cb = sizeof(vcr);
+ vcr.type = 3;
+ vcr.firstcolorreg = palbuf[3];
+ vcr.numcolorregs = 1;
+ vcr.colorregaddr = PDCTHUNK(pal);
+
+ rc = VioGetState(&vcr, 0);
+ if (rc)
+ return ERR;
+
+ /* Scale and store */
+
+ *red = DIVROUND((unsigned)(pal[0]) * 1000, 63);
+ *green = DIVROUND((unsigned)(pal[1]) * 1000, 63);
+ *blue = DIVROUND((unsigned)(pal[2]) * 1000, 63);
+
+ return OK;
+#else
+ return ERR;
+#endif
+}
+
+int PDC_init_color(short color, short red, short green, short blue)
+{
+#ifdef PDCTHUNK
+ THUNKEDVIO vcr;
+ USHORT palbuf[4];
+ unsigned char pal[3];
+ int rc;
+
+ /* Scale */
+
+ pal[0] = DIVROUND((unsigned)red * 63, 1000);
+ pal[1] = DIVROUND((unsigned)green * 63, 1000);
+ pal[2] = DIVROUND((unsigned)blue * 63, 1000);
+
+ /* Set single DAC register */
+
+ palbuf[0] = 8;
+ palbuf[1] = 0;
+ palbuf[2] = curstoreal[color];
+
+ rc = VioGetState(&palbuf, 0);
+ if (rc)
+ return ERR;
+
+ vcr.cb = sizeof(vcr);
+ vcr.type = 3;
+ vcr.firstcolorreg = palbuf[3];
+ vcr.numcolorregs = 1;
+ vcr.colorregaddr = PDCTHUNK(pal);
+
+ rc = VioSetState(&vcr, 0);
+
+ return rc ? ERR : OK;
+#else
+ return ERR;
+#endif
+}
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdcsetsc.c b/payloads/libpayload/curses/PDCurses/os2/pdcsetsc.c
new file mode 100644
index 0000000..bc28b03
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdcsetsc.c
@@ -0,0 +1,110 @@
+/* Public Domain Curses */
+
+#include "pdcos2.h"
+
+RCSID("$Id: pdcsetsc.c,v 1.44 2008/07/14 04:24:51 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdcsetsc
+
+ Synopsis:
+ int PDC_set_blink(bool blinkon);
+ void PDC_set_title(const char *title);
+
+ Description:
+ PDC_set_blink() toggles whether the A_BLINK attribute sets an
+ actual blink mode (TRUE), or sets the background color to high
+ intensity (FALSE). The default is platform-dependent (FALSE in
+ most cases). It returns OK if it could set the state to match
+ the given parameter, ERR otherwise. Current platforms also
+ adjust the value of COLORS according to this function -- 16 for
+ FALSE, and 8 for TRUE.
+
+ PDC_set_title() sets the title of the window in which the curses
+ program is running. This function may not do anything on some
+ platforms. (Currently it only works in Win32 and X11.)
+
+ Portability X/Open BSD SYS V
+ PDC_set_blink - - -
+ PDC_set_title - - -
+
+**man-end****************************************************************/
+
+int PDC_curs_set(int visibility)
+{
+#ifndef EMXVIDEO
+ VIOCURSORINFO pvioCursorInfo;
+#endif
+ int ret_vis, hidden = 0, start = 0, end = 0;
+
+ PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
+
+ ret_vis = SP->visibility;
+ SP->visibility = visibility;
+
+ switch(visibility)
+ {
+ case 0: /* invisible */
+#ifdef EMXVIDEO
+ start = end = 0;
+#else
+ start = pdc_font / 4;
+ end = pdc_font;
+ hidden = -1;
+#endif
+ break;
+
+ case 2: /* highly visible */
+ start = 2; /* almost full-height block */
+ end = pdc_font - 1;
+ break;
+
+ default: /* normal visibility */
+ start = (SP->orig_cursor >> 8) & 0xff;
+ end = SP->orig_cursor & 0xff;
+ }
+
+#ifdef EMXVIDEO
+ if (!visibility)
+ v_hidecursor();
+ else
+ v_ctype(start, end);
+#else
+ pvioCursorInfo.yStart = (USHORT)start;
+ pvioCursorInfo.cEnd = (USHORT)end;
+ pvioCursorInfo.cx = (USHORT)1;
+ pvioCursorInfo.attr = hidden;
+ VioSetCurType((PVIOCURSORINFO)&pvioCursorInfo, 0);
+#endif
+ return ret_vis;
+}
+
+void PDC_set_title(const char *title)
+{
+ PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
+}
+
+int PDC_set_blink(bool blinkon)
+{
+#ifndef EMXVIDEO
+ USHORT statebuf[3], result;
+
+ statebuf[0] = 6; /* length */
+ statebuf[1] = 2; /* blink/intensity */
+ statebuf[2] = !blinkon;
+
+ result = VioSetState(&statebuf, 0);
+ VioGetState(&statebuf, 0); /* needed? */
+
+ if (pdc_color_started)
+ COLORS = statebuf[2] ? 16 : 8;
+
+ return (result == 0) ? OK : ERR;
+#else
+ if (pdc_color_started)
+ COLORS = 16;
+
+ return blinkon ? ERR : OK;
+#endif
+}
diff --git a/payloads/libpayload/curses/PDCurses/os2/pdcutil.c b/payloads/libpayload/curses/PDCurses/os2/pdcutil.c
new file mode 100644
index 0000000..290be35
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/pdcutil.c
@@ -0,0 +1,36 @@
+/* Public Domain Curses */
+
+#include "pdcos2.h"
+
+RCSID("$Id: pdcutil.c,v 1.14 2008/07/14 04:24:51 wmcbrine Exp $")
+
+#if defined(OS2) && !defined(__EMX__)
+APIRET APIENTRY DosSleep(ULONG ulTime);
+#endif
+
+void PDC_beep(void)
+{
+ PDC_LOG(("PDC_beep() - called\n"));
+
+#ifdef EMXVIDEO
+ putchar('\007');
+#else
+ DosBeep(1380, 100);
+#endif
+}
+
+void PDC_napms(int ms)
+{
+ PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
+
+#ifdef __EMX__
+ _sleep2(ms);
+#else
+ DosSleep(ms);
+#endif
+}
+
+const char *PDC_sysname(void)
+{
+ return "OS/2";
+}
diff --git a/payloads/libpayload/curses/PDCurses/os2/wccos2.mak b/payloads/libpayload/curses/PDCurses/os2/wccos2.mak
new file mode 100644
index 0000000..d5900d3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/os2/wccos2.mak
@@ -0,0 +1,43 @@
+# Watcom WMAKE Makefile for PDCurses library - OS/2 Open Watcom 1.1+
+#
+# Usage: wmake -f [path\]wccos2.mak [DEBUG=Y] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+!ifdef %PDCURSES_SRCDIR
+PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
+!else
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+
+osdir = $(PDCURSES_SRCDIR)\os2
+
+CC = wcc386
+TARGET = os2v2
+
+CFLAGS = /bt=$(TARGET) /wx /s /zq /i=$(PDCURSES_SRCDIR)
+
+!ifeq DEBUG Y
+CFLAGS += /d2 /DPDCDEBUG
+LDFLAGS = D A op q sys $(TARGET)
+!else
+CFLAGS += /oneatx
+LDFLAGS = op q sys $(TARGET)
+!endif
+
+LIBEXE = wlib /q /n /b /c /t
+
+!include $(PDCURSES_SRCDIR)\watcom.mif
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
+ -copy $(LIBCURSES) panel.lib
+
+PLATFORM1 = Watcom C++ OS/2
+PLATFORM2 = Open Watcom 1.6 for OS/2
+ARCNAME = pdc$(VER)_wcc_os2
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/panel.h b/payloads/libpayload/curses/PDCurses/panel.h
new file mode 100644
index 0000000..1d7cace
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/panel.h
@@ -0,0 +1,58 @@
+/* Public Domain Curses */
+
+/* $Id: panel.h,v 1.19 2008/07/13 16:08:16 wmcbrine Exp $ */
+
+/*----------------------------------------------------------------------*
+ * Panels for PDCurses *
+ *----------------------------------------------------------------------*/
+
+#ifndef __PDCURSES_PANEL_H__
+#define __PDCURSES_PANEL_H__ 1
+
+#include <curses.h>
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+extern "C"
+{
+#endif
+
+typedef struct panelobs
+{
+ struct panelobs *above;
+ struct panel *pan;
+} PANELOBS;
+
+typedef struct panel
+{
+ WINDOW *win;
+ int wstarty;
+ int wendy;
+ int wstartx;
+ int wendx;
+ struct panel *below;
+ struct panel *above;
+ const void *user;
+ struct panelobs *obscure;
+} PANEL;
+
+int bottom_panel(PANEL *pan);
+int del_panel(PANEL *pan);
+int hide_panel(PANEL *pan);
+int move_panel(PANEL *pan, int starty, int startx);
+PANEL *new_panel(WINDOW *win);
+PANEL *panel_above(const PANEL *pan);
+PANEL *panel_below(const PANEL *pan);
+int panel_hidden(const PANEL *pan);
+const void *panel_userptr(const PANEL *pan);
+WINDOW *panel_window(const PANEL *pan);
+int replace_panel(PANEL *pan, WINDOW *win);
+int set_panel_userptr(PANEL *pan, const void *uptr);
+int show_panel(PANEL *pan);
+int top_panel(PANEL *pan);
+void update_panels(void);
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+}
+#endif
+
+#endif /* __PDCURSES_PANEL_H__ */
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/README b/payloads/libpayload/curses/PDCurses/pdcurses/README
new file mode 100644
index 0000000..bef1c4c
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/README
@@ -0,0 +1,25 @@
+PDCurses Portable Core
+======================
+
+This directory contains core PDCurses source code files common to all
+platforms.
+
+
+Building
+--------
+
+These modules are built by the platform-specific makefiles, in the
+platform directories.
+
+
+Distribution Status
+-------------------
+
+The files in this directory are released to the Public Domain.
+
+
+Acknowledgements
+----------------
+
+The panel library was originally provided by
+Warren Tucker <wht at n4hgf.mt-park.ga.us>
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/addch.c b/payloads/libpayload/curses/PDCurses/pdcurses/addch.c
new file mode 100644
index 0000000..5934b54
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/addch.c
@@ -0,0 +1,408 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: addch.c,v 1.54 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: addch
+
+ Synopsis:
+ int addch(const chtype ch);
+ int waddch(WINDOW *win, const chtype ch);
+ int mvaddch(int y, int x, const chtype ch);
+ int mvwaddch(WINDOW *win, int y, int x, const chtype ch);
+ int echochar(const chtype ch);
+ int wechochar(WINDOW *win, const chtype ch);
+
+ int addrawch(chtype ch);
+ int waddrawch(WINDOW *win, chtype ch);
+ int mvaddrawch(int y, int x, chtype ch);
+ int mvwaddrawch(WINDOW *win, int y, int x, chtype ch);
+
+ int add_wch(const cchar_t *wch);
+ int wadd_wch(WINDOW *win, const cchar_t *wch);
+ int mvadd_wch(int y, int x, const cchar_t *wch);
+ int mvwadd_wch(WINDOW *win, int y, int x, const cchar_t *wch);
+ int echo_wchar(const cchar_t *wch);
+ int wecho_wchar(WINDOW *win, const cchar_t *wch);
+
+ Description:
+ addch() adds the chtype ch to the default window (stdscr) at the
+ current cursor position, and advances the cursor. Note that
+ chtypes can convey both text (a single character) and
+ attributes, including a color pair. add_wch() is the wide-
+ character version of this function, taking a pointer to a
+ cchar_t instead of a chtype.
+
+ waddch() is like addch(), but also lets you specify the window.
+ (This is in fact the core output routine.) wadd_wch() is the
+ wide version.
+
+ mvaddch() moves the cursor to the specified (y, x) position, and
+ adds ch to stdscr. mvadd_wch() is the wide version.
+
+ mvwaddch() moves the cursor to the specified position and adds
+ ch to the specified window. mvwadd_wch() is the wide version.
+
+ echochar() adds ch to stdscr at the current cursor position and
+ calls refresh(). echo_wchar() is the wide version.
+
+ wechochar() adds ch to the specified window and calls
+ wrefresh(). wecho_wchar() is the wide version.
+
+ addrawch(), waddrawch(), mvaddrawch() and mvwaddrawch() are
+ PDCurses-specific wrappers for addch() etc. that disable the
+ translation of control characters.
+
+ The following applies to all these functions:
+
+ If the cursor moves on to the right margin, an automatic newline
+ is performed. If scrollok is enabled, and a character is added
+ to the bottom right corner of the window, the scrolling region
+ will be scrolled up one line. If scrolling is not allowed, ERR
+ will be returned.
+
+ If ch is a tab, newline, or backspace, the cursor will be moved
+ appropriately within the window. If ch is a newline, the
+ clrtoeol routine is called before the cursor is moved to the
+ beginning of the next line. If newline mapping is off, the
+ cursor will be moved to the next line, but the x coordinate will
+ be unchanged. If ch is a tab the cursor is moved to the next
+ tab position within the window. If ch is another control
+ character, it will be drawn in the ^X notation. Calling the
+ inch() routine after adding a control character returns the
+ representation of the control character, not the control
+ character.
+
+ Video attributes can be combined with a character by ORing them
+ into the parameter. Text, including attributes, can be copied
+ from one place to another by using inch() and addch().
+
+ Note that in PDCurses, for now, a cchar_t and a chtype are the
+ same. The text field is 16 bits wide, and is treated as Unicode
+ (UCS-2) when PDCurses is built with wide-character support
+ (define PDC_WIDE). So, in functions that take a chtype, like
+ addch(), both the wide and narrow versions will handle Unicode.
+ But for portability, you should use the wide functions.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ addch Y Y Y
+ waddch Y Y Y
+ mvaddch Y Y Y
+ mvwaddch Y Y Y
+ echochar Y - 3.0
+ wechochar Y - 3.0
+ addrawch - - -
+ waddrawch - - -
+ mvaddrawch - - -
+ mvwaddrawch - - -
+ add_wch Y
+ wadd_wch Y
+ mvadd_wch Y
+ mvwadd_wch Y
+ echo_wchar Y
+ wecho_wchar Y
+
+**man-end****************************************************************/
+
+int waddch(WINDOW *win, const chtype ch)
+{
+ int x, y;
+ chtype text, attr;
+ bool xlat;
+
+ PDC_LOG(("waddch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
+ win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
+
+ if (!win)
+ return ERR;
+
+ x = win->_curx;
+ y = win->_cury;
+
+ if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
+ return ERR;
+
+ xlat = !SP->raw_out && !(ch & A_ALTCHARSET);
+ text = ch & A_CHARTEXT;
+ attr = ch & A_ATTRIBUTES;
+
+ if (xlat && (text < ' ' || text == 0x7f))
+ {
+ int x2;
+
+ switch (text)
+ {
+ case '\t':
+ for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++)
+ {
+ if (waddch(win, attr | ' ') == ERR)
+ return ERR;
+
+ /* if tab to next line, exit the loop */
+
+ if (!win->_curx)
+ break;
+ }
+ return OK;
+
+ case '\n':
+ /* if lf -> crlf */
+
+ if (!SP->raw_out)
+ x = 0;
+
+ wclrtoeol(win);
+
+ if (++y > win->_bmarg)
+ {
+ y--;
+
+ if (wscrl(win, 1) == ERR)
+ return ERR;
+ }
+
+ break;
+
+ case '\b':
+ /* don't back over left margin */
+
+ if (--x < 0)
+ case '\r':
+ x = 0;
+
+ break;
+
+ case 0x7f:
+ if (waddch(win, attr | '^') == ERR)
+ return ERR;
+
+ return waddch(win, attr | '?');
+
+ default:
+ /* handle control chars */
+
+ if (waddch(win, attr | '^') == ERR)
+ return ERR;
+
+ return waddch(win, ch + '@');
+ }
+ }
+ else
+ {
+ /* If the incoming character doesn't have its own attribute,
+ then use the current attributes for the window. If it has
+ attributes but not a color component, OR the attributes to
+ the current attributes for the window. If it has a color
+ component, use the attributes solely from the incoming
+ character. */
+
+ if (!(attr & A_COLOR))
+ attr |= win->_attrs;
+
+ /* wrs (4/10/93): Apply the same sort of logic for the window
+ background, in that it only takes precedence if other color
+ attributes are not there and that the background character
+ will only print if the printing character is blank. */
+
+ if (!(attr & A_COLOR))
+ attr |= win->_bkgd & A_ATTRIBUTES;
+ else
+ attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
+
+ if (text == ' ')
+ text = win->_bkgd & A_CHARTEXT;
+
+ /* Add the attribute back into the character. */
+
+ text |= attr;
+
+ /* Only change _firstch/_lastch if the character to be added is
+ different from the character/attribute that is already in
+ that position in the window. */
+
+ if (win->_y[y][x] != text)
+ {
+ if (win->_firstch[y] == _NO_CHANGE)
+ win->_firstch[y] = win->_lastch[y] = x;
+ else
+ if (x < win->_firstch[y])
+ win->_firstch[y] = x;
+ else
+ if (x > win->_lastch[y])
+ win->_lastch[y] = x;
+
+ win->_y[y][x] = text;
+ }
+
+ if (++x >= win->_maxx)
+ {
+ /* wrap around test */
+
+ x = 0;
+
+ if (++y > win->_bmarg)
+ {
+ y--;
+
+ if (wscrl(win, 1) == ERR)
+ {
+ PDC_sync(win);
+ return ERR;
+ }
+ }
+ }
+ }
+
+ win->_curx = x;
+ win->_cury = y;
+
+ if (win->_immed)
+ wrefresh(win);
+ if (win->_sync)
+ wsyncup(win);
+
+ return OK;
+}
+
+int addch(const chtype ch)
+{
+ PDC_LOG(("addch() - called: ch=%x\n", ch));
+
+ return waddch(stdscr, ch);
+}
+
+int mvaddch(int y, int x, const chtype ch)
+{
+ PDC_LOG(("mvaddch() - called: y=%d x=%d ch=%x\n", y, x, ch));
+
+ if (move(y,x) == ERR)
+ return ERR;
+
+ return waddch(stdscr, ch);
+}
+
+int mvwaddch(WINDOW *win, int y, int x, const chtype ch)
+{
+ PDC_LOG(("mvwaddch() - called: win=%p y=%d x=%d ch=%d\n", win, y, x, ch));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddch(win, ch);
+}
+
+int echochar(const chtype ch)
+{
+ PDC_LOG(("echochar() - called: ch=%x\n", ch));
+
+ return wechochar(stdscr, ch);
+}
+
+int wechochar(WINDOW *win, const chtype ch)
+{
+ PDC_LOG(("wechochar() - called: win=%p ch=%x\n", win, ch));
+
+ if (waddch(win, ch) == ERR)
+ return ERR;
+
+ return wrefresh(win);
+}
+
+int waddrawch(WINDOW *win, chtype ch)
+{
+ PDC_LOG(("waddrawch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
+ win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
+
+ if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f)
+ ch |= A_ALTCHARSET;
+
+ return waddch(win, ch);
+}
+
+int addrawch(chtype ch)
+{
+ PDC_LOG(("addrawch() - called: ch=%x\n", ch));
+
+ return waddrawch(stdscr, ch);
+}
+
+int mvaddrawch(int y, int x, chtype ch)
+{
+ PDC_LOG(("mvaddrawch() - called: y=%d x=%d ch=%d\n", y, x, ch));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return waddrawch(stdscr, ch);
+}
+
+int mvwaddrawch(WINDOW *win, int y, int x, chtype ch)
+{
+ PDC_LOG(("mvwaddrawch() - called: win=%p y=%d x=%d ch=%d\n",
+ win, y, x, ch));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddrawch(win, ch);
+}
+
+#ifdef PDC_WIDE
+int wadd_wch(WINDOW *win, const cchar_t *wch)
+{
+ PDC_LOG(("wadd_wch() - called: win=%p wch=%x\n", win, *wch));
+
+ return wch ? waddch(win, *wch) : ERR;
+}
+
+int add_wch(const cchar_t *wch)
+{
+ PDC_LOG(("add_wch() - called: wch=%x\n", *wch));
+
+ return wadd_wch(stdscr, wch);
+}
+
+int mvadd_wch(int y, int x, const cchar_t *wch)
+{
+ PDC_LOG(("mvaddch() - called: y=%d x=%d wch=%x\n", y, x, *wch));
+
+ if (move(y,x) == ERR)
+ return ERR;
+
+ return wadd_wch(stdscr, wch);
+}
+
+int mvwadd_wch(WINDOW *win, int y, int x, const cchar_t *wch)
+{
+ PDC_LOG(("mvwaddch() - called: win=%p y=%d x=%d wch=%d\n",
+ win, y, x, *wch));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wadd_wch(win, wch);
+}
+
+int echo_wchar(const cchar_t *wch)
+{
+ PDC_LOG(("echo_wchar() - called: wch=%x\n", *wch));
+
+ return wecho_wchar(stdscr, wch);
+}
+
+int wecho_wchar(WINDOW *win, const cchar_t *wch)
+{
+ PDC_LOG(("wecho_wchar() - called: win=%p wch=%x\n", win, *wch));
+
+ if (!wch || (wadd_wch(win, wch) == ERR))
+ return ERR;
+
+ return wrefresh(win);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/addchstr.c b/payloads/libpayload/curses/PDCurses/pdcurses/addchstr.c
new file mode 100644
index 0000000..249ea8d
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/addchstr.c
@@ -0,0 +1,242 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: addchstr.c,v 1.43 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: addchstr
+
+ Synopsis:
+ int addchstr(const chtype *ch);
+ int addchnstr(const chtype *ch, int n);
+ int waddchstr(WINDOW *win, const chtype *ch);
+ int waddchnstr(WINDOW *win, const chtype *ch, int n);
+ int mvaddchstr(int y, int x, const chtype *ch);
+ int mvaddchnstr(int y, int x, const chtype *ch, int n);
+ int mvwaddchstr(WINDOW *, int y, int x, const chtype *ch);
+ int mvwaddchnstr(WINDOW *, int y, int x, const chtype *ch, int n);
+
+ int add_wchstr(const cchar_t *wch);
+ int add_wchnstr(const cchar_t *wch, int n);
+ int wadd_wchstr(WINDOW *win, const cchar_t *wch);
+ int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n);
+ int mvadd_wchstr(int y, int x, const cchar_t *wch);
+ int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n);
+ int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch);
+ int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch,
+ int n);
+
+ Description:
+ These routines write a chtype or cchar_t string directly into
+ the window structure, starting at the current or specified
+ position. The four routines with n as the last argument copy at
+ most n elements, but no more than will fit on the line. If n =
+ -1 then the whole string is copied, up to the maximum number
+ that will fit on the line.
+
+ The cursor position is not advanced. These routines do not check
+ for newline or other special characters, nor does any line
+ wrapping occur.
+
+ Return Value:
+ All functions return OK or ERR.
+
+ Portability X/Open BSD SYS V
+ addchstr Y - 4.0
+ waddchstr Y - 4.0
+ mvaddchstr Y - 4.0
+ mvwaddchstr Y - 4.0
+ addchnstr Y - 4.0
+ waddchnstr Y - 4.0
+ mvaddchnstr Y - 4.0
+ mvwaddchnstr Y - 4.0
+ add_wchstr Y
+ wadd_wchstr Y
+ mvadd_wchstr Y
+ mvwadd_wchstr Y
+ add_wchnstr Y
+ wadd_wchnstr Y
+ mvadd_wchnstr Y
+ mvwadd_wchnstr Y
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+int waddchnstr(WINDOW *win, const chtype *ch, int n)
+{
+ int y, x, maxx, minx;
+ chtype *ptr;
+
+ PDC_LOG(("waddchnstr() - called: win=%p n=%d\n", win, n));
+
+ if (!win || !ch || !n || n < -1)
+ return ERR;
+
+ x = win->_curx;
+ y = win->_cury;
+ ptr = &(win->_y[y][x]);
+
+ if (n == -1 || n > win->_maxx - x)
+ n = win->_maxx - x;
+
+ minx = win->_firstch[y];
+ maxx = win->_lastch[y];
+
+ for (; n && *ch; n--, x++, ptr++, ch++)
+ {
+ if (*ptr != *ch)
+ {
+ if (x < minx || minx == _NO_CHANGE)
+ minx = x;
+
+ if (x > maxx)
+ maxx = x;
+
+ PDC_LOG(("y %d x %d minx %d maxx %d *ptr %x *ch"
+ " %x firstch: %d lastch: %d\n",
+ y, x, minx, maxx, *ptr, *ch,
+ win->_firstch[y], win->_lastch[y]));
+
+ *ptr = *ch;
+ }
+ }
+
+ win->_firstch[y] = minx;
+ win->_lastch[y] = maxx;
+
+ return OK;
+}
+
+int addchstr(const chtype *ch)
+{
+ PDC_LOG(("addchstr() - called\n"));
+
+ return waddchnstr(stdscr, ch, -1);
+}
+
+int addchnstr(const chtype *ch, int n)
+{
+ PDC_LOG(("addchnstr() - called\n"));
+
+ return waddchnstr(stdscr, ch, n);
+}
+
+int waddchstr(WINDOW *win, const chtype *ch)
+{
+ PDC_LOG(("waddchstr() - called: win=%p\n", win));
+
+ return waddchnstr(win, ch, -1);
+}
+
+int mvaddchstr(int y, int x, const chtype *ch)
+{
+ PDC_LOG(("mvaddchstr() - called: y %d x %d\n", y, x));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return waddchnstr(stdscr, ch, -1);
+}
+
+int mvaddchnstr(int y, int x, const chtype *ch, int n)
+{
+ PDC_LOG(("mvaddchnstr() - called: y %d x %d n %d\n", y, x, n));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return waddchnstr(stdscr, ch, n);
+}
+
+int mvwaddchstr(WINDOW *win, int y, int x, const chtype *ch)
+{
+ PDC_LOG(("mvwaddchstr() - called:\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddchnstr(win, ch, -1);
+}
+
+int mvwaddchnstr(WINDOW *win, int y, int x, const chtype *ch, int n)
+{
+ PDC_LOG(("mvwaddchnstr() - called: y %d x %d n %d \n", y, x, n));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddchnstr(win, ch, n);
+}
+
+#ifdef PDC_WIDE
+int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n)
+{
+ PDC_LOG(("wadd_wchnstr() - called: win=%p n=%d\n", win, n));
+
+ return waddchnstr(win, wch, n);
+}
+
+int add_wchstr(const cchar_t *wch)
+{
+ PDC_LOG(("add_wchstr() - called\n"));
+
+ return wadd_wchnstr(stdscr, wch, -1);
+}
+
+int add_wchnstr(const cchar_t *wch, int n)
+{
+ PDC_LOG(("add_wchnstr() - called\n"));
+
+ return wadd_wchnstr(stdscr, wch, n);
+}
+
+int wadd_wchstr(WINDOW *win, const cchar_t *wch)
+{
+ PDC_LOG(("wadd_wchstr() - called: win=%p\n", win));
+
+ return wadd_wchnstr(win, wch, -1);
+}
+
+int mvadd_wchstr(int y, int x, const cchar_t *wch)
+{
+ PDC_LOG(("mvadd_wchstr() - called: y %d x %d\n", y, x));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wadd_wchnstr(stdscr, wch, -1);
+}
+
+int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n)
+{
+ PDC_LOG(("mvadd_wchnstr() - called: y %d x %d n %d\n", y, x, n));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wadd_wchnstr(stdscr, wch, n);
+}
+
+int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch)
+{
+ PDC_LOG(("mvwadd_wchstr() - called:\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wadd_wchnstr(win, wch, -1);
+}
+
+int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch, int n)
+{
+ PDC_LOG(("mvwadd_wchnstr() - called: y %d x %d n %d \n", y, x, n));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wadd_wchnstr(win, wch, n);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/addstr.c b/payloads/libpayload/curses/PDCurses/pdcurses/addstr.c
new file mode 100644
index 0000000..ca19fd0
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/addstr.c
@@ -0,0 +1,237 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: addstr.c,v 1.44 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: addstr
+
+ Synopsis:
+ int addstr(const char *str);
+ int addnstr(const char *str, int n);
+ int waddstr(WINDOW *win, const char *str);
+ int waddnstr(WINDOW *win, const char *str, int n);
+ int mvaddstr(int y, int x, const char *str);
+ int mvaddnstr(int y, int x, const char *str, int n);
+ int mvwaddstr(WINDOW *win, int y, int x, const char *str);
+ int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n);
+
+ int addwstr(const wchar_t *wstr);
+ int addnwstr(const wchar_t *wstr, int n);
+ int waddwstr(WINDOW *win, const wchar_t *wstr);
+ int waddnwstr(WINDOW *win, const wchar_t *wstr, int n);
+ int mvaddwstr(int y, int x, const wchar_t *wstr);
+ int mvaddnwstr(int y, int x, const wchar_t *wstr, int n);
+ int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr);
+ int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
+
+ Description:
+ These routines write all the characters of the null-terminated
+ string str or wide-character string wstr to the given window.
+ The functionality is similar to calling waddch() once for each
+ character in the string; except that, when PDCurses is built
+ with wide-character support enabled, the narrow-character
+ functions treat the string as a multibyte string in the current
+ locale, and convert it. The routines with n as the last
+ argument write at most n characters; if n is negative, then the
+ entire string will be added.
+
+ Return Value:
+ All functions return OK or ERR.
+
+ Portability X/Open BSD SYS V
+ addstr Y Y Y
+ waddstr Y Y Y
+ mvaddstr Y Y Y
+ mvwaddstr Y Y Y
+ addnstr Y - 4.0
+ waddnstr Y - 4.0
+ mvaddnstr Y - 4.0
+ mvwaddnstr Y - 4.0
+ addwstr Y
+ waddwstr Y
+ mvaddwstr Y
+ mvwaddwstr Y
+ addnwstr Y
+ waddnwstr Y
+ mvaddnwstr Y
+ mvwaddnwstr Y
+
+**man-end****************************************************************/
+
+int waddnstr(WINDOW *win, const char *str, int n)
+{
+ int i = 0;
+
+ PDC_LOG(("waddnstr() - called: string=\"%s\" n %d \n", str, n));
+
+ if (!win || !str)
+ return ERR;
+
+ while (str[i] && (i < n || n < 0))
+ {
+#ifdef PDC_WIDE
+ wchar_t wch;
+ int retval = PDC_mbtowc(&wch, str + i, n >= 0 ? n - i : 6);
+
+ if (retval <= 0)
+ return OK;
+
+ i += retval;
+#else
+ chtype wch = (unsigned char)(str[i++]);
+#endif
+ if (waddch(win, wch) == ERR)
+ return ERR;
+ }
+
+ return OK;
+}
+
+int addstr(const char *str)
+{
+ PDC_LOG(("addstr() - called: string=\"%s\"\n", str));
+
+ return waddnstr(stdscr, str, -1);
+}
+
+int addnstr(const char *str, int n)
+{
+ PDC_LOG(("addnstr() - called: string=\"%s\" n %d \n", str, n));
+
+ return waddnstr(stdscr, str, n);
+}
+
+int waddstr(WINDOW *win, const char *str)
+{
+ PDC_LOG(("waddstr() - called: string=\"%s\"\n", str));
+
+ return waddnstr(win, str, -1);
+}
+
+int mvaddstr(int y, int x, const char *str)
+{
+ PDC_LOG(("mvaddstr() - called: y %d x %d string=\"%s\"\n", y, x, str));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return waddnstr(stdscr, str, -1);
+}
+
+int mvaddnstr(int y, int x, const char *str, int n)
+{
+ PDC_LOG(("mvaddnstr() - called: y %d x %d string=\"%s\" n %d \n",
+ y, x, str, n));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return waddnstr(stdscr, str, n);
+}
+
+int mvwaddstr(WINDOW *win, int y, int x, const char *str)
+{
+ PDC_LOG(("mvwaddstr() - called: string=\"%s\"\n", str));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddnstr(win, str, -1);
+}
+
+int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n)
+{
+ PDC_LOG(("mvwaddnstr() - called: y %d x %d string=\"%s\" n %d \n",
+ y, x, str, n));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddnstr(win, str, n);
+}
+
+#ifdef PDC_WIDE
+int waddnwstr(WINDOW *win, const wchar_t *wstr, int n)
+{
+ int i = 0;
+
+ PDC_LOG(("waddnwstr() - called\n"));
+
+ if (!win || !wstr)
+ return ERR;
+
+ while (wstr[i] && (i < n || n < 0))
+ {
+ chtype wch = wstr[i++];
+
+ if (waddch(win, wch) == ERR)
+ return ERR;
+ }
+
+ return OK;
+}
+
+int addwstr(const wchar_t *wstr)
+{
+ PDC_LOG(("addwstr() - called\n"));
+
+ return waddnwstr(stdscr, wstr, -1);
+}
+
+int addnwstr(const wchar_t *wstr, int n)
+{
+ PDC_LOG(("addnwstr() - called\n"));
+
+ return waddnwstr(stdscr, wstr, n);
+}
+
+int waddwstr(WINDOW *win, const wchar_t *wstr)
+{
+ PDC_LOG(("waddwstr() - called\n"));
+
+ return waddnwstr(win, wstr, -1);
+}
+
+int mvaddwstr(int y, int x, const wchar_t *wstr)
+{
+ PDC_LOG(("mvaddstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return waddnwstr(stdscr, wstr, -1);
+}
+
+int mvaddnwstr(int y, int x, const wchar_t *wstr, int n)
+{
+ PDC_LOG(("mvaddnstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return waddnwstr(stdscr, wstr, n);
+}
+
+int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr)
+{
+ PDC_LOG(("mvwaddstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddnwstr(win, wstr, -1);
+}
+
+int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n)
+{
+ PDC_LOG(("mvwaddnstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return waddnwstr(win, wstr, n);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/attr.c b/payloads/libpayload/curses/PDCurses/pdcurses/attr.c
new file mode 100644
index 0000000..123cb90
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/attr.c
@@ -0,0 +1,349 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: attr.c,v 1.41 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: attr
+
+ Synopsis:
+ int attroff(chtype attrs);
+ int wattroff(WINDOW *win, chtype attrs);
+ int attron(chtype attrs);
+ int wattron(WINDOW *win, chtype attrs);
+ int attrset(chtype attrs);
+ int wattrset(WINDOW *win, chtype attrs);
+ int standend(void);
+ int wstandend(WINDOW *win);
+ int standout(void);
+ int wstandout(WINDOW *win);
+
+ int color_set(short color_pair, void *opts);
+ int wcolor_set(WINDOW *win, short color_pair, void *opts);
+
+ int attr_get(attr_t *attrs, short *color_pair, void *opts);
+ int attr_off(attr_t attrs, void *opts);
+ int attr_on(attr_t attrs, void *opts);
+ int attr_set(attr_t attrs, short color_pair, void *opts);
+ int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair,
+ void *opts);
+ int wattr_off(WINDOW *win, attr_t attrs, void *opts);
+ int wattr_on(WINDOW *win, attr_t attrs, void *opts);
+ int wattr_set(WINDOW *win, attr_t attrs, short color_pair,
+ void *opts);
+
+ int chgat(int n, attr_t attr, short color, const void *opts);
+ int mvchgat(int y, int x, int n, attr_t attr, short color,
+ const void *opts);
+ int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr,
+ short color, const void *opts);
+ int wchgat(WINDOW *win, int n, attr_t attr, short color,
+ const void *opts);
+
+ chtype getattrs(WINDOW *win);
+
+ Description:
+ These functions manipulate the current attributes and/or colors
+ of the named window. These attributes can be any combination
+ of A_STANDOUT, A_REVERSE, A_BOLD, A_DIM, A_BLINK, A_UNDERLINE.
+
+ These constants are defined in <curses.h> and can be combined
+ with the bitwise-OR operator (|).
+
+ The current attributes of a window are applied to all chtypes
+ that are written into the window with waddch(). Attributes are
+ a property of the chtype, and move with the character through
+ any scrolling or insert/delete operations.
+
+ attrset() sets the current attributes of the given window to
+ attrs. attroff() turns off the named attributes without
+ affecting any other attributes; attron() turns them on.
+ color_set() sets the window color to the value of color_pair.
+
+ standout() is the same as attron(A_STANDOUT). standend() is the
+ same as attrset(A_NORMAL); that is, it turns off all attributes.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ attroff Y Y Y
+ wattroff Y Y Y
+ attron Y Y Y
+ wattron Y Y Y
+ attrset Y Y Y
+ wattrset Y Y Y
+ standend Y Y Y
+ wstandend Y Y Y
+ standout Y Y Y
+ wstandout Y Y Y
+ color_set Y
+ wcolor_set Y
+ attr_get Y
+ wattr_get Y
+ attr_on Y
+ wattr_on Y
+ attr_off Y
+ wattr_off Y
+ attr_set Y
+ wattr_set Y
+ chgat Y
+ wchgat Y
+ mvchgat Y
+ mvwchgat Y
+ getattrs -
+
+**man-end****************************************************************/
+
+int wattroff(WINDOW *win, chtype attrs)
+{
+ PDC_LOG(("wattroff() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_attrs &= (~attrs & A_ATTRIBUTES);
+
+ return OK;
+}
+
+int attroff(chtype attrs)
+{
+ PDC_LOG(("attroff() - called\n"));
+
+ return wattroff(stdscr, attrs);
+}
+
+int wattron(WINDOW *win, chtype attrs)
+{
+ chtype newcolr, oldcolr, newattr, oldattr;
+
+ PDC_LOG(("wattron() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ if ((win->_attrs & A_COLOR) && (attrs & A_COLOR))
+ {
+ oldcolr = win->_attrs & A_COLOR;
+ oldattr = win->_attrs ^ oldcolr;
+ newcolr = attrs & A_COLOR;
+ newattr = (attrs & A_ATTRIBUTES) ^ newcolr;
+ newattr |= oldattr;
+ win->_attrs = newattr | newcolr;
+ }
+ else
+ win->_attrs |= (attrs & A_ATTRIBUTES);
+
+ return OK;
+}
+
+int attron(chtype attrs)
+{
+ PDC_LOG(("attron() - called\n"));
+
+ return wattron(stdscr, attrs);
+}
+
+int wattrset(WINDOW *win, chtype attrs)
+{
+ PDC_LOG(("wattrset() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_attrs = attrs & A_ATTRIBUTES;
+
+ return OK;
+}
+
+int attrset(chtype attrs)
+{
+ PDC_LOG(("attrset() - called\n"));
+
+ return wattrset(stdscr, attrs);
+}
+
+int standend(void)
+{
+ PDC_LOG(("standend() - called\n"));
+
+ return wattrset(stdscr, A_NORMAL);
+}
+
+int standout(void)
+{
+ PDC_LOG(("standout() - called\n"));
+
+ return wattrset(stdscr, A_STANDOUT);
+}
+
+int wstandend(WINDOW *win)
+{
+ PDC_LOG(("wstandend() - called\n"));
+
+ return wattrset(win, A_NORMAL);
+}
+
+int wstandout(WINDOW *win)
+{
+ PDC_LOG(("wstandout() - called\n"));
+
+ return wattrset(win, A_STANDOUT);
+}
+
+chtype getattrs(WINDOW *win)
+{
+ return win ? win->_attrs : 0;
+}
+
+int wcolor_set(WINDOW *win, short color_pair, void *opts)
+{
+ PDC_LOG(("wcolor_set() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_attrs = (win->_attrs & ~A_COLOR) | COLOR_PAIR(color_pair);
+
+ return OK;
+}
+
+int color_set(short color_pair, void *opts)
+{
+ PDC_LOG(("color_set() - called\n"));
+
+ return wcolor_set(stdscr, color_pair, opts);
+}
+
+int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair, void *opts)
+{
+ PDC_LOG(("wattr_get() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ if (attrs)
+ *attrs = win->_attrs & (A_ATTRIBUTES & ~A_COLOR);
+
+ if (color_pair)
+ *color_pair = PAIR_NUMBER(win->_attrs);
+
+ return OK;
+}
+
+int attr_get(attr_t *attrs, short *color_pair, void *opts)
+{
+ PDC_LOG(("attr_get() - called\n"));
+
+ return wattr_get(stdscr, attrs, color_pair, opts);
+}
+
+int wattr_off(WINDOW *win, attr_t attrs, void *opts)
+{
+ PDC_LOG(("wattr_off() - called\n"));
+
+ return wattroff(win, attrs);
+}
+
+int attr_off(attr_t attrs, void *opts)
+{
+ PDC_LOG(("attr_off() - called\n"));
+
+ return wattroff(stdscr, attrs);
+}
+
+int wattr_on(WINDOW *win, attr_t attrs, void *opts)
+{
+ PDC_LOG(("wattr_off() - called\n"));
+
+ return wattron(win, attrs);
+}
+
+int attr_on(attr_t attrs, void *opts)
+{
+ PDC_LOG(("attr_on() - called\n"));
+
+ return wattron(stdscr, attrs);
+}
+
+int wattr_set(WINDOW *win, attr_t attrs, short color_pair, void *opts)
+{
+ PDC_LOG(("wattr_set() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_attrs = (attrs & (A_ATTRIBUTES & ~A_COLOR)) | COLOR_PAIR(color_pair);
+
+ return OK;
+}
+
+int attr_set(attr_t attrs, short color_pair, void *opts)
+{
+ PDC_LOG(("attr_get() - called\n"));
+
+ return wattr_set(stdscr, attrs, color_pair, opts);
+}
+
+int wchgat(WINDOW *win, int n, attr_t attr, short color, const void *opts)
+{
+ chtype *dest, newattr;
+ int startpos, endpos;
+
+ PDC_LOG(("wchgat() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ newattr = (attr & A_ATTRIBUTES) | COLOR_PAIR(color);
+
+ startpos = win->_curx;
+ endpos = ((n < 0) ? win->_maxx : min(startpos + n, win->_maxx)) - 1;
+ dest = win->_y[win->_cury];
+
+ for (n = startpos; n <= endpos; n++)
+ dest[n] = (dest[n] & A_CHARTEXT) | newattr;
+
+ n = win->_cury;
+
+ if (startpos < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE)
+ win->_firstch[n] = startpos;
+
+ if (endpos > win->_lastch[n])
+ win->_lastch[n] = endpos;
+
+ PDC_sync(win);
+
+ return OK;
+}
+
+int chgat(int n, attr_t attr, short color, const void *opts)
+{
+ PDC_LOG(("chgat() - called\n"));
+
+ return wchgat(stdscr, n, attr, color, opts);
+}
+
+int mvchgat(int y, int x, int n, attr_t attr, short color, const void *opts)
+{
+ PDC_LOG(("mvchgat() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wchgat(stdscr, n, attr, color, opts);
+}
+
+int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr, short color,
+ const void *opts)
+{
+ PDC_LOG(("mvwchgat() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wchgat(win, n, attr, color, opts);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/beep.c b/payloads/libpayload/curses/PDCurses/pdcurses/beep.c
new file mode 100644
index 0000000..9e92f45
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/beep.c
@@ -0,0 +1,65 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: beep.c,v 1.34 2008/07/13 16:08:17 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: beep
+
+ Synopsis:
+ int beep(void);
+ int flash(void);
+
+ Description:
+ beep() sounds the audible bell on the terminal, if possible;
+ if not, it calls flash().
+
+ flash() "flashes" the screen, by inverting the foreground and
+ background of every cell, pausing, and then restoring the
+ original attributes.
+
+ Return Value:
+ These functions return OK.
+
+ Portability X/Open BSD SYS V
+ beep Y Y Y
+ flash Y Y Y
+
+**man-end****************************************************************/
+
+int beep(void)
+{
+ PDC_LOG(("beep() - called\n"));
+
+ if (SP->audible)
+ PDC_beep();
+ else
+ flash();
+
+ return OK;
+}
+
+int flash(void)
+{
+ int z, y, x;
+
+ PDC_LOG(("flash() - called\n"));
+
+ /* Reverse each cell; wait; restore the screen */
+
+ for (z = 0; z < 2; z++)
+ {
+ for (y = 0; y < LINES; y++)
+ for (x = 0; x < COLS; x++)
+ curscr->_y[y][x] ^= A_REVERSE;
+
+ wrefresh(curscr);
+
+ if (!z)
+ napms(50);
+ }
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/bkgd.c b/payloads/libpayload/curses/PDCurses/pdcurses/bkgd.c
new file mode 100644
index 0000000..d511efe
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/bkgd.c
@@ -0,0 +1,220 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: bkgd.c,v 1.39 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: bkgd
+
+ Synopsis:
+ int bkgd(chtype ch);
+ void bkgdset(chtype ch);
+ chtype getbkgd(WINDOW *win);
+ int wbkgd(WINDOW *win, chtype ch);
+ void wbkgdset(WINDOW *win, chtype ch);
+
+ int bkgrnd(const cchar_t *wch);
+ void bkgrndset(const cchar_t *wch);
+ int getbkgrnd(cchar_t *wch);
+ int wbkgrnd(WINDOW *win, const cchar_t *wch);
+ void wbkgrndset(WINDOW *win, const cchar_t *wch);
+ int wgetbkgrnd(WINDOW *win, cchar_t *wch);
+
+ Description:
+ bkgdset() and wbkgdset() manipulate the background of a window.
+ The background is a chtype consisting of any combination of
+ attributes and a character; it is combined with each chtype
+ added or inserted to the window by waddch() or winsch(). Only
+ the attribute part is used to set the background of non-blank
+ characters, while both character and attributes are used for
+ blank positions.
+
+ bkgd() and wbkgd() not only change the background, but apply it
+ immediately to every cell in the window.
+
+ The attributes that are defined with the attrset()/attron() set
+ of functions take precedence over the background attributes if
+ there is a conflict (e.g., different color pairs).
+
+ Return Value:
+ bkgd() and wbkgd() return OK, unless the window is NULL, in
+ which case they return ERR.
+
+ Portability X/Open BSD SYS V
+ bkgd Y - 4.0
+ bkgdset Y - 4.0
+ getbkgd Y
+ wbkgd Y - 4.0
+ wbkgdset Y - 4.0
+ bkgrnd Y
+ bkgrndset Y
+ getbkgrnd Y
+ wbkgrnd Y
+ wbkgrndset Y
+ wgetbkgrnd Y
+
+**man-end****************************************************************/
+
+int wbkgd(WINDOW *win, chtype ch)
+{
+ int x, y;
+ chtype oldcolr, oldch, newcolr, newch, colr, attr;
+ chtype oldattr = 0, newattr = 0;
+ chtype *winptr;
+
+ PDC_LOG(("wbkgd() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ if (win->_bkgd == ch)
+ return OK;
+
+ oldcolr = win->_bkgd & A_COLOR;
+ if (oldcolr)
+ oldattr = (win->_bkgd & A_ATTRIBUTES) ^ oldcolr;
+
+ oldch = win->_bkgd & A_CHARTEXT;
+
+ wbkgdset(win, ch);
+
+ newcolr = win->_bkgd & A_COLOR;
+ if (newcolr)
+ newattr = (win->_bkgd & A_ATTRIBUTES) ^ newcolr;
+
+ newch = win->_bkgd & A_CHARTEXT;
+
+ /* what follows is what seems to occur in the System V
+ implementation of this routine */
+
+ for (y = 0; y < win->_maxy; y++)
+ {
+ for (x = 0; x < win->_maxx; x++)
+ {
+ winptr = win->_y[y] + x;
+
+ ch = *winptr;
+
+ /* determine the colors and attributes of the character read
+ from the window */
+
+ colr = ch & A_COLOR;
+ attr = ch & (A_ATTRIBUTES ^ A_COLOR);
+
+ /* if the color is the same as the old background color,
+ then make it the new background color, otherwise leave it */
+
+ if (colr == oldcolr)
+ colr = newcolr;
+
+ /* remove any attributes (non color) from the character that
+ were part of the old background, then combine the
+ remaining ones with the new background */
+
+ attr ^= oldattr;
+ attr |= newattr;
+
+ /* change character if it is there because it was the old
+ background character */
+
+ ch &= A_CHARTEXT;
+ if (ch == oldch)
+ ch = newch;
+
+ ch |= (attr | colr);
+
+ *winptr = ch;
+
+ }
+ }
+
+ touchwin(win);
+ PDC_sync(win);
+ return OK;
+}
+
+int bkgd(chtype ch)
+{
+ PDC_LOG(("bkgd() - called\n"));
+
+ return wbkgd(stdscr, ch);
+}
+
+void wbkgdset(WINDOW *win, chtype ch)
+{
+ PDC_LOG(("wbkgdset() - called\n"));
+
+ if (win)
+ {
+ if (!(ch & A_CHARTEXT))
+ ch |= ' ';
+
+ win->_bkgd = ch;
+ }
+}
+
+void bkgdset(chtype ch)
+{
+ PDC_LOG(("bkgdset() - called\n"));
+
+ wbkgdset(stdscr, ch);
+}
+
+chtype getbkgd(WINDOW *win)
+{
+ PDC_LOG(("getbkgd() - called\n"));
+
+ return win ? win->_bkgd : (chtype)ERR;
+}
+
+#ifdef PDC_WIDE
+int wbkgrnd(WINDOW *win, const cchar_t *wch)
+{
+ PDC_LOG(("wbkgrnd() - called\n"));
+
+ return wch ? wbkgd(win, *wch) : ERR;
+}
+
+int bkgrnd(const cchar_t *wch)
+{
+ PDC_LOG(("bkgrnd() - called\n"));
+
+ return wbkgrnd(stdscr, wch);
+}
+
+void wbkgrndset(WINDOW *win, const cchar_t *wch)
+{
+ PDC_LOG(("wbkgdset() - called\n"));
+
+ if (wch)
+ wbkgdset(win, *wch);
+}
+
+void bkgrndset(const cchar_t *wch)
+{
+ PDC_LOG(("bkgrndset() - called\n"));
+
+ wbkgrndset(stdscr, wch);
+}
+
+int wgetbkgrnd(WINDOW *win, cchar_t *wch)
+{
+ PDC_LOG(("wgetbkgrnd() - called\n"));
+
+ if (!win || !wch)
+ return ERR;
+
+ *wch = win->_bkgd;
+
+ return OK;
+}
+
+int getbkgrnd(cchar_t *wch)
+{
+ PDC_LOG(("getbkgrnd() - called\n"));
+
+ return wgetbkgrnd(stdscr, wch);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/border.c b/payloads/libpayload/curses/PDCurses/pdcurses/border.c
new file mode 100644
index 0000000..2a2ebcf
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/border.c
@@ -0,0 +1,408 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: border.c,v 1.53 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: border
+
+ Synopsis:
+ int border(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl,
+ chtype tr, chtype bl, chtype br);
+ int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts,
+ chtype bs, chtype tl, chtype tr, chtype bl, chtype br);
+ int box(WINDOW *win, chtype verch, chtype horch);
+ int hline(chtype ch, int n);
+ int vline(chtype ch, int n);
+ int whline(WINDOW *win, chtype ch, int n);
+ int wvline(WINDOW *win, chtype ch, int n);
+ int mvhline(int y, int x, chtype ch, int n);
+ int mvvline(int y, int x, chtype ch, int n);
+ int mvwhline(WINDOW *win, int y, int x, chtype ch, int n);
+ int mvwvline(WINDOW *win, int y, int x, chtype ch, int n);
+
+ int border_set(const cchar_t *ls, const cchar_t *rs,
+ const cchar_t *ts, const cchar_t *bs,
+ const cchar_t *tl, const cchar_t *tr,
+ const cchar_t *bl, const cchar_t *br);
+ int wborder_set(WINDOW *win, const cchar_t *ls, const cchar_t *rs,
+ const cchar_t *ts, const cchar_t *bs,
+ const cchar_t *tl, const cchar_t *tr,
+ const cchar_t *bl, const cchar_t *br);
+ int box_set(WINDOW *win, const cchar_t *verch, const cchar_t *horch);
+ int hline_set(const cchar_t *wch, int n);
+ int vline_set(const cchar_t *wch, int n);
+ int whline_set(WINDOW *win, const cchar_t *wch, int n);
+ int wvline_set(WINDOW *win, const cchar_t *wch, int n);
+ int mvhline_set(int y, int x, const cchar_t *wch, int n);
+ int mvvline_set(int y, int x, const cchar_t *wch, int n);
+ int mvwhline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n);
+ int mvwvline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n);
+
+ Description:
+ border(), wborder(), and box() draw a border around the edge of
+ the window. If any argument is zero, an appropriate default is
+ used:
+
+ ls left side of border ACS_VLINE
+ rs right side of border ACS_VLINE
+ ts top side of border ACS_HLINE
+ bs bottom side of border ACS_HLINE
+ tl top left corner of border ACS_ULCORNER
+ tr top right corner of border ACS_URCORNER
+ bl bottom left corner of border ACS_LLCORNER
+ br bottom right corner of border ACS_LRCORNER
+
+ hline() and whline() draw a horizontal line, using ch, starting
+ from the current cursor position. The cursor position does not
+ change. The line is at most n characters long, or as many as
+ will fit in the window.
+
+ vline() and wvline() draw a vertical line, using ch, starting
+ from the current cursor position. The cursor position does not
+ change. The line is at most n characters long, or as many as
+ will fit in the window.
+
+ Return Value:
+ These functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ border Y - 4.0
+ wborder Y - 4.0
+ box Y Y Y
+ hline Y - 4.0
+ vline Y - 4.0
+ whline Y - 4.0
+ wvline Y - 4.0
+ mvhline Y
+ mvvline Y
+ mvwhline Y
+ mvwvline Y
+ border_set Y
+ wborder_set Y
+ box_set Y
+ hline_set Y
+ vline_set Y
+ whline_set Y
+ wvline_set Y
+ mvhline_set Y
+ mvvline_set Y
+ mvwhline_set Y
+ mvwvline_set Y
+
+**man-end****************************************************************/
+
+/* _attr_passthru() -- Takes a single chtype 'ch' and checks if the
+ current attribute of window 'win', as set by wattrset(), and/or the
+ current background of win, as set by wbkgd(), should by combined with
+ it. Attributes set explicitly in ch take precedence. */
+
+static chtype _attr_passthru(WINDOW *win, chtype ch)
+{
+ chtype attr;
+
+ /* If the incoming character doesn't have its own attribute, then
+ use the current attributes for the window. If the incoming
+ character has attributes, but not a color component, OR the
+ attributes to the current attributes for the window. If the
+ incoming character has a color component, use only the attributes
+ from the incoming character. */
+
+ attr = ch & A_ATTRIBUTES;
+ if (!(attr & A_COLOR))
+ attr |= win->_attrs;
+
+ /* wrs (4/10/93) -- Apply the same sort of logic for the window
+ background, in that it only takes precedence if other color
+ attributes are not there. */
+
+ if (!(attr & A_COLOR))
+ attr |= win->_bkgd & A_ATTRIBUTES;
+ else
+ attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
+
+ ch = (ch & A_CHARTEXT) | attr;
+
+ return ch;
+}
+
+int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts, chtype bs,
+ chtype tl, chtype tr, chtype bl, chtype br)
+{
+ int i, ymax, xmax;
+
+ PDC_LOG(("wborder() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ ymax = win->_maxy - 1;
+ xmax = win->_maxx - 1;
+
+ ls = _attr_passthru(win, ls ? ls : ACS_VLINE);
+ rs = _attr_passthru(win, rs ? rs : ACS_VLINE);
+ ts = _attr_passthru(win, ts ? ts : ACS_HLINE);
+ bs = _attr_passthru(win, bs ? bs : ACS_HLINE);
+ tl = _attr_passthru(win, tl ? tl : ACS_ULCORNER);
+ tr = _attr_passthru(win, tr ? tr : ACS_URCORNER);
+ bl = _attr_passthru(win, bl ? bl : ACS_LLCORNER);
+ br = _attr_passthru(win, br ? br : ACS_LRCORNER);
+
+ for (i = 1; i < xmax; i++)
+ {
+ win->_y[0][i] = ts;
+ win->_y[ymax][i] = bs;
+ }
+
+ for (i = 1; i < ymax; i++)
+ {
+ win->_y[i][0] = ls;
+ win->_y[i][xmax] = rs;
+ }
+
+ win->_y[0][0] = tl;
+ win->_y[0][xmax] = tr;
+ win->_y[ymax][0] = bl;
+ win->_y[ymax][xmax] = br;
+
+ for (i = 0; i <= ymax; i++)
+ {
+ win->_firstch[i] = 0;
+ win->_lastch[i] = xmax;
+ }
+
+ PDC_sync(win);
+
+ return OK;
+}
+
+int border(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl,
+ chtype tr, chtype bl, chtype br)
+{
+ PDC_LOG(("border() - called\n"));
+
+ return wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br);
+}
+
+int box(WINDOW *win, chtype verch, chtype horch)
+{
+ PDC_LOG(("box() - called\n"));
+
+ return wborder(win, verch, verch, horch, horch, 0, 0, 0, 0);
+}
+
+int whline(WINDOW *win, chtype ch, int n)
+{
+ chtype *dest;
+ int startpos, endpos;
+
+ PDC_LOG(("whline() - called\n"));
+
+ if (!win || n < 1)
+ return ERR;
+
+ startpos = win->_curx;
+ endpos = min(startpos + n, win->_maxx) - 1;
+ dest = win->_y[win->_cury];
+ ch = _attr_passthru(win, ch ? ch : ACS_HLINE);
+
+ for (n = startpos; n <= endpos; n++)
+ dest[n] = ch;
+
+ n = win->_cury;
+
+ if (startpos < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE)
+ win->_firstch[n] = startpos;
+
+ if (endpos > win->_lastch[n])
+ win->_lastch[n] = endpos;
+
+ PDC_sync(win);
+
+ return OK;
+}
+
+int hline(chtype ch, int n)
+{
+ PDC_LOG(("hline() - called\n"));
+
+ return whline(stdscr, ch, n);
+}
+
+int mvhline(int y, int x, chtype ch, int n)
+{
+ PDC_LOG(("mvhline() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return whline(stdscr, ch, n);
+}
+
+int mvwhline(WINDOW *win, int y, int x, chtype ch, int n)
+{
+ PDC_LOG(("mvwhline() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return whline(win, ch, n);
+}
+
+int wvline(WINDOW *win, chtype ch, int n)
+{
+ int endpos, x;
+
+ PDC_LOG(("wvline() - called\n"));
+
+ if (!win || n < 1)
+ return ERR;
+
+ endpos = min(win->_cury + n, win->_maxy);
+ x = win->_curx;
+
+ ch = _attr_passthru(win, ch ? ch : ACS_VLINE);
+
+ for (n = win->_cury; n < endpos; n++)
+ {
+ win->_y[n][x] = ch;
+
+ if (x < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE)
+ win->_firstch[n] = x;
+
+ if (x > win->_lastch[n])
+ win->_lastch[n] = x;
+ }
+
+ PDC_sync(win);
+
+ return OK;
+}
+
+int vline(chtype ch, int n)
+{
+ PDC_LOG(("vline() - called\n"));
+
+ return wvline(stdscr, ch, n);
+}
+
+int mvvline(int y, int x, chtype ch, int n)
+{
+ PDC_LOG(("mvvline() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wvline(stdscr, ch, n);
+}
+
+int mvwvline(WINDOW *win, int y, int x, chtype ch, int n)
+{
+ PDC_LOG(("mvwvline() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wvline(win, ch, n);
+}
+
+#ifdef PDC_WIDE
+int wborder_set(WINDOW *win, const cchar_t *ls, const cchar_t *rs,
+ const cchar_t *ts, const cchar_t *bs, const cchar_t *tl,
+ const cchar_t *tr, const cchar_t *bl, const cchar_t *br)
+{
+ PDC_LOG(("wborder_set() - called\n"));
+
+ return wborder(win, ls ? *ls : 0, rs ? *rs : 0, ts ? *ts : 0,
+ bs ? *bs : 0, tl ? *tl : 0, tr ? *tr : 0,
+ bl ? *bl : 0, br ? *br : 0);
+}
+
+int border_set(const cchar_t *ls, const cchar_t *rs, const cchar_t *ts,
+ const cchar_t *bs, const cchar_t *tl, const cchar_t *tr,
+ const cchar_t *bl, const cchar_t *br)
+{
+ PDC_LOG(("border_set() - called\n"));
+
+ return wborder_set(stdscr, ls, rs, ts, bs, tl, tr, bl, br);
+}
+
+int box_set(WINDOW *win, const cchar_t *verch, const cchar_t *horch)
+{
+ PDC_LOG(("box_set() - called\n"));
+
+ return wborder_set(win, verch, verch, horch, horch,
+ (const cchar_t *)NULL, (const cchar_t *)NULL,
+ (const cchar_t *)NULL, (const cchar_t *)NULL);
+}
+
+int whline_set(WINDOW *win, const cchar_t *wch, int n)
+{
+ PDC_LOG(("whline_set() - called\n"));
+
+ return wch ? whline(win, *wch, n) : ERR;
+}
+
+int hline_set(const cchar_t *wch, int n)
+{
+ PDC_LOG(("hline_set() - called\n"));
+
+ return whline_set(stdscr, wch, n);
+}
+
+int mvhline_set(int y, int x, const cchar_t *wch, int n)
+{
+ PDC_LOG(("mvhline_set() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return whline_set(stdscr, wch, n);
+}
+
+int mvwhline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n)
+{
+ PDC_LOG(("mvwhline_set() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return whline_set(win, wch, n);
+}
+
+int wvline_set(WINDOW *win, const cchar_t *wch, int n)
+{
+ PDC_LOG(("wvline_set() - called\n"));
+
+ return wch ? wvline(win, *wch, n) : ERR;
+}
+
+int vline_set(const cchar_t *wch, int n)
+{
+ PDC_LOG(("vline_set() - called\n"));
+
+ return wvline_set(stdscr, wch, n);
+}
+
+int mvvline_set(int y, int x, const cchar_t *wch, int n)
+{
+ PDC_LOG(("mvvline_set() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wvline_set(stdscr, wch, n);
+}
+
+int mvwvline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n)
+{
+ PDC_LOG(("mvwvline_set() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wvline_set(win, wch, n);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/clear.c b/payloads/libpayload/curses/PDCurses/pdcurses/clear.c
new file mode 100644
index 0000000..75426e2
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/clear.c
@@ -0,0 +1,154 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: clear.c,v 1.35 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: clear
+
+ Synopsis:
+ int clear(void);
+ int wclear(WINDOW *win);
+ int erase(void);
+ int werase(WINDOW *win);
+ int clrtobot(void);
+ int wclrtobot(WINDOW *win);
+ int clrtoeol(void);
+ int wclrtoeol(WINDOW *win);
+
+ Description:
+ erase() and werase() copy blanks (i.e. the background chtype) to
+ every cell of the window.
+
+ clear() and wclear() are similar to erase() and werase(), but
+ they also call clearok() to ensure that the the window is
+ cleared on the next wrefresh().
+
+ clrtobot() and wclrtobot() clear the window from the current
+ cursor position to the end of the window.
+
+ clrtoeol() and wclrtoeol() clear the window from the current
+ cursor position to the end of the current line.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ clear Y Y Y
+ wclear Y Y Y
+ erase Y Y Y
+ werase Y Y Y
+ clrtobot Y Y Y
+ wclrtobot Y Y Y
+ clrtoeol Y Y Y
+ wclrtoeol Y Y Y
+
+**man-end****************************************************************/
+
+int wclrtoeol(WINDOW *win)
+{
+ int x, y, minx;
+ chtype blank, *ptr;
+
+ PDC_LOG(("wclrtoeol() - called: Row: %d Col: %d\n",
+ win->_cury, win->_curx));
+
+ if (!win)
+ return ERR;
+
+ y = win->_cury;
+ x = win->_curx;
+
+ /* wrs (4/10/93) account for window background */
+
+ blank = win->_bkgd;
+
+ for (minx = x, ptr = &win->_y[y][x]; minx < win->_maxx; minx++, ptr++)
+ *ptr = blank;
+
+ if (x < win->_firstch[y] || win->_firstch[y] == _NO_CHANGE)
+ win->_firstch[y] = x;
+
+ win->_lastch[y] = win->_maxx - 1;
+
+ PDC_sync(win);
+ return OK;
+}
+
+int clrtoeol(void)
+{
+ PDC_LOG(("clrtoeol() - called\n"));
+
+ return wclrtoeol(stdscr);
+}
+
+int wclrtobot(WINDOW *win)
+{
+ PDC_LOG(("wclrtobot() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ int savey = win->_cury;
+ int savex = win->_curx;
+
+ /* should this involve scrolling region somehow ? */
+
+ if (win->_cury + 1 < win->_maxy)
+ {
+ win->_curx = 0;
+ win->_cury++;
+ for (; win->_maxy > win->_cury; win->_cury++)
+ wclrtoeol(win);
+ win->_cury = savey;
+ win->_curx = savex;
+ }
+ wclrtoeol(win);
+
+ PDC_sync(win);
+ return OK;
+}
+
+int clrtobot(void)
+{
+ PDC_LOG(("clrtobot() - called\n"));
+
+ return wclrtobot(stdscr);
+}
+
+int werase(WINDOW *win)
+{
+ PDC_LOG(("werase() - called\n"));
+
+ if (wmove(win, 0, 0) == ERR)
+ return ERR;
+
+ return wclrtobot(win);
+}
+
+int erase(void)
+{
+ PDC_LOG(("erase() - called\n"));
+
+ return werase(stdscr);
+}
+
+int wclear(WINDOW *win)
+{
+ PDC_LOG(("wclear() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_clear = TRUE;
+ return werase(win);
+}
+
+int clear(void)
+{
+ PDC_LOG(("clear() - called\n"));
+
+ return wclear(stdscr);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/color.c b/payloads/libpayload/curses/PDCurses/pdcurses/color.c
new file mode 100644
index 0000000..7e8fc4c
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/color.c
@@ -0,0 +1,295 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: color.c,v 1.83 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: color
+
+ Synopsis:
+ int start_color(void);
+ int init_pair(short pair, short fg, short bg);
+ int init_color(short color, short red, short green, short blue);
+ bool has_colors(void);
+ bool can_change_color(void);
+ int color_content(short color, short *red, short *green, short *blue);
+ int pair_content(short pair, short *fg, short *bg);
+
+ int assume_default_colors(int f, int b);
+ int use_default_colors(void);
+
+ int PDC_set_line_color(short color);
+
+ Description:
+ To use these routines, start_color() must be called, usually
+ immediately after initscr(). Colors are always used in pairs,
+ referred to as color-pairs. A color-pair consists of a
+ foreground color and a background color. A color-pair is
+ initialized via init_pair(). After initialization, COLOR_PAIR(n)
+ can be used like any other video attribute.
+
+ start_color() initializes eight basic colors (black, red, green,
+ yellow, blue, magenta, cyan, and white), and two global
+ variables; COLORS and COLOR_PAIRS (respectively defining the
+ maximum number of colors and color-pairs the terminal is capable
+ of displaying).
+
+ init_pair() changes the definition of a color-pair. It takes
+ three arguments: the number of the color-pair to be redefined,
+ and the new values of the foreground and background colors. The
+ pair number must be between 0 and COLOR_PAIRS - 1, inclusive.
+ The foreground and background must be between 0 and COLORS - 1,
+ inclusive. If the color pair was previously initialized, the
+ screen is refreshed, and all occurrences of that color-pair are
+ changed to the new definition.
+
+ has_colors() indicates if the terminal supports, and can
+ maniplulate color. It returns TRUE or FALSE.
+
+ can_change_color() indicates if the terminal has the capability
+ to change the definition of its colors.
+
+ pair_content() is used to determine what the colors of a given
+ color-pair consist of.
+
+ assume_default_colors() and use_default_colors() emulate the
+ ncurses extensions of the same names. assume_default_colors(f,
+ b) is essentially the same as init_pair(0, f, b) (which isn't
+ allowed); it redefines the default colors. use_default_colors()
+ allows the use of -1 as a foreground or background color with
+ init_pair(), and calls assume_default_colors(-1, -1); -1
+ represents the foreground or background color that the terminal
+ had at startup. If the environment variable PDC_ORIGINAL_COLORS
+ is set at the time start_color() is called, that's equivalent to
+ calling use_default_colors().
+
+ PDC_set_line_color() is used to set the color, globally, for
+ the color of the lines drawn for the attributes: A_UNDERLINE,
+ A_OVERLINE, A_LEFTLINE and A_RIGHTLINE. A value of -1 (the
+ default) indicates that the current foreground color should be
+ used.
+
+ NOTE: COLOR_PAIR() and PAIR_NUMBER() are implemented as macros.
+
+ Return Value:
+ All functions return OK on success and ERR on error, except for
+ has_colors() and can_change_colors(), which return TRUE or FALSE.
+
+ Portability X/Open BSD SYS V
+ start_color Y - 3.2
+ init_pair Y - 3.2
+ init_color Y - 3.2
+ has_colors Y - 3.2
+ can_change_color Y - 3.2
+ color_content Y - 3.2
+ pair_content Y - 3.2
+ assume_default_colors - - -
+ use_default_colors - - -
+ PDC_set_line_color - - -
+
+**man-end****************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+
+int COLORS = 0;
+int COLOR_PAIRS = PDC_COLOR_PAIRS;
+
+bool pdc_color_started = FALSE;
+
+/* pair_set[] tracks whether a pair has been set via init_pair() */
+
+static bool pair_set[PDC_COLOR_PAIRS];
+static bool default_colors = FALSE;
+static short first_col = 0;
+
+int start_color(void)
+{
+ PDC_LOG(("start_color() - called\n"));
+
+ if (SP->mono)
+ return ERR;
+
+ pdc_color_started = TRUE;
+
+ PDC_set_blink(FALSE); /* Also sets COLORS, to 8 or 16 */
+
+ if (!default_colors && SP->orig_attr && getenv("PDC_ORIGINAL_COLORS"))
+ default_colors = TRUE;
+
+ PDC_init_atrtab();
+
+ memset(pair_set, 0, PDC_COLOR_PAIRS);
+
+ return OK;
+}
+
+static void _normalize(short *fg, short *bg)
+{
+ if (*fg == -1)
+ *fg = SP->orig_attr ? SP->orig_fore : COLOR_WHITE;
+
+ if (*bg == -1)
+ *bg = SP->orig_attr ? SP->orig_back : COLOR_BLACK;
+}
+
+int init_pair(short pair, short fg, short bg)
+{
+ PDC_LOG(("init_pair() - called: pair %d fg %d bg %d\n", pair, fg, bg));
+
+ if (!pdc_color_started || pair < 1 || pair >= COLOR_PAIRS ||
+ fg < first_col || fg >= COLORS || bg < first_col || bg >= COLORS)
+ return ERR;
+
+ _normalize(&fg, &bg);
+
+ /* To allow the PDC_PRESERVE_SCREEN option to work, we only reset
+ curscr if this call to init_pair() alters a color pair created by
+ the user. */
+
+ if (pair_set[pair])
+ {
+ short oldfg, oldbg;
+
+ PDC_pair_content(pair, &oldfg, &oldbg);
+
+ if (oldfg != fg || oldbg != bg)
+ curscr->_clear = TRUE;
+ }
+
+ PDC_init_pair(pair, fg, bg);
+
+ pair_set[pair] = TRUE;
+
+ return OK;
+}
+
+bool has_colors(void)
+{
+ PDC_LOG(("has_colors() - called\n"));
+
+ return !(SP->mono);
+}
+
+int init_color(short color, short red, short green, short blue)
+{
+ PDC_LOG(("init_color() - called\n"));
+
+ if (color < 0 || color >= COLORS || !PDC_can_change_color() ||
+ red < 0 || red > 1000 || green < 0 || green > 1000 ||
+ blue < 0 || blue > 1000)
+ return ERR;
+
+ return PDC_init_color(color, red, green, blue);
+}
+
+int color_content(short color, short *red, short *green, short *blue)
+{
+ PDC_LOG(("color_content() - called\n"));
+
+ if (color < 0 || color >= COLORS || !red || !green || !blue)
+ return ERR;
+
+ if (PDC_can_change_color())
+ return PDC_color_content(color, red, green, blue);
+ else
+ {
+ /* Simulated values for platforms that don't support palette
+ changing */
+
+ short maxval = (color & 8) ? 1000 : 680;
+
+ *red = (color & COLOR_RED) ? maxval : 0;
+ *green = (color & COLOR_GREEN) ? maxval : 0;
+ *blue = (color & COLOR_BLUE) ? maxval : 0;
+
+ return OK;
+ }
+}
+
+bool can_change_color(void)
+{
+ PDC_LOG(("can_change_color() - called\n"));
+
+ return PDC_can_change_color();
+}
+
+int pair_content(short pair, short *fg, short *bg)
+{
+ PDC_LOG(("pair_content() - called\n"));
+
+ if (pair < 0 || pair >= COLOR_PAIRS || !fg || !bg)
+ return ERR;
+
+ return PDC_pair_content(pair, fg, bg);
+}
+
+int assume_default_colors(int f, int b)
+{
+ PDC_LOG(("assume_default_colors() - called: f %d b %d\n", f, b));
+
+ if (f < -1 || f >= COLORS || b < -1 || b >= COLORS)
+ return ERR;
+
+ if (pdc_color_started)
+ {
+ short fg, bg, oldfg, oldbg;
+
+ fg = f;
+ bg = b;
+
+ _normalize(&fg, &bg);
+
+ PDC_pair_content(0, &oldfg, &oldbg);
+
+ if (oldfg != fg || oldbg != bg)
+ curscr->_clear = TRUE;
+
+ PDC_init_pair(0, fg, bg);
+ }
+
+ return OK;
+}
+
+int use_default_colors(void)
+{
+ PDC_LOG(("use_default_colors() - called\n"));
+
+ default_colors = TRUE;
+ first_col = -1;
+
+ return assume_default_colors(-1, -1);
+}
+
+int PDC_set_line_color(short color)
+{
+ PDC_LOG(("PDC_set_line_color() - called: %d\n", color));
+
+ if (color < -1 || color >= COLORS)
+ return ERR;
+
+ SP->line_color = color;
+
+ return OK;
+}
+
+void PDC_init_atrtab(void)
+{
+ int i;
+ short fg, bg;
+
+ if (pdc_color_started && !default_colors)
+ {
+ fg = COLOR_WHITE;
+ bg = COLOR_BLACK;
+ }
+ else
+ fg = bg = -1;
+
+ _normalize(&fg, &bg);
+
+ for (i = 0; i < PDC_COLOR_PAIRS; i++)
+ PDC_init_pair(i, fg, bg);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/debug.c b/payloads/libpayload/curses/PDCurses/pdcurses/debug.c
new file mode 100644
index 0000000..812b0ee
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/debug.c
@@ -0,0 +1,81 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: debug.c,v 1.7 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: debug
+
+ Synopsis:
+ void traceon(void);
+ void traceoff(void);
+ void PDC_debug(const char *, ...);
+
+ Description:
+ traceon() and traceoff() toggle the recording of debugging
+ information to the file "trace". Although not standard, similar
+ functions are in some other curses implementations.
+
+ PDC_debug() is the function that writes to the file, based on
+ whether traceon() has been called. It's used from the PDC_LOG()
+ macro.
+
+ Portability X/Open BSD SYS V
+ traceon - - -
+ traceoff - - -
+ PDC_debug - - -
+
+**man-end****************************************************************/
+
+#include <string.h>
+#include <sys/types.h>
+#include <time.h>
+
+bool pdc_trace_on = FALSE;
+
+void PDC_debug(const char *fmt, ...)
+{
+ va_list args;
+ FILE *dbfp;
+ char hms[9];
+ time_t now;
+
+ if (!pdc_trace_on)
+ return;
+
+ /* open debug log file append */
+
+ dbfp = fopen("trace", "a");
+ if (!dbfp)
+ {
+ fprintf(stderr,
+ "PDC_debug(): Unable to open debug log file\n");
+ return;
+ }
+
+ time(&now);
+ strftime(hms, 9, "%H:%M:%S", localtime(&now));
+ fprintf(dbfp, "At: %8.8ld - %s ", (long) clock(), hms);
+
+ va_start(args, fmt);
+ vfprintf(dbfp, fmt, args);
+ va_end(args);
+
+ fclose(dbfp);
+}
+
+void traceon(void)
+{
+ PDC_LOG(("traceon() - called\n"));
+
+ pdc_trace_on = TRUE;
+}
+
+void traceoff(void)
+{
+ PDC_LOG(("traceoff() - called\n"));
+
+ pdc_trace_on = FALSE;
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/delch.c b/payloads/libpayload/curses/PDCurses/pdcurses/delch.c
new file mode 100644
index 0000000..9c2416e
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/delch.c
@@ -0,0 +1,93 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: delch.c,v 1.33 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: delch
+
+ Synopsis:
+ int delch(void);
+ int wdelch(WINDOW *win);
+ int mvdelch(int y, int x);
+ int mvwdelch(WINDOW *win, int y, int x);
+
+ Description:
+ The character under the cursor in the window is deleted. All
+ characters to the right on the same line are moved to the left
+ one position and the last character on the line is filled with
+ a blank. The cursor position does not change (after moving to
+ y, x if coordinates are specified).
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ delch Y Y Y
+ wdelch Y Y Y
+ mvdelch Y Y Y
+ mvwdelch Y Y Y
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+int wdelch(WINDOW *win)
+{
+ int y, x, maxx;
+ chtype *temp1;
+
+ PDC_LOG(("wdelch() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ y = win->_cury;
+ x = win->_curx;
+ maxx = win->_maxx - 1;
+ temp1 = &win->_y[y][x];
+
+ memmove(temp1, temp1 + 1, (maxx - x) * sizeof(chtype));
+
+ /* wrs (4/10/93) account for window background */
+
+ win->_y[y][maxx] = win->_bkgd;
+
+ win->_lastch[y] = maxx;
+
+ if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
+ win->_firstch[y] = x;
+
+ PDC_sync(win);
+
+ return OK;
+}
+
+int delch(void)
+{
+ PDC_LOG(("delch() - called\n"));
+
+ return wdelch(stdscr);
+}
+
+int mvdelch(int y, int x)
+{
+ PDC_LOG(("mvdelch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wdelch(stdscr);
+}
+
+int mvwdelch(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("mvwdelch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wdelch(win);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/deleteln.c b/payloads/libpayload/curses/PDCurses/pdcurses/deleteln.c
new file mode 100644
index 0000000..7e26d9b
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/deleteln.c
@@ -0,0 +1,208 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: deleteln.c,v 1.35 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: deleteln
+
+ Synopsis:
+ int deleteln(void);
+ int wdeleteln(WINDOW *win);
+ int insdelln(int n);
+ int winsdelln(WINDOW *win, int n);
+ int insertln(void);
+ int winsertln(WINDOW *win);
+
+ int mvdeleteln(int y, int x);
+ int mvwdeleteln(WINDOW *win, int y, int x);
+ int mvinsertln(int y, int x);
+ int mvwinsertln(WINDOW *win, int y, int x);
+
+ Description:
+ With the deleteln() and wdeleteln() functions, the line under
+ the cursor in the window is deleted. All lines below the
+ current line are moved up one line. The bottom line of the
+ window is cleared. The cursor position does not change.
+
+ With the insertln() and winsertn() functions, a blank line is
+ inserted above the current line and the bottom line is lost.
+
+ mvdeleteln(), mvwdeleteln(), mvinsertln() and mvwinsertln()
+ allow moving the cursor and inserting/deleting in one call.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ deleteln Y Y Y
+ wdeleteln Y Y Y
+ mvdeleteln - - -
+ mvwdeleteln - - -
+ insdelln Y - 4.0
+ winsdelln Y - 4.0
+ insertln Y Y Y
+ winsertln Y Y Y
+ mvinsertln - - -
+ mvwinsertln - - -
+
+**man-end****************************************************************/
+
+int wdeleteln(WINDOW *win)
+{
+ chtype blank, *temp, *ptr;
+ int y;
+
+ PDC_LOG(("wdeleteln() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ /* wrs (4/10/93) account for window background */
+
+ blank = win->_bkgd;
+
+ temp = win->_y[win->_cury];
+
+ for (y = win->_cury; y < win->_bmarg; y++)
+ {
+ win->_y[y] = win->_y[y + 1];
+ win->_firstch[y] = 0;
+ win->_lastch[y] = win->_maxx - 1;
+ }
+
+ for (ptr = temp; (ptr - temp < win->_maxx); ptr++)
+ *ptr = blank; /* make a blank line */
+
+ if (win->_cury <= win->_bmarg)
+ {
+ win->_firstch[win->_bmarg] = 0;
+ win->_lastch[win->_bmarg] = win->_maxx - 1;
+ win->_y[win->_bmarg] = temp;
+ }
+
+ return OK;
+}
+
+int deleteln(void)
+{
+ PDC_LOG(("deleteln() - called\n"));
+
+ return wdeleteln(stdscr);
+}
+
+int mvdeleteln(int y, int x)
+{
+ PDC_LOG(("mvdeleteln() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wdeleteln(stdscr);
+}
+
+int mvwdeleteln(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("mvwdeleteln() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wdeleteln(win);
+}
+
+int winsdelln(WINDOW *win, int n)
+{
+ int i;
+
+ PDC_LOG(("winsdelln() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ if (n > 0)
+ {
+ for (i = 0; i < n; i++)
+ if (winsertln(win) == ERR)
+ return ERR;
+ }
+ else if (n < 0)
+ {
+ n = -n;
+ for (i = 0; i < n; i++)
+ if (wdeleteln(win) == ERR)
+ return ERR;
+ }
+
+ return OK;
+}
+
+int insdelln(int n)
+{
+ PDC_LOG(("insdelln() - called\n"));
+
+ return winsdelln(stdscr, n);
+}
+
+int winsertln(WINDOW *win)
+{
+ chtype blank, *temp, *end;
+ int y;
+
+ PDC_LOG(("winsertln() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ /* wrs (4/10/93) account for window background */
+
+ blank = win->_bkgd;
+
+ temp = win->_y[win->_maxy - 1];
+
+ for (y = win->_maxy - 1; y > win->_cury; y--)
+ {
+ win->_y[y] = win->_y[y - 1];
+ win->_firstch[y] = 0;
+ win->_lastch[y] = win->_maxx - 1;
+ }
+
+ win->_y[win->_cury] = temp;
+
+ for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
+ *temp = blank;
+
+ win->_firstch[win->_cury] = 0;
+ win->_lastch[win->_cury] = win->_maxx - 1;
+
+ return OK;
+}
+
+int insertln(void)
+{
+ PDC_LOG(("insertln() - called\n"));
+
+ return winsertln(stdscr);
+}
+
+int mvinsertln(int y, int x)
+{
+ PDC_LOG(("mvinsertln() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winsertln(stdscr);
+}
+
+int mvwinsertln(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("mvwinsertln() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winsertln(win);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/deprec.c b/payloads/libpayload/curses/PDCurses/pdcurses/deprec.c
new file mode 100644
index 0000000..028d47a
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/deprec.c
@@ -0,0 +1,29 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: deprec.c,v 1.6 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/* Deprecated functions. These should not be used, and will eventually
+ be removed. They're here solely for the benefit of applications that
+ linked to them in older versions of PDCurses. */
+
+bool PDC_check_bios_key(void)
+{
+ return PDC_check_key();
+}
+
+int PDC_get_bios_key(void)
+{
+ return PDC_get_key();
+}
+
+bool PDC_get_ctrl_break(void)
+{
+ return !SP->raw_inp;
+}
+
+int PDC_set_ctrl_break(bool setting)
+{
+ return setting ? noraw() : raw();
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/getch.c b/payloads/libpayload/curses/PDCurses/pdcurses/getch.c
new file mode 100644
index 0000000..f37d69a
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/getch.c
@@ -0,0 +1,410 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: getch.c,v 1.72 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: getch
+
+ Synopsis:
+ int getch(void);
+ int wgetch(WINDOW *win);
+ int mvgetch(int y, int x);
+ int mvwgetch(WINDOW *win, int y, int x);
+ int ungetch(int ch);
+ int flushinp(void);
+
+ int get_wch(wint_t *wch);
+ int wget_wch(WINDOW *win, wint_t *wch);
+ int mvget_wch(int y, int x, wint_t *wch);
+ int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch);
+ int unget_wch(const wchar_t wch);
+
+ unsigned long PDC_get_key_modifiers(void);
+ int PDC_save_key_modifiers(bool flag);
+ int PDC_return_key_modifiers(bool flag);
+
+ Description:
+ With the getch(), wgetch(), mvgetch(), and mvwgetch() functions,
+ a character is read from the terminal associated with the window.
+ In nodelay mode, if there is no input waiting, the value ERR is
+ returned. In delay mode, the program will hang until the system
+ passes text through to the program. Depending on the setting of
+ cbreak(), this will be after one character or after the first
+ newline. Unless noecho() has been set, the character will also
+ be echoed into the designated window.
+
+ If keypad() is TRUE, and a function key is pressed, the token for
+ that function key will be returned instead of the raw characters.
+ Possible function keys are defined in <curses.h> with integers
+ beginning with 0401, whose names begin with KEY_.
+
+ If nodelay(win, TRUE) has been called on the window and no input
+ is waiting, the value ERR is returned.
+
+ ungetch() places ch back onto the input queue to be returned by
+ the next call to wgetch().
+
+ flushinp() throws away any type-ahead that has been typed by the
+ user and has not yet been read by the program.
+
+ PDC_get_key_modifiers() returns the keyboard modifiers (shift,
+ control, alt, numlock) effective at the time of the last getch()
+ call, if PDC_save_key_modifiers(TRUE) has been called before the
+ getch(). Use the macros PDC_KEY_MODIFIER_* to determine which
+ modifier(s) were set. PDC_return_key_modifiers() tells getch()
+ to return modifier keys pressed alone as keystrokes (KEY_ALT_L,
+ etc.). These may not work on all platforms.
+
+ NOTE: getch() and ungetch() are implemented as macros, to avoid
+ conflict with many DOS compiler's runtime libraries.
+
+ Return Value:
+ These functions return ERR or the value of the character, meta
+ character or function key token.
+
+ Portability X/Open BSD SYS V
+ getch Y Y Y
+ wgetch Y Y Y
+ mvgetch Y Y Y
+ mvwgetch Y Y Y
+ ungetch Y Y Y
+ flushinp Y Y Y
+ get_wch Y
+ wget_wch Y
+ mvget_wch Y
+ mvwget_wch Y
+ unget_wch Y
+ PDC_get_key_modifiers - - -
+
+**man-end****************************************************************/
+
+#define _INBUFSIZ 512 /* size of terminal input buffer */
+#define NUNGETCH 256 /* max # chars to ungetch() */
+
+static int c_pindex = 0; /* putter index */
+static int c_gindex = 1; /* getter index */
+static int c_ungind = 0; /* ungetch() push index */
+static int c_ungch[NUNGETCH]; /* array of ungotten chars */
+
+static int _mouse_key(WINDOW *win)
+{
+ int i, key = KEY_MOUSE;
+ unsigned long mbe = SP->_trap_mbe;
+
+ /* Filter unwanted mouse events */
+
+ for (i = 0; i < 3; i++)
+ {
+ if (pdc_mouse_status.changes & (1 << i))
+ {
+ int shf = i * 5;
+ short button = pdc_mouse_status.button[i] & BUTTON_ACTION_MASK;
+
+ if ( (!(mbe & (BUTTON1_PRESSED << shf)) &&
+ (button == BUTTON_PRESSED))
+
+ || (!(mbe & (BUTTON1_CLICKED << shf)) &&
+ (button == BUTTON_CLICKED))
+
+ || (!(mbe & (BUTTON1_DOUBLE_CLICKED << shf)) &&
+ (button == BUTTON_DOUBLE_CLICKED))
+
+ || (!(mbe & (BUTTON1_MOVED << shf)) &&
+ (button == BUTTON_MOVED))
+
+ || (!(mbe & (BUTTON1_RELEASED << shf)) &&
+ (button == BUTTON_RELEASED))
+ )
+ pdc_mouse_status.changes ^= (1 << i);
+ }
+ }
+
+ if (pdc_mouse_status.changes & PDC_MOUSE_MOVED)
+ {
+ if (!(mbe & (BUTTON1_MOVED|BUTTON2_MOVED|BUTTON3_MOVED)))
+ pdc_mouse_status.changes ^= PDC_MOUSE_MOVED;
+ }
+
+ if (pdc_mouse_status.changes &
+ (PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN))
+ {
+ if (!(mbe & MOUSE_WHEEL_SCROLL))
+ pdc_mouse_status.changes &=
+ ~(PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN);
+ }
+
+ if (!pdc_mouse_status.changes)
+ return -1;
+
+ /* Check for click in slk area */
+
+ i = PDC_mouse_in_slk(pdc_mouse_status.y, pdc_mouse_status.x);
+
+ if (i)
+ {
+ if (pdc_mouse_status.button[0] & (BUTTON_PRESSED|BUTTON_CLICKED))
+ key = KEY_F(i);
+ else
+ key = -1;
+ }
+
+ return key;
+}
+
+int wgetch(WINDOW *win)
+{
+ static int buffer[_INBUFSIZ]; /* character buffer */
+ int key, waitcount;
+
+ PDC_LOG(("wgetch() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ waitcount = 0;
+
+ /* set the number of 1/20th second napms() calls */
+
+ if (SP->delaytenths)
+ waitcount = 2 * SP->delaytenths;
+ else
+ if (win->_delayms)
+ {
+ /* Can't really do millisecond intervals, so delay in
+ 1/20ths of a second (50ms) */
+
+ waitcount = win->_delayms / 50;
+ if (!waitcount)
+ waitcount = 1;
+ }
+
+ /* refresh window when wgetch is called if there have been changes
+ to it and it is not a pad */
+
+ if (!(win->_flags & _PAD) && ((!win->_leaveit &&
+ (win->_begx + win->_curx != SP->curscol ||
+ win->_begy + win->_cury != SP->cursrow)) || is_wintouched(win)))
+ wrefresh(win);
+
+ /* if ungotten char exists, remove and return it */
+
+ if (c_ungind)
+ return c_ungch[--c_ungind];
+
+ /* if normal and data in buffer */
+
+ if ((!SP->raw_inp && !SP->cbreak) && (c_gindex < c_pindex))
+ return buffer[c_gindex++];
+
+ /* prepare to buffer data */
+
+ c_pindex = 0;
+ c_gindex = 0;
+
+ /* to get here, no keys are buffered. go and get one. */
+
+ for (;;) /* loop for any buffering */
+ {
+ /* is there a keystroke ready? */
+
+ if (!PDC_check_key())
+ {
+ /* if not, handle timeout() and halfdelay() */
+
+ if (SP->delaytenths || win->_delayms)
+ {
+ if (!waitcount)
+ return ERR;
+
+ waitcount--;
+ }
+ else
+ if (win->_nodelay)
+ return ERR;
+
+ napms(50); /* sleep for 1/20th second */
+ continue; /* then check again */
+ }
+
+ /* if there is, fetch it */
+
+ key = PDC_get_key();
+
+ if (SP->key_code)
+ {
+ /* filter special keys if not in keypad mode */
+
+ if (!win->_use_keypad)
+ key = -1;
+
+ /* filter mouse events; translate mouse clicks in the slk
+ area to function keys */
+
+ else if (key == KEY_MOUSE)
+ key = _mouse_key(win);
+ }
+
+ /* unwanted key? loop back */
+
+ if (key == -1)
+ continue;
+
+ /* translate CR */
+
+ if (key == '\r' && SP->autocr && !SP->raw_inp)
+ key = '\n';
+
+ /* if echo is enabled */
+
+ if (SP->echo && !SP->key_code)
+ {
+ waddch(win, key);
+ wrefresh(win);
+ }
+
+ /* if no buffering */
+
+ if (SP->raw_inp || SP->cbreak)
+ return key;
+
+ /* if no overflow, put data in buffer */
+
+ if (key == '\b')
+ {
+ if (c_pindex > c_gindex)
+ c_pindex--;
+ }
+ else
+ if (c_pindex < _INBUFSIZ - 2)
+ buffer[c_pindex++] = key;
+
+ /* if we got a line */
+
+ if (key == '\n' || key == '\r')
+ return buffer[c_gindex++];
+ }
+}
+
+int mvgetch(int y, int x)
+{
+ PDC_LOG(("mvgetch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wgetch(stdscr);
+}
+
+int mvwgetch(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("mvwgetch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wgetch(win);
+}
+
+int PDC_ungetch(int ch)
+{
+ PDC_LOG(("ungetch() - called\n"));
+
+ if (c_ungind >= NUNGETCH) /* pushback stack full */
+ return ERR;
+
+ c_ungch[c_ungind++] = ch;
+
+ return OK;
+}
+
+int flushinp(void)
+{
+ PDC_LOG(("flushinp() - called\n"));
+
+ PDC_flushinp();
+
+ c_gindex = 1; /* set indices to kill buffer */
+ c_pindex = 0;
+ c_ungind = 0; /* clear c_ungch array */
+
+ return OK;
+}
+
+unsigned long PDC_get_key_modifiers(void)
+{
+ PDC_LOG(("PDC_get_key_modifiers() - called\n"));
+
+ return pdc_key_modifiers;
+}
+
+int PDC_save_key_modifiers(bool flag)
+{
+ PDC_LOG(("PDC_save_key_modifiers() - called\n"));
+
+ SP->save_key_modifiers = flag;
+ return OK;
+}
+
+int PDC_return_key_modifiers(bool flag)
+{
+ PDC_LOG(("PDC_return_key_modifiers() - called\n"));
+
+ SP->return_key_modifiers = flag;
+ return PDC_modifiers_set();
+}
+
+#ifdef PDC_WIDE
+int wget_wch(WINDOW *win, wint_t *wch)
+{
+ int key;
+
+ PDC_LOG(("wget_wch() - called\n"));
+
+ if (!wch)
+ return ERR;
+
+ key = wgetch(win);
+
+ if (key == ERR)
+ return ERR;
+
+ *wch = key;
+
+ return SP->key_code ? KEY_CODE_YES : OK;
+}
+
+int get_wch(wint_t *wch)
+{
+ PDC_LOG(("get_wch() - called\n"));
+
+ return wget_wch(stdscr, wch);
+}
+
+int mvget_wch(int y, int x, wint_t *wch)
+{
+ PDC_LOG(("mvget_wch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wget_wch(stdscr, wch);
+}
+
+int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch)
+{
+ PDC_LOG(("mvwget_wch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wget_wch(win, wch);
+}
+
+int unget_wch(const wchar_t wch)
+{
+ return PDC_ungetch(wch);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/getstr.c b/payloads/libpayload/curses/PDCurses/pdcurses/getstr.c
new file mode 100644
index 0000000..744e5e6
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/getstr.c
@@ -0,0 +1,471 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: getstr.c,v 1.51 2008/07/14 04:24:51 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: getstr
+
+ Synopsis:
+ int getstr(char *str);
+ int wgetstr(WINDOW *win, char *str);
+ int mvgetstr(int y, int x, char *str);
+ int mvwgetstr(WINDOW *win, int y, int x, char *str);
+ int getnstr(char *str, int n);
+ int wgetnstr(WINDOW *win, char *str, int n);
+ int mvgetnstr(int y, int x, char *str, int n);
+ int mvwgetnstr(WINDOW *win, int y, int x, char *str, int n);
+
+ int get_wstr(wint_t *wstr);
+ int wget_wstr(WINDOW *win, wint_t *wstr);
+ int mvget_wstr(int y, int x, wint_t *wstr);
+ int mvwget_wstr(WINDOW *win, int, int, wint_t *wstr);
+ int getn_wstr(wint_t *wstr, int n);
+ int wgetn_wstr(WINDOW *win, wint_t *wstr, int n);
+ int mvgetn_wstr(int y, int x, wint_t *wstr, int n);
+ int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n);
+
+ Description:
+ These routines call wgetch() repeatedly to build a string,
+ interpreting erase and kill characters along the way, until a
+ newline or carriage return is received. When PDCurses is built
+ with wide-character support enabled, the narrow-character
+ functions convert the wgetch()'d values into a multibyte string
+ in the current locale before returning it. The resulting string
+ is placed in the area pointed to by *str. The routines with n as
+ the last argument read at most n characters.
+
+ Note that there's no way to know how long the buffer passed to
+ wgetstr() is, so use wgetnstr() to avoid buffer overflows.
+
+ Return Value:
+ This functions return ERR on failure or any other value on
+ success.
+
+ Portability X/Open BSD SYS V
+ getstr Y Y Y
+ wgetstr Y Y Y
+ mvgetstr Y Y Y
+ mvwgetstr Y Y Y
+ getnstr Y - 4.0
+ wgetnstr Y - 4.0
+ mvgetnstr Y - -
+ mvwgetnstr Y - -
+ get_wstr Y
+ wget_wstr Y
+ mvget_wstr Y
+ mvwget_wstr Y
+ getn_wstr Y
+ wgetn_wstr Y
+ mvgetn_wstr Y
+ mvwgetn_wstr Y
+
+**man-end****************************************************************/
+
+#define MAXLINE 255
+
+int wgetnstr(WINDOW *win, char *str, int n)
+{
+#ifdef PDC_WIDE
+ wchar_t wstr[MAXLINE + 1];
+
+ if (n < 0 || n > MAXLINE)
+ n = MAXLINE;
+
+ if (wgetn_wstr(win, (wint_t *)wstr, n) == ERR)
+ return ERR;
+
+ return PDC_wcstombs(str, wstr, n);
+#else
+ int ch, i, num, x, chars;
+ char *p;
+ bool stop, oldecho, oldcbreak, oldnodelay;
+
+ PDC_LOG(("wgetnstr() - called\n"));
+
+ if (!win || !str)
+ return ERR;
+
+ chars = 0;
+ p = str;
+ stop = FALSE;
+
+ x = win->_curx;
+
+ oldcbreak = SP->cbreak; /* remember states */
+ oldecho = SP->echo;
+ oldnodelay = win->_nodelay;
+
+ SP->echo = FALSE; /* we do echo ourselves */
+ cbreak(); /* ensure each key is returned immediately */
+ win->_nodelay = FALSE; /* don't return -1 */
+
+ wrefresh(win);
+
+ while (!stop)
+ {
+ ch = wgetch(win);
+
+ switch (ch)
+ {
+
+ case '\t':
+ ch = ' ';
+ num = TABSIZE - (win->_curx - x) % TABSIZE;
+ for (i = 0; i < num; i++)
+ {
+ if (chars < n)
+ {
+ if (oldecho)
+ waddch(win, ch);
+ *p++ = ch;
+ ++chars;
+ }
+ else
+ beep();
+ }
+ break;
+
+ case _ECHAR: /* CTRL-H -- Delete character */
+ if (p > str)
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+ ch = (unsigned char)(*--p);
+ if ((ch < ' ') && (oldecho))
+ waddstr(win, "\b \b");
+ chars--;
+ }
+ break;
+
+ case _DLCHAR: /* CTRL-U -- Delete line */
+ while (p > str)
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+ ch = (unsigned char)(*--p);
+ if ((ch < ' ') && (oldecho))
+ waddstr(win, "\b \b");
+ }
+ chars = 0;
+ break;
+
+ case _DWCHAR: /* CTRL-W -- Delete word */
+
+ while ((p > str) && (*(p - 1) == ' '))
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+
+ --p; /* remove space */
+ chars--;
+ }
+ while ((p > str) && (*(p - 1) != ' '))
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+
+ ch = (unsigned char)(*--p);
+ if ((ch < ' ') && (oldecho))
+ waddstr(win, "\b \b");
+ chars--;
+ }
+ break;
+
+ case '\n':
+ case '\r':
+ stop = TRUE;
+ if (oldecho)
+ waddch(win, '\n');
+ break;
+
+ default:
+ if (chars < n)
+ {
+ if (!SP->key_code && ch < 0x100)
+ {
+ *p++ = ch;
+ if (oldecho)
+ waddch(win, ch);
+ chars++;
+ }
+ }
+ else
+ beep();
+
+ break;
+
+ }
+
+ wrefresh(win);
+ }
+
+ *p = '\0';
+
+ SP->echo = oldecho; /* restore old settings */
+ SP->cbreak = oldcbreak;
+ win->_nodelay = oldnodelay;
+
+ return OK;
+#endif
+}
+
+int getstr(char *str)
+{
+ PDC_LOG(("getstr() - called\n"));
+
+ return wgetnstr(stdscr, str, MAXLINE);
+}
+
+int wgetstr(WINDOW *win, char *str)
+{
+ PDC_LOG(("wgetstr() - called\n"));
+
+ return wgetnstr(win, str, MAXLINE);
+}
+
+int mvgetstr(int y, int x, char *str)
+{
+ PDC_LOG(("mvgetstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wgetnstr(stdscr, str, MAXLINE);
+}
+
+int mvwgetstr(WINDOW *win, int y, int x, char *str)
+{
+ PDC_LOG(("mvwgetstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wgetnstr(win, str, MAXLINE);
+}
+
+int getnstr(char *str, int n)
+{
+ PDC_LOG(("getnstr() - called\n"));
+
+ return wgetnstr(stdscr, str, n);
+}
+
+int mvgetnstr(int y, int x, char *str, int n)
+{
+ PDC_LOG(("mvgetnstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wgetnstr(stdscr, str, n);
+}
+
+int mvwgetnstr(WINDOW *win, int y, int x, char *str, int n)
+{
+ PDC_LOG(("mvwgetnstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wgetnstr(win, str, n);
+}
+
+#ifdef PDC_WIDE
+int wgetn_wstr(WINDOW *win, wint_t *wstr, int n)
+{
+ int ch, i, num, x, chars;
+ wint_t *p;
+ bool stop, oldecho, oldcbreak, oldnodelay;
+
+ PDC_LOG(("wgetn_wstr() - called\n"));
+
+ if (!win || !wstr)
+ return ERR;
+
+ chars = 0;
+ p = wstr;
+ stop = FALSE;
+
+ x = win->_curx;
+
+ oldcbreak = SP->cbreak; /* remember states */
+ oldecho = SP->echo;
+ oldnodelay = win->_nodelay;
+
+ SP->echo = FALSE; /* we do echo ourselves */
+ cbreak(); /* ensure each key is returned immediately */
+ win->_nodelay = FALSE; /* don't return -1 */
+
+ wrefresh(win);
+
+ while (!stop)
+ {
+ ch = wgetch(win);
+
+ switch (ch)
+ {
+
+ case '\t':
+ ch = ' ';
+ num = TABSIZE - (win->_curx - x) % TABSIZE;
+ for (i = 0; i < num; i++)
+ {
+ if (chars < n)
+ {
+ if (oldecho)
+ waddch(win, ch);
+ *p++ = ch;
+ ++chars;
+ }
+ else
+ beep();
+ }
+ break;
+
+ case _ECHAR: /* CTRL-H -- Delete character */
+ if (p > wstr)
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+ ch = *--p;
+ if ((ch < ' ') && (oldecho))
+ waddstr(win, "\b \b");
+ chars--;
+ }
+ break;
+
+ case _DLCHAR: /* CTRL-U -- Delete line */
+ while (p > wstr)
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+ ch = *--p;
+ if ((ch < ' ') && (oldecho))
+ waddstr(win, "\b \b");
+ }
+ chars = 0;
+ break;
+
+ case _DWCHAR: /* CTRL-W -- Delete word */
+
+ while ((p > wstr) && (*(p - 1) == ' '))
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+
+ --p; /* remove space */
+ chars--;
+ }
+ while ((p > wstr) && (*(p - 1) != ' '))
+ {
+ if (oldecho)
+ waddstr(win, "\b \b");
+
+ ch = *--p;
+ if ((ch < ' ') && (oldecho))
+ waddstr(win, "\b \b");
+ chars--;
+ }
+ break;
+
+ case '\n':
+ case '\r':
+ stop = TRUE;
+ if (oldecho)
+ waddch(win, '\n');
+ break;
+
+ default:
+ if (chars < n)
+ {
+ if (!SP->key_code)
+ {
+ *p++ = ch;
+ if (oldecho)
+ waddch(win, ch);
+ chars++;
+ }
+ }
+ else
+ beep();
+
+ break;
+
+ }
+
+ wrefresh(win);
+ }
+
+ *p = '\0';
+
+ SP->echo = oldecho; /* restore old settings */
+ SP->cbreak = oldcbreak;
+ win->_nodelay = oldnodelay;
+
+ return OK;
+}
+
+int get_wstr(wint_t *wstr)
+{
+ PDC_LOG(("get_wstr() - called\n"));
+
+ return wgetn_wstr(stdscr, wstr, MAXLINE);
+}
+
+int wget_wstr(WINDOW *win, wint_t *wstr)
+{
+ PDC_LOG(("wget_wstr() - called\n"));
+
+ return wgetn_wstr(win, wstr, MAXLINE);
+}
+
+int mvget_wstr(int y, int x, wint_t *wstr)
+{
+ PDC_LOG(("mvget_wstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wgetn_wstr(stdscr, wstr, MAXLINE);
+}
+
+int mvwget_wstr(WINDOW *win, int y, int x, wint_t *wstr)
+{
+ PDC_LOG(("mvwget_wstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wgetn_wstr(win, wstr, MAXLINE);
+}
+
+int getn_wstr(wint_t *wstr, int n)
+{
+ PDC_LOG(("getn_wstr() - called\n"));
+
+ return wgetn_wstr(stdscr, wstr, n);
+}
+
+int mvgetn_wstr(int y, int x, wint_t *wstr, int n)
+{
+ PDC_LOG(("mvgetn_wstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wgetn_wstr(stdscr, wstr, n);
+}
+
+int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n)
+{
+ PDC_LOG(("mvwgetn_wstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wgetn_wstr(win, wstr, n);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/getyx.c b/payloads/libpayload/curses/PDCurses/pdcurses/getyx.c
new file mode 100644
index 0000000..1c03917
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/getyx.c
@@ -0,0 +1,143 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: getyx.c,v 1.29 2008/07/15 17:13:26 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: getyx
+
+ Synopsis:
+ void getyx(WINDOW *win, int y, int x);
+ void getparyx(WINDOW *win, int y, int x);
+ void getbegyx(WINDOW *win, int y, int x);
+ void getmaxyx(WINDOW *win, int y, int x);
+
+ void getsyx(int y, int x);
+ int setsyx(int y, int x);
+
+ int getbegy(WINDOW *win);
+ int getbegx(WINDOW *win);
+ int getcury(WINDOW *win);
+ int getcurx(WINDOW *win);
+ int getpary(WINDOW *win);
+ int getparx(WINDOW *win);
+ int getmaxy(WINDOW *win);
+ int getmaxx(WINDOW *win);
+
+ Description:
+ The getyx() macro (defined in curses.h -- the prototypes here
+ are merely illustrative) puts the current cursor position of the
+ specified window into y and x. getbegyx() and getmaxyx() return
+ the starting coordinates and size of the specified window,
+ respectively. getparyx() returns the starting coordinates of the
+ parent's window, if the specified window is a subwindow;
+ otherwise it sets y and x to -1. These are all macros.
+
+ getsyx() gets the coordinates of the virtual screen cursor, and
+ stores them in y and x. If leaveok() is TRUE, it returns -1, -1.
+ If lines have been removed with ripoffline(), then getsyx()
+ includes these lines in its count; so, the returned y and x
+ values should only be used with setsyx().
+
+ setsyx() sets the virtual screen cursor to the y, x coordinates.
+ If y, x are -1, -1, leaveok() is set TRUE.
+
+ getsyx() and setsyx() are meant to be used by a library routine
+ that manipulates curses windows without altering the position of
+ the cursor. Note that getsyx() is defined only as a macro.
+
+ getbegy(), getbegx(), getcurx(), getcury(), getmaxy(),
+ getmaxx(), getpary(), and getparx() return the appropriate
+ coordinate or size values, or ERR in the case of a NULL window.
+
+ Portability X/Open BSD SYS V
+ getyx Y Y Y
+ getparyx - - 4.0
+ getbegyx - - 3.0
+ getmaxyx - - 3.0
+ getsyx - - 3.0
+ setsyx - - 3.0
+ getbegy - - -
+ getbegx - - -
+ getcury - - -
+ getcurx - - -
+ getpary - - -
+ getparx - - -
+ getmaxy - - -
+ getmaxx - - -
+
+**man-end****************************************************************/
+
+int getbegy(WINDOW *win)
+{
+ PDC_LOG(("getbegy() - called\n"));
+
+ return win ? win->_begy : ERR;
+}
+
+int getbegx(WINDOW *win)
+{
+ PDC_LOG(("getbegx() - called\n"));
+
+ return win ? win->_begx : ERR;
+}
+
+int getcury(WINDOW *win)
+{
+ PDC_LOG(("getcury() - called\n"));
+
+ return win ? win->_cury : ERR;
+}
+
+int getcurx(WINDOW *win)
+{
+ PDC_LOG(("getcurx() - called\n"));
+
+ return win ? win->_curx : ERR;
+}
+
+int getpary(WINDOW *win)
+{
+ PDC_LOG(("getpary() - called\n"));
+
+ return win ? win->_pary : ERR;
+}
+
+int getparx(WINDOW *win)
+{
+ PDC_LOG(("getparx() - called\n"));
+
+ return win ? win->_parx : ERR;
+}
+
+int getmaxy(WINDOW *win)
+{
+ PDC_LOG(("getmaxy() - called\n"));
+
+ return win ? win->_maxy : ERR;
+}
+
+int getmaxx(WINDOW *win)
+{
+ PDC_LOG(("getmaxx() - called\n"));
+
+ return win ? win->_maxx : ERR;
+}
+
+int setsyx(int y, int x)
+{
+ PDC_LOG(("setsyx() - called\n"));
+
+ if(y == -1 && x == -1)
+ {
+ curscr->_leaveit = TRUE;
+ return OK;
+ }
+ else
+ {
+ curscr->_leaveit = FALSE;
+ return wmove(curscr, y, x);
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/inch.c b/payloads/libpayload/curses/PDCurses/pdcurses/inch.c
new file mode 100644
index 0000000..6609b29
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/inch.c
@@ -0,0 +1,125 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: inch.c,v 1.33 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: inch
+
+ Synopsis:
+ chtype inch(void);
+ chtype winch(WINDOW *win);
+ chtype mvinch(int y, int x);
+ chtype mvwinch(WINDOW *win, int y, int x);
+
+ int in_wch(cchar_t *wcval);
+ int win_wch(WINDOW *win, cchar_t *wcval);
+ int mvin_wch(int y, int x, cchar_t *wcval);
+ int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval);
+
+ Description:
+ The inch() functions retrieve the character and attribute from
+ the current or specified window position, in the form of a
+ chtype. If a NULL window is specified, (chtype)ERR is returned.
+
+ The in_wch() functions are the wide-character versions; instead
+ of returning a chtype, they store a cchar_t at the address
+ specified by wcval, and return OK or ERR. (No value is stored
+ when ERR is returned.) Note that in PDCurses, chtype and cchar_t
+ are the same.
+
+ Portability X/Open BSD SYS V
+ inch Y Y Y
+ winch Y Y Y
+ mvinch Y Y Y
+ mvwinch Y Y Y
+ in_wch Y
+ win_wch Y
+ mvin_wch Y
+ mvwin_wch Y
+
+**man-end****************************************************************/
+
+chtype winch(WINDOW *win)
+{
+ PDC_LOG(("winch() - called\n"));
+
+ if (!win)
+ return (chtype)ERR;
+
+ return win->_y[win->_cury][win->_curx];
+}
+
+chtype inch(void)
+{
+ PDC_LOG(("inch() - called\n"));
+
+ return winch(stdscr);
+}
+
+chtype mvinch(int y, int x)
+{
+ PDC_LOG(("mvinch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return (chtype)ERR;
+
+ return stdscr->_y[stdscr->_cury][stdscr->_curx];
+}
+
+chtype mvwinch(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("mvwinch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return (chtype)ERR;
+
+ return win->_y[win->_cury][win->_curx];
+}
+
+#ifdef PDC_WIDE
+int win_wch(WINDOW *win, cchar_t *wcval)
+{
+ PDC_LOG(("win_wch() - called\n"));
+
+ if (!win || !wcval)
+ return ERR;
+
+ *wcval = win->_y[win->_cury][win->_curx];
+
+ return OK;
+}
+
+int in_wch(cchar_t *wcval)
+{
+ PDC_LOG(("in_wch() - called\n"));
+
+ return win_wch(stdscr, wcval);
+}
+
+int mvin_wch(int y, int x, cchar_t *wcval)
+{
+ PDC_LOG(("mvin_wch() - called\n"));
+
+ if (!wcval || (move(y, x) == ERR))
+ return ERR;
+
+ *wcval = stdscr->_y[stdscr->_cury][stdscr->_curx];
+
+ return OK;
+}
+
+int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval)
+{
+ PDC_LOG(("mvwin_wch() - called\n"));
+
+ if (!wcval || (wmove(win, y, x) == ERR))
+ return ERR;
+
+ *wcval = win->_y[win->_cury][win->_curx];
+
+ return OK;
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/inchstr.c b/payloads/libpayload/curses/PDCurses/pdcurses/inchstr.c
new file mode 100644
index 0000000..f061cdb
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/inchstr.c
@@ -0,0 +1,211 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: inchstr.c,v 1.34 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: inchstr
+
+ Synopsis:
+ int inchstr(chtype *ch);
+ int inchnstr(chtype *ch, int n);
+ int winchstr(WINDOW *win, chtype *ch);
+ int winchnstr(WINDOW *win, chtype *ch, int n);
+ int mvinchstr(int y, int x, chtype *ch);
+ int mvinchnstr(int y, int x, chtype *ch, int n);
+ int mvwinchstr(WINDOW *, int y, int x, chtype *ch);
+ int mvwinchnstr(WINDOW *, int y, int x, chtype *ch, int n);
+
+ int in_wchstr(cchar_t *wch);
+ int in_wchnstr(cchar_t *wch, int n);
+ int win_wchstr(WINDOW *win, cchar_t *wch);
+ int win_wchnstr(WINDOW *win, cchar_t *wch, int n);
+ int mvin_wchstr(int y, int x, cchar_t *wch);
+ int mvin_wchnstr(int y, int x, cchar_t *wch, int n);
+ int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wch);
+ int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wch, int n);
+
+ Description:
+ These routines read a chtype or cchar_t string from the window,
+ starting at the current or specified position, and ending at the
+ right margin, or after n elements, whichever is less.
+
+ Return Value:
+ All functions return the number of elements read, or ERR on
+ error.
+
+ Portability X/Open BSD SYS V
+ inchstr Y - 4.0
+ winchstr Y - 4.0
+ mvinchstr Y - 4.0
+ mvwinchstr Y - 4.0
+ inchnstr Y - 4.0
+ winchnstr Y - 4.0
+ mvinchnstr Y - 4.0
+ mvwinchnstr Y - 4.0
+ in_wchstr Y
+ win_wchstr Y
+ mvin_wchstr Y
+ mvwin_wchstr Y
+ in_wchnstr Y
+ win_wchnstr Y
+ mvin_wchnstr Y
+ mvwin_wchnstr Y
+
+**man-end****************************************************************/
+
+int winchnstr(WINDOW *win, chtype *ch, int n)
+{
+ chtype *src;
+ int i;
+
+ PDC_LOG(("winchnstr() - called\n"));
+
+ if (!win || !ch || n < 0)
+ return ERR;
+
+ if ((win->_curx + n) > win->_maxx)
+ n = win->_maxx - win->_curx;
+
+ src = win->_y[win->_cury] + win->_curx;
+
+ for (i = 0; i < n; i++)
+ *ch++ = *src++;
+
+ *ch = (chtype)0;
+
+ return OK;
+}
+
+int inchstr(chtype *ch)
+{
+ PDC_LOG(("inchstr() - called\n"));
+
+ return winchnstr(stdscr, ch, stdscr->_maxx - stdscr->_curx);
+}
+
+int winchstr(WINDOW *win, chtype *ch)
+{
+ PDC_LOG(("winchstr() - called\n"));
+
+ return winchnstr(win, ch, win->_maxx - win->_curx);
+}
+
+int mvinchstr(int y, int x, chtype *ch)
+{
+ PDC_LOG(("mvinchstr() - called: y %d x %d\n", y, x));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winchnstr(stdscr, ch, stdscr->_maxx - stdscr->_curx);
+}
+
+int mvwinchstr(WINDOW *win, int y, int x, chtype *ch)
+{
+ PDC_LOG(("mvwinchstr() - called:\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winchnstr(win, ch, win->_maxx - win->_curx);
+}
+
+int inchnstr(chtype *ch, int n)
+{
+ PDC_LOG(("inchnstr() - called\n"));
+
+ return winchnstr(stdscr, ch, n);
+}
+
+int mvinchnstr(int y, int x, chtype *ch, int n)
+{
+ PDC_LOG(("mvinchnstr() - called: y %d x %d n %d\n", y, x, n));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winchnstr(stdscr, ch, n);
+}
+
+int mvwinchnstr(WINDOW *win, int y, int x, chtype *ch, int n)
+{
+ PDC_LOG(("mvwinchnstr() - called: y %d x %d n %d \n", y, x, n));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winchnstr(win, ch, n);
+}
+
+#ifdef PDC_WIDE
+int win_wchnstr(WINDOW *win, cchar_t *wch, int n)
+{
+ PDC_LOG(("win_wchnstr() - called\n"));
+
+ return winchnstr(win, wch, n);
+}
+
+int in_wchstr(cchar_t *wch)
+{
+ PDC_LOG(("in_wchstr() - called\n"));
+
+ return win_wchnstr(stdscr, wch, stdscr->_maxx - stdscr->_curx);
+}
+
+int win_wchstr(WINDOW *win, cchar_t *wch)
+{
+ PDC_LOG(("win_wchstr() - called\n"));
+
+ return win_wchnstr(win, wch, win->_maxx - win->_curx);
+}
+
+int mvin_wchstr(int y, int x, cchar_t *wch)
+{
+ PDC_LOG(("mvin_wchstr() - called: y %d x %d\n", y, x));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return win_wchnstr(stdscr, wch, stdscr->_maxx - stdscr->_curx);
+}
+
+int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wch)
+{
+ PDC_LOG(("mvwin_wchstr() - called:\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return win_wchnstr(win, wch, win->_maxx - win->_curx);
+}
+
+int in_wchnstr(cchar_t *wch, int n)
+{
+ PDC_LOG(("in_wchnstr() - called\n"));
+
+ return win_wchnstr(stdscr, wch, n);
+}
+
+int mvin_wchnstr(int y, int x, cchar_t *wch, int n)
+{
+ PDC_LOG(("mvin_wchnstr() - called: y %d x %d n %d\n", y, x, n));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return win_wchnstr(stdscr, wch, n);
+}
+
+int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wch, int n)
+{
+ PDC_LOG(("mvwinchnstr() - called: y %d x %d n %d \n", y, x, n));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return win_wchnstr(win, wch, n);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/initscr.c b/payloads/libpayload/curses/PDCurses/pdcurses/initscr.c
new file mode 100644
index 0000000..165b7f9
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/initscr.c
@@ -0,0 +1,342 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: initscr.c,v 1.114 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: initscr
+
+ Synopsis:
+ WINDOW *initscr(void);
+ WINDOW *Xinitscr(int argc, char *argv[]);
+ int endwin(void);
+ bool isendwin(void);
+ SCREEN *newterm(const char *type, FILE *outfd, FILE *infd);
+ SCREEN *set_term(SCREEN *new);
+ void delscreen(SCREEN *sp);
+
+ int resize_term(int nlines, int ncols);
+ bool is_termresized(void);
+ const char *curses_version(void);
+
+ Description:
+ initscr() should be the first curses routine called. It will
+ initialize all curses data structures, and arrange that the
+ first call to refresh() will clear the screen. In case of
+ error, initscr() will write a message to standard error and end
+ the program.
+
+ endwin() should be called before exiting or escaping from curses
+ mode temporarily. It will restore tty modes, move the cursor to
+ the lower left corner of the screen and reset the terminal into
+ the proper non-visual mode. To resume curses after a temporary
+ escape, call refresh() or doupdate().
+
+ isendwin() returns TRUE if endwin() has been called without a
+ subsequent refresh, unless SP is NULL.
+
+ In some implementations of curses, newterm() allows the use of
+ multiple terminals. Here, it's just an alternative interface for
+ initscr(). It always returns SP, or NULL.
+
+ delscreen() frees the memory allocated by newterm() or
+ initscr(), since it's not freed by endwin(). This function is
+ usually not needed. In PDCurses, the parameter must be the
+ value of SP, and delscreen() sets SP to NULL.
+
+ set_term() does nothing meaningful in PDCurses, but is included
+ for compatibility with other curses implementations.
+
+ resize_term() is effectively two functions: When called with
+ nonzero values for nlines and ncols, it attempts to resize the
+ screen to the given size. When called with (0, 0), it merely
+ adjusts the internal structures to match the current size after
+ the screen is resized by the user. On the currently supported
+ platforms, this functionality is mutually exclusive: X11 allows
+ user resizing, while DOS, OS/2 and Win32 allow programmatic
+ resizing. If you want to support user resizing, you should check
+ for getch() returning KEY_RESIZE, and/or call is_termresized()
+ at appropriate times; if either condition occurs, call
+ resize_term(0, 0). Then, with either user or programmatic
+ resizing, you'll have to resize any windows you've created, as
+ appropriate; resize_term() only handles stdscr and curscr.
+
+ is_termresized() returns TRUE if the curses screen has been
+ resized by the user, and a call to resize_term() is needed.
+ Checking for KEY_RESIZE is generally preferable, unless you're
+ not handling the keyboard.
+
+ curses_version() returns a string describing the version of
+ PDCurses.
+
+ Return Value:
+ All functions return NULL on error, except endwin(), which
+ returns ERR on error.
+
+ Portability X/Open BSD SYS V
+ initscr Y Y Y
+ endwin Y Y Y
+ isendwin Y - 3.0
+ newterm Y - Y
+ set_term Y - Y
+ delscreen Y - 4.0
+ resize_term - - -
+ is_termresized - - -
+ curses_version - - -
+
+**man-end****************************************************************/
+
+#include <stdlib.h>
+
+char ttytype[128];
+
+const char *_curses_notice = "PDCurses 3.4 - Public Domain 2008";
+
+SCREEN *SP = (SCREEN*)NULL; /* curses variables */
+WINDOW *curscr = (WINDOW *)NULL; /* the current screen image */
+WINDOW *stdscr = (WINDOW *)NULL; /* the default screen window */
+WINDOW *pdc_lastscr = (WINDOW *)NULL; /* the last screen image */
+
+int LINES = 0; /* current terminal height */
+int COLS = 0; /* current terminal width */
+int TABSIZE = 8;
+
+MOUSE_STATUS Mouse_status, pdc_mouse_status;
+
+extern RIPPEDOFFLINE linesripped[5];
+extern char linesrippedoff;
+
+#ifndef XCURSES
+static
+#endif
+WINDOW *Xinitscr(int argc, char *argv[])
+{
+ int i;
+
+ PDC_LOG(("Xinitscr() - called\n"));
+
+ if (SP && SP->alive)
+ return NULL;
+
+ if (PDC_scr_open(argc, argv) == ERR)
+ {
+ fprintf(stderr, "initscr(): Unable to create SP\n");
+ exit(8);
+ }
+
+ SP->autocr = TRUE; /* cr -> lf by default */
+ SP->raw_out = FALSE; /* tty I/O modes */
+ SP->raw_inp = FALSE; /* tty I/O modes */
+ SP->cbreak = TRUE;
+ SP->save_key_modifiers = FALSE;
+ SP->return_key_modifiers = FALSE;
+ SP->echo = TRUE;
+ SP->visibility = 1;
+ SP->resized = FALSE;
+ SP->_trap_mbe = 0L;
+ SP->_map_mbe_to_key = 0L;
+ SP->linesrippedoff = 0;
+ SP->linesrippedoffontop = 0;
+ SP->delaytenths = 0;
+ SP->line_color = -1;
+
+ SP->orig_cursor = PDC_get_cursor_mode();
+
+ LINES = SP->lines;
+ COLS = SP->cols;
+
+ if (LINES < 2 || COLS < 2)
+ {
+ fprintf(stderr, "initscr(): LINES=%d COLS=%d: too small.\n",
+ LINES, COLS);
+ exit(4);
+ }
+
+ if ((curscr = newwin(LINES, COLS, 0, 0)) == (WINDOW *)NULL)
+ {
+ fprintf(stderr, "initscr(): Unable to create curscr.\n");
+ exit(2);
+ }
+
+ if ((pdc_lastscr = newwin(LINES, COLS, 0, 0)) == (WINDOW *)NULL)
+ {
+ fprintf(stderr, "initscr(): Unable to create pdc_lastscr.\n");
+ exit(2);
+ }
+
+ wattrset(pdc_lastscr, (chtype)(-1));
+ werase(pdc_lastscr);
+
+ PDC_slk_initialize();
+ LINES -= SP->slklines;
+
+ /* We have to sort out ripped off lines here, and reduce the height
+ of stdscr by the number of lines ripped off */
+
+ for (i = 0; i < linesrippedoff; i++)
+ {
+ if (linesripped[i].line < 0)
+ (*linesripped[i].init)(newwin(1, COLS, LINES - 1, 0), COLS);
+ else
+ (*linesripped[i].init)(newwin(1, COLS,
+ SP->linesrippedoffontop++, 0), COLS);
+
+ SP->linesrippedoff++;
+ LINES--;
+ }
+
+ linesrippedoff = 0;
+
+ if (!(stdscr = newwin(LINES, COLS, SP->linesrippedoffontop, 0)))
+ {
+ fprintf(stderr, "initscr(): Unable to create stdscr.\n");
+ exit(1);
+ }
+
+ wclrtobot(stdscr);
+
+ /* If preserving the existing screen, don't allow a screen clear */
+
+ if (SP->_preserve)
+ {
+ untouchwin(curscr);
+ untouchwin(stdscr);
+ stdscr->_clear = FALSE;
+ curscr->_clear = FALSE;
+ }
+ else
+ curscr->_clear = TRUE;
+
+ PDC_init_atrtab(); /* set up default colors */
+
+ MOUSE_X_POS = MOUSE_Y_POS = -1;
+ BUTTON_STATUS(1) = BUTTON_RELEASED;
+ BUTTON_STATUS(2) = BUTTON_RELEASED;
+ BUTTON_STATUS(3) = BUTTON_RELEASED;
+ Mouse_status.changes = 0;
+
+ SP->alive = TRUE;
+
+ def_shell_mode();
+
+ sprintf(ttytype, "pdcurses|PDCurses for %s", PDC_sysname());
+
+ return stdscr;
+}
+
+WINDOW *initscr(void)
+{
+ PDC_LOG(("initscr() - called\n"));
+
+ return Xinitscr(0, NULL);
+}
+
+int endwin(void)
+{
+ PDC_LOG(("endwin() - called\n"));
+
+ /* Allow temporary exit from curses using endwin() */
+
+ def_prog_mode();
+ PDC_scr_close();
+
+ SP->alive = FALSE;
+
+ return OK;
+}
+
+bool isendwin(void)
+{
+ PDC_LOG(("isendwin() - called\n"));
+
+ return SP ? !(SP->alive) : FALSE;
+}
+
+SCREEN *newterm(const char *type, FILE *outfd, FILE *infd)
+{
+ PDC_LOG(("newterm() - called\n"));
+
+ return Xinitscr(0, NULL) ? SP : NULL;
+}
+
+SCREEN *set_term(SCREEN *new)
+{
+ PDC_LOG(("set_term() - called\n"));
+
+ /* We only support one screen */
+
+ return (new == SP) ? SP : NULL;
+}
+
+void delscreen(SCREEN *sp)
+{
+ PDC_LOG(("delscreen() - called\n"));
+
+ if (sp != SP)
+ return;
+
+ PDC_slk_free(); /* free the soft label keys, if needed */
+
+ delwin(stdscr);
+ delwin(curscr);
+ delwin(pdc_lastscr);
+ stdscr = (WINDOW *)NULL;
+ curscr = (WINDOW *)NULL;
+ pdc_lastscr = (WINDOW *)NULL;
+
+ SP->alive = FALSE;
+
+ PDC_scr_free(); /* free SP and pdc_atrtab */
+
+ SP = (SCREEN *)NULL;
+}
+
+int resize_term(int nlines, int ncols)
+{
+ PDC_LOG(("resize_term() - called: nlines %d\n", nlines));
+
+ if (!stdscr || PDC_resize_screen(nlines, ncols) == ERR)
+ return ERR;
+
+ SP->lines = PDC_get_rows();
+ LINES = SP->lines - SP->linesrippedoff - SP->slklines;
+ SP->cols = COLS = PDC_get_columns();
+
+ if (wresize(curscr, SP->lines, SP->cols) == ERR ||
+ wresize(stdscr, LINES, COLS) == ERR ||
+ wresize(pdc_lastscr, SP->lines, SP->cols) == ERR)
+ return ERR;
+
+ werase(pdc_lastscr);
+ curscr->_clear = TRUE;
+
+ if (SP->slk_winptr)
+ {
+ if (wresize(SP->slk_winptr, SP->slklines, COLS) == ERR)
+ return ERR;
+
+ wmove(SP->slk_winptr, 0, 0);
+ wclrtobot(SP->slk_winptr);
+ PDC_slk_initialize();
+ slk_noutrefresh();
+ }
+
+ touchwin(stdscr);
+ wnoutrefresh(stdscr);
+
+ return OK;
+}
+
+bool is_termresized(void)
+{
+ PDC_LOG(("is_termresized() - called\n"));
+
+ return SP->resized;
+}
+
+const char *curses_version(void)
+{
+ return _curses_notice;
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/inopts.c b/payloads/libpayload/curses/PDCurses/pdcurses/inopts.c
new file mode 100644
index 0000000..b02654f
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/inopts.c
@@ -0,0 +1,321 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: inopts.c,v 1.43 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: inopts
+
+ Synopsis:
+ int cbreak(void);
+ int nocbreak(void);
+ int echo(void);
+ int noecho(void);
+ int halfdelay(int tenths);
+ int intrflush(WINDOW *win, bool bf);
+ int keypad(WINDOW *win, bool bf);
+ int meta(WINDOW *win, bool bf);
+ int nl(void);
+ int nonl(void);
+ int nodelay(WINDOW *win, bool bf);
+ int notimeout(WINDOW *win, bool bf);
+ int raw(void);
+ int noraw(void);
+ void noqiflush(void);
+ void qiflush(void);
+ void timeout(int delay);
+ void wtimeout(WINDOW *win, int delay);
+ int typeahead(int fildes);
+
+ int crmode(void);
+ int nocrmode(void);
+
+ Description:
+ cbreak() and nocbreak() toggle cbreak mode. In cbreak mode,
+ characters typed by the user are made available immediately, and
+ erase/kill character processing is not performed. In nocbreak
+ mode, typed characters are buffered until a newline or carriage
+ return. Interrupt and flow control characters are unaffected by
+ this mode. PDCurses always starts in cbreak mode.
+
+ echo() and noecho() control whether typed characters are echoed
+ by the input routine. Initially, input characters are echoed.
+ Subsequent calls to echo() and noecho() do not flush type-ahead.
+
+ halfdelay() is similar to cbreak(), but allows for a time limit
+ to be specified, in tenths of a second. This causes getch() to
+ block for that period before returning ERR if no key has been
+ received. tenths must be between 1 and 255.
+
+ keypad() controls whether getch() returns function/special keys
+ as single key codes (e.g., the left arrow key as KEY_LEFT). Per
+ X/Open, the default for keypad mode is OFF. You'll probably want
+ it on. With keypad mode off, if a special key is pressed,
+ getch() does nothing or returns ERR.
+
+ nodelay() controls whether wgetch() is a non-blocking call. If
+ the option is enabled, and no input is ready, wgetch() will
+ return ERR. If disabled, wgetch() will hang until input is
+ ready.
+
+ nl() enables the translation of a carriage return into a newline
+ on input. nonl() disables this. Initially, the translation does
+ occur.
+
+ raw() and noraw() toggle raw mode. Raw mode is similar to cbreak
+ mode, in that characters typed are immediately passed through to
+ the user program. The difference is that in raw mode, the INTR,
+ QUIT, SUSP, and STOP characters are passed through without being
+ interpreted, and without generating a signal.
+
+ In PDCurses, the meta() function sets raw mode on or off.
+
+ timeout() and wtimeout() set blocking or non-blocking reads for
+ the specified window. The delay is measured in milliseconds. If
+ it's negative, a blocking read is used; if zero, then non-
+ blocking reads are done -- if no input is waiting, ERR is
+ returned immediately. If the delay is positive, the read blocks
+ for the delay period; if the period expires, ERR is returned.
+
+ intrflush(), notimeout(), noqiflush(), qiflush() and typeahead()
+ do nothing in PDCurses, but are included for compatibility with
+ other curses implementations.
+
+ crmode() and nocrmode() are archaic equivalents to cbreak() and
+ nocbreak(), respectively.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ cbreak Y Y Y
+ nocbreak Y Y Y
+ echo Y Y Y
+ noecho Y Y Y
+ halfdelay Y - Y
+ intrflush Y - Y
+ keypad Y - Y
+ meta Y - Y
+ nl Y Y Y
+ nonl Y Y Y
+ nodelay Y - Y
+ notimeout Y - Y
+ raw Y Y Y
+ noraw Y Y Y
+ noqiflush Y - Y
+ qiflush Y - Y
+ timeout Y - Y
+ wtimeout Y - Y
+ typeahead Y - Y
+ crmode -
+ nocrmode -
+
+**man-end****************************************************************/
+
+int cbreak(void)
+{
+ PDC_LOG(("cbreak() - called\n"));
+
+ SP->cbreak = TRUE;
+
+ return OK;
+}
+
+int nocbreak(void)
+{
+ PDC_LOG(("nocbreak() - called\n"));
+
+ SP->cbreak = FALSE;
+ SP->delaytenths = 0;
+
+ return OK;
+}
+
+int echo(void)
+{
+ PDC_LOG(("echo() - called\n"));
+
+ SP->echo = TRUE;
+
+ return OK;
+}
+
+int noecho(void)
+{
+ PDC_LOG(("noecho() - called\n"));
+
+ SP->echo = FALSE;
+
+ return OK;
+}
+
+int halfdelay(int tenths)
+{
+ PDC_LOG(("halfdelay() - called\n"));
+
+ if (tenths < 1 || tenths > 255)
+ return ERR;
+
+ SP->delaytenths = tenths;
+
+ return OK;
+}
+
+int intrflush(WINDOW *win, bool bf)
+{
+ PDC_LOG(("intrflush() - called\n"));
+
+ return OK;
+}
+
+int keypad(WINDOW *win, bool bf)
+{
+ PDC_LOG(("keypad() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_use_keypad = bf;
+
+ return OK;
+}
+
+int meta(WINDOW *win, bool bf)
+{
+ PDC_LOG(("meta() - called\n"));
+
+ SP->raw_inp = bf;
+
+ return OK;
+}
+
+int nl(void)
+{
+ PDC_LOG(("nl() - called\n"));
+
+ SP->autocr = TRUE;
+
+ return OK;
+}
+
+int nonl(void)
+{
+ PDC_LOG(("nonl() - called\n"));
+
+ SP->autocr = FALSE;
+
+ return OK;
+}
+
+int nodelay(WINDOW *win, bool flag)
+{
+ PDC_LOG(("nodelay() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_nodelay = flag;
+
+ return OK;
+}
+
+int notimeout(WINDOW *win, bool flag)
+{
+ PDC_LOG(("notimeout() - called\n"));
+
+ return OK;
+}
+
+int raw(void)
+{
+ PDC_LOG(("raw() - called\n"));
+
+ PDC_set_keyboard_binary(TRUE);
+ SP->raw_inp = TRUE;
+
+ return OK;
+}
+
+int noraw(void)
+{
+ PDC_LOG(("noraw() - called\n"));
+
+ PDC_set_keyboard_binary(FALSE);
+ SP->raw_inp = FALSE;
+
+ return OK;
+}
+
+void noqiflush(void)
+{
+ PDC_LOG(("noqiflush() - called\n"));
+}
+
+void qiflush(void)
+{
+ PDC_LOG(("qiflush() - called\n"));
+}
+
+int typeahead(int fildes)
+{
+ PDC_LOG(("typeahead() - called\n"));
+
+ return OK;
+}
+
+void wtimeout(WINDOW *win, int delay)
+{
+ PDC_LOG(("wtimeout() - called\n"));
+
+ if (!win)
+ return;
+
+ if (delay < 0)
+ {
+ /* This causes a blocking read on the window, so turn on delay
+ mode */
+
+ win->_nodelay = FALSE;
+ win->_delayms = 0;
+ }
+ else if (!delay)
+ {
+ /* This causes a non-blocking read on the window, so turn off
+ delay mode */
+
+ win->_nodelay = TRUE;
+ win->_delayms = 0;
+ }
+ else
+ {
+ /* This causes the read on the window to delay for the number of
+ milliseconds. Also forces the window into non-blocking read
+ mode */
+
+ /*win->_nodelay = TRUE;*/
+ win->_delayms = delay;
+ }
+}
+
+void timeout(int delay)
+{
+ PDC_LOG(("timeout() - called\n"));
+
+ wtimeout(stdscr, delay);
+}
+
+int crmode(void)
+{
+ PDC_LOG(("crmode() - called\n"));
+
+ return cbreak();
+}
+
+int nocrmode(void)
+{
+ PDC_LOG(("nocrmode() - called\n"));
+
+ return nocbreak();
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/insch.c b/payloads/libpayload/curses/PDCurses/pdcurses/insch.c
new file mode 100644
index 0000000..67b9f47
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/insch.c
@@ -0,0 +1,268 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: insch.c,v 1.44 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: insch
+
+ Synopsis:
+ int insch(chtype ch);
+ int winsch(WINDOW *win, chtype ch);
+ int mvinsch(int y, int x, chtype ch);
+ int mvwinsch(WINDOW *win, int y, int x, chtype ch);
+
+ int insrawch(chtype ch);
+ int winsrawch(WINDOW *win, chtype ch);
+ int mvinsrawch(int y, int x, chtype ch);
+ int mvwinsrawch(WINDOW *win, int y, int x, chtype ch);
+
+ int ins_wch(const cchar_t *wch);
+ int wins_wch(WINDOW *win, const cchar_t *wch);
+ int mvins_wch(int y, int x, const cchar_t *wch);
+ int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch);
+
+ Description:
+ The insch() functions insert a chtype into the window at the
+ current or specified cursor position. The cursor is NOT
+ advanced. A newline is equivalent to clrtoeol(); tabs are
+ expanded; other control characters are converted as with
+ unctrl().
+
+ The ins_wch() functions are the wide-character
+ equivalents, taking cchar_t pointers rather than chtypes.
+
+ Video attributes can be combined with a character by ORing
+ them into the parameter. Text, including attributes, can be
+ copied from one place to another using inch() and insch().
+
+ insrawch() etc. are PDCurses-specific wrappers for insch() etc.
+ that disable the translation of control characters.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ insch Y Y Y
+ winsch Y Y Y
+ mvinsch Y Y Y
+ mvwinsch Y Y Y
+ insrawch - - -
+ winsrawch - - -
+ ins_wch Y
+ wins_wch Y
+ mvins_wch Y
+ mvwins_wch Y
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+int winsch(WINDOW *win, chtype ch)
+{
+ int x, y;
+ chtype attr;
+ bool xlat;
+
+ PDC_LOG(("winsch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
+ win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
+
+ if (!win)
+ return ERR;
+
+ x = win->_curx;
+ y = win->_cury;
+
+ if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
+ return ERR;
+
+ xlat = !SP->raw_out && !(ch & A_ALTCHARSET);
+ attr = ch & A_ATTRIBUTES;
+ ch &= A_CHARTEXT;
+
+ if (xlat && (ch < ' ' || ch == 0x7f))
+ {
+ int x2;
+
+ switch (ch)
+ {
+ case '\t':
+ for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++)
+ {
+ if (winsch(win, attr | ' ') == ERR)
+ return ERR;
+ }
+ return OK;
+
+ case '\n':
+ wclrtoeol(win);
+ break;
+
+ case 0x7f:
+ if (winsch(win, attr | '?') == ERR)
+ return ERR;
+
+ return winsch(win, attr | '^');
+
+ default:
+ /* handle control chars */
+
+ if (winsch(win, attr | (ch + '@')) == ERR)
+ return ERR;
+
+ return winsch(win, attr | '^');
+ }
+ }
+ else
+ {
+ int maxx;
+ chtype *temp;
+
+ /* If the incoming character doesn't have its own attribute,
+ then use the current attributes for the window. If it has
+ attributes but not a color component, OR the attributes to
+ the current attributes for the window. If it has a color
+ component, use the attributes solely from the incoming
+ character. */
+
+ if (!(attr & A_COLOR))
+ attr |= win->_attrs;
+
+ /* wrs (4/10/93): Apply the same sort of logic for the window
+ background, in that it only takes precedence if other color
+ attributes are not there and that the background character
+ will only print if the printing character is blank. */
+
+ if (!(attr & A_COLOR))
+ attr |= win->_bkgd & A_ATTRIBUTES;
+ else
+ attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
+
+ if (ch == ' ')
+ ch = win->_bkgd & A_CHARTEXT;
+
+ /* Add the attribute back into the character. */
+
+ ch |= attr;
+
+ maxx = win->_maxx;
+ temp = &win->_y[y][x];
+
+ memmove(temp + 1, temp, (maxx - x - 1) * sizeof(chtype));
+
+ win->_lastch[y] = maxx - 1;
+
+ if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
+ win->_firstch[y] = x;
+
+ *temp = ch;
+ }
+
+ PDC_sync(win);
+
+ return OK;
+}
+
+int insch(chtype ch)
+{
+ PDC_LOG(("insch() - called\n"));
+
+ return winsch(stdscr, ch);
+}
+
+int mvinsch(int y, int x, chtype ch)
+{
+ PDC_LOG(("mvinsch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winsch(stdscr, ch);
+}
+
+int mvwinsch(WINDOW *win, int y, int x, chtype ch)
+{
+ PDC_LOG(("mvwinsch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winsch(win, ch);
+}
+
+int winsrawch(WINDOW *win, chtype ch)
+{
+ PDC_LOG(("winsrawch() - called: win=%p ch=%x "
+ "(char=%c attr=0x%x)\n", win, ch,
+ ch & A_CHARTEXT, ch & A_ATTRIBUTES));
+
+ if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f)
+ ch |= A_ALTCHARSET;
+
+ return winsch(win, ch);
+}
+
+int insrawch(chtype ch)
+{
+ PDC_LOG(("insrawch() - called\n"));
+
+ return winsrawch(stdscr, ch);
+}
+
+int mvinsrawch(int y, int x, chtype ch)
+{
+ PDC_LOG(("mvinsrawch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winsrawch(stdscr, ch);
+}
+
+int mvwinsrawch(WINDOW *win, int y, int x, chtype ch)
+{
+ PDC_LOG(("mvwinsrawch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winsrawch(win, ch);
+}
+
+#ifdef PDC_WIDE
+int wins_wch(WINDOW *win, const cchar_t *wch)
+{
+ PDC_LOG(("wins_wch() - called\n"));
+
+ return wch ? winsch(win, *wch) : ERR;
+}
+
+int ins_wch(const cchar_t *wch)
+{
+ PDC_LOG(("ins_wch() - called\n"));
+
+ return wins_wch(stdscr, wch);
+}
+
+int mvins_wch(int y, int x, const cchar_t *wch)
+{
+ PDC_LOG(("mvins_wch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wins_wch(stdscr, wch);
+}
+
+int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch)
+{
+ PDC_LOG(("mvwins_wch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wins_wch(win, wch);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/insstr.c b/payloads/libpayload/curses/PDCurses/pdcurses/insstr.c
new file mode 100644
index 0000000..a731eaf
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/insstr.c
@@ -0,0 +1,261 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: insstr.c,v 1.46 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: insstr
+
+ Synopsis:
+ int insstr(const char *str);
+ int insnstr(const char *str, int n);
+ int winsstr(WINDOW *win, const char *str);
+ int winsnstr(WINDOW *win, const char *str, int n);
+ int mvinsstr(int y, int x, const char *str);
+ int mvinsnstr(int y, int x, const char *str, int n);
+ int mvwinsstr(WINDOW *win, int y, int x, const char *str);
+ int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n);
+
+ int ins_wstr(const wchar_t *wstr);
+ int ins_nwstr(const wchar_t *wstr, int n);
+ int wins_wstr(WINDOW *win, const wchar_t *wstr);
+ int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n);
+ int mvins_wstr(int y, int x, const wchar_t *wstr);
+ int mvins_nwstr(int y, int x, const wchar_t *wstr, int n);
+ int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr);
+ int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
+
+ Description:
+ The insstr() functions insert a character string into a window
+ at the current cursor position, by repeatedly calling winsch().
+ When PDCurses is built with wide-character support enabled, the
+ narrow-character functions treat the string as a multibyte
+ string in the current locale, and convert it first. All
+ characters to the right of the cursor are moved to the right,
+ with the possibility of the rightmost characters on the line
+ being lost. The cursor position does not change (after moving
+ to y, x, if specified). The routines with n as the last
+ argument insert at most n characters; if n is negative, then the
+ entire string is inserted.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ insstr Y - 4.0
+ winsstr Y - 4.0
+ mvinsstr Y - 4.0
+ mvwinsstr Y - 4.0
+ insnstr Y - 4.0
+ winsnstr Y - 4.0
+ mvinsnstr Y - 4.0
+ mvwinsnstr Y - 4.0
+ ins_wstr Y
+ wins_wstr Y
+ mvins_wstr Y
+ mvwins_wstr Y
+ ins_nwstr Y
+ wins_nwstr Y
+ mvins_nwstr Y
+ mvwins_nwstr Y
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+int winsnstr(WINDOW *win, const char *str, int n)
+{
+#ifdef PDC_WIDE
+ wchar_t wstr[513], *p;
+ int i;
+#endif
+ int len;
+
+ PDC_LOG(("winsnstr() - called: string=\"%s\" n %d \n", str, n));
+
+ if (!win || !str)
+ return ERR;
+
+ len = strlen(str);
+
+ if (n < 0 || n < len)
+ n = len;
+
+#ifdef PDC_WIDE
+ if (n > 512)
+ n = 512;
+
+ p = wstr;
+ i = 0;
+
+ while (str[i] && i < n)
+ {
+ int retval = PDC_mbtowc(p, str + i, n - i);
+
+ if (retval <= 0)
+ break;
+ p++;
+ i += retval;
+ }
+
+ while (p > wstr)
+ if (winsch(win, *--p) == ERR)
+#else
+ while (n)
+ if (winsch(win, (unsigned char)(str[--n])) == ERR)
+#endif
+ return ERR;
+
+ return OK;
+}
+
+int insstr(const char *str)
+{
+ PDC_LOG(("insstr() - called: string=\"%s\"\n", str));
+
+ return winsnstr(stdscr, str, -1);
+}
+
+int winsstr(WINDOW *win, const char *str)
+{
+ PDC_LOG(("winsstr() - called: string=\"%s\"\n", str));
+
+ return winsnstr(win, str, -1);
+}
+
+int mvinsstr(int y, int x, const char *str)
+{
+ PDC_LOG(("mvinsstr() - called: y %d x %d string=\"%s\"\n", y, x, str));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winsnstr(stdscr, str, -1);
+}
+
+int mvwinsstr(WINDOW *win, int y, int x, const char *str)
+{
+ PDC_LOG(("mvwinsstr() - called: string=\"%s\"\n", str));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winsnstr(win, str, -1);
+}
+
+int insnstr(const char *str, int n)
+{
+ PDC_LOG(("insnstr() - called: string=\"%s\" n %d \n", str, n));
+
+ return winsnstr(stdscr, str, n);
+}
+
+int mvinsnstr(int y, int x, const char *str, int n)
+{
+ PDC_LOG(("mvinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
+ y, x, str, n));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winsnstr(stdscr, str, n);
+}
+
+int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n)
+{
+ PDC_LOG(("mvwinsnstr() - called: y %d x %d string=\"%s\" n %d \n",
+ y, x, str, n));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winsnstr(win, str, n);
+}
+
+#ifdef PDC_WIDE
+int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
+{
+ const wchar_t *p;
+ int len;
+
+ PDC_LOG(("wins_nwstr() - called\n"));
+
+ if (!win || !wstr)
+ return ERR;
+
+ for (len = 0, p = wstr; *p; p++)
+ len++;
+
+ if (n < 0 || n < len)
+ n = len;
+
+ while (n)
+ if (winsch(win, wstr[--n]) == ERR)
+ return ERR;
+
+ return OK;
+}
+
+int ins_wstr(const wchar_t *wstr)
+{
+ PDC_LOG(("ins_wstr() - called\n"));
+
+ return wins_nwstr(stdscr, wstr, -1);
+}
+
+int wins_wstr(WINDOW *win, const wchar_t *wstr)
+{
+ PDC_LOG(("wins_wstr() - called\n"));
+
+ return wins_nwstr(win, wstr, -1);
+}
+
+int mvins_wstr(int y, int x, const wchar_t *wstr)
+{
+ PDC_LOG(("mvins_wstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wins_nwstr(stdscr, wstr, -1);
+}
+
+int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr)
+{
+ PDC_LOG(("mvwinsstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wins_nwstr(win, wstr, -1);
+}
+
+int ins_nwstr(const wchar_t *wstr, int n)
+{
+ PDC_LOG(("ins_nwstr() - called\n"));
+
+ return wins_nwstr(stdscr, wstr, n);
+}
+
+int mvins_nwstr(int y, int x, const wchar_t *wstr, int n)
+{
+ PDC_LOG(("mvinsnstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return wins_nwstr(stdscr, wstr, n);
+}
+
+int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n)
+{
+ PDC_LOG(("mvwinsnstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return wins_nwstr(win, wstr, n);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/instr.c b/payloads/libpayload/curses/PDCurses/pdcurses/instr.c
new file mode 100644
index 0000000..733a348
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/instr.c
@@ -0,0 +1,243 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: instr.c,v 1.44 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: instr
+
+ Synopsis:
+ int instr(char *str);
+ int innstr(char *str, int n);
+ int winstr(WINDOW *win, char *str);
+ int winnstr(WINDOW *win, char *str, int n);
+ int mvinstr(int y, int x, char *str);
+ int mvinnstr(int y, int x, char *str, int n);
+ int mvwinstr(WINDOW *win, int y, int x, char *str);
+ int mvwinnstr(WINDOW *win, int y, int x, char *str, int n);
+
+ int inwstr(wchar_t *wstr);
+ int innwstr(wchar_t *wstr, int n);
+ int winwstr(WINDOW *win, wchar_t *wstr);
+ int winnwstr(WINDOW *win, wchar_t *wstr, int n);
+ int mvinwstr(int y, int x, wchar_t *wstr);
+ int mvinnwstr(int y, int x, wchar_t *wstr, int n);
+ int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr);
+ int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n);
+
+ Description:
+ These functions take characters (or wide characters) from the
+ current or specified position in the window, and return them as
+ a string in str (or wstr). Attributes are ignored. The functions
+ with n as the last argument return a string at most n characters
+ long.
+
+ Return Value:
+ Upon successful completion, innstr(), mvinnstr(), mvwinnstr()
+ and winnstr() return the number of characters actually read into
+ the string; instr(), mvinstr(), mvwinstr() and winstr() return
+ OK. Otherwise, all these functions return ERR.
+
+ Portability X/Open BSD SYS V
+ instr Y - 4.0
+ winstr Y - 4.0
+ mvinstr Y - 4.0
+ mvwinstr Y - 4.0
+ innstr Y - 4.0
+ winnstr Y - 4.0
+ mvinnstr Y - 4.0
+ mvwinnstr Y - 4.0
+ inwstr Y
+ winwstr Y
+ mvinwstr Y
+ mvwinwstr Y
+ innwstr Y
+ winnwstr Y
+ mvinnwstr Y
+ mvwinnwstr Y
+
+**man-end****************************************************************/
+
+int winnstr(WINDOW *win, char *str, int n)
+{
+#ifdef PDC_WIDE
+ wchar_t wstr[513];
+
+ if (n < 0 || n > 512)
+ n = 512;
+
+ if (winnwstr(win, wstr, n) == ERR)
+ return ERR;
+
+ return PDC_wcstombs(str, wstr, n);
+#else
+ chtype *src;
+ int i;
+
+ PDC_LOG(("winnstr() - called: n %d \n", n));
+
+ if (!win || !str)
+ return ERR;
+
+ if (n < 0 || (win->_curx + n) > win->_maxx)
+ n = win->_maxx - win->_curx;
+
+ src = win->_y[win->_cury] + win->_curx;
+
+ for (i = 0; i < n; i++)
+ str[i] = src[i] & A_CHARTEXT;
+
+ str[i] = '\0';
+
+ return i;
+#endif
+}
+
+int instr(char *str)
+{
+ PDC_LOG(("instr() - called: string=\"%s\"\n", str));
+
+ return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK;
+}
+
+int winstr(WINDOW *win, char *str)
+{
+ PDC_LOG(("winstr() - called: \n"));
+
+ return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK;
+}
+
+int mvinstr(int y, int x, char *str)
+{
+ PDC_LOG(("mvinstr() - called: y %d x %d \n", y, x));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK;
+}
+
+int mvwinstr(WINDOW *win, int y, int x, char *str)
+{
+ PDC_LOG(("mvwinstr() - called: y %d x %d \n", y, x));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK;
+}
+
+int innstr(char *str, int n)
+{
+ PDC_LOG(("innstr() - called: n %d \n", n));
+
+ return winnstr(stdscr, str, n);
+}
+
+int mvinnstr(int y, int x, char *str, int n)
+{
+ PDC_LOG(("mvinnstr() - called: y %d x %d n %d \n", y, x, n));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winnstr(stdscr, str, n);
+}
+
+int mvwinnstr(WINDOW *win, int y, int x, char *str, int n)
+{
+ PDC_LOG(("mvwinnstr() - called: y %d x %d n %d \n", y, x, n));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winnstr(win, str, n);
+}
+
+#ifdef PDC_WIDE
+int winnwstr(WINDOW *win, wchar_t *wstr, int n)
+{
+ chtype *src;
+ int i;
+
+ PDC_LOG(("winnstr() - called: n %d \n", n));
+
+ if (!win || !wstr)
+ return ERR;
+
+ if (n < 0 || (win->_curx + n) > win->_maxx)
+ n = win->_maxx - win->_curx;
+
+ src = win->_y[win->_cury] + win->_curx;
+
+ for (i = 0; i < n; i++)
+ wstr[i] = src[i] & A_CHARTEXT;
+
+ wstr[i] = L'\0';
+
+ return i;
+}
+
+int inwstr(wchar_t *wstr)
+{
+ PDC_LOG(("inwstr() - called\n"));
+
+ return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK;
+}
+
+int winwstr(WINDOW *win, wchar_t *wstr)
+{
+ PDC_LOG(("winwstr() - called\n"));
+
+ return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK;
+}
+
+int mvinwstr(int y, int x, wchar_t *wstr)
+{
+ PDC_LOG(("mvinwstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK;
+}
+
+int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr)
+{
+ PDC_LOG(("mvwinstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK;
+}
+
+int innwstr(wchar_t *wstr, int n)
+{
+ PDC_LOG(("innwstr() - called\n"));
+
+ return winnwstr(stdscr, wstr, n);
+}
+
+int mvinnwstr(int y, int x, wchar_t *wstr, int n)
+{
+ PDC_LOG(("mvinnstr() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ return winnwstr(stdscr, wstr, n);
+}
+
+int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n)
+{
+ PDC_LOG(("mvwinnwstr() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ return winnwstr(win, wstr, n);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/kernel.c b/payloads/libpayload/curses/PDCurses/pdcurses/kernel.c
new file mode 100644
index 0000000..1a2f835
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/kernel.c
@@ -0,0 +1,256 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: kernel.c,v 1.78 2008/07/15 17:13:26 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: kernel
+
+ Synopsis:
+ int def_prog_mode(void);
+ int def_shell_mode(void);
+ int reset_prog_mode(void);
+ int reset_shell_mode(void);
+ int resetty(void);
+ int savetty(void);
+ int ripoffline(int line, int (*init)(WINDOW *, int));
+ int curs_set(int visibility);
+ int napms(int ms);
+
+ int draino(int ms);
+ int resetterm(void);
+ int fixterm(void);
+ int saveterm(void);
+
+ Description:
+ def_prog_mode() and def_shell_mode() save the current terminal
+ modes as the "program" (in curses) or "shell" (not in curses)
+ state for use by the reset_prog_mode() and reset_shell_mode()
+ functions. This is done automatically by initscr().
+
+ reset_prog_mode() and reset_shell_mode() restore the terminal to
+ "program" (in curses) or "shell" (not in curses) state. These
+ are done automatically by endwin() and doupdate() after an
+ endwin(), so they would normally not be called before these
+ functions.
+
+ savetty() and resetty() save and restore the state of the
+ terminal modes. savetty() saves the current state in a buffer,
+ and resetty() restores the state to what it was at the last call
+ to savetty().
+
+ curs_set() alters the appearance of the cursor. A visibility of
+ 0 makes it disappear; 1 makes it appear "normal" (usually an
+ underline) and 2 makes it "highly visible" (usually a block).
+
+ ripoffline() reduces the size of stdscr by one line. If the
+ "line" parameter is positive, the line is removed from the top
+ of the screen; if negative, from the bottom. Up to 5 lines can
+ be ripped off stdscr by calling ripoffline() repeatedly. The
+ function argument, init, is called from within initscr() or
+ newterm(), so ripoffline() must be called before either of these
+ functions. The init function receives a pointer to a one-line
+ WINDOW, and the width of the window. Calling ripoffline() with a
+ NULL init function pointer is an error.
+
+ napms() suspends the program for the specified number of
+ milliseconds. draino() is an archaic equivalent.
+
+ resetterm(), fixterm() and saveterm() are archaic equivalents
+ for reset_shell_mode(), reset_prog_mode() and def_prog_mode(),
+ respectively.
+
+ Return Value:
+ All functions return OK on success and ERR on error, except
+ curs_set(), which returns the previous visibility.
+
+ Portability X/Open BSD SYS V
+ def_prog_mode Y Y Y
+ def_shell_mode Y Y Y
+ reset_prog_mode Y Y Y
+ reset_shell_mode Y Y Y
+ resetty Y Y Y
+ savetty Y Y Y
+ ripoffline Y - 3.0
+ curs_set Y - 3.0
+ napms Y Y Y
+ draino -
+ resetterm -
+ fixterm -
+ saveterm -
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+RIPPEDOFFLINE linesripped[5];
+char linesrippedoff = 0;
+
+static struct cttyset
+{
+ bool been_set;
+ SCREEN saved;
+} ctty[3];
+
+enum { PDC_SH_TTY, PDC_PR_TTY, PDC_SAVE_TTY };
+
+static void _save_mode(int i)
+{
+ ctty[i].been_set = TRUE;
+
+ memcpy(&(ctty[i].saved), SP, sizeof(SCREEN));
+
+ PDC_save_screen_mode(i);
+}
+
+static int _restore_mode(int i)
+{
+ if (ctty[i].been_set == TRUE)
+ {
+ memcpy(SP, &(ctty[i].saved), sizeof(SCREEN));
+
+ if (ctty[i].saved.raw_out)
+ raw();
+
+ PDC_restore_screen_mode(i);
+
+ if ((LINES != ctty[i].saved.lines) ||
+ (COLS != ctty[i].saved.cols))
+ resize_term(ctty[i].saved.lines, ctty[i].saved.cols);
+
+ PDC_curs_set(ctty[i].saved.visibility);
+
+ PDC_gotoyx(ctty[i].saved.cursrow, ctty[i].saved.curscol);
+ }
+
+ return ctty[i].been_set ? OK : ERR;
+}
+
+int def_prog_mode(void)
+{
+ PDC_LOG(("def_prog_mode() - called\n"));
+
+ _save_mode(PDC_PR_TTY);
+
+ return OK;
+}
+
+int def_shell_mode(void)
+{
+ PDC_LOG(("def_shell_mode() - called\n"));
+
+ _save_mode(PDC_SH_TTY);
+
+ return OK;
+}
+
+int reset_prog_mode(void)
+{
+ PDC_LOG(("reset_prog_mode() - called\n"));
+
+ _restore_mode(PDC_PR_TTY);
+ PDC_reset_prog_mode();
+
+ return OK;
+}
+
+int reset_shell_mode(void)
+{
+ PDC_LOG(("reset_shell_mode() - called\n"));
+
+ _restore_mode(PDC_SH_TTY);
+ PDC_reset_shell_mode();
+
+ return OK;
+}
+
+int resetty(void)
+{
+ PDC_LOG(("resetty() - called\n"));
+
+ return _restore_mode(PDC_SAVE_TTY);
+}
+
+int savetty(void)
+{
+ PDC_LOG(("savetty() - called\n"));
+
+ _save_mode(PDC_SAVE_TTY);
+
+ return OK;
+}
+
+int curs_set(int visibility)
+{
+ int ret_vis;
+
+ PDC_LOG(("curs_set() - called: visibility=%d\n", visibility));
+
+ if ((visibility < 0) || (visibility > 2))
+ return ERR;
+
+ ret_vis = PDC_curs_set(visibility);
+
+ /* If the cursor is changing from invisible to visible, update
+ its position */
+
+ if (visibility && !ret_vis)
+ PDC_gotoyx(SP->cursrow, SP->curscol);
+
+ return ret_vis;
+}
+
+int napms(int ms)
+{
+ PDC_LOG(("napms() - called: ms=%d\n", ms));
+
+ if (ms)
+ PDC_napms(ms);
+
+ return OK;
+}
+
+int ripoffline(int line, int (*init)(WINDOW *, int))
+{
+ PDC_LOG(("ripoffline() - called: line=%d\n", line));
+
+ if (linesrippedoff < 5 && line && init)
+ {
+ linesripped[(int)linesrippedoff].line = line;
+ linesripped[(int)linesrippedoff++].init = init;
+
+ return OK;
+ }
+
+ return ERR;
+}
+
+int draino(int ms)
+{
+ PDC_LOG(("draino() - called\n"));
+
+ return napms(ms);
+}
+
+int resetterm(void)
+{
+ PDC_LOG(("resetterm() - called\n"));
+
+ return reset_shell_mode();
+}
+
+int fixterm(void)
+{
+ PDC_LOG(("fixterm() - called\n"));
+
+ return reset_prog_mode();
+}
+
+int saveterm(void)
+{
+ PDC_LOG(("saveterm() - called\n"));
+
+ return def_prog_mode();
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/keyname.c b/payloads/libpayload/curses/PDCurses/pdcurses/keyname.c
new file mode 100644
index 0000000..5bfeb6e
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/keyname.c
@@ -0,0 +1,125 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: keyname.c,v 1.8 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: keyname
+
+ Synopsis:
+ char *keyname(int key);
+
+ char *key_name(wchar_t c);
+
+ bool has_key(int key);
+
+ Description:
+ keyname() returns a string corresponding to the argument key.
+ key may be any key returned by wgetch().
+
+ key_name() is the wide-character version. It takes a wchar_t
+ parameter, but still returns a char *.
+
+ has_key() returns TRUE for recognized keys, FALSE otherwise.
+ This function is an ncurses extension.
+
+ Portability X/Open BSD SYS V
+ keyname Y - 3.0
+ key_name Y
+ has_key - - -
+
+**man-end****************************************************************/
+
+const char *keyname(int key)
+{
+ /* Key names must be in exactly the same order as in curses.h */
+
+ static const char *key_name[] =
+ {
+ "KEY_BREAK", "KEY_DOWN", "KEY_UP", "KEY_LEFT", "KEY_RIGHT",
+ "KEY_HOME", "KEY_BACKSPACE", "KEY_F0", "KEY_F(1)", "KEY_F(2)",
+ "KEY_F(3)", "KEY_F(4)", "KEY_F(5)", "KEY_F(6)", "KEY_F(7)",
+ "KEY_F(8)", "KEY_F(9)", "KEY_F(10)", "KEY_F(11)", "KEY_F(12)",
+ "KEY_F(13)", "KEY_F(14)", "KEY_F(15)", "KEY_F(16)", "KEY_F(17)",
+ "KEY_F(18)", "KEY_F(19)", "KEY_F(20)", "KEY_F(21)", "KEY_F(22)",
+ "KEY_F(23)", "KEY_F(24)", "KEY_F(25)", "KEY_F(26)", "KEY_F(27)",
+ "KEY_F(28)", "KEY_F(29)", "KEY_F(30)", "KEY_F(31)", "KEY_F(32)",
+ "KEY_F(33)", "KEY_F(34)", "KEY_F(35)", "KEY_F(36)", "KEY_F(37)",
+ "KEY_F(38)", "KEY_F(39)", "KEY_F(40)", "KEY_F(41)", "KEY_F(42)",
+ "KEY_F(43)", "KEY_F(44)", "KEY_F(45)", "KEY_F(46)", "KEY_F(47)",
+ "KEY_F(48)", "KEY_F(49)", "KEY_F(50)", "KEY_F(51)", "KEY_F(52)",
+ "KEY_F(53)", "KEY_F(54)", "KEY_F(55)", "KEY_F(56)", "KEY_F(57)",
+ "KEY_F(58)", "KEY_F(59)", "KEY_F(60)", "KEY_F(61)", "KEY_F(62)",
+ "KEY_F(63)", "KEY_DL", "KEY_IL", "KEY_DC", "KEY_IC", "KEY_EIC",
+ "KEY_CLEAR", "KEY_EOS", "KEY_EOL", "KEY_SF", "KEY_SR",
+ "KEY_NPAGE", "KEY_PPAGE", "KEY_STAB", "KEY_CTAB", "KEY_CATAB",
+ "KEY_ENTER", "KEY_SRESET", "KEY_RESET", "KEY_PRINT", "KEY_LL",
+ "KEY_ABORT", "KEY_SHELP", "KEY_LHELP", "KEY_BTAB", "KEY_BEG",
+ "KEY_CANCEL", "KEY_CLOSE", "KEY_COMMAND", "KEY_COPY",
+ "KEY_CREATE", "KEY_END", "KEY_EXIT", "KEY_FIND", "KEY_HELP",
+ "KEY_MARK", "KEY_MESSAGE", "KEY_MOVE", "KEY_NEXT", "KEY_OPEN",
+ "KEY_OPTIONS", "KEY_PREVIOUS", "KEY_REDO", "KEY_REFERENCE",
+ "KEY_REFRESH", "KEY_REPLACE", "KEY_RESTART", "KEY_RESUME",
+ "KEY_SAVE", "KEY_SBEG", "KEY_SCANCEL", "KEY_SCOMMAND",
+ "KEY_SCOPY", "KEY_SCREATE", "KEY_SDC", "KEY_SDL", "KEY_SELECT",
+ "KEY_SEND", "KEY_SEOL", "KEY_SEXIT", "KEY_SFIND", "KEY_SHOME",
+ "KEY_SIC", "UNKNOWN KEY", "KEY_SLEFT", "KEY_SMESSAGE",
+ "KEY_SMOVE", "KEY_SNEXT", "KEY_SOPTIONS", "KEY_SPREVIOUS",
+ "KEY_SPRINT", "KEY_SREDO", "KEY_SREPLACE", "KEY_SRIGHT",
+ "KEY_SRSUME", "KEY_SSAVE", "KEY_SSUSPEND", "KEY_SUNDO",
+ "KEY_SUSPEND", "KEY_UNDO", "ALT_0", "ALT_1", "ALT_2", "ALT_3",
+ "ALT_4", "ALT_5", "ALT_6", "ALT_7", "ALT_8", "ALT_9", "ALT_A",
+ "ALT_B", "ALT_C", "ALT_D", "ALT_E", "ALT_F", "ALT_G", "ALT_H",
+ "ALT_I", "ALT_J", "ALT_K", "ALT_L", "ALT_M", "ALT_N", "ALT_O",
+ "ALT_P", "ALT_Q", "ALT_R", "ALT_S", "ALT_T", "ALT_U", "ALT_V",
+ "ALT_W", "ALT_X", "ALT_Y", "ALT_Z", "CTL_LEFT", "CTL_RIGHT",
+ "CTL_PGUP", "CTL_PGDN", "CTL_HOME", "CTL_END", "KEY_A1",
+ "KEY_A2", "KEY_A3", "KEY_B1", "KEY_B2", "KEY_B3", "KEY_C1",
+ "KEY_C2", "KEY_C3", "PADSLASH", "PADENTER", "CTL_PADENTER",
+ "ALT_PADENTER", "PADSTOP", "PADSTAR", "PADMINUS", "PADPLUS",
+ "CTL_PADSTOP", "CTL_PADCENTER", "CTL_PADPLUS", "CTL_PADMINUS",
+ "CTL_PADSLASH", "CTL_PADSTAR", "ALT_PADPLUS", "ALT_PADMINUS",
+ "ALT_PADSLASH", "ALT_PADSTAR", "ALT_PADSTOP", "CTL_INS",
+ "ALT_DEL", "ALT_INS", "CTL_UP", "CTL_DOWN", "CTL_TAB",
+ "ALT_TAB", "ALT_MINUS", "ALT_EQUAL", "ALT_HOME", "ALT_PGUP",
+ "ALT_PGDN", "ALT_END", "ALT_UP", "ALT_DOWN", "ALT_RIGHT",
+ "ALT_LEFT", "ALT_ENTER", "ALT_ESC", "ALT_BQUOTE",
+ "ALT_LBRACKET", "ALT_RBRACKET", "ALT_SEMICOLON", "ALT_FQUOTE",
+ "ALT_COMMA", "ALT_STOP", "ALT_FSLASH", "ALT_BKSP", "CTL_BKSP",
+ "PAD0", "CTL_PAD0", "CTL_PAD1", "CTL_PAD2", "CTL_PAD3",
+ "CTL_PAD4", "CTL_PAD5", "CTL_PAD6", "CTL_PAD7","CTL_PAD8",
+ "CTL_PAD9", "ALT_PAD0", "ALT_PAD1", "ALT_PAD2", "ALT_PAD3",
+ "ALT_PAD4", "ALT_PAD5", "ALT_PAD6", "ALT_PAD7", "ALT_PAD8",
+ "ALT_PAD9", "CTL_DEL", "ALT_BSLASH", "CTL_ENTER",
+ "SHF_PADENTER", "SHF_PADSLASH", "SHF_PADSTAR", "SHF_PADPLUS",
+ "SHF_PADMINUS", "SHF_UP", "SHF_DOWN", "SHF_IC", "SHF_DC",
+ "KEY_MOUSE", "KEY_SHIFT_L", "KEY_SHIFT_R", "KEY_CONTROL_L",
+ "KEY_CONTROL_R", "KEY_ALT_L", "KEY_ALT_R", "KEY_RESIZE",
+ "KEY_SUP", "KEY_SDOWN"
+ };
+
+ PDC_LOG(("keyname() - called: key %d\n", key));
+
+ if ((key >= 0) && (key < 0x80))
+ return unctrl((chtype)key);
+
+ return has_key(key) ? key_name[key - KEY_MIN] : "UNKNOWN KEY";
+}
+
+bool has_key(int key)
+{
+ PDC_LOG(("has_key() - called: key %d\n", key));
+
+ return (key >= KEY_MIN && key <= KEY_MAX);
+}
+
+#ifdef PDC_WIDE
+char *key_name(wchar_t c)
+{
+ PDC_LOG(("key_name() - called\n"));
+
+ return keyname((int)c);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/mouse.c b/payloads/libpayload/curses/PDCurses/pdcurses/mouse.c
new file mode 100644
index 0000000..5071886
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/mouse.c
@@ -0,0 +1,429 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: mouse.c,v 1.45 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: mouse
+
+ Synopsis:
+ int mouse_set(unsigned long mbe);
+ int mouse_on(unsigned long mbe);
+ int mouse_off(unsigned long mbe);
+ int request_mouse_pos(void);
+ int map_button(unsigned long button);
+ void wmouse_position(WINDOW *win, int *y, int *x);
+ unsigned long getmouse(void);
+ unsigned long getbmap(void);
+
+ int mouseinterval(int wait);
+ bool wenclose(const WINDOW *win, int y, int x);
+ bool wmouse_trafo(const WINDOW *win, int *y, int *x, bool to_screen);
+ bool mouse_trafo(int *y, int *x, bool to_screen);
+ mmask_t mousemask(mmask_t mask, mmask_t *oldmask);
+ int nc_getmouse(MEVENT *event);
+ int ungetmouse(MEVENT *event);
+
+ Description:
+ As of PDCurses 3.0, there are two separate mouse interfaces: the
+ classic interface, which is based on the undocumented Sys V
+ mouse functions; and an ncurses-compatible interface. Both are
+ active at all times, and you can mix and match functions from
+ each, though it's not recommended. The ncurses interface is
+ essentially an emulation layer built on top of the classic
+ interface; it's here to allow easier porting of ncurses apps.
+
+ The classic interface: mouse_set(), mouse_on(), mouse_off(),
+ request_mouse_pos(), map_button(), wmouse_position(),
+ getmouse(), and getbmap(). An application using this interface
+ would start by calling mouse_set() or mouse_on() with a non-zero
+ value, often ALL_MOUSE_EVENTS. Then it would check for a
+ KEY_MOUSE return from getch(). If found, it would call
+ request_mouse_pos() to get the current mouse status.
+
+ mouse_set(), mouse_on() and mouse_off() are analagous to
+ attrset(), attron() and attroff(). These functions set the
+ mouse button events to trap. The button masks used in these
+ functions are defined in curses.h and can be or'ed together.
+ They are the group of masks starting with BUTTON1_RELEASED.
+
+ request_mouse_pos() requests curses to fill in the Mouse_status
+ structure with the current state of the mouse.
+
+ map_button() enables the specified mouse action to activate the
+ Soft Label Keys if the action occurs over the area of the screen
+ where the Soft Label Keys are displayed. The mouse actions are
+ defined in curses.h in the group that starts with BUTTON_RELEASED.
+
+ wmouse_position() determines if the current mouse position is
+ within the window passed as an argument. If the mouse is
+ outside the current window, -1 is returned in the y and x
+ arguments; otherwise the y and x coordinates of the mouse
+ (relative to the top left corner of the window) are returned in
+ y and x.
+
+ getmouse() returns the current status of the trapped mouse
+ buttons as set by mouse_set() or mouse_on().
+
+ getbmap() returns the current status of the button action used
+ to map a mouse action to the Soft Label Keys as set by the
+ map_button() function.
+
+ The ncurses interface: mouseinterval(), wenclose(),
+ wmouse_trafo(), mouse_trafo(), mousemask(), nc_getmouse(), and
+ ungetmouse(). A typical application using this interface would
+ start by calling mousemask() with a non-zero value, often
+ ALL_MOUSE_EVENTS. Then it would check for a KEY_MOUSE return
+ from getch(). If found, it would call nc_getmouse() to get the
+ current mouse status.
+
+ mouseinterval() sets the timeout for a mouse click. On all
+ current platforms, PDCurses receives mouse button press and
+ release events, but must synthesize click events. It does this
+ by checking whether a release event is queued up after a press
+ event. If it gets a press event, and there are no more events
+ waiting, it will wait for the timeout interval, then check again
+ for a release. A press followed by a release is reported as
+ BUTTON_CLICKED; otherwise it's passed through as BUTTON_PRESSED.
+ The default timeout is 150ms; valid values are 0 (no clicks
+ reported) through 1000ms. In x11, the timeout can also be set
+ via the clickPeriod resource. The return value from
+ mouseinterval() is the old timeout. To check the old value
+ without setting a new one, call it with a parameter of -1. Note
+ that although there's no classic equivalent for this function
+ (apart from the clickPeriod resource), the value set applies in
+ both interfaces.
+
+ wenclose() reports whether the given screen-relative y, x
+ coordinates fall within the given window.
+
+ wmouse_trafo() converts between screen-relative and window-
+ relative coordinates. A to_screen parameter of TRUE means to
+ convert from window to screen; otherwise the reverse. The
+ function returns FALSE if the coordinates aren't within the
+ window, or if any of the parameters are NULL. The coordinates
+ have been converted when the function returns TRUE.
+
+ mouse_trafo() is the stdscr version of wmouse_trafo().
+
+ mousemask() is nearly equivalent to mouse_set(), but instead of
+ OK/ERR, it returns the value of the mask after setting it. (This
+ isn't necessarily the same value passed in, since the mask could
+ be altered on some platforms.) And if the second parameter is a
+ non-null pointer, mousemask() stores the previous mask value
+ there. Also, since the ncurses interface doesn't work with
+ PDCurses' BUTTON_MOVED events, mousemask() filters them out.
+
+ nc_getmouse() returns the current mouse status in an MEVENT
+ struct. This is equivalent to ncurses' getmouse(), renamed to
+ avoid conflict with PDCurses' getmouse(). But if you define
+ NCURSES_MOUSE_VERSION (preferably as 2) before including
+ curses.h, it defines getmouse() to nc_getmouse(), along with a
+ few other redefintions needed for compatibility with ncurses
+ code. nc_getmouse() calls request_mouse_pos(), which (not
+ getmouse()) is the classic equivalent.
+
+ ungetmouse() is the mouse equivalent of ungetch(). However,
+ PDCurses doesn't maintain a queue of mouse events; only one can
+ be pushed back, and it can overwrite or be overwritten by real
+ mouse events.
+
+ Portability X/Open BSD SYS V
+ mouse_set - - 4.0
+ mouse_on - - 4.0
+ mouse_off - - 4.0
+ request_mouse_pos - - 4.0
+ map_button - - 4.0
+ wmouse_position - - 4.0
+ getmouse - - 4.0
+ getbmap - - 4.0
+ mouseinterval - - -
+ wenclose - - -
+ wmouse_trafo - - -
+ mouse_trafo - - -
+ mousemask - - -
+ nc_getmouse - - -
+ ungetmouse - - -
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+static bool ungot = FALSE;
+
+int mouse_set(unsigned long mbe)
+{
+ PDC_LOG(("mouse_set() - called: event %x\n", mbe));
+
+ SP->_trap_mbe = mbe;
+ return PDC_mouse_set();
+}
+
+int mouse_on(unsigned long mbe)
+{
+ PDC_LOG(("mouse_on() - called: event %x\n", mbe));
+
+ SP->_trap_mbe |= mbe;
+ return PDC_mouse_set();
+}
+
+int mouse_off(unsigned long mbe)
+{
+ PDC_LOG(("mouse_off() - called: event %x\n", mbe));
+
+ SP->_trap_mbe &= ~mbe;
+ return PDC_mouse_set();
+}
+
+int map_button(unsigned long button)
+{
+ PDC_LOG(("map_button() - called: button %x\n", button));
+
+/****************** this does nothing at the moment ***************/
+ SP->_map_mbe_to_key = button;
+
+ return OK;
+}
+
+int request_mouse_pos(void)
+{
+ PDC_LOG(("request_mouse_pos() - called\n"));
+
+ Mouse_status = pdc_mouse_status;
+
+ return OK;
+}
+
+void wmouse_position(WINDOW *win, int *y, int *x)
+{
+ PDC_LOG(("wmouse_position() - called\n"));
+
+ if (win && wenclose(win, MOUSE_Y_POS, MOUSE_X_POS))
+ {
+ if (y)
+ *y = MOUSE_Y_POS - win->_begy;
+ if (x)
+ *x = MOUSE_X_POS - win->_begx;
+ }
+ else
+ {
+ if (y)
+ *y = -1;
+ if (x)
+ *x = -1;
+ }
+}
+
+unsigned long getmouse(void)
+{
+ PDC_LOG(("getmouse() - called\n"));
+
+ return SP->_trap_mbe;
+}
+
+unsigned long getbmap(void)
+{
+ PDC_LOG(("getbmap() - called\n"));
+
+ return SP->_map_mbe_to_key;
+}
+
+/* ncurses mouse interface */
+
+int mouseinterval(int wait)
+{
+ int old_wait;
+
+ PDC_LOG(("mouseinterval() - called: %d\n", wait));
+
+ old_wait = SP->mouse_wait;
+
+ if (wait >= 0 && wait <= 1000)
+ SP->mouse_wait = wait;
+
+ return old_wait;
+}
+
+bool wenclose(const WINDOW *win, int y, int x)
+{
+ PDC_LOG(("wenclose() - called: %p %d %d\n", win, y, x));
+
+ return (win && y >= win->_begy && y < win->_begy + win->_maxy
+ && x >= win->_begx && x < win->_begx + win->_maxx);
+}
+
+bool wmouse_trafo(const WINDOW *win, int *y, int *x, bool to_screen)
+{
+ int newy, newx;
+
+ PDC_LOG(("wmouse_trafo() - called\n"));
+
+ if (!win || !y || !x)
+ return FALSE;
+
+ newy = *y;
+ newx = *x;
+
+ if (to_screen)
+ {
+ newy += win->_begy;
+ newx += win->_begx;
+
+ if (!wenclose(win, newy, newx))
+ return FALSE;
+ }
+ else
+ {
+ if (wenclose(win, newy, newx))
+ {
+ newy -= win->_begy;
+ newx -= win->_begx;
+ }
+ else
+ return FALSE;
+ }
+
+ *y = newy;
+ *x = newx;
+
+ return TRUE;
+}
+
+bool mouse_trafo(int *y, int *x, bool to_screen)
+{
+ PDC_LOG(("mouse_trafo() - called\n"));
+
+ return wmouse_trafo(stdscr, y, x, to_screen);
+}
+
+mmask_t mousemask(mmask_t mask, mmask_t *oldmask)
+{
+ PDC_LOG(("mousemask() - called\n"));
+
+ if (oldmask)
+ *oldmask = SP->_trap_mbe;
+
+ /* The ncurses interface doesn't work with our move events, so
+ filter them here */
+
+ mask &= ~(BUTTON1_MOVED | BUTTON2_MOVED | BUTTON3_MOVED);
+
+ mouse_set(mask);
+
+ return SP->_trap_mbe;
+}
+
+int nc_getmouse(MEVENT *event)
+{
+ int i;
+ mmask_t bstate = 0;
+
+ PDC_LOG(("nc_getmouse() - called\n"));
+
+ if (!event)
+ return ERR;
+
+ ungot = FALSE;
+
+ request_mouse_pos();
+
+ event->id = 0;
+
+ event->x = Mouse_status.x;
+ event->y = Mouse_status.y;
+ event->z = 0;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (Mouse_status.changes & (1 << i))
+ {
+ int shf = i * 5;
+ short button = Mouse_status.button[i] & BUTTON_ACTION_MASK;
+
+ if (button == BUTTON_RELEASED)
+ bstate |= (BUTTON1_RELEASED << shf);
+ else if (button == BUTTON_PRESSED)
+ bstate |= (BUTTON1_PRESSED << shf);
+ else if (button == BUTTON_CLICKED)
+ bstate |= (BUTTON1_CLICKED << shf);
+ else if (button == BUTTON_DOUBLE_CLICKED)
+ bstate |= (BUTTON1_DOUBLE_CLICKED << shf);
+
+ button = Mouse_status.button[i] & BUTTON_MODIFIER_MASK;
+
+ if (button & PDC_BUTTON_SHIFT)
+ bstate |= BUTTON_MODIFIER_SHIFT;
+ if (button & PDC_BUTTON_CONTROL)
+ bstate |= BUTTON_MODIFIER_CONTROL;
+ if (button & PDC_BUTTON_ALT)
+ bstate |= BUTTON_MODIFIER_ALT;
+ }
+ }
+
+ if (MOUSE_WHEEL_UP)
+ bstate |= BUTTON4_PRESSED;
+ else if (MOUSE_WHEEL_DOWN)
+ bstate |= BUTTON5_PRESSED;
+
+ /* extra filter pass -- mainly for button modifiers */
+
+ event->bstate = bstate & SP->_trap_mbe;
+
+ return OK;
+}
+
+int ungetmouse(MEVENT *event)
+{
+ int i;
+ unsigned long bstate;
+
+ PDC_LOG(("ungetmouse() - called\n"));
+
+ if (!event || ungot)
+ return ERR;
+
+ ungot = TRUE;
+
+ pdc_mouse_status.x = event->x;
+ pdc_mouse_status.y = event->y;
+
+ pdc_mouse_status.changes = 0;
+ bstate = event->bstate;
+
+ for (i = 0; i < 3; i++)
+ {
+ int shf = i * 5;
+ short button = 0;
+
+ if (bstate & ((BUTTON1_RELEASED | BUTTON1_PRESSED |
+ BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED) << shf))
+ {
+ pdc_mouse_status.changes |= 1 << i;
+
+ if (bstate & (BUTTON1_PRESSED << shf))
+ button = BUTTON_PRESSED;
+ if (bstate & (BUTTON1_CLICKED << shf))
+ button = BUTTON_CLICKED;
+ if (bstate & (BUTTON1_DOUBLE_CLICKED << shf))
+ button = BUTTON_DOUBLE_CLICKED;
+
+ if (bstate & BUTTON_MODIFIER_SHIFT)
+ button |= PDC_BUTTON_SHIFT;
+ if (bstate & BUTTON_MODIFIER_CONTROL)
+ button |= PDC_BUTTON_CONTROL;
+ if (bstate & BUTTON_MODIFIER_ALT)
+ button |= PDC_BUTTON_ALT;
+ }
+
+ pdc_mouse_status.button[i] = button;
+ }
+
+ if (bstate & BUTTON4_PRESSED)
+ pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_UP;
+ else if (bstate & BUTTON5_PRESSED)
+ pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_DOWN;
+
+ return ungetch(KEY_MOUSE);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/move.c b/payloads/libpayload/curses/PDCurses/pdcurses/move.c
new file mode 100644
index 0000000..30e5908
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/move.c
@@ -0,0 +1,54 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: move.c,v 1.28 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: move
+
+ Synopsis:
+ int move(int y, int x);
+ int wmove(WINDOW *win, int y, int x);
+
+ Description:
+ The cursor associated with the window is moved to the given
+ location. This does not move the physical cursor of the
+ terminal until refresh() is called. The position specified is
+ relative to the upper left corner of the window, which is (0,0).
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ move Y Y Y
+ wmove Y Y Y
+
+**man-end****************************************************************/
+
+int move(int y, int x)
+{
+ PDC_LOG(("move() - called: y=%d x=%d\n", y, x));
+
+ if (!stdscr || x < 0 || y < 0 || x >= stdscr->_maxx || y >= stdscr->_maxy)
+ return ERR;
+
+ stdscr->_curx = x;
+ stdscr->_cury = y;
+
+ return OK;
+}
+
+int wmove(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("wmove() - called: y=%d x=%d\n", y, x));
+
+ if (!win || x < 0 || y < 0 || x >= win->_maxx || y >= win->_maxy)
+ return ERR;
+
+ win->_curx = x;
+ win->_cury = y;
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/outopts.c b/payloads/libpayload/curses/PDCurses/pdcurses/outopts.c
new file mode 100644
index 0000000..9b04eb9
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/outopts.c
@@ -0,0 +1,156 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: outopts.c,v 1.39 2008/07/14 12:22:13 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: outopts
+
+ Synopsis:
+ int clearok(WINDOW *win, bool bf);
+ int idlok(WINDOW *win, bool bf);
+ void idcok(WINDOW *win, bool bf);
+ void immedok(WINDOW *win, bool bf);
+ int leaveok(WINDOW *win, bool bf);
+ int setscrreg(int top, int bot);
+ int wsetscrreg(WINDOW *win, int top, int bot);
+ int scrollok(WINDOW *win, bool bf);
+
+ int raw_output(bool bf);
+
+ Description:
+ With clearok(), if bf is TRUE, the next call to wrefresh() with
+ this window will clear the screen completely and redraw the
+ entire screen.
+
+ immedok(), called with a second argument of TRUE, causes an
+ automatic wrefresh() every time a change is made to the
+ specified window.
+
+ Normally, the hardware cursor is left at the location of the
+ window being refreshed. leaveok() allows the cursor to be
+ left wherever the update happens to leave it. It's useful
+ for applications where the cursor is not used, since it reduces
+ the need for cursor motions. If possible, the cursor is made
+ invisible when this option is enabled.
+
+ wsetscrreg() sets a scrolling region in a window; "top" and
+ "bot" are the line numbers for the top and bottom margins. If
+ this option and scrollok() are enabled, any attempt to move off
+ the bottom margin will cause all lines in the scrolling region
+ to scroll up one line. setscrreg() is the stdscr version.
+
+ idlok() and idcok() do nothing in PDCurses, but are provided for
+ compatibility with other curses implementations.
+
+ raw_output() enables the output of raw characters using the
+ standard *add* and *ins* curses functions (that is, it disables
+ translation of control characters).
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ clearok Y Y Y
+ idlok Y Y Y
+ idcok Y - 4.0
+ immedok Y - 4.0
+ leaveok Y Y Y
+ setscrreg Y Y Y
+ wsetscrreg Y Y Y
+ scrollok Y Y Y
+ raw_output - - -
+
+**man-end****************************************************************/
+
+int clearok(WINDOW *win, bool bf)
+{
+ PDC_LOG(("clearok() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_clear = bf;
+
+ return OK;
+}
+
+int idlok(WINDOW *win, bool bf)
+{
+ PDC_LOG(("idlok() - called\n"));
+
+ return OK;
+}
+
+void idcok(WINDOW *win, bool bf)
+{
+ PDC_LOG(("idcok() - called\n"));
+}
+
+void immedok(WINDOW *win, bool bf)
+{
+ PDC_LOG(("immedok() - called\n"));
+
+ if (win)
+ win->_immed = bf;
+}
+
+int leaveok(WINDOW *win, bool bf)
+{
+ PDC_LOG(("leaveok() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_leaveit = bf;
+
+ curs_set(!bf);
+
+ return OK;
+}
+
+int setscrreg(int top, int bottom)
+{
+ PDC_LOG(("setscrreg() - called: top %d bottom %d\n", top, bottom));
+
+ return wsetscrreg(stdscr, top, bottom);
+}
+
+int wsetscrreg(WINDOW *win, int top, int bottom)
+{
+ PDC_LOG(("wsetscrreg() - called: top %d bottom %d\n", top, bottom));
+
+ if (win && 0 <= top && top <= win->_cury &&
+ win->_cury <= bottom && bottom < win->_maxy)
+ {
+ win->_tmarg = top;
+ win->_bmarg = bottom;
+
+ return OK;
+ }
+ else
+ return ERR;
+}
+
+int scrollok(WINDOW *win, bool bf)
+{
+ PDC_LOG(("scrollok() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_scroll = bf;
+
+ return OK;
+}
+
+int raw_output(bool bf)
+{
+ PDC_LOG(("raw_output() - called\n"));
+
+ SP->raw_out = bf;
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/overlay.c b/payloads/libpayload/curses/PDCurses/pdcurses/overlay.c
new file mode 100644
index 0000000..d1e9f21
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/overlay.c
@@ -0,0 +1,256 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: overlay.c,v 1.36 2008/07/14 12:35:23 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: overlay
+
+ Synopsis:
+ int overlay(const WINDOW *src_w, WINDOW *dst_w)
+ int overwrite(const WINDOW *src_w, WINDOW *dst_w)
+ int copywin(const WINDOW *src_w, WINDOW *dst_w, int src_tr,
+ int src_tc, int dst_tr, int dst_tc, int dst_br,
+ int dst_bc, bool overlay)
+
+ Description:
+ overlay() and overwrite() copy all the text from src_w into
+ dst_w. The windows need not be the same size. Those characters
+ in the source window that intersect with the destination window
+ are copied, so that the characters appear in the same physical
+ position on the screen. The difference between the two functions
+ is that overlay() is non-destructive (blanks are not copied)
+ while overwrite() is destructive (blanks are copied).
+
+ copywin() is similar, but doesn't require that the two windows
+ overlap. The arguments src_tc and src_tr specify the top left
+ corner of the region to be copied. dst_tc, dst_tr, dst_br, and
+ dst_bc specify the region within the destination window to copy
+ to. The argument "overlay", if TRUE, indicates that the copy is
+ done non-destructively (as in overlay()); blanks in the source
+ window are not copied to the destination window. When overlay is
+ FALSE, blanks are copied.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ overlay Y Y Y
+ overwrite Y Y Y
+ copywin Y - 3.0
+
+**man-end****************************************************************/
+
+/* Thanks to Andreas Otte <venn@@uni-paderborn.de> for the
+ corrected overlay()/overwrite() behavior. */
+
+static int _copy_win(const WINDOW *src_w, WINDOW *dst_w, int src_tr,
+ int src_tc, int src_br, int src_bc, int dst_tr,
+ int dst_tc, bool _overlay)
+{
+ int col, line, y1, fc, *minchng, *maxchng;
+ chtype *w1ptr, *w2ptr;
+
+ int lc = 0;
+ int xdiff = src_bc - src_tc;
+ int ydiff = src_br - src_tr;
+
+ if (!src_w || !dst_w)
+ return ERR;
+
+ minchng = dst_w->_firstch;
+ maxchng = dst_w->_lastch;
+
+ for (y1 = 0; y1 < dst_tr; y1++)
+ {
+ minchng++;
+ maxchng++;
+ }
+
+ for (line = 0; line < ydiff; line++)
+ {
+ w1ptr = src_w->_y[line + src_tr] + src_tc;
+ w2ptr = dst_w->_y[line + dst_tr] + dst_tc;
+
+ fc = _NO_CHANGE;
+
+ for (col = 0; col < xdiff; col++)
+ {
+ if ((*w1ptr) != (*w2ptr) &&
+ !((*w1ptr & A_CHARTEXT) == ' ' && _overlay))
+ {
+ *w2ptr = *w1ptr;
+
+ if (fc == _NO_CHANGE)
+ fc = col + dst_tc;
+
+ lc = col + dst_tc;
+ }
+
+ w1ptr++;
+ w2ptr++;
+ }
+
+ if (*minchng == _NO_CHANGE)
+ {
+ *minchng = fc;
+ *maxchng = lc;
+ }
+ else if (fc != _NO_CHANGE)
+ {
+ if (fc < *minchng)
+ *minchng = fc;
+ if (lc > *maxchng)
+ *maxchng = lc;
+ }
+
+ minchng++;
+ maxchng++;
+ }
+
+ return OK;
+}
+
+int overlay(const WINDOW *src_w, WINDOW *dst_w)
+{
+ int first_line, first_col, last_line, last_col;
+ int src_start_x, src_start_y, dst_start_x, dst_start_y;
+ int xdiff, ydiff;
+
+ PDC_LOG(("overlay() - called\n"));
+
+ if (!src_w || !dst_w)
+ return ERR;
+
+ first_col = max(dst_w->_begx, src_w->_begx);
+ first_line = max(dst_w->_begy, src_w->_begy);
+
+ last_col = min(src_w->_begx + src_w->_maxx, dst_w->_begx + dst_w->_maxx);
+ last_line = min(src_w->_begy + src_w->_maxy, dst_w->_begy + dst_w->_maxy);
+
+ /* determine the overlapping region of the two windows in real
+ coordinates */
+
+ /* if no overlapping region, do nothing */
+
+ if ((last_col < first_col) || (last_line < first_line))
+ return OK;
+
+ /* size of overlapping region */
+
+ xdiff = last_col - first_col;
+ ydiff = last_line - first_line;
+
+ if (src_w->_begx <= dst_w->_begx)
+ {
+ src_start_x = dst_w->_begx - src_w->_begx;
+ dst_start_x = 0;
+ }
+ else
+ {
+ dst_start_x = src_w->_begx - dst_w->_begx;
+ src_start_x = 0;
+ }
+
+ if (src_w->_begy <= dst_w->_begy)
+ {
+ src_start_y = dst_w->_begy - src_w->_begy;
+ dst_start_y = 0;
+ }
+ else
+ {
+ dst_start_y = src_w->_begy - dst_w->_begy;
+ src_start_y = 0;
+ }
+
+ return _copy_win(src_w, dst_w, src_start_y, src_start_x,
+ src_start_y + ydiff, src_start_x + xdiff,
+ dst_start_y, dst_start_x, TRUE);
+}
+
+int overwrite(const WINDOW *src_w, WINDOW *dst_w)
+{
+ int first_line, first_col, last_line, last_col;
+ int src_start_x, src_start_y, dst_start_x, dst_start_y;
+ int xdiff, ydiff;
+
+ PDC_LOG(("overwrite() - called\n"));
+
+ if (!src_w || !dst_w)
+ return ERR;
+
+ first_col = max(dst_w->_begx, src_w->_begx);
+ first_line = max(dst_w->_begy, src_w->_begy);
+
+ last_col = min(src_w->_begx + src_w->_maxx, dst_w->_begx + dst_w->_maxx);
+ last_line = min(src_w->_begy + src_w->_maxy, dst_w->_begy + dst_w->_maxy);
+
+ /* determine the overlapping region of the two windows in real
+ coordinates */
+
+ /* if no overlapping region, do nothing */
+
+ if ((last_col < first_col) || (last_line < first_line))
+ return OK;
+
+ /* size of overlapping region */
+
+ xdiff = last_col - first_col;
+ ydiff = last_line - first_line;
+
+ if (src_w->_begx <= dst_w->_begx)
+ {
+ src_start_x = dst_w->_begx - src_w->_begx;
+ dst_start_x = 0;
+ }
+ else
+ {
+ dst_start_x = src_w->_begx - dst_w->_begx;
+ src_start_x = 0;
+ }
+
+ if (src_w->_begy <= dst_w->_begy)
+ {
+ src_start_y = dst_w->_begy - src_w->_begy;
+ dst_start_y = 0;
+ }
+ else
+ {
+ dst_start_y = src_w->_begy - dst_w->_begy;
+ src_start_y = 0;
+ }
+
+ return _copy_win(src_w, dst_w, src_start_y, src_start_x,
+ src_start_y + ydiff, src_start_x + xdiff,
+ dst_start_y, dst_start_x, FALSE);
+}
+
+int copywin(const WINDOW *src_w, WINDOW *dst_w, int src_tr, int src_tc,
+ int dst_tr, int dst_tc, int dst_br, int dst_bc, int _overlay)
+{
+ int src_end_x, src_end_y;
+ int src_rows, src_cols, dst_rows, dst_cols;
+ int min_rows, min_cols;
+
+ PDC_LOG(("copywin() - called\n"));
+
+ if (!src_w || !dst_w || dst_w == curscr || dst_br > dst_w->_maxy
+ || dst_bc > dst_w->_maxx || dst_tr < 0 || dst_tc < 0)
+ return ERR;
+
+ src_rows = src_w->_maxy - src_tr;
+ src_cols = src_w->_maxx - src_tc;
+ dst_rows = dst_br - dst_tr + 1;
+ dst_cols = dst_bc - dst_tc + 1;
+
+ min_rows = min(src_rows, dst_rows);
+ min_cols = min(src_cols, dst_cols);
+
+ src_end_y = src_tr + min_rows;
+ src_end_x = src_tc + min_cols;
+
+ return _copy_win(src_w, dst_w, src_tr, src_tc, src_end_y, src_end_x,
+ dst_tr, dst_tc, _overlay);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/pad.c b/payloads/libpayload/curses/PDCurses/pdcurses/pad.c
new file mode 100644
index 0000000..d4cad07
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/pad.c
@@ -0,0 +1,259 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: pad.c,v 1.50 2008/07/14 12:22:13 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pad
+
+ Synopsis:
+ WINDOW *newpad(int nlines, int ncols);
+ WINDOW *subpad(WINDOW *orig, int nlines, int ncols,
+ int begy, int begx);
+ int prefresh(WINDOW *win, int py, int px, int sy1, int sx1,
+ int sy2, int sx2);
+ int pnoutrefresh(WINDOW *w, int py, int px, int sy1, int sx1,
+ int sy2, int sx2);
+ int pechochar(WINDOW *pad, chtype ch);
+ int pecho_wchar(WINDOW *pad, const cchar_t *wch);
+
+ Description:
+ A pad is a special kind of window, which is not restricted by
+ the screen size, and is not necessarily associated with a
+ particular part of the screen. You can use a pad when you need
+ a large window, and only a part of the window will be on the
+ screen at one time. Pads are not refreshed automatically (e.g.,
+ from scrolling or echoing of input). You can't call wrefresh()
+ with a pad as an argument; use prefresh() or pnoutrefresh()
+ instead. Note that these routines require additional parameters
+ to specify the part of the pad to be displayed, and the location
+ to use on the screen.
+
+ newpad() creates a new pad data structure.
+
+ subpad() creates a new sub-pad within a pad, at position (begy,
+ begx), with dimensions of nlines lines and ncols columns. This
+ position is relative to the pad, and not to the screen as with
+ subwin. Changes to either the parent pad or sub-pad will affect
+ both. When using sub-pads, you may need to call touchwin()
+ before calling prefresh().
+
+ pnoutrefresh() copies the specified pad to the virtual screen.
+
+ prefresh() calls pnoutrefresh(), followed by doupdate().
+
+ These routines are analogous to wnoutrefresh() and wrefresh().
+ (py, px) specifies the upper left corner of the part of the pad
+ to be displayed; (sy1, sx1) and (sy2, sx2) describe the screen
+ rectangle that will contain the selected part of the pad.
+
+ pechochar() is functionally equivalent to addch() followed by
+ a call to prefresh(), with the last-used coordinates and
+ dimensions. pecho_wchar() is the wide-character version.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ newpad Y - Y
+ subpad Y - Y
+ prefresh Y - Y
+ pnoutrefresh Y - Y
+ pechochar Y - 3.0
+ pecho_wchar Y
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+/* save values for pechochar() */
+
+static int save_pminrow, save_pmincol;
+static int save_sminrow, save_smincol, save_smaxrow, save_smaxcol;
+
+WINDOW *newpad(int nlines, int ncols)
+{
+ WINDOW *win;
+
+ PDC_LOG(("newpad() - called: lines=%d cols=%d\n", nlines, ncols));
+
+ if ( !(win = PDC_makenew(nlines, ncols, -1, -1))
+ || !(win = PDC_makelines(win)) )
+ return (WINDOW *)NULL;
+
+ werase(win);
+
+ win->_flags = _PAD;
+
+ /* save default values in case pechochar() is the first call to
+ prefresh(). */
+
+ save_pminrow = 0;
+ save_pmincol = 0;
+ save_sminrow = 0;
+ save_smincol = 0;
+ save_smaxrow = min(LINES, nlines) - 1;
+ save_smaxcol = min(COLS, ncols) - 1;
+
+ return win;
+}
+
+WINDOW *subpad(WINDOW *orig, int nlines, int ncols, int begy, int begx)
+{
+ WINDOW *win;
+ int i;
+ int j = begy;
+ int k = begx;
+
+ PDC_LOG(("subpad() - called: lines=%d cols=%d begy=%d begx=%d\n",
+ nlines, ncols, begy, begx));
+
+ if (!orig || !(orig->_flags & _PAD))
+ return (WINDOW *)NULL;
+
+ /* make sure window fits inside the original one */
+
+ if ((begy < orig->_begy) || (begx < orig->_begx) ||
+ (begy + nlines) > (orig->_begy + orig->_maxy) ||
+ (begx + ncols) > (orig->_begx + orig->_maxx))
+ return (WINDOW *)NULL;
+
+ if (!nlines)
+ nlines = orig->_maxy - 1 - j;
+
+ if (!ncols)
+ ncols = orig->_maxx - 1 - k;
+
+ if ( !(win = PDC_makenew(nlines, ncols, begy, begx)) )
+ return (WINDOW *)NULL;
+
+ /* initialize window variables */
+
+ win->_attrs = orig->_attrs;
+ win->_leaveit = orig->_leaveit;
+ win->_scroll = orig->_scroll;
+ win->_nodelay = orig->_nodelay;
+ win->_use_keypad = orig->_use_keypad;
+ win->_parent = orig;
+
+ for (i = 0; i < nlines; i++)
+ win->_y[i] = (orig->_y[j++]) + k;
+
+ win->_flags = _SUBPAD;
+
+ /* save default values in case pechochar() is the first call
+ to prefresh(). */
+
+ save_pminrow = 0;
+ save_pmincol = 0;
+ save_sminrow = 0;
+ save_smincol = 0;
+ save_smaxrow = min(LINES, nlines) - 1;
+ save_smaxcol = min(COLS, ncols) - 1;
+
+ return win;
+}
+
+int prefresh(WINDOW *win, int py, int px, int sy1, int sx1, int sy2, int sx2)
+{
+ PDC_LOG(("prefresh() - called\n"));
+
+ if (pnoutrefresh(win, py, px, sy1, sx1, sy2, sx2) == ERR)
+ return ERR;
+
+ doupdate();
+ return OK;
+}
+
+int pnoutrefresh(WINDOW *w, int py, int px, int sy1, int sx1, int sy2, int sx2)
+{
+ int num_cols;
+ int sline = sy1;
+ int pline = py;
+
+ PDC_LOG(("pnoutrefresh() - called\n"));
+
+ if (!w || !(w->_flags & (_PAD|_SUBPAD)) || (sy2 >= LINES) || (sy2 >= COLS))
+ return ERR;
+
+ if (py < 0)
+ py = 0;
+ if (px < 0)
+ px = 0;
+ if (sy1 < 0)
+ sy1 = 0;
+ if (sx1 < 0)
+ sx1 = 0;
+
+ if (sy2 < sy1 || sx2 < sx1)
+ return ERR;
+
+ num_cols = min((sx2 - sx1 + 1), (w->_maxx - px));
+
+ while (sline <= sy2)
+ {
+ if (pline < w->_maxy)
+ {
+ memcpy(curscr->_y[sline] + sx1, w->_y[pline] + px,
+ num_cols * sizeof(chtype));
+
+ if ((curscr->_firstch[sline] == _NO_CHANGE)
+ || (curscr->_firstch[sline] > sx1))
+ curscr->_firstch[sline] = sx1;
+
+ if (sx2 > curscr->_lastch[sline])
+ curscr->_lastch[sline] = sx2;
+
+ w->_firstch[pline] = _NO_CHANGE; /* updated now */
+ w->_lastch[pline] = _NO_CHANGE; /* updated now */
+ }
+
+ sline++;
+ pline++;
+ }
+
+ if (w->_clear)
+ {
+ w->_clear = FALSE;
+ curscr->_clear = TRUE;
+ }
+
+ /* position the cursor to the pad's current position if possible --
+ is the pad current position going to end up displayed? if not,
+ then don't move the cursor; if so, move it to the correct place */
+
+ if (!w->_leaveit && w->_cury >= py && w->_curx >= px &&
+ w->_cury <= py + (sy2 - sy1) && w->_curx <= px + (sx2 - sx1))
+ {
+ curscr->_cury = (w->_cury - py) + sy1;
+ curscr->_curx = (w->_curx - px) + sx1;
+ }
+
+ return OK;
+}
+
+int pechochar(WINDOW *pad, chtype ch)
+{
+ PDC_LOG(("pechochar() - called\n"));
+
+ if (waddch(pad, ch) == ERR)
+ return ERR;
+
+ return prefresh(pad, save_pminrow, save_pmincol, save_sminrow,
+ save_smincol, save_smaxrow, save_smaxcol);
+}
+
+#ifdef PDC_WIDE
+int pecho_wchar(WINDOW *pad, const cchar_t *wch)
+{
+ PDC_LOG(("pecho_wchar() - called\n"));
+
+ if (!wch || (waddch(pad, *wch) == ERR))
+ return ERR;
+
+ return prefresh(pad, save_pminrow, save_pmincol, save_sminrow,
+ save_smincol, save_smaxrow, save_smaxcol);
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/panel.c b/payloads/libpayload/curses/PDCurses/pdcurses/panel.c
new file mode 100644
index 0000000..87b987d
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/panel.c
@@ -0,0 +1,630 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: panel.c,v 1.8 2008/07/14 12:35:23 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: panel
+
+ Synopsis:
+ int bottom_panel(PANEL *pan);
+ int del_panel(PANEL *pan);
+ int hide_panel(PANEL *pan);
+ int move_panel(PANEL *pan, int starty, int startx);
+ PANEL *new_panel(WINDOW *win);
+ PANEL *panel_above(const PANEL *pan);
+ PANEL *panel_below(const PANEL *pan);
+ int panel_hidden(const PANEL *pan);
+ const void *panel_userptr(const PANEL *pan);
+ WINDOW *panel_window(const PANEL *pan);
+ int replace_panel(PANEL *pan, WINDOW *win);
+ int set_panel_userptr(PANEL *pan, const void *uptr);
+ int show_panel(PANEL *pan);
+ int top_panel(PANEL *pan);
+ void update_panels(void);
+
+ Description:
+ The panel library is built using the curses library, and any
+ program using panels routines must call one of the curses
+ initialization routines such as initscr(). A program using these
+ routines must be linked with the panels and curses libraries.
+ The header <panel.h> includes the header <curses.h>.
+
+ The panels package gives the applications programmer a way to
+ have depth relationships between curses windows; a curses window
+ is associated with every panel. The panels routines allow curses
+ windows to overlap without making visible the overlapped
+ portions of underlying windows. The initial curses window,
+ stdscr, lies beneath all panels. The set of currently visible
+ panels is the 'deck' of panels.
+
+ The panels package allows the applications programmer to create
+ panels, fetch and set their associated windows, shuffle panels
+ in the deck, and manipulate panels in other ways.
+
+ bottom_panel() places pan at the bottom of the deck. The size,
+ location and contents of the panel are unchanged.
+
+ del_panel() deletes pan, but not its associated winwow.
+
+ hide_panel() removes a panel from the deck and thus hides it
+ from view.
+
+ move_panel() moves the curses window associated with pan, so
+ that its upper lefthand corner is at the supplied coordinates.
+ (Do not use mvwin() on the window.)
+
+ new_panel() creates a new panel associated with win and returns
+ the panel pointer. The new panel is placed at the top of the
+ deck.
+
+ panel_above() returns a pointer to the panel in the deck above
+ pan, or NULL if pan is the top panel. If the value of pan passed
+ is NULL, this function returns a pointer to the bottom panel in
+ the deck.
+
+ panel_below() returns a pointer to the panel in the deck below
+ pan, or NULL if pan is the bottom panel. If the value of pan
+ passed is NULL, this function returns a pointer to the top panel
+ in the deck.
+
+ panel_hidden() returns OK if pan is hidden and ERR if it is not.
+
+ panel_userptr() - Each panel has a user pointer available for
+ maintaining relevant information. This function returns a
+ pointer to that information previously set up by
+ set_panel_userptr().
+
+ panel_window() returns a pointer to the curses window associated
+ with the panel.
+
+ replace_panel() replaces the current window of pan with win.
+
+ set_panel_userptr() - Each panel has a user pointer available
+ for maintaining relevant information. This function sets the
+ value of that information.
+
+ show_panel() makes a previously hidden panel visible and places
+ it back in the deck on top.
+
+ top_panel() places pan on the top of the deck. The size,
+ location and contents of the panel are unchanged.
+
+ update_panels() refreshes the virtual screen to reflect the
+ depth relationships between the panels in the deck. The user
+ must use doupdate() to refresh the physical screen.
+
+ Return Value:
+ Each routine that returns a pointer to an object returns NULL if
+ an error occurs. Each panel routine that returns an integer,
+ returns OK if it executes successfully and ERR if it does not.
+
+ Portability X/Open BSD SYS V
+ bottom_panel - - Y
+ del_panel - - Y
+ hide_panel - - Y
+ move_panel - - Y
+ new_panel - - Y
+ panel_above - - Y
+ panel_below - - Y
+ panel_hidden - - Y
+ panel_userptr - - Y
+ panel_window - - Y
+ replace_panel - - Y
+ set_panel_userptr - - Y
+ show_panel - - Y
+ top_panel - - Y
+ update_panels - - Y
+
+ Credits:
+ Original Author - Warren Tucker <wht at n4hgf.mt-park.ga.us>
+
+**man-end****************************************************************/
+
+#include <panel.h>
+#include <stdlib.h>
+
+PANEL *_bottom_panel = (PANEL *)0;
+PANEL *_top_panel = (PANEL *)0;
+PANEL _stdscr_pseudo_panel = { (WINDOW *)0 };
+
+#ifdef PANEL_DEBUG
+
+static void dPanel(char *text, PANEL *pan)
+{
+ PDC_LOG(("%s id=%s b=%s a=%s y=%d x=%d", text, pan->user,
+ pan->below ? pan->below->user : "--",
+ pan->above ? pan->above->user : "--",
+ pan->wstarty, pan->wstartx));
+}
+
+static void dStack(char *fmt, int num, PANEL *pan)
+{
+ char s80[80];
+
+ sprintf(s80, fmt, num, pan);
+ PDC_LOG(("%s b=%s t=%s", s80, _bottom_panel ? _bottom_panel->user : "--",
+ _top_panel ? _top_panel->user : "--"));
+
+ if (pan)
+ PDC_LOG(("pan id=%s", pan->user));
+
+ pan = _bottom_panel;
+
+ while (pan)
+ {
+ dPanel("stk", pan);
+ pan = pan->above;
+ }
+}
+
+/* debugging hook for wnoutrefresh */
+
+static void Wnoutrefresh(PANEL *pan)
+{
+ dPanel("wnoutrefresh", pan);
+ wnoutrefresh(pan->win);
+}
+
+static void Touchpan(PANEL *pan)
+{
+ dPanel("Touchpan", pan);
+ touchwin(pan->win);
+}
+
+static void Touchline(PANEL *pan, int start, int count)
+{
+ char s80[80];
+
+ sprintf(s80, "Touchline s=%d c=%d", start, count);
+ dPanel(s80, pan);
+ touchline(pan->win, start, count);
+}
+
+#else /* PANEL_DEBUG */
+
+#define dPanel(text, pan)
+#define dStack(fmt, num, pan)
+#define Wnoutrefresh(pan) wnoutrefresh((pan)->win)
+#define Touchpan(pan) touchwin((pan)->win)
+#define Touchline(pan, start, count) touchline((pan)->win, start, count)
+
+#endif /* PANEL_DEBUG */
+
+static bool _panels_overlapped(PANEL *pan1, PANEL *pan2)
+{
+ if (!pan1 || !pan2)
+ return FALSE;
+
+ return ((pan1->wstarty >= pan2->wstarty && pan1->wstarty < pan2->wendy)
+ || (pan2->wstarty >= pan1->wstarty && pan2->wstarty < pan1->wendy))
+ && ((pan1->wstartx >= pan2->wstartx && pan1->wstartx < pan2->wendx)
+ || (pan2->wstartx >= pan1->wstartx && pan2->wstartx < pan1->wendx));
+}
+
+static void _free_obscure(PANEL *pan)
+{
+ PANELOBS *tobs = pan->obscure; /* "this" one */
+ PANELOBS *nobs; /* "next" one */
+
+ while (tobs)
+ {
+ nobs = tobs->above;
+ free((char *)tobs);
+ tobs = nobs;
+ }
+ pan->obscure = (PANELOBS *)0;
+}
+
+static void _override(PANEL *pan, int show)
+{
+ int y;
+ PANEL *pan2;
+ PANELOBS *tobs = pan->obscure; /* "this" one */
+
+ if (show == 1)
+ Touchpan(pan);
+ else if (!show)
+ {
+ Touchpan(pan);
+ Touchpan(&_stdscr_pseudo_panel);
+ }
+ else if (show == -1)
+ while (tobs && (tobs->pan != pan))
+ tobs = tobs->above;
+
+ while (tobs)
+ {
+ if ((pan2 = tobs->pan) != pan)
+ for (y = pan->wstarty; y < pan->wendy; y++)
+ if ((y >= pan2->wstarty) && (y < pan2->wendy) &&
+ ((is_linetouched(pan->win, y - pan->wstarty)) ||
+ (is_linetouched(stdscr, y))))
+ Touchline(pan2, y - pan2->wstarty, 1);
+
+ tobs = tobs->above;
+ }
+}
+
+static void _calculate_obscure(void)
+{
+ PANEL *pan, *pan2;
+ PANELOBS *tobs; /* "this" one */
+ PANELOBS *lobs; /* last one */
+
+ pan = _bottom_panel;
+
+ while (pan)
+ {
+ if (pan->obscure)
+ _free_obscure(pan);
+
+ lobs = (PANELOBS *)0;
+ pan2 = _bottom_panel;
+
+ while (pan2)
+ {
+ if (_panels_overlapped(pan, pan2))
+ {
+ if ((tobs = malloc(sizeof(PANELOBS))) == NULL)
+ return;
+
+ tobs->pan = pan2;
+ dPanel("obscured", pan2);
+ tobs->above = (PANELOBS *)0;
+
+ if (lobs)
+ lobs->above = tobs;
+ else
+ pan->obscure = tobs;
+
+ lobs = tobs;
+ }
+
+ pan2 = pan2->above;
+ }
+
+ _override(pan, 1);
+ pan = pan->above;
+ }
+}
+
+/* check to see if panel is in the stack */
+
+static bool _panel_is_linked(const PANEL *pan)
+{
+ PANEL *pan2 = _bottom_panel;
+
+ while (pan2)
+ {
+ if (pan2 == pan)
+ return TRUE;
+
+ pan2 = pan2->above;
+ }
+
+ return FALSE;
+}
+
+/* link panel into stack at top */
+
+static void _panel_link_top(PANEL *pan)
+{
+#ifdef PANEL_DEBUG
+ dStack("<lt%d>", 1, pan);
+ if (_panel_is_linked(pan))
+ return;
+#endif
+ pan->above = (PANEL *)0;
+ pan->below = (PANEL *)0;
+
+ if (_top_panel)
+ {
+ _top_panel->above = pan;
+ pan->below = _top_panel;
+ }
+
+ _top_panel = pan;
+
+ if (!_bottom_panel)
+ _bottom_panel = pan;
+
+ _calculate_obscure();
+ dStack("<lt%d>", 9, pan);
+}
+
+/* link panel into stack at bottom */
+
+static void _panel_link_bottom(PANEL *pan)
+{
+#ifdef PANEL_DEBUG
+ dStack("<lb%d>", 1, pan);
+ if (_panel_is_linked(pan))
+ return;
+#endif
+ pan->above = (PANEL *)0;
+ pan->below = (PANEL *)0;
+
+ if (_bottom_panel)
+ {
+ _bottom_panel->below = pan;
+ pan->above = _bottom_panel;
+ }
+
+ _bottom_panel = pan;
+
+ if (!_top_panel)
+ _top_panel = pan;
+
+ _calculate_obscure();
+ dStack("<lb%d>", 9, pan);
+}
+
+static void _panel_unlink(PANEL *pan)
+{
+ PANEL *prev;
+ PANEL *next;
+
+#ifdef PANEL_DEBUG
+ dStack("<u%d>", 1, pan);
+ if (!_panel_is_linked(pan))
+ return;
+#endif
+ _override(pan, 0);
+ _free_obscure(pan);
+
+ prev = pan->below;
+ next = pan->above;
+
+ /* if non-zero, we will not update the list head */
+
+ if (prev)
+ {
+ prev->above = next;
+ if(next)
+ next->below = prev;
+ }
+ else if (next)
+ next->below = prev;
+
+ if (pan == _bottom_panel)
+ _bottom_panel = next;
+
+ if (pan == _top_panel)
+ _top_panel = prev;
+
+ _calculate_obscure();
+
+ pan->above = (PANEL *)0;
+ pan->below = (PANEL *)0;
+ dStack("<u%d>", 9, pan);
+
+}
+
+/************************************************************************
+ * The following are the public functions for the panels library. *
+ ************************************************************************/
+
+int bottom_panel(PANEL *pan)
+{
+ if (!pan)
+ return ERR;
+
+ if (pan == _bottom_panel)
+ return OK;
+
+ if (_panel_is_linked(pan))
+ hide_panel(pan);
+
+ _panel_link_bottom(pan);
+
+ return OK;
+}
+
+int del_panel(PANEL *pan)
+{
+ if (pan)
+ {
+ if (_panel_is_linked(pan))
+ hide_panel(pan);
+
+ free((char *)pan);
+ return OK;
+ }
+
+ return ERR;
+}
+
+int hide_panel(PANEL *pan)
+{
+ if (!pan)
+ return ERR;
+
+ if (!_panel_is_linked(pan))
+ {
+ pan->above = (PANEL *)0;
+ pan->below = (PANEL *)0;
+ return ERR;
+ }
+
+ _panel_unlink(pan);
+
+ return OK;
+}
+
+int move_panel(PANEL *pan, int starty, int startx)
+{
+ WINDOW *win;
+ int maxy, maxx;
+
+ if (!pan)
+ return ERR;
+
+ if (_panel_is_linked(pan))
+ _override(pan, 0);
+
+ win = pan->win;
+
+ if (mvwin(win, starty, startx) == ERR)
+ return ERR;
+
+ getbegyx(win, pan->wstarty, pan->wstartx);
+ getmaxyx(win, maxy, maxx);
+ pan->wendy = pan->wstarty + maxy;
+ pan->wendx = pan->wstartx + maxx;
+
+ if (_panel_is_linked(pan))
+ _calculate_obscure();
+
+ return OK;
+}
+
+PANEL *new_panel(WINDOW *win)
+{
+ PANEL *pan = malloc(sizeof(PANEL));
+
+ if (!_stdscr_pseudo_panel.win)
+ {
+ _stdscr_pseudo_panel.win = stdscr;
+ _stdscr_pseudo_panel.wstarty = 0;
+ _stdscr_pseudo_panel.wstartx = 0;
+ _stdscr_pseudo_panel.wendy = LINES;
+ _stdscr_pseudo_panel.wendx = COLS;
+ _stdscr_pseudo_panel.user = "stdscr";
+ _stdscr_pseudo_panel.obscure = (PANELOBS *)0;
+ }
+
+ if (pan)
+ {
+ int maxy, maxx;
+
+ pan->win = win;
+ pan->above = (PANEL *)0;
+ pan->below = (PANEL *)0;
+ getbegyx(win, pan->wstarty, pan->wstartx);
+ getmaxyx(win, maxy, maxx);
+ pan->wendy = pan->wstarty + maxy;
+ pan->wendx = pan->wstartx + maxx;
+#ifdef PANEL_DEBUG
+ pan->user = "new";
+#else
+ pan->user = (char *)0;
+#endif
+ pan->obscure = (PANELOBS *)0;
+ show_panel(pan);
+ }
+
+ return pan;
+}
+
+PANEL *panel_above(const PANEL *pan)
+{
+ return pan ? pan->above : _bottom_panel;
+}
+
+PANEL *panel_below(const PANEL *pan)
+{
+ return pan ? pan->below : _top_panel;
+}
+
+int panel_hidden(const PANEL *pan)
+{
+ if (!pan)
+ return ERR;
+
+ return _panel_is_linked(pan) ? ERR : OK;
+}
+
+const void *panel_userptr(const PANEL *pan)
+{
+ return pan ? pan->user : NULL;
+}
+
+WINDOW *panel_window(const PANEL *pan)
+{
+ PDC_LOG(("panel_window() - called\n"));
+
+ return pan->win;
+}
+
+int replace_panel(PANEL *pan, WINDOW *win)
+{
+ int maxy, maxx;
+
+ if (!pan)
+ return ERR;
+
+ if (_panel_is_linked(pan))
+ _override(pan, 0);
+
+ pan->win = win;
+ getbegyx(win, pan->wstarty, pan->wstartx);
+ getmaxyx(win, maxy, maxx);
+ pan->wendy = pan->wstarty + maxy;
+ pan->wendx = pan->wstartx + maxx;
+
+ if (_panel_is_linked(pan))
+ _calculate_obscure();
+
+ return OK;
+}
+
+int set_panel_userptr(PANEL *pan, const void *uptr)
+{
+ if (!pan)
+ return ERR;
+
+ pan->user = uptr;
+ return OK;
+}
+
+int show_panel(PANEL *pan)
+{
+ if (!pan)
+ return ERR;
+
+ if (pan == _top_panel)
+ return OK;
+
+ if (_panel_is_linked(pan))
+ hide_panel(pan);
+
+ _panel_link_top(pan);
+
+ return OK;
+}
+
+int top_panel(PANEL *pan)
+{
+ return show_panel(pan);
+}
+
+void update_panels(void)
+{
+ PANEL *pan;
+
+ PDC_LOG(("update_panels() - called\n"));
+
+ pan = _bottom_panel;
+
+ while (pan)
+ {
+ _override(pan, -1);
+ pan = pan->above;
+ }
+
+ if (is_wintouched(stdscr))
+ Wnoutrefresh(&_stdscr_pseudo_panel);
+
+ pan = _bottom_panel;
+
+ while (pan)
+ {
+ if (is_wintouched(pan->win) || !pan->above)
+ Wnoutrefresh(pan);
+
+ pan = pan->above;
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/printw.c b/payloads/libpayload/curses/PDCurses/pdcurses/printw.c
new file mode 100644
index 0000000..ac67f91
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/printw.c
@@ -0,0 +1,123 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: printw.c,v 1.40 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: printw
+
+ Synopsis:
+ int printw(const char *fmt, ...);
+ int wprintw(WINDOW *win, const char *fmt, ...);
+ int mvprintw(int y, int x, const char *fmt, ...);
+ int mvwprintw(WINDOW *win, int y, int x, const char *fmt,...);
+ int vwprintw(WINDOW *win, const char *fmt, va_list varglist);
+ int vw_printw(WINDOW *win, const char *fmt, va_list varglist);
+
+ Description:
+ The printw() functions add a formatted string to the window at
+ the current or specified cursor position. The format strings are
+ the same as used in the standard C library's printf(). (printw()
+ can be used as a drop-in replacement for printf().)
+
+ Return Value:
+ All functions return the number of characters printed, or
+ ERR on error.
+
+ Portability X/Open BSD SYS V
+ printw Y Y Y
+ wprintw Y Y Y
+ mvprintw Y Y Y
+ mvwprintw Y Y Y
+ vwprintw Y - 4.0
+ vw_printw Y
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+int vwprintw(WINDOW *win, const char *fmt, va_list varglist)
+{
+ char printbuf[513];
+ int len;
+
+ PDC_LOG(("vwprintw() - called\n"));
+
+#ifdef HAVE_VSNPRINTF
+ len = vsnprintf(printbuf, 512, fmt, varglist);
+#else
+ len = vsprintf(printbuf, fmt, varglist);
+#endif
+ return (waddstr(win, printbuf) == ERR) ? ERR : len;
+}
+
+int printw(const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("printw() - called\n"));
+
+ va_start(args, fmt);
+ retval = vwprintw(stdscr, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int wprintw(WINDOW *win, const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("wprintw() - called\n"));
+
+ va_start(args, fmt);
+ retval = vwprintw(win, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int mvprintw(int y, int x, const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("mvprintw() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ va_start(args, fmt);
+ retval = vwprintw(stdscr, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("mvwprintw() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ va_start(args, fmt);
+ retval = vwprintw(win, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int vw_printw(WINDOW *win, const char *fmt, va_list varglist)
+{
+ PDC_LOG(("vw_printw() - called\n"));
+
+ return vwprintw(win, fmt, varglist);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/refresh.c b/payloads/libpayload/curses/PDCurses/pdcurses/refresh.c
new file mode 100644
index 0000000..da4bb76
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/refresh.c
@@ -0,0 +1,276 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: refresh.c,v 1.56 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: refresh
+
+ Synopsis:
+ int refresh(void);
+ int wrefresh(WINDOW *win);
+ int wnoutrefresh(WINDOW *win);
+ int doupdate(void);
+ int redrawwin(WINDOW *win);
+ int wredrawln(WINDOW *win, int beg_line, int num_lines);
+
+ Description:
+ wrefresh() copies the named window to the physical terminal
+ screen, taking into account what is already there in order to
+ optimize cursor movement. refresh() does the same, using stdscr.
+ These routines must be called to get any output on the terminal,
+ as other routines only manipulate data structures. Unless
+ leaveok() has been enabled, the physical cursor of the terminal
+ is left at the location of the window's cursor.
+
+ wnoutrefresh() and doupdate() allow multiple updates with more
+ efficiency than wrefresh() alone. wrefresh() works by first
+ calling wnoutrefresh(), which copies the named window to the
+ virtual screen. It then calls doupdate(), which compares the
+ virtual screen to the physical screen and does the actual
+ update. A series of calls to wrefresh() will result in
+ alternating calls to wnoutrefresh() and doupdate(), causing
+ several bursts of output to the screen. By first calling
+ wnoutrefresh() for each window, it is then possible to call
+ doupdate() only once.
+
+ In PDCurses, redrawwin() is equivalent to touchwin(), and
+ wredrawln() is the same as touchline(). In some other curses
+ implementations, there's a subtle distinction, but it has no
+ meaning in PDCurses.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ refresh Y Y Y
+ wrefresh Y Y Y
+ wnoutrefresh Y Y Y
+ doupdate Y Y Y
+ redrawwin Y - 4.0
+ wredrawln Y - 4.0
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+int wnoutrefresh(WINDOW *win)
+{
+ int begy, begx; /* window's place on screen */
+ int i, j;
+
+ PDC_LOG(("wnoutrefresh() - called: win=%p\n", win));
+
+ if ( !win || (win->_flags & (_PAD|_SUBPAD)) )
+ return ERR;
+
+ begy = win->_begy;
+ begx = win->_begx;
+
+ for (i = 0, j = begy; i < win->_maxy; i++, j++)
+ {
+ if (win->_firstch[i] != _NO_CHANGE)
+ {
+ chtype *src = win->_y[i];
+ chtype *dest = curscr->_y[j] + begx;
+
+ int first = win->_firstch[i]; /* first changed */
+ int last = win->_lastch[i]; /* last changed */
+
+ /* ignore areas on the outside that are marked as changed,
+ but really aren't */
+
+ while (first <= last && src[first] == dest[first])
+ first++;
+
+ while (last >= first && src[last] == dest[last])
+ last--;
+
+ /* if any have really changed... */
+
+ if (first <= last)
+ {
+ memcpy(dest + first, src + first,
+ (last - first + 1) * sizeof(chtype));
+
+ first += begx;
+ last += begx;
+
+ if (first < curscr->_firstch[j] ||
+ curscr->_firstch[j] == _NO_CHANGE)
+ curscr->_firstch[j] = first;
+
+ if (last > curscr->_lastch[j])
+ curscr->_lastch[j] = last;
+ }
+
+ win->_firstch[i] = _NO_CHANGE; /* updated now */
+ }
+
+ win->_lastch[i] = _NO_CHANGE; /* updated now */
+ }
+
+ if (win->_clear)
+ win->_clear = FALSE;
+
+ if (!win->_leaveit)
+ {
+ curscr->_cury = win->_cury + begy;
+ curscr->_curx = win->_curx + begx;
+ }
+
+ return OK;
+}
+
+int doupdate(void)
+{
+ int y;
+ bool clearall;
+
+ PDC_LOG(("doupdate() - called\n"));
+
+ if (!curscr)
+ return ERR;
+
+ if (isendwin()) /* coming back after endwin() called */
+ {
+ reset_prog_mode();
+ clearall = TRUE;
+ SP->alive = TRUE; /* so isendwin() result is correct */
+ }
+ else
+ clearall = curscr->_clear;
+
+ for (y = 0; y < SP->lines; y++)
+ {
+ PDC_LOG(("doupdate() - Transforming line %d of %d: %s\n",
+ y, SP->lines, (curscr->_firstch[y] != _NO_CHANGE) ?
+ "Yes" : "No"));
+
+ if (clearall || curscr->_firstch[y] != _NO_CHANGE)
+ {
+ int first, last;
+
+ chtype *src = curscr->_y[y];
+ chtype *dest = pdc_lastscr->_y[y];
+
+ if (clearall)
+ {
+ first = 0;
+ last = COLS - 1;
+ }
+ else
+ {
+ first = curscr->_firstch[y];
+ last = curscr->_lastch[y];
+ }
+
+ while (first <= last)
+ {
+ int len = 0;
+
+ /* build up a run of changed cells; if two runs are
+ separated by a single unchanged cell, ignore the
+ break */
+
+ if (clearall)
+ len = last - first + 1;
+ else
+ while (first + len <= last &&
+ (src[first + len] != dest[first + len] ||
+ (len && first + len < last &&
+ src[first + len + 1] != dest[first + len + 1])
+ )
+ )
+ len++;
+
+ /* update the screen, and pdc_lastscr */
+
+ if (len)
+ {
+ PDC_transform_line(y, first, len, src + first);
+ memcpy(dest + first, src + first, len * sizeof(chtype));
+ first += len;
+ }
+
+ /* skip over runs of unchanged cells */
+
+ while (first <= last && src[first] == dest[first])
+ first++;
+ }
+
+ curscr->_firstch[y] = _NO_CHANGE;
+ curscr->_lastch[y] = _NO_CHANGE;
+ }
+ }
+
+ curscr->_clear = FALSE;
+
+ if (SP->visibility)
+ PDC_gotoyx(curscr->_cury, curscr->_curx);
+
+ SP->cursrow = curscr->_cury;
+ SP->curscol = curscr->_curx;
+
+ return OK;
+}
+
+int wrefresh(WINDOW *win)
+{
+ bool save_clear;
+
+ PDC_LOG(("wrefresh() - called\n"));
+
+ if ( !win || (win->_flags & (_PAD|_SUBPAD)) )
+ return ERR;
+
+ save_clear = win->_clear;
+
+ if (win == curscr)
+ curscr->_clear = TRUE;
+ else
+ wnoutrefresh(win);
+
+ if (save_clear && win->_maxy == SP->lines && win->_maxx == SP->cols)
+ curscr->_clear = TRUE;
+
+ return doupdate();
+}
+
+int refresh(void)
+{
+ PDC_LOG(("refresh() - called\n"));
+
+ return wrefresh(stdscr);
+}
+
+int wredrawln(WINDOW *win, int start, int num)
+{
+ int i;
+
+ PDC_LOG(("wredrawln() - called: win=%p start=%d num=%d\n",
+ win, start, num));
+
+ if (!win || start > win->_maxy || start + num > win->_maxy)
+ return ERR;
+
+ for (i = start; i < start + num; i++)
+ {
+ win->_firstch[i] = 0;
+ win->_lastch[i] = win->_maxx - 1;
+ }
+
+ return OK;
+}
+
+int redrawwin(WINDOW *win)
+{
+ PDC_LOG(("redrawwin() - called: win=%p\n", win));
+
+ if (!win)
+ return ERR;
+
+ return wredrawln(win, 0, win->_maxy);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/scanw.c b/payloads/libpayload/curses/PDCurses/pdcurses/scanw.c
new file mode 100644
index 0000000..47f2050
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/scanw.c
@@ -0,0 +1,575 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: scanw.c,v 1.42 2008/07/14 12:22:13 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: scanw
+
+ Synopsis:
+ int scanw(const char *fmt, ...);
+ int wscanw(WINDOW *win, const char *fmt, ...);
+ int mvscanw(int y, int x, const char *fmt, ...);
+ int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...);
+ int vwscanw(WINDOW *win, const char *fmt, va_list varglist);
+ int vw_scanw(WINDOW *win, const char *fmt, va_list varglist);
+
+ Description:
+ These routines correspond to the standard C library's scanf()
+ family. Each gets a string from the window via wgetnstr(), and
+ uses the resulting line as input for the scan.
+
+ Return Value:
+ On successful completion, these functions return the number of
+ items successfully matched. Otherwise they return ERR.
+
+ Portability X/Open BSD SYS V
+ scanw Y Y Y
+ wscanw Y Y Y
+ mvscanw Y Y Y
+ mvwscanw Y Y Y
+ vwscanw Y - 4.0
+ vw_scanw Y
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+#ifndef HAVE_VSSCANF
+# include <stdlib.h>
+# include <ctype.h>
+# include <limits.h>
+
+static int _pdc_vsscanf(const char *, const char *, va_list);
+
+# define vsscanf _pdc_vsscanf
+#endif
+
+int vwscanw(WINDOW *win, const char *fmt, va_list varglist)
+{
+ char scanbuf[256];
+
+ PDC_LOG(("vwscanw() - called\n"));
+
+ if (wgetnstr(win, scanbuf, 255) == ERR)
+ return ERR;
+
+ return vsscanf(scanbuf, fmt, varglist);
+}
+
+int scanw(const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("scanw() - called\n"));
+
+ va_start(args, fmt);
+ retval = vwscanw(stdscr, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int wscanw(WINDOW *win, const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("wscanw() - called\n"));
+
+ va_start(args, fmt);
+ retval = vwscanw(win, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int mvscanw(int y, int x, const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("mvscanw() - called\n"));
+
+ if (move(y, x) == ERR)
+ return ERR;
+
+ va_start(args, fmt);
+ retval = vwscanw(stdscr, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...)
+{
+ va_list args;
+ int retval;
+
+ PDC_LOG(("mvscanw() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return ERR;
+
+ va_start(args, fmt);
+ retval = vwscanw(win, fmt, args);
+ va_end(args);
+
+ return retval;
+}
+
+int vw_scanw(WINDOW *win, const char *fmt, va_list varglist)
+{
+ PDC_LOG(("vw_scanw() - called\n"));
+
+ return vwscanw(win, fmt, varglist);
+}
+
+#ifndef HAVE_VSSCANF
+
+/* _pdc_vsscanf() - Internal routine to parse and format an input
+ buffer. It scans a series of input fields; each field is formatted
+ according to a supplied format string and the formatted input is
+ stored in the variable number of addresses passed. Returns the number
+ of input fields or EOF on error.
+
+ Don't compile this unless required. Some compilers (at least Borland
+ C++ 3.0) have to link with math libraries due to the use of floats.
+
+ Based on vsscanf.c and input.c from emx 0.8f library source,
+ Copyright (c) 1990-1992 by Eberhard Mattes, who has kindly agreed to
+ its inclusion in PDCurses. */
+
+#define WHITE(x) ((x) == ' ' || (x) == '\t' || (x) == '\n')
+
+#define NEXT(x) \
+ do { \
+ x = *buf++; \
+ if (!x) \
+ return (count ? count : EOF); \
+ ++chars; \
+ } while (0)
+
+#define UNGETC() \
+ do { \
+ --buf; --chars; \
+ } while (0)
+
+static int _pdc_vsscanf(const char *buf, const char *fmt, va_list arg_ptr)
+{
+ int count, chars, c, width, radix, d, i;
+ int *int_ptr;
+ long *long_ptr;
+ short *short_ptr;
+ char *char_ptr;
+ unsigned char f;
+ char neg, assign, ok, size;
+ long n;
+ char map[256], end;
+ double dx, dd, *dbl_ptr;
+ float *flt_ptr;
+ int exp;
+ char eneg;
+
+ count = 0;
+ chars = 0;
+ c = 0;
+ while ((f = *fmt) != 0)
+ {
+ if (WHITE(f))
+ {
+ do
+ {
+ ++fmt;
+ f = *fmt;
+ }
+ while (WHITE(f));
+ do
+ {
+ c = *buf++;
+ if (!c)
+ {
+ if (!f || count)
+ return count;
+ else
+ return EOF;
+ } else
+ ++chars;
+ }
+ while (WHITE(c));
+ UNGETC();
+ } else if (f != '%')
+ {
+ NEXT(c);
+ if (c != f)
+ return count;
+ ++fmt;
+ } else
+ {
+ assign = TRUE;
+ width = INT_MAX;
+ char_ptr = NULL;
+ ++fmt;
+ if (*fmt == '*')
+ {
+ assign = FALSE;
+ ++fmt;
+ }
+ if (isdigit(*fmt))
+ {
+ width = 0;
+ while (isdigit(*fmt))
+ width = width * 10 + (*fmt++ - '0');
+ if (!width)
+ width = INT_MAX;
+ }
+ size = 0;
+ if (*fmt == 'h' || *fmt == 'l')
+ size = *fmt++;
+ f = *fmt;
+ switch (f)
+ {
+ case 'c':
+ if (width == INT_MAX)
+ width = 1;
+ if (assign)
+ char_ptr = va_arg(arg_ptr, char *);
+ while (width > 0)
+ {
+ --width;
+ NEXT(c);
+ if (assign)
+ {
+ *char_ptr++ = (char) c;
+ ++count;
+ }
+ }
+ break;
+ case '[':
+ memset(map, 0, 256);
+ end = 0;
+ ++fmt;
+ if (*fmt == '^')
+ {
+ ++fmt;
+ end = 1;
+ }
+ i = 0;
+ for (;;)
+ {
+ f = (unsigned char) *fmt;
+ switch (f)
+ {
+ case 0:
+ /* avoid skipping past 0 */
+ --fmt;
+ NEXT(c);
+ goto string;
+ case ']':
+ if (i > 0)
+ {
+ NEXT(c);
+ goto string;
+ }
+ /* no break */
+ default:
+ if (fmt[1] == '-' && fmt[2]
+ && f < (unsigned char)fmt[2])
+ {
+ memset(map + f, 1, (unsigned char)fmt[2] - f);
+ fmt += 2;
+ }
+ else
+ map[f] = 1;
+ break;
+ }
+ ++fmt;
+ ++i;
+ }
+ case 's':
+ memset(map, 0, 256);
+ map[' '] = 1;
+ map['\n'] = 1;
+ map['\r'] = 1;
+ map['\t'] = 1;
+ end = 1;
+ do
+ {
+ NEXT(c);
+ }
+ while (WHITE(c));
+ string:
+ if (assign)
+ char_ptr = va_arg(arg_ptr, char *);
+ while (width > 0 && map[(unsigned char) c] != end)
+ {
+ --width;
+ if (assign)
+ *char_ptr++ = (char) c;
+ c = *buf++;
+ if (!c)
+ break;
+ else
+ ++chars;
+ }
+ if (assign)
+ {
+ *char_ptr = 0;
+ ++count;
+ }
+ if (!c)
+ return count;
+ else
+ UNGETC();
+ break;
+ case 'f':
+ case 'e':
+ case 'E':
+ case 'g':
+ case 'G':
+ neg = ok = FALSE;
+ dx = 0.0;
+ do
+ {
+ NEXT(c);
+ }
+ while (WHITE(c));
+ if (c == '+')
+ {
+ NEXT(c);
+ --width;
+ } else if (c == '-')
+ {
+ neg = TRUE;
+ NEXT(c);
+ --width;
+ }
+ while (width > 0 && isdigit(c))
+ {
+ --width;
+ dx = dx * 10.0 + (double) (c - '0');
+ ok = TRUE;
+ c = *buf++;
+ if (!c)
+ break;
+ else
+ ++chars;
+ }
+ if (width > 0 && c == '.')
+ {
+ --width;
+ dd = 10.0;
+ NEXT(c);
+ while (width > 0 && isdigit(c))
+ {
+ --width;
+ dx += (double) (c - '0') / dd;
+ dd *= 10.0;
+ ok = TRUE;
+ c = *buf++;
+ if (!c)
+ break;
+ else
+ ++chars;
+ }
+ }
+ if (!ok)
+ return count;
+ if (width > 0 && (c == 'e' || c == 'E'))
+ {
+ eneg = FALSE;
+ exp = 0;
+ NEXT(c);
+ --width;
+ if (width > 0 && c == '+')
+ {
+ NEXT(c);
+ --width;
+ } else if (width > 0 && c == '-')
+ {
+ eneg = TRUE;
+ NEXT(c);
+ --width;
+ }
+ if (!(width > 0 && isdigit(c)))
+ {
+ UNGETC();
+ return count;
+ }
+ while (width > 0 && isdigit(c))
+ {
+ --width;
+ exp = exp * 10 + (c - '0');
+ c = *buf++;
+ if (!c)
+ break;
+ else
+ ++chars;
+ }
+ if (eneg)
+ exp = -exp;
+ while (exp > 0)
+ {
+ dx *= 10.0;
+ --exp;
+ }
+ while (exp < 0)
+ {
+ dx /= 10.0;
+ ++exp;
+ }
+ }
+ if (assign)
+ {
+ if (neg)
+ dx = -dx;
+ if (size == 'l')
+ {
+ dbl_ptr = va_arg(arg_ptr, double *);
+ *dbl_ptr = dx;
+ }
+ else
+ {
+ flt_ptr = va_arg(arg_ptr, float *);
+ *flt_ptr = (float)dx;
+ }
+ ++count;
+ }
+ if (!c)
+ return count;
+ else
+ UNGETC();
+ break;
+ case 'i':
+ neg = FALSE;
+ radix = 10;
+ do
+ {
+ NEXT(c);
+ }
+ while (WHITE(c));
+ if (!(width > 0 && c == '0'))
+ goto scan_complete_number;
+ NEXT(c);
+ --width;
+ if (width > 0 && (c == 'x' || c == 'X'))
+ {
+ NEXT(c);
+ radix = 16;
+ --width;
+ }
+ else if (width > 0 && (c >= '0' && c <= '7'))
+ radix = 8;
+ goto scan_unsigned_number;
+ case 'd':
+ case 'u':
+ case 'o':
+ case 'x':
+ case 'X':
+ do
+ {
+ NEXT(c);
+ }
+ while (WHITE(c));
+ switch (f)
+ {
+ case 'o':
+ radix = 8;
+ break;
+ case 'x':
+ case 'X':
+ radix = 16;
+ break;
+ default:
+ radix = 10;
+ break;
+ }
+ scan_complete_number:
+ neg = FALSE;
+ if (width > 0 && c == '+')
+ {
+ NEXT(c);
+ --width;
+ }
+ else if (width > 0 && c == '-' && radix == 10)
+ {
+ neg = TRUE;
+ NEXT(c);
+ --width;
+ }
+ scan_unsigned_number:
+ n = 0;
+ ok = FALSE;
+ while (width > 0)
+ {
+ --width;
+ if (isdigit(c))
+ d = c - '0';
+ else if (isupper(c))
+ d = c - 'A' + 10;
+ else if (islower(c))
+ d = c - 'a' + 10;
+ else
+ break;
+ if (d < 0 || d >= radix)
+ break;
+ ok = TRUE;
+ n = n * radix + d;
+ c = *buf++;
+ if (!c)
+ break;
+ else
+ ++chars;
+ }
+ if (!ok)
+ return count;
+ if (assign)
+ {
+ if (neg)
+ n = -n;
+ switch (size)
+ {
+ case 'h':
+ short_ptr = va_arg(arg_ptr, short *);
+ *short_ptr = (short) n;
+ break;
+ case 'l':
+ long_ptr = va_arg(arg_ptr, long *);
+ *long_ptr = (long) n;
+ break;
+ default:
+ int_ptr = va_arg(arg_ptr, int *);
+ *int_ptr = (int) n;
+ }
+ ++count;
+ }
+ if (!c)
+ return count;
+ else
+ UNGETC();
+ break;
+ case 'n':
+ if (assign)
+ {
+ int_ptr = va_arg(arg_ptr, int *);
+ *int_ptr = chars;
+ ++count;
+ }
+ break;
+ default:
+ if (!f) /* % at end of string */
+ return count;
+ NEXT(c);
+ if (c != f)
+ return count;
+ break;
+ }
+ ++fmt;
+ }
+ }
+ return count;
+}
+#endif /* HAVE_VSSCANF */
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/scr_dump.c b/payloads/libpayload/curses/PDCurses/pdcurses/scr_dump.c
new file mode 100644
index 0000000..6727ba3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/scr_dump.c
@@ -0,0 +1,210 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: scr_dump.c,v 1.30 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: scr_dump
+
+ Synopsis:
+ int putwin(WINDOW *win, FILE *filep);
+ WINDOW *getwin(FILE *filep);
+ int scr_dump(const char *filename);
+ int scr_init(const char *filename);
+ int scr_restore(const char *filename);
+ int scr_set(const char *filename);
+
+ Description:
+ getwin() reads window-related data previously stored in a file
+ by putwin(). It then creates and initialises a new window using
+ that data.
+
+ putwin() writes all data associated with a window into a file,
+ using an unspecified format. This information can be retrieved
+ later using getwin().
+
+ scr_dump() writes the current contents of the virtual screen to
+ the file named by filename in an unspecified format.
+
+ scr_restore() function sets the virtual screen to the contents
+ of the file named by filename, which must have been written
+ using scr_dump(). The next refresh operation restores the screen
+ to the way it looked in the dump file.
+
+ In PDCurses, scr_init() does nothing, and scr_set() is a synonym
+ for scr_restore(). Also, scr_dump() and scr_restore() save and
+ load from curscr. This differs from some other implementations,
+ where scr_init() works with curscr, and scr_restore() works with
+ newscr; but the effect should be the same. (PDCurses has no
+ newscr.)
+
+ Return Value:
+ On successful completion, getwin() returns a pointer to the
+ window it created. Otherwise, it returns a null pointer. Other
+ functions return OK or ERR.
+
+ Portability X/Open BSD SYS V
+ putwin Y
+ getwin Y
+ scr_dump Y
+ scr_init Y
+ scr_restore Y
+ scr_set Y
+
+**man-end****************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+
+#define DUMPVER 1 /* Should be updated whenever the WINDOW struct is
+ changed */
+
+int putwin(WINDOW *win, FILE *filep)
+{
+ static const char *marker = "PDC";
+ static const unsigned char version = DUMPVER;
+
+ PDC_LOG(("putwin() - called\n"));
+
+ /* write the marker and the WINDOW struct */
+
+ if (filep && fwrite(marker, strlen(marker), 1, filep)
+ && fwrite(&version, 1, 1, filep)
+ && fwrite(win, sizeof(WINDOW), 1, filep))
+ {
+ int i;
+
+ /* write each line */
+
+ for (i = 0; i < win->_maxy && win->_y[i]; i++)
+ if (!fwrite(win->_y[i], win->_maxx * sizeof(chtype), 1, filep))
+ return ERR;
+
+ return OK;
+ }
+
+ return ERR;
+}
+
+WINDOW *getwin(FILE *filep)
+{
+ WINDOW *win;
+ char marker[4];
+ int i, nlines, ncols;
+
+ PDC_LOG(("getwin() - called\n"));
+
+ if ( !(win = malloc(sizeof(WINDOW))) )
+ return (WINDOW *)NULL;
+
+ /* check for the marker, and load the WINDOW struct */
+
+ if (!filep || !fread(marker, 4, 1, filep) || strncmp(marker, "PDC", 3)
+ || marker[3] != DUMPVER || !fread(win, sizeof(WINDOW), 1, filep))
+ {
+ free(win);
+ return (WINDOW *)NULL;
+ }
+
+ nlines = win->_maxy;
+ ncols = win->_maxx;
+
+ /* allocate the line pointer array */
+
+ if ( !(win->_y = malloc(nlines * sizeof(chtype *))) )
+ {
+ free(win);
+ return (WINDOW *)NULL;
+ }
+
+ /* allocate the minchng and maxchng arrays */
+
+ if ( !(win->_firstch = malloc(nlines * sizeof(int))) )
+ {
+ free(win->_y);
+ free(win);
+ return (WINDOW *)NULL;
+ }
+
+ if ( !(win->_lastch = malloc(nlines * sizeof(int))) )
+ {
+ free(win->_firstch);
+ free(win->_y);
+ free(win);
+ return (WINDOW *)NULL;
+ }
+
+ /* allocate the lines */
+
+ if ( !(win = PDC_makelines(win)) )
+ return (WINDOW *)NULL;
+
+ /* read them */
+
+ for (i = 0; i < nlines; i++)
+ {
+ if (!fread(win->_y[i], ncols * sizeof(chtype), 1, filep))
+ {
+ delwin(win);
+ return (WINDOW *)NULL;
+ }
+ }
+
+ touchwin(win);
+
+ return win;
+}
+
+int scr_dump(const char *filename)
+{
+ FILE *filep;
+
+ PDC_LOG(("scr_dump() - called: filename %s\n", filename));
+
+ if (filename && (filep = fopen(filename, "wb")) != NULL)
+ {
+ int result = putwin(curscr, filep);
+ fclose(filep);
+ return result;
+ }
+
+ return ERR;
+}
+
+int scr_init(const char *filename)
+{
+ PDC_LOG(("scr_init() - called: filename %s\n", filename));
+
+ return OK;
+}
+
+int scr_restore(const char *filename)
+{
+ FILE *filep;
+
+ PDC_LOG(("scr_restore() - called: filename %s\n", filename));
+
+ if (filename && (filep = fopen(filename, "rb")) != NULL)
+ {
+ WINDOW *replacement = getwin(filep);
+ fclose(filep);
+
+ if (replacement)
+ {
+ int result = overwrite(replacement, curscr);
+ delwin(replacement);
+ return result;
+ }
+ }
+
+ return ERR;
+}
+
+int scr_set(const char *filename)
+{
+ PDC_LOG(("scr_set() - called: filename %s\n", filename));
+
+ return scr_restore(filename);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/scroll.c b/payloads/libpayload/curses/PDCurses/pdcurses/scroll.c
new file mode 100644
index 0000000..bc6c082
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/scroll.c
@@ -0,0 +1,98 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: scroll.c,v 1.36 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: scroll
+
+ Synopsis:
+ int scroll(WINDOW *win);
+ int scrl(int n);
+ int wscrl(WINDOW *win, int n);
+
+ Description:
+ scroll() causes the window to scroll up one line. This involves
+ moving the lines in the window data strcture.
+
+ With a positive n, scrl() and wscrl() scroll the window up n
+ lines (line i + n becomes i); otherwise they scroll the window
+ down n lines.
+
+ For these functions to work, scrolling must be enabled via
+ scrollok(). Note also that scrolling is not allowed if the
+ supplied window is a pad.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ scroll Y Y Y
+ scrl Y - 4.0
+ wscrl Y - 4.0
+
+**man-end****************************************************************/
+
+int wscrl(WINDOW *win, int n)
+{
+ int i, l, dir, start, end;
+ chtype blank, *temp;
+
+ /* Check if window scrolls. Valid for window AND pad */
+
+ if (!win || !win->_scroll || !n)
+ return ERR;
+
+ blank = win->_bkgd;
+
+ if (n > 0)
+ {
+ start = win->_tmarg;
+ end = win->_bmarg;
+ dir = 1;
+ }
+ else
+ {
+ start = win->_bmarg;
+ end = win->_tmarg;
+ dir = -1;
+ }
+
+ for (l = 0; l < (n * dir); l++)
+ {
+ temp = win->_y[start];
+
+ /* re-arrange line pointers */
+
+ for (i = start; i != end; i += dir)
+ win->_y[i] = win->_y[i + dir];
+
+ win->_y[end] = temp;
+
+ /* make a blank line */
+
+ for (i = 0; i < win->_maxx; i++)
+ *temp++ = blank;
+ }
+
+ touchline(win, win->_tmarg, win->_bmarg - win->_tmarg + 1);
+
+ PDC_sync(win);
+ return OK;
+}
+
+int scrl(int n)
+{
+ PDC_LOG(("scrl() - called\n"));
+
+ return wscrl(stdscr, n);
+}
+
+int scroll(WINDOW *win)
+{
+ PDC_LOG(("scroll() - called\n"));
+
+ return wscrl(win, 1);
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/slk.c b/payloads/libpayload/curses/PDCurses/pdcurses/slk.c
new file mode 100644
index 0000000..1491e2b
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/slk.c
@@ -0,0 +1,643 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: slk.c,v 1.61 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: slk
+
+ Synopsis:
+ int slk_init(int fmt);
+ int slk_set(int labnum, const char *label, int justify);
+ int slk_refresh(void);
+ int slk_noutrefresh(void);
+ char *slk_label(int labnum);
+ int slk_clear(void);
+ int slk_restore(void);
+ int slk_touch(void);
+ int slk_attron(const chtype attrs);
+ int slk_attr_on(const attr_t attrs, void *opts);
+ int slk_attrset(const chtype attrs);
+ int slk_attr_set(const attr_t attrs, short color_pair, void *opts);
+ int slk_attroff(const chtype attrs);
+ int slk_attr_off(const attr_t attrs, void *opts);
+ int slk_color(short color_pair);
+
+ int slk_wset(int labnum, const wchar_t *label, int justify);
+
+ int PDC_mouse_in_slk(int y, int x);
+ void PDC_slk_free(void);
+ void PDC_slk_initialize(void);
+
+ wchar_t *slk_wlabel(int labnum)
+
+ Description:
+ These functions manipulate a window that contain Soft Label Keys
+ (SLK). To use the SLK functions, a call to slk_init() must be
+ made BEFORE initscr() or newterm(). slk_init() removes 1 or 2
+ lines from the useable screen, depending on the format selected.
+
+ The line(s) removed from the screen are used as a separate
+ window, in which SLKs are displayed.
+
+ slk_init() requires a single parameter which describes the
+ format of the SLKs as follows:
+
+ 0 3-2-3 format
+ 1 4-4 format
+ 2 4-4-4 format (ncurses extension)
+ 3 4-4-4 format with index line (ncurses extension)
+ 2 lines used
+ 55 5-5 format (pdcurses format)
+
+ slk_refresh(), slk_noutrefresh() and slk_touch() are analogous
+ to refresh(), noutrefresh() and touch().
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ slk_init Y - Y
+ slk_set Y - Y
+ slk_refresh Y - Y
+ slk_noutrefresh Y - Y
+ slk_label Y - Y
+ slk_clear Y - Y
+ slk_restore Y - Y
+ slk_touch Y - Y
+ slk_attron Y - Y
+ slk_attrset Y - Y
+ slk_attroff Y - Y
+ slk_attr_on Y
+ slk_attr_set Y
+ slk_attr_off Y
+ slk_wset Y
+ PDC_mouse_in_slk - - -
+ PDC_slk_free - - -
+ PDC_slk_initialize - - -
+ slk_wlabel - - -
+
+**man-end****************************************************************/
+
+#include <stdlib.h>
+
+enum { LABEL_NORMAL = 8, LABEL_EXTENDED = 10, LABEL_NCURSES_EXTENDED = 12 };
+
+static int label_length = 0;
+static int labels = 0;
+static int label_fmt = 0;
+static int label_line = 0;
+static bool hidden = FALSE;
+
+static struct SLK {
+ chtype label[32];
+ int len;
+ int format;
+ int start_col;
+} *slk = (struct SLK *)NULL;
+
+/* slk_init() is the slk initialization routine.
+ This must be called before initscr().
+
+ label_fmt = 0, 1 or 55.
+ 0 = 3-2-3 format
+ 1 = 4 - 4 format
+ 2 = 4-4-4 format (ncurses extension for PC 12 function keys)
+ 3 = 4-4-4 format (ncurses extension for PC 12 function keys -
+ with index line)
+ 55 = 5 - 5 format (extended for PC, 10 function keys) */
+
+int slk_init(int fmt)
+{
+ PDC_LOG(("slk_init() - called\n"));
+
+ if (SP)
+ return ERR;
+
+ switch (fmt)
+ {
+ case 0: /* 3 - 2 - 3 */
+ labels = LABEL_NORMAL;
+ break;
+
+ case 1: /* 4 - 4 */
+ labels = LABEL_NORMAL;
+ break;
+
+ case 2: /* 4 4 4 */
+ labels = LABEL_NCURSES_EXTENDED;
+ break;
+
+ case 3: /* 4 4 4 with index */
+ labels = LABEL_NCURSES_EXTENDED;
+ break;
+
+ case 55: /* 5 - 5 */
+ labels = LABEL_EXTENDED;
+ break;
+
+ default:
+ return ERR;
+ }
+
+ label_fmt = fmt;
+
+ slk = calloc(labels, sizeof(struct SLK));
+
+ if (!slk)
+ labels = 0;
+
+ return slk ? OK : ERR;
+}
+
+/* draw a single button */
+
+static void _drawone(int num)
+{
+ int i, col, slen;
+
+ if (hidden)
+ return;
+
+ slen = slk[num].len;
+
+ switch (slk[num].format)
+ {
+ case 0: /* LEFT */
+ col = 0;
+ break;
+
+ case 1: /* CENTER */
+ col = (label_length - slen) / 2;
+
+ if (col + slen > label_length)
+ --col;
+ break;
+
+ default: /* RIGHT */
+ col = label_length - slen;
+ }
+
+ wmove(SP->slk_winptr, label_line, slk[num].start_col);
+
+ for (i = 0; i < label_length; ++i)
+ waddch(SP->slk_winptr, (i >= col && i < (col + slen)) ?
+ slk[num].label[i - col] : ' ');
+}
+
+/* redraw each button */
+
+static void _redraw(void)
+{
+ int i;
+
+ for (i = 0; i < labels; ++i)
+ _drawone(i);
+}
+
+/* slk_set() Used to set a slk label to a string.
+
+ labnum = 1 - 8 (or 10) (number of the label)
+ label = string (8 or 7 bytes total), or NULL
+ justify = 0 : left, 1 : center, 2 : right */
+
+int slk_set(int labnum, const char *label, int justify)
+{
+#ifdef PDC_WIDE
+ wchar_t wlabel[32];
+
+ PDC_mbstowcs(wlabel, label, 31);
+ return slk_wset(labnum, wlabel, justify);
+#else
+ PDC_LOG(("slk_set() - called\n"));
+
+ if (labnum < 1 || labnum > labels || justify < 0 || justify > 2)
+ return ERR;
+
+ labnum--;
+
+ if (!label || !(*label))
+ {
+ /* Clear the label */
+
+ *slk[labnum].label = 0;
+ slk[labnum].format = 0;
+ slk[labnum].len = 0;
+ }
+ else
+ {
+ int i, j = 0;
+
+ /* Skip leading spaces */
+
+ while (label[j] == ' ')
+ j++;
+
+ /* Copy it */
+
+ for (i = 0; i < label_length; i++)
+ {
+ chtype ch = label[i + j];
+
+ slk[labnum].label[i] = ch;
+
+ if (!ch)
+ break;
+ }
+
+ /* Drop trailing spaces */
+
+ while ((i + j) && (label[i + j - 1] == ' '))
+ i--;
+
+ slk[labnum].label[i] = 0;
+ slk[labnum].format = justify;
+ slk[labnum].len = i;
+ }
+
+ _drawone(labnum);
+
+ return OK;
+#endif
+}
+
+int slk_refresh(void)
+{
+ PDC_LOG(("slk_refresh() - called\n"));
+
+ return (slk_noutrefresh() == ERR) ? ERR : doupdate();
+}
+
+int slk_noutrefresh(void)
+{
+ PDC_LOG(("slk_noutrefresh() - called\n"));
+
+ return wnoutrefresh(SP->slk_winptr);
+}
+
+char *slk_label(int labnum)
+{
+ static char temp[33];
+#ifdef PDC_WIDE
+ wchar_t *wtemp = slk_wlabel(labnum);
+
+ PDC_wcstombs(temp, wtemp, 32);
+#else
+ chtype *p;
+ int i;
+
+ PDC_LOG(("slk_label() - called\n"));
+
+ if (labnum < 1 || labnum > labels)
+ return (char *)0;
+
+ for (i = 0, p = slk[labnum - 1].label; *p; i++)
+ temp[i] = *p++;
+
+ temp[i] = '\0';
+#endif
+ return temp;
+}
+
+int slk_clear(void)
+{
+ PDC_LOG(("slk_clear() - called\n"));
+
+ hidden = TRUE;
+ werase(SP->slk_winptr);
+ return wrefresh(SP->slk_winptr);
+}
+
+int slk_restore(void)
+{
+ PDC_LOG(("slk_restore() - called\n"));
+
+ hidden = FALSE;
+ _redraw();
+ return wrefresh(SP->slk_winptr);
+}
+
+int slk_touch(void)
+{
+ PDC_LOG(("slk_touch() - called\n"));
+
+ return touchwin(SP->slk_winptr);
+}
+
+int slk_attron(const chtype attrs)
+{
+ int rc;
+
+ PDC_LOG(("slk_attron() - called\n"));
+
+ rc = wattron(SP->slk_winptr, attrs);
+ _redraw();
+
+ return rc;
+}
+
+int slk_attr_on(const attr_t attrs, void *opts)
+{
+ PDC_LOG(("slk_attr_on() - called\n"));
+
+ return slk_attron(attrs);
+}
+
+int slk_attroff(const chtype attrs)
+{
+ int rc;
+
+ PDC_LOG(("slk_attroff() - called\n"));
+
+ rc = wattroff(SP->slk_winptr, attrs);
+ _redraw();
+
+ return rc;
+}
+
+int slk_attr_off(const attr_t attrs, void *opts)
+{
+ PDC_LOG(("slk_attr_off() - called\n"));
+
+ return slk_attroff(attrs);
+}
+
+int slk_attrset(const chtype attrs)
+{
+ int rc;
+
+ PDC_LOG(("slk_attrset() - called\n"));
+
+ rc = wattrset(SP->slk_winptr, attrs);
+ _redraw();
+
+ return rc;
+}
+
+int slk_color(short color_pair)
+{
+ int rc;
+
+ PDC_LOG(("slk_color() - called\n"));
+
+ rc = wcolor_set(SP->slk_winptr, color_pair, NULL);
+ _redraw();
+
+ return rc;
+}
+
+int slk_attr_set(const attr_t attrs, short color_pair, void *opts)
+{
+ PDC_LOG(("slk_attr_set() - called\n"));
+
+ return slk_attrset(attrs | COLOR_PAIR(color_pair));
+}
+
+static void _slk_calc(void)
+{
+ int i, center, col = 0;
+ label_length = COLS / labels;
+
+ if (label_length > 31)
+ label_length = 31;
+
+ switch (label_fmt)
+ {
+ case 0: /* 3 - 2 - 3 F-Key layout */
+
+ --label_length;
+
+ slk[0].start_col = col;
+ slk[1].start_col = (col += label_length);
+ slk[2].start_col = (col += label_length);
+
+ center = COLS / 2;
+
+ slk[3].start_col = center - label_length + 1;
+ slk[4].start_col = center + 1;
+
+ col = COLS - (label_length * 3) + 1;
+
+ slk[5].start_col = col;
+ slk[6].start_col = (col += label_length);
+ slk[7].start_col = (col += label_length);
+ break;
+
+ case 1: /* 4 - 4 F-Key layout */
+
+ for (i = 0; i < 8; i++)
+ {
+ slk[i].start_col = col;
+ col += label_length;
+
+ if (i == 3)
+ col = COLS - (label_length * 4) + 1;
+ }
+
+ break;
+
+ case 2: /* 4 4 4 F-Key layout */
+ case 3: /* 4 4 4 F-Key layout with index */
+
+ for (i = 0; i < 4; i++)
+ {
+ slk[i].start_col = col;
+ col += label_length;
+ }
+
+ center = COLS/2;
+
+ slk[4].start_col = center - (label_length * 2) + 1;
+ slk[5].start_col = center - label_length - 1;
+ slk[6].start_col = center + 1;
+ slk[7].start_col = center + label_length + 1;
+
+ col = COLS - (label_length * 4) + 1;
+
+ for (i = 8; i < 12; i++)
+ {
+ slk[i].start_col = col;
+ col += label_length;
+ }
+
+ break;
+
+ default: /* 5 - 5 F-Key layout */
+
+ for (i = 0; i < 10; i++)
+ {
+ slk[i].start_col = col;
+ col += label_length;
+
+ if (i == 4)
+ col = COLS - (label_length * 5) + 1;
+ }
+ }
+
+ --label_length;
+
+ /* make sure labels are all in window */
+
+ _redraw();
+}
+
+void PDC_slk_initialize(void)
+{
+ if (slk)
+ {
+ if (label_fmt == 3)
+ {
+ SP->slklines = 2;
+ label_line = 1;
+ }
+ else
+ SP->slklines = 1;
+
+ if (!SP->slk_winptr)
+ {
+ if ( !(SP->slk_winptr = newwin(SP->slklines, COLS,
+ LINES - SP->slklines, 0)) )
+ return;
+
+ wattrset(SP->slk_winptr, A_REVERSE);
+ }
+
+ _slk_calc();
+
+ /* if we have an index line, display it now */
+
+ if (label_fmt == 3)
+ {
+ chtype save_attr;
+ int i;
+
+ save_attr = SP->slk_winptr->_attrs;
+ wattrset(SP->slk_winptr, A_NORMAL);
+ wmove(SP->slk_winptr, 0, 0);
+ whline(SP->slk_winptr, 0, COLS);
+
+ for (i = 0; i < labels; i++)
+ mvwprintw(SP->slk_winptr, 0, slk[i].start_col, "F%d", i + 1);
+
+ SP->slk_winptr->_attrs = save_attr;
+ }
+
+ touchwin(SP->slk_winptr);
+ }
+}
+
+void PDC_slk_free(void)
+{
+ if (slk)
+ {
+ if (SP->slk_winptr)
+ {
+ delwin(SP->slk_winptr);
+ SP->slk_winptr = (WINDOW *)NULL;
+ }
+
+ free(slk);
+ slk = (struct SLK *)NULL;
+
+ label_length = 0;
+ labels = 0;
+ label_fmt = 0;
+ label_line = 0;
+ hidden = FALSE;
+ }
+}
+
+int PDC_mouse_in_slk(int y, int x)
+{
+ int i;
+
+ PDC_LOG(("PDC_mouse_in_slk() - called: y->%d x->%d\n", y, x));
+
+ /* If the line on which the mouse was clicked is NOT the last line
+ of the screen, we are not interested in it. */
+
+ if (!slk || !SP->slk_winptr || (y != SP->slk_winptr->_begy + label_line))
+ return 0;
+
+ for (i = 0; i < labels; i++)
+ if (x >= slk[i].start_col && x < (slk[i].start_col + label_length))
+ return i + 1;
+
+ return 0;
+}
+
+#ifdef PDC_WIDE
+int slk_wset(int labnum, const wchar_t *label, int justify)
+{
+ PDC_LOG(("slk_wset() - called\n"));
+
+ if (labnum < 1 || labnum > labels || justify < 0 || justify > 2)
+ return ERR;
+
+ labnum--;
+
+ if (!label || !(*label))
+ {
+ /* Clear the label */
+
+ *slk[labnum].label = 0;
+ slk[labnum].format = 0;
+ slk[labnum].len = 0;
+ }
+ else
+ {
+ int i, j = 0;
+
+ /* Skip leading spaces */
+
+ while (label[j] == L' ')
+ j++;
+
+ /* Copy it */
+
+ for (i = 0; i < label_length; i++)
+ {
+ chtype ch = label[i + j];
+
+ slk[labnum].label[i] = ch;
+
+ if (!ch)
+ break;
+ }
+
+ /* Drop trailing spaces */
+
+ while ((i + j) && (label[i + j - 1] == L' '))
+ i--;
+
+ slk[labnum].label[i] = 0;
+ slk[labnum].format = justify;
+ slk[labnum].len = i;
+ }
+
+ _drawone(labnum);
+
+ return OK;
+}
+
+wchar_t *slk_wlabel(int labnum)
+{
+ static wchar_t temp[33];
+ chtype *p;
+ int i;
+
+ PDC_LOG(("slk_wlabel() - called\n"));
+
+ if (labnum < 1 || labnum > labels)
+ return (wchar_t *)0;
+
+ for (i = 0, p = slk[labnum - 1].label; *p; i++)
+ temp[i] = *p++;
+
+ temp[i] = '\0';
+
+ return temp;
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/termattr.c b/payloads/libpayload/curses/PDCurses/pdcurses/termattr.c
new file mode 100644
index 0000000..7e49047
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/termattr.c
@@ -0,0 +1,176 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: termattr.c,v 1.54 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: termattr
+
+ Synopsis:
+ int baudrate(void);
+ char erasechar(void);
+ bool has_ic(void);
+ bool has_il(void);
+ char killchar(void);
+ char *longname(void);
+ chtype termattrs(void);
+ attr_t term_attrs(void);
+ char *termname(void);
+
+ int erasewchar(wchar_t *ch);
+ int killwchar(wchar_t *ch);
+
+ char wordchar(void);
+
+ Description:
+ baudrate() is supposed to return the output speed of the
+ terminal. In PDCurses, it simply returns INT_MAX.
+
+ has_ic and has_il() return TRUE. These functions have meaning in
+ some other implementations of curses.
+
+ erasechar() and killchar() return ^H and ^U, respectively -- the
+ ERASE and KILL characters. In other curses implementations,
+ these may vary by terminal type. erasewchar() and killwchar()
+ are the wide-character versions; they take a pointer to a
+ location in which to store the character, and return OK or ERR.
+
+ longname() returns a pointer to a static area containing a
+ verbose description of the current terminal. The maximum length
+ of the string is 128 characters. It is defined only after the
+ call to initscr() or newterm().
+
+ termname() returns a pointer to a static area containing a
+ short description of the current terminal (14 characters).
+
+ termattrs() returns a logical OR of all video attributes
+ supported by the terminal.
+
+ wordchar() is a PDCurses extension of the concept behind the
+ functions erasechar() and killchar(), returning the "delete
+ word" character, ^W.
+
+ Portability X/Open BSD SYS V
+ baudrate Y Y Y
+ erasechar Y Y Y
+ has_ic Y Y Y
+ has_il Y Y Y
+ killchar Y Y Y
+ longname Y Y Y
+ termattrs Y Y Y
+ termname Y Y Y
+ erasewchar Y
+ killwchar Y
+ term_attrs Y
+ wordchar - - -
+
+**man-end****************************************************************/
+
+#include <string.h>
+#include <limits.h>
+
+int baudrate(void)
+{
+ PDC_LOG(("baudrate() - called\n"));
+
+ return INT_MAX;
+}
+
+char erasechar(void)
+{
+ PDC_LOG(("erasechar() - called\n"));
+
+ return _ECHAR; /* character delete char (^H) */
+}
+
+bool has_ic(void)
+{
+ PDC_LOG(("has_ic() - called\n"));
+
+ return TRUE;
+}
+
+bool has_il(void)
+{
+ PDC_LOG(("has_il() - called\n"));
+
+ return TRUE;
+}
+
+char killchar(void)
+{
+ PDC_LOG(("killchar() - called\n"));
+
+ return _DLCHAR; /* line delete char (^U) */
+}
+
+char *longname(void)
+{
+ PDC_LOG(("longname() - called\n"));
+
+ return ttytype + 9; /* skip "pdcurses|" */
+}
+
+chtype termattrs(void)
+{
+ chtype temp = A_BLINK | A_BOLD | A_INVIS | A_REVERSE | A_UNDERLINE;
+
+ /* note: blink is bold background on some platforms */
+
+ PDC_LOG(("termattrs() - called\n"));
+
+ if (!SP->mono)
+ temp |= A_COLOR;
+
+ return temp;
+}
+
+attr_t term_attrs(void)
+{
+ PDC_LOG(("term_attrs() - called\n"));
+
+ return WA_BLINK | WA_BOLD | WA_INVIS | WA_LEFT | WA_REVERSE |
+ WA_RIGHT | WA_UNDERLINE;
+}
+
+const char *termname(void)
+{
+ PDC_LOG(("termname() - called\n"));
+
+ return "pdcurses";
+}
+
+char wordchar(void)
+{
+ PDC_LOG(("wordchar() - called\n"));
+
+ return _DWCHAR; /* word delete char */
+}
+
+#ifdef PDC_WIDE
+int erasewchar(wchar_t *ch)
+{
+ PDC_LOG(("erasewchar() - called\n"));
+
+ if (!ch)
+ return ERR;
+
+ *ch = (wchar_t)_ECHAR;
+
+ return OK;
+}
+
+int killwchar(wchar_t *ch)
+{
+ PDC_LOG(("killwchar() - called\n"));
+
+ if (!ch)
+ return ERR;
+
+ *ch = (wchar_t)_DLCHAR;
+
+ return OK;
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/terminfo.c b/payloads/libpayload/curses/PDCurses/pdcurses/terminfo.c
new file mode 100644
index 0000000..abae4f2
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/terminfo.c
@@ -0,0 +1,215 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: terminfo.c,v 1.37 2008/07/21 12:29:20 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: terminfo
+
+ Synopsis:
+ int mvcur(int oldrow, int oldcol, int newrow, int newcol);
+ int vidattr(chtype attr);
+ int vid_attr(attr_t attr, short color_pair, void *opt);
+ int vidputs(chtype attr, int (*putfunc)(int));
+ int vid_puts(attr_t attr, short color_pair, void *opt,
+ int (*putfunc)(int));
+
+ int del_curterm(TERMINAL *);
+ int putp(const char *);
+ int restartterm(const char *, int, int *);
+ TERMINAL *set_curterm(TERMINAL *);
+ int setterm(const char *term);
+ int setupterm(const char *, int, int *);
+ int tgetent(char *, const char *);
+ int tgetflag(const char *);
+ int tgetnum(const char *);
+ char *tgetstr(const char *, char **);
+ char *tgoto(const char *, int, int);
+ int tigetflag(const char *);
+ int tigetnum(const char *);
+ char *tigetstr(const char *);
+ char *tparm(const char *,long, long, long, long, long, long,
+ long, long, long);
+ int tputs(const char *, int, int (*)(int));
+
+ Description:
+ mvcur() lets you move the physical cursor without updating any
+ window cursor positions. It returns OK or ERR.
+
+ The rest of these functions are currently implemented as stubs,
+ returning the appropriate errors and doing nothing else.
+
+ Portability X/Open BSD SYS V
+ mvcur Y Y Y
+
+**man-end****************************************************************/
+
+#include <term.h>
+
+TERMINAL *cur_term = NULL;
+
+int mvcur(int oldrow, int oldcol, int newrow, int newcol)
+{
+ PDC_LOG(("mvcur() - called: oldrow %d oldcol %d newrow %d newcol %d\n",
+ oldrow, oldcol, newrow, newcol));
+
+ if ((newrow >= LINES) || (newcol >= COLS) || (newrow < 0) || (newcol < 0))
+ return ERR;
+
+ PDC_gotoyx(newrow, newcol);
+ SP->cursrow = newrow;
+ SP->curscol = newcol;
+
+ return OK;
+}
+
+int vidattr(chtype attr)
+{
+ PDC_LOG(("vidattr() - called: attr %d\n", attr));
+
+ return ERR;
+}
+
+int vid_attr(attr_t attr, short color_pair, void *opt)
+{
+ PDC_LOG(("vid_attr() - called\n"));
+
+ return ERR;
+}
+
+int vidputs(chtype attr, int (*putfunc)(int))
+{
+ PDC_LOG(("vidputs() - called: attr %d\n", attr));
+
+ return ERR;
+}
+
+int vid_puts(attr_t attr, short color_pair, void *opt, int (*putfunc)(int))
+{
+ PDC_LOG(("vid_puts() - called\n"));
+
+ return ERR;
+}
+
+int del_curterm(TERMINAL *oterm)
+{
+ PDC_LOG(("del_curterm() - called\n"));
+
+ return ERR;
+}
+
+int putp(const char *str)
+{
+ PDC_LOG(("putp() - called: str %s\n", str));
+
+ return ERR;
+}
+
+int restartterm(const char *term, int filedes, int *errret)
+{
+ PDC_LOG(("restartterm() - called\n"));
+
+ if (errret)
+ *errret = -1;
+
+ return ERR;
+}
+
+TERMINAL *set_curterm(TERMINAL *nterm)
+{
+ PDC_LOG(("set_curterm() - called\n"));
+
+ return (TERMINAL *)NULL;
+}
+
+int setterm(const char *term)
+{
+ PDC_LOG(("setterm() - called\n"));
+
+ return ERR;
+}
+
+int setupterm(const char *term, int filedes, int *errret)
+{
+ PDC_LOG(("setupterm() - called\n"));
+
+ if (errret)
+ *errret = -1;
+ else
+ fprintf(stderr, "There is no terminfo database\n");
+
+ return ERR;
+}
+
+int tgetent(char *bp, const char *name)
+{
+ PDC_LOG(("tgetent() - called: name %s\n", name));
+
+ return ERR;
+}
+
+int tgetflag(const char *id)
+{
+ PDC_LOG(("tgetflag() - called: id %s\n", id));
+
+ return ERR;
+}
+
+int tgetnum(const char *id)
+{
+ PDC_LOG(("tgetnum() - called: id %s\n", id));
+
+ return ERR;
+}
+
+char *tgetstr(const char *id, char **area)
+{
+ PDC_LOG(("tgetstr() - called: id %s\n", id));
+
+ return (char *)NULL;
+}
+
+char *tgoto(const char *cap, int col, int row)
+{
+ PDC_LOG(("tgoto() - called\n"));
+
+ return (char *)NULL;
+}
+
+int tigetflag(const char *capname)
+{
+ PDC_LOG(("tigetflag() - called: capname %s\n", capname));
+
+ return -1;
+}
+
+int tigetnum(const char *capname)
+{
+ PDC_LOG(("tigetnum() - called: capname %s\n", capname));
+
+ return -2;
+}
+
+char *tigetstr(const char *capname)
+{
+ PDC_LOG(("tigetstr() - called: capname %s\n", capname));
+
+ return (char *)(-1);
+}
+
+char *tparm(const char *cap, long p1, long p2, long p3, long p4,
+ long p5, long p6, long p7, long p8, long p9)
+{
+ PDC_LOG(("tparm() - called: cap %s\n", cap));
+
+ return (char *)NULL;
+}
+
+int tputs(const char *str, int affcnt, int (*putfunc)(int))
+{
+ PDC_LOG(("tputs() - called\n"));
+
+ return ERR;
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/touch.c b/payloads/libpayload/curses/PDCurses/pdcurses/touch.c
new file mode 100644
index 0000000..c808058
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/touch.c
@@ -0,0 +1,160 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: touch.c,v 1.29 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: touch
+
+ Synopsis:
+ int touchwin(WINDOW *win);
+ int touchline(WINDOW *win, int start, int count);
+ int untouchwin(WINDOW *win);
+ int wtouchln(WINDOW *win, int y, int n, int changed);
+ bool is_linetouched(WINDOW *win, int line);
+ bool is_wintouched(WINDOW *win);
+
+ Description:
+ touchwin() and touchline() throw away all information about
+ which parts of the window have been touched, pretending that the
+ entire window has been drawn on. This is sometimes necessary
+ when using overlapping windows, since a change to one window
+ will affect the other window, but the records of which lines
+ have been changed in the other window will not reflect the
+ change.
+
+ untouchwin() marks all lines in the window as unchanged since
+ the last call to wrefresh().
+
+ wtouchln() makes n lines in the window, starting at line y, look
+ as if they have (changed == 1) or have not (changed == 0) been
+ changed since the last call to wrefresh().
+
+ is_linetouched() returns TRUE if the specified line in the
+ specified window has been changed since the last call to
+ wrefresh().
+
+ is_wintouched() returns TRUE if the specified window
+ has been changed since the last call to wrefresh().
+
+ Return Value:
+ All functions return OK on success and ERR on error except
+ is_wintouched() and is_linetouched().
+
+ Portability X/Open BSD SYS V
+ touchwin Y Y Y
+ touchline Y - 3.0
+ untouchwin Y - 4.0
+ wtouchln Y Y Y
+ is_linetouched Y - 4.0
+ is_wintouched Y - 4.0
+
+**man-end****************************************************************/
+
+int touchwin(WINDOW *win)
+{
+ int i;
+
+ PDC_LOG(("touchwin() - called: Win=%x\n", win));
+
+ if (!win)
+ return ERR;
+
+ for (i = 0; i < win->_maxy; i++)
+ {
+ win->_firstch[i] = 0;
+ win->_lastch[i] = win->_maxx - 1;
+ }
+
+ return OK;
+}
+
+int touchline(WINDOW *win, int start, int count)
+{
+ int i;
+
+ PDC_LOG(("touchline() - called: win=%p start %d count %d\n",
+ win, start, count));
+
+ if (!win || start > win->_maxy || start + count > win->_maxy)
+ return ERR;
+
+ for (i = start; i < start + count; i++)
+ {
+ win->_firstch[i] = 0;
+ win->_lastch[i] = win->_maxx - 1;
+ }
+
+ return OK;
+}
+
+int untouchwin(WINDOW *win)
+{
+ int i;
+
+ PDC_LOG(("untouchwin() - called: win=%p", win));
+
+ if (!win)
+ return ERR;
+
+ for (i = 0; i < win->_maxy; i++)
+ {
+ win->_firstch[i] = _NO_CHANGE;
+ win->_lastch[i] = _NO_CHANGE;
+ }
+
+ return OK;
+}
+
+int wtouchln(WINDOW *win, int y, int n, int changed)
+{
+ int i;
+
+ PDC_LOG(("wtouchln() - called: win=%p y=%d n=%d changed=%d\n",
+ win, y, n, changed));
+
+ if (!win || y > win->_maxy || y + n > win->_maxy)
+ return ERR;
+
+ for (i = y; i < y + n; i++)
+ {
+ if (changed)
+ {
+ win->_firstch[i] = 0;
+ win->_lastch[i] = win->_maxx - 1;
+ }
+ else
+ {
+ win->_firstch[i] = _NO_CHANGE;
+ win->_lastch[i] = _NO_CHANGE;
+ }
+ }
+
+ return OK;
+}
+
+bool is_linetouched(WINDOW *win, int line)
+{
+ PDC_LOG(("is_linetouched() - called: win=%p line=%d\n", win, line));
+
+ if (!win || line > win->_maxy || line < 0)
+ return FALSE;
+
+ return (win->_firstch[line] != _NO_CHANGE) ? TRUE : FALSE;
+}
+
+bool is_wintouched(WINDOW *win)
+{
+ int i;
+
+ PDC_LOG(("is_wintouched() - called: win=%p\n", win));
+
+ if (win)
+ for (i = 0; i < win->_maxy; i++)
+ if (win->_firstch[i] != _NO_CHANGE)
+ return TRUE;
+
+ return FALSE;
+}
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/util.c b/payloads/libpayload/curses/PDCurses/pdcurses/util.c
new file mode 100644
index 0000000..9972143
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/util.c
@@ -0,0 +1,309 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: util.c,v 1.71 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: util
+
+ Synopsis:
+ char *unctrl(chtype c);
+ void filter(void);
+ void use_env(bool x);
+ int delay_output(int ms);
+
+ int getcchar(const cchar_t *wcval, wchar_t *wch, attr_t *attrs,
+ short *color_pair, void *opts);
+ int setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs,
+ short color_pair, const void *opts);
+ wchar_t *wunctrl(cchar_t *wc);
+
+ int PDC_mbtowc(wchar_t *pwc, const char *s, size_t n);
+ size_t PDC_mbstowcs(wchar_t *dest, const char *src, size_t n);
+ size_t PDC_wcstombs(char *dest, const wchar_t *src, size_t n);
+
+ Description:
+ unctrl() expands the text portion of the chtype c into a
+ printable string. Control characters are changed to the "^X"
+ notation; others are passed through. wunctrl() is the wide-
+ character version of the function.
+
+ filter() and use_env() are no-ops in PDCurses.
+
+ delay_output() inserts an ms millisecond pause in output.
+
+ getcchar() works in two modes: When wch is not NULL, it reads
+ the cchar_t pointed to by wcval and stores the attributes in
+ attrs, the color pair in color_pair, and the text in the
+ wide-character string wch. When wch is NULL, getcchar() merely
+ returns the number of wide characters in wcval. In either mode,
+ the opts argument is unused.
+
+ setcchar constructs a cchar_t at wcval from the wide-character
+ text at wch, the attributes in attr and the color pair in
+ color_pair. The opts argument is unused.
+
+ Currently, the length returned by getcchar() is always 1 or 0.
+ Similarly, setcchar() will only take the first wide character
+ from wch, and ignore any others that it "should" take (i.e.,
+ combining characters). Nor will it correctly handle any
+ character outside the basic multilingual plane (UCS-2).
+
+ Return Value:
+ unctrl() and wunctrl() return NULL on failure. delay_output()
+ always returns OK.
+
+ getcchar() returns the number of wide characters wcval points to
+ when wch is NULL; when it's not, getcchar() returns OK or ERR.
+
+ setcchar() returns OK or ERR.
+
+ Portability X/Open BSD SYS V
+ unctrl Y Y Y
+ filter Y - 3.0
+ use_env Y - 4.0
+ delay_output Y Y Y
+ getcchar Y
+ setcchar Y
+ wunctrl Y
+ PDC_mbtowc - - -
+ PDC_mbstowcs - - -
+ PDC_wcstombs - - -
+
+**man-end****************************************************************/
+
+#ifdef PDC_WIDE
+# ifdef PDC_FORCE_UTF8
+# include <string.h>
+# else
+# include <stdlib.h>
+# endif
+#endif
+
+char *unctrl(chtype c)
+{
+ static char strbuf[3] = {0, 0, 0};
+
+ chtype ic;
+
+ PDC_LOG(("unctrl() - called\n"));
+
+ ic = c & A_CHARTEXT;
+
+ if (ic >= 0x20 && ic != 0x7f) /* normal characters */
+ {
+ strbuf[0] = (char)ic;
+ strbuf[1] = '\0';
+ return strbuf;
+ }
+
+ strbuf[0] = '^'; /* '^' prefix */
+
+ if (ic == 0x7f) /* 0x7f == DEL */
+ strbuf[1] = '?';
+ else /* other control */
+ strbuf[1] = (char)(ic + '@');
+
+ return strbuf;
+}
+
+void filter(void)
+{
+ PDC_LOG(("filter() - called\n"));
+}
+
+void use_env(bool x)
+{
+ PDC_LOG(("use_env() - called: x %d\n", x));
+}
+
+int delay_output(int ms)
+{
+ PDC_LOG(("delay_output() - called: ms %d\n", ms));
+
+ return napms(ms);
+}
+
+#ifdef PDC_WIDE
+int getcchar(const cchar_t *wcval, wchar_t *wch, attr_t *attrs,
+ short *color_pair, void *opts)
+{
+ if (!wcval)
+ return ERR;
+
+ if (wch)
+ {
+ if (!attrs || !color_pair)
+ return ERR;
+
+ *wch = (*wcval & A_CHARTEXT);
+ *attrs = (*wcval & (A_ATTRIBUTES & ~A_COLOR));
+ *color_pair = PAIR_NUMBER(*wcval & A_COLOR);
+
+ if (*wch)
+ *++wch = L'\0';
+
+ return OK;
+ }
+ else
+ return ((*wcval & A_CHARTEXT) != L'\0');
+}
+
+int setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs,
+ short color_pair, const void *opts)
+{
+ if (!wcval || !wch)
+ return ERR;
+
+ *wcval = *wch | attrs | COLOR_PAIR(color_pair);
+
+ return OK;
+}
+
+wchar_t *wunctrl(cchar_t *wc)
+{
+ static wchar_t strbuf[3] = {0, 0, 0};
+
+ cchar_t ic;
+
+ PDC_LOG(("wunctrl() - called\n"));
+
+ ic = *wc & A_CHARTEXT;
+
+ if (ic >= 0x20 && ic != 0x7f) /* normal characters */
+ {
+ strbuf[0] = (wchar_t)ic;
+ strbuf[1] = L'\0';
+ return strbuf;
+ }
+
+ strbuf[0] = '^'; /* '^' prefix */
+
+ if (ic == 0x7f) /* 0x7f == DEL */
+ strbuf[1] = '?';
+ else /* other control */
+ strbuf[1] = (wchar_t)(ic + '@');
+
+ return strbuf;
+}
+
+int PDC_mbtowc(wchar_t *pwc, const char *s, size_t n)
+{
+# ifdef PDC_FORCE_UTF8
+ wchar_t key;
+ int i = -1;
+ const unsigned char *string;
+
+ if (!s || (n < 1))
+ return -1;
+
+ if (!*s)
+ return 0;
+
+ string = (const unsigned char *)s;
+
+ key = string[0];
+
+ /* Simplistic UTF-8 decoder -- only does the BMP, minimal validation */
+
+ if (key & 0x80)
+ {
+ if ((key & 0xe0) == 0xc0)
+ {
+ if (1 < n)
+ {
+ key = ((key & 0x1f) << 6) | (string[1] & 0x3f);
+ i = 2;
+ }
+ }
+ else if ((key & 0xe0) == 0xe0)
+ {
+ if (2 < n)
+ {
+ key = ((key & 0x0f) << 12) | ((string[1] & 0x3f) << 6) |
+ (string[2] & 0x3f);
+ i = 3;
+ }
+ }
+ }
+ else
+ i = 1;
+
+ if (i)
+ *pwc = key;
+
+ return i;
+# else
+ return mbtowc(pwc, s, n);
+# endif
+}
+
+size_t PDC_mbstowcs(wchar_t *dest, const char *src, size_t n)
+{
+# ifdef PDC_FORCE_UTF8
+ size_t i = 0, len;
+
+ if (!src || !dest)
+ return 0;
+
+ len = strlen(src);
+
+ while (*src && i < n)
+ {
+ int retval = PDC_mbtowc(dest + i, src, len);
+
+ if (retval < 1)
+ return -1;
+
+ src += retval;
+ len -= retval;
+ i++;
+ }
+# else
+ size_t i = mbstowcs(dest, src, n);
+# endif
+ dest[i] = 0;
+ return i;
+}
+
+size_t PDC_wcstombs(char *dest, const wchar_t *src, size_t n)
+{
+# ifdef PDC_FORCE_UTF8
+ size_t i = 0;
+
+ if (!src || !dest)
+ return 0;
+
+ while (*src && i < n)
+ {
+ chtype code = *src++;
+
+ if (code < 0x80)
+ {
+ dest[i] = code;
+ i++;
+ }
+ else
+ if (code < 0x800)
+ {
+ dest[i] = ((code & 0x07c0) >> 6) | 0xc0;
+ dest[i + 1] = (code & 0x003f) | 0x80;
+ i += 2;
+ }
+ else
+ {
+ dest[i] = ((code & 0xf000) >> 12) | 0xe0;
+ dest[i + 1] = ((code & 0x0fc0) >> 6) | 0x80;
+ dest[i + 2] = (code & 0x003f) | 0x80;
+ i += 3;
+ }
+ }
+# else
+ size_t i = wcstombs(dest, src, n);
+# endif
+ dest[i] = '\0';
+ return i;
+}
+#endif
diff --git a/payloads/libpayload/curses/PDCurses/pdcurses/window.c b/payloads/libpayload/curses/PDCurses/pdcurses/window.c
new file mode 100644
index 0000000..b5634c7
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/pdcurses/window.c
@@ -0,0 +1,562 @@
+/* Public Domain Curses */
+
+#include <curspriv.h>
+
+RCSID("$Id: window.c,v 1.62 2008/07/13 16:08:18 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: window
+
+ Synopsis:
+ WINDOW *newwin(int nlines, int ncols, int begy, int begx);
+ WINDOW *derwin(WINDOW* orig, int nlines, int ncols,
+ int begy, int begx);
+ WINDOW *subwin(WINDOW* orig, int nlines, int ncols,
+ int begy, int begx);
+ WINDOW *dupwin(WINDOW *win);
+ int delwin(WINDOW *win);
+ int mvwin(WINDOW *win, int y, int x);
+ int mvderwin(WINDOW *win, int pary, int parx);
+ int syncok(WINDOW *win, bool bf);
+ void wsyncup(WINDOW *win);
+ void wcursyncup(WINDOW *win);
+ void wsyncdown(WINDOW *win);
+
+ WINDOW *resize_window(WINDOW *win, int nlines, int ncols);
+ int wresize(WINDOW *win, int nlines, int ncols);
+ WINDOW *PDC_makelines(WINDOW *win);
+ WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx);
+ void PDC_sync(WINDOW *win);
+
+ Description:
+ newwin() creates a new window with the given number of lines,
+ nlines and columns, ncols. The upper left corner of the window
+ is at line begy, column begx. If nlines is zero, it defaults to
+ LINES - begy; ncols to COLS - begx. Create a new full-screen
+ window by calling newwin(0, 0, 0, 0).
+
+ delwin() deletes the named window, freeing all associated
+ memory. In the case of overlapping windows, subwindows should be
+ deleted before the main window.
+
+ mvwin() moves the window so that the upper left-hand corner is
+ at position (y,x). If the move would cause the window to be off
+ the screen, it is an error and the window is not moved. Moving
+ subwindows is allowed.
+
+ subwin() creates a new subwindow within a window. The
+ dimensions of the subwindow are nlines lines and ncols columns.
+ The subwindow is at position (begy, begx) on the screen. This
+ position is relative to the screen, and not to the window orig.
+ Changes made to either window will affect both. When using this
+ routine, you will often need to call touchwin() before calling
+ wrefresh().
+
+ derwin() is the same as subwin(), except that begy and begx are
+ relative to the origin of the window orig rather than the
+ screen. There is no difference between subwindows and derived
+ windows.
+
+ mvderwin() moves a derived window (or subwindow) inside its
+ parent window. The screen-relative parameters of the window are
+ not changed. This routine is used to display different parts of
+ the parent window at the same physical position on the screen.
+
+ dupwin() creates an exact duplicate of the window win.
+
+ wsyncup() causes a touchwin() of all of the window's parents.
+
+ If wsyncok() is called with a second argument of TRUE, this
+ causes a wsyncup() to be called every time the window is
+ changed.
+
+ wcursyncup() causes the current cursor position of all of a
+ window's ancestors to reflect the current cursor position of the
+ current window.
+
+ wsyncdown() causes a touchwin() of the current window if any of
+ its parent's windows have been touched.
+
+ resize_window() allows the user to resize an existing window. It
+ returns the pointer to the new window, or NULL on failure.
+
+ wresize() is an ncurses-compatible wrapper for resize_window().
+ Note that, unlike ncurses, it will NOT process any subwindows of
+ the window. (However, you still can call it _on_ subwindows.) It
+ returns OK or ERR.
+
+ PDC_makenew() allocates all data for a new WINDOW * except the
+ actual lines themselves. If it's unable to allocate memory for
+ the window structure, it will free all allocated memory and
+ return a NULL pointer.
+
+ PDC_makelines() allocates the memory for the lines.
+
+ PDC_sync() handles wrefresh() and wsyncup() calls when a window
+ is changed.
+
+ Return Value:
+ newwin(), subwin(), derwin() and dupwin() return a pointer
+ to the new window, or NULL on failure. delwin(), mvwin(),
+ mvderwin() and syncok() return OK or ERR. wsyncup(),
+ wcursyncup() and wsyncdown() return nothing.
+
+ Errors:
+ It is an error to call resize_window() before calling initscr().
+ Also, an error will be generated if we fail to create a newly
+ sized replacement window for curscr, or stdscr. This could
+ happen when increasing the window size. NOTE: If this happens,
+ the previously successfully allocated windows are left alone;
+ i.e., the resize is NOT cancelled for those windows.
+
+ Portability X/Open BSD SYS V
+ newwin Y Y Y
+ delwin Y Y Y
+ mvwin Y Y Y
+ subwin Y Y Y
+ derwin Y - Y
+ mvderwin Y - Y
+ dupwin Y - 4.0
+ wsyncup Y - 4.0
+ syncok Y - 4.0
+ wcursyncup Y - 4.0
+ wsyncdown Y - 4.0
+ resize_window - - -
+ wresize - - -
+ PDC_makelines - - -
+ PDC_makenew - - -
+ PDC_sync - - -
+
+**man-end****************************************************************/
+
+#include <stdlib.h>
+
+WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx)
+{
+ WINDOW *win;
+
+ PDC_LOG(("PDC_makenew() - called: lines %d cols %d begy %d begx %d\n",
+ nlines, ncols, begy, begx));
+
+ /* allocate the window structure itself */
+
+ if ((win = calloc(1, sizeof(WINDOW))) == (WINDOW *)NULL)
+ return win;
+
+ /* allocate the line pointer array */
+
+ if ((win->_y = malloc(nlines * sizeof(chtype *))) == NULL)
+ {
+ free(win);
+ return (WINDOW *)NULL;
+ }
+
+ /* allocate the minchng and maxchng arrays */
+
+ if ((win->_firstch = malloc(nlines * sizeof(int))) == NULL)
+ {
+ free(win->_y);
+ free(win);
+ return (WINDOW *)NULL;
+ }
+
+ if ((win->_lastch = malloc(nlines * sizeof(int))) == NULL)
+ {
+ free(win->_firstch);
+ free(win->_y);
+ free(win);
+ return (WINDOW *)NULL;
+ }
+
+ /* initialize window variables */
+
+ win->_maxy = nlines; /* real max screen size */
+ win->_maxx = ncols; /* real max screen size */
+ win->_begy = begy;
+ win->_begx = begx;
+ win->_bkgd = ' '; /* wrs 4/10/93 -- initialize background to blank */
+ win->_clear = (bool) ((nlines == LINES) && (ncols == COLS));
+ win->_bmarg = nlines - 1;
+ win->_parx = win->_pary = -1;
+
+ /* init to say window all changed */
+
+ touchwin(win);
+
+ return win;
+}
+
+WINDOW *PDC_makelines(WINDOW *win)
+{
+ int i, j, nlines, ncols;
+
+ PDC_LOG(("PDC_makelines() - called: lines %d cols %d\n", nlines, ncols));
+
+ if (!win)
+ return (WINDOW *)NULL;
+
+ nlines = win->_maxy;
+ ncols = win->_maxx;
+
+ for (i = 0; i < nlines; i++)
+ {
+ if ((win->_y[i] = malloc(ncols * sizeof(chtype))) == NULL)
+ {
+ /* if error, free all the data */
+
+ for (j = 0; j < i; j++)
+ free(win->_y[j]);
+
+ free(win->_firstch);
+ free(win->_lastch);
+ free(win->_y);
+ free(win);
+
+ return (WINDOW *)NULL;
+ }
+ }
+
+ return win;
+}
+
+void PDC_sync(WINDOW *win)
+{
+ PDC_LOG(("PDC_sync() - called:\n"));
+
+ if (win->_immed)
+ wrefresh(win);
+ if (win->_sync)
+ wsyncup(win);
+}
+
+WINDOW *newwin(int nlines, int ncols, int begy, int begx)
+{
+ WINDOW *win;
+
+ PDC_LOG(("newwin() - called:lines=%d cols=%d begy=%d begx=%d\n",
+ nlines, ncols, begy, begx));
+
+ if (!nlines)
+ nlines = LINES - begy;
+ if (!ncols)
+ ncols = COLS - begx;
+
+ if ( (begy + nlines > SP->lines || begx + ncols > SP->cols)
+ || !(win = PDC_makenew(nlines, ncols, begy, begx))
+ || !(win = PDC_makelines(win)) )
+ return (WINDOW *)NULL;
+
+ werase(win);
+
+ return win;
+}
+
+int delwin(WINDOW *win)
+{
+ int i;
+
+ PDC_LOG(("delwin() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ /* subwindows use parents' lines */
+
+ if (!(win->_flags & (_SUBWIN|_SUBPAD)))
+ for (i = 0; i < win->_maxy && win->_y[i]; i++)
+ if (win->_y[i])
+ free(win->_y[i]);
+
+ free(win->_firstch);
+ free(win->_lastch);
+ free(win->_y);
+ free(win);
+
+ return OK;
+}
+
+int mvwin(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("mvwin() - called\n"));
+
+ if (!win || (y + win->_maxy > LINES || y < 0)
+ || (x + win->_maxx > COLS || x < 0))
+ return ERR;
+
+ win->_begy = y;
+ win->_begx = x;
+ touchwin(win);
+
+ return OK;
+}
+
+WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begy, int begx)
+{
+ WINDOW *win;
+ int i;
+ int j = begy - orig->_begy;
+ int k = begx - orig->_begx;
+
+ PDC_LOG(("subwin() - called: lines %d cols %d begy %d begx %d\n",
+ nlines, ncols, begy, begx));
+
+ /* make sure window fits inside the original one */
+
+ if (!orig || (begy < orig->_begy) || (begx < orig->_begx) ||
+ (begy + nlines) > (orig->_begy + orig->_maxy) ||
+ (begx + ncols) > (orig->_begx + orig->_maxx))
+ return (WINDOW *)NULL;
+
+ if (!nlines)
+ nlines = orig->_maxy - 1 - j;
+ if (!ncols)
+ ncols = orig->_maxx - 1 - k;
+
+ if ( !(win = PDC_makenew(nlines, ncols, begy, begx)) )
+ return (WINDOW *)NULL;
+
+ /* initialize window variables */
+
+ win->_attrs = orig->_attrs;
+ win->_bkgd = orig->_bkgd;
+ win->_leaveit = orig->_leaveit;
+ win->_scroll = orig->_scroll;
+ win->_nodelay = orig->_nodelay;
+ win->_use_keypad = orig->_use_keypad;
+ win->_immed = orig->_immed;
+ win->_sync = orig->_sync;
+ win->_pary = j;
+ win->_parx = k;
+ win->_parent = orig;
+
+ for (i = 0; i < nlines; i++, j++)
+ win->_y[i] = orig->_y[j] + k;
+
+ win->_flags |= _SUBWIN;
+
+ return win;
+}
+
+WINDOW *derwin(WINDOW *orig, int nlines, int ncols, int begy, int begx)
+{
+ return subwin(orig, nlines, ncols, begy + orig->_begy, begx + orig->_begx);
+}
+
+int mvderwin(WINDOW *win, int pary, int parx)
+{
+ int i, j;
+ WINDOW *mypar;
+
+ if (!win || !(win->_parent))
+ return ERR;
+
+ mypar = win->_parent;
+
+ if (pary < 0 || parx < 0 || (pary + win->_maxy) > mypar->_maxy ||
+ (parx + win->_maxx) > mypar->_maxx)
+ return ERR;
+
+ j = pary;
+
+ for (i = 0; i < win->_maxy; i++)
+ win->_y[i] = (mypar->_y[j++]) + parx;
+
+ win->_pary = pary;
+ win->_parx = parx;
+
+ return OK;
+}
+
+WINDOW *dupwin(WINDOW *win)
+{
+ WINDOW *new;
+ chtype *ptr, *ptr1;
+ int nlines, ncols, begy, begx, i;
+
+ if (!win)
+ return (WINDOW *)NULL;
+
+ nlines = win->_maxy;
+ ncols = win->_maxx;
+ begy = win->_begy;
+ begx = win->_begx;
+
+ if ( !(new = PDC_makenew(nlines, ncols, begy, begx))
+ || !(new = PDC_makelines(new)) )
+ return (WINDOW *)NULL;
+
+ /* copy the contents of win into new */
+
+ for (i = 0; i < nlines; i++)
+ {
+ for (ptr = new->_y[i], ptr1 = win->_y[i];
+ ptr < new->_y[i] + ncols; ptr++, ptr1++)
+ *ptr = *ptr1;
+
+ new->_firstch[i] = 0;
+ new->_lastch[i] = ncols - 1;
+ }
+
+ new->_curx = win->_curx;
+ new->_cury = win->_cury;
+ new->_maxy = win->_maxy;
+ new->_maxx = win->_maxx;
+ new->_begy = win->_begy;
+ new->_begx = win->_begx;
+ new->_flags = win->_flags;
+ new->_attrs = win->_attrs;
+ new->_clear = win->_clear;
+ new->_leaveit = win->_leaveit;
+ new->_scroll = win->_scroll;
+ new->_nodelay = win->_nodelay;
+ new->_use_keypad = win->_use_keypad;
+ new->_tmarg = win->_tmarg;
+ new->_bmarg = win->_bmarg;
+ new->_parx = win->_parx;
+ new->_pary = win->_pary;
+ new->_parent = win->_parent;
+ new->_bkgd = win->_bkgd;
+ new->_flags = win->_flags;
+
+ return new;
+}
+
+WINDOW *resize_window(WINDOW *win, int nlines, int ncols)
+{
+ WINDOW *new;
+ int i, save_cury, save_curx, new_begy, new_begx;
+
+ PDC_LOG(("resize_window() - called: nlines %d ncols %d\n",
+ nlines, ncols));
+
+ if (!win)
+ return (WINDOW *)NULL;
+
+ if (win->_flags & _SUBPAD)
+ {
+ if ( !(new = subpad(win->_parent, nlines, ncols,
+ win->_begy, win->_begx)) )
+ return (WINDOW *)NULL;
+ }
+ else if (win->_flags & _SUBWIN)
+ {
+ if ( !(new = subwin(win->_parent, nlines, ncols,
+ win->_begy, win->_begx)) )
+ return (WINDOW *)NULL;
+ }
+ else
+ {
+ if (win == SP->slk_winptr)
+ {
+ new_begy = SP->lines - SP->slklines;
+ new_begx = 0;
+ }
+ else
+ {
+ new_begy = win->_begy;
+ new_begx = win->_begx;
+ }
+
+ if ( !(new = PDC_makenew(nlines, ncols, new_begy, new_begx)) )
+ return (WINDOW *)NULL;
+ }
+
+ save_curx = min(win->_curx, new->_maxx);
+ save_cury = min(win->_cury, new->_maxy);
+
+ if (!(win->_flags & (_SUBPAD|_SUBWIN)))
+ {
+ if ( !(new = PDC_makelines(new)) )
+ return (WINDOW *)NULL;
+
+ werase(new);
+
+ copywin(win, new, 0, 0, 0, 0, min(win->_maxy, new->_maxy) - 1,
+ min(win->_maxx, new->_maxx) - 1, FALSE);
+
+ for (i = 0; i < win->_maxy && win->_y[i]; i++)
+ if (win->_y[i])
+ free(win->_y[i]);
+ }
+
+ new->_flags = win->_flags;
+ new->_attrs = win->_attrs;
+ new->_clear = win->_clear;
+ new->_leaveit = win->_leaveit;
+ new->_scroll = win->_scroll;
+ new->_nodelay = win->_nodelay;
+ new->_use_keypad = win->_use_keypad;
+ new->_tmarg = (win->_tmarg > new->_maxy - 1) ? 0 : win->_tmarg;
+ new->_bmarg = (win->_bmarg == win->_maxy - 1) ?
+ new->_maxy - 1 : min(win->_bmarg, (new->_maxy - 1));
+ new->_parent = win->_parent;
+ new->_immed = win->_immed;
+ new->_sync = win->_sync;
+ new->_bkgd = win->_bkgd;
+
+ new->_curx = save_curx;
+ new->_cury = save_cury;
+
+ free(win->_firstch);
+ free(win->_lastch);
+ free(win->_y);
+
+ *win = *new;
+ free(new);
+
+ return win;
+}
+
+int wresize(WINDOW *win, int nlines, int ncols)
+{
+ return (resize_window(win, nlines, ncols) ? OK : ERR);
+}
+
+void wsyncup(WINDOW *win)
+{
+ WINDOW *tmp;
+
+ PDC_LOG(("wsyncup() - called\n"));
+
+ for (tmp = win; tmp; tmp = tmp->_parent)
+ touchwin(tmp);
+}
+
+int syncok(WINDOW *win, bool bf)
+{
+ PDC_LOG(("syncok() - called\n"));
+
+ if (!win)
+ return ERR;
+
+ win->_sync = bf;
+
+ return OK;
+}
+
+void wcursyncup(WINDOW *win)
+{
+ WINDOW *tmp;
+
+ PDC_LOG(("wcursyncup() - called\n"));
+
+ for (tmp = win; tmp && tmp->_parent; tmp = tmp->_parent)
+ wmove(tmp->_parent, tmp->_pary + tmp->_cury, tmp->_parx + tmp->_curx);
+}
+
+void wsyncdown(WINDOW *win)
+{
+ WINDOW *tmp;
+
+ PDC_LOG(("wsyncdown() - called\n"));
+
+ for (tmp = win; tmp; tmp = tmp->_parent)
+ {
+ if (is_wintouched(tmp))
+ {
+ touchwin(win);
+ break;
+ }
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/Makefile b/payloads/libpayload/curses/PDCurses/sdl1/Makefile
new file mode 100644
index 0000000..a8393f0
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/Makefile
@@ -0,0 +1,101 @@
+# Makefile for PDCurses library for SDL
+
+O = o
+
+ifndef PDCURSES_SRCDIR
+ PDCURSES_SRCDIR = ..
+endif
+
+include $(PDCURSES_SRCDIR)/libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)/sdl1
+
+PDCURSES_SDL_H = $(osdir)/pdcsdl.h
+
+SFLAGS = $(shell sdl-config --cflags)
+SLIBS = $(shell sdl-config --libs)
+
+# If your system doesn't have these, remove the defines here
+SFLAGS += -DHAVE_VSNPRINTF -DHAVE_VSSCANF
+
+ifeq ($(DEBUG),Y)
+ CFLAGS = -g -Wall -DPDCDEBUG
+else
+ CFLAGS = -O2 -Wall
+endif
+
+BUILD = $(CC) $(CFLAGS) -I$(PDCURSES_SRCDIR)
+
+ifeq ($(shell uname),Darwin)
+ DEMOFLAGS = -Dmain=SDL_main
+endif
+
+LINK = $(CC)
+LDFLAGS = $(LIBCURSES) $(SLIBS)
+RANLIB = ranlib
+LIBCURSES = libpdcurses.a
+
+DEMOS = firework newdemo ptest rain testcurs tuidemo worm xmas \
+sdltest
+
+.PHONY: all libs clean demos
+
+all: libs demos
+
+libs: $(LIBCURSES)
+
+clean:
+ -rm -rf *.o trace $(LIBCURSES) $(DEMOS)
+
+demos: $(DEMOS)
+ strip $(DEMOS)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ ar rv $@ $?
+ -$(RANLIB) $@
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_SDL_H)
+$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
+tui.o tuidemo.o : $(PDCURSES_CURSES_H)
+terminfo.o: $(TERM_HEADER)
+panel.o ptest: $(PANEL_HEADER)
+
+$(LIBOBJS) : %.o: $(srcdir)/%.c
+ $(BUILD) $(SFLAGS) -c $<
+
+$(PDCOBJS) : %.o: $(osdir)/%.c
+ $(BUILD) $(SFLAGS) -c $<
+
+firework: $(demodir)/firework.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+newdemo: $(demodir)/newdemo.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+ptest: $(demodir)/ptest.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+rain: $(demodir)/rain.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+testcurs: $(demodir)/testcurs.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+tuidemo: tuidemo.o tui.o
+ $(LINK) tui.o tuidemo.o -o $@ $(LDFLAGS)
+
+worm: $(demodir)/worm.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+xmas: $(demodir)/xmas.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+sdltest: $(osdir)/sdltest.c
+ $(BUILD) $(DEMOFLAGS) -o $@ $< $(LDFLAGS)
+
+tui.o: $(demodir)/tui.c $(demodir)/tui.h
+ $(BUILD) -c $(DEMOFLAGS) $(demodir)/tui.c
+
+tuidemo.o: $(demodir)/tuidemo.c
+ $(BUILD) -c $(DEMOFLAGS) $(demodir)/tuidemo.c
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/Makefile.mng b/payloads/libpayload/curses/PDCurses/sdl1/Makefile.mng
new file mode 100644
index 0000000..427edc6
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/Makefile.mng
@@ -0,0 +1,105 @@
+# Makefile for PDCurses library for SDL
+
+O = o
+
+ifndef PDCURSES_SRCDIR
+ PDCURSES_SRCDIR = ..
+endif
+
+include $(PDCURSES_SRCDIR)/libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)/sdl1
+
+PDCURSES_SDL_H = $(osdir)/pdcsdl.h
+
+ifeq ($(DEBUG),Y)
+ CFLAGS = -g -Wall -DPDCDEBUG
+else
+ CFLAGS = -O2 -Wall
+endif
+
+CC = gcc
+BUILD = $(CC) $(CFLAGS) -I$(PDCURSES_SRCDIR)
+LDFLAGS = -mwindows $(LIBCURSES)
+
+BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
+
+DEFDEPS = $(BASEDEF)
+
+DEFFILE = pdcurses.def
+
+ifeq ($(DLL),Y)
+ BUILD += -DPDC_DLL_BUILD
+ LIBEXE = gcc $(DEFFILE)
+ LIBFLAGS = -Wl,--out-implib,libpdcurses.a -shared -o
+ LIBCURSES = pdcurses.dll
+ CLEAN = $(LIBCURSES) *.a $(DEFFILE)
+ POST = -lSDL
+else
+ LIBEXE = ar
+ LIBFLAGS = rcv
+ LIBCURSES = libpdcurses.a
+ CLEAN = *.a
+ LDFLAGS += -lSDL
+endif
+
+DEMOS += sdltest.exe
+
+.PHONY: all libs clean demos
+
+all: libs demos
+
+libs: $(LIBCURSES)
+
+clean:
+ -del *.o $(CLEAN) *.exe
+
+demos: $(DEMOS)
+ strip *.exe
+
+pdcurses.dll: $(DEFFILE)
+
+$(DEFFILE): $(DEFDEPS)
+ echo LIBRARY pdcurses > $@
+ echo EXPORTS >> $@
+ type $(BASEDEF) >> $@
+ echo pdc_screen >> $@
+ echo pdc_font >> $@
+ echo pdc_icon >> $@
+ echo pdc_back >> $@
+ echo pdc_sheight >> $@
+ echo pdc_swidth >> $@
+ echo pdc_yoffset >> $@
+ echo pdc_xoffset >> $@
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $(LIBFLAGS) $@ $? $(POST)
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_SDL_H)
+$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
+tui.o tuidemo.o : $(PDCURSES_CURSES_H)
+terminfo.o: $(TERM_HEADER)
+panel.o ptest.exe: $(PANEL_HEADER)
+
+$(LIBOBJS) : %.o: $(srcdir)/%.c
+ $(BUILD) -c $<
+
+$(PDCOBJS) : %.o: $(osdir)/%.c
+ $(BUILD) -c $<
+
+firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
+ptest.exe: %.exe: $(demodir)/%.c
+ $(BUILD) -o $@ $< $(LDFLAGS)
+
+tuidemo.exe: tuidemo.o tui.o
+ $(CC) -o $@ tuidemo.o tui.o $(LDFLAGS)
+
+tui.o: $(demodir)/tui.c $(demodir)/tui.h
+ $(BUILD) -c $<
+
+tuidemo.o: $(demodir)/tuidemo.c $(demodir)/tui.h
+ $(BUILD) -c $<
+
+sdltest.exe: $(osdir)/sdltest.c
+ $(BUILD) -o $@ $< -mwindows $(LIBCURSES) -lmingw32 -lSDLmain -lSDL
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/README b/payloads/libpayload/curses/PDCurses/sdl1/README
new file mode 100644
index 0000000..35234d3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/README
@@ -0,0 +1,33 @@
+PDCurses for SDL
+================
+
+This is a port of PDCurses for SDL.
+
+
+Building
+--------
+
+. On *nix (including Linux and Mac OS X), run "make" in the sdl1
+ directory. There is no configure script (yet?) for this port. This
+ assumes a working sdl-config, and GNU make. It builds the library
+ libpdcurses.a (dynamic lib not implemented).
+
+ With MinGW, run "make -f Makefile.mng". This assumes SDL is installed
+ in the standard directories. The MinGW makefile accepts the optional
+ parameters "DLL=Y" and "DEBUG=Y", as with the console version. (Wide-
+ character support is not yet implemented for SDL.) Both makefiles
+ recognize the optional PDCURSES_SRCDIR environment variable, as with
+ the console ports. Makefile.mng builds libpdcurses.a, along with
+ pdcurses.dll, if specified.
+
+
+Distribution Status
+-------------------
+
+The files in this directory are released to the Public Domain.
+
+
+Acknowledgements
+----------------
+
+SDL port was provided by William McBrine <wmcbrine at users.sf.net>
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/deffont.h b/payloads/libpayload/curses/PDCurses/sdl1/deffont.h
new file mode 100644
index 0000000..cf9cab1
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/deffont.h
@@ -0,0 +1,385 @@
+/* Default font -- this is simply a 256x128x1 BMP, in #include'able form.
+ The font is 8x16, code page 437, and is based on the pc8x16s.bdf font
+ from the vgafonts.tar.gz package, by "Myrlin". */
+
+unsigned char deffont[] =
+{
+ 0x42, 0x4d, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
+ 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x76, 0xf8, 0xc0, 0x6c, 0xfe, 0x70, 0x7c, 0x18,
+ 0x7e, 0x38, 0xee, 0x3c, 0x00, 0xc0, 0x1c, 0xc6, 0x00, 0x7e, 0x7e,
+ 0x7e, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
+ 0x00, 0x00, 0xdc, 0xcc, 0xc0, 0x6c, 0xc6, 0xd8, 0x66, 0x18, 0x18,
+ 0x6c, 0x6c, 0x66, 0x00, 0x60, 0x30, 0xc6, 0xfe, 0x00, 0x00, 0x00,
+ 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7e,
+ 0x00, 0xd8, 0xcc, 0xc0, 0x6c, 0x60, 0xd8, 0x66, 0x18, 0x3c, 0xc6,
+ 0x6c, 0x66, 0x7e, 0x7e, 0x60, 0xc6, 0x00, 0x00, 0x30, 0x0c, 0x18,
+ 0xd8, 0x18, 0xdc, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00,
+ 0xd8, 0xcc, 0xc0, 0x6c, 0x30, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c,
+ 0x66, 0xdb, 0xf3, 0x60, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x00, 0x76, 0x00, 0x18, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00, 0xd8,
+ 0xc8, 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c, 0x66,
+ 0xdb, 0xdb, 0x60, 0xc6, 0xfe, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x7e,
+ 0x00, 0x00, 0x18, 0x18, 0xec, 0x00, 0x00, 0x7e, 0x00, 0xdc, 0xdc,
+ 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xfe, 0xc6, 0x3e, 0xdb,
+ 0xdb, 0x7c, 0xc6, 0x00, 0x7e, 0x06, 0x60, 0x18, 0x18, 0x00, 0xdc,
+ 0x00, 0x00, 0x00, 0x0c, 0x36, 0x7e, 0x7e, 0x00, 0x76, 0xce, 0xc0,
+ 0xfe, 0x30, 0x7e, 0x66, 0xdc, 0x66, 0xc6, 0xc6, 0x0c, 0x7e, 0x7e,
+ 0x60, 0xc6, 0x00, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x18, 0x76, 0x00,
+ 0x00, 0x00, 0x0c, 0x36, 0x32, 0x7e, 0x00, 0x00, 0xc6, 0xc6, 0x00,
+ 0x60, 0x00, 0x00, 0x76, 0x3c, 0xc6, 0xc6, 0x18, 0x00, 0x06, 0x60,
+ 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x1b, 0x18, 0x00, 0x00, 0x38, 0x00,
+ 0x00, 0x0c, 0x36, 0x18, 0x7e, 0x00, 0x00, 0xce, 0xc6, 0x00, 0xc6,
+ 0x00, 0x00, 0x00, 0x18, 0x6c, 0x6c, 0x30, 0x00, 0x03, 0x30, 0x7c,
+ 0x00, 0x00, 0x30, 0x0c, 0x1b, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00,
+ 0x0c, 0x36, 0x0c, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0x00, 0xfe, 0x00,
+ 0x00, 0x00, 0x7e, 0x38, 0x38, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x0c,
+ 0x36, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0f, 0x6c,
+ 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00,
+ 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00,
+ 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f,
+ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36,
+ 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00,
+ 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00,
+ 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00,
+ 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18,
+ 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00,
+ 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36,
+ 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36,
+ 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00,
+ 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36,
+ 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36,
+ 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18,
+ 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00,
+ 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18,
+ 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18,
+ 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36,
+ 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00,
+ 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
+ 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00,
+ 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18,
+ 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x1f, 0xff, 0xff, 0x1f, 0xff, 0xff,
+ 0x1f, 0x37, 0x3f, 0x37, 0xff, 0xf7, 0x37, 0xff, 0xf7, 0xff, 0xff,
+ 0xff, 0xff, 0x3f, 0x1f, 0x1f, 0x3f, 0xff, 0xff, 0xf8, 0x1f, 0xff,
+ 0xff, 0xf0, 0x0f, 0x00, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18,
+ 0x36, 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00,
+ 0x00, 0x36, 0x18, 0x18, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00,
+ 0xf0, 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x1f, 0x36,
+ 0x37, 0x3f, 0xf7, 0xff, 0x37, 0xff, 0xf7, 0xff, 0x36, 0xff, 0x00,
+ 0x36, 0x1f, 0x1f, 0x00, 0x36, 0xff, 0x18, 0x00, 0xff, 0x00, 0xf0,
+ 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36,
+ 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36,
+ 0x18, 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f,
+ 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00,
+ 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18,
+ 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff,
+ 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36,
+ 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00,
+ 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18,
+ 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00,
+ 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00,
+ 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18, 0x18,
+ 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00, 0x36,
+ 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00, 0x36,
+ 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18,
+ 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36,
+ 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x06, 0x00, 0x00, 0x00,
+ 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36,
+ 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x11,
+ 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36,
+ 0x00, 0x00, 0x00, 0x18, 0x76, 0x18, 0x7c, 0x78, 0x66, 0xc6, 0x00,
+ 0x00, 0x7c, 0x00, 0x00, 0x0c, 0x3f, 0x18, 0x00, 0x00, 0x44, 0xaa,
+ 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00,
+ 0x00, 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00,
+ 0xc6, 0xc0, 0x06, 0x86, 0x9a, 0x3c, 0x00, 0x00, 0x11, 0x55, 0xdd,
+ 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00,
+ 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00, 0xc6,
+ 0xc0, 0x06, 0xdc, 0xce, 0x3c, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18,
+ 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00,
+ 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xce, 0x00, 0x00, 0xc0, 0xc0,
+ 0x06, 0x60, 0x66, 0x3c, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18,
+ 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18,
+ 0x7c, 0x18, 0xc6, 0xcc, 0x66, 0xde, 0x7e, 0x7c, 0x60, 0xc0, 0x06,
+ 0x30, 0x30, 0x18, 0xd8, 0x36, 0x44, 0xaa, 0x77, 0x18, 0xf8, 0xf8,
+ 0xf6, 0xfe, 0xf8, 0xf6, 0x36, 0xf6, 0xfe, 0xfe, 0xf8, 0xf8, 0x0c,
+ 0x18, 0xc6, 0xcc, 0x66, 0xfe, 0x00, 0x00, 0x30, 0xfe, 0xfe, 0x18,
+ 0x18, 0x18, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36,
+ 0x00, 0x18, 0x06, 0x36, 0x06, 0x06, 0x36, 0x18, 0x00, 0x78, 0x38,
+ 0x7c, 0xcc, 0x5c, 0xf6, 0x3e, 0x38, 0x30, 0x00, 0x00, 0x6c, 0x6c,
+ 0x18, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18, 0x18, 0xf8, 0x36, 0x00,
+ 0xf8, 0xf6, 0x36, 0xfe, 0xf6, 0x36, 0xf8, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe6, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00,
+ 0x00, 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00,
+ 0x36, 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x60, 0x30, 0x60, 0x60,
+ 0xdc, 0xc6, 0x6c, 0x6c, 0x30, 0x00, 0x00, 0x62, 0x62, 0x18, 0x00,
+ 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36,
+ 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x30, 0x18, 0x30, 0x30, 0x76,
+ 0x00, 0x3c, 0x38, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x18, 0x00, 0x00,
+ 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36,
+ 0x00, 0x36, 0x36, 0x18, 0x00, 0x18, 0x0c, 0x18, 0x18, 0x00, 0xdc,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x44,
+ 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00,
+ 0x36, 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x55,
+ 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00, 0x36,
+ 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x78, 0x7c, 0x76, 0x76, 0x76, 0x76, 0x7c, 0x7c, 0x7c, 0x7c, 0x18,
+ 0x18, 0x18, 0xc6, 0xc6, 0xfc, 0x6e, 0xce, 0x7c, 0x7c, 0x7c, 0x78,
+ 0x78, 0x76, 0x7c, 0x7c, 0x18, 0xfe, 0x18, 0xc6, 0x70, 0x3c, 0xcc,
+ 0xc2, 0xcc, 0xcc, 0xcc, 0xcc, 0xc6, 0xc2, 0xc2, 0xc2, 0x18, 0x18,
+ 0x18, 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc,
+ 0xce, 0xc6, 0xc6, 0x18, 0x60, 0x7e, 0xcc, 0xd8, 0x66, 0xcc, 0xc0,
+ 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18,
+ 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6,
+ 0xc6, 0xc6, 0x7c, 0x60, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0xc0, 0xcc,
+ 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18, 0xfe,
+ 0xc6, 0xc0, 0x7e, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6,
+ 0xc6, 0xc6, 0x60, 0x7e, 0xcc, 0x18, 0xc0, 0xcc, 0xfe, 0x7c, 0x7c,
+ 0x7c, 0x7c, 0xc0, 0xfe, 0xfe, 0xfe, 0x18, 0x18, 0x18, 0xc6, 0xfe,
+ 0xf0, 0x36, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6,
+ 0xc0, 0x60, 0x18, 0xde, 0x18, 0xc0, 0xcc, 0xc6, 0x0c, 0x0c, 0x0c,
+ 0x0c, 0xc6, 0xc6, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0xc6, 0xc6, 0xc0,
+ 0x36, 0xfe, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0,
+ 0xf8, 0x3c, 0xcc, 0x7e, 0xc0, 0xcc, 0x7c, 0x78, 0x78, 0x78, 0x78,
+ 0x7c, 0x7c, 0x7c, 0x7c, 0x38, 0x38, 0x38, 0x6c, 0x6c, 0xc0, 0xec,
+ 0xcc, 0x7c, 0x7c, 0x7c, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0, 0x60,
+ 0x66, 0xc4, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0xc0, 0x00, 0xcc,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x60, 0x66,
+ 0xf8, 0x18, 0x3c, 0xcc, 0x30, 0x6c, 0x00, 0x18, 0x38, 0x00, 0x6c,
+ 0x00, 0x18, 0x00, 0x66, 0x18, 0x10, 0x10, 0xfc, 0x00, 0x6c, 0x6c,
+ 0x00, 0x18, 0xcc, 0x18, 0x00, 0x7c, 0xc6, 0x7c, 0x62, 0x66, 0xcc,
+ 0x18, 0x00, 0xcc, 0x18, 0x38, 0xcc, 0x30, 0x6c, 0x00, 0x38, 0xc6,
+ 0x30, 0x66, 0x3c, 0x30, 0x00, 0x38, 0x00, 0x00, 0x3e, 0x38, 0xc6,
+ 0x30, 0x78, 0x30, 0xc6, 0x00, 0x00, 0x18, 0x3c, 0x66, 0xcc, 0x1b,
+ 0x00, 0x00, 0x0c, 0x10, 0x00, 0x60, 0x38, 0x00, 0x10, 0x00, 0x60,
+ 0x00, 0x18, 0x60, 0xc6, 0x6c, 0x30, 0x00, 0x00, 0x10, 0x00, 0x60,
+ 0x30, 0x60, 0x00, 0xc6, 0xc6, 0x18, 0x00, 0x00, 0xf8, 0x0e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xf8, 0x78, 0x7c, 0x7c,
+ 0x30, 0x7c, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xc6, 0xcc, 0x78, 0xf8,
+ 0x7c, 0xc0, 0x7c, 0x30, 0x78, 0x10, 0x6c, 0xc6, 0x76, 0xfe, 0x0e,
+ 0x18, 0x70, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xc4, 0xcc, 0xc2, 0x30,
+ 0xcc, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc,
+ 0xc0, 0x86, 0x30, 0xcc, 0x6c, 0xfe, 0x6c, 0xce, 0xc0, 0x18, 0x18,
+ 0x18, 0x00, 0xfe, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc,
+ 0xcc, 0x18, 0x0c, 0xd8, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0,
+ 0x06, 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x60, 0x18, 0x18, 0x18,
+ 0x00, 0xc6, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc, 0xcc,
+ 0x18, 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0x1c,
+ 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x30, 0x18, 0x18, 0x18, 0x00,
+ 0xc6, 0x00, 0x7c, 0xcc, 0xc0, 0xcc, 0xfe, 0x30, 0xcc, 0xcc, 0x18,
+ 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x70, 0x30,
+ 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x18, 0x18, 0x18, 0x18, 0x00, 0xc6,
+ 0x00, 0x0c, 0xcc, 0xc4, 0xcc, 0xc6, 0x78, 0xcc, 0xec, 0x18, 0x0c,
+ 0xd8, 0x18, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xec, 0xc2, 0x30, 0xcc,
+ 0xc6, 0xc6, 0x6c, 0xc6, 0x0c, 0x70, 0x18, 0x0e, 0x00, 0x6c, 0x00,
+ 0x78, 0xf8, 0x78, 0x7c, 0x7c, 0x30, 0x7c, 0xd8, 0x38, 0x0c, 0xcc,
+ 0x18, 0xec, 0xb8, 0x78, 0xf8, 0x7c, 0xb8, 0x7c, 0xfc, 0xcc, 0xc6,
+ 0xc6, 0xc6, 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x00, 0x38, 0x00, 0x00,
+ 0xc0, 0x00, 0x0c, 0x00, 0x32, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x10, 0x0c, 0x00, 0xc0,
+ 0x00, 0x0c, 0x00, 0x36, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x18, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0xc0, 0x00,
+ 0x0c, 0x00, 0x1c, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x38, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0e, 0x18, 0x70, 0xdc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0xc6, 0xfc, 0x3c, 0xf8, 0xfc, 0xc0, 0x3e, 0xc6, 0x18, 0x78,
+ 0xc2, 0xfc, 0xc6, 0xc6, 0x7c, 0xc0, 0x7c, 0xc6, 0x7c, 0x18, 0x7c,
+ 0x10, 0x6c, 0xc6, 0x18, 0xfe, 0x3c, 0x02, 0x3c, 0x00, 0x00, 0xc0,
+ 0xc6, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x66, 0xc6, 0x18, 0xcc, 0xc6,
+ 0xc0, 0xc6, 0xc6, 0xc6, 0xc0, 0xde, 0xc6, 0x86, 0x18, 0xc6, 0x38,
+ 0xee, 0xc6, 0x18, 0xc0, 0x30, 0x06, 0x0c, 0x00, 0x00, 0xdc, 0xc6,
+ 0xc6, 0xc2, 0xce, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xcc, 0xc0,
+ 0xc6, 0xc6, 0xc6, 0xc0, 0xd6, 0xcc, 0x06, 0x18, 0xc6, 0x6c, 0xfe,
+ 0x6c, 0x18, 0xc0, 0x30, 0x0e, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xc6,
+ 0xc0, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xd8, 0xc0, 0xc6,
+ 0xc6, 0xc6, 0xc0, 0xc6, 0xcc, 0x06, 0x18, 0xc6, 0xc6, 0xd6, 0x7c,
+ 0x18, 0x60, 0x30, 0x1c, 0x0c, 0x00, 0x00, 0xde, 0xfe, 0xc6, 0xc0,
+ 0xc6, 0xc0, 0xc0, 0xde, 0xc6, 0x18, 0x0c, 0xf0, 0xc0, 0xc6, 0xce,
+ 0xc6, 0xc0, 0xc6, 0xd8, 0x0c, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x18,
+ 0x30, 0x30, 0x38, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xfc, 0xc0, 0xc6,
+ 0xf8, 0xf8, 0xc0, 0xfe, 0x18, 0x0c, 0xf0, 0xc0, 0xd6, 0xde, 0xc6,
+ 0xfc, 0xc6, 0xfc, 0x38, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x3c, 0x18,
+ 0x30, 0x70, 0x0c, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc0, 0xc6, 0xc0,
+ 0xc0, 0xc0, 0xc6, 0x18, 0x0c, 0xd8, 0xc0, 0xfe, 0xfe, 0xc6, 0xc6,
+ 0xc6, 0xc6, 0x60, 0x18, 0xc6, 0xc6, 0xc6, 0x7c, 0x66, 0x0c, 0x30,
+ 0xe0, 0x0c, 0x00, 0x00, 0xc6, 0x6c, 0xc6, 0xc2, 0xce, 0xc0, 0xc0,
+ 0xc0, 0xc6, 0x18, 0x0c, 0xcc, 0xc0, 0xfe, 0xf6, 0xc6, 0xc6, 0xc6,
+ 0xc6, 0xc0, 0x18, 0xc6, 0xc6, 0xc6, 0x6c, 0x66, 0x06, 0x30, 0xc0,
+ 0x0c, 0x00, 0x00, 0x7c, 0x38, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x62,
+ 0xc6, 0x18, 0x0c, 0xc6, 0xc0, 0xee, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6,
+ 0xc2, 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0x06, 0x30, 0x80, 0x0c,
+ 0xc6, 0x00, 0x00, 0x10, 0xfc, 0x3c, 0xf8, 0xfc, 0xfc, 0x3c, 0xc6,
+ 0x18, 0x1e, 0xc2, 0xc0, 0xc6, 0xc6, 0x7c, 0xfc, 0x7c, 0xfc, 0x7c,
+ 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0xfe, 0x3c, 0x00, 0x3c, 0x6c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x7c,
+ 0x86, 0x76, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x18, 0x00, 0x18, 0x80,
+ 0x38, 0x18, 0xfe, 0x7c, 0x0c, 0x7c, 0x7c, 0x30, 0x7c, 0x78, 0x00,
+ 0x30, 0x06, 0x00, 0x60, 0x18, 0x00, 0x18, 0x00, 0x6c, 0xc6, 0xc6,
+ 0xcc, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0x18, 0xc0, 0x6c,
+ 0x18, 0xc0, 0x86, 0x0c, 0x86, 0xc6, 0x30, 0xc6, 0x8c, 0x18, 0x18,
+ 0x0c, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0xfe, 0x86, 0x60, 0xcc,
+ 0x00, 0x30, 0x0c, 0x66, 0x18, 0x18, 0x00, 0x00, 0x60, 0xc6, 0x18,
+ 0xc0, 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x18, 0x18, 0x18,
+ 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x30, 0xcc, 0x00,
+ 0x30, 0x0c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x30, 0xe6, 0x18, 0x60,
+ 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x00, 0x00, 0x30, 0x7e,
+ 0x0c, 0x18, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x18, 0xdc, 0x00, 0x30,
+ 0x0c, 0xff, 0x7e, 0x00, 0xfe, 0x00, 0x18, 0xf6, 0x18, 0x30, 0x06,
+ 0xfe, 0x06, 0xe6, 0x18, 0xc6, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06,
+ 0x18, 0x00, 0x18, 0x00, 0x6c, 0x7c, 0x0c, 0x76, 0x00, 0x30, 0x0c,
+ 0x3c, 0x18, 0x00, 0x00, 0x00, 0x0c, 0xde, 0x18, 0x18, 0x3c, 0xcc,
+ 0xfc, 0xdc, 0x0c, 0x7c, 0x7e, 0x00, 0x00, 0x30, 0x00, 0x0c, 0x18,
+ 0x00, 0x3c, 0x00, 0xfe, 0xc0, 0xc6, 0x38, 0x00, 0x30, 0x0c, 0x66,
+ 0x18, 0x00, 0x00, 0x00, 0x06, 0xce, 0x18, 0x0c, 0x06, 0x6c, 0xc0,
+ 0xc0, 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x0c, 0x00,
+ 0x3c, 0x24, 0x6c, 0xc2, 0xc2, 0x6c, 0x60, 0x30, 0x0c, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0xc6, 0x78, 0x06, 0x06, 0x3c, 0xc0, 0xc0,
+ 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x0c, 0x00, 0x30, 0xc6, 0x00, 0x3c,
+ 0x66, 0x6c, 0xc6, 0x00, 0x6c, 0x30, 0x18, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x6c, 0x38, 0xc6, 0x86, 0x1c, 0xc0, 0x60, 0x06,
+ 0xc6, 0xc6, 0x00, 0x00, 0x06, 0x00, 0x60, 0xc6, 0x00, 0x18, 0x66,
+ 0x00, 0x7c, 0x00, 0x38, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x38, 0x18, 0x7c, 0x7c, 0x0c, 0xfe, 0x3c, 0xfe, 0x7c,
+ 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x66, 0x00,
+ 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+ 0x00, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7e, 0x7e, 0x10, 0x00, 0x3c, 0x3c, 0x00, 0xff, 0x00,
+ 0xff, 0x78, 0x18, 0xe0, 0xe6, 0x18, 0x80, 0x02, 0x00, 0x66, 0x1b,
+ 0xc6, 0xfe, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x81, 0xff, 0x38, 0x10, 0x18, 0x18, 0x00, 0xff, 0x3c, 0xc3,
+ 0xcc, 0x18, 0xf0, 0xe7, 0x18, 0xc0, 0x06, 0x18, 0x66, 0x1b, 0x0c,
+ 0xfe, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x10, 0x00,
+ 0x81, 0xff, 0x7c, 0x38, 0x18, 0x18, 0x18, 0xe7, 0x66, 0x99, 0xcc,
+ 0x7e, 0x70, 0x67, 0xdb, 0xe0, 0x0e, 0x3c, 0x00, 0x1b, 0x38, 0xfe,
+ 0x3c, 0x18, 0x7e, 0x18, 0x30, 0xfe, 0x28, 0xfe, 0x38, 0x00, 0x99,
+ 0xe7, 0xfe, 0x7c, 0xe7, 0x7e, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x18,
+ 0x30, 0x63, 0x3c, 0xf0, 0x1e, 0x7e, 0x66, 0x1b, 0x6c, 0xfe, 0x7e,
+ 0x18, 0x18, 0x0c, 0x60, 0xc0, 0x6c, 0x7c, 0x38, 0x00, 0xbd, 0xc3,
+ 0xfe, 0xfe, 0xe7, 0xff, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x3c, 0x30,
+ 0x63, 0xe7, 0xf8, 0x3e, 0x18, 0x66, 0x1b, 0xc6, 0x00, 0x18, 0x18,
+ 0x18, 0xfe, 0xfe, 0xc0, 0xfe, 0x7c, 0x7c, 0x00, 0x81, 0xff, 0xfe,
+ 0x7c, 0xe7, 0xff, 0x18, 0xe7, 0x66, 0x99, 0x78, 0x66, 0x30, 0x63,
+ 0x3c, 0xfe, 0xfe, 0x18, 0x66, 0x7b, 0xc6, 0x00, 0x18, 0x18, 0x18,
+ 0x0c, 0x60, 0xc0, 0x6c, 0x38, 0x7c, 0x00, 0x81, 0xff, 0xfe, 0x38,
+ 0x3c, 0x7e, 0x00, 0xff, 0x3c, 0xc3, 0x32, 0x66, 0x30, 0x63, 0xdb,
+ 0xf8, 0x3e, 0x18, 0x66, 0xdb, 0x6c, 0x00, 0x18, 0x18, 0x18, 0x18,
+ 0x30, 0x00, 0x28, 0x38, 0xfe, 0x00, 0xa5, 0xdb, 0x6c, 0x10, 0x3c,
+ 0x3c, 0x00, 0xff, 0x00, 0xff, 0x1a, 0x66, 0x3f, 0x7f, 0x18, 0xf0,
+ 0x1e, 0x7e, 0x66, 0xdb, 0x38, 0x00, 0x7e, 0x7e, 0x18, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0xfe, 0x00, 0x81, 0xff, 0x00, 0x00, 0x18, 0x18,
+ 0x00, 0xff, 0x00, 0xff, 0x0e, 0x66, 0x33, 0x63, 0x18, 0xe0, 0x0e,
+ 0x3c, 0x66, 0xdb, 0x60, 0x00, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0xff, 0x1e, 0x3c, 0x3f, 0x7f, 0x00, 0xc0, 0x06, 0x18,
+ 0x66, 0x7f, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+ 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00,
+ 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/deficon.h b/payloads/libpayload/curses/PDCurses/sdl1/deficon.h
new file mode 100644
index 0000000..7248ab5
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/deficon.h
@@ -0,0 +1,23 @@
+/* The PDCurses logo as #include'able BMP (from ../x11/little_icon.xbm) */
+
+unsigned char deficon[] =
+{
+ 0x42, 0x4d, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e,
+ 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x6f, 0x9c,
+ 0xe7, 0xb5, 0xaf, 0x6b, 0x5b, 0xbd, 0xaf, 0xeb, 0xfb, 0xbd, 0xaf,
+ 0x98, 0xe7, 0xbd, 0xaf, 0x7b, 0x5f, 0xb5, 0xa5, 0x6b, 0x5b, 0xcd,
+ 0xab, 0x9c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xcf, 0x03, 0xff, 0xff, 0xce, 0x03, 0xff, 0xff, 0xcc, 0x73,
+ 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc,
+ 0x73, 0xff, 0xff, 0xc6, 0x33, 0xff, 0xff, 0xc3, 0x13, 0xff, 0xff,
+ 0xc1, 0x83, 0xff, 0xff, 0xc8, 0xc3, 0xff, 0xff, 0xcc, 0x63, 0xff,
+ 0xff, 0xce, 0x33, 0xff, 0xff, 0xcf, 0x33, 0xff, 0xff, 0xcf, 0x33,
+ 0xff, 0xff, 0xce, 0x33, 0xff, 0xff, 0xc0, 0x73, 0xff, 0xff, 0xc0,
+ 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff
+};
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdcclip.c b/payloads/libpayload/curses/PDCurses/sdl1/pdcclip.c
new file mode 100644
index 0000000..30cb06c
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdcclip.c
@@ -0,0 +1,128 @@
+/* Public Domain Curses */
+
+#include "pdcsdl.h"
+
+RCSID("$Id: pdcclip.c,v 1.6 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <stdlib.h>
+
+/*man-start**************************************************************
+
+ Name: clipboard
+
+ Synopsis:
+ int PDC_getclipboard(char **contents, long *length);
+ int PDC_setclipboard(const char *contents, long length);
+ int PDC_freeclipboard(char *contents);
+ int PDC_clearclipboard(void);
+
+ Description:
+ PDC_getclipboard() gets the textual contents of the system's
+ clipboard. This function returns the contents of the clipboard
+ in the contents argument. It is the responsibilitiy of the
+ caller to free the memory returned, via PDC_freeclipboard().
+ The length of the clipboard contents is returned in the length
+ argument.
+
+ PDC_setclipboard copies the supplied text into the system's
+ clipboard, emptying the clipboard prior to the copy.
+
+ PDC_clearclipboard() clears the internal clipboard.
+
+ Return Values:
+ indicator of success/failure of call.
+ PDC_CLIP_SUCCESS the call was successful
+ PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
+ the clipboard contents
+ PDC_CLIP_EMPTY the clipboard contains no text
+ PDC_CLIP_ACCESS_ERROR no clipboard support
+
+ Portability X/Open BSD SYS V
+ PDC_getclipboard - - -
+ PDC_setclipboard - - -
+ PDC_freeclipboard - - -
+ PDC_clearclipboard - - -
+
+**man-end****************************************************************/
+
+/* global clipboard contents, should be NULL if none set */
+
+static char *pdc_SDL_clipboard = NULL;
+
+int PDC_getclipboard(char **contents, long *length)
+{
+ int len;
+
+ PDC_LOG(("PDC_getclipboard() - called\n"));
+
+ if (!pdc_SDL_clipboard)
+ return PDC_CLIP_EMPTY;
+
+ len = strlen(pdc_SDL_clipboard);
+ if ((*contents = malloc(len + 1)) == NULL)
+ return PDC_CLIP_MEMORY_ERROR;
+
+ strcpy(*contents, pdc_SDL_clipboard);
+ *length = len;
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_setclipboard(const char *contents, long length)
+{
+ PDC_LOG(("PDC_setclipboard() - called\n"));
+
+ if (pdc_SDL_clipboard)
+ {
+ free(pdc_SDL_clipboard);
+ pdc_SDL_clipboard = NULL;
+ }
+
+ if (contents)
+ {
+ if ((pdc_SDL_clipboard = malloc(length + 1)) == NULL)
+ return PDC_CLIP_MEMORY_ERROR;
+
+ strcpy(pdc_SDL_clipboard, contents);
+ }
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_freeclipboard(char *contents)
+{
+ PDC_LOG(("PDC_freeclipboard() - called\n"));
+
+ /* should we also free empty the system clipboard? probably not */
+
+ if (contents)
+ {
+ /* NOTE: We free the memory, but we can not set caller's pointer
+ to NULL, so if caller calls again then will try to access
+ free'd memory. We 1st overwrite memory with a string so if
+ caller tries to use free memory they won't get what they
+ expect & hopefully notice. */
+
+ /* memset(contents, 0xFD, strlen(contents)); */
+
+ if (strlen(contents) >= strlen("PDCURSES"))
+ strcpy(contents, "PDCURSES");
+
+ free(contents);
+ }
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_clearclipboard(void)
+{
+ PDC_LOG(("PDC_clearclipboard() - called\n"));
+
+ if (pdc_SDL_clipboard)
+ {
+ free(pdc_SDL_clipboard);
+ pdc_SDL_clipboard = NULL;
+ }
+
+ return PDC_CLIP_SUCCESS;
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdcdisp.c b/payloads/libpayload/curses/PDCurses/sdl1/pdcdisp.c
new file mode 100644
index 0000000..fe46335
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdcdisp.c
@@ -0,0 +1,301 @@
+/* Public Domain Curses */
+
+#include "pdcsdl.h"
+
+RCSID("$Id: pdcdisp.c,v 1.35 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef CHTYPE_LONG
+
+# define A(x) ((chtype)x | A_ALTCHARSET)
+
+chtype acs_map[128] =
+{
+ A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9),
+ A(10), A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18),
+ A(19), A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27),
+ A(28), A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&',
+ '\'', '(', ')', '*',
+
+ A(0x1a), A(0x1b), A(0x18), A(0x19),
+
+ '/',
+
+ 0xdb,
+
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
+ '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
+
+ A(0x04), 0xb1,
+
+ 'b', 'c', 'd', 'e',
+
+ 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d,
+ 0x2d, 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3,
+ 0xf2, 0xe3, 0xd8, 0x9c, 0xf9,
+
+ A(127)
+};
+
+# undef A
+
+#endif
+
+Uint32 pdc_lastupdate = 0;
+
+#define MAXRECT 200 /* maximum number of rects to queue up before
+ an update is forced; the number was chosen
+ arbitrarily */
+
+static SDL_Rect uprect[MAXRECT]; /* table of rects to update */
+static chtype oldch = (chtype)(-1); /* current attribute */
+static int rectcount = 0; /* index into uprect */
+static short foregr = -2, backgr = -2; /* current foreground, background */
+
+/* do the real updates on a delay */
+
+void PDC_update_rects(void)
+{
+ if (rectcount)
+ {
+ /* if the maximum number of rects has been reached, we're
+ probably better off doing a full screen update */
+
+ if (rectcount == MAXRECT)
+ SDL_Flip(pdc_screen);
+ else
+ SDL_UpdateRects(pdc_screen, rectcount, uprect);
+
+ pdc_lastupdate = SDL_GetTicks();
+ rectcount = 0;
+ }
+}
+
+/* set the font colors to match the chtype's attribute */
+
+static void _set_attr(chtype ch)
+{
+ ch &= (A_COLOR|A_BOLD|A_BLINK|A_REVERSE);
+
+ if (oldch != ch)
+ {
+ short newfg, newbg;
+
+ if (SP->mono)
+ return;
+
+ PDC_pair_content(PAIR_NUMBER(ch), &newfg, &newbg);
+
+ newfg |= (ch & A_BOLD) ? 8 : 0;
+ newbg |= (ch & A_BLINK) ? 8 : 0;
+
+ if (ch & A_REVERSE)
+ {
+ short tmp = newfg;
+ newfg = newbg;
+ newbg = tmp;
+ }
+
+ if (newfg != foregr)
+ {
+ SDL_SetPalette(pdc_font, SDL_LOGPAL,
+ pdc_color + newfg, pdc_flastc, 1);
+ foregr = newfg;
+ }
+
+ if (newbg != backgr)
+ {
+ if (newbg == -1)
+ SDL_SetColorKey(pdc_font, SDL_SRCCOLORKEY, 0);
+ else
+ {
+ if (backgr == -1)
+ SDL_SetColorKey(pdc_font, 0, 0);
+
+ SDL_SetPalette(pdc_font, SDL_LOGPAL,
+ pdc_color + newbg, 0, 1);
+ }
+
+ backgr = newbg;
+ }
+
+ oldch = ch;
+ }
+}
+
+/* draw a cursor at (y, x) */
+
+void PDC_gotoyx(int row, int col)
+{
+ SDL_Rect src, dest;
+ chtype ch;
+ int oldrow, oldcol;
+
+ PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n",
+ row, col, SP->cursrow, SP->curscol));
+
+ if (SP->mono)
+ return;
+
+ oldrow = SP->cursrow;
+ oldcol = SP->curscol;
+
+ /* clear the old cursor */
+
+ PDC_transform_line(oldrow, oldcol, 1, curscr->_y[oldrow] + oldcol);
+
+ if (!SP->visibility)
+ return;
+
+ /* draw a new cursor by overprinting the existing character in
+ reverse, either the full cell (when visibility == 2) or the
+ lowest quarter of it (when visibility == 1) */
+
+ ch = curscr->_y[row][col] ^ A_REVERSE;
+
+ _set_attr(ch);
+
+#ifdef CHTYPE_LONG
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
+ ch = acs_map[ch & 0x7f];
+#endif
+ src.h = (SP->visibility == 1) ? pdc_fheight >> 2 : pdc_fheight;
+ src.w = pdc_fwidth;
+
+ dest.y = (row + 1) * pdc_fheight - src.h + pdc_yoffset;
+ dest.x = col * pdc_fwidth + pdc_xoffset;
+
+ src.x = (ch & 0xff) % 32 * pdc_fwidth;
+ src.y = (ch & 0xff) / 32 * pdc_fheight + (pdc_fheight - src.h);
+
+ SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest);
+
+ if (oldrow != row || oldcol != col)
+ {
+ if (rectcount == MAXRECT)
+ PDC_update_rects();
+
+ uprect[rectcount++] = dest;
+ }
+}
+
+/* handle the A_*LINE attributes */
+
+static void _highlight(SDL_Rect *src, SDL_Rect *dest, chtype ch)
+{
+ short col = SP->line_color;
+
+ if (SP->mono)
+ return;
+
+ if (ch & A_UNDERLINE)
+ {
+ if (col != -1)
+ SDL_SetPalette(pdc_font, SDL_LOGPAL,
+ pdc_color + col, pdc_flastc, 1);
+
+ src->x = '_' % 32 * pdc_fwidth;
+ src->y = '_' / 32 * pdc_fheight;
+
+ if (backgr != -1)
+ SDL_SetColorKey(pdc_font, SDL_SRCCOLORKEY, 0);
+
+ SDL_BlitSurface(pdc_font, src, pdc_screen, dest);
+
+ if (backgr != -1)
+ SDL_SetColorKey(pdc_font, 0, 0);
+
+ if (col != -1)
+ SDL_SetPalette(pdc_font, SDL_LOGPAL,
+ pdc_color + foregr, pdc_flastc, 1);
+ }
+
+ if (ch & (A_LEFTLINE|A_RIGHTLINE))
+ {
+ if (col == -1)
+ col = foregr;
+
+ dest->w = 1;
+
+ if (ch & A_LEFTLINE)
+ SDL_FillRect(pdc_screen, dest, pdc_mapped[col]);
+
+ if (ch & A_RIGHTLINE)
+ {
+ dest->x += pdc_fwidth - 1;
+ SDL_FillRect(pdc_screen, dest, pdc_mapped[col]);
+ dest->x -= pdc_fwidth - 1;
+ }
+
+ dest->w = pdc_fwidth;
+ }
+}
+
+/* update the given physical line to look like the corresponding line in
+ curscr */
+
+void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
+{
+ SDL_Rect src, dest, lastrect;
+ int j;
+
+ PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno));
+
+ if (rectcount == MAXRECT)
+ PDC_update_rects();
+
+ src.h = pdc_fheight;
+ src.w = pdc_fwidth;
+
+ dest.y = pdc_fheight * lineno + pdc_yoffset;
+ dest.x = pdc_fwidth * x + pdc_xoffset;
+ dest.h = pdc_fheight;
+ dest.w = pdc_fwidth * len;
+
+ /* if the previous rect was just above this one, with the same width
+ and horizontal position, then merge the new one with it instead
+ of adding a new entry */
+
+ if (rectcount)
+ lastrect = uprect[rectcount - 1];
+
+ if (rectcount && lastrect.x == dest.x && lastrect.w == dest.w)
+ {
+ if (lastrect.y + lastrect.h == dest.y)
+ uprect[rectcount - 1].h = lastrect.h + pdc_fheight;
+ else
+ if (lastrect.y != dest.y)
+ uprect[rectcount++] = dest;
+ }
+ else
+ uprect[rectcount++] = dest;
+
+ dest.w = pdc_fwidth;
+
+ for (j = 0; j < len; j++)
+ {
+ chtype ch = srcp[j];
+
+ _set_attr(ch);
+#ifdef CHTYPE_LONG
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
+ ch = (ch & (A_ATTRIBUTES ^ A_ALTCHARSET)) | acs_map[ch & 0x7f];
+#endif
+ if (backgr == -1)
+ SDL_LowerBlit(pdc_tileback, &dest, pdc_screen, &dest);
+
+ src.x = (ch & 0xff) % 32 * pdc_fwidth;
+ src.y = (ch & 0xff) / 32 * pdc_fheight;
+
+ SDL_LowerBlit(pdc_font, &src, pdc_screen, &dest);
+
+ if (ch & (A_UNDERLINE|A_LEFTLINE|A_RIGHTLINE))
+ _highlight(&src, &dest, ch);
+
+ dest.x += pdc_fwidth;
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdcgetsc.c b/payloads/libpayload/curses/PDCurses/sdl1/pdcgetsc.c
new file mode 100644
index 0000000..4319235
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdcgetsc.c
@@ -0,0 +1,32 @@
+/* Public Domain Curses */
+
+#include "pdcsdl.h"
+
+RCSID("$Id: pdcgetsc.c,v 1.8 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/* get the cursor size/shape */
+
+int PDC_get_cursor_mode(void)
+{
+ PDC_LOG(("PDC_get_cursor_mode() - called\n"));
+
+ return 0;
+}
+
+/* return number of screen rows */
+
+int PDC_get_rows(void)
+{
+ PDC_LOG(("PDC_get_rows() - called\n"));
+
+ return pdc_sheight / pdc_fheight;
+}
+
+/* return width of screen/viewport */
+
+int PDC_get_columns(void)
+{
+ PDC_LOG(("PDC_get_columns() - called\n"));
+
+ return pdc_swidth / pdc_fwidth;
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdckbd.c b/payloads/libpayload/curses/PDCurses/sdl1/pdckbd.c
new file mode 100644
index 0000000..f82acd9
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdckbd.c
@@ -0,0 +1,389 @@
+/* Public Domain Curses */
+
+#include "pdcsdl.h"
+
+RCSID("$Id: pdckbd.c,v 1.20 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdckbd
+
+ Synopsis:
+ unsigned long PDC_get_input_fd(void);
+
+ Description:
+ PDC_get_input_fd() returns the file descriptor that PDCurses
+ reads its input from. It can be used for select().
+
+ Portability X/Open BSD SYS V
+ PDC_get_input_fd - - -
+
+**man-end****************************************************************/
+
+#include <string.h>
+
+unsigned long pdc_key_modifiers = 0L;
+
+static SDL_Event event;
+static SDLKey oldkey;
+static MOUSE_STATUS old_mouse_status;
+
+static struct
+{
+ SDLKey keycode;
+ bool numkeypad;
+ unsigned short normal;
+ unsigned short shifted;
+ unsigned short control;
+ unsigned short alt;
+} key_table[] =
+{
+/* keycode keypad normal shifted control alt*/
+ {SDLK_LEFT, FALSE, KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT},
+ {SDLK_RIGHT, FALSE, KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT},
+ {SDLK_UP, FALSE, KEY_UP, KEY_SUP, CTL_UP, ALT_UP},
+ {SDLK_DOWN, FALSE, KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN},
+ {SDLK_HOME, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME},
+ {SDLK_END, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END},
+ {SDLK_PAGEUP, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP},
+ {SDLK_PAGEDOWN,FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN},
+ {SDLK_INSERT, FALSE, KEY_IC, KEY_SIC, CTL_INS, ALT_INS},
+ {SDLK_DELETE, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL},
+ {SDLK_F1, FALSE, KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37)},
+ {SDLK_F2, FALSE, KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38)},
+ {SDLK_F3, FALSE, KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39)},
+ {SDLK_F4, FALSE, KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40)},
+ {SDLK_F5, FALSE, KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41)},
+ {SDLK_F6, FALSE, KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42)},
+ {SDLK_F7, FALSE, KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43)},
+ {SDLK_F8, FALSE, KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44)},
+ {SDLK_F9, FALSE, KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45)},
+ {SDLK_F10, FALSE, KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46)},
+ {SDLK_F11, FALSE, KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47)},
+ {SDLK_F12, FALSE, KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48)},
+ {SDLK_F13, FALSE, KEY_F(13), KEY_F(25), KEY_F(37), KEY_F(49)},
+ {SDLK_F14, FALSE, KEY_F(14), KEY_F(26), KEY_F(38), KEY_F(50)},
+ {SDLK_F15, FALSE, KEY_F(15), KEY_F(27), KEY_F(39), KEY_F(51)},
+ {SDLK_BACKSPACE,FALSE, 0x08, 0x08, CTL_BKSP, ALT_BKSP},
+ {SDLK_TAB, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB},
+ {SDLK_PRINT, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT},
+ {SDLK_PAUSE, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND},
+ {SDLK_CLEAR, FALSE, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR},
+ {SDLK_BREAK, FALSE, KEY_BREAK, KEY_BREAK, KEY_BREAK, KEY_BREAK},
+ {SDLK_HELP, FALSE, KEY_HELP, KEY_SHELP, KEY_LHELP, KEY_HELP},
+ {SDLK_MENU, FALSE, KEY_OPTIONS, KEY_SOPTIONS, KEY_OPTIONS, KEY_OPTIONS},
+ {SDLK_ESCAPE, FALSE, 0x1B, 0x1B, 0x1B, ALT_ESC},
+ {SDLK_KP_ENTER,TRUE, PADENTER, PADENTER, CTL_PADENTER,ALT_PADENTER},
+ {SDLK_KP_PLUS, TRUE, PADPLUS, '+', CTL_PADPLUS, ALT_PADPLUS},
+ {SDLK_KP_MINUS,TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS},
+ {SDLK_KP_MULTIPLY,TRUE,PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
+ {SDLK_KP_DIVIDE,TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
+ {SDLK_KP_PERIOD,TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP},
+ {SDLK_KP0, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0},
+ {SDLK_KP1, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1},
+ {SDLK_KP2, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2},
+ {SDLK_KP3, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
+ {SDLK_KP4, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4},
+ {SDLK_KP5, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
+ {SDLK_KP6, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6},
+ {SDLK_KP7, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
+ {SDLK_KP8, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8},
+ {SDLK_KP9, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
+ {0, 0, 0, 0, 0, 0}
+};
+
+unsigned long PDC_get_input_fd(void)
+{
+ PDC_LOG(("PDC_get_input_fd() - called\n"));
+
+ return 0L; /* test this */
+}
+
+void PDC_set_keyboard_binary(bool on)
+{
+ PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
+}
+
+/* check if a key or mouse event is waiting */
+
+bool PDC_check_key(void)
+{
+ Uint32 current = SDL_GetTicks();
+ int haveevent = SDL_PollEvent(&event);
+
+ /* if we have an event, or 30 ms have passed without a screen
+ update, or the timer has wrapped, update now */
+
+ if (haveevent ||
+ current < pdc_lastupdate || ((current - pdc_lastupdate) > 30))
+ PDC_update_rects();
+
+ return haveevent;
+}
+
+static int _process_key_event(void)
+{
+ int i, key = 0;
+
+ pdc_key_modifiers = 0L;
+ SP->key_code = FALSE;
+
+ if (event.type == SDL_KEYUP)
+ {
+ if (SP->return_key_modifiers && event.key.keysym.sym == oldkey)
+ {
+ switch (oldkey)
+ {
+ case SDLK_RSHIFT:
+ return KEY_SHIFT_R;
+ case SDLK_LSHIFT:
+ return KEY_SHIFT_L;
+ case SDLK_RCTRL:
+ return KEY_CONTROL_R;
+ case SDLK_LCTRL:
+ return KEY_CONTROL_L;
+ case SDLK_RALT:
+ return KEY_ALT_R;
+ case SDLK_LALT:
+ return KEY_ALT_L;
+ default:
+ break;
+ }
+ }
+
+ return -1;
+ }
+
+ oldkey = event.key.keysym.sym;
+
+ if (SP->save_key_modifiers)
+ {
+ if (event.key.keysym.mod & KMOD_NUM)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
+
+ if (event.key.keysym.mod & KMOD_SHIFT)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
+
+ if (event.key.keysym.mod & KMOD_CTRL)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
+
+ if (event.key.keysym.mod & KMOD_ALT)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
+ }
+
+ for (i = 0; key_table[i].keycode; i++)
+ {
+ if (key_table[i].keycode == event.key.keysym.sym)
+ {
+ if ((event.key.keysym.mod & KMOD_SHIFT) ||
+ (key_table[i].numkeypad && (event.key.keysym.mod & KMOD_NUM)))
+ {
+ key = key_table[i].shifted;
+ }
+ else if (event.key.keysym.mod & KMOD_CTRL)
+ {
+ key = key_table[i].control;
+ }
+ else if (event.key.keysym.mod & KMOD_ALT)
+ {
+ key = key_table[i].alt;
+ }
+
+ /* To get here, we ignore all other modifiers */
+
+ else
+ key = key_table[i].normal;
+
+ SP->key_code = (key > 0x100);
+ break;
+ }
+ }
+
+ if (!key)
+ {
+ key = event.key.keysym.unicode;
+
+ if (key > 0x7f)
+ key = 0;
+ }
+
+ /* Handle ALT letters and numbers */
+
+ if (event.key.keysym.mod & KMOD_ALT)
+ {
+ if (key >= 'A' && key <= 'Z')
+ {
+ key += ALT_A - 'A';
+ SP->key_code = TRUE;
+ }
+
+ if (key >= 'a' && key <= 'z')
+ {
+ key += ALT_A - 'a';
+ SP->key_code = TRUE;
+ }
+
+ if (key >= '0' && key <= '9')
+ {
+ key += ALT_0 - '0';
+ SP->key_code = TRUE;
+ }
+ }
+
+ return key ? key : -1;
+}
+
+static int _process_mouse_event(void)
+{
+ SDLMod keymods;
+ short shift_flags = 0;
+
+ memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS));
+
+ keymods = SDL_GetModState();
+
+ if (keymods & KMOD_SHIFT)
+ shift_flags |= BUTTON_SHIFT;
+
+ if (keymods & KMOD_CTRL)
+ shift_flags |= BUTTON_CONTROL;
+
+ if (keymods & KMOD_ALT)
+ shift_flags |= BUTTON_ALT;
+
+ if (event.type == SDL_MOUSEMOTION)
+ {
+ int i;
+
+ pdc_mouse_status.x = event.motion.x / pdc_fwidth;
+ pdc_mouse_status.y = event.motion.y / pdc_fheight;
+
+ if (!event.motion.state ||
+ (pdc_mouse_status.x == old_mouse_status.x &&
+ pdc_mouse_status.y == old_mouse_status.y))
+ return -1;
+
+ pdc_mouse_status.changes = PDC_MOUSE_MOVED;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (event.motion.state & SDL_BUTTON(i + 1))
+ {
+ pdc_mouse_status.button[i] = BUTTON_MOVED | shift_flags;
+ pdc_mouse_status.changes |= (1 << i);
+ }
+ }
+ }
+ else
+ {
+ short action = (event.button.state == SDL_PRESSED) ?
+ BUTTON_PRESSED : BUTTON_RELEASED;
+ Uint8 btn = event.button.button;
+
+ /* handle scroll wheel */
+
+ if ((btn == 4 || btn == 5) && action == BUTTON_RELEASED)
+ {
+ pdc_mouse_status.x = pdc_mouse_status.y = -1;
+
+ pdc_mouse_status.changes = (btn == 5) ?
+ PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP;
+
+ return KEY_MOUSE;
+ }
+
+ if (btn < 1 || btn > 3)
+ return -1;
+
+ /* check for a click -- a press followed immediately by a release */
+
+ if (action == BUTTON_PRESSED && SP->mouse_wait)
+ {
+ SDL_Event rel;
+
+ napms(SP->mouse_wait);
+
+ if (SDL_PollEvent(&rel))
+ {
+ if (rel.type == SDL_MOUSEBUTTONUP && rel.button.button == btn)
+ action = BUTTON_CLICKED;
+ else
+ SDL_PushEvent(&rel);
+ }
+ }
+
+ pdc_mouse_status.x = event.button.x / pdc_fwidth;
+ pdc_mouse_status.y = event.button.y / pdc_fheight;
+
+ btn--;
+
+ pdc_mouse_status.button[btn] = action | shift_flags;
+ pdc_mouse_status.changes = (1 << btn);
+ }
+
+ old_mouse_status = pdc_mouse_status;
+
+ return KEY_MOUSE;
+}
+
+/* return the next available key or mouse event */
+
+int PDC_get_key(void)
+{
+ switch (event.type)
+ {
+ case SDL_QUIT:
+ exit(1);
+ case SDL_VIDEORESIZE:
+ if (pdc_own_screen &&
+ (event.resize.h / pdc_fheight != LINES ||
+ event.resize.w / pdc_fwidth != COLS))
+ {
+ pdc_sheight = event.resize.h;
+ pdc_swidth = event.resize.w;
+
+ if (!SP->resized)
+ {
+ SP->resized = TRUE;
+ return KEY_RESIZE;
+ }
+ }
+ break;
+ case SDL_MOUSEMOTION:
+ SDL_ShowCursor(SDL_ENABLE);
+ case SDL_MOUSEBUTTONUP:
+ case SDL_MOUSEBUTTONDOWN:
+ oldkey = SDLK_SPACE;
+ if (SP->_trap_mbe)
+ return _process_mouse_event();
+ break;
+ case SDL_KEYUP:
+ case SDL_KEYDOWN:
+ PDC_mouse_set();
+ return _process_key_event();
+ }
+
+ return -1;
+}
+
+/* discard any pending keyboard or mouse input -- this is the core
+ routine for flushinp() */
+
+void PDC_flushinp(void)
+{
+ PDC_LOG(("PDC_flushinp() - called\n"));
+
+ while (PDC_check_key());
+}
+
+int PDC_mouse_set(void)
+{
+ SDL_ShowCursor(SP->_trap_mbe ? SDL_ENABLE : SDL_DISABLE);
+
+ return OK;
+}
+
+int PDC_modifiers_set(void)
+{
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdcscrn.c b/payloads/libpayload/curses/PDCurses/sdl1/pdcscrn.c
new file mode 100644
index 0000000..e422b25
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdcscrn.c
@@ -0,0 +1,295 @@
+/* Public Domain Curses */
+
+#include "pdcsdl.h"
+
+RCSID("$Id: pdcscrn.c,v 1.34 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <stdlib.h>
+#include "deffont.h"
+#include "deficon.h"
+
+SDL_Surface *pdc_screen = NULL, *pdc_font = NULL, *pdc_icon = NULL,
+ *pdc_back = NULL, *pdc_tileback = NULL;
+int pdc_sheight = 0, pdc_swidth = 0, pdc_yoffset = 0, pdc_xoffset = 0;
+
+SDL_Color pdc_color[16];
+Uint32 pdc_mapped[16];
+int pdc_fheight, pdc_fwidth, pdc_flastc;
+bool pdc_own_screen;
+
+/* COLOR_PAIR to attribute encoding table. */
+
+static struct {short f, b;} atrtab[PDC_COLOR_PAIRS];
+
+void PDC_retile(void)
+{
+ if (pdc_tileback)
+ SDL_FreeSurface(pdc_tileback);
+
+ pdc_tileback = SDL_DisplayFormat(pdc_screen);
+
+ if (pdc_back)
+ {
+ SDL_Rect dest;
+
+ dest.y = 0;
+
+ while (dest.y < pdc_tileback->h)
+ {
+ dest.x = 0;
+
+ while (dest.x < pdc_tileback->w)
+ {
+ SDL_BlitSurface(pdc_back, 0, pdc_tileback, &dest);
+ dest.x += pdc_back->w;
+ }
+
+ dest.y += pdc_back->h;
+ }
+
+ SDL_BlitSurface(pdc_tileback, 0, pdc_screen, 0);
+ }
+}
+
+void PDC_scr_close(void)
+{
+ PDC_LOG(("PDC_scr_close() - called\n"));
+}
+
+void PDC_scr_free(void)
+{
+ if (SP)
+ free(SP);
+}
+
+/* open the physical screen -- allocate SP, miscellaneous intialization */
+
+int PDC_scr_open(int argc, char **argv)
+{
+ int i;
+
+ PDC_LOG(("PDC_scr_open() - called\n"));
+
+ SP = calloc(1, sizeof(SCREEN));
+
+ if (!SP)
+ return ERR;
+
+ pdc_own_screen = !pdc_screen;
+
+ if (pdc_own_screen)
+ {
+ if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) < 0)
+ {
+ fprintf(stderr, "Could not start SDL: %s\n", SDL_GetError());
+ return ERR;
+ }
+
+ atexit(SDL_Quit);
+ }
+
+ if (!pdc_font)
+ {
+ const char *fname = getenv("PDC_FONT");
+ pdc_font = SDL_LoadBMP(fname ? fname : "pdcfont.bmp");
+ }
+
+ if (!pdc_font)
+ pdc_font = SDL_LoadBMP_RW(SDL_RWFromMem(deffont, sizeof(deffont)), 0);
+
+ if (!pdc_font)
+ {
+ fprintf(stderr, "Could not load font\n");
+ return ERR;
+ }
+
+ SP->mono = !pdc_font->format->palette;
+
+ if (!SP->mono && !pdc_back)
+ {
+ const char *bname = getenv("PDC_BACKGROUND");
+ pdc_back = SDL_LoadBMP(bname ? bname : "pdcback.bmp");
+ }
+
+ if (!SP->mono && (pdc_back || !pdc_own_screen))
+ {
+ SP->orig_attr = TRUE;
+ SP->orig_fore = COLOR_WHITE;
+ SP->orig_back = -1;
+ }
+ else
+ SP->orig_attr = FALSE;
+
+ pdc_fheight = pdc_font->h / 8;
+ pdc_fwidth = pdc_font->w / 32;
+
+ if (!SP->mono)
+ pdc_flastc = pdc_font->format->palette->ncolors - 1;
+
+ if (pdc_own_screen && !pdc_icon)
+ {
+ const char *iname = getenv("PDC_ICON");
+ pdc_icon = SDL_LoadBMP(iname ? iname : "pdcicon.bmp");
+
+ if (!pdc_icon)
+ pdc_icon = SDL_LoadBMP_RW(SDL_RWFromMem(deficon,
+ sizeof(deficon)), 0);
+
+ if (pdc_icon)
+ SDL_WM_SetIcon(pdc_icon, NULL);
+ }
+
+ if (pdc_own_screen)
+ {
+ const char *env = getenv("PDC_LINES");
+ pdc_sheight = (env ? atoi(env) : 25) * pdc_fheight;
+
+ env = getenv("PDC_COLS");
+ pdc_swidth = (env ? atoi(env) : 80) * pdc_fwidth;
+
+ pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0,
+ SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE);
+ }
+ else
+ {
+ if (!pdc_sheight)
+ pdc_sheight = pdc_screen->h - pdc_yoffset;
+
+ if (!pdc_swidth)
+ pdc_swidth = pdc_screen->w - pdc_xoffset;
+ }
+
+ if (!pdc_screen)
+ {
+ fprintf(stderr, "Couldn't create a surface: %s\n", SDL_GetError());
+ return ERR;
+ }
+
+ if (SP->orig_attr)
+ PDC_retile();
+
+ for (i = 0; i < 8; i++)
+ {
+ pdc_color[i].r = (i & COLOR_RED) ? 0xc0 : 0;
+ pdc_color[i].g = (i & COLOR_GREEN) ? 0xc0 : 0;
+ pdc_color[i].b = (i & COLOR_BLUE) ? 0xc0 : 0;
+
+ pdc_color[i + 8].r = (i & COLOR_RED) ? 0xff : 0x40;
+ pdc_color[i + 8].g = (i & COLOR_GREEN) ? 0xff : 0x40;
+ pdc_color[i + 8].b = (i & COLOR_BLUE) ? 0xff : 0x40;
+ }
+
+ for (i = 0; i < 16; i++)
+ pdc_mapped[i] = SDL_MapRGB(pdc_screen->format, pdc_color[i].r,
+ pdc_color[i].g, pdc_color[i].b);
+
+ SDL_EnableUNICODE(1);
+
+ PDC_mouse_set();
+
+ if (pdc_own_screen)
+ PDC_set_title(argc ? argv[0] : "PDCurses");
+
+ SP->lines = PDC_get_rows();
+ SP->cols = PDC_get_columns();
+
+ SP->mouse_wait = PDC_CLICK_PERIOD;
+ SP->audible = FALSE;
+
+ PDC_reset_prog_mode();
+
+ return OK;
+}
+
+/* the core of resize_term() */
+
+int PDC_resize_screen(int nlines, int ncols)
+{
+ if (!pdc_own_screen)
+ return ERR;
+
+ if (nlines && ncols)
+ {
+ pdc_sheight = nlines * pdc_fheight;
+ pdc_swidth = ncols * pdc_fwidth;
+ }
+
+ SDL_FreeSurface(pdc_screen);
+
+ pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0,
+ SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE);
+
+ if (pdc_tileback)
+ PDC_retile();
+
+ SP->resized = FALSE;
+ SP->cursrow = SP->curscol = 0;
+
+ return OK;
+}
+
+void PDC_reset_prog_mode(void)
+{
+ PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
+
+ PDC_flushinp();
+ SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
+}
+
+void PDC_reset_shell_mode(void)
+{
+ PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
+
+ SDL_EnableKeyRepeat(0, 0);
+ PDC_flushinp();
+}
+
+void PDC_restore_screen_mode(int i)
+{
+}
+
+void PDC_save_screen_mode(int i)
+{
+}
+
+void PDC_init_pair(short pair, short fg, short bg)
+{
+ atrtab[pair].f = fg;
+ atrtab[pair].b = bg;
+}
+
+int PDC_pair_content(short pair, short *fg, short *bg)
+{
+ *fg = atrtab[pair].f;
+ *bg = atrtab[pair].b;
+
+ return OK;
+}
+
+bool PDC_can_change_color(void)
+{
+ return TRUE;
+}
+
+int PDC_color_content(short color, short *red, short *green, short *blue)
+{
+ *red = DIVROUND(pdc_color[color].r * 1000, 255);
+ *green = DIVROUND(pdc_color[color].g * 1000, 255);
+ *blue = DIVROUND(pdc_color[color].b * 1000, 255);
+
+ return OK;
+}
+
+int PDC_init_color(short color, short red, short green, short blue)
+{
+ pdc_color[color].r = DIVROUND(red * 255, 1000);
+ pdc_color[color].g = DIVROUND(green * 255, 1000);
+ pdc_color[color].b = DIVROUND(blue * 255, 1000);
+
+ pdc_mapped[color] = SDL_MapRGB(pdc_screen->format, pdc_color[color].r,
+ pdc_color[color].g, pdc_color[color].b);
+
+ wrefresh(curscr);
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdcsdl.h b/payloads/libpayload/curses/PDCurses/sdl1/pdcsdl.h
new file mode 100644
index 0000000..79df21a
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdcsdl.h
@@ -0,0 +1,26 @@
+/* Public Domain Curses */
+
+/* $Id: pdcsdl.h,v 1.17 2008/07/14 04:24:52 wmcbrine Exp $ */
+
+#include <curspriv.h>
+
+#include <SDL/SDL.h>
+
+PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back;
+PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset;
+
+extern SDL_Surface *pdc_tileback; /* used to regenerate the background
+ of "transparent" cells */
+extern SDL_Color pdc_color[16]; /* colors for font palette */
+extern Uint32 pdc_mapped[16]; /* colors for FillRect(), as
+ used in _highlight() */
+extern int pdc_fheight, pdc_fwidth; /* font height and width */
+extern int pdc_flastc; /* font palette's last color
+ (treated as the foreground) */
+extern bool pdc_own_screen; /* if pdc_screen was not set
+ before initscr(), PDCurses is
+ responsible for (owns) it */
+extern Uint32 pdc_lastupdate; /* time of last update, in ticks */
+
+void PDC_update_rects(void);
+void PDC_retile(void);
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdcsetsc.c b/payloads/libpayload/curses/PDCurses/sdl1/pdcsetsc.c
new file mode 100644
index 0000000..6794354
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdcsetsc.c
@@ -0,0 +1,62 @@
+/* Public Domain Curses */
+
+#include "pdcsdl.h"
+
+RCSID("$Id: pdcsetsc.c,v 1.7 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdcsetsc
+
+ Synopsis:
+ int PDC_set_blink(bool blinkon);
+ void PDC_set_title(const char *title);
+
+ Description:
+ PDC_set_blink() toggles whether the A_BLINK attribute sets an
+ actual blink mode (TRUE), or sets the background color to high
+ intensity (FALSE). The default is platform-dependent (FALSE in
+ most cases). It returns OK if it could set the state to match
+ the given parameter, ERR otherwise. Current platforms also
+ adjust the value of COLORS according to this function -- 16 for
+ FALSE, and 8 for TRUE.
+
+ PDC_set_title() sets the title of the window in which the curses
+ program is running. This function may not do anything on some
+ platforms. (Currently it only works in Win32 and X11.)
+
+ Portability X/Open BSD SYS V
+ PDC_set_blink - - -
+ PDC_set_title - - -
+
+**man-end****************************************************************/
+
+int PDC_curs_set(int visibility)
+{
+ int ret_vis;
+
+ PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
+
+ ret_vis = SP->visibility;
+
+ SP->visibility = visibility;
+
+ PDC_gotoyx(SP->cursrow, SP->curscol);
+
+ return ret_vis;
+}
+
+void PDC_set_title(const char *title)
+{
+ PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
+
+ SDL_WM_SetCaption(title, title);
+}
+
+int PDC_set_blink(bool blinkon)
+{
+ if (pdc_color_started)
+ COLORS = 16;
+
+ return blinkon ? ERR : OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/pdcutil.c b/payloads/libpayload/curses/PDCurses/sdl1/pdcutil.c
new file mode 100644
index 0000000..b2d8404
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/pdcutil.c
@@ -0,0 +1,23 @@
+/* Public Domain Curses */
+
+#include "pdcsdl.h"
+
+RCSID("$Id: pdcutil.c,v 1.6 2008/07/14 04:24:52 wmcbrine Exp $")
+
+void PDC_beep(void)
+{
+ PDC_LOG(("PDC_beep() - called\n"));
+}
+
+void PDC_napms(int ms)
+{
+ PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
+
+ PDC_update_rects();
+ SDL_Delay(ms);
+}
+
+const char *PDC_sysname(void)
+{
+ return "SDL";
+}
diff --git a/payloads/libpayload/curses/PDCurses/sdl1/sdltest.c b/payloads/libpayload/curses/PDCurses/sdl1/sdltest.c
new file mode 100644
index 0000000..840d15a
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/sdl1/sdltest.c
@@ -0,0 +1,81 @@
+/* Here's a simple example of combining SDL and PDCurses functionality.
+ The top portion of the window is devoted to SDL, with a four-line
+ (assuming the default 8x16 font) stdscr at the bottom.
+
+ $Id: sdltest.c,v 1.2 2008/07/14 04:24:52 wmcbrine Exp $
+*/
+
+#include <SDL/SDL.h>
+#include <curses.h>
+#include <stdlib.h>
+#include <time.h>
+
+/* You could #include pdcsdl.h, or just add the relevant declarations
+ here: */
+
+PDCEX SDL_Surface *pdc_screen;
+PDCEX int pdc_yoffset;
+
+int main(int argc, char **argv)
+{
+ char inp[60];
+ int i, j, seed;
+
+ seed = time((time_t *)0);
+ srand(seed);
+
+ /* Initialize SDL */
+
+ if (SDL_Init(SDL_INIT_VIDEO) < 0)
+ exit(1);
+
+ atexit(SDL_Quit);
+
+ pdc_screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE|SDL_ANYFORMAT);
+
+ /* Initialize PDCurses */
+
+ pdc_yoffset = 416; /* 480 - 4 * 16 */
+
+ initscr();
+ start_color();
+ scrollok(stdscr, TRUE);
+
+ PDC_set_title("PDCurses for SDL");
+
+ /* Do some SDL stuff */
+
+ for (i = 640, j = 416; j; i -= 2, j -= 2)
+ {
+ SDL_Rect dest;
+
+ dest.x = (640 - i) / 2;
+ dest.y = (416 - j) / 2;
+ dest.w = i;
+ dest.h = j;
+
+ SDL_FillRect(pdc_screen, &dest,
+ SDL_MapRGB(pdc_screen->format, rand() % 256,
+ rand() % 256, rand() % 256));
+ }
+
+ SDL_UpdateRect(pdc_screen, 0, 0, 640, 416);
+
+ /* Do some curses stuff */
+
+ init_pair(1, COLOR_WHITE + 8, COLOR_BLUE);
+ bkgd(COLOR_PAIR(1));
+
+ addstr("This is a demo of ");
+ attron(A_UNDERLINE);
+ addstr("PDCurses for SDL");
+ attroff(A_UNDERLINE);
+ addstr(".\nYour comments here: ");
+ getnstr(inp, 59);
+ addstr("Press any key to exit.");
+
+ getch();
+ endwin();
+
+ return 0;
+}
diff --git a/payloads/libpayload/curses/PDCurses/term.h b/payloads/libpayload/curses/PDCurses/term.h
new file mode 100644
index 0000000..caacbdf
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/term.h
@@ -0,0 +1,57 @@
+/* Public Domain Curses */
+
+/* $Id: term.h,v 1.16 2008/07/13 16:08:16 wmcbrine Exp $ */
+
+/* PDCurses doesn't operate with terminfo, but we need these functions for
+ compatibility, to allow some things (notably, interface libraries for
+ other languages) to be compiled. Anyone who tries to actually _use_
+ them will be disappointed, since they only return ERR. */
+
+#ifndef __PDCURSES_TERM_H__
+#define __PDCURSES_TERM_H__ 1
+
+#include <curses.h>
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+extern "C"
+{
+#endif
+
+typedef struct
+{
+ const char *_termname;
+} TERMINAL;
+
+#ifdef PDC_DLL_BUILD
+# ifndef CURSES_LIBRARY
+__declspec(dllimport) TERMINAL *cur_term;
+# else
+__declspec(dllexport) extern TERMINAL *cur_term;
+# endif
+#else
+extern TERMINAL *cur_term;
+#endif
+
+int del_curterm(TERMINAL *);
+int putp(const char *);
+int restartterm(const char *, int, int *);
+TERMINAL *set_curterm(TERMINAL *);
+int setterm(const char *);
+int setupterm(const char *, int, int *);
+int tgetent(char *, const char *);
+int tgetflag(const char *);
+int tgetnum(const char *);
+char *tgetstr(const char *, char **);
+char *tgoto(const char *, int, int);
+int tigetflag(const char *);
+int tigetnum(const char *);
+char *tigetstr(const char *);
+char *tparm(const char *, long, long, long, long, long,
+ long, long, long, long);
+int tputs(const char *, int, int (*)(int));
+
+#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
+}
+#endif
+
+#endif /* __PDCURSES_TERM_H__ */
diff --git a/payloads/libpayload/curses/PDCurses/version.mif b/payloads/libpayload/curses/PDCurses/version.mif
new file mode 100644
index 0000000..9ff7335
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/version.mif
@@ -0,0 +1,4 @@
+# Version number macros for inclusion from makefiles
+
+VER = 34
+VERDOT = 3.4
diff --git a/payloads/libpayload/curses/PDCurses/watcom.mif b/payloads/libpayload/curses/PDCurses/watcom.mif
new file mode 100644
index 0000000..023ea37
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/watcom.mif
@@ -0,0 +1,59 @@
+# Common elements for the Watcom makefiles
+
+srcdir = $(PDCURSES_SRCDIR)\pdcurses
+demodir = $(PDCURSES_SRCDIR)\demos
+
+LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj &
+border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj &
+getch.obj getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj &
+insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj &
+outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj &
+scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj &
+touch.obj util.obj window.obj debug.obj
+
+PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj &
+pdcsetsc.obj pdcutil.obj
+
+DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe firework.exe &
+ptest.exe rain.exe worm.exe
+
+LIBCURSES = pdcurses.lib
+
+LINK = wlink
+
+!ifdef __LOADDLL__
+! loaddll wcc wccd
+! loaddll wcc386 wccd386
+! loaddll wlink wlink
+! loaddll wlib wlibd
+!endif
+
+all: $(LIBCURSES) $(DEMOS)
+
+clean
+ -del *.obj
+ -del *.lib
+ -del *.exe
+ -del *.err
+
+demos: $(DEMOS)
+
+.c: $(srcdir);$(osdir);$(demodir)
+.c.obj: .autodepend
+ $(CC) $(CFLAGS) $<
+
+.obj.exe:
+ $(LINK) $(LDFLAGS) n $@ f $*.obj l $(LIBCURSES)
+
+testcurs.exe: testcurs.obj $(LIBCURSES)
+newdemo.exe: newdemo.obj $(LIBCURSES)
+xmas.exe: xmas.obj $(LIBCURSES)
+firework.exe: firework.obj $(LIBCURSES)
+rain.exe: rain.obj $(LIBCURSES)
+worm.exe: worm.obj $(LIBCURSES)
+ptest.exe: ptest.obj $(LIBCURSES)
+
+tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
+ $(LINK) $(LDFLAGS) n $@ f tuidemo.obj f tui.obj l $(LIBCURSES)
+
+dist: .symbolic
diff --git a/payloads/libpayload/curses/PDCurses/win32/README b/payloads/libpayload/curses/PDCurses/win32/README
new file mode 100644
index 0000000..bfe2ad9
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/README
@@ -0,0 +1,76 @@
+PDCurses for Win32
+==================
+
+This directory contains PDCurses source code files specific to Win32
+console mode (Win9x/Me/NT/2k/XP/Vista).
+
+
+Building
+--------
+
+. Choose the appropriate makefile for your compiler:
+
+ bccwin32.mak - Borland C++ 4.0.2+
+ dmcwin32.mak - Digital Mars
+ gccwin32.mak - Cygnus GNU Compiler
+ lccwin32.mak - LCC-Win32
+ mingwin32.mak - MinGW
+ vcwin32.mak - Microsoft Visual C++ 2.0+
+ wccwin32.mak - Watcom 10.6+
+
+. Optionally, you can build in a different directory than the platform
+ directory by setting PDCURSES_SRCDIR to point to the directory where
+ you unpacked PDCurses, and changing to your target directory:
+
+ set PDCURSES_SRCDIR=c:\pdcurses
+
+ This won't work with the LCC or Digital Mars makefiles, nor will the
+ options described below.
+
+. Build it:
+
+ make -f makefilename
+
+ (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll
+ get the libraries (pdcurses.lib or .a, depending on your compiler; and
+ panel.lib or .a), the demos (*.exe), and a lot of object files. Note
+ that the panel library is just a copy of the main library, provided
+ for convenience; both panel and curses functions are in the main
+ library.
+
+ You can also give the optional parameter "WIDE=Y", to build the
+ library with wide-character (Unicode) support:
+
+ make -f mingwin32.mak WIDE=Y
+
+ When built this way, the library is not compatible with Windows 9x,
+ unless you also link with the Microsoft Layer for Unicode (not
+ tested).
+
+ Another option, "UTF8=Y", makes PDCurses ignore the system locale, and
+ treat all narrow-character strings as UTF-8. This option has no effect
+ unless WIDE=Y is also set. Use it to get around the poor support for
+ UTF-8 in the Win32 console:
+
+ make -f mingwin32.mak WIDE=Y UTF8=Y
+
+ You can also use the optional parameter "DLL=Y" with Visual C++,
+ MinGW or Cygwin, to build the library as a DLL:
+
+ nmake -f vcwin32.mak WIDE=Y DLL=Y
+
+ When you build the library as a Windows DLL, you must always define
+ PDCURSES_DLL_BUILD when linking against it. (Or, if you only want to
+ use the DLL, you could add this definition to your curses.h.)
+
+
+Distribution Status
+-------------------
+
+The files in this directory are released to the Public Domain.
+
+
+Acknowledgements
+----------------
+
+Generic Win32 port was provided by Chris Szurgot <szurgot at itribe.net>
diff --git a/payloads/libpayload/curses/PDCurses/win32/bccwin32.mak b/payloads/libpayload/curses/PDCurses/win32/bccwin32.mak
new file mode 100644
index 0000000..229ab4b
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/bccwin32.mak
@@ -0,0 +1,85 @@
+# Borland MAKE Makefile for PDCurses library - Win32 BC++ 4.0+
+#
+# Usage: make -f [path\]bccwin32.mak [DEBUG=] [WIDE=] [UTF8=] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+O = obj
+
+!ifndef PDCURSES_SRCDIR
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+!include $(PDCURSES_SRCDIR)\libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)\win32
+
+CC = bcc32 -q
+
+!ifdef DEBUG
+CFLAGS = -N -v -y -DPDCDEBUG
+!else
+CFLAGS = -O
+!endif
+
+!ifdef WIDE
+WIDEOPT = -DPDC_WIDE
+!endif
+
+!ifdef UTF8
+UTF8OPT = -DPDC_FORCE_UTF8
+!endif
+
+BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c -Tpe -w32 $(CFLAGS) -w-par \
+$(WIDEOPT) $(UTF8OPT)
+
+LIBEXE = tlib /C /E /0 /a
+
+LIBCURSES = pdcurses.lib
+
+all: $(LIBCURSES) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.tds
+ -del *.exe
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ -del $@
+ $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
+ -copy $(LIBCURSES) panel.lib
+
+.autodepend
+
+{$(srcdir)\}.c.obj:
+ $(BUILD) $<
+
+{$(osdir)\}.c.obj:
+ $(BUILD) $<
+
+{$(demodir)\}.c.obj:
+ $(BUILD) $<
+
+.c.obj:
+ $(BUILD) $<
+
+.obj.exe:
+ $(CC) -e$@ $** $(LIBCURSES)
+
+tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES)
+ $(CC) -e$@ $**
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H)
+ $(BUILD) -I$(demodir) $(demodir)\tui.c
+
+tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H)
+ $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
+
+PLATFORM1 = Borland C++ Win32
+PLATFORM2 = Borland C/C++ 5.5 for Win32
+ARCNAME = pdc$(VER)_bcc_w32
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/win32/dmcwin32.mak b/payloads/libpayload/curses/PDCurses/win32/dmcwin32.mak
new file mode 100644
index 0000000..23522cc
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/dmcwin32.mak
@@ -0,0 +1,253 @@
+# Makefile for PDCurses library - WIN32 Digital Mars
+#
+# Usage: make -f dmcwin32.mak [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+PDCURSES_SRCDIR = ..
+
+PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h
+PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h
+PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
+
+PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h
+TERM_HEADER = $(PDCURSES_SRCDIR)\term.h
+
+srcdir = $(PDCURSES_SRCDIR)\pdcurses
+osdir = $(PDCURSES_SRCDIR)\win32
+demodir = $(PDCURSES_SRCDIR)\demos
+
+PDCURSES_WIN_H = $(osdir)\pdcwin.h
+
+CC = dmc
+
+CFLAGS = -c -o+space -Nc
+
+CPPFLAGS = -I$(PDCURSES_SRCDIR) #-DPDC_WIDE -DPDC_FORCE_UTF8
+
+LINK = dmc
+LIBEXE = lib
+
+LIBCURSES = pdcurses.lib
+
+BUILD = $(CC) $(CFLAGS) $(CPPFLAGS)
+
+DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe \
+firework.exe ptest.exe rain.exe worm.exe
+
+all: $(LIBCURSES) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.exe
+ -del *.map
+ -del advapi32.def
+
+LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \
+border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \
+getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \
+insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \
+outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \
+scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \
+touch.obj util.obj window.obj debug.obj
+
+PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \
+pdcsetsc.obj pdcutil.obj
+
+DEMOOBJS = testcurs.obj newdemo.obj xmas.obj tuidemo.obj tui.obj \
+firework.obj ptest.obj rain.obj worm.obj
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_WIN_H)
+panel.obj ptest.obj: $(PANEL_HEADER)
+terminfo.obj: $(TERM_HEADER)
+
+$(DEMOOBJS) : $(PDCURSES_CURSES_H)
+$(DEMOS) : $(LIBCURSES)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) -c $@ $(LIBOBJS) $(PDCOBJS)
+ -copy $(LIBCURSES) panel.lib
+
+SRCBUILD = $(BUILD) $(srcdir)\$*.c
+OSBUILD = $(BUILD) $(osdir)\$*.c
+DEMOBUILD = $(LINK) $(CPPFLAGS) -o+space $@ $**
+
+addch.obj: $(srcdir)\addch.c
+ $(SRCBUILD)
+
+addchstr.obj: $(srcdir)\addchstr.c
+ $(SRCBUILD)
+
+addstr.obj: $(srcdir)\addstr.c
+ $(SRCBUILD)
+
+attr.obj: $(srcdir)\attr.c
+ $(SRCBUILD)
+
+beep.obj: $(srcdir)\beep.c
+ $(SRCBUILD)
+
+bkgd.obj: $(srcdir)\bkgd.c
+ $(SRCBUILD)
+
+border.obj: $(srcdir)\border.c
+ $(SRCBUILD)
+
+clear.obj: $(srcdir)\clear.c
+ $(SRCBUILD)
+
+color.obj: $(srcdir)\color.c
+ $(SRCBUILD)
+
+delch.obj: $(srcdir)\delch.c
+ $(SRCBUILD)
+
+deleteln.obj: $(srcdir)\deleteln.c
+ $(SRCBUILD)
+
+deprec.obj: $(srcdir)\deprec.c
+ $(SRCBUILD)
+
+getch.obj: $(srcdir)\getch.c
+ $(SRCBUILD)
+
+getstr.obj: $(srcdir)\getstr.c
+ $(SRCBUILD)
+
+getyx.obj: $(srcdir)\getyx.c
+ $(SRCBUILD)
+
+inch.obj: $(srcdir)\inch.c
+ $(SRCBUILD)
+
+inchstr.obj: $(srcdir)\inchstr.c
+ $(SRCBUILD)
+
+initscr.obj: $(srcdir)\initscr.c
+ $(SRCBUILD)
+
+inopts.obj: $(srcdir)\inopts.c
+ $(SRCBUILD)
+
+insch.obj: $(srcdir)\insch.c
+ $(SRCBUILD)
+
+insstr.obj: $(srcdir)\insstr.c
+ $(SRCBUILD)
+
+instr.obj: $(srcdir)\instr.c
+ $(SRCBUILD)
+
+kernel.obj: $(srcdir)\kernel.c
+ $(SRCBUILD)
+
+keyname.obj: $(srcdir)\keyname.c
+ $(SRCBUILD)
+
+mouse.obj: $(srcdir)\mouse.c
+ $(SRCBUILD)
+
+move.obj: $(srcdir)\move.c
+ $(SRCBUILD)
+
+outopts.obj: $(srcdir)\outopts.c
+ $(SRCBUILD)
+
+overlay.obj: $(srcdir)\overlay.c
+ $(SRCBUILD)
+
+pad.obj: $(srcdir)\pad.c
+ $(SRCBUILD)
+
+panel.obj: $(srcdir)\panel.c
+ $(SRCBUILD)
+
+printw.obj: $(srcdir)\printw.c
+ $(SRCBUILD)
+
+refresh.obj: $(srcdir)\refresh.c
+ $(SRCBUILD)
+
+scanw.obj: $(srcdir)\scanw.c
+ $(SRCBUILD)
+
+scr_dump.obj: $(srcdir)\scr_dump.c
+ $(SRCBUILD)
+
+scroll.obj: $(srcdir)\scroll.c
+ $(SRCBUILD)
+
+slk.obj: $(srcdir)\slk.c
+ $(SRCBUILD)
+
+termattr.obj: $(srcdir)\termattr.c
+ $(SRCBUILD)
+
+terminfo.obj: $(srcdir)\terminfo.c
+ $(SRCBUILD)
+
+touch.obj: $(srcdir)\touch.c
+ $(SRCBUILD)
+
+util.obj: $(srcdir)\util.c
+ $(SRCBUILD)
+
+window.obj: $(srcdir)\window.c
+ $(SRCBUILD)
+
+debug.obj: $(srcdir)\debug.c
+ $(SRCBUILD)
+
+pdcclip.obj: $(osdir)\pdcclip.c
+ $(OSBUILD)
+
+pdcdisp.obj: $(osdir)\pdcdisp.c
+ $(OSBUILD)
+
+pdcgetsc.obj: $(osdir)\pdcgetsc.c
+ $(OSBUILD)
+
+pdckbd.obj: $(osdir)\pdckbd.c
+ $(OSBUILD)
+
+pdcscrn.obj: $(osdir)\pdcscrn.c
+ $(OSBUILD)
+
+pdcsetsc.obj: $(osdir)\pdcsetsc.c
+ $(OSBUILD)
+
+pdcutil.obj: $(osdir)\pdcutil.c
+ $(OSBUILD)
+
+firework.exe: $(demodir)\firework.c
+ $(DEMOBUILD)
+
+newdemo.exe: $(demodir)\newdemo.c
+ $(DEMOBUILD)
+
+ptest.exe: $(demodir)\ptest.c
+ $(DEMOBUILD)
+
+rain.exe: $(demodir)\rain.c
+ $(DEMOBUILD)
+
+testcurs.exe: $(demodir)\testcurs.c
+ $(DEMOBUILD) advapi32.lib
+
+tuidemo.exe: tuidemo.obj tui.obj
+ $(DEMOBUILD)
+
+worm.exe: $(demodir)\worm.c
+ $(DEMOBUILD)
+
+xmas.exe: $(demodir)\xmas.c
+ $(DEMOBUILD)
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h
+ $(BUILD) -I$(demodir) $(demodir)\$*.c
+
+tuidemo.obj: $(demodir)\tuidemo.c
+ $(BUILD) -I$(demodir) $(demodir)\$*.c
diff --git a/payloads/libpayload/curses/PDCurses/win32/gccwin32.mak b/payloads/libpayload/curses/PDCurses/win32/gccwin32.mak
new file mode 100644
index 0000000..7504bb3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/gccwin32.mak
@@ -0,0 +1,128 @@
+# GNU MAKE Makefile for PDCurses library - WIN32 Cygnus GCC
+#
+# Usage: make -f [path\]gccwin32.mak [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] [tgt]
+#
+# where tgt can be any of:
+# [all|demos|pdcurses.a|testcurs.exe...]
+
+O = o
+
+ifndef PDCURSES_SRCDIR
+ PDCURSES_SRCDIR = ..
+endif
+
+include $(PDCURSES_SRCDIR)/version.mif
+include $(PDCURSES_SRCDIR)/libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)/win32
+
+PDCURSES_WIN_H = $(osdir)/pdcwin.h
+
+CC = gcc
+
+ifeq ($(DEBUG),Y)
+ CFLAGS = -g -Wall -DPDCDEBUG
+ LDFLAGS = -g
+else
+ CFLAGS = -O2 -Wall
+ LDFLAGS =
+endif
+
+CFLAGS += -I$(PDCURSES_SRCDIR)
+
+BASEDEF = $(PDCURSES_SRCDIR)/exp-base.def
+WIDEDEF = $(PDCURSES_SRCDIR)/exp-wide.def
+
+DEFDEPS = $(BASEDEF)
+
+ifeq ($(WIDE),Y)
+ CFLAGS += -DPDC_WIDE
+ DEFDEPS += $(WIDEDEF)
+endif
+
+ifeq ($(UTF8),Y)
+ CFLAGS += -DPDC_FORCE_UTF8
+endif
+
+DEFFILE = pdcurses.def
+
+LINK = gcc
+
+ifeq ($(DLL),Y)
+ CFLAGS += -DPDC_DLL_BUILD
+ LIBEXE = gcc $(DEFFILE)
+ LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o
+ LIBCURSES = pdcurses.dll
+ LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
+ CLEAN = $(LIBCURSES) *.a $(DEFFILE)
+else
+ LIBEXE = ar
+ LIBFLAGS = rcv
+ LIBCURSES = pdcurses.a
+ LIBDEPS = $(LIBOBJS) $(PDCOBJS)
+ CLEAN = *.a
+endif
+
+.PHONY: all libs clean demos dist
+
+all: libs demos
+
+libs: $(LIBCURSES)
+
+clean:
+ -rm -f *.o
+ -rm -f *.exe
+ -rm -f $(CLEAN)
+
+demos: $(DEMOS)
+ strip *.exe
+
+$(DEFFILE): $(DEFDEPS)
+ echo LIBRARY pdcurses > $@
+ echo EXPORTS >> $@
+ cat $(BASEDEF) >> $@
+ifeq ($(WIDE),Y)
+ cat $(WIDEDEF) >> $@
+endif
+
+$(LIBCURSES) : $(LIBDEPS)
+ $(LIBEXE) $(LIBFLAGS) $@ $?
+ -cp pdcurses.a panel.a
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_WIN_H)
+$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
+panel.o : $(PANEL_HEADER)
+terminfo.o: $(TERM_HEADER)
+
+$(LIBOBJS) : %.o: $(srcdir)/%.c
+ $(CC) -c $(CFLAGS) $<
+
+$(PDCOBJS) : %.o: $(osdir)/%.c
+ $(CC) -c $(CFLAGS) $<
+
+firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
+ptest.exe: %.exe: $(demodir)/%.c
+ $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES)
+
+tuidemo.exe: tuidemo.o tui.o
+ $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES)
+
+tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H)
+ $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
+
+tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H)
+ $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
+
+dist: $(PDCLIBS)
+ echo PDCurses $(VERDOT) for Cygnus Win32 > file_id.diz
+ echo ------------------------------------------ >> file_id.diz
+ echo Public Domain Curses library for >> file_id.diz
+ echo Cygnus GCC for Win32. >> file_id.diz
+ echo Source available in PDCURS$(VER).ZIP >> file_id.diz
+ echo Public Domain. >> file_id.diz
+ zip -9jX pdc$(VER)_cyg_w32 \
+ $(PDCURSES_SRCDIR)/README $(PDCURSES_SRCDIR)/HISTORY \
+ $(PDCURSES_SRCDIR)/curses.h $(PDCURSES_SRCDIR)/panel.h \
+ $(LIBCURSES) $(LIBPANEL) file_id.diz
+ rm file_id.diz
diff --git a/payloads/libpayload/curses/PDCurses/win32/lccwin32.mak b/payloads/libpayload/curses/PDCurses/win32/lccwin32.mak
new file mode 100644
index 0000000..90c1c89
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/lccwin32.mak
@@ -0,0 +1,273 @@
+# Makefile for PDCurses library - WIN32 LCC-Win32
+#
+# Usage: make -f lccwin32.mak [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+PDCURSES_SRCDIR = ..
+
+PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h
+PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h
+PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
+
+PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h
+TERM_HEADER = $(PDCURSES_SRCDIR)\term.h
+
+srcdir = $(PDCURSES_SRCDIR)\pdcurses
+osdir = $(PDCURSES_SRCDIR)\win32
+demodir = $(PDCURSES_SRCDIR)\demos
+
+PDCURSES_WIN_H = $(osdir)\pdcwin.h
+
+CC = lcc
+
+#CFLAGS = -c -g3 -A -ansic
+CFLAGS = -c -O -A -ansic
+
+CPPFLAGS = -I$(PDCURSES_SRCDIR) #-DPDC_WIDE -DPDC_FORCE_UTF8
+
+LINK = lcclnk
+LIBEXE = lcclib
+
+LIBCURSES = pdcurses.lib
+
+BUILD = $(CC) $(CFLAGS) $(CPPFLAGS)
+PDCLIBS = $(LIBCURSES)
+
+DEMOS = testcurs.exe newdemo.exe xmas.exe tuidemo.exe \
+firework.exe ptest.exe rain.exe worm.exe
+
+all: $(PDCLIBS) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.exe
+
+LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \
+border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \
+getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \
+insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \
+outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \
+scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \
+touch.obj util.obj window.obj debug.obj
+
+PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \
+pdcsetsc.obj pdcutil.obj
+
+DEMOOBJS = testcurs.obj newdemo.obj xmas.obj tuidemo.obj tui.obj \
+firework.obj ptest.obj rain.obj worm.obj
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_WIN_H)
+panel.obj ptest.obj: $(PANEL_HEADER)
+terminfo.obj: $(TERM_HEADER)
+
+$(DEMOOBJS) : $(PDCURSES_CURSES_H)
+$(DEMOS) : $(LIBCURSES)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) /out:$@ $(LIBOBJS) $(PDCOBJS)
+ -copy $(LIBCURSES) panel.lib
+
+SRCBUILD = $(BUILD) $(srcdir)\$*.c
+OSBUILD = $(BUILD) $(osdir)\$*.c
+
+addch.obj: $(srcdir)\addch.c
+ $(SRCBUILD)
+
+addchstr.obj: $(srcdir)\addchstr.c
+ $(SRCBUILD)
+
+addstr.obj: $(srcdir)\addstr.c
+ $(SRCBUILD)
+
+attr.obj: $(srcdir)\attr.c
+ $(SRCBUILD)
+
+beep.obj: $(srcdir)\beep.c
+ $(SRCBUILD)
+
+bkgd.obj: $(srcdir)\bkgd.c
+ $(SRCBUILD)
+
+border.obj: $(srcdir)\border.c
+ $(SRCBUILD)
+
+clear.obj: $(srcdir)\clear.c
+ $(SRCBUILD)
+
+color.obj: $(srcdir)\color.c
+ $(SRCBUILD)
+
+delch.obj: $(srcdir)\delch.c
+ $(SRCBUILD)
+
+deleteln.obj: $(srcdir)\deleteln.c
+ $(SRCBUILD)
+
+deprec.obj: $(srcdir)\deprec.c
+ $(SRCBUILD)
+
+getch.obj: $(srcdir)\getch.c
+ $(SRCBUILD)
+
+getstr.obj: $(srcdir)\getstr.c
+ $(SRCBUILD)
+
+getyx.obj: $(srcdir)\getyx.c
+ $(SRCBUILD)
+
+inch.obj: $(srcdir)\inch.c
+ $(SRCBUILD)
+
+inchstr.obj: $(srcdir)\inchstr.c
+ $(SRCBUILD)
+
+initscr.obj: $(srcdir)\initscr.c
+ $(SRCBUILD)
+
+inopts.obj: $(srcdir)\inopts.c
+ $(SRCBUILD)
+
+insch.obj: $(srcdir)\insch.c
+ $(SRCBUILD)
+
+insstr.obj: $(srcdir)\insstr.c
+ $(SRCBUILD)
+
+instr.obj: $(srcdir)\instr.c
+ $(SRCBUILD)
+
+kernel.obj: $(srcdir)\kernel.c
+ $(SRCBUILD)
+
+keyname.obj: $(srcdir)\keyname.c
+ $(SRCBUILD)
+
+mouse.obj: $(srcdir)\mouse.c
+ $(SRCBUILD)
+
+move.obj: $(srcdir)\move.c
+ $(SRCBUILD)
+
+outopts.obj: $(srcdir)\outopts.c
+ $(SRCBUILD)
+
+overlay.obj: $(srcdir)\overlay.c
+ $(SRCBUILD)
+
+pad.obj: $(srcdir)\pad.c
+ $(SRCBUILD)
+
+panel.obj: $(srcdir)\panel.c
+ $(SRCBUILD)
+
+printw.obj: $(srcdir)\printw.c
+ $(SRCBUILD)
+
+refresh.obj: $(srcdir)\refresh.c
+ $(SRCBUILD)
+
+scanw.obj: $(srcdir)\scanw.c
+ $(SRCBUILD)
+
+scr_dump.obj: $(srcdir)\scr_dump.c
+ $(SRCBUILD)
+
+scroll.obj: $(srcdir)\scroll.c
+ $(SRCBUILD)
+
+slk.obj: $(srcdir)\slk.c
+ $(SRCBUILD)
+
+termattr.obj: $(srcdir)\termattr.c
+ $(SRCBUILD)
+
+terminfo.obj: $(srcdir)\terminfo.c
+ $(SRCBUILD)
+
+touch.obj: $(srcdir)\touch.c
+ $(SRCBUILD)
+
+util.obj: $(srcdir)\util.c
+ $(SRCBUILD)
+
+window.obj: $(srcdir)\window.c
+ $(SRCBUILD)
+
+debug.obj: $(srcdir)\debug.c
+ $(SRCBUILD)
+
+pdcclip.obj: $(osdir)\pdcclip.c
+ $(OSBUILD)
+
+pdcdisp.obj: $(osdir)\pdcdisp.c
+ $(OSBUILD)
+
+pdcgetsc.obj: $(osdir)\pdcgetsc.c
+ $(OSBUILD)
+
+pdckbd.obj: $(osdir)\pdckbd.c
+ $(OSBUILD)
+
+pdcscrn.obj: $(osdir)\pdcscrn.c
+ $(OSBUILD)
+
+pdcsetsc.obj: $(osdir)\pdcsetsc.c
+ $(OSBUILD)
+
+pdcutil.obj: $(osdir)\pdcutil.c
+ $(OSBUILD)
+
+firework.exe: firework.obj
+ $(LINK) -o $@ firework.obj $(LIBCURSES)
+
+newdemo.exe: newdemo.obj
+ $(LINK) -o $@ newdemo.obj $(LIBCURSES)
+
+ptest.exe: ptest.obj
+ $(LINK) -o $@ ptest.obj $(LIBCURSES)
+
+rain.exe: rain.obj
+ $(LINK) -o $@ rain.obj $(LIBCURSES)
+
+testcurs.exe: testcurs.obj
+ $(LINK) -o $@ testcurs.obj $(LIBCURSES)
+
+tuidemo.exe: tuidemo.obj tui.obj
+ $(LINK) -o $@ tuidemo.obj tui.obj $(LIBCURSES)
+
+worm.exe: worm.obj
+ $(LINK) -o $@ worm.obj $(LIBCURSES)
+
+xmas.exe: xmas.obj
+ $(LINK) -o $@ xmas.obj $(LIBCURSES)
+
+firework.obj: $(demodir)\firework.c
+ $(BUILD) $(demodir)\$*.c
+
+newdemo.obj: $(demodir)\newdemo.c
+ $(BUILD) $(demodir)\$*.c
+
+ptest.obj: $(demodir)\ptest.c
+ $(BUILD) $(demodir)\$*.c
+
+rain.obj: $(demodir)\rain.c
+ $(BUILD) $(demodir)\$*.c
+
+testcurs.obj: $(demodir)\testcurs.c
+ $(BUILD) $(demodir)\$*.c
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h
+ $(BUILD) -I$(demodir) $(demodir)\$*.c
+
+tuidemo.obj: $(demodir)\tuidemo.c
+ $(BUILD) -I$(demodir) $(demodir)\$*.c
+
+worm.obj: $(demodir)\worm.c
+ $(BUILD) $(demodir)\$*.c
+
+xmas.obj: $(demodir)\xmas.c
+ $(BUILD) $(demodir)\$*.c
diff --git a/payloads/libpayload/curses/PDCurses/win32/mingwin32.mak b/payloads/libpayload/curses/PDCurses/win32/mingwin32.mak
new file mode 100644
index 0000000..7fb17e8
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/mingwin32.mak
@@ -0,0 +1,121 @@
+# GNU MAKE Makefile for PDCurses library - WIN32 MinGW GCC
+#
+# Usage: make -f [path\]mingwin32.mak [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] [tgt]
+#
+# where tgt can be any of:
+# [all|demos|pdcurses.a|testcurs.exe...]
+
+O = o
+
+ifndef PDCURSES_SRCDIR
+ PDCURSES_SRCDIR = ..
+endif
+
+include $(PDCURSES_SRCDIR)/version.mif
+include $(PDCURSES_SRCDIR)/libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)/win32
+
+PDCURSES_WIN_H = $(osdir)/pdcwin.h
+
+CC = gcc
+
+ifeq ($(DEBUG),Y)
+ CFLAGS = -g -Wall -DPDCDEBUG
+ LDFLAGS = -g
+else
+ CFLAGS = -O2 -Wall
+ LDFLAGS =
+endif
+
+CFLAGS += -I$(PDCURSES_SRCDIR)
+
+BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
+WIDEDEF = $(PDCURSES_SRCDIR)\exp-wide.def
+
+DEFDEPS = $(BASEDEF)
+
+ifeq ($(WIDE),Y)
+ CFLAGS += -DPDC_WIDE
+ DEFDEPS += $(WIDEDEF)
+endif
+
+ifeq ($(UTF8),Y)
+ CFLAGS += -DPDC_FORCE_UTF8
+endif
+
+DEFFILE = pdcurses.def
+
+LINK = gcc
+
+ifeq ($(DLL),Y)
+ CFLAGS += -DPDC_DLL_BUILD
+ LIBEXE = gcc $(DEFFILE)
+ LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o
+ LIBCURSES = pdcurses.dll
+ LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
+ CLEAN = $(LIBCURSES) *.a $(DEFFILE)
+else
+ LIBEXE = ar
+ LIBFLAGS = rcv
+ LIBCURSES = pdcurses.a
+ LIBDEPS = $(LIBOBJS) $(PDCOBJS)
+ CLEAN = *.a
+endif
+
+.PHONY: all libs clean demos dist
+
+all: libs demos
+
+libs: $(LIBCURSES)
+
+clean:
+ -del *.o
+ -del *.exe
+ -del $(CLEAN)
+
+demos: $(DEMOS)
+ strip *.exe
+
+$(DEFFILE): $(DEFDEPS)
+ echo LIBRARY pdcurses > $@
+ echo EXPORTS >> $@
+ type $(BASEDEF) >> $@
+ifeq ($(WIDE),Y)
+ type $(WIDEDEF) >> $@
+endif
+
+$(LIBCURSES) : $(LIBDEPS)
+ $(LIBEXE) $(LIBFLAGS) $@ $?
+ -copy pdcurses.a panel.a
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_WIN_H)
+$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES)
+panel.o : $(PANEL_HEADER)
+terminfo.o: $(TERM_HEADER)
+
+$(LIBOBJS) : %.o: $(srcdir)/%.c
+ $(CC) -c $(CFLAGS) $<
+
+$(PDCOBJS) : %.o: $(osdir)/%.c
+ $(CC) -c $(CFLAGS) $<
+
+firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \
+ptest.exe: %.exe: $(demodir)/%.c
+ $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES)
+
+tuidemo.exe: tuidemo.o tui.o
+ $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES)
+
+tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H)
+ $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
+
+tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H)
+ $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $<
+
+PLATFORM1 = MinGW Win32
+PLATFORM2 = MinGW for Win32
+ARCNAME = pdc$(VER)_ming_w32
+
+include $(PDCURSES_SRCDIR)/makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcclip.c b/payloads/libpayload/curses/PDCurses/win32/pdcclip.c
new file mode 100644
index 0000000..4feefae
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcclip.c
@@ -0,0 +1,145 @@
+/* Public Domain Curses */
+
+#include "pdcwin.h"
+
+RCSID("$Id: pdcclip.c,v 1.30 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: clipboard
+
+ Synopsis:
+ int PDC_getclipboard(char **contents, long *length);
+ int PDC_setclipboard(const char *contents, long length);
+ int PDC_freeclipboard(char *contents);
+ int PDC_clearclipboard(void);
+
+ Description:
+ PDC_getclipboard() gets the textual contents of the system's
+ clipboard. This function returns the contents of the clipboard
+ in the contents argument. It is the responsibilitiy of the
+ caller to free the memory returned, via PDC_freeclipboard().
+ The length of the clipboard contents is returned in the length
+ argument.
+
+ PDC_setclipboard copies the supplied text into the system's
+ clipboard, emptying the clipboard prior to the copy.
+
+ PDC_clearclipboard() clears the internal clipboard.
+
+ Return Values:
+ indicator of success/failure of call.
+ PDC_CLIP_SUCCESS the call was successful
+ PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
+ the clipboard contents
+ PDC_CLIP_EMPTY the clipboard contains no text
+ PDC_CLIP_ACCESS_ERROR no clipboard support
+
+ Portability X/Open BSD SYS V
+ PDC_getclipboard - - -
+ PDC_setclipboard - - -
+ PDC_freeclipboard - - -
+ PDC_clearclipboard - - -
+
+**man-end****************************************************************/
+
+#ifdef PDC_WIDE
+# define PDC_TEXT CF_UNICODETEXT
+#else
+# define PDC_TEXT CF_OEMTEXT
+#endif
+
+int PDC_getclipboard(char **contents, long *length)
+{
+ HANDLE handle;
+ long len;
+
+ PDC_LOG(("PDC_getclipboard() - called\n"));
+
+ if (!OpenClipboard(NULL))
+ return PDC_CLIP_ACCESS_ERROR;
+
+ if ((handle = GetClipboardData(PDC_TEXT)) == NULL)
+ {
+ CloseClipboard();
+ return PDC_CLIP_EMPTY;
+ }
+
+#ifdef PDC_WIDE
+ len = wcslen((wchar_t *)handle) * 3;
+#else
+ len = strlen((char *)handle);
+#endif
+ *contents = (char *)GlobalAlloc(GMEM_FIXED, len + 1);
+
+ if (!*contents)
+ {
+ CloseClipboard();
+ return PDC_CLIP_MEMORY_ERROR;
+ }
+
+#ifdef PDC_WIDE
+ len = PDC_wcstombs((char *)*contents, (wchar_t *)handle, len);
+#else
+ strcpy((char *)*contents, (char *)handle);
+#endif
+ *length = len;
+ CloseClipboard();
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_setclipboard(const char *contents, long length)
+{
+ HGLOBAL ptr1;
+ LPTSTR ptr2;
+
+ PDC_LOG(("PDC_setclipboard() - called\n"));
+
+ if (!OpenClipboard(NULL))
+ return PDC_CLIP_ACCESS_ERROR;
+
+ ptr1 = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE,
+ (length + 1) * sizeof(TCHAR));
+
+ if (!ptr1)
+ return PDC_CLIP_MEMORY_ERROR;
+
+ ptr2 = GlobalLock(ptr1);
+
+#ifdef PDC_WIDE
+ PDC_mbstowcs((wchar_t *)ptr2, contents, length);
+#else
+ memcpy((char *)ptr2, contents, length + 1);
+#endif
+ GlobalUnlock(ptr1);
+ EmptyClipboard();
+
+ if (!SetClipboardData(PDC_TEXT, ptr1))
+ {
+ GlobalFree(ptr1);
+ return PDC_CLIP_ACCESS_ERROR;
+ }
+
+ CloseClipboard();
+ GlobalFree(ptr1);
+
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_freeclipboard(char *contents)
+{
+ PDC_LOG(("PDC_freeclipboard() - called\n"));
+
+ GlobalFree(contents);
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_clearclipboard(void)
+{
+ PDC_LOG(("PDC_clearclipboard() - called\n"));
+
+ EmptyClipboard();
+
+ return PDC_CLIP_SUCCESS;
+}
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcdisp.c b/payloads/libpayload/curses/PDCurses/win32/pdcdisp.c
new file mode 100644
index 0000000..a9c37eb
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcdisp.c
@@ -0,0 +1,117 @@
+/* Public Domain Curses */
+
+#include "pdcwin.h"
+
+RCSID("$Id: pdcdisp.c,v 1.47 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef CHTYPE_LONG
+
+# define A(x) ((chtype)x | A_ALTCHARSET)
+
+chtype acs_map[128] =
+{
+ A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10),
+ A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18), A(19),
+ A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27), A(28),
+ A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&', '\'', '(',
+ ')', '*',
+
+# ifdef PDC_WIDE
+ 0x2192, 0x2190, 0x2191, 0x2193,
+# else
+ A(0x1a), A(0x1b), A(0x18), A(0x19),
+# endif
+
+ '/',
+
+# ifdef PDC_WIDE
+ 0x2588,
+# else
+ 0xdb,
+# endif
+
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
+ '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
+
+# ifdef PDC_WIDE
+ 0x2666, 0x2592,
+# else
+ A(0x04), 0xb1,
+# endif
+
+ 'b', 'c', 'd', 'e',
+
+# ifdef PDC_WIDE
+ 0x00b0, 0x00b1, 0x2591, 0x00a4, 0x2518, 0x2510, 0x250c, 0x2514,
+ 0x253c, 0x23ba, 0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524,
+ 0x2534, 0x252c, 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3,
+ 0x00b7,
+# else
+ 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d, 0x2d,
+ 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3, 0xf2, 0xe3,
+ 0xd8, 0x9c, 0xf9,
+# endif
+
+ A(127)
+};
+
+# undef A
+
+#endif
+
+/* position hardware cursor at (y, x) */
+
+void PDC_gotoyx(int row, int col)
+{
+ COORD coord;
+
+ PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n",
+ row, col, SP->cursrow, SP->curscol));
+
+ coord.X = col;
+ coord.Y = row;
+
+ SetConsoleCursorPosition(pdc_con_out, coord);
+}
+
+/* update the given physical line to look like the corresponding line in
+ curscr */
+
+void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
+{
+ CHAR_INFO ci[512];
+ int j;
+ COORD bufSize, bufPos;
+ SMALL_RECT sr;
+
+ PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno));
+
+ bufPos.X = bufPos.Y = 0;
+
+ bufSize.X = len;
+ bufSize.Y = 1;
+
+ sr.Top = lineno;
+ sr.Bottom = lineno;
+ sr.Left = x;
+ sr.Right = x + len - 1;
+
+ for (j = 0; j < len; j++)
+ {
+ chtype ch = srcp[j];
+
+ ci[j].Attributes = pdc_atrtab[ch >> PDC_ATTR_SHIFT];
+#ifdef CHTYPE_LONG
+ if (ch & A_ALTCHARSET && !(ch & 0xff80))
+ ch = acs_map[ch & 0x7f];
+#endif
+ ci[j].Char.UnicodeChar = ch & A_CHARTEXT;
+ }
+
+ WriteConsoleOutput(pdc_con_out, ci, bufSize, bufPos, &sr);
+}
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcgetsc.c b/payloads/libpayload/curses/PDCurses/win32/pdcgetsc.c
new file mode 100644
index 0000000..7c76523
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcgetsc.c
@@ -0,0 +1,57 @@
+/* Public Domain Curses */
+
+#include "pdcwin.h"
+
+RCSID("$Id: pdcgetsc.c,v 1.36 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/* get the cursor size/shape */
+
+int PDC_get_cursor_mode(void)
+{
+ CONSOLE_CURSOR_INFO ci;
+
+ PDC_LOG(("PDC_get_cursor_mode() - called\n"));
+
+ GetConsoleCursorInfo(pdc_con_out, &ci);
+
+ return ci.dwSize;
+}
+
+/* return number of screen rows */
+
+int PDC_get_rows(void)
+{
+ CONSOLE_SCREEN_BUFFER_INFO scr;
+
+ PDC_LOG(("PDC_get_rows() - called\n"));
+
+ GetConsoleScreenBufferInfo(pdc_con_out, &scr);
+
+ return scr.srWindow.Bottom - scr.srWindow.Top + 1;
+}
+
+/* return number of buffer rows */
+
+int PDC_get_buffer_rows(void)
+{
+ CONSOLE_SCREEN_BUFFER_INFO scr;
+
+ PDC_LOG(("PDC_get_buffer_rows() - called\n"));
+
+ GetConsoleScreenBufferInfo(pdc_con_out, &scr);
+
+ return scr.dwSize.Y;
+}
+
+/* return width of screen/viewport */
+
+int PDC_get_columns(void)
+{
+ CONSOLE_SCREEN_BUFFER_INFO scr;
+
+ PDC_LOG(("PDC_get_columns() - called\n"));
+
+ GetConsoleScreenBufferInfo(pdc_con_out, &scr);
+
+ return scr.srWindow.Right - scr.srWindow.Left + 1;
+}
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdckbd.c b/payloads/libpayload/curses/PDCurses/win32/pdckbd.c
new file mode 100644
index 0000000..a23ec95
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdckbd.c
@@ -0,0 +1,656 @@
+/* Public Domain Curses */
+
+#include "pdcwin.h"
+
+RCSID("$Id: pdckbd.c,v 1.115 2008/07/20 20:12:04 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdckbd
+
+ Synopsis:
+ unsigned long PDC_get_input_fd(void);
+
+ Description:
+ PDC_get_input_fd() returns the file descriptor that PDCurses
+ reads its input from. It can be used for select().
+
+ Portability X/Open BSD SYS V
+ PDC_get_input_fd - - -
+
+**man-end****************************************************************/
+
+unsigned long pdc_key_modifiers = 0L;
+
+/* These variables are used to store information about the next
+ Input Event. */
+
+static INPUT_RECORD save_ip;
+static MOUSE_STATUS old_mouse_status;
+static DWORD event_count = 0;
+static SHORT left_key;
+static int key_count = 0;
+static int save_press = 0;
+
+#define KEV save_ip.Event.KeyEvent
+#define MEV save_ip.Event.MouseEvent
+
+/************************************************************************
+ * Table for key code translation of function keys in keypad mode *
+ * These values are for strict IBM keyboard compatibles only *
+ ************************************************************************/
+
+typedef struct
+{
+ unsigned short normal;
+ unsigned short shift;
+ unsigned short control;
+ unsigned short alt;
+ unsigned short extended;
+} KPTAB;
+
+static KPTAB kptab[] =
+{
+ {0, 0, 0, 0, 0 }, /* 0 */
+ {0, 0, 0, 0, 0 }, /* 1 VK_LBUTTON */
+ {0, 0, 0, 0, 0 }, /* 2 VK_RBUTTON */
+ {0, 0, 0, 0, 0 }, /* 3 VK_CANCEL */
+ {0, 0, 0, 0, 0 }, /* 4 VK_MBUTTON */
+ {0, 0, 0, 0, 0 }, /* 5 */
+ {0, 0, 0, 0, 0 }, /* 6 */
+ {0, 0, 0, 0, 0 }, /* 7 */
+ {0x08, 0x08, 0x7F, ALT_BKSP, 0 }, /* 8 VK_BACK */
+ {0x09, KEY_BTAB, CTL_TAB, ALT_TAB, 999 }, /* 9 VK_TAB */
+ {0, 0, 0, 0, 0 }, /* 10 */
+ {0, 0, 0, 0, 0 }, /* 11 */
+ {KEY_B2, 0x35, CTL_PAD5, ALT_PAD5, 0 }, /* 12 VK_CLEAR */
+ {0x0D, 0x0D, CTL_ENTER, ALT_ENTER, 1 }, /* 13 VK_RETURN */
+ {0, 0, 0, 0, 0 }, /* 14 */
+ {0, 0, 0, 0, 0 }, /* 15 */
+ {0, 0, 0, 0, 0 }, /* 16 VK_SHIFT HANDLED SEPARATELY */
+ {0, 0, 0, 0, 0 }, /* 17 VK_CONTROL HANDLED SEPARATELY */
+ {0, 0, 0, 0, 0 }, /* 18 VK_MENU HANDLED SEPARATELY */
+ {0, 0, 0, 0, 0 }, /* 19 VK_PAUSE */
+ {0, 0, 0, 0, 0 }, /* 20 VK_CAPITAL HANDLED SEPARATELY */
+ {0, 0, 0, 0, 0 }, /* 21 VK_HANGUL */
+ {0, 0, 0, 0, 0 }, /* 22 */
+ {0, 0, 0, 0, 0 }, /* 23 VK_JUNJA */
+ {0, 0, 0, 0, 0 }, /* 24 VK_FINAL */
+ {0, 0, 0, 0, 0 }, /* 25 VK_HANJA */
+ {0, 0, 0, 0, 0 }, /* 26 */
+ {0x1B, 0x1B, 0x1B, ALT_ESC, 0 }, /* 27 VK_ESCAPE */
+ {0, 0, 0, 0, 0 }, /* 28 VK_CONVERT */
+ {0, 0, 0, 0, 0 }, /* 29 VK_NONCONVERT */
+ {0, 0, 0, 0, 0 }, /* 30 VK_ACCEPT */
+ {0, 0, 0, 0, 0 }, /* 31 VK_MODECHANGE */
+ {0x20, 0x20, 0x20, 0x20, 0 }, /* 32 VK_SPACE */
+ {KEY_A3, 0x39, CTL_PAD9, ALT_PAD9, 3 }, /* 33 VK_PRIOR */
+ {KEY_C3, 0x33, CTL_PAD3, ALT_PAD3, 4 }, /* 34 VK_NEXT */
+ {KEY_C1, 0x31, CTL_PAD1, ALT_PAD1, 5 }, /* 35 VK_END */
+ {KEY_A1, 0x37, CTL_PAD7, ALT_PAD7, 6 }, /* 36 VK_HOME */
+ {KEY_B1, 0x34, CTL_PAD4, ALT_PAD4, 7 }, /* 37 VK_LEFT */
+ {KEY_A2, 0x38, CTL_PAD8, ALT_PAD8, 8 }, /* 38 VK_UP */
+ {KEY_B3, 0x36, CTL_PAD6, ALT_PAD6, 9 }, /* 39 VK_RIGHT */
+ {KEY_C2, 0x32, CTL_PAD2, ALT_PAD2, 10 }, /* 40 VK_DOWN */
+ {0, 0, 0, 0, 0 }, /* 41 VK_SELECT */
+ {0, 0, 0, 0, 0 }, /* 42 VK_PRINT */
+ {0, 0, 0, 0, 0 }, /* 43 VK_EXECUTE */
+ {0, 0, 0, 0, 0 }, /* 44 VK_SNAPSHOT*/
+ {PAD0, 0x30, CTL_PAD0, ALT_PAD0, 11 }, /* 45 VK_INSERT */
+ {PADSTOP, 0x2E, CTL_PADSTOP, ALT_PADSTOP,12 }, /* 46 VK_DELETE */
+ {0, 0, 0, 0, 0 }, /* 47 VK_HELP */
+ {0x30, 0x29, 0, ALT_0, 0 }, /* 48 */
+ {0x31, 0x21, 0, ALT_1, 0 }, /* 49 */
+ {0x32, 0x40, 0, ALT_2, 0 }, /* 50 */
+ {0x33, 0x23, 0, ALT_3, 0 }, /* 51 */
+ {0x34, 0x24, 0, ALT_4, 0 }, /* 52 */
+ {0x35, 0x25, 0, ALT_5, 0 }, /* 53 */
+ {0x36, 0x5E, 0, ALT_6, 0 }, /* 54 */
+ {0x37, 0x26, 0, ALT_7, 0 }, /* 55 */
+ {0x38, 0x2A, 0, ALT_8, 0 }, /* 56 */
+ {0x39, 0x28, 0, ALT_9, 0 }, /* 57 */
+ {0, 0, 0, 0, 0 }, /* 58 */
+ {0, 0, 0, 0, 0 }, /* 59 */
+ {0, 0, 0, 0, 0 }, /* 60 */
+ {0, 0, 0, 0, 0 }, /* 61 */
+ {0, 0, 0, 0, 0 }, /* 62 */
+ {0, 0, 0, 0, 0 }, /* 63 */
+ {0, 0, 0, 0, 0 }, /* 64 */
+ {0x61, 0x41, 0x01, ALT_A, 0 }, /* 65 */
+ {0x62, 0x42, 0x02, ALT_B, 0 }, /* 66 */
+ {0x63, 0x43, 0x03, ALT_C, 0 }, /* 67 */
+ {0x64, 0x44, 0x04, ALT_D, 0 }, /* 68 */
+ {0x65, 0x45, 0x05, ALT_E, 0 }, /* 69 */
+ {0x66, 0x46, 0x06, ALT_F, 0 }, /* 70 */
+ {0x67, 0x47, 0x07, ALT_G, 0 }, /* 71 */
+ {0x68, 0x48, 0x08, ALT_H, 0 }, /* 72 */
+ {0x69, 0x49, 0x09, ALT_I, 0 }, /* 73 */
+ {0x6A, 0x4A, 0x0A, ALT_J, 0 }, /* 74 */
+ {0x6B, 0x4B, 0x0B, ALT_K, 0 }, /* 75 */
+ {0x6C, 0x4C, 0x0C, ALT_L, 0 }, /* 76 */
+ {0x6D, 0x4D, 0x0D, ALT_M, 0 }, /* 77 */
+ {0x6E, 0x4E, 0x0E, ALT_N, 0 }, /* 78 */
+ {0x6F, 0x4F, 0x0F, ALT_O, 0 }, /* 79 */
+ {0x70, 0x50, 0x10, ALT_P, 0 }, /* 80 */
+ {0x71, 0x51, 0x11, ALT_Q, 0 }, /* 81 */
+ {0x72, 0x52, 0x12, ALT_R, 0 }, /* 82 */
+ {0x73, 0x53, 0x13, ALT_S, 0 }, /* 83 */
+ {0x74, 0x54, 0x14, ALT_T, 0 }, /* 84 */
+ {0x75, 0x55, 0x15, ALT_U, 0 }, /* 85 */
+ {0x76, 0x56, 0x16, ALT_V, 0 }, /* 86 */
+ {0x77, 0x57, 0x17, ALT_W, 0 }, /* 87 */
+ {0x78, 0x58, 0x18, ALT_X, 0 }, /* 88 */
+ {0x79, 0x59, 0x19, ALT_Y, 0 }, /* 89 */
+ {0x7A, 0x5A, 0x1A, ALT_Z, 0 }, /* 90 */
+ {0, 0, 0, 0, 0 }, /* 91 VK_LWIN */
+ {0, 0, 0, 0, 0 }, /* 92 VK_RWIN */
+ {0, 0, 0, 0, 0 }, /* 93 VK_APPS */
+ {0, 0, 0, 0, 0 }, /* 94 */
+ {0, 0, 0, 0, 0 }, /* 95 */
+ {0x30, 0, CTL_PAD0, ALT_PAD0, 0 }, /* 96 VK_NUMPAD0 */
+ {0x31, 0, CTL_PAD1, ALT_PAD1, 0 }, /* 97 VK_NUMPAD1 */
+ {0x32, 0, CTL_PAD2, ALT_PAD2, 0 }, /* 98 VK_NUMPAD2 */
+ {0x33, 0, CTL_PAD3, ALT_PAD3, 0 }, /* 99 VK_NUMPAD3 */
+ {0x34, 0, CTL_PAD4, ALT_PAD4, 0 }, /* 100 VK_NUMPAD4 */
+ {0x35, 0, CTL_PAD5, ALT_PAD5, 0 }, /* 101 VK_NUMPAD5 */
+ {0x36, 0, CTL_PAD6, ALT_PAD6, 0 }, /* 102 VK_NUMPAD6 */
+ {0x37, 0, CTL_PAD7, ALT_PAD7, 0 }, /* 103 VK_NUMPAD7 */
+ {0x38, 0, CTL_PAD8, ALT_PAD8, 0 }, /* 104 VK_NUMPAD8 */
+ {0x39, 0, CTL_PAD9, ALT_PAD9, 0 }, /* 105 VK_NUMPAD9 */
+ {PADSTAR, SHF_PADSTAR,CTL_PADSTAR, ALT_PADSTAR,999 }, /* 106 VK_MULTIPLY*/
+ {PADPLUS, SHF_PADPLUS,CTL_PADPLUS, ALT_PADPLUS,999 }, /* 107 VK_ADD */
+ {0, 0, 0, 0, 0 }, /* 108 VK_SEPARATOR */
+ {PADMINUS, SHF_PADMINUS,CTL_PADMINUS,ALT_PADMINUS,999}, /* 109 VK_SUBTRACT*/
+ {0x2E, 0, CTL_PADSTOP, ALT_PADSTOP,0 }, /* 110 VK_DECIMAL */
+ {PADSLASH, SHF_PADSLASH,CTL_PADSLASH,ALT_PADSLASH,2 }, /* 111 VK_DIVIDE */
+ {KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37), 0 }, /* 112 VK_F1 */
+ {KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38), 0 }, /* 113 VK_F2 */
+ {KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39), 0 }, /* 114 VK_F3 */
+ {KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40), 0 }, /* 115 VK_F4 */
+ {KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41), 0 }, /* 116 VK_F5 */
+ {KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42), 0 }, /* 117 VK_F6 */
+ {KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43), 0 }, /* 118 VK_F7 */
+ {KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44), 0 }, /* 119 VK_F8 */
+ {KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45), 0 }, /* 120 VK_F9 */
+ {KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46), 0 }, /* 121 VK_F10 */
+ {KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47), 0 }, /* 122 VK_F11 */
+ {KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48), 0 }, /* 123 VK_F12 */
+
+ /* 124 through 218 */
+
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0},
+
+ {0x5B, 0x7B, 0x1B, ALT_LBRACKET,0 }, /* 219 */
+ {0x5C, 0x7C, 0x1C, ALT_BSLASH, 0 }, /* 220 */
+ {0x5D, 0x7D, 0x1D, ALT_RBRACKET,0 }, /* 221 */
+ {0, 0, 0x27, ALT_FQUOTE, 0 }, /* 222 */
+ {0, 0, 0, 0, 0 }, /* 223 */
+ {0, 0, 0, 0, 0 }, /* 224 */
+ {0, 0, 0, 0, 0 } /* 225 */
+};
+
+static KPTAB ext_kptab[] =
+{
+ {0, 0, 0, 0, }, /* MUST BE EMPTY */
+ {PADENTER, SHF_PADENTER, CTL_PADENTER, ALT_PADENTER}, /* 13 */
+ {PADSLASH, SHF_PADSLASH, CTL_PADSLASH, ALT_PADSLASH}, /* 111 */
+ {KEY_PPAGE, KEY_SPREVIOUS, CTL_PGUP, ALT_PGUP }, /* 33 */
+ {KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN }, /* 34 */
+ {KEY_END, KEY_SEND, CTL_END, ALT_END }, /* 35 */
+ {KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME }, /* 36 */
+ {KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT }, /* 37 */
+ {KEY_UP, KEY_SUP, CTL_UP, ALT_UP }, /* 38 */
+ {KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT }, /* 39 */
+ {KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN }, /* 40 */
+ {KEY_IC, KEY_SIC, CTL_INS, ALT_INS }, /* 45 */
+ {KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL }, /* 46 */
+ {PADSLASH, SHF_PADSLASH, CTL_PADSLASH, ALT_PADSLASH}, /* 191 */
+};
+
+/* End of kptab[] */
+
+unsigned long PDC_get_input_fd(void)
+{
+ PDC_LOG(("PDC_get_input_fd() - called\n"));
+
+ return 0L;
+}
+
+void PDC_set_keyboard_binary(bool on)
+{
+ PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
+}
+
+/* check if a key or mouse event is waiting */
+
+bool PDC_check_key(void)
+{
+ if (key_count > 0)
+ return TRUE;
+
+ GetNumberOfConsoleInputEvents(pdc_con_in, &event_count);
+
+ return (event_count != 0);
+}
+
+/* _get_key_count returns 0 if save_ip doesn't contain an event which
+ should be passed back to the user. This function filters "useless"
+ events.
+
+ The function returns the number of keys waiting. This may be > 1
+ if the repetition of real keys pressed so far are > 1.
+
+ Returns 0 on NUMLOCK, CAPSLOCK, SCROLLLOCK.
+
+ Returns 1 for SHIFT, ALT, CTRL only if no other key has been pressed
+ in between, and SP->return_key_modifiers is set; these are returned
+ on keyup.
+
+ Normal keys are returned on keydown only. The number of repetitions
+ are returned. Dead keys (diacritics) are omitted. See below for a
+ description.
+*/
+
+static int _get_key_count(void)
+{
+ int num_keys = 0, vk;
+
+ PDC_LOG(("_get_key_count() - called\n"));
+
+ vk = KEV.wVirtualKeyCode;
+
+ if (KEV.bKeyDown)
+ {
+ /* key down */
+
+ save_press = 0;
+
+ if (vk == VK_CAPITAL || vk == VK_NUMLOCK || vk == VK_SCROLL)
+ {
+ /* throw away these modifiers */
+ }
+ else if (vk == VK_SHIFT || vk == VK_CONTROL || vk == VK_MENU)
+ {
+ /* These keys are returned on keyup only. */
+
+ save_press = vk;
+ switch (vk)
+ {
+ case VK_SHIFT:
+ left_key = GetKeyState(VK_LSHIFT);
+ break;
+ case VK_CONTROL:
+ left_key = GetKeyState(VK_LCONTROL);
+ break;
+ case VK_MENU:
+ left_key = GetKeyState(VK_LMENU);
+ }
+ }
+ else
+ {
+ /* Check for diacritics. These are dead keys. Some locales
+ have modified characters like umlaut-a, which is an "a"
+ with two dots on it. In some locales you have to press a
+ special key (the dead key) immediately followed by the
+ "a" to get a composed umlaut-a. The special key may have
+ a normal meaning with different modifiers. */
+
+ if (KEV.uChar.UnicodeChar || !(MapVirtualKey(vk, 2) & 0x80000000))
+ num_keys = KEV.wRepeatCount;
+ }
+ }
+ else
+ {
+ /* key up */
+
+ /* Only modifier keys or the results of ALT-numpad entry are
+ returned on keyup */
+
+ if ((vk == VK_MENU && KEV.uChar.UnicodeChar) ||
+ ((vk == VK_SHIFT || vk == VK_CONTROL || vk == VK_MENU) &&
+ vk == save_press))
+ {
+ save_press = 0;
+ num_keys = 1;
+ }
+ }
+
+ PDC_LOG(("_get_key_count() - returning: num_keys %d\n", num_keys));
+
+ return num_keys;
+}
+
+/* _process_key_event returns -1 if the key in save_ip should be
+ ignored. Otherwise it returns the keycode which should be returned
+ by PDC_get_key(). save_ip must be a key event.
+
+ CTRL-ALT support has been disabled, when is it emitted plainly? */
+
+static int _process_key_event(void)
+{
+ int key = (unsigned short)KEV.uChar.UnicodeChar;
+ WORD vk = KEV.wVirtualKeyCode;
+ DWORD state = KEV.dwControlKeyState;
+
+ int idx;
+ BOOL enhanced;
+
+ SP->key_code = TRUE;
+
+ /* Save the key modifiers if required. Do this first to allow to
+ detect e.g. a pressed CTRL key after a hit of NUMLOCK. */
+
+ if (SP->save_key_modifiers)
+ {
+ if (state & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED))
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT;
+
+ if (state & SHIFT_PRESSED)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
+
+ if (state & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED))
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
+
+ if (state & NUMLOCK_ON)
+ pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
+ }
+
+ /* Handle modifier keys hit by themselves */
+
+ switch (vk)
+ {
+ case VK_SHIFT: /* shift */
+ if (!SP->return_key_modifiers)
+ return -1;
+
+ return (left_key & 0x8000) ? KEY_SHIFT_L : KEY_SHIFT_R;
+
+ case VK_CONTROL: /* control */
+ if (!SP->return_key_modifiers)
+ return -1;
+
+ return (left_key & 0x8000) ? KEY_CONTROL_L : KEY_CONTROL_R;
+
+ case VK_MENU: /* alt */
+ if (!key)
+ {
+ if (!SP->return_key_modifiers)
+ return -1;
+
+ return (left_key & 0x8000) ? KEY_ALT_L : KEY_ALT_R;
+ }
+ }
+
+ /* The system may emit Ascii or Unicode characters depending on
+ whether ReadConsoleInputA or ReadConsoleInputW is used.
+
+ Normally, if key != 0 then the system did the translation
+ successfully. But this is not true for LEFT_ALT (different to
+ RIGHT_ALT). In case of LEFT_ALT we can get key != 0. So
+ check for this first. */
+
+ if (key && ( !(state & LEFT_ALT_PRESSED) ||
+ (state & RIGHT_ALT_PRESSED) ))
+ {
+ /* This code should catch all keys returning a printable
+ character. Characters above 0x7F should be returned as
+ positive codes. But if'ndef NUMKEYPAD we have to return
+ extended keycodes for keypad codes. */
+
+#ifndef NUMKEYPAD
+ if (kptab[vk].extended == 0)
+#endif
+ {
+ SP->key_code = FALSE;
+ return key;
+ }
+ }
+
+ /* This case happens if a functional key has been entered. */
+
+ if ((state & ENHANCED_KEY) && (kptab[vk].extended != 999))
+ {
+ enhanced = TRUE;
+ idx = kptab[vk].extended;
+ }
+ else
+ {
+ enhanced = FALSE;
+ idx = vk;
+ }
+
+ if (state & SHIFT_PRESSED)
+ key = enhanced ? ext_kptab[idx].shift : kptab[idx].shift;
+
+ else if (state & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED))
+ key = enhanced ? ext_kptab[idx].control : kptab[idx].control;
+
+ else if (state & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED))
+ key = enhanced ? ext_kptab[idx].alt : kptab[idx].alt;
+
+ else
+ key = enhanced ? ext_kptab[idx].normal : kptab[idx].normal;
+
+ if (key < KEY_CODE_YES)
+ SP->key_code = FALSE;
+
+ return key;
+}
+
+static int _process_mouse_event(void)
+{
+ static const DWORD button_mask[] = {1, 4, 2};
+ short action, shift_flags = 0;
+ int i;
+
+ save_press = 0;
+ SP->key_code = TRUE;
+
+ memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS));
+
+ /* Handle scroll wheel */
+
+ if (MEV.dwEventFlags == 4)
+ {
+ pdc_mouse_status.changes = (MEV.dwButtonState & 0xFF000000) ?
+ PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP;
+
+ pdc_mouse_status.x = -1;
+ pdc_mouse_status.y = -1;
+
+ memset(&old_mouse_status, 0, sizeof(old_mouse_status));
+
+ return KEY_MOUSE;
+ }
+
+ action = (MEV.dwEventFlags == 2) ? BUTTON_DOUBLE_CLICKED :
+ ((MEV.dwEventFlags == 1) ? BUTTON_MOVED : BUTTON_PRESSED);
+
+ for (i = 0; i < 3; i++)
+ pdc_mouse_status.button[i] =
+ (MEV.dwButtonState & button_mask[i]) ? action : 0;
+
+ if (action == BUTTON_PRESSED && MEV.dwButtonState & 7 && SP->mouse_wait)
+ {
+ /* Check for a click -- a PRESS followed immediately by a release */
+
+ if (!event_count)
+ {
+ napms(SP->mouse_wait);
+
+ GetNumberOfConsoleInputEvents(pdc_con_in, &event_count);
+ }
+
+ if (event_count)
+ {
+ INPUT_RECORD ip;
+ DWORD count;
+ bool have_click = FALSE;
+
+ PeekConsoleInput(pdc_con_in, &ip, 1, &count);
+
+ for (i = 0; i < 3; i++)
+ {
+ if (pdc_mouse_status.button[i] == BUTTON_PRESSED &&
+ !(ip.Event.MouseEvent.dwButtonState & button_mask[i]))
+ {
+ pdc_mouse_status.button[i] = BUTTON_CLICKED;
+ have_click = TRUE;
+ }
+ }
+
+ /* If a click was found, throw out the event */
+
+ if (have_click)
+ ReadConsoleInput(pdc_con_in, &ip, 1, &count);
+ }
+ }
+
+ pdc_mouse_status.x = MEV.dwMousePosition.X;
+ pdc_mouse_status.y = MEV.dwMousePosition.Y;
+
+ pdc_mouse_status.changes = 0;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (old_mouse_status.button[i] != pdc_mouse_status.button[i])
+ pdc_mouse_status.changes |= (1 << i);
+
+ if (pdc_mouse_status.button[i] == BUTTON_MOVED)
+ {
+ /* Discard non-moved "moves" */
+
+ if (pdc_mouse_status.x == old_mouse_status.x &&
+ pdc_mouse_status.y == old_mouse_status.y)
+ return -1;
+
+ /* Motion events always flag the button as changed */
+
+ pdc_mouse_status.changes |= (1 << i);
+ pdc_mouse_status.changes |= PDC_MOUSE_MOVED;
+ break;
+ }
+ }
+
+ old_mouse_status = pdc_mouse_status;
+
+ /* Treat click events as release events for comparison purposes */
+
+ for (i = 0; i < 3; i++)
+ {
+ if (old_mouse_status.button[i] == BUTTON_CLICKED ||
+ old_mouse_status.button[i] == BUTTON_DOUBLE_CLICKED)
+ old_mouse_status.button[i] = BUTTON_RELEASED;
+ }
+
+ /* Check for SHIFT/CONTROL/ALT */
+
+ if (MEV.dwControlKeyState & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED))
+ shift_flags |= BUTTON_ALT;
+
+ if (MEV.dwControlKeyState & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED))
+ shift_flags |= BUTTON_CONTROL;
+
+ if (MEV.dwControlKeyState & SHIFT_PRESSED)
+ shift_flags |= BUTTON_SHIFT;
+
+ if (shift_flags)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ if (pdc_mouse_status.changes & (1 << i))
+ pdc_mouse_status.button[i] |= shift_flags;
+ }
+ }
+
+ return KEY_MOUSE;
+}
+
+/* return the next available key or mouse event */
+
+int PDC_get_key(void)
+{
+ pdc_key_modifiers = 0L;
+
+ if (!key_count)
+ {
+ DWORD count;
+
+ ReadConsoleInput(pdc_con_in, &save_ip, 1, &count);
+ event_count--;
+
+ if (save_ip.EventType == MOUSE_EVENT)
+ key_count = 1;
+ else if (save_ip.EventType == KEY_EVENT)
+ key_count = _get_key_count();
+ }
+
+ if (key_count)
+ {
+ key_count--;
+
+ switch (save_ip.EventType)
+ {
+ case KEY_EVENT:
+ return _process_key_event();
+
+ case MOUSE_EVENT:
+ return _process_mouse_event();
+ }
+ }
+
+ return -1;
+}
+
+/* discard any pending keyboard or mouse input -- this is the core
+ routine for flushinp() */
+
+void PDC_flushinp(void)
+{
+ PDC_LOG(("PDC_flushinp() - called\n"));
+
+ FlushConsoleInputBuffer(pdc_con_in);
+}
+
+int PDC_mouse_set(void)
+{
+ /* If turning on mouse input: Set ENABLE_MOUSE_INPUT, and clear
+ all other flags, including the extended flags;
+ If turning off the mouse: Set QuickEdit Mode to the status it
+ had on startup, and clear all other flags */
+
+ SetConsoleMode(pdc_con_in, SP->_trap_mbe ?
+ (ENABLE_MOUSE_INPUT|0x0080) : (pdc_quick_edit|0x0080));
+
+ memset(&old_mouse_status, 0, sizeof(old_mouse_status));
+
+ return OK;
+}
+
+int PDC_modifiers_set(void)
+{
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcscrn.c b/payloads/libpayload/curses/PDCurses/win32/pdcscrn.c
new file mode 100644
index 0000000..12c1ff3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcscrn.c
@@ -0,0 +1,620 @@
+/* Public Domain Curses */
+
+#include "pdcwin.h"
+
+RCSID("$Id: pdcscrn.c,v 1.92 2008/07/20 20:12:04 wmcbrine Exp $")
+
+#ifdef CHTYPE_LONG
+# define PDC_OFFSET 32
+#else
+# define PDC_OFFSET 8
+#endif
+
+/* COLOR_PAIR to attribute encoding table. */
+
+unsigned char *pdc_atrtab = (unsigned char *)NULL;
+
+HANDLE pdc_con_out = INVALID_HANDLE_VALUE;
+HANDLE pdc_con_in = INVALID_HANDLE_VALUE;
+
+DWORD pdc_quick_edit;
+
+static short curstoreal[16], realtocurs[16] =
+{
+ COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED,
+ COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8,
+ COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8,
+ COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8
+};
+
+enum { PDC_RESTORE_NONE, PDC_RESTORE_BUFFER, PDC_RESTORE_WINDOW };
+
+/* Struct for storing console registry keys, and for use with the
+ undocumented WM_SETCONSOLEINFO message. Originally by James Brown,
+ www.catch22.net. */
+
+static struct
+{
+ ULONG Length;
+ COORD ScreenBufferSize;
+ COORD WindowSize;
+ ULONG WindowPosX;
+ ULONG WindowPosY;
+
+ COORD FontSize;
+ ULONG FontFamily;
+ ULONG FontWeight;
+ WCHAR FaceName[32];
+
+ ULONG CursorSize;
+ ULONG FullScreen;
+ ULONG QuickEdit;
+ ULONG AutoPosition;
+ ULONG InsertMode;
+
+ USHORT ScreenColors;
+ USHORT PopupColors;
+ ULONG HistoryNoDup;
+ ULONG HistoryBufferSize;
+ ULONG NumberOfHistoryBuffers;
+
+ COLORREF ColorTable[16];
+
+ ULONG CodePage;
+ HWND Hwnd;
+
+ WCHAR ConsoleTitle[0x100];
+} console_info;
+
+static CONSOLE_SCREEN_BUFFER_INFO orig_scr;
+
+static CHAR_INFO *ci_save = NULL;
+static DWORD old_console_mode = 0;
+
+static bool is_nt;
+
+static HWND _find_console_handle(void)
+{
+ TCHAR orgtitle[1024], temptitle[1024];
+ HWND wnd;
+
+ GetConsoleTitle(orgtitle, 1024);
+
+ wsprintf(temptitle, TEXT("%d/%d"), GetTickCount(), GetCurrentProcessId());
+ SetConsoleTitle(temptitle);
+
+ Sleep(40);
+
+ wnd = FindWindow(NULL, temptitle);
+
+ SetConsoleTitle(orgtitle);
+
+ return wnd;
+}
+
+/* Undocumented console message */
+
+#define WM_SETCONSOLEINFO (WM_USER + 201)
+
+/* Wrapper around WM_SETCONSOLEINFO. We need to create the necessary
+ section (file-mapping) object in the context of the process which
+ owns the console, before posting the message. Originally by JB. */
+
+static void _set_console_info(void)
+{
+ CONSOLE_SCREEN_BUFFER_INFO csbi;
+ CONSOLE_CURSOR_INFO cci;
+ DWORD dwConsoleOwnerPid;
+ HANDLE hProcess;
+ HANDLE hSection, hDupSection;
+ PVOID ptrView;
+
+ /* Each-time initialization for console_info */
+
+ GetConsoleCursorInfo(pdc_con_out, &cci);
+ console_info.CursorSize = cci.dwSize;
+
+ GetConsoleScreenBufferInfo(pdc_con_out, &csbi);
+ console_info.ScreenBufferSize = csbi.dwSize;
+
+ console_info.WindowSize.X = csbi.srWindow.Right - csbi.srWindow.Left + 1;
+ console_info.WindowSize.Y = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
+
+ console_info.WindowPosX = csbi.srWindow.Left;
+ console_info.WindowPosY = csbi.srWindow.Top;
+
+ /* Open the process which "owns" the console */
+
+ GetWindowThreadProcessId(console_info.Hwnd, &dwConsoleOwnerPid);
+
+ hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwConsoleOwnerPid);
+
+ /* Create a SECTION object backed by page-file, then map a view of
+ this section into the owner process so we can write the contents
+ of the CONSOLE_INFO buffer into it */
+
+ hSection = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE,
+ 0, sizeof(console_info), 0);
+
+ /* Copy our console structure into the section-object */
+
+ ptrView = MapViewOfFile(hSection, FILE_MAP_WRITE|FILE_MAP_READ,
+ 0, 0, sizeof(console_info));
+
+ memcpy(ptrView, &console_info, sizeof(console_info));
+
+ UnmapViewOfFile(ptrView);
+
+ /* Map the memory into owner process */
+
+ DuplicateHandle(GetCurrentProcess(), hSection, hProcess, &hDupSection,
+ 0, FALSE, DUPLICATE_SAME_ACCESS);
+
+ /* Send console window the "update" message */
+
+ SendMessage(console_info.Hwnd, WM_SETCONSOLEINFO, (WPARAM)hDupSection, 0);
+
+ CloseHandle(hSection);
+ CloseHandle(hProcess);
+}
+
+/* One-time initialization for console_info -- color table and font info
+ from the registry; other values from functions. */
+
+static void _init_console_info(void)
+{
+ DWORD scrnmode, len;
+ HKEY reghnd;
+ int i;
+
+ console_info.Hwnd = _find_console_handle();
+ console_info.Length = sizeof(console_info);
+
+ GetConsoleMode(pdc_con_in, &scrnmode);
+ console_info.QuickEdit = !!(scrnmode & 0x0040);
+ console_info.InsertMode = !!(scrnmode & 0x0020);
+
+ console_info.FullScreen = FALSE;
+ console_info.AutoPosition = 0x10000;
+ console_info.ScreenColors = SP->orig_back << 4 | SP->orig_fore;
+ console_info.PopupColors = 0xf5;
+
+ console_info.HistoryNoDup = FALSE;
+ console_info.HistoryBufferSize = 50;
+ console_info.NumberOfHistoryBuffers = 4;
+
+ console_info.CodePage = GetConsoleOutputCP();
+
+ RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Console"), 0,
+ KEY_QUERY_VALUE, ®hnd);
+
+ len = sizeof(DWORD);
+
+ /* Default color table */
+
+ for (i = 0; i < 16; i++)
+ {
+ char tname[13];
+
+ sprintf(tname, "ColorTable%02d", i);
+ RegQueryValueExA(reghnd, tname, NULL, NULL,
+ (LPBYTE)(&(console_info.ColorTable[i])), &len);
+ }
+
+ /* Font info */
+
+ RegQueryValueEx(reghnd, TEXT("FontSize"), NULL, NULL,
+ (LPBYTE)(&console_info.FontSize), &len);
+ RegQueryValueEx(reghnd, TEXT("FontFamily"), NULL, NULL,
+ (LPBYTE)(&console_info.FontFamily), &len);
+ RegQueryValueEx(reghnd, TEXT("FontWeight"), NULL, NULL,
+ (LPBYTE)(&console_info.FontWeight), &len);
+
+ len = sizeof(WCHAR) * 32;
+ RegQueryValueExW(reghnd, L"FaceName", NULL, NULL,
+ (LPBYTE)(console_info.FaceName), &len);
+
+ RegCloseKey(reghnd);
+}
+
+/* close the physical screen -- may restore the screen to its state
+ before PDC_scr_open(); miscellaneous cleanup */
+
+void PDC_scr_close(void)
+{
+ COORD origin;
+ SMALL_RECT rect;
+
+ PDC_LOG(("PDC_scr_close() - called\n"));
+
+ PDC_reset_shell_mode();
+
+ if (SP->_restore != PDC_RESTORE_NONE)
+ {
+ if (SP->_restore == PDC_RESTORE_WINDOW)
+ {
+ rect.Top = orig_scr.srWindow.Top;
+ rect.Left = orig_scr.srWindow.Left;
+ rect.Bottom = orig_scr.srWindow.Bottom;
+ rect.Right = orig_scr.srWindow.Right;
+ }
+ else /* PDC_RESTORE_BUFFER */
+ {
+ rect.Top = rect.Left = 0;
+ rect.Bottom = orig_scr.dwSize.Y - 1;
+ rect.Right = orig_scr.dwSize.X - 1;
+ }
+
+ origin.X = origin.Y = 0;
+
+ if (!WriteConsoleOutput(pdc_con_out, ci_save, orig_scr.dwSize,
+ origin, &rect))
+ return;
+ }
+
+ if (SP->visibility != 1)
+ curs_set(1);
+
+ /* Position cursor to the bottom left of the screen. */
+
+ PDC_gotoyx(PDC_get_buffer_rows() - 2, 0);
+}
+
+void PDC_scr_free(void)
+{
+ if (SP)
+ free(SP);
+ if (pdc_atrtab)
+ free(pdc_atrtab);
+
+ pdc_atrtab = (unsigned char *)NULL;
+}
+
+/* open the physical screen -- allocate SP, miscellaneous intialization,
+ and may save the existing screen for later restoration */
+
+int PDC_scr_open(int argc, char **argv)
+{
+ COORD bufsize, origin;
+ SMALL_RECT rect;
+ const char *str;
+ CONSOLE_SCREEN_BUFFER_INFO csbi;
+ int i;
+
+ PDC_LOG(("PDC_scr_open() - called\n"));
+
+ SP = calloc(1, sizeof(SCREEN));
+ pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1);
+
+ if (!SP || !pdc_atrtab)
+ return ERR;
+
+ for (i = 0; i < 16; i++)
+ curstoreal[realtocurs[i]] = i;
+
+ pdc_con_out = GetStdHandle(STD_OUTPUT_HANDLE);
+ pdc_con_in = GetStdHandle(STD_INPUT_HANDLE);
+
+ if (GetFileType(pdc_con_in) != FILE_TYPE_CHAR)
+ {
+ fprintf(stderr, "\nRedirection is not supported.\n");
+ exit(1);
+ }
+
+ is_nt = !(GetVersion() & 0x80000000);
+
+ GetConsoleScreenBufferInfo(pdc_con_out, &csbi);
+ GetConsoleScreenBufferInfo(pdc_con_out, &orig_scr);
+ GetConsoleMode(pdc_con_in, &old_console_mode);
+
+ /* preserve QuickEdit Mode setting for use in PDC_mouse_set() when
+ the mouse is not enabled -- other console input settings are
+ cleared */
+
+ pdc_quick_edit = old_console_mode & 0x0040;
+
+ SP->lines = (str = getenv("LINES")) ? atoi(str) : PDC_get_rows();
+ SP->cols = (str = getenv("COLS")) ? atoi(str) : PDC_get_columns();
+
+ SP->mouse_wait = PDC_CLICK_PERIOD;
+ SP->audible = TRUE;
+
+ if (SP->lines < 2 || SP->lines > csbi.dwMaximumWindowSize.Y)
+ {
+ fprintf(stderr, "LINES value must be >= 2 and <= %d: got %d\n",
+ csbi.dwMaximumWindowSize.Y, SP->lines);
+
+ return ERR;
+ }
+
+ if (SP->cols < 2 || SP->cols > csbi.dwMaximumWindowSize.X)
+ {
+ fprintf(stderr, "COLS value must be >= 2 and <= %d: got %d\n",
+ csbi.dwMaximumWindowSize.X, SP->cols);
+
+ return ERR;
+ }
+
+ SP->orig_fore = csbi.wAttributes & 0x0f;
+ SP->orig_back = (csbi.wAttributes & 0xf0) >> 4;
+
+ SP->orig_attr = TRUE;
+
+ SP->_restore = PDC_RESTORE_NONE;
+
+ if (getenv("PDC_RESTORE_SCREEN"))
+ {
+ /* Attempt to save the complete console buffer */
+
+ ci_save = malloc(orig_scr.dwSize.X * orig_scr.dwSize.Y *
+ sizeof(CHAR_INFO));
+
+ if (!ci_save)
+ {
+ PDC_LOG(("PDC_scr_open() - malloc failure (1)\n"));
+
+ return ERR;
+ }
+
+ bufsize.X = orig_scr.dwSize.X;
+ bufsize.Y = orig_scr.dwSize.Y;
+
+ origin.X = origin.Y = 0;
+
+ rect.Top = rect.Left = 0;
+ rect.Bottom = orig_scr.dwSize.Y - 1;
+ rect.Right = orig_scr.dwSize.X - 1;
+
+ if (!ReadConsoleOutput(pdc_con_out, ci_save, bufsize, origin, &rect))
+ {
+ /* We can't save the complete buffer, so try and save just
+ the displayed window */
+
+ free(ci_save);
+ ci_save = NULL;
+
+ bufsize.X = orig_scr.srWindow.Right - orig_scr.srWindow.Left + 1;
+ bufsize.Y = orig_scr.srWindow.Bottom - orig_scr.srWindow.Top + 1;
+
+ ci_save = malloc(bufsize.X * bufsize.Y * sizeof(CHAR_INFO));
+
+ if (!ci_save)
+ {
+ PDC_LOG(("PDC_scr_open() - malloc failure (2)\n"));
+
+ return ERR;
+ }
+
+ origin.X = origin.Y = 0;
+
+ rect.Top = orig_scr.srWindow.Top;
+ rect.Left = orig_scr.srWindow.Left;
+ rect.Bottom = orig_scr.srWindow.Bottom;
+ rect.Right = orig_scr.srWindow.Right;
+
+ if (!ReadConsoleOutput(pdc_con_out, ci_save, bufsize,
+ origin, &rect))
+ {
+#ifdef PDCDEBUG
+ CHAR LastError[256];
+
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL,
+ GetLastError(), MAKELANGID(LANG_NEUTRAL,
+ SUBLANG_DEFAULT), LastError, 256, NULL);
+
+ PDC_LOG(("PDC_scr_open() - %s\n", LastError));
+#endif
+ free(ci_save);
+ ci_save = NULL;
+
+ return ERR;
+ }
+
+ SP->_restore = PDC_RESTORE_WINDOW;
+ }
+ else
+ SP->_restore = PDC_RESTORE_BUFFER;
+ }
+
+ SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL);
+
+ PDC_reset_prog_mode();
+
+ SP->mono = FALSE;
+
+ return OK;
+}
+
+ /* Calls SetConsoleWindowInfo with the given parameters, but fits them
+ if a scoll bar shrinks the maximum possible value. The rectangle
+ must at least fit in a half-sized window. */
+
+static BOOL _fit_console_window(HANDLE con_out, CONST SMALL_RECT *rect)
+{
+ SMALL_RECT run;
+ SHORT mx, my;
+
+ if (SetConsoleWindowInfo(con_out, TRUE, rect))
+ return TRUE;
+
+ run = *rect;
+ run.Right /= 2;
+ run.Bottom /= 2;
+
+ mx = run.Right;
+ my = run.Bottom;
+
+ if (!SetConsoleWindowInfo(con_out, TRUE, &run))
+ return FALSE;
+
+ for (run.Right = rect->Right; run.Right >= mx; run.Right--)
+ if (SetConsoleWindowInfo(con_out, TRUE, &run))
+ break;
+
+ if (run.Right < mx)
+ return FALSE;
+
+ for (run.Bottom = rect->Bottom; run.Bottom >= my; run.Bottom--)
+ if (SetConsoleWindowInfo(con_out, TRUE, &run))
+ return TRUE;
+
+ return FALSE;
+}
+
+/* the core of resize_term() */
+
+int PDC_resize_screen(int nlines, int ncols)
+{
+ SMALL_RECT rect;
+ COORD size, max;
+
+ if (nlines < 2 || ncols < 2)
+ return ERR;
+
+ max = GetLargestConsoleWindowSize(pdc_con_out);
+
+ rect.Left = rect.Top = 0;
+ rect.Right = ncols - 1;
+
+ if (rect.Right > max.X)
+ rect.Right = max.X;
+
+ rect.Bottom = nlines - 1;
+
+ if (rect.Bottom > max.Y)
+ rect.Bottom = max.Y;
+
+ size.X = rect.Right + 1;
+ size.Y = rect.Bottom + 1;
+
+ _fit_console_window(pdc_con_out, &rect);
+ SetConsoleScreenBufferSize(pdc_con_out, size);
+ _fit_console_window(pdc_con_out, &rect);
+ SetConsoleScreenBufferSize(pdc_con_out, size);
+ SetConsoleActiveScreenBuffer(pdc_con_out);
+
+ return OK;
+}
+
+void PDC_reset_prog_mode(void)
+{
+ PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
+
+ if (is_nt)
+ {
+ COORD bufsize;
+ SMALL_RECT rect;
+
+ bufsize.X = orig_scr.srWindow.Right - orig_scr.srWindow.Left + 1;
+ bufsize.Y = orig_scr.srWindow.Bottom - orig_scr.srWindow.Top + 1;
+
+ rect.Top = rect.Left = 0;
+ rect.Bottom = bufsize.Y - 1;
+ rect.Right = bufsize.X - 1;
+
+ SetConsoleScreenBufferSize(pdc_con_out, bufsize);
+ SetConsoleWindowInfo(pdc_con_out, TRUE, &rect);
+ SetConsoleScreenBufferSize(pdc_con_out, bufsize);
+ SetConsoleActiveScreenBuffer(pdc_con_out);
+ }
+
+ PDC_mouse_set();
+}
+
+void PDC_reset_shell_mode(void)
+{
+ PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
+
+ if (is_nt)
+ {
+ SetConsoleScreenBufferSize(pdc_con_out, orig_scr.dwSize);
+ SetConsoleWindowInfo(pdc_con_out, TRUE, &orig_scr.srWindow);
+ SetConsoleScreenBufferSize(pdc_con_out, orig_scr.dwSize);
+ SetConsoleWindowInfo(pdc_con_out, TRUE, &orig_scr.srWindow);
+ SetConsoleActiveScreenBuffer(pdc_con_out);
+ }
+
+ SetConsoleMode(pdc_con_in, old_console_mode);
+}
+
+void PDC_restore_screen_mode(int i)
+{
+}
+
+void PDC_save_screen_mode(int i)
+{
+}
+
+void PDC_init_pair(short pair, short fg, short bg)
+{
+ unsigned char att, temp_bg;
+ chtype i;
+
+ fg = curstoreal[fg];
+ bg = curstoreal[bg];
+
+ for (i = 0; i < PDC_OFFSET; i++)
+ {
+ att = fg | (bg << 4);
+
+ if (i & (A_REVERSE >> PDC_ATTR_SHIFT))
+ att = bg | (fg << 4);
+ if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT))
+ att = 1;
+ if (i & (A_INVIS >> PDC_ATTR_SHIFT))
+ {
+ temp_bg = att >> 4;
+ att = temp_bg << 4 | temp_bg;
+ }
+ if (i & (A_BOLD >> PDC_ATTR_SHIFT))
+ att |= 8;
+ if (i & (A_BLINK >> PDC_ATTR_SHIFT))
+ att |= 128;
+
+ pdc_atrtab[pair * PDC_OFFSET + i] = att;
+ }
+}
+
+int PDC_pair_content(short pair, short *fg, short *bg)
+{
+ *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F];
+ *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4];
+
+ return OK;
+}
+
+bool PDC_can_change_color(void)
+{
+ return is_nt;
+}
+
+int PDC_color_content(short color, short *red, short *green, short *blue)
+{
+ DWORD col;
+
+ if (!console_info.Hwnd)
+ _init_console_info();
+
+ col = console_info.ColorTable[curstoreal[color]];
+
+ *red = DIVROUND(GetRValue(col) * 1000, 255);
+ *green = DIVROUND(GetGValue(col) * 1000, 255);
+ *blue = DIVROUND(GetBValue(col) * 1000, 255);
+
+ return OK;
+}
+
+int PDC_init_color(short color, short red, short green, short blue)
+{
+ if (!console_info.Hwnd)
+ _init_console_info();
+
+ console_info.ColorTable[curstoreal[color]] =
+ RGB(DIVROUND(red * 255, 1000),
+ DIVROUND(green * 255, 1000),
+ DIVROUND(blue * 255, 1000));
+
+ _set_console_info();
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcsetsc.c b/payloads/libpayload/curses/PDCurses/win32/pdcsetsc.c
new file mode 100644
index 0000000..237b356
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcsetsc.c
@@ -0,0 +1,89 @@
+/* Public Domain Curses */
+
+#include "pdcwin.h"
+
+RCSID("$Id: pdcsetsc.c,v 1.40 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdcsetsc
+
+ Synopsis:
+ int PDC_set_blink(bool blinkon);
+ void PDC_set_title(const char *title);
+
+ Description:
+ PDC_set_blink() toggles whether the A_BLINK attribute sets an
+ actual blink mode (TRUE), or sets the background color to high
+ intensity (FALSE). The default is platform-dependent (FALSE in
+ most cases). It returns OK if it could set the state to match
+ the given parameter, ERR otherwise. Current platforms also
+ adjust the value of COLORS according to this function -- 16 for
+ FALSE, and 8 for TRUE.
+
+ PDC_set_title() sets the title of the window in which the curses
+ program is running. This function may not do anything on some
+ platforms. (Currently it only works in Win32 and X11.)
+
+ Portability X/Open BSD SYS V
+ PDC_set_blink - - -
+ PDC_set_title - - -
+
+**man-end****************************************************************/
+
+int PDC_curs_set(int visibility)
+{
+ CONSOLE_CURSOR_INFO cci;
+ int ret_vis;
+
+ PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
+
+ ret_vis = SP->visibility;
+
+ if (GetConsoleCursorInfo(pdc_con_out, &cci) == FALSE)
+ return ERR;
+
+ switch(visibility)
+ {
+ case 0: /* invisible */
+ cci.bVisible = FALSE;
+ break;
+ case 2: /* highly visible */
+ cci.bVisible = TRUE;
+ cci.dwSize = 95;
+ break;
+ default: /* normal visibility */
+ cci.bVisible = TRUE;
+ cci.dwSize = SP->orig_cursor;
+ break;
+ }
+
+ if (SetConsoleCursorInfo(pdc_con_out, &cci) == FALSE)
+ return ERR;
+
+ SP->visibility = visibility;
+ return ret_vis;
+}
+
+void PDC_set_title(const char *title)
+{
+#ifdef PDC_WIDE
+ wchar_t wtitle[512];
+#endif
+ PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
+
+#ifdef PDC_WIDE
+ PDC_mbstowcs(wtitle, title, 511);
+ SetConsoleTitleW(wtitle);
+#else
+ SetConsoleTitleA(title);
+#endif
+}
+
+int PDC_set_blink(bool blinkon)
+{
+ if (pdc_color_started)
+ COLORS = 16;
+
+ return blinkon ? ERR : OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcurses.ico b/payloads/libpayload/curses/PDCurses/win32/pdcurses.ico
new file mode 100644
index 0000000..53a6dde
Binary files /dev/null and b/payloads/libpayload/curses/PDCurses/win32/pdcurses.ico differ
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcurses.rc b/payloads/libpayload/curses/PDCurses/win32/pdcurses.rc
new file mode 100644
index 0000000..1b8bba4
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcurses.rc
@@ -0,0 +1,28 @@
+#include "winver.h"
+
+1 VERSIONINFO
+ FILEVERSION 3,4,0,0
+ PRODUCTVERSION 3,4,0,0
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS VOS_UNKNOWN
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Maintainer", "William McBrine\0"
+ VALUE "FileDescription", "Public Domain Curses\0"
+ VALUE "FileVersion", "3.4.0\0"
+ VALUE "InternalName", "PDCurses\0"
+ VALUE "LegalCopyright", "Public Domain\0"
+ VALUE "OriginalFilename", "PDCURSES.DLL\0"
+ VALUE "ProductName", "Public Domain Curses Library\0"
+ VALUE "ProductVersion", "3.4.0\0"
+ END
+ END
+END
+
+1 ICON DISCARDABLE "PDCURSES.ico"
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcutil.c b/payloads/libpayload/curses/PDCurses/win32/pdcutil.c
new file mode 100644
index 0000000..f7be019
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcutil.c
@@ -0,0 +1,25 @@
+/* Public Domain Curses */
+
+#include "pdcwin.h"
+
+RCSID("$Id: pdcutil.c,v 1.14 2008/07/14 04:24:52 wmcbrine Exp $")
+
+void PDC_beep(void)
+{
+ PDC_LOG(("PDC_beep() - called\n"));
+
+/* MessageBeep(MB_OK); */
+ MessageBeep(0XFFFFFFFF);
+}
+
+void PDC_napms(int ms)
+{
+ PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
+
+ Sleep(ms);
+}
+
+const char *PDC_sysname(void)
+{
+ return "Win32";
+}
diff --git a/payloads/libpayload/curses/PDCurses/win32/pdcwin.h b/payloads/libpayload/curses/PDCurses/win32/pdcwin.h
new file mode 100644
index 0000000..bb3396f
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/pdcwin.h
@@ -0,0 +1,17 @@
+/* Public Domain Curses */
+
+/* $Id: pdcwin.h,v 1.6 2008/07/13 06:36:32 wmcbrine Exp $ */
+
+#ifdef PDC_WIDE
+# define UNICODE
+#endif
+
+#include <windows.h>
+#undef MOUSE_MOVED
+#include <curspriv.h>
+
+extern unsigned char *pdc_atrtab;
+extern HANDLE pdc_con_out, pdc_con_in;
+extern DWORD pdc_quick_edit;
+
+extern int PDC_get_buffer_rows(void);
diff --git a/payloads/libpayload/curses/PDCurses/win32/vcwin32.mak b/payloads/libpayload/curses/PDCurses/win32/vcwin32.mak
new file mode 100644
index 0000000..b8dc404
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/vcwin32.mak
@@ -0,0 +1,136 @@
+# Visual C++ NMakefile for PDCurses library - Win32 VC++ 2.0+
+#
+# Usage: nmake -f [path\]vcwin32.mak [DEBUG=] [DLL=] [WIDE=] [UTF8=] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+O = obj
+
+!ifndef PDCURSES_SRCDIR
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+!include $(PDCURSES_SRCDIR)\libobjs.mif
+
+osdir = $(PDCURSES_SRCDIR)\win32
+
+PDCURSES_WIN_H = $(osdir)\pdcwin.h
+
+CC = cl.exe -nologo
+
+!ifdef DEBUG
+CFLAGS = -Z7 -DPDCDEBUG
+LDFLAGS = -debug -pdb:none
+!else
+CFLAGS = -O1
+LDFLAGS =
+!endif
+
+BASEDEF = $(PDCURSES_SRCDIR)\exp-base.def
+WIDEDEF = $(PDCURSES_SRCDIR)\exp-wide.def
+
+DEFDEPS = $(BASEDEF)
+
+!ifdef WIDE
+WIDEOPT = -DPDC_WIDE
+DEFDEPS = $(DEFDEPS) $(WIDEDEF)
+!endif
+
+!ifdef UTF8
+UTF8OPT = -DPDC_FORCE_UTF8
+!endif
+
+DEFFILE = pdcurses.def
+SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /OUT:pdcurses.dll /DEF:$(DEFFILE)
+
+LINK = link.exe -nologo
+
+CCLIBS = user32.lib advapi32.lib
+# may need to add msvcrt.lib for VC 2.x, VC 5.0 doesn't want it
+#CCLIBS = msvcrt.lib user32.lib advapi32.lib
+
+LIBEXE = lib -nologo
+
+LIBCURSES = pdcurses.lib
+CURSESDLL = pdcurses.dll
+
+!ifdef DLL
+DLLOPT = -DPDC_DLL_BUILD
+PDCLIBS = $(CURSESDLL)
+!else
+PDCLIBS = $(LIBCURSES)
+!endif
+
+BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c $(CFLAGS) $(DLLOPT) \
+$(WIDEOPT) $(UTF8OPT)
+
+all: $(PDCLIBS) $(DEMOS)
+
+clean:
+ -del *.obj
+ -del *.lib
+ -del *.exe
+ -del *.dll
+ -del *.exp
+ -del *.res
+ -del *.def
+
+DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_WIN_H)
+$(DEMOOBJS) : $(PDCURSES_CURSES_H)
+$(DEMOS) : $(LIBCURSES)
+panel.obj : $(PANEL_HEADER)
+terminfo.obj: $(TERM_HEADER)
+
+!ifndef DLL
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS)
+ -copy $(LIBCURSES) panel.lib
+!endif
+
+$(DEFFILE) : $(DEFDEPS)
+ echo LIBRARY pdcurses > $(DEFFILE)
+ echo EXPORTS >> $(DEFFILE)
+ type $(BASEDEF) >> $(DEFFILE)
+!ifdef WIDE
+ type $(WIDEDEF) >> $(DEFFILE)
+!endif
+
+$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) $(DEFFILE) pdcurses.obj
+ $(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(CCLIBS)
+ -copy $(LIBCURSES) panel.lib
+
+pdcurses.res pdcurses.obj: $(osdir)\pdcurses.rc $(osdir)\pdcurses.ico
+ rc /r /fopdcurses.res $(osdir)\pdcurses.rc
+ cvtres /MACHINE:IX86 /NOLOGO /OUT:pdcurses.obj pdcurses.res
+
+{$(srcdir)\}.c{}.obj::
+ $(BUILD) $<
+
+{$(osdir)\}.c{}.obj::
+ $(BUILD) $<
+
+{$(demodir)\}.c{}.obj::
+ $(BUILD) $<
+
+.obj.exe:
+ $(LINK) $(LDFLAGS) $< $(LIBCURSES) $(CCLIBS)
+
+tuidemo.exe: tuidemo.obj tui.obj
+ $(LINK) $(LDFLAGS) $*.obj tui.obj $(LIBCURSES) $(CCLIBS)
+
+tui.obj: $(demodir)\tui.c $(demodir)\tui.h
+ $(BUILD) -I$(demodir) $(demodir)\tui.c
+
+tuidemo.obj: $(demodir)\tuidemo.c
+ $(BUILD) -I$(demodir) $(demodir)\tuidemo.c
+
+PLATFORM1 = Visual C++
+PLATFORM2 = Microsoft Visual C/C++ for Win32
+ARCNAME = pdc$(VER)_vc_w32
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/win32/wccwin32.mak b/payloads/libpayload/curses/PDCurses/win32/wccwin32.mak
new file mode 100644
index 0000000..1363897
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/win32/wccwin32.mak
@@ -0,0 +1,51 @@
+# Watcom WMAKE Makefile for PDCurses library - Win32 Watcom C/C++ 10.6+
+#
+# Usage: wmake -f [win32\]wccwin32.mak [DEBUG=Y] [WIDE=Y] [UTF8=Y] [target]
+#
+# where target can be any of:
+# [all|demos|pdcurses.lib|testcurs.exe...]
+
+!ifdef %PDCURSES_SRCDIR
+PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR)
+!else
+PDCURSES_SRCDIR = ..
+!endif
+
+!include $(PDCURSES_SRCDIR)\version.mif
+
+osdir = $(PDCURSES_SRCDIR)\win32
+
+CC = wcc386
+TARGET = nt
+
+CFLAGS = /ei /zq /wx /i=$(PDCURSES_SRCDIR)
+
+!ifeq DEBUG Y
+CFLAGS += /d2 /DPDCDEBUG
+LDFLAGS = D W A op q sys $(TARGET)
+!else
+CFLAGS += /oneatx
+LDFLAGS = op q sys $(TARGET)
+!endif
+
+!ifeq WIDE Y
+CFLAGS += /DPDC_WIDE
+!endif
+
+!ifeq UTF8 Y
+CFLAGS += /DPDC_FORCE_UTF8
+!endif
+
+LIBEXE = wlib /q /n /t
+
+!include $(PDCURSES_SRCDIR)\watcom.mif
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS)
+ -copy $(LIBCURSES) panel.lib
+
+PLATFORM1 = Watcom C++ Win32
+PLATFORM2 = Open Watcom 1.6 for Win32
+ARCNAME = pdc$(VER)_wcc_w32
+
+!include $(PDCURSES_SRCDIR)\makedist.mif
diff --git a/payloads/libpayload/curses/PDCurses/x11/Makefile.aix.in b/payloads/libpayload/curses/PDCurses/x11/Makefile.aix.in
new file mode 100644
index 0000000..0fe5db7
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/Makefile.aix.in
@@ -0,0 +1,234 @@
+# Makefile for PDCurses library for AIX/X11
+
+SHELL = @SHELL@
+THIS = Makefile
+
+ at SET_MAKE@
+
+PDCURSES_SRCDIR = ..
+
+osdir = .
+srcdir = $(PDCURSES_SRCDIR)/pdcurses
+
+PDCURSES_CONFIG_H =$(PDCURSES_SRCDIR)/config.h
+PDCURSES_CURSES_H =$(PDCURSES_SRCDIR)/curses.h
+PDCURSES_CURSPRIV_H =$(PDCURSES_SRCDIR)/curspriv.h
+PDCURSES_HEADERS =$(PDCURSES_CONFIG_H) $(PDCURSES_CURSES_H) \
+$(PDCURSES_CURSPRIV_H)
+PDCURSES_X11_H =$(osdir)/pdcx11.h
+
+MH_EXTRA_LIBS = @MH_EXTRA_LIBS@
+
+CFLAGS = @CFLAGS@ @DYN_COMP@
+
+CPPFLAGS = @DEFS@ -DXCURSES @SYS_DEFS@ -I$(PDCURSES_SRCDIR)
+
+BUILD = @CC@ -c $(CFLAGS) $(CPPFLAGS) @MH_XINC_DIR@
+
+LINK = @CC@
+LDFLAGS =
+
+LIBCURSES = libXCurses.a
+
+all : $(LIBCURSES)
+
+install :
+ echo Does nothing at the moment
+
+clean :
+ -rm -rf *.o *.sho trace $(LIBCURSES)
+
+distclean: clean
+ -rm -f Makefile
+
+mostlyclean: clean
+
+realclean: distclean
+
+LIBOBJS = addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o \
+clear.o color.o delch.o deleteln.o deprec.o getch.o getstr.o getyx.o \
+inch.o inchstr.o initscr.o inopts.o insch.o insstr.o instr.o kernel.o \
+keyname.o mouse.o move.o outopts.o overlay.o pad.o panel.o printw.o \
+refresh.o scanw.o scr_dump.o scroll.o slk.o termattr.o terminfo.o \
+touch.o util.o window.o debug.o
+
+PDCOBJS = pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcscrn.o pdcsetsc.o \
+pdcutil.o pdcx11.o x11.o sb.o ScrollBox.o
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) curses.exp
+ ld -bnoentry -bM:SRE -bE:curses.exp $(MH_LIBS) $(MH_EXTRA_LIBS) \
+$(LIBOBJS) $(PDCOBJS) -o $@
+
+$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+$(PDCOBJS) : $(PDCURSES_X11_H)
+terminfo.o: $(TERM_HEADER)
+
+curses.exp: ../exp-base.def
+ cat ../exp-base.def > curses.exp
+ echo Xinitscr >> curses.exp
+ echo XCursesExit >> curses.exp
+ echo sb_init >> curses.exp
+ echo sb_set_horz >> curses.exp
+ echo sb_set_vert >> curses.exp
+ echo sb_get_horz >> curses.exp
+ echo sb_get_vert >> curses.exp
+ echo sb_refresh >> curses.exp
+
+addch.o: $(srcdir)/addch.c
+ $(BUILD) $(srcdir)/addch.c
+
+addchstr.o: $(srcdir)/addchstr.c
+ $(BUILD) $(srcdir)/addchstr.c
+
+addstr.o: $(srcdir)/addstr.c
+ $(BUILD) $(srcdir)/addstr.c
+
+attr.o: $(srcdir)/attr.c
+ $(BUILD) $(srcdir)/attr.c
+
+beep.o: $(srcdir)/beep.c
+ $(BUILD) $(srcdir)/beep.c
+
+bkgd.o: $(srcdir)/bkgd.c
+ $(BUILD) $(srcdir)/bkgd.c
+
+border.o: $(srcdir)/border.c
+ $(BUILD) $(srcdir)/border.c
+
+clear.o: $(srcdir)/clear.c
+ $(BUILD) $(srcdir)/clear.c
+
+color.o: $(srcdir)/color.c
+ $(BUILD) $(srcdir)/color.c
+
+delch.o: $(srcdir)/delch.c
+ $(BUILD) $(srcdir)/delch.c
+
+deleteln.o: $(srcdir)/deleteln.c
+ $(BUILD) $(srcdir)/deleteln.c
+
+deprec.o: $(srcdir)/deprec.c
+ $(BUILD) $(srcdir)/deprec.c
+
+getch.o: $(srcdir)/getch.c
+ $(BUILD) $(srcdir)/getch.c
+
+getstr.o: $(srcdir)/getstr.c
+ $(BUILD) $(srcdir)/getstr.c
+
+getyx.o: $(srcdir)/getyx.c
+ $(BUILD) $(srcdir)/getyx.c
+
+inch.o: $(srcdir)/inch.c
+ $(BUILD) $(srcdir)/inch.c
+
+inchstr.o: $(srcdir)/inchstr.c
+ $(BUILD) $(srcdir)/inchstr.c
+
+initscr.o: $(srcdir)/initscr.c
+ $(BUILD) $(srcdir)/initscr.c
+
+inopts.o: $(srcdir)/inopts.c
+ $(BUILD) $(srcdir)/inopts.c
+
+insch.o: $(srcdir)/insch.c
+ $(BUILD) $(srcdir)/insch.c
+
+insstr.o: $(srcdir)/insstr.c
+ $(BUILD) $(srcdir)/insstr.c
+
+instr.o: $(srcdir)/instr.c
+ $(BUILD) $(srcdir)/instr.c
+
+kernel.o: $(srcdir)/kernel.c
+ $(BUILD) $(srcdir)/kernel.c
+
+keyname.o: $(srcdir)/keyname.c
+ $(BUILD) $(srcdir)/keyname.c
+
+mouse.o: $(srcdir)/mouse.c
+ $(BUILD) $(srcdir)/mouse.c
+
+move.o: $(srcdir)/move.c
+ $(BUILD) $(srcdir)/move.c
+
+outopts.o: $(srcdir)/outopts.c
+ $(BUILD) $(srcdir)/outopts.c
+
+overlay.o: $(srcdir)/overlay.c
+ $(BUILD) $(srcdir)/overlay.c
+
+pad.o: $(srcdir)/pad.c
+ $(BUILD) $(srcdir)/pad.c
+
+panel.o: $(srcdir)/panel.c $(PDCURSES_SRCDIR)/panel.h
+ $(BUILD) $(srcdir)/panel.c
+
+printw.o: $(srcdir)/printw.c
+ $(BUILD) $(srcdir)/printw.c
+
+refresh.o: $(srcdir)/refresh.c
+ $(BUILD) $(srcdir)/refresh.c
+
+scanw.o: $(srcdir)/scanw.c
+ $(BUILD) $(srcdir)/scanw.c
+
+scr_dump.o: $(srcdir)/scr_dump.c
+ $(BUILD) $(srcdir)/scr_dump.c
+
+scroll.o: $(srcdir)/scroll.c
+ $(BUILD) $(srcdir)/scroll.c
+
+slk.o: $(srcdir)/slk.c
+ $(BUILD) $(srcdir)/slk.c
+
+termattr.o: $(srcdir)/termattr.c
+ $(BUILD) $(srcdir)/termattr.c
+
+terminfo.o: $(srcdir)/terminfo.c
+ $(BUILD) $(srcdir)/terminfo.c
+
+touch.o: $(srcdir)/touch.c
+ $(BUILD) $(srcdir)/touch.c
+
+util.o: $(srcdir)/util.c
+ $(BUILD) $(srcdir)/util.c
+
+window.o: $(srcdir)/window.c
+ $(BUILD) $(srcdir)/window.c
+
+debug.o: $(srcdir)/debug.c
+ $(BUILD) $(srcdir)/debug.c
+
+pdcclip.o: $(osdir)/pdcclip.c
+ $(BUILD) $(osdir)/pdcclip.c
+
+pdcdisp.o: $(osdir)/pdcdisp.c
+ $(BUILD) $(osdir)/pdcdisp.c
+
+pdcgetsc.o: $(osdir)/pdcgetsc.c
+ $(BUILD) $(osdir)/pdcgetsc.c
+
+pdckbd.o: $(osdir)/pdckbd.c
+ $(BUILD) $(osdir)/pdckbd.c
+
+pdcscrn.o: $(osdir)/pdcscrn.c
+ $(BUILD) $(osdir)/pdcscrn.c
+
+pdcsetsc.o: $(osdir)/pdcsetsc.c
+ $(BUILD) $(osdir)/pdcsetsc.c
+
+pdcutil.o: $(osdir)/pdcutil.c
+ $(BUILD) $(osdir)/pdcutil.c
+
+pdcx11.o: $(osdir)/pdcx11.c
+ $(BUILD) $(osdir)/pdcx11.c
+
+ScrollBox.o: $(osdir)/ScrollBox.c
+ $(BUILD) $(osdir)/ScrollBox.c
+
+sb.o: $(osdir)/sb.c
+ $(BUILD) $(osdir)/sb.c
+
+x11.o: $(osdir)/x11.c
+ $(BUILD) $(osdir)/x11.c
diff --git a/payloads/libpayload/curses/PDCurses/x11/Makefile.in b/payloads/libpayload/curses/PDCurses/x11/Makefile.in
new file mode 100644
index 0000000..d23a214
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/Makefile.in
@@ -0,0 +1,572 @@
+# Makefile for PDCurses library for X11
+
+SHELL = @SHELL@
+THIS = Makefile
+
+ at SET_MAKE@
+
+PDCURSES_SRCDIR = ..
+
+osdir = .
+srcdir = $(PDCURSES_SRCDIR)/pdcurses
+demodir = $(PDCURSES_SRCDIR)/demos
+
+PDCURSES_CONFIG_H =$(PDCURSES_SRCDIR)/config.h
+PDCURSES_CURSES_H =$(PDCURSES_SRCDIR)/curses.h
+PDCURSES_CURSPRIV_H =$(PDCURSES_SRCDIR)/curspriv.h
+PDCURSES_HEADERS =$(PDCURSES_CONFIG_H) $(PDCURSES_CURSES_H) \
+$(PDCURSES_CURSPRIV_H)
+PDCURSES_X11_H =$(osdir)/pdcx11.h
+
+SHLPRE = @SHLPRE@
+SHLPST = @SHLPST@
+LD_RXLIB1 = @LD_RXLIB1@
+LD_RXLIB2 = @MH_XLIBS@ @MH_EXTRA_LIBS@ -lc
+
+CFLAGS = @CFLAGS@
+
+CPPFLAGS = @DEFS@ -DXCURSES @SYS_DEFS@ -I$(PDCURSES_SRCDIR)
+
+BUILD = @CC@ -c $(CFLAGS) $(CPPFLAGS) @MH_XINC_DIR@
+DYN_BUILD = @O2SAVE@ $(BUILD) @DYN_COMP@ @CC2O@
+
+LINK = @PURIFY@ @CC@
+#LDFLAGS = $(LIB_DEPS) @LDFLAGS@ @LIBS@ @MH_XLIBS@ @MH_EXTRA_LIBS@
+LDFLAGS = $(LIBCURSES) @LDFLAGS@ @LIBS@ @MH_XLIBS@ @MH_EXTRA_LIBS@
+
+RANLIB = @RANLIB@
+
+LIBCURSES = libXCurses.a
+
+LIB_DEPS = -L$(PDCURSES_SRCDIR)/x11 -lXCurses
+
+PDCLIBS = $(LIBCURSES) @SHL_TARGETS@
+
+DEMOS = firework newdemo ptest rain testcurs tuidemo worm xmas
+DEMOOBJS = firework.o newdemo.o ptest.o rain.o testcurs.o tui.o \
+tuidemo.o worm.o xmas.o
+
+SHLFILE = XCurses
+
+all: $(PDCLIBS) $(DEMOS)
+
+install:
+ echo Does nothing at the moment
+
+clean:
+ -rm -rf *.o *.sho trace $(PDCLIBS) $(DEMOS)
+
+demos: $(DEMOS)
+
+distclean: clean
+ -rm -f Makefile
+
+mostlyclean: clean
+
+realclean: distclean
+
+LIBOBJS = addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o \
+clear.o color.o delch.o deleteln.o deprec.o getch.o getstr.o getyx.o \
+inch.o inchstr.o initscr.o inopts.o insch.o insstr.o instr.o kernel.o \
+keyname.o mouse.o move.o outopts.o overlay.o pad.o panel.o printw.o \
+refresh.o scanw.o scr_dump.o scroll.o slk.o termattr.o terminfo.o \
+touch.o util.o window.o debug.o
+
+PDCOBJS = pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcscrn.o pdcsetsc.o \
+pdcutil.o pdcx11.o x11.o sb.o ScrollBox.o
+
+LIBSHOBJS = $(LIBOBJS:.o=.sho)
+PDCSHOBJS = $(PDCOBJS:.o=.sho)
+
+SHOFILES = $(LIBSHOBJS) $(PDCSHOBJS)
+
+$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
+ ar rv $@ $?
+ -$(RANLIB) $@
+
+$(SHLPRE)$(SHLFILE)$(SHLPST) : $(SHOFILES)
+ $(LD_RXLIB1) -o $@ $(SHOFILES) $(LD_RXLIB2)
+
+$(LIBOBJS) $(PDCOBJS) $(SHOFILES) : $(PDCURSES_HEADERS)
+$(PDCOBJS) $(PDCSHOBJS) : $(PDCURSES_X11_H)
+$(DEMOOBJS) : $(PDCURSES_CURSES_H)
+$(DEMOS) : $(LIBCURSES)
+terminfo.o terminfo.sho: $(TERM_HEADER)
+
+addch.o: $(srcdir)/addch.c
+ $(BUILD) $(srcdir)/addch.c
+
+addchstr.o: $(srcdir)/addchstr.c
+ $(BUILD) $(srcdir)/addchstr.c
+
+addstr.o: $(srcdir)/addstr.c
+ $(BUILD) $(srcdir)/addstr.c
+
+attr.o: $(srcdir)/attr.c
+ $(BUILD) $(srcdir)/attr.c
+
+beep.o: $(srcdir)/beep.c
+ $(BUILD) $(srcdir)/beep.c
+
+bkgd.o: $(srcdir)/bkgd.c
+ $(BUILD) $(srcdir)/bkgd.c
+
+border.o: $(srcdir)/border.c
+ $(BUILD) $(srcdir)/border.c
+
+clear.o: $(srcdir)/clear.c
+ $(BUILD) $(srcdir)/clear.c
+
+color.o: $(srcdir)/color.c
+ $(BUILD) $(srcdir)/color.c
+
+delch.o: $(srcdir)/delch.c
+ $(BUILD) $(srcdir)/delch.c
+
+deleteln.o: $(srcdir)/deleteln.c
+ $(BUILD) $(srcdir)/deleteln.c
+
+deprec.o: $(srcdir)/deprec.c
+ $(BUILD) $(srcdir)/deprec.c
+
+getch.o: $(srcdir)/getch.c
+ $(BUILD) $(srcdir)/getch.c
+
+getstr.o: $(srcdir)/getstr.c
+ $(BUILD) $(srcdir)/getstr.c
+
+getyx.o: $(srcdir)/getyx.c
+ $(BUILD) $(srcdir)/getyx.c
+
+inch.o: $(srcdir)/inch.c
+ $(BUILD) $(srcdir)/inch.c
+
+inchstr.o: $(srcdir)/inchstr.c
+ $(BUILD) $(srcdir)/inchstr.c
+
+initscr.o: $(srcdir)/initscr.c
+ $(BUILD) $(srcdir)/initscr.c
+
+inopts.o: $(srcdir)/inopts.c
+ $(BUILD) $(srcdir)/inopts.c
+
+insch.o: $(srcdir)/insch.c
+ $(BUILD) $(srcdir)/insch.c
+
+insstr.o: $(srcdir)/insstr.c
+ $(BUILD) $(srcdir)/insstr.c
+
+instr.o: $(srcdir)/instr.c
+ $(BUILD) $(srcdir)/instr.c
+
+kernel.o: $(srcdir)/kernel.c
+ $(BUILD) $(srcdir)/kernel.c
+
+keyname.o: $(srcdir)/keyname.c
+ $(BUILD) $(srcdir)/keyname.c
+
+mouse.o: $(srcdir)/mouse.c
+ $(BUILD) $(srcdir)/mouse.c
+
+move.o: $(srcdir)/move.c
+ $(BUILD) $(srcdir)/move.c
+
+outopts.o: $(srcdir)/outopts.c
+ $(BUILD) $(srcdir)/outopts.c
+
+overlay.o: $(srcdir)/overlay.c
+ $(BUILD) $(srcdir)/overlay.c
+
+pad.o: $(srcdir)/pad.c
+ $(BUILD) $(srcdir)/pad.c
+
+panel.o: $(srcdir)/panel.c $(PDCURSES_SRCDIR)/panel.h
+ $(BUILD) $(srcdir)/panel.c
+
+printw.o: $(srcdir)/printw.c
+ $(BUILD) $(srcdir)/printw.c
+
+refresh.o: $(srcdir)/refresh.c
+ $(BUILD) $(srcdir)/refresh.c
+
+scanw.o: $(srcdir)/scanw.c
+ $(BUILD) $(srcdir)/scanw.c
+
+scr_dump.o: $(srcdir)/scr_dump.c
+ $(BUILD) $(srcdir)/scr_dump.c
+
+scroll.o: $(srcdir)/scroll.c
+ $(BUILD) $(srcdir)/scroll.c
+
+slk.o: $(srcdir)/slk.c
+ $(BUILD) $(srcdir)/slk.c
+
+termattr.o: $(srcdir)/termattr.c
+ $(BUILD) $(srcdir)/termattr.c
+
+terminfo.o: $(srcdir)/terminfo.c
+ $(BUILD) $(srcdir)/terminfo.c
+
+touch.o: $(srcdir)/touch.c
+ $(BUILD) $(srcdir)/touch.c
+
+util.o: $(srcdir)/util.c
+ $(BUILD) $(srcdir)/util.c
+
+window.o: $(srcdir)/window.c
+ $(BUILD) $(srcdir)/window.c
+
+debug.o: $(srcdir)/debug.c
+ $(BUILD) $(srcdir)/debug.c
+
+pdcclip.o: $(osdir)/pdcclip.c
+ $(BUILD) $(osdir)/pdcclip.c
+
+pdcdisp.o: $(osdir)/pdcdisp.c
+ $(BUILD) $(osdir)/pdcdisp.c
+
+pdcgetsc.o: $(osdir)/pdcgetsc.c
+ $(BUILD) $(osdir)/pdcgetsc.c
+
+pdckbd.o: $(osdir)/pdckbd.c
+ $(BUILD) $(osdir)/pdckbd.c
+
+pdcscrn.o: $(osdir)/pdcscrn.c
+ $(BUILD) $(osdir)/pdcscrn.c
+
+pdcsetsc.o: $(osdir)/pdcsetsc.c
+ $(BUILD) $(osdir)/pdcsetsc.c
+
+pdcutil.o: $(osdir)/pdcutil.c
+ $(BUILD) $(osdir)/pdcutil.c
+
+pdcx11.o: $(osdir)/pdcx11.c
+ $(BUILD) $(osdir)/pdcx11.c
+
+ScrollBox.o: $(osdir)/ScrollBox.c
+ $(BUILD) $(osdir)/ScrollBox.c
+
+sb.o: $(osdir)/sb.c
+ $(BUILD) $(osdir)/sb.c
+
+x11.o: $(osdir)/x11.c
+ $(BUILD) $(osdir)/x11.c
+
+addch.sho: $(srcdir)/addch.c
+ $(DYN_BUILD) $(srcdir)/addch.c
+ @SAVE2O@
+
+addchstr.sho: $(srcdir)/addchstr.c
+ $(DYN_BUILD) $(srcdir)/addchstr.c
+ @SAVE2O@
+
+addstr.sho: $(srcdir)/addstr.c
+ $(DYN_BUILD) $(srcdir)/addstr.c
+ @SAVE2O@
+
+attr.sho: $(srcdir)/attr.c
+ $(DYN_BUILD) $(srcdir)/attr.c
+ @SAVE2O@
+
+beep.sho: $(srcdir)/beep.c
+ $(DYN_BUILD) $(srcdir)/beep.c
+ @SAVE2O@
+
+bkgd.sho: $(srcdir)/bkgd.c
+ $(DYN_BUILD) $(srcdir)/bkgd.c
+ @SAVE2O@
+
+border.sho: $(srcdir)/border.c
+ $(DYN_BUILD) $(srcdir)/border.c
+ @SAVE2O@
+
+clear.sho: $(srcdir)/clear.c
+ $(DYN_BUILD) $(srcdir)/clear.c
+ @SAVE2O@
+
+color.sho: $(srcdir)/color.c
+ $(DYN_BUILD) $(srcdir)/color.c
+ @SAVE2O@
+
+delch.sho: $(srcdir)/delch.c
+ $(DYN_BUILD) $(srcdir)/delch.c
+ @SAVE2O@
+
+deleteln.sho: $(srcdir)/deleteln.c
+ $(DYN_BUILD) $(srcdir)/deleteln.c
+ @SAVE2O@
+
+deprec.sho: $(srcdir)/deprec.c
+ $(DYN_BUILD) $(srcdir)/deprec.c
+ @SAVE2O@
+
+getch.sho: $(srcdir)/getch.c
+ $(DYN_BUILD) $(srcdir)/getch.c
+ @SAVE2O@
+
+getstr.sho: $(srcdir)/getstr.c
+ $(DYN_BUILD) $(srcdir)/getstr.c
+ @SAVE2O@
+
+getyx.sho: $(srcdir)/getyx.c
+ $(DYN_BUILD) $(srcdir)/getyx.c
+ @SAVE2O@
+
+inch.sho: $(srcdir)/inch.c
+ $(DYN_BUILD) $(srcdir)/inch.c
+ @SAVE2O@
+
+inchstr.sho: $(srcdir)/inchstr.c
+ $(DYN_BUILD) $(srcdir)/inchstr.c
+ @SAVE2O@
+
+initscr.sho: $(srcdir)/initscr.c
+ $(DYN_BUILD) $(srcdir)/initscr.c
+ @SAVE2O@
+
+inopts.sho: $(srcdir)/inopts.c
+ $(DYN_BUILD) $(srcdir)/inopts.c
+ @SAVE2O@
+
+insch.sho: $(srcdir)/insch.c
+ $(DYN_BUILD) $(srcdir)/insch.c
+ @SAVE2O@
+
+insstr.sho: $(srcdir)/insstr.c
+ $(DYN_BUILD) $(srcdir)/insstr.c
+ @SAVE2O@
+
+instr.sho: $(srcdir)/instr.c
+ $(DYN_BUILD) $(srcdir)/instr.c
+ @SAVE2O@
+
+kernel.sho: $(srcdir)/kernel.c
+ $(DYN_BUILD) $(srcdir)/kernel.c
+ @SAVE2O@
+
+keyname.sho: $(srcdir)/keyname.c
+ $(DYN_BUILD) $(srcdir)/keyname.c
+ @SAVE2O@
+
+mouse.sho: $(srcdir)/mouse.c
+ $(DYN_BUILD) $(srcdir)/mouse.c
+ @SAVE2O@
+
+move.sho: $(srcdir)/move.c
+ $(DYN_BUILD) $(srcdir)/move.c
+ @SAVE2O@
+
+outopts.sho: $(srcdir)/outopts.c
+ $(DYN_BUILD) $(srcdir)/outopts.c
+ @SAVE2O@
+
+overlay.sho: $(srcdir)/overlay.c
+ $(DYN_BUILD) $(srcdir)/overlay.c
+ @SAVE2O@
+
+pad.sho: $(srcdir)/pad.c
+ $(DYN_BUILD) $(srcdir)/pad.c
+ @SAVE2O@
+
+panel.sho: $(srcdir)/panel.c $(PDCURSES_SRCDIR)/panel.h
+ $(DYN_BUILD) $(srcdir)/panel.c
+ @SAVE2O@
+
+printw.sho: $(srcdir)/printw.c
+ $(DYN_BUILD) $(srcdir)/printw.c
+ @SAVE2O@
+
+refresh.sho: $(srcdir)/refresh.c
+ $(DYN_BUILD) $(srcdir)/refresh.c
+ @SAVE2O@
+
+scanw.sho: $(srcdir)/scanw.c
+ $(DYN_BUILD) $(srcdir)/scanw.c
+ @SAVE2O@
+
+scr_dump.sho: $(srcdir)/scr_dump.c
+ $(DYN_BUILD) $(srcdir)/scr_dump.c
+ @SAVE2O@
+
+scroll.sho: $(srcdir)/scroll.c
+ $(DYN_BUILD) $(srcdir)/scroll.c
+ @SAVE2O@
+
+slk.sho: $(srcdir)/slk.c
+ $(DYN_BUILD) $(srcdir)/slk.c
+ @SAVE2O@
+
+termattr.sho: $(srcdir)/termattr.c
+ $(DYN_BUILD) $(srcdir)/termattr.c
+ @SAVE2O@
+
+terminfo.sho: $(srcdir)/terminfo.c
+ $(DYN_BUILD) $(srcdir)/terminfo.c
+ @SAVE2O@
+
+touch.sho: $(srcdir)/touch.c
+ $(DYN_BUILD) $(srcdir)/touch.c
+ @SAVE2O@
+
+util.sho: $(srcdir)/util.c
+ $(DYN_BUILD) $(srcdir)/util.c
+ @SAVE2O@
+
+window.sho: $(srcdir)/window.c
+ $(DYN_BUILD) $(srcdir)/window.c
+ @SAVE2O@
+
+debug.sho: $(srcdir)/debug.c
+ $(DYN_BUILD) $(srcdir)/debug.c
+ @SAVE2O@
+
+pdcclip.sho: $(osdir)/pdcclip.c
+ $(DYN_BUILD) $(osdir)/pdcclip.c
+ @SAVE2O@
+
+pdcdisp.sho: $(osdir)/pdcdisp.c
+ $(DYN_BUILD) $(osdir)/pdcdisp.c
+ @SAVE2O@
+
+pdcgetsc.sho: $(osdir)/pdcgetsc.c
+ $(DYN_BUILD) $(osdir)/pdcgetsc.c
+ @SAVE2O@
+
+pdckbd.sho: $(osdir)/pdckbd.c
+ $(DYN_BUILD) $(osdir)/pdckbd.c
+ @SAVE2O@
+
+pdcscrn.sho: $(osdir)/pdcscrn.c
+ $(DYN_BUILD) $(osdir)/pdcscrn.c
+ @SAVE2O@
+
+pdcsetsc.sho: $(osdir)/pdcsetsc.c
+ $(DYN_BUILD) $(osdir)/pdcsetsc.c
+ @SAVE2O@
+
+pdcutil.sho: $(osdir)/pdcutil.c
+ $(DYN_BUILD) $(osdir)/pdcutil.c
+ @SAVE2O@
+
+pdcx11.sho: $(osdir)/pdcx11.c
+ $(DYN_BUILD) $(osdir)/pdcx11.c
+ @SAVE2O@
+
+ScrollBox.sho: $(osdir)/ScrollBox.c
+ $(DYN_BUILD) $(osdir)/ScrollBox.c
+ @SAVE2O@
+
+sb.sho: $(osdir)/sb.c
+ $(DYN_BUILD) $(osdir)/sb.c
+ @SAVE2O@
+
+x11.sho: $(osdir)/x11.c
+ $(DYN_BUILD) $(osdir)/x11.c
+ @SAVE2O@
+
+firework: firework.o
+ $(LINK) firework.o -o $@ $(LDFLAGS)
+
+newdemo: newdemo.o
+ $(LINK) newdemo.o -o $@ $(LDFLAGS)
+
+ptest: ptest.o
+ $(LINK) ptest.o -o $@ $(LDFLAGS)
+
+rain: rain.o
+ $(LINK) rain.o -o $@ $(LDFLAGS)
+
+testcurs: testcurs.o
+ $(LINK) testcurs.o -o $@ $(LDFLAGS)
+
+tuidemo: tuidemo.o tui.o
+ $(LINK) tui.o tuidemo.o -o $@ $(LDFLAGS)
+
+worm: worm.o
+ $(LINK) worm.o -o $@ $(LDFLAGS)
+
+xmas: xmas.o
+ $(LINK) xmas.o -o $@ $(LDFLAGS)
+
+firework.o: $(demodir)/firework.c
+ $(BUILD) $(demodir)/firework.c
+
+newdemo.o: $(demodir)/newdemo.c
+ $(BUILD) $(demodir)/newdemo.c
+
+ptest.o: $(demodir)/ptest.c $(PDCURSES_SRCDIR)/panel.h
+ $(BUILD) $(demodir)/ptest.c
+
+rain.o: $(demodir)/rain.c
+ $(BUILD) $(demodir)/rain.c
+
+testcurs.o: $(demodir)/testcurs.c
+ $(BUILD) $(demodir)/testcurs.c
+
+tui.o: $(demodir)/tui.c $(demodir)/tui.h
+ $(BUILD) $(demodir)/tui.c
+
+tuidemo.o: $(demodir)/tuidemo.c
+ $(BUILD) $(demodir)/tuidemo.c
+
+worm.o: $(demodir)/worm.c
+ $(BUILD) $(demodir)/worm.c
+
+xmas.o: $(demodir)/xmas.c
+ $(BUILD) $(demodir)/xmas.c
+
+# This section provides for compiling and linking the
+# ncurses test programs.
+
+ncurses_testdir = $(HOME)/ncurses-5.6/test
+
+NCURSES_TESTS = bs gdc hanoi knight tclock ncurses
+
+ncurses_tests: $(NCURSES_TESTS)
+
+ncurses_clean:
+ -rm -f *.o trace $(NCURSES_TESTS)
+
+NCFLAGS = -I. -I$(ncurses_testdir)
+
+bs: bs.o $(LIBCURSES)
+ $(LINK) bs.o -o $@ $(LDFLAGS)
+
+gdc: gdc.o $(LIBCURSES)
+ $(LINK) gdc.o -o $@ $(LDFLAGS)
+
+hanoi: hanoi.o $(LIBCURSES)
+ $(LINK) hanoi.o -o $@ $(LDFLAGS)
+
+knight: knight.o $(LIBCURSES)
+ $(LINK) knight.o -o $@ $(LDFLAGS)
+
+tclock: tclock.o $(LIBCURSES)
+ $(LINK) tclock.o -o $@ $(LDFLAGS) -lm
+
+view: view.o $(LIBCURSES)
+ $(LINK) view.o -o $@ $(LDFLAGS)
+
+ncurses: ncurses.o $(LIBCURSES)
+ $(LINK) ncurses.o -o $@ $(LDFLAGS)
+
+bs.o: $(ncurses_testdir)/bs.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(NCFLAGS) $(ncurses_testdir)/bs.c
+
+gdc.o: $(ncurses_testdir)/gdc.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(NCFLAGS) $(ncurses_testdir)/gdc.c
+
+hanoi.o: $(ncurses_testdir)/hanoi.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(NCFLAGS) $(ncurses_testdir)/hanoi.c
+
+knight.o: $(ncurses_testdir)/knight.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(NCFLAGS) $(ncurses_testdir)/knight.c
+
+tclock.o: $(ncurses_testdir)/tclock.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(NCFLAGS) $(ncurses_testdir)/tclock.c
+
+view.o: $(ncurses_testdir)/view.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(NCFLAGS) $(ncurses_testdir)/view.c
+
+ncurses.o: $(ncurses_testdir)/ncurses.c $(PDCURSES_CURSES_H)
+ $(BUILD) $(NCFLAGS) $(ncurses_testdir)/ncurses.c
diff --git a/payloads/libpayload/curses/PDCurses/x11/README b/payloads/libpayload/curses/PDCurses/x11/README
new file mode 100644
index 0000000..37b45d0
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/README
@@ -0,0 +1,64 @@
+PDCurses for X11
+================
+
+This is a port of PDCurses for X11, aka XCurses. It is designed to
+allow existing curses programs to be re-compiled with PDCurses,
+resulting in native X11 programs.
+
+
+Building
+--------
+
+. Run "./configure" in the top-level directory.
+
+ To build the wide-character version of the library, specify
+ "--enable-widec" as a parameter. To use X Input Methods, add
+ "--enable-xim". I recommend these options, but I haven't yet made
+ them the defaults, for the sake of backwards compatibility and due to
+ their new and relatively untested status.
+
+ If your system is lacking in UTF-8 support, you can force the use of
+ UTF-8 instead of the system locale via "--enable-force-utf8". This is
+ generally more useful in Windows.
+
+ If configure can't find your X include files or X libraries, you can
+ specify the paths with the arguments "--x-includes=inc_path" and/or
+ "--x-libraries=lib_path".
+
+ By default, the library and demo programs are built with the optimizer
+ switch -O2. You can turn this off, and turn on debugging (-g), by
+ adding "--with-debug" to the configure command.
+
+. Run "make". This should build libXCurses and all the demo programs.
+
+. Optionally, run "make install". curses.h and panel.h will be renamed
+ when installed (to xcurses.h and xpanel.h), to avoid conflicts with
+ any existing curses installations. Unrenamed copies of curses.h and
+ panel.h are installed in (by default) /usr/local/include/xcurses.
+
+ libXpanel is just a symlink to libXCurses. Both curses and panel
+ functions are in the main library.
+
+
+Distribution Status
+-------------------
+
+As of April 13, 2006, the files in this directory are released to the
+Public Domain, except for ScrollBox*, which are under essentially the
+MIT X License.
+
+
+To be Done
+----------
+
+- have newterm() create a new X window
+
+- provide a command line parsing function to enable X command line
+ arguments to be parsed and stripped from the arguments passed back
+ to the calling procedure.
+
+
+Acknowledgements
+----------------
+
+X11 port was provided by Mark Hessling <mark at rexx.org>
diff --git a/payloads/libpayload/curses/PDCurses/x11/ScrollBox.c b/payloads/libpayload/curses/PDCurses/x11/ScrollBox.c
new file mode 100644
index 0000000..e77d2c7
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/ScrollBox.c
@@ -0,0 +1,321 @@
+/*
+ * Copyright 1989 O'Reilly and Associates, Inc.
+
+ The X Consortium, and any party obtaining a copy of these files from
+ the X Consortium, directly or indirectly, is granted, free of charge, a
+ full and unrestricted irrevocable, world-wide, paid up, royalty-free,
+ nonexclusive right and license to deal in this software and
+ documentation files (the "Software"), including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons who receive
+ copies from any such party to do so. This license includes without
+ limitation a license to do the foregoing actions under any patents of
+ the party supplying this software to the X Consortium.
+
+ $Id: ScrollBox.c,v 1.15 2008/07/14 04:24:52 wmcbrine Exp $
+ */
+
+/* ScrollBox.c - scrollBox composite widget */
+
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+#include <X11/Shell.h>
+
+#include "x11/ScrollBoxP.h"
+
+#include <stdio.h>
+
+#define INITIAL_WIDTH 300
+#define INITIAL_HEIGHT 300
+
+/************************************************************************
+ * *
+ * scrollBox Resources *
+ * *
+ ************************************************************************/
+
+static XtResource resources[] =
+{
+ { XtNhSpace, XtCHSpace, XtRDimension, sizeof(Dimension),
+ XtOffset(ScrollBoxWidget, scrollBox.h_space),
+ XtRImmediate, (XtPointer)4 },
+ { XtNvSpace, XtCVSpace, XtRDimension, sizeof(Dimension),
+ XtOffset(ScrollBoxWidget, scrollBox.v_space),
+ XtRImmediate, (XtPointer)4 },
+ { XtNheightInc, XtCHeightInc, XtRDimension, sizeof(Dimension),
+ XtOffset(ScrollBoxWidget, scrollBox.increment_height),
+ XtRImmediate, (XtPointer)13 },
+ { XtNwidthInc, XtCWidthInc, XtRDimension, sizeof(Dimension),
+ XtOffset(ScrollBoxWidget, scrollBox.increment_width),
+ XtRImmediate, (XtPointer)7 },
+};
+
+/************************************************************************
+ * *
+ * Full class record constant *
+ * *
+ ************************************************************************/
+
+static void Initialize(Widget, Widget, ArgList, Cardinal *);
+static void Resize(Widget);
+static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+static void ChangeManaged(Widget);
+static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *,
+ XtWidgetGeometry *);
+static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *,
+ XtWidgetGeometry *);
+static void RefigureLocations(Widget);
+
+ScrollBoxClassRec scrollBoxClassRec = {
+ {
+ /* core_class fields */
+ /* superclass */ (WidgetClass) &compositeClassRec,
+ /* class_name */ "scrollBox",
+ /* widget_size */ sizeof(ScrollBoxRec),
+ /* class_initialize */ NULL,
+ /* class_part_init */ NULL,
+ /* class_inited */ FALSE,
+ /* initialize */ Initialize,
+ /* initialize_hook */ NULL,
+ /* realize */ XtInheritRealize,
+ /* actions */ NULL,
+ /* num_actions */ 0,
+ /* resources */ resources,
+ /* num_resources */ XtNumber(resources),
+ /* xrm_class */ NULLQUARK,
+ /* compress_motion */ TRUE,
+ /* compress_exposure */ TRUE,
+ /* compress_enterleave */ TRUE,
+ /* visible_interest */ FALSE,
+ /* destroy */ NULL,
+ /* resize */ Resize,
+ /* expose */ NULL,
+ /* set_values */ SetValues,
+ /* set_values_hook */ NULL,
+ /* set_values_almost */ XtInheritSetValuesAlmost,
+ /* get_values_hook */ NULL,
+ /* accept_focus */ NULL,
+ /* version */ XtVersion,
+ /* callback_private */ NULL,
+ /* tm_table */ NULL,
+ /* query_geometry */ QueryGeometry,
+ /* display_accelerator */ XtInheritDisplayAccelerator,
+ /* extension */ NULL
+ },{
+ /* composite_class fields */
+ /* geometry_manager */ GeometryManager,
+ /* change_managed */ ChangeManaged,
+ /* insert_child */ XtInheritInsertChild,
+ /* delete_child */ XtInheritDeleteChild,
+ /* extension */ NULL
+ },{
+ /* scrollBox class fields */
+ /* empty */ 0,
+ }
+};
+
+WidgetClass scrollBoxWidgetClass = (WidgetClass)&scrollBoxClassRec;
+
+
+/************************************************************************
+ * *
+ * Private Routines *
+ * *
+ ************************************************************************/
+
+/* Do a layout, either actually assigning positions, or just
+ calculating size. */
+
+static void DoLayout(Widget w, Boolean doit)
+{
+ ScrollBoxWidget sbw = (ScrollBoxWidget)w;
+ Widget wmain, vscroll, hscroll, child;
+ Dimension mw, mh; /* main window */
+ Dimension vh; /* vertical scrollbar length (height) */
+ Dimension hw; /* horizontal scrollbar length (width) */
+ Position vx;
+ Position hy;
+ Cardinal i;
+
+ if (sbw->composite.num_children != 3)
+ XtAppError(XtWidgetToApplicationContext(w),
+ "ScrollBox: must manage exactly three widgets.");
+
+ for (i = 0; i < sbw->composite.num_children; i++)
+ {
+ child = sbw->composite.children[i];
+
+ if (!XtIsManaged(child))
+ XtAppError(XtWidgetToApplicationContext(w),
+ "ScrollBox: all three widgets must be managed.");
+ }
+
+ /* Child one is the main window, two is the vertical scrollbar,
+ and three is the horizontal scrollbar. */
+
+ wmain = sbw->composite.children[0];
+ vscroll = sbw->composite.children[1];
+ hscroll = sbw->composite.children[2];
+
+ /* Size all three widgets so that space is fully utilized. */
+
+ mw = sbw->core.width - (2 * sbw->scrollBox.h_space) -
+ vscroll->core.width - (2 * vscroll->core.border_width) -
+ (2 * wmain->core.border_width);
+
+ mh = sbw->core.height - (2 * sbw->scrollBox.v_space) -
+ hscroll->core.height - (2 * hscroll->core.border_width) -
+ (2 * wmain->core.border_width);
+
+ /* Force the main window to be sized to the appropriate increment. */
+
+ mw = (mw / sbw->scrollBox.increment_width) *
+ sbw->scrollBox.increment_width;
+
+ mh = ((mh / sbw->scrollBox.increment_height) *
+ sbw->scrollBox.increment_height) +
+ sbw->scrollBox.increment_height;
+
+ vx = wmain->core.x + mw + sbw->scrollBox.h_space +
+ wmain->core.border_width + vscroll->core.border_width;
+
+ hy = wmain->core.y + mh + sbw->scrollBox.v_space +
+ wmain->core.border_width + hscroll->core.border_width;
+
+ vh = mh; /* scrollbars are always same length as main window */
+ hw = mw;
+
+ if (doit)
+ {
+ XtResizeWidget(wmain, mw, mh, 1);
+
+ XtResizeWidget(vscroll, vscroll->core.width, vh, 1);
+ XtMoveWidget(vscroll, vx, vscroll->core.y);
+
+ XtResizeWidget(hscroll, hw, hscroll->core.height, 1);
+ XtMoveWidget(hscroll, hscroll->core.x, hy);
+ }
+}
+
+static XtGeometryResult GeometryManager(Widget w, XtWidgetGeometry *request,
+ XtWidgetGeometry *reply)
+{
+ XtWidgetGeometry allowed;
+
+ if (request->request_mode & ~(XtCWQueryOnly | CWWidth | CWHeight))
+ return XtGeometryNo;
+
+ if (request->request_mode & CWWidth)
+ allowed.width = request->width;
+ else
+ allowed.width = w->core.width;
+
+ if (request->request_mode & CWHeight)
+ allowed.height = request->height;
+ else
+ allowed.height = w->core.height;
+
+ if (allowed.width == w->core.width && allowed.height == w->core.height)
+ return XtGeometryNo;
+
+ if (!(request->request_mode & XtCWQueryOnly))
+ RefigureLocations(w);
+
+ return XtGeometryYes;
+}
+
+static void RefigureLocations(Widget w)
+{
+ DoLayout(w, False);
+}
+
+/* Calculate preferred size. We can't just use the current sizes
+ of the children, because that calculation would always end up with
+ our current size. Could query each child, and use that size to
+ recalculate a size for us, then if it ends up being larger than width
+ and height passed in, accept bounding box. However, we know our
+ children and they don't have any particular preferred geometry,
+ except the bigger the better. Therefore, if the parent suggested a
+ size, we'll take it. */
+
+static XtGeometryResult QueryGeometry(Widget w, XtWidgetGeometry *request,
+ XtWidgetGeometry *reply_return)
+{
+ XtGeometryResult result=XtGeometryNo;
+
+ request->request_mode &= CWWidth | CWHeight;
+
+ /* parent isn't going to change w or h, so nothing to re-compute */
+
+ if (request->request_mode == 0)
+ return XtGeometryYes;
+
+ /* if proposed size is large enough, accept it. Otherwise, suggest
+ our arbitrary initial size. */
+
+ if (request->request_mode & CWHeight)
+ {
+ if (request->height < INITIAL_HEIGHT)
+ {
+ result = XtGeometryAlmost;
+ reply_return->height = INITIAL_HEIGHT;
+ reply_return->request_mode &= CWHeight;
+ }
+ else
+ result = XtGeometryYes;
+ }
+
+ if (request->request_mode & CWWidth)
+ {
+ if (request->width < INITIAL_WIDTH)
+ {
+ result = XtGeometryAlmost;
+ reply_return->width = INITIAL_WIDTH;
+ reply_return->request_mode &= CWWidth;
+ }
+ else
+ result = XtGeometryYes;
+ }
+
+ return result;
+}
+
+/* Actually layout the scrollBox */
+
+static void Resize(Widget w)
+{
+ DoLayout(w, True);
+}
+
+static void ChangeManaged(Widget w)
+{
+ DoLayout(w, True);
+}
+
+static void Initialize(Widget request, Widget new,
+ ArgList args, Cardinal *num_args)
+{
+ ScrollBoxWidget newsbw = (ScrollBoxWidget)new;
+
+ if (newsbw->core.width == 0)
+ newsbw->core.width = INITIAL_WIDTH;
+
+ if (newsbw->core.height == 0)
+ newsbw->core.height = INITIAL_HEIGHT;
+
+}
+
+static Boolean SetValues(Widget current, Widget request, Widget new,
+ ArgList args, Cardinal *num_args)
+{
+ ScrollBoxWidget sbwcurrent = (ScrollBoxWidget)current;
+ ScrollBoxWidget sbwnew = (ScrollBoxWidget)new;
+
+ /* need to relayout if h_space or v_space change */
+
+ if ((sbwnew->scrollBox.h_space != sbwcurrent->scrollBox.h_space) ||
+ (sbwnew->scrollBox.v_space != sbwcurrent->scrollBox.v_space))
+ DoLayout(new, True);
+
+ return False;
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/ScrollBox.h b/payloads/libpayload/curses/PDCurses/x11/ScrollBox.h
new file mode 100644
index 0000000..5825862
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/ScrollBox.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright 1989 O'Reilly and Associates, Inc.
+
+ The X Consortium, and any party obtaining a copy of these files from
+ the X Consortium, directly or indirectly, is granted, free of charge, a
+ full and unrestricted irrevocable, world-wide, paid up, royalty-free,
+ nonexclusive right and license to deal in this software and
+ documentation files (the "Software"), including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons who receive
+ copies from any such party to do so. This license includes without
+ limitation a license to do the foregoing actions under any patents of
+ the party supplying this software to the X Consortium.
+
+ $Id: ScrollBox.h,v 1.4 2008/07/14 04:24:52 wmcbrine Exp $
+ */
+
+#ifndef _XORAscrollBox_h
+#define _XORAscrollBox_h
+
+/************************************************************************
+ * *
+ * scrollBox Widget (subclass of CompositeClass) *
+ * *
+ ************************************************************************/
+
+/* Parameters:
+
+ Name Class RepType Default Value
+ ---- ----- ------- -------------
+ background Background Pixel XtDefaultBackground
+ border BorderColor Pixel XtDefaultForeground
+ borderWidth BorderWidth Dimension 1
+ destroyCallback Callback Pointer NULL
+ hSpace HSpace Dimension 4
+ height Height Dimension 0
+ mappedWhenManaged MappedWhenManaged Boolean True
+ vSpace VSpace Dimension 4
+ width Width Dimension 0
+ x Position Position 0
+ y Position Position 0
+
+*/
+
+
+/* Class record constants */
+
+extern WidgetClass scrollBoxWidgetClass;
+
+typedef struct _ScrollBoxClassRec *ScrollBoxWidgetClass;
+typedef struct _ScrollBoxRec *ScrollBoxWidget;
+
+#endif /* _XORAscrollBox_h */
diff --git a/payloads/libpayload/curses/PDCurses/x11/ScrollBoxP.h b/payloads/libpayload/curses/PDCurses/x11/ScrollBoxP.h
new file mode 100644
index 0000000..4455138
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/ScrollBoxP.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright 1989 O'Reilly and Associates, Inc.
+
+ The X Consortium, and any party obtaining a copy of these files from
+ the X Consortium, directly or indirectly, is granted, free of charge, a
+ full and unrestricted irrevocable, world-wide, paid up, royalty-free,
+ nonexclusive right and license to deal in this software and
+ documentation files (the "Software"), including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons who receive
+ copies from any such party to do so. This license includes without
+ limitation a license to do the foregoing actions under any patents of
+ the party supplying this software to the X Consortium.
+
+ $Id: ScrollBoxP.h,v 1.5 2008/07/14 04:24:52 wmcbrine Exp $
+ */
+
+/*
+ * scrollBoxP.h - Private definitions for scrollBox widget
+ *
+ */
+
+#ifndef _XORAscrollBoxP_h
+#define _XORAscrollBoxP_h
+
+/************************************************************************
+ * *
+ * scrollBox Widget Private Data *
+ * *
+ ************************************************************************/
+
+#include "x11/ScrollBox.h"
+
+#include <X11/CompositeP.h>
+
+/* New fields for the scrollBox widget class record */
+typedef struct _ScrollBoxClass {
+ int empty;
+} ScrollBoxClassPart;
+
+/* Full class record declaration */
+typedef struct _ScrollBoxClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ScrollBoxClassPart scrollBox_class;
+} ScrollBoxClassRec;
+
+extern ScrollBoxClassRec scrollBoxClassRec;
+
+/* New fields for the scrollBox widget record */
+typedef struct {
+ Dimension h_space, v_space;
+ Dimension preferred_width, preferred_height;
+ Dimension last_query_width, last_query_height;
+ Dimension increment_width, increment_height;
+ XtGeometryMask last_query_mode;
+} ScrollBoxPart;
+
+
+/************************************************************************
+ * *
+ * Full instance record declaration *
+ * *
+ ************************************************************************/
+
+typedef struct _ScrollBoxRec {
+ CorePart core;
+ CompositePart composite;
+ ScrollBoxPart scrollBox;
+} ScrollBoxRec;
+
+#endif /* _XORAscrollBoxP_h */
diff --git a/payloads/libpayload/curses/PDCurses/x11/big_icon.xbm b/payloads/libpayload/curses/PDCurses/x11/big_icon.xbm
new file mode 100644
index 0000000..04b98a5
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/big_icon.xbm
@@ -0,0 +1,46 @@
+#define big_icon_width 64
+#define big_icon_height 64
+static unsigned char big_icon_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
+ 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xc1, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0xff, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
+ 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0xc7, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80,
+ 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0, 0xc3, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0xf0, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8,
+ 0xf1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xf8, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x7e, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f,
+ 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xff, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x8f, 0xdf, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc7,
+ 0xcf, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe3, 0xc7, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0xf1, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0,
+ 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xc0, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x78,
+ 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8,
+ 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0,
+ 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0xff, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x23, 0x50, 0x1e,
+ 0x7c, 0xf0, 0xe0, 0x03, 0x60, 0x26, 0x50, 0x33, 0xc6, 0x98, 0x31, 0x06,
+ 0x30, 0x2c, 0xd0, 0x61, 0x83, 0x0d, 0x1b, 0x0c, 0x10, 0x28, 0xd0, 0x40,
+ 0x01, 0x05, 0x0a, 0x08, 0x10, 0x20, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08,
+ 0x10, 0x20, 0x50, 0x00, 0x03, 0x04, 0x1a, 0x00, 0x10, 0x20, 0x50, 0x00,
+ 0x06, 0x04, 0x32, 0x00, 0x10, 0x20, 0x50, 0x00, 0x7c, 0xfc, 0xe3, 0x03,
+ 0x10, 0x20, 0x50, 0x00, 0xc0, 0x04, 0x00, 0x06, 0x10, 0x20, 0x50, 0x00,
+ 0x80, 0x05, 0x00, 0x0c, 0x10, 0x20, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08,
+ 0x10, 0x28, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08, 0x30, 0x6c, 0x58, 0x00,
+ 0x83, 0x0d, 0x1b, 0x0c, 0x60, 0xc6, 0x4c, 0x00, 0xc6, 0x98, 0x31, 0x06,
+ 0xc0, 0x83, 0x47, 0x00, 0x7c, 0xf0, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/payloads/libpayload/curses/PDCurses/x11/compose.h b/payloads/libpayload/curses/PDCurses/x11/compose.h
new file mode 100644
index 0000000..e8f7d40
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/compose.h
@@ -0,0 +1,203 @@
+/* Public Domain Curses */
+
+/* $Id: compose.h,v 1.3 2008/07/14 04:24:52 wmcbrine Exp $ */
+
+/* Tables and variables for the built-in compose key system. This file
+ is not included when PDCurses is built with XIM support. */
+
+#define MAX_COMPOSE_CHARS 14
+#define MAX_COMPOSE_PRE 60
+
+static const char *compose_chars =
+ "`'~^,/\"AaPpSs!?0123CcRr-_<>Xx.=Yy |EeIiOoUu+NnLlgDd:*TtMmVv";
+
+/*
+ ` : À È Ì Ò Ù à è ì ò ù
+ ' : ´ Á É Í Ó Ú Ý á é í ó ú ý ´
+ ~ : Ã Ñ Õ ã ñ õ
+ ^ : Â Ê Î Ô Û â ê î ô û ° ¹ ² ³
+ , : ¸ Ç ç ¸
+ / : Ø ø µ µ
+ " : ¨ Ä Ë Ï Ö Ü ä ë ï ö ü ÿ ¨
+ A : Æ À Á Ã Â Å Å Ã Â ª
+ a : æ à á ã â å å ã â ª
+ P : Þ ¶ ¶
+ p : þ ¶ ¶
+ S : § § § º ª
+ s : ß § ª ¹ ² ³ º §
+ ! : ¡ ¡
+ ? : ¿ ¿
+ 0 : ° °
+ 1 : ¹ ½ ¼ ¹
+ 2 : ² ²
+ 3 : ³ ¾ ³
+ C : © Ç ¢ ¢
+ c : ¢ © ç ¢ ¢
+ R : ®
+ r : ®
+ - : ± ¬ ¯ ÷
+ _ : ¯ ¯
+ < : «
+ > : «
+ X : ¤ ×
+ x : × ¤ ×
+ . : · · ·
+ = : ¥ ¥
+ Y : ¥ Ý ¥
+ y : ¥ ý ÿ ¥ ¥
+ :
+ | : ¦ ¢ ¦ Þ þ ¦ £
+ E : È É Ê Ë Ê
+ e : è é ê ë ê
+ I : Ì Í Î Ï Î
+ i : ì í î ï î
+ O : Ò Ó Ô Õ Ö Ø © ® Õ Ô Å å
+ o : ° Å å ¤ õ ò ó ô õ ö ø ô º
+ U : Ù Ú Û Ü Û
+ u : ù ú û ü µ û
+ + : ±
+ N : Ñ Ñ ¬
+ n : ñ ñ ¬
+ L : £ £ £
+ l : £ £ £
+ g : ¤
+ D : ° Ð
+ d : ° ð
+ : : ÷
+ * : µ µ å Å
+ T : Þ
+ t : þ
+ M : ×
+ m : ×
+ V : ¦
+ v : ¦
+*/
+
+static const char compose_lookups[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] =
+{
+/* ` */ {'A','E','I','O','U','a','e','i','o','u', 0, 0, 0, 0},
+/* ' */ {' ','A','E','I','O','U','Y','a','e','i','o','u','y', 39},
+/* ~ */ {'A','N','O','a','n','o', 0, 0, 0, 0, 0, 0, 0, 0},
+/* ^ */ {'A','E','I','O','U','a','e','i','o','u','0','1','2','3'},
+/* , */ {' ','C','c',',', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* / */ {'O','o','u','U', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* " */ {' ','A','E','I','O','U','a','e','i','o','u','y','\"', 0},
+/* A */ {'E','`', 39,'~','^','"','o','*','-','>','_', 0, 0, 0},
+/* a */ {'e','`', 39,'~','^','"','o','*','-','>','_', 0, 0, 0},
+/* P */ {' ','G','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* p */ {' ','g','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* S */ {'S','!','O','0','A', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* s */ {'s','!','a','1','2','3','0','o', 0, 0, 0, 0, 0, 0},
+/* ! */ {' ','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* ? */ {' ','?', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 0 */ {'^','*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 1 */ {' ','2','4','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 2 */ {' ','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 3 */ {' ','4','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* C */ {'O',',','$','|', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* c */ {'|','o',',','/','$', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* R */ {'O', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* r */ {'o', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* - */ {' ','+',',','-','^',':', 0, 0, 0, 0, 0, 0, 0, 0},
+/* _ */ {'_','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* < */ {'<', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* > */ {'>', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* X */ {'O','X', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* x */ {' ','o','x', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* . */ {' ','^','.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* = */ {'Y','y', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* Y */ {'=', 39,'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* y */ {'=', 39,'"','$','-', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* */ {' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* | */ {' ','c','|','P','p','^','-', 0, 0, 0, 0, 0, 0, 0},
+/* E */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* e */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* I */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* i */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* O */ {'`', 39,'^','~','"','/','C','R','-','>','A','a', 0, 0},
+/* o */ {' ','A','a','x','-','`', 39,'^','~','"','/','>','_', 0},
+/* U */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* u */ {'`', 39,'^','"',' ','>', 0, 0, 0, 0, 0, 0, 0, 0},
+/* + */ {'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* N */ {'~','-','O', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* n */ {'~','-','o', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* L */ {'$','=','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* l */ {'$','=','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* g */ {'$', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* D */ {'E','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* d */ {'e','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* : */ {'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* * */ {'m','M','a','A', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* T */ {'H', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* t */ {'h', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* M */ {'U', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* m */ {'u', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* V */ {'B', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* v */ {'b', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+};
+
+static const unsigned char compose_keys[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] =
+{
+/* ` */ {192,200,204,210,217,224,232,236,242,249, 0, 0, 0, 0},
+/* ' */ {180,193,201,205,211,218,221,225,233,237,243,250,253,180},
+/* ~ */ {195,209,213,227,241,245, 0, 0, 0, 0, 0, 0, 0, 0},
+/* ^ */ {194,202,206,212,219,226,234,238,244,251,176,185,178,179},
+/* , */ {184,199,231,184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* / */ {216,248,181,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* " */ {168,196,203,207,214,220,228,235,239,246,252,255,168, 0},
+/* A */ {198,192,193,195,194,196,197,197,195,194,170, 0, 0, 0},
+/* a */ {230,224,225,227,226,228,229,229,227,226,170, 0, 0, 0},
+/* P */ {222,182,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* p */ {254,182,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* S */ {167,167,167,186,170, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* s */ {223,167,170,185,178,179,186,167, 0, 0, 0, 0, 0, 0},
+/* ! */ {161,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* ? */ {191,191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 0 */ {176,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 1 */ {185,189,188,185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 2 */ {178,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* 3 */ {179,190,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* C */ {169,199,162,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* c */ {162,169,231,162,162, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* R */ {174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* r */ {174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* - */ {173,177,172,173,175,247, 0, 0, 0, 0, 0, 0, 0, 0},
+/* _ */ {175,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* < */ {171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* > */ {187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* X */ {164,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* x */ {215,164,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* . */ {183,183,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* = */ {165,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* Y */ {165,221,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* y */ {165,253,255,165,165, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* */ {160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* | */ {166,162,166,222,254,166,163, 0, 0, 0, 0, 0, 0, 0},
+/* E */ {200,201,202,203,202, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* e */ {232,233,234,235,234, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* I */ {204,205,206,207,206, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* i */ {236,237,238,239,238, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* O */ {210,211,212,213,214,216,169,174,213,212,197,229, 0, 0},
+/* o */ {176,197,229,164,245,242,243,244,245,246,248,244,186, 0},
+/* U */ {217,218,219,220,219, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* u */ {249,250,251,252,181,251, 0, 0, 0, 0, 0, 0, 0, 0},
+/* + */ {177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* N */ {209,209,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* n */ {241,241,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* L */ {163,163,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* l */ {163,163,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* g */ {164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* D */ {176,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* d */ {176,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* : */ {247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* * */ {181,181,229,197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* T */ {222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* t */ {254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* M */ {215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* u */ {215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* V */ {166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+/* v */ {166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+};
+
+static KeySym compose_key = 0;
+static int compose_mask = 0;
diff --git a/payloads/libpayload/curses/PDCurses/x11/little_icon.xbm b/payloads/libpayload/curses/PDCurses/x11/little_icon.xbm
new file mode 100644
index 0000000..d3e777e
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/little_icon.xbm
@@ -0,0 +1,14 @@
+#define little_icon_width 32
+#define little_icon_height 32
+static unsigned char little_icon_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xfc, 0x30, 0x00, 0x00, 0xfc, 0x31, 0x00, 0x00, 0x8c, 0x33, 0x00,
+ 0x00, 0x0c, 0x33, 0x00, 0x00, 0x0c, 0x33, 0x00, 0x00, 0x8c, 0x33, 0x00,
+ 0x00, 0xcc, 0x39, 0x00, 0x00, 0xec, 0x3c, 0x00, 0x00, 0x7c, 0x3e, 0x00,
+ 0x00, 0x3c, 0x37, 0x00, 0x00, 0x9c, 0x33, 0x00, 0x00, 0xcc, 0x31, 0x00,
+ 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x31, 0x00,
+ 0x00, 0x8c, 0x3f, 0x00, 0x00, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2a, 0xc6, 0x18, 0x52, 0x5a, 0x29, 0x25,
+ 0x42, 0x0a, 0x21, 0x05, 0x42, 0x0a, 0xe6, 0x18, 0x42, 0x0a, 0x28, 0x20,
+ 0x52, 0x0a, 0x29, 0x25, 0x8c, 0x09, 0xc6, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/payloads/libpayload/curses/PDCurses/x11/ncurses_cfg.h b/payloads/libpayload/curses/PDCurses/x11/ncurses_cfg.h
new file mode 100644
index 0000000..e4b74e3
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/ncurses_cfg.h
@@ -0,0 +1,47 @@
+/* $Id: ncurses_cfg.h,v 1.8 2006/12/28 01:02:03 wmcbrine Exp $
+ *
+ * This file is only used with the ncurses test programs.
+ *
+ * Have ncurses-5.6 unpacked in your $(HOME) (you don't need to build
+ * it), or edit ncurses_testdir appropriately in the Makefile. Configure
+ * and build PDCurses for X11. (Sorry, other ports won't work yet.)
+ * Change to this directory, and:
+ *
+ * "make ncurses_tests" to start.
+ * "make ncurses_clean" when you're done.
+ *
+ * Builds: bs gdc hanoi knight tclock ncurses
+ */
+
+#define NCURSES_MOUSE_VERSION 2
+
+#include "../config.h"
+#include <curses.h>
+
+#define ExitProgram exit
+
+#define HAVE_CURSES_VERSION 1
+#define HAVE_GETBEGX 1
+#define HAVE_GETCURX 1
+#define HAVE_GETMAXX 1
+#define HAVE_GETNSTR 1
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GETWIN 1
+#define HAVE_LIBPANEL 1
+#define HAVE_LOCALE_H 1
+#define HAVE_NAPMS 1
+#define HAVE_PANEL_H 1
+#define HAVE_PUTWIN 1
+#define HAVE_SLK_COLOR 1
+#define HAVE_SLK_INIT 1
+#define HAVE_WRESIZE 1
+
+#ifdef PDC_WIDE
+# define USE_WIDEC_SUPPORT 1
+#endif
+
+/* Fool ncurses.c so it gives us all the tests, and doesn't redefine
+ ACS_ chars
+*/
+
+#define NCURSES_VERSION PDCURSES
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcclip.c b/payloads/libpayload/curses/PDCurses/x11/pdcclip.c
new file mode 100644
index 0000000..bba080f
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcclip.c
@@ -0,0 +1,170 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdcclip.c,v 1.35 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <stdlib.h>
+
+/*man-start**************************************************************
+
+ Name: clipboard
+
+ Synopsis:
+ int PDC_getclipboard(char **contents, long *length);
+ int PDC_setclipboard(const char *contents, long length);
+ int PDC_freeclipboard(char *contents);
+ int PDC_clearclipboard(void);
+
+ Description:
+ PDC_getclipboard() gets the textual contents of the system's
+ clipboard. This function returns the contents of the clipboard
+ in the contents argument. It is the responsibilitiy of the
+ caller to free the memory returned, via PDC_freeclipboard().
+ The length of the clipboard contents is returned in the length
+ argument.
+
+ PDC_setclipboard copies the supplied text into the system's
+ clipboard, emptying the clipboard prior to the copy.
+
+ PDC_clearclipboard() clears the internal clipboard.
+
+ Return Values:
+ indicator of success/failure of call.
+ PDC_CLIP_SUCCESS the call was successful
+ PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
+ the clipboard contents
+ PDC_CLIP_EMPTY the clipboard contains no text
+ PDC_CLIP_ACCESS_ERROR no clipboard support
+
+ Portability X/Open BSD SYS V
+ PDC_getclipboard - - -
+ PDC_setclipboard - - -
+ PDC_freeclipboard - - -
+ PDC_clearclipboard - - -
+
+**man-end****************************************************************/
+
+int PDC_getclipboard(char **contents, long *length)
+{
+#ifdef PDC_WIDE
+ wchar_t *wcontents;
+#endif
+ int result = 0;
+ int len;
+
+ PDC_LOG(("PDC_getclipboard() - called\n"));
+
+ XCursesInstructAndWait(CURSES_GET_SELECTION);
+
+ if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0)
+ XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
+
+ if (result == PDC_CLIP_SUCCESS)
+ {
+ if (XC_read_socket(xc_display_sock, &len, sizeof(int)) < 0)
+ XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
+#ifdef PDC_WIDE
+ wcontents = malloc((len + 1) * sizeof(wchar_t));
+ *contents = malloc(len * 3 + 1);
+
+ if (!wcontents || !*contents)
+#else
+ *contents = malloc(len + 1);
+
+ if (!*contents)
+#endif
+ XCursesExitCursesProcess(6, "exiting from PDC_getclipboard - "
+ "synchronization error");
+
+ if (len)
+ {
+ if (XC_read_socket(xc_display_sock,
+#ifdef PDC_WIDE
+ wcontents, len * sizeof(wchar_t)) < 0)
+#else
+ *contents, len) < 0)
+#endif
+ XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
+ }
+
+#ifdef PDC_WIDE
+ wcontents[len] = 0;
+ len = PDC_wcstombs(*contents, wcontents, len * 3);
+ free(wcontents);
+#endif
+ (*contents)[len] = '\0';
+ *length = len;
+ }
+
+ return result;
+}
+
+int PDC_setclipboard(const char *contents, long length)
+{
+#ifdef PDC_WIDE
+ wchar_t *wcontents;
+#endif
+ int rc;
+
+ PDC_LOG(("PDC_setclipboard() - called\n"));
+
+#ifdef PDC_WIDE
+ wcontents = malloc((length + 1) * sizeof(wchar_t));
+ if (!wcontents)
+ return PDC_CLIP_MEMORY_ERROR;
+
+ length = PDC_mbstowcs(wcontents, contents, length);
+#endif
+ XCursesInstruct(CURSES_SET_SELECTION);
+
+ /* Write, then wait for X to do its stuff; expect return code. */
+
+ if (XC_write_socket(xc_display_sock, &length, sizeof(long)) >= 0)
+ {
+ if (XC_write_socket(xc_display_sock,
+#ifdef PDC_WIDE
+ wcontents, length * sizeof(wchar_t)) >= 0)
+ {
+ free(wcontents);
+#else
+ contents, length) >= 0)
+ {
+#endif
+ if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0)
+ return rc;
+ }
+ }
+
+ XCursesExitCursesProcess(5, "exiting from PDC_setclipboard");
+
+ return PDC_CLIP_ACCESS_ERROR; /* not reached */
+}
+
+int PDC_freeclipboard(char *contents)
+{
+ PDC_LOG(("PDC_freeclipboard() - called\n"));
+
+ free(contents);
+ return PDC_CLIP_SUCCESS;
+}
+
+int PDC_clearclipboard(void)
+{
+ int rc;
+ long len = 0;
+
+ PDC_LOG(("PDC_clearclipboard() - called\n"));
+
+ XCursesInstruct(CURSES_CLEAR_SELECTION);
+
+ /* Write, then wait for X to do its stuff; expect return code. */
+
+ if (XC_write_socket(xc_display_sock, &len, sizeof(long)) >= 0)
+ if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0)
+ return rc;
+
+ XCursesExitCursesProcess(5, "exiting from PDC_clearclipboard");
+
+ return PDC_CLIP_ACCESS_ERROR; /* not reached */
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcdisp.c b/payloads/libpayload/curses/PDCurses/x11/pdcdisp.c
new file mode 100644
index 0000000..a22e944
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcdisp.c
@@ -0,0 +1,132 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdcdisp.c,v 1.46 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <string.h>
+
+#ifdef CHTYPE_LONG
+
+# define A(x) ((chtype)x | A_ALTCHARSET)
+
+chtype acs_map[128] =
+{
+ A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10),
+ A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18), A(19),
+ A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27), A(28),
+ A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&', '\'', '(',
+ ')', '*',
+
+# ifdef PDC_WIDE
+ 0x2192, 0x2190, 0x2191, 0x2193,
+# else
+ '>', '<', '^', 'v',
+# endif
+
+ '/',
+
+# ifdef PDC_WIDE
+ 0x2588,
+# else
+ A(0),
+# endif
+
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
+ '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
+
+# ifdef PDC_WIDE
+ 0x2666, 0x2592,
+# else
+ A(1), A(2),
+# endif
+
+ 'b', 'c', 'd', 'e',
+
+# ifdef PDC_WIDE
+ 0x00b0, 0x00b1, 0x2591, 0x00a4, 0x2518, 0x2510, 0x250c, 0x2514,
+ 0x253c, 0x23ba, 0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524,
+ 0x2534, 0x252c, 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3,
+ 0x00b7,
+# else
+ A(7), A(8), '#', 0xa4, A(11), A(12), A(13), A(14), A(15), A(16),
+ A(17), A(18), A(19), A(20), A(21), A(22), A(23), A(24), A(25),
+ A(26), A(27), A(28), A(29), A(30), 0xb7,
+# endif
+
+ A(127)
+};
+
+# undef A
+
+#endif
+
+int PDC_display_cursor(int oldrow, int oldcol, int newrow, int newcol,
+ int visibility)
+{
+ char buf[30];
+ int idx, pos;
+
+ PDC_LOG(("%s:PDC_display_cursor() - called: NEW row %d col %d, vis %d\n",
+ XCLOGMSG, newrow, newcol, visibility));
+
+ if (visibility == -1)
+ {
+ /* Only send the CURSES_DISPLAY_CURSOR message, no data */
+
+ idx = CURSES_DISPLAY_CURSOR;
+ memcpy(buf, &idx, sizeof(int));
+ idx = sizeof(int);
+ }
+ else
+ {
+ idx = CURSES_CURSOR;
+ memcpy(buf, &idx, sizeof(int));
+
+ idx = sizeof(int);
+ pos = oldrow + (oldcol << 8);
+ memcpy(buf + idx, &pos, sizeof(int));
+
+ idx += sizeof(int);
+ pos = newrow + (newcol << 8);
+ memcpy(buf + idx, &pos, sizeof(int));
+
+ idx += sizeof(int);
+ }
+
+ if (XC_write_socket(xc_display_sock, buf, idx) < 0)
+ XCursesExitCursesProcess(1, "exiting from PDC_display_cursor");
+
+ return OK;
+}
+
+/* position hardware cursor at (y, x) */
+
+void PDC_gotoyx(int row, int col)
+{
+ PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
+
+ PDC_display_cursor(SP->cursrow, SP->curscol, row, col, SP->visibility);
+}
+
+/* update the given physical line to look like the corresponding line in
+ curscr */
+
+void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
+{
+ PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
+
+ XC_get_line_lock(lineno);
+
+ memcpy(Xcurscr + XCURSCR_Y_OFF(lineno) + (x * sizeof(chtype)), srcp,
+ len * sizeof(chtype));
+
+ *(Xcurscr + XCURSCR_START_OFF + lineno) = x;
+ *(Xcurscr + XCURSCR_LENGTH_OFF + lineno) = len;
+
+ XC_release_line_lock(lineno);
+
+ XCursesInstructAndWait(CURSES_REFRESH);
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcgetsc.c b/payloads/libpayload/curses/PDCurses/x11/pdcgetsc.c
new file mode 100644
index 0000000..8f7c0ad
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcgetsc.c
@@ -0,0 +1,30 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdcgetsc.c,v 1.26 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/* return width of screen/viewport */
+
+int PDC_get_columns(void)
+{
+ PDC_LOG(("PDC_get_columns() - called\n"));
+
+ return XCursesCOLS;
+}
+
+/* get the cursor size/shape */
+
+int PDC_get_cursor_mode(void)
+{
+ return 0;
+}
+
+/* return number of screen rows */
+
+int PDC_get_rows(void)
+{
+ PDC_LOG(("PDC_get_rows() - called\n"));
+
+ return XCursesLINES;
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdckbd.c b/payloads/libpayload/curses/PDCurses/x11/pdckbd.c
new file mode 100644
index 0000000..2f85ba0
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdckbd.c
@@ -0,0 +1,102 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdckbd.c,v 1.62 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: pdckbd
+
+ Synopsis:
+ unsigned long PDC_get_input_fd(void);
+
+ Description:
+ PDC_get_input_fd() returns the file descriptor that PDCurses
+ reads its input from. It can be used for select().
+
+ Portability X/Open BSD SYS V
+ PDC_get_input_fd - - -
+
+**man-end****************************************************************/
+
+/* check if a key or mouse event is waiting */
+
+bool PDC_check_key(void)
+{
+ struct timeval socket_timeout = {0};
+ int s;
+
+ /* Is something ready to be read on the socket ? Must be a key. */
+
+ FD_ZERO(&xc_readfds);
+ FD_SET(xc_key_sock, &xc_readfds);
+
+ if ((s = select(FD_SETSIZE, (FD_SET_CAST)&xc_readfds, NULL,
+ NULL, &socket_timeout)) < 0)
+ XCursesExitCursesProcess(3, "child - exiting from "
+ "PDC_check_key select failed");
+
+ PDC_LOG(("%s:PDC_check_key() - returning %s\n", XCLOGMSG,
+ s ? "TRUE" : "FALSE"));
+
+ return !!s;
+}
+
+/* return the next available key or mouse event */
+
+int PDC_get_key(void)
+{
+ unsigned long newkey = 0;
+ int key = 0;
+
+ if (XC_read_socket(xc_key_sock, &newkey, sizeof(unsigned long)) < 0)
+ XCursesExitCursesProcess(2, "exiting from PDC_get_key");
+
+ pdc_key_modifiers = (newkey >> 24) & 0xFF;
+ key = (int)(newkey & 0x00FFFFFF);
+
+ if (key == KEY_MOUSE && SP->key_code)
+ {
+ if (XC_read_socket(xc_key_sock, &pdc_mouse_status,
+ sizeof(MOUSE_STATUS)) < 0)
+ XCursesExitCursesProcess(2, "exiting from PDC_get_key");
+ }
+
+ PDC_LOG(("%s:PDC_get_key() - key %d returned\n", XCLOGMSG, key));
+
+ return key;
+}
+
+unsigned long PDC_get_input_fd(void)
+{
+ PDC_LOG(("PDC_get_input_fd() - called\n"));
+
+ return xc_key_sock;
+}
+
+void PDC_set_keyboard_binary(bool on)
+{
+ PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
+}
+
+/* discard any pending keyboard or mouse input -- this is the core
+ routine for flushinp() */
+
+void PDC_flushinp(void)
+{
+ PDC_LOG(("PDC_flushinp() - called\n"));
+
+ while (PDC_check_key())
+ PDC_get_key();
+}
+
+int PDC_mouse_set(void)
+{
+ return OK;
+}
+
+int PDC_modifiers_set(void)
+{
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcscrn.c b/payloads/libpayload/curses/PDCurses/x11/pdcscrn.c
new file mode 100644
index 0000000..b84b1c6
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcscrn.c
@@ -0,0 +1,150 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdcscrn.c,v 1.55 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/* COLOR_PAIR to attribute encoding table. */
+
+short *xc_atrtab = (short *)NULL;
+
+/* close the physical screen */
+
+void PDC_scr_close(void)
+{
+ PDC_LOG(("PDC_scr_close() - called\n"));
+}
+
+void PDC_scr_free(void)
+{
+ XCursesExit();
+
+ xc_atrtab = (short *)NULL;
+}
+
+/* open the physical screen -- allocate SP, miscellaneous intialization */
+
+int PDC_scr_open(int argc, char **argv)
+{
+ extern bool sb_started;
+
+ PDC_LOG(("PDC_scr_open() - called\n"));
+
+ if ((XCursesInitscr(argc, argv) == ERR) || !SP)
+ return ERR;
+
+ SP->cursrow = SP->curscol = 0;
+ SP->orig_attr = FALSE;
+ SP->sb_on = sb_started;
+ SP->sb_total_y = 0;
+ SP->sb_viewport_y = 0;
+ SP->sb_cur_y = 0;
+ SP->sb_total_x = 0;
+ SP->sb_viewport_x = 0;
+ SP->sb_cur_x = 0;
+
+ return OK;
+}
+
+/* the core of resize_term() */
+
+int PDC_resize_screen(int nlines, int ncols)
+{
+ PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n",
+ nlines, ncols));
+
+ if (nlines || ncols || !SP->resized)
+ return ERR;
+
+ shmdt((char *)Xcurscr);
+ XCursesInstructAndWait(CURSES_RESIZE);
+
+ if ((shmid_Xcurscr = shmget(shmkey_Xcurscr,
+ SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0)
+ {
+ perror("Cannot allocate shared memory for curscr");
+ kill(xc_otherpid, SIGKILL);
+ return ERR;
+ }
+
+ XCursesLINES = SP->lines;
+ XCursesCOLS = SP->cols;
+
+ PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d SP->lines %d "
+ "SP->cols %d\n", XCLOGMSG, shmid_Xcurscr,
+ shmkey_Xcurscr, SP->lines, SP->cols));
+
+ Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0);
+ xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
+
+ SP->resized = FALSE;
+
+ return OK;
+}
+
+void PDC_reset_prog_mode(void)
+{
+ PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
+}
+
+void PDC_reset_shell_mode(void)
+{
+ PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
+}
+
+void PDC_restore_screen_mode(int i)
+{
+}
+
+void PDC_save_screen_mode(int i)
+{
+}
+
+void PDC_init_pair(short pair, short fg, short bg)
+{
+ xc_atrtab[pair * 2] = fg;
+ xc_atrtab[pair * 2 + 1] = bg;
+}
+
+int PDC_pair_content(short pair, short *fg, short *bg)
+{
+ *fg = xc_atrtab[pair * 2];
+ *bg = xc_atrtab[pair * 2 + 1];
+
+ return OK;
+}
+
+bool PDC_can_change_color(void)
+{
+ return TRUE;
+}
+
+int PDC_color_content(short color, short *red, short *green, short *blue)
+{
+ XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
+
+ tmp->pixel = color;
+
+ XCursesInstructAndWait(CURSES_GET_COLOR);
+
+ *red = ((double)(tmp->red) * 1000 / 65535) + 0.5;
+ *green = ((double)(tmp->green) * 1000 / 65535) + 0.5;
+ *blue = ((double)(tmp->blue) * 1000 / 65535) + 0.5;
+
+ return OK;
+}
+
+int PDC_init_color(short color, short red, short green, short blue)
+{
+ XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
+
+ tmp->pixel = color;
+
+ tmp->red = ((double)red * 65535 / 1000) + 0.5;
+ tmp->green = ((double)green * 65535 / 1000) + 0.5;
+ tmp->blue = ((double)blue * 65535 / 1000) + 0.5;
+
+ XCursesInstructAndWait(CURSES_SET_COLOR);
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcsetsc.c b/payloads/libpayload/curses/PDCurses/x11/pdcsetsc.c
new file mode 100644
index 0000000..bdcc856
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcsetsc.c
@@ -0,0 +1,74 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdcsetsc.c,v 1.33 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <string.h>
+
+/*man-start**************************************************************
+
+ Name: pdcsetsc
+
+ Synopsis:
+ int PDC_set_blink(bool blinkon);
+ void PDC_set_title(const char *title);
+
+ Description:
+ PDC_set_blink() toggles whether the A_BLINK attribute sets an
+ actual blink mode (TRUE), or sets the background color to high
+ intensity (FALSE). The default is platform-dependent (FALSE in
+ most cases). It returns OK if it could set the state to match
+ the given parameter, ERR otherwise. Current platforms also
+ adjust the value of COLORS according to this function -- 16 for
+ FALSE, and 8 for TRUE.
+
+ PDC_set_title() sets the title of the window in which the curses
+ program is running. This function may not do anything on some
+ platforms. (Currently it only works in Win32 and X11.)
+
+ Portability X/Open BSD SYS V
+ PDC_set_blink - - -
+ PDC_set_title - - -
+
+**man-end****************************************************************/
+
+int PDC_curs_set(int visibility)
+{
+ int ret_vis = SP->visibility;
+
+ PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
+
+ if (visibility != -1)
+ SP->visibility = visibility;
+
+ PDC_display_cursor(SP->cursrow, SP->curscol, SP->cursrow,
+ SP->curscol, visibility);
+
+ return ret_vis;
+}
+
+void PDC_set_title(const char *title)
+{
+ int len;
+
+ PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
+
+ len = strlen(title) + 1; /* write nul character */
+
+ XCursesInstruct(CURSES_TITLE);
+
+ if (XC_write_display_socket_int(len) >= 0)
+ if (XC_write_socket(xc_display_sock, title, len) >= 0)
+ return;
+
+ XCursesExitCursesProcess(1, "exiting from PDC_set_title");
+}
+
+int PDC_set_blink(bool blinkon)
+{
+ if (pdc_color_started)
+ COLORS = 16;
+
+ return blinkon ? ERR : OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcutil.c b/payloads/libpayload/curses/PDCurses/x11/pdcutil.c
new file mode 100644
index 0000000..5b5109f
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcutil.c
@@ -0,0 +1,39 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdcutil.c,v 1.10 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#if defined(HAVE_POLL) && !defined(HAVE_USLEEP)
+# include <poll.h>
+#endif
+
+void PDC_beep(void)
+{
+ PDC_LOG(("PDC_beep() - called\n"));
+
+ XCursesInstruct(CURSES_BELL);
+}
+
+void PDC_napms(int ms)
+{
+ PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
+
+#if defined(HAVE_USLEEP)
+
+ usleep(1000 * ms);
+
+#elif defined(HAVE_POLL)
+ {
+ struct pollfd fd;
+ fd.fd = -1;
+ fd.events = 0;
+ poll(&fd, 1, ms);
+ }
+#endif
+}
+
+const char *PDC_sysname(void)
+{
+ return "X11";
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcx11.c b/payloads/libpayload/curses/PDCurses/x11/pdcx11.c
new file mode 100644
index 0000000..370cedb
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcx11.c
@@ -0,0 +1,317 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: pdcx11.c,v 1.96 2008/07/14 04:24:52 wmcbrine Exp $")
+
+#include <errno.h>
+#include <stdlib.h>
+
+/*** Functions that are called by both processes ***/
+
+unsigned char *Xcurscr;
+
+int XCursesProcess = 1;
+int shmidSP;
+int shmid_Xcurscr;
+int shmkeySP;
+int shmkey_Xcurscr;
+int xc_otherpid;
+int XCursesLINES = 24;
+int XCursesCOLS = 80;
+int xc_display_sock;
+int xc_key_sock;
+int xc_display_sockets[2];
+int xc_key_sockets[2];
+int xc_exit_sock;
+
+fd_set xc_readfds;
+
+static void _dummy_function(void)
+{
+}
+
+void XC_get_line_lock(int row)
+{
+ /* loop until we can write to the line -- Patch by:
+ Georg Fuchs, georg.fuchs at rz.uni-regensburg.de */
+
+ while (*(Xcurscr + XCURSCR_FLAG_OFF + row))
+ _dummy_function();
+
+ *(Xcurscr + XCURSCR_FLAG_OFF + row) = 1;
+}
+
+void XC_release_line_lock(int row)
+{
+ *(Xcurscr + XCURSCR_FLAG_OFF + row) = 0;
+}
+
+int XC_write_socket(int sock_num, const void *buf, int len)
+{
+ int start = 0, rc;
+
+ PDC_LOG(("%s:XC_write_socket called: sock_num %d len %d\n",
+ XCLOGMSG, sock_num, len));
+
+#ifdef MOUSE_DEBUG
+ if (sock_num == xc_key_sock)
+ printf("%s:XC_write_socket(key) len: %d\n", XCLOGMSG, len);
+#endif
+ while (1)
+ {
+ rc = write(sock_num, buf + start, len);
+
+ if (rc < 0 || rc == len)
+ return rc;
+
+ len -= rc;
+ start = rc;
+ }
+}
+
+int XC_read_socket(int sock_num, void *buf, int len)
+{
+ int start = 0, length = len, rc;
+
+ PDC_LOG(("%s:XC_read_socket called: sock_num %d len %d\n",
+ XCLOGMSG, sock_num, len));
+
+ while (1)
+ {
+ rc = read(sock_num, buf + start, length);
+
+#ifdef MOUSE_DEBUG
+ if (sock_num == xc_key_sock)
+ printf("%s:XC_read_socket(key) rc %d errno %d "
+ "resized: %d\n", XCLOGMSG, rc, errno, SP->resized);
+#endif
+ if (rc < 0 && sock_num == xc_key_sock && errno == EINTR
+ && SP->resized != FALSE)
+ {
+ MOUSE_LOG(("%s:continuing\n", XCLOGMSG));
+
+ rc = 0;
+
+ if (SP->resized > 1)
+ SP->resized = TRUE;
+ else
+ SP->resized = FALSE;
+
+ memcpy(buf, &rc, sizeof(int));
+
+ return 0;
+ }
+
+ if (rc <= 0 || rc == length)
+ return rc;
+
+ length -= rc;
+ start = rc;
+ }
+}
+
+int XC_write_display_socket_int(int x)
+{
+ return XC_write_socket(xc_display_sock, &x, sizeof(int));
+}
+
+#ifdef PDCDEBUG
+void XC_say(const char *msg)
+{
+ PDC_LOG(("%s:%s", XCLOGMSG, msg));
+}
+#endif
+
+/*** Functions that are called by the "curses" process ***/
+
+int XCursesInstruct(int flag)
+{
+ PDC_LOG(("%s:XCursesInstruct() - called flag %d\n", XCLOGMSG, flag));
+
+ /* Send a request to X */
+
+ if (XC_write_display_socket_int(flag) < 0)
+ XCursesExitCursesProcess(4, "exiting from XCursesInstruct");
+
+ return OK;
+}
+
+int XCursesInstructAndWait(int flag)
+{
+ int result;
+
+ XC_LOG(("XCursesInstructAndWait() - called\n"));
+
+ /* tell X we want to do something */
+
+ XCursesInstruct(flag);
+
+ /* wait for X to say the refresh has occurred*/
+
+ if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0)
+ XCursesExitCursesProcess(5, "exiting from XCursesInstructAndWait");
+
+ if (result != CURSES_CONTINUE)
+ XCursesExitCursesProcess(6, "exiting from XCursesInstructAndWait"
+ " - synchronization error");
+
+ return OK;
+}
+
+static int _setup_curses(void)
+{
+ int wait_value;
+
+ XC_LOG(("_setup_curses called\n"));
+
+ close(xc_display_sockets[1]);
+ close(xc_key_sockets[1]);
+
+ xc_display_sock = xc_display_sockets[0];
+ xc_key_sock = xc_key_sockets[0];
+
+ FD_ZERO(&xc_readfds);
+
+ XC_read_socket(xc_display_sock, &wait_value, sizeof(int));
+
+ if (wait_value != CURSES_CHILD)
+ return ERR;
+
+ /* Set LINES and COLS now so that the size of the shared memory
+ segment can be allocated */
+
+ if ((shmidSP = shmget(shmkeySP, sizeof(SCREEN) + XCURSESSHMMIN, 0700)) < 0)
+ {
+ perror("Cannot allocate shared memory for SCREEN");
+ kill(xc_otherpid, SIGKILL);
+ return ERR;
+ }
+
+ SP = (SCREEN*)shmat(shmidSP, 0, 0);
+
+ XCursesLINES = SP->lines;
+ LINES = XCursesLINES - SP->linesrippedoff - SP->slklines;
+ XCursesCOLS = COLS = SP->cols;
+
+ if ((shmid_Xcurscr = shmget(shmkey_Xcurscr,
+ SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0)
+ {
+ perror("Cannot allocate shared memory for curscr");
+ kill(xc_otherpid, SIGKILL);
+ return ERR;
+ }
+
+ PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d LINES %d COLS %d\n",
+ XCLOGMSG, shmid_Xcurscr, shmkey_Xcurscr, LINES, COLS));
+
+ Xcurscr = (unsigned char *)shmat(shmid_Xcurscr, 0, 0);
+ xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
+
+ XC_LOG(("cursesprocess exiting from Xinitscr\n"));
+
+ /* Always trap SIGWINCH if the C library supports SIGWINCH */
+
+ XCursesSetSignal(SIGWINCH, XCursesSigwinchHandler);
+
+ atexit(XCursesExit);
+
+ return OK;
+}
+
+int XCursesInitscr(int argc, char *argv[])
+{
+ int pid, rc;
+
+ XC_LOG(("XCursesInitscr() - called\n"));
+
+ shmkeySP = getpid();
+
+ if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_display_sockets) < 0)
+ {
+ fprintf(stderr, "ERROR: cannot create display socketpair\n");
+ return ERR;
+ }
+
+ if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_key_sockets) < 0)
+ {
+ fprintf(stderr, "ERROR: cannot create key socketpair\n");
+ return ERR;
+ }
+
+ pid = fork();
+
+ switch(pid)
+ {
+ case -1:
+ fprintf(stderr, "ERROR: cannot fork()\n");
+ return ERR;
+ break;
+
+ case 0: /* child */
+ shmkey_Xcurscr = getpid();
+#ifdef XISPARENT
+ XCursesProcess = 0;
+ rc = _setup_curses();
+#else
+ XCursesProcess = 1;
+ xc_otherpid = getppid();
+ rc = XCursesSetupX(argc, argv);
+#endif
+ break;
+
+ default: /* parent */
+ shmkey_Xcurscr = pid;
+#ifdef XISPARENT
+ XCursesProcess = 1;
+ xc_otherpid = pid;
+ rc = XCursesSetupX(argc, argv);
+#else
+ XCursesProcess = 0;
+ rc = _setup_curses();
+#endif
+ }
+
+ return rc;
+}
+
+static void _cleanup_curses_process(int rc)
+{
+ PDC_LOG(("%s:_cleanup_curses_process() - called: %d\n", XCLOGMSG, rc));
+
+ shutdown(xc_display_sock, 2);
+ close(xc_display_sock);
+
+ shutdown(xc_key_sock, 2);
+ close(xc_key_sock);
+
+ shmdt((char *)SP);
+ shmdt((char *)Xcurscr);
+
+ if (rc)
+ _exit(rc);
+}
+
+void XCursesExitCursesProcess(int rc, char *msg)
+{
+ PDC_LOG(("%s:XCursesExitCursesProcess() - called: %d %s\n",
+ XCLOGMSG, rc, msg));
+
+ endwin();
+ _cleanup_curses_process(rc);
+}
+
+void XCursesExit(void)
+{
+ static bool called = FALSE;
+
+ XC_LOG(("XCursesExit() - called\n"));
+
+ if (FALSE == called)
+ {
+ XCursesInstruct(CURSES_EXIT);
+ _cleanup_curses_process(0);
+
+ called = TRUE;
+ }
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/pdcx11.h b/payloads/libpayload/curses/PDCurses/x11/pdcx11.h
new file mode 100644
index 0000000..dc7b9ae
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/pdcx11.h
@@ -0,0 +1,188 @@
+/* Public Domain Curses */
+
+/* $Id: pdcx11.h,v 1.64 2008/07/14 04:24:52 wmcbrine Exp $ */
+
+#include <curspriv.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <signal.h>
+#include <ctype.h>
+#include <pwd.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h> /* AIX needs this for FD_ZERO etc macros */
+#endif
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
+#include <Intrinsic.h>
+#include <StringDefs.h>
+#include <Shell.h>
+
+#ifdef USE_XAW3D
+# include <Xaw3d/Box.h>
+# include <Xaw3d/Scrollbar.h>
+#elif defined(USE_NEXTAW)
+# include <neXtaw/Box.h>
+# include <neXtaw/Scrollbar.h>
+#else
+# include <Xaw/Box.h>
+# include <Xaw/Scrollbar.h>
+#endif
+#include "x11/ScrollBox.h"
+
+#include "Xmu/StdSel.h"
+#include "Xmu/Atoms.h"
+
+#include <keysym.h>
+#include <Xatom.h>
+
+#define XCURSCR_Y_SIZE (XCursesLINES * XCursesCOLS * sizeof(chtype))
+#define XCURSCR_FLAG_SIZE (XCursesLINES * sizeof(int))
+#define XCURSCR_START_SIZE (XCursesLINES * sizeof(int))
+#define XCURSCR_LENGTH_SIZE (XCursesLINES * sizeof(int))
+#define XCURSCR_ATRTAB_SIZE (PDC_COLOR_PAIRS * 2 * sizeof(short))
+#define XCURSCR_SIZE (XCURSCR_FLAG_SIZE + XCURSCR_START_SIZE + \
+ XCURSCR_LENGTH_SIZE + XCURSCR_Y_SIZE + XCURSCR_ATRTAB_SIZE + \
+ sizeof(XColor))
+
+#define XCURSCR_Y_OFF(y) ((y) * XCursesCOLS * sizeof(chtype))
+#define XCURSCR_FLAG_OFF (XCURSCR_Y_OFF(0) + XCURSCR_Y_SIZE)
+#define XCURSCR_START_OFF (XCURSCR_FLAG_OFF + XCURSCR_FLAG_SIZE)
+#define XCURSCR_LENGTH_OFF (XCURSCR_START_OFF + XCURSCR_START_SIZE)
+#define XCURSCR_ATRTAB_OFF (XCURSCR_LENGTH_OFF + XCURSCR_LENGTH_SIZE)
+#define XCURSCR_XCOLOR_OFF (XCURSCR_ATRTAB_OFF + XCURSCR_ATRTAB_SIZE)
+
+typedef struct
+{
+ int lines;
+ int cols;
+ Pixel cursorColor;
+ Pixel colorBlack;
+ Pixel colorRed;
+ Pixel colorGreen;
+ Pixel colorYellow;
+ Pixel colorBlue;
+ Pixel colorMagenta;
+ Pixel colorCyan;
+ Pixel colorWhite;
+ Pixel colorBoldBlack;
+ Pixel colorBoldRed;
+ Pixel colorBoldGreen;
+ Pixel colorBoldYellow;
+ Pixel colorBoldBlue;
+ Pixel colorBoldMagenta;
+ Pixel colorBoldCyan;
+ Pixel colorBoldWhite;
+ Pixel pointerForeColor;
+ Pixel pointerBackColor;
+ XFontStruct *normalFont;
+ XFontStruct *italicFont;
+ char *bitmap;
+#ifdef HAVE_XPM_H
+ char *pixmap;
+#endif
+ char *composeKey;
+ Cursor pointer;
+ int shmmin;
+ int borderWidth;
+ int borderColor;
+ int clickPeriod;
+ int doubleClickPeriod;
+ int scrollbarWidth;
+ int cursorBlinkRate;
+ char *textCursor;
+} XCursesAppData;
+
+extern XCursesAppData xc_app_data;
+
+#define XCURSESSHMMIN xc_app_data.shmmin
+
+#define XCLOGMSG (XCursesProcess ? " X" : "CURSES")
+
+void XC_get_line_lock(int);
+void XC_release_line_lock(int);
+
+int PDC_display_cursor(int, int, int, int, int);
+
+void XCursesExitCursesProcess(int, char *);
+int XCursesInstruct(int);
+int XCursesInstructAndWait(int);
+int XCursesInitscr(int, char **);
+
+int XC_write_socket(int, const void *, int);
+int XC_read_socket(int, void *, int);
+int XC_write_display_socket_int(int);
+
+int XCursesSetupX(int argc, char *argv[]);
+RETSIGTYPE XCursesSigwinchHandler(int signo);
+
+#ifdef _HPUX_SOURCE
+# define FD_SET_CAST int *
+#else
+# define FD_SET_CAST fd_set *
+#endif
+
+extern fd_set xc_readfds;
+
+extern unsigned char *Xcurscr;
+extern int XCursesProcess;
+extern int shmidSP;
+extern int shmid_Xcurscr;
+extern int shmkeySP;
+extern int shmkey_Xcurscr;
+extern int xc_otherpid;
+extern int XCursesLINES;
+extern int XCursesCOLS;
+extern int xc_display_sock;
+extern int xc_key_sock;
+extern int xc_display_sockets[2];
+extern int xc_key_sockets[2];
+extern int xc_exit_sock;
+
+typedef RETSIGTYPE (*signal_handler)();
+
+signal_handler XCursesSetSignal(int, signal_handler);
+
+#ifdef PDCDEBUG
+void XC_say(const char *msg);
+# define XC_LOG(x) XC_say x
+#else
+# define XC_LOG(x)
+#endif
+
+#ifdef MOUSE_DEBUG
+# define MOUSE_LOG(x) printf x
+#else
+# define MOUSE_LOG(x)
+#endif
+
+enum
+{
+ CURSES_CLEAR_SELECTION, CURSES_DISPLAY_CURSOR, CURSES_SET_SELECTION,
+ CURSES_GET_SELECTION, CURSES_TITLE, CURSES_REFRESH_SCROLLBAR,
+ CURSES_RESIZE, CURSES_BELL, CURSES_CONTINUE, CURSES_CURSOR,
+ CURSES_CHILD, CURSES_REFRESH, CURSES_GET_COLOR, CURSES_SET_COLOR,
+ CURSES_EXIT
+};
+
+extern short *xc_atrtab;
diff --git a/payloads/libpayload/curses/PDCurses/x11/sb.c b/payloads/libpayload/curses/PDCurses/x11/sb.c
new file mode 100644
index 0000000..95b0292
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/sb.c
@@ -0,0 +1,152 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: sb.c,v 1.27 2008/07/14 04:24:52 wmcbrine Exp $")
+
+/*man-start**************************************************************
+
+ Name: sb
+
+ Synopsis:
+ int sb_init(void)
+ int sb_set_horz(int total, int viewport, int cur)
+ int sb_set_vert(int total, int viewport, int cur)
+ int sb_get_horz(int *total, int *viewport, int *cur)
+ int sb_get_vert(int *total, int *viewport, int *cur)
+ int sb_refresh(void);
+
+ Description:
+ These functions manipulate the scrollbar.
+
+ Return Value:
+ All functions return OK on success and ERR on error.
+
+ Portability X/Open BSD SYS V
+ sb_init - - -
+ sb_set_horz - - -
+ sb_set_vert - - -
+ sb_get_horz - - -
+ sb_get_vert - - -
+ sb_refresh - - -
+
+**man-end****************************************************************/
+
+bool sb_started = FALSE;
+
+/* sb_init() is the sb initialization routine.
+ This must be called before initscr(). */
+
+int sb_init(void)
+{
+ PDC_LOG(("sb_init() - called\n"));
+
+ if (SP)
+ return ERR;
+
+ sb_started = TRUE;
+
+ return OK;
+}
+
+/* sb_set_horz() - Used to set horizontal scrollbar.
+
+ total = total number of columns
+ viewport = size of viewport in columns
+ cur = current column in total */
+
+int sb_set_horz(int total, int viewport, int cur)
+{
+ PDC_LOG(("sb_set_horz() - called: total %d viewport %d cur %d\n",
+ total, viewport, cur));
+
+ if (!SP)
+ return ERR;
+
+ SP->sb_total_x = total;
+ SP->sb_viewport_x = viewport;
+ SP->sb_cur_x = cur;
+
+ return OK;
+}
+
+/* sb_set_vert() - Used to set vertical scrollbar.
+
+ total = total number of columns on line
+ viewport = size of viewport in columns
+ cur = current column in total */
+
+int sb_set_vert(int total, int viewport, int cur)
+{
+ PDC_LOG(("sb_set_vert() - called: total %d viewport %d cur %d\n",
+ total, viewport, cur));
+
+ if (!SP)
+ return ERR;
+
+ SP->sb_total_y = total;
+ SP->sb_viewport_y = viewport;
+ SP->sb_cur_y = cur;
+
+ return OK;
+}
+
+/* sb_get_horz() - Used to get horizontal scrollbar.
+
+ total = total number of lines
+ viewport = size of viewport in lines
+ cur = current line in total */
+
+int sb_get_horz(int *total, int *viewport, int *cur)
+{
+ PDC_LOG(("sb_get_horz() - called\n"));
+
+ if (!SP)
+ return ERR;
+
+ if (total)
+ *total = SP->sb_total_x;
+ if (viewport)
+ *viewport = SP->sb_viewport_x;
+ if (cur)
+ *cur = SP->sb_cur_x;
+
+ return OK;
+}
+
+/* sb_get_vert() - Used to get vertical scrollbar.
+
+ total = total number of lines
+ viewport = size of viewport in lines
+ cur = current line in total */
+
+int sb_get_vert(int *total, int *viewport, int *cur)
+{
+ PDC_LOG(("sb_get_vert() - called\n"));
+
+ if (!SP)
+ return ERR;
+
+ if (total)
+ *total = SP->sb_total_y;
+ if (viewport)
+ *viewport = SP->sb_viewport_y;
+ if (cur)
+ *cur = SP->sb_cur_y;
+
+ return OK;
+}
+
+/* sb_refresh() - Used to draw the scrollbars. */
+
+int sb_refresh(void)
+{
+ PDC_LOG(("sb_refresh() - called\n"));
+
+ if (!SP)
+ return ERR;
+
+ XCursesInstruct(CURSES_REFRESH_SCROLLBAR);
+
+ return OK;
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/x11.c b/payloads/libpayload/curses/PDCurses/x11/x11.c
new file mode 100644
index 0000000..69c3199
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/x11.c
@@ -0,0 +1,3229 @@
+/* Public Domain Curses */
+
+#include "pdcx11.h"
+
+RCSID("$Id: x11.c,v 1.94 2008/07/14 04:33:26 wmcbrine Exp $")
+
+#ifdef HAVE_DECKEYSYM_H
+# include <DECkeysym.h>
+#endif
+
+#ifdef HAVE_SUNKEYSYM_H
+# include <Sunkeysym.h>
+#endif
+
+#ifdef HAVE_XPM_H
+# include <xpm.h>
+#endif
+
+#if defined PDC_XIM
+# include <Xlocale.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef XPOINTER_TYPEDEFED
+typedef char * XPointer;
+#endif
+
+#ifndef MAX_PATH
+# define MAX_PATH 256
+#endif
+
+XCursesAppData xc_app_data;
+
+#if NeedWidePrototypes
+# define PDC_SCROLLBAR_TYPE double
+#else
+# define PDC_SCROLLBAR_TYPE float
+#endif
+
+#define MAX_COLORS 16 /* maximum of "normal" colors */
+#define COLOR_CURSOR MAX_COLORS /* color of cursor */
+#define COLOR_BORDER MAX_COLORS + 1 /* color of border */
+
+#define XCURSESDISPLAY (XtDisplay(drawing))
+#define XCURSESWIN (XtWindow(drawing))
+
+/* Default icons for XCurses applications. */
+
+#include "big_icon.xbm"
+#include "little_icon.xbm"
+
+static void _selection_off(void);
+static void _display_cursor(int, int, int, int);
+static void _redraw_cursor(void);
+static void _exit_process(int, int, char *);
+static void _send_key_to_curses(unsigned long, MOUSE_STATUS *, bool);
+
+static void XCursesButton(Widget, XEvent *, String *, Cardinal *);
+static void XCursesHandleString(Widget, XEvent *, String *, Cardinal *);
+static void XCursesKeyPress(Widget, XEvent *, String *, Cardinal *);
+static void XCursesPasteSelection(Widget, XButtonEvent *);
+
+static struct
+{
+ KeySym keycode;
+ bool numkeypad;
+ unsigned short normal;
+ unsigned short shifted;
+ unsigned short control;
+ unsigned short alt;
+} key_table[] =
+{
+/* keycode keypad normal shifted control alt*/
+ {XK_Left, FALSE, KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT},
+ {XK_Right, FALSE, KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT},
+ {XK_Up, FALSE, KEY_UP, KEY_SUP, CTL_UP, ALT_UP},
+ {XK_Down, FALSE, KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN},
+ {XK_Home, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME},
+/* Sun Type 4 keyboard */
+ {XK_R7, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME},
+ {XK_End, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END},
+/* Sun Type 4 keyboard */
+ {XK_R13, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END},
+ {XK_Prior, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP},
+/* Sun Type 4 keyboard */
+ {XK_R9, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP},
+ {XK_Next, FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN},
+/* Sun Type 4 keyboard */
+ {XK_R15, FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN},
+ {XK_Insert, FALSE, KEY_IC, KEY_SIC, CTL_INS, ALT_INS},
+ {XK_Delete, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL},
+ {XK_F1, FALSE, KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37)},
+ {XK_F2, FALSE, KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38)},
+ {XK_F3, FALSE, KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39)},
+ {XK_F4, FALSE, KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40)},
+ {XK_F5, FALSE, KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41)},
+ {XK_F6, FALSE, KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42)},
+ {XK_F7, FALSE, KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43)},
+ {XK_F8, FALSE, KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44)},
+ {XK_F9, FALSE, KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45)},
+ {XK_F10, FALSE, KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46)},
+ {XK_F11, FALSE, KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47)},
+ {XK_F12, FALSE, KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48)},
+ {XK_F13, FALSE, KEY_F(13), KEY_F(25), KEY_F(37), KEY_F(49)},
+ {XK_F14, FALSE, KEY_F(14), KEY_F(26), KEY_F(38), KEY_F(50)},
+ {XK_F15, FALSE, KEY_F(15), KEY_F(27), KEY_F(39), KEY_F(51)},
+ {XK_F16, FALSE, KEY_F(16), KEY_F(28), KEY_F(40), KEY_F(52)},
+ {XK_F17, FALSE, KEY_F(17), KEY_F(29), KEY_F(41), KEY_F(53)},
+ {XK_F18, FALSE, KEY_F(18), KEY_F(30), KEY_F(42), KEY_F(54)},
+ {XK_F19, FALSE, KEY_F(19), KEY_F(31), KEY_F(43), KEY_F(55)},
+ {XK_F20, FALSE, KEY_F(20), KEY_F(32), KEY_F(44), KEY_F(56)},
+ {XK_BackSpace, FALSE, 0x08, 0x08, CTL_BKSP, ALT_BKSP},
+ {XK_Tab, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB},
+ {XK_Select, FALSE, KEY_SELECT, KEY_SELECT, KEY_SELECT, KEY_SELECT},
+ {XK_Print, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT},
+ {XK_Find, FALSE, KEY_FIND, KEY_SFIND, KEY_FIND, KEY_FIND},
+ {XK_Pause, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND},
+ {XK_Clear, FALSE, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR},
+ {XK_Cancel, FALSE, KEY_CANCEL, KEY_SCANCEL, KEY_CANCEL, KEY_CANCEL},
+ {XK_Break, FALSE, KEY_BREAK, KEY_BREAK, KEY_BREAK, KEY_BREAK},
+ {XK_Help, FALSE, KEY_HELP, KEY_SHELP, KEY_LHELP, KEY_HELP},
+ {XK_L4, FALSE, KEY_UNDO, KEY_SUNDO, KEY_UNDO, KEY_UNDO},
+ {XK_L6, FALSE, KEY_COPY, KEY_SCOPY, KEY_COPY, KEY_COPY},
+ {XK_L9, FALSE, KEY_FIND, KEY_SFIND, KEY_FIND, KEY_FIND},
+ {XK_Menu, FALSE, KEY_OPTIONS, KEY_SOPTIONS, KEY_OPTIONS, KEY_OPTIONS},
+#ifdef HAVE_SUNKEYSYM_H
+ {SunXK_F36, FALSE, KEY_F(41), KEY_F(43), KEY_F(45), KEY_F(47)},
+ {SunXK_F37, FALSE, KEY_F(42), KEY_F(44), KEY_F(46), KEY_F(48)},
+#endif
+#ifdef HAVE_DECKEYSYM_H
+ {DXK_Remove, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL},
+#endif
+ {XK_Escape, FALSE, 0x1B, 0x1B, 0x1B, ALT_ESC},
+ {XK_KP_Enter, TRUE, PADENTER, PADENTER, CTL_PADENTER,ALT_PADENTER},
+ {XK_KP_Add, TRUE, PADPLUS, '+', CTL_PADPLUS, ALT_PADPLUS},
+ {XK_KP_Subtract,TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS},
+ {XK_KP_Multiply,TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
+/* Sun Type 4 keyboard */
+ {XK_R6, TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
+ {XK_KP_Divide, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
+/* Sun Type 4 keyboard */
+ {XK_R5, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
+ {XK_KP_Decimal,TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP},
+ {XK_KP_0, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0},
+ {XK_KP_1, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1},
+ {XK_KP_2, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2},
+ {XK_KP_3, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
+ {XK_KP_4, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4},
+ {XK_KP_5, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
+/* Sun Type 4 keyboard */
+ {XK_R11, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
+ {XK_KP_6, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6},
+ {XK_KP_7, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
+ {XK_KP_8, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8},
+ {XK_KP_9, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
+/* the following added to support Sun Type 5 keyboards */
+ {XK_F21, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND},
+ {XK_F22, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT},
+ {XK_F24, TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS},
+/* Sun Type 4 keyboard */
+ {XK_F25, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH},
+/* Sun Type 4 keyboard */
+ {XK_F26, TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR},
+ {XK_F27, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
+ {XK_F29, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
+ {XK_F31, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
+ {XK_F35, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
+#ifdef HAVE_XK_KP_DELETE
+ {XK_KP_Delete, TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP},
+#endif
+#ifdef HAVE_XK_KP_INSERT
+ {XK_KP_Insert, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0},
+#endif
+#ifdef HAVE_XK_KP_END
+ {XK_KP_End, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1},
+#endif
+#ifdef HAVE_XK_KP_DOWN
+ {XK_KP_Down, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2},
+#endif
+#ifdef HAVE_XK_KP_NEXT
+ {XK_KP_Next, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3},
+#endif
+#ifdef HAVE_XK_KP_LEFT
+ {XK_KP_Left, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4},
+#endif
+#ifdef HAVE_XK_KP_BEGIN
+ {XK_KP_Begin, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5},
+#endif
+#ifdef HAVE_XK_KP_RIGHT
+ {XK_KP_Right, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6},
+#endif
+#ifdef HAVE_XK_KP_HOME
+ {XK_KP_Home, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7},
+#endif
+#ifdef HAVE_XK_KP_UP
+ {XK_KP_Up, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8},
+#endif
+#ifdef HAVE_XK_KP_PRIOR
+ {XK_KP_Prior, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9},
+#endif
+ {0, 0, 0, 0, 0, 0}
+};
+
+#ifndef PDC_XIM
+# include "compose.h"
+#endif
+
+#define BITMAPDEPTH 1
+
+unsigned long pdc_key_modifiers = 0L;
+
+static GC normal_gc, block_cursor_gc, rect_cursor_gc, italic_gc, border_gc;
+static int font_height, font_width, font_ascent, font_descent,
+ window_width, window_height;
+static int resize_window_width = 0, resize_window_height = 0;
+static char *bitmap_file = NULL;
+#ifdef HAVE_XPM_H
+static char *pixmap_file = NULL;
+#endif
+static KeySym keysym = 0;
+
+static int state_mask[8] =
+{
+ ShiftMask,
+ LockMask,
+ ControlMask,
+ Mod1Mask,
+ Mod2Mask,
+ Mod3Mask,
+ Mod4Mask,
+ Mod5Mask
+};
+
+static Atom wm_atom[2];
+static String class_name = "XCurses";
+static XtAppContext app_context;
+static Widget topLevel, drawing, scrollBox, scrollVert, scrollHoriz;
+static int received_map_notify = 0;
+static bool mouse_selection = FALSE;
+static chtype *tmpsel = NULL;
+static unsigned long tmpsel_length = 0;
+static int selection_start_x = 0, selection_start_y = 0,
+ selection_end_x = 0, selection_end_y = 0;
+static Pixmap icon_bitmap;
+#ifdef HAVE_XPM_H
+static Pixmap icon_pixmap;
+static Pixmap icon_pixmap_mask;
+#endif
+static bool visible_cursor = FALSE;
+static bool window_entered = TRUE;
+static char *program_name;
+
+/* Macros just for app_resources */
+
+#ifdef PDC_WIDE
+# define DEFFONT "-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1"
+#else
+# define DEFFONT "7x13"
+#endif
+
+#define APPDATAOFF(n) XtOffsetOf(XCursesAppData, n)
+
+#define RINT(name1, name2, value) { \
+ #name1, #name2, XtRInt, \
+ sizeof(int), APPDATAOFF(name1), XtRImmediate, \
+ (XtPointer)value \
+ }
+
+#define RPIXEL(name1, name2, value) { \
+ #name1, #name2, XtRPixel, \
+ sizeof(Pixel), APPDATAOFF(name1), XtRString, \
+ (XtPointer)#value \
+ }
+
+#define RCOLOR(name, value) RPIXEL(color##name, Color##name, value)
+
+
+#define RSTRINGP(name1, name2, param) { \
+ #name1, #name2, XtRString, \
+ MAX_PATH, APPDATAOFF(name1), XtRString, (XtPointer)param \
+ }
+
+#define RSTRING(name1, name2) RSTRINGP(name1, name2, "")
+
+#define RFONT(name1, name2, value) { \
+ #name1, #name2, XtRFontStruct, \
+ sizeof(XFontStruct), APPDATAOFF(name1), XtRString, \
+ (XtPointer)value \
+ }
+
+#define RCURSOR(name1, name2, value) { \
+ #name1, #name2, XtRCursor, \
+ sizeof(Cursor), APPDATAOFF(name1), XtRString, \
+ (XtPointer)#value \
+ }
+
+static XtResource app_resources[] =
+{
+ RINT(lines, Lines, 24),
+ RINT(cols, Cols, 80),
+
+ RPIXEL(cursorColor, CursorColor, Red),
+
+ RCOLOR(Black, Black),
+ RCOLOR(Red, red3),
+ RCOLOR(Green, green3),
+ RCOLOR(Yellow, yellow3),
+ RCOLOR(Blue, blue3),
+ RCOLOR(Magenta, magenta3),
+ RCOLOR(Cyan, cyan3),
+ RCOLOR(White, Grey),
+
+ RCOLOR(BoldBlack, grey40),
+ RCOLOR(BoldRed, red1),
+ RCOLOR(BoldGreen, green1),
+ RCOLOR(BoldYellow, yellow1),
+ RCOLOR(BoldBlue, blue1),
+ RCOLOR(BoldMagenta, magenta1),
+ RCOLOR(BoldCyan, cyan1),
+ RCOLOR(BoldWhite, White),
+
+ RFONT(normalFont, NormalFont, DEFFONT),
+ RFONT(italicFont, ItalicFont, DEFFONT),
+
+ RSTRING(bitmap, Bitmap),
+#ifdef HAVE_XPM_H
+ RSTRING(pixmap, Pixmap),
+#endif
+ RSTRINGP(composeKey, ComposeKey, "Multi_key"),
+
+ RCURSOR(pointer, Pointer, xterm),
+
+ RPIXEL(pointerForeColor, PointerForeColor, Black),
+ RPIXEL(pointerBackColor, PointerBackColor, White),
+
+ RINT(shmmin, Shmmin, 0),
+ RINT(borderWidth, BorderWidth, 0),
+
+ RPIXEL(borderColor, BorderColor, Black),
+
+ RINT(doubleClickPeriod, DoubleClickPeriod, (PDC_CLICK_PERIOD * 2)),
+ RINT(clickPeriod, ClickPeriod, PDC_CLICK_PERIOD),
+ RINT(scrollbarWidth, ScrollbarWidth, 15),
+ RINT(cursorBlinkRate, CursorBlinkRate, 0),
+
+ RSTRING(textCursor, TextCursor)
+};
+
+#undef RCURSOR
+#undef RFONT
+#undef RSTRING
+#undef RCOLOR
+#undef RPIXEL
+#undef RINT
+#undef APPDATAOFF
+#undef DEFFONT
+
+/* Macros for options */
+
+#define COPT(name) {"-" #name, "*" #name, XrmoptionSepArg, NULL}
+#define CCOLOR(name) COPT(color##name)
+
+static XrmOptionDescRec options[] =
+{
+ COPT(lines), COPT(cols), COPT(normalFont), COPT(italicFont),
+ COPT(bitmap),
+#ifdef HAVE_XPM_H
+ COPT(pixmap),
+#endif
+ COPT(pointer), COPT(shmmin), COPT(composeKey), COPT(clickPeriod),
+ COPT(doubleClickPeriod), COPT(scrollbarWidth),
+ COPT(pointerForeColor), COPT(pointerBackColor),
+ COPT(cursorBlinkRate), COPT(cursorColor), COPT(textCursor),
+
+ CCOLOR(Black), CCOLOR(Red), CCOLOR(Green), CCOLOR(Yellow),
+ CCOLOR(Blue), CCOLOR(Magenta), CCOLOR(Cyan), CCOLOR(White),
+
+ CCOLOR(BoldBlack), CCOLOR(BoldRed), CCOLOR(BoldGreen),
+ CCOLOR(BoldYellow), CCOLOR(BoldBlue), CCOLOR(BoldMagenta),
+ CCOLOR(BoldCyan), CCOLOR(BoldWhite)
+};
+
+#undef CCOLOR
+#undef COPT
+
+static XtActionsRec action_table[] =
+{
+ {"XCursesButton", (XtActionProc)XCursesButton},
+ {"XCursesKeyPress", (XtActionProc)XCursesKeyPress},
+ {"XCursesPasteSelection", (XtActionProc)XCursesPasteSelection},
+ {"string", (XtActionProc)XCursesHandleString}
+};
+
+static bool after_first_curses_request = FALSE;
+static Pixel colors[MAX_COLORS + 2];
+static bool vertical_cursor = FALSE;
+
+#ifdef PDC_XIM
+static XIM Xim = NULL;
+static XIC Xic = NULL;
+#endif
+
+static const char *default_translations =
+{
+ "<Key>: XCursesKeyPress() \n" \
+ "<KeyUp>: XCursesKeyPress() \n" \
+ "<BtnDown>: XCursesButton() \n" \
+ "<BtnUp>: XCursesButton() \n" \
+ "<BtnMotion>: XCursesButton()"
+};
+
+static int _to_utf8(char *outcode, chtype code)
+{
+#ifdef PDC_WIDE
+ if (code & A_ALTCHARSET && !(code & 0xff80))
+ code = acs_map[code & 0x7f];
+#endif
+ code &= A_CHARTEXT;
+
+ if (code < 0x80)
+ {
+ outcode[0] = code;
+ return 1;
+ }
+ else
+ if (code < 0x800)
+ {
+ outcode[0] = ((code & 0x07c0) >> 6) | 0xc0;
+ outcode[1] = (code & 0x003f) | 0x80;
+ return 2;
+ }
+ else
+ {
+ outcode[0] = ((code & 0xf000) >> 12) | 0xe0;
+ outcode[1] = ((code & 0x0fc0) >> 6) | 0x80;
+ outcode[2] = (code & 0x003f) | 0x80;
+ return 3;
+ }
+}
+
+static int _from_utf8(wchar_t *pwc, const char *s, size_t n)
+{
+ wchar_t key;
+ int i = -1;
+ const unsigned char *string;
+
+ if (!s || (n < 1))
+ return -1;
+
+ if (!*s)
+ return 0;
+
+ string = (const unsigned char *)s;
+
+ key = string[0];
+
+ /* Simplistic UTF-8 decoder -- only does the BMP, minimal validation */
+
+ if (key & 0x80)
+ {
+ if ((key & 0xe0) == 0xc0)
+ {
+ if (1 < n)
+ {
+ key = ((key & 0x1f) << 6) | (string[1] & 0x3f);
+ i = 2;
+ }
+ }
+ else if ((key & 0xe0) == 0xe0)
+ {
+ if (2 < n)
+ {
+ key = ((key & 0x0f) << 12) |
+ ((string[1] & 0x3f) << 6) | (string[2] & 0x3f);
+ i = 3;
+ }
+ }
+ }
+ else
+ i = 1;
+
+ if (i)
+ *pwc = key;
+
+ return i;
+}
+
+#ifndef X_HAVE_UTF8_STRING
+static Atom XA_UTF8_STRING(Display *dpy)
+{
+ static AtomPtr p = NULL;
+
+ if (!p)
+ p = XmuMakeAtom("UTF8_STRING");
+
+ return XmuInternAtom(dpy, p);
+}
+#endif
+
+signal_handler XCursesSetSignal(int signo, signal_handler action)
+{
+#if defined(SA_INTERRUPT) || defined(SA_RESTART)
+ struct sigaction sigact, osigact;
+
+ sigact.sa_handler = action;
+
+ sigact.sa_flags =
+# ifdef SA_INTERRUPT
+# ifdef SA_RESTART
+ SA_INTERRUPT | SA_RESTART;
+# else
+ SA_INTERRUPT;
+# endif
+# else /* must be SA_RESTART */
+ SA_RESTART;
+# endif
+ sigemptyset(&sigact.sa_mask);
+
+ if (sigaction(signo, &sigact, &osigact))
+ return SIG_ERR;
+
+ return osigact.sa_handler;
+
+#else /* not SA_INTERRUPT or SA_RESTART, use plain signal */
+ return signal(signo, action);
+#endif
+}
+
+RETSIGTYPE XCursesSigwinchHandler(int signo)
+{
+ PDC_LOG(("%s:XCursesSigwinchHandler() - called: SIGNO: %d\n",
+ XCLOGMSG, signo));
+
+ /* Patch by: Georg Fuchs, georg.fuchs at rz.uni-regensburg.de
+ 02-Feb-1999 */
+
+ SP->resized += 1;
+
+ /* Always trap SIGWINCH if the C library supports SIGWINCH */
+
+#ifdef SIGWINCH
+ XCursesSetSignal(SIGWINCH, XCursesSigwinchHandler);
+#endif
+}
+
+/* Convert character positions x and y to pixel positions, stored in
+ xpos and ypos */
+
+static void _make_xy(int x, int y, int *xpos, int *ypos)
+{
+ *xpos = (x * font_width) + xc_app_data.borderWidth;
+ *ypos = xc_app_data.normalFont->ascent + (y * font_height) +
+ xc_app_data.borderWidth;
+}
+
+/* Output a block of characters with common attributes */
+
+static int _new_packet(chtype attr, bool rev, int len, int col, int row,
+#ifdef PDC_WIDE
+ XChar2b *text)
+#else
+ char *text)
+#endif
+{
+ GC gc;
+ int xpos, ypos;
+ short fore, back;
+
+ PDC_pair_content(PAIR_NUMBER(attr), &fore, &back);
+
+#ifdef PDC_WIDE
+ text[len].byte1 = text[len].byte2 = 0;
+#else
+ text[len] = '\0';
+#endif
+
+ /* Specify the color table offsets */
+
+ fore |= (attr & A_BOLD) ? 8 : 0;
+ back |= (attr & A_BLINK) ? 8 : 0;
+
+ /* Reverse flag = highlighted selection XOR A_REVERSE set */
+
+ rev ^= !!(attr & A_REVERSE);
+
+ /* Determine which GC to use - normal or italic */
+
+ gc = (attr & A_ITALIC) ? italic_gc : normal_gc;
+
+ /* Draw it */
+
+ XSetForeground(XCURSESDISPLAY, gc, colors[rev ? back : fore]);
+ XSetBackground(XCURSESDISPLAY, gc, colors[rev ? fore : back]);
+
+ _make_xy(col, row, &xpos, &ypos);
+
+#ifdef PDC_WIDE
+ XDrawImageString16(
+#else
+ XDrawImageString(
+#endif
+ XCURSESDISPLAY, XCURSESWIN, gc, xpos, ypos, text, len);
+
+ /* Underline, etc. */
+
+ if (attr & (A_LEFTLINE|A_RIGHTLINE|A_UNDERLINE))
+ {
+ int k;
+
+ if (SP->line_color != -1)
+ XSetForeground(XCURSESDISPLAY, gc, colors[SP->line_color]);
+
+ if (attr & A_UNDERLINE) /* UNDER */
+ XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc,
+ xpos, ypos + 1, xpos + font_width * len, ypos + 1);
+
+ if (attr & A_LEFTLINE) /* LEFT */
+ for (k = 0; k < len; k++)
+ {
+ int x = xpos + font_width * k - 1;
+ XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc,
+ x, ypos - font_ascent, x, ypos + font_descent);
+ }
+
+ if (attr & A_RIGHTLINE) /* RIGHT */
+ for (k = 0; k < len; k++)
+ {
+ int x = xpos + font_width * (k + 1) - 1;
+ XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc,
+ x, ypos - font_ascent, x, ypos + font_descent);
+ }
+ }
+
+ PDC_LOG(("%s:_new_packet() - row: %d col: %d "
+ "num_cols: %d fore: %d back: %d text:<%s>\n",
+ XCLOGMSG, row, col, len, fore, back, text));
+
+ return OK;
+}
+
+/* The core display routine -- update one line of text */
+
+static int _display_text(const chtype *ch, int row, int col,
+ int num_cols, bool highlight)
+{
+#ifdef PDC_WIDE
+ XChar2b text[513];
+#else
+ char text[513];
+#endif
+ chtype old_attr, attr;
+ int i, j;
+
+ PDC_LOG(("%s:_display_text() - called: row: %d col: %d "
+ "num_cols: %d\n", XCLOGMSG, row, col, num_cols));
+
+ if (!num_cols)
+ return OK;
+
+ old_attr = *ch & A_ATTRIBUTES;
+
+ for (i = 0, j = 0; j < num_cols; j++)
+ {
+ chtype curr = ch[j];
+
+ attr = curr & A_ATTRIBUTES;
+
+#ifdef CHTYPE_LONG
+ if (attr & A_ALTCHARSET && !(curr & 0xff80))
+ {
+ attr ^= A_ALTCHARSET;
+ curr = acs_map[curr & 0x7f];
+ }
+#endif
+
+#ifndef PDC_WIDE
+ /* Special handling for ACS_BLOCK */
+
+ if (!(curr & A_CHARTEXT))
+ {
+ curr |= ' ';
+ attr ^= A_REVERSE;
+ }
+#endif
+ if (attr != old_attr)
+ {
+ if (_new_packet(old_attr, highlight, i, col, row, text) == ERR)
+ return ERR;
+
+ old_attr = attr;
+ col += i;
+ i = 0;
+ }
+
+#ifdef PDC_WIDE
+ text[i].byte1 = (curr & 0xff00) >> 8;
+ text[i++].byte2 = curr & 0x00ff;
+#else
+ text[i++] = curr & 0xff;
+#endif
+ }
+
+ return _new_packet(old_attr, highlight, i, col, row, text);
+}
+
+static void _get_gc(GC *gc, XFontStruct *font_info, int fore, int back)
+{
+ XGCValues values;
+
+ /* Create default Graphics Context */
+
+ *gc = XCreateGC(XCURSESDISPLAY, XCURSESWIN, 0L, &values);
+
+ /* specify font */
+
+ XSetFont(XCURSESDISPLAY, *gc, font_info->fid);
+
+ XSetForeground(XCURSESDISPLAY, *gc, colors[fore]);
+ XSetBackground(XCURSESDISPLAY, *gc, colors[back]);
+}
+
+static void _initialize_colors(void)
+{
+ colors[COLOR_BLACK] = xc_app_data.colorBlack;
+ colors[COLOR_RED] = xc_app_data.colorRed;
+ colors[COLOR_GREEN] = xc_app_data.colorGreen;
+ colors[COLOR_YELLOW] = xc_app_data.colorYellow;
+ colors[COLOR_BLUE] = xc_app_data.colorBlue;
+ colors[COLOR_MAGENTA] = xc_app_data.colorMagenta;
+ colors[COLOR_CYAN] = xc_app_data.colorCyan;
+ colors[COLOR_WHITE] = xc_app_data.colorWhite;
+
+ colors[COLOR_BLACK + 8] = xc_app_data.colorBoldBlack;
+ colors[COLOR_RED + 8] = xc_app_data.colorBoldRed;
+ colors[COLOR_GREEN + 8] = xc_app_data.colorBoldGreen;
+ colors[COLOR_YELLOW + 8] = xc_app_data.colorBoldYellow;
+ colors[COLOR_BLUE + 8] = xc_app_data.colorBoldBlue;
+ colors[COLOR_MAGENTA + 8] = xc_app_data.colorBoldMagenta;
+ colors[COLOR_CYAN + 8] = xc_app_data.colorBoldCyan;
+ colors[COLOR_WHITE + 8] = xc_app_data.colorBoldWhite;
+
+ colors[COLOR_CURSOR] = xc_app_data.cursorColor;
+ colors[COLOR_BORDER] = xc_app_data.borderColor;
+}
+
+static void _refresh_scrollbar(void)
+{
+ XC_LOG(("_refresh_scrollbar() - called\n"));
+
+ if (SP->sb_on)
+ {
+ PDC_SCROLLBAR_TYPE total_y = SP->sb_total_y;
+ PDC_SCROLLBAR_TYPE total_x = SP->sb_total_x;
+
+ if (total_y)
+ XawScrollbarSetThumb(scrollVert,
+ (PDC_SCROLLBAR_TYPE)(SP->sb_cur_y) / total_y,
+ (PDC_SCROLLBAR_TYPE)(SP->sb_viewport_y) / total_y);
+
+ if (total_x)
+ XawScrollbarSetThumb(scrollHoriz,
+ (PDC_SCROLLBAR_TYPE)(SP->sb_cur_x) / total_x,
+ (PDC_SCROLLBAR_TYPE)(SP->sb_viewport_x) / total_x);
+ }
+}
+
+static void _set_cursor_color(chtype *ch, short *fore, short *back)
+{
+ int attr;
+ short f, b;
+
+ attr = PAIR_NUMBER(*ch);
+
+ if (attr)
+ {
+ PDC_pair_content(attr, &f, &b);
+ *fore = 7 - (f % 8);
+ *back = 7 - (b % 8);
+ }
+ else
+ {
+ if (*ch & A_REVERSE)
+ {
+ *back = COLOR_BLACK;
+ *fore = COLOR_WHITE;
+ }
+ else
+ {
+ *back = COLOR_WHITE;
+ *fore = COLOR_BLACK;
+ }
+ }
+}
+
+static void _get_icon(void)
+{
+ XIconSize *icon_size;
+ int size_count = 0;
+ Status rc;
+ unsigned char *bitmap_bits = NULL;
+ unsigned icon_bitmap_width = 0, icon_bitmap_height = 0,
+ file_bitmap_width = 0, file_bitmap_height = 0;
+
+ XC_LOG(("_get_icon() - called\n"));
+
+ icon_size = XAllocIconSize();
+
+ rc = XGetIconSizes(XtDisplay(topLevel),
+ RootWindowOfScreen(XtScreen(topLevel)),
+ &icon_size, &size_count);
+
+ /* if the WM can advise on icon sizes... */
+
+ if (rc && size_count)
+ {
+ int i, max_height = 0, max_width = 0;
+
+ PDC_LOG(("%s:size_count: %d rc: %d\n", XCLOGMSG, size_count, rc));
+
+ for (i = 0; i < size_count; i++)
+ {
+ if (icon_size[i].max_width > max_width)
+ max_width = icon_size[i].max_width;
+ if (icon_size[i].max_height > max_height)
+ max_height = icon_size[i].max_height;
+
+ PDC_LOG(("%s:min: %d %d\n", XCLOGMSG,
+ icon_size[i].min_width, icon_size[i].min_height));
+
+ PDC_LOG(("%s:max: %d %d\n", XCLOGMSG,
+ icon_size[i].max_width, icon_size[i].max_height));
+
+ PDC_LOG(("%s:inc: %d %d\n", XCLOGMSG,
+ icon_size[i].width_inc, icon_size[i].height_inc));
+ }
+
+ if (max_width >= big_icon_width && max_height >= big_icon_height)
+ {
+ icon_bitmap_width = big_icon_width;
+ icon_bitmap_height = big_icon_height;
+ bitmap_bits = (unsigned char *)big_icon_bits;
+ }
+ else
+ {
+ icon_bitmap_width = little_icon_width;
+ icon_bitmap_height = little_icon_height;
+ bitmap_bits = (unsigned char *)little_icon_bits;
+ }
+
+ }
+ else /* use small icon */
+ {
+ icon_bitmap_width = little_icon_width;
+ icon_bitmap_height = little_icon_height;
+ bitmap_bits = (unsigned char *)little_icon_bits;
+ }
+
+ XFree(icon_size);
+
+#ifdef HAVE_XPM_H
+ if (xc_app_data.pixmap && xc_app_data.pixmap[0]) /* supplied pixmap */
+ {
+ XpmReadFileToPixmap(XtDisplay(topLevel),
+ RootWindowOfScreen(XtScreen(topLevel)),
+ (char *)xc_app_data.pixmap,
+ &icon_pixmap, &icon_pixmap_mask, NULL);
+ return;
+ }
+#endif
+
+ if (xc_app_data.bitmap && xc_app_data.bitmap[0]) /* supplied bitmap */
+ {
+ int x_hot = 0, y_hot = 0;
+
+ rc = XReadBitmapFile(XtDisplay(topLevel),
+ RootWindowOfScreen(XtScreen(topLevel)),
+ (char *)xc_app_data.bitmap,
+ &file_bitmap_width, &file_bitmap_height,
+ &icon_bitmap, &x_hot, &y_hot);
+
+ switch(rc)
+ {
+ case BitmapOpenFailed:
+ fprintf(stderr, "bitmap file %s: not found\n",
+ xc_app_data.bitmap);
+ break;
+ case BitmapFileInvalid:
+ fprintf(stderr, "bitmap file %s: contents invalid\n",
+ xc_app_data.bitmap);
+ break;
+ default:
+ return;
+ }
+ }
+
+ icon_bitmap = XCreateBitmapFromData(XtDisplay(topLevel),
+ RootWindowOfScreen(XtScreen(topLevel)),
+ (char *)bitmap_bits, icon_bitmap_width, icon_bitmap_height);
+}
+
+static void _draw_border(void)
+{
+ /* Draw the border if required */
+
+ if (xc_app_data.borderWidth)
+ XDrawRectangle(XCURSESDISPLAY, XCURSESWIN, border_gc,
+ xc_app_data.borderWidth / 2,
+ xc_app_data.borderWidth / 2,
+ window_width - xc_app_data.borderWidth,
+ window_height - xc_app_data.borderWidth);
+}
+
+/* Redraw the entire screen */
+
+static void _display_screen(void)
+{
+ int row;
+
+ XC_LOG(("_display_screen() - called\n"));
+
+ for (row = 0; row < XCursesLINES; row++)
+ {
+ XC_get_line_lock(row);
+
+ _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row)),
+ row, 0, COLS, FALSE);
+
+ XC_release_line_lock(row);
+ }
+
+ _redraw_cursor();
+ _draw_border();
+}
+
+/* Draw changed portions of the screen */
+
+static void _refresh_screen(void)
+{
+ int row, start_col, num_cols;
+
+ XC_LOG(("_refresh_screen() - called\n"));
+
+ for (row = 0; row < XCursesLINES; row++)
+ {
+ num_cols = (int)*(Xcurscr + XCURSCR_LENGTH_OFF + row);
+
+ if (num_cols)
+ {
+ XC_get_line_lock(row);
+
+ start_col = (int)*(Xcurscr + XCURSCR_START_OFF + row);
+
+ _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row) +
+ (start_col * sizeof(chtype))), row, start_col,
+ num_cols, FALSE);
+
+ *(Xcurscr + XCURSCR_LENGTH_OFF + row) = 0;
+
+ XC_release_line_lock(row);
+ }
+ }
+
+ if (mouse_selection)
+ _selection_off();
+}
+
+static void _handle_expose(Widget w, XtPointer client_data, XEvent *event,
+ Boolean *unused)
+{
+ XC_LOG(("_handle_expose() - called\n"));
+
+ /* ignore all Exposes except last */
+
+ if (event->xexpose.count)
+ return;
+
+ if (after_first_curses_request && received_map_notify)
+ _display_screen();
+}
+
+static void _handle_nonmaskable(Widget w, XtPointer client_data, XEvent *event,
+ Boolean *unused)
+{
+ XClientMessageEvent *client_event = (XClientMessageEvent *)event;
+
+ PDC_LOG(("%s:_handle_nonmaskable called: xc_otherpid %d event %d\n",
+ XCLOGMSG, xc_otherpid, event->type));
+
+ if (event->type == ClientMessage)
+ {
+ XC_LOG(("ClientMessage received\n"));
+
+ /* This code used to include handling of WM_SAVE_YOURSELF, but
+ it resulted in continual failure of THE on my Toshiba laptop.
+ Removed on 3-3-2001. Now only exits on WM_DELETE_WINDOW. */
+
+ if ((Atom)client_event->data.s[0] == wm_atom[0])
+ _exit_process(0, SIGKILL, "");
+ }
+}
+
+static void XCursesKeyPress(Widget w, XEvent *event, String *params,
+ Cardinal *nparams)
+{
+ enum { STATE_NORMAL, STATE_COMPOSE, STATE_CHAR };
+
+#ifdef PDC_XIM
+ Status status;
+ wchar_t buffer[120];
+#else
+ unsigned char buffer[120];
+ XComposeStatus compose;
+ static int compose_state = STATE_NORMAL;
+ static int compose_index = 0;
+ int char_idx = 0;
+#endif
+ unsigned long key = 0;
+ int buflen = 40;
+ int i, count;
+ unsigned long modifier = 0;
+ bool key_code = FALSE;
+
+ XC_LOG(("XCursesKeyPress() - called\n"));
+
+ /* Handle modifier keys first; ignore other KeyReleases */
+
+ if (event->type == KeyRelease)
+ {
+ /* The keysym value was set by a previous call to this function
+ with a KeyPress event (or reset by the mouse event handler) */
+
+ if (SP->return_key_modifiers &&
+#ifndef PDC_XIM
+ keysym != compose_key &&
+#endif
+ IsModifierKey(keysym))
+ {
+ switch (keysym) {
+ case XK_Shift_L:
+ key = KEY_SHIFT_L;
+ break;
+ case XK_Shift_R:
+ key = KEY_SHIFT_R;
+ break;
+ case XK_Control_L:
+ key = KEY_CONTROL_L;
+ break;
+ case XK_Control_R:
+ key = KEY_CONTROL_R;
+ break;
+ case XK_Alt_L:
+ key = KEY_ALT_L;
+ break;
+ case XK_Alt_R:
+ key = KEY_ALT_R;
+ }
+
+ if (key)
+ _send_key_to_curses(key, NULL, TRUE);
+ }
+
+ return;
+ }
+
+ buffer[0] = '\0';
+
+#ifdef PDC_XIM
+ count = XwcLookupString(Xic, &(event->xkey), buffer, buflen,
+ &keysym, &status);
+#else
+ count = XLookupString(&(event->xkey), (char *)buffer, buflen,
+ &keysym, &compose);
+#endif
+
+ /* translate keysym into curses key code */
+
+ PDC_LOG(("%s:Key mask: %x\n", XCLOGMSG, event->xkey.state));
+
+#ifdef PDCDEBUG
+ for (i = 0; i < 4; i++)
+ PDC_debug("%s:Keysym %x %d\n", XCLOGMSG,
+ XKeycodeToKeysym(XCURSESDISPLAY, event->xkey.keycode, i), i);
+#endif
+
+#ifndef PDC_XIM
+
+ /* Check if the key just pressed is the user-specified compose
+ key; if it is, set the compose state and exit. */
+
+ if (keysym == compose_key)
+ {
+ chtype *ch;
+ int xpos, ypos, save_visibility = SP->visibility;
+ short fore = 0, back = 0;
+
+ /* Change the shape of the cursor to an outline rectangle to
+ indicate we are in "compose" status */
+
+ SP->visibility = 0;
+
+ _redraw_cursor();
+
+ SP->visibility = save_visibility;
+ _make_xy(SP->curscol, SP->cursrow, &xpos, &ypos);
+
+ ch = (chtype *)(Xcurscr + XCURSCR_Y_OFF(SP->cursrow) +
+ (SP->curscol * sizeof(chtype)));
+
+ _set_cursor_color(ch, &fore, &back);
+
+ XSetForeground(XCURSESDISPLAY, rect_cursor_gc, colors[back]);
+
+ XDrawRectangle(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc,
+ xpos + 1, ypos - font_height +
+ xc_app_data.normalFont->descent + 1,
+ font_width - 2, font_height - 2);
+
+ compose_state = STATE_COMPOSE;
+ return;
+ }
+
+ switch (compose_state)
+ {
+ case STATE_COMPOSE:
+ if (IsModifierKey(keysym))
+ return;
+
+ if (event->xkey.state & compose_mask)
+ {
+ compose_state = STATE_NORMAL;
+ _redraw_cursor();
+ break;
+ }
+
+ if (buffer[0] && count == 1)
+ key = buffer[0];
+
+ compose_index = -1;
+
+ for (i = 0; i < (int)strlen(compose_chars); i++)
+ if (compose_chars[i] == key)
+ {
+ compose_index = i;
+ break;
+ }
+
+ if (compose_index == -1)
+ {
+ compose_state = STATE_NORMAL;
+ compose_index = 0;
+ _redraw_cursor();
+ break;
+ }
+
+ compose_state = STATE_CHAR;
+ return;
+
+ case STATE_CHAR:
+ if (IsModifierKey(keysym))
+ return;
+
+ if (event->xkey.state & compose_mask)
+ {
+ compose_state = STATE_NORMAL;
+ _redraw_cursor();
+ break;
+ }
+
+ if (buffer[0] && count == 1)
+ key = buffer[0];
+
+ char_idx = -1;
+
+ for (i = 0; i < MAX_COMPOSE_CHARS; i++)
+ if (compose_lookups[compose_index][i] == key)
+ {
+ char_idx = i;
+ break;
+ }
+
+ if (char_idx == -1)
+ {
+ compose_state = STATE_NORMAL;
+ compose_index = 0;
+ _redraw_cursor();
+ break;
+ }
+
+ _send_key_to_curses(compose_keys[compose_index][char_idx],
+ NULL, FALSE);
+
+ compose_state = STATE_NORMAL;
+ compose_index = 0;
+
+ _redraw_cursor();
+
+ return;
+ }
+
+#endif /* PDC_XIM */
+
+ /* To get here we are procesing "normal" keys */
+
+ PDC_LOG(("%s:Keysym %x %d\n", XCLOGMSG,
+ XKeycodeToKeysym(XCURSESDISPLAY, event->xkey.keycode, key), key));
+
+ if (SP->save_key_modifiers)
+ {
+ /* 0x10: usually, numlock modifier */
+
+ if (event->xkey.state & Mod2Mask)
+ modifier |= PDC_KEY_MODIFIER_NUMLOCK;
+
+ /* 0x01: shift modifier */
+
+ if (event->xkey.state & ShiftMask)
+ modifier |= PDC_KEY_MODIFIER_SHIFT;
+
+ /* 0x04: control modifier */
+
+ if (event->xkey.state & ControlMask)
+ modifier |= PDC_KEY_MODIFIER_CONTROL;
+
+ /* 0x08: usually, alt modifier */
+
+ if (event->xkey.state & Mod1Mask)
+ modifier |= PDC_KEY_MODIFIER_ALT;
+ }
+
+ for (i = 0; key_table[i].keycode; i++)
+ {
+ if (key_table[i].keycode == keysym)
+ {
+ PDC_LOG(("%s:State %x\n", XCLOGMSG, event->xkey.state));
+
+ /* ControlMask: 0x04: control modifier
+ Mod1Mask: 0x08: usually, alt modifier
+ Mod2Mask: 0x10: usually, numlock modifier
+ ShiftMask: 0x01: shift modifier */
+
+ if ((event->xkey.state & ShiftMask) ||
+ (key_table[i].numkeypad &&
+ (event->xkey.state & Mod2Mask)))
+ {
+ key = key_table[i].shifted;
+ }
+ else if (event->xkey.state & ControlMask)
+ {
+ key = key_table[i].control;
+ }
+ else if (event->xkey.state & Mod1Mask)
+ {
+ key = key_table[i].alt;
+ }
+
+ /* To get here, we ignore all other modifiers */
+
+ else
+ key = key_table[i].normal;
+
+ key_code = (key > 0x100);
+ break;
+ }
+ }
+
+ if (!key && buffer[0] && count == 1)
+ key = buffer[0];
+
+ PDC_LOG(("%s:Key: %s pressed - %x Mod: %x\n", XCLOGMSG,
+ XKeysymToString(keysym), key, event->xkey.state));
+
+ /* Handle ALT letters and numbers */
+
+ if (event->xkey.state == Mod1Mask)
+ {
+ if (key >= 'A' && key <= 'Z')
+ {
+ key += ALT_A - 'A';
+ key_code = TRUE;
+ }
+
+ if (key >= 'a' && key <= 'z')
+ {
+ key += ALT_A - 'a';
+ key_code = TRUE;
+ }
+
+ if (key >= '0' && key <= '9')
+ {
+ key += ALT_0 - '0';
+ key_code = TRUE;
+ }
+ }
+
+ /* After all that, send the key back to the application if is
+ NOT zero. */
+
+ if (key)
+ {
+ key |= (modifier << 24);
+
+ _send_key_to_curses(key, NULL, key_code);
+ }
+}
+
+static void XCursesHandleString(Widget w, XEvent *event, String *params,
+ Cardinal *nparams)
+{
+ unsigned char *ptr;
+
+ if (*nparams != 1)
+ return;
+
+ ptr = (unsigned char *)*params;
+
+ if (ptr[0] == '0' && ptr[1] == 'x' && ptr[2] != '\0')
+ {
+ unsigned char c;
+ unsigned long total = 0;
+
+ for (ptr += 2; (c = tolower(*ptr)); ptr++)
+ {
+ total <<= 4;
+
+ if (c >= '0' && c <= '9')
+ total += c - '0';
+ else
+ if (c >= 'a' && c <= 'f')
+ total += c - ('a' - 10);
+ else
+ break;
+ }
+
+ if (c == '\0')
+ _send_key_to_curses(total, NULL, FALSE);
+ }
+ else
+ for (; *ptr; ptr++)
+ _send_key_to_curses((unsigned long)*ptr, NULL, FALSE);
+}
+
+static void _paste_string(Widget w, XtPointer data, Atom *selection, Atom *type,
+ XtPointer value, unsigned long *length, int *format)
+{
+ unsigned long i, key;
+ unsigned char *string = value;
+
+ XC_LOG(("_paste_string() - called\n"));
+
+ if (!*type || !*length || !string)
+ return;
+
+ for (i = 0; string[i] && (i < (*length)); i++)
+ {
+ key = string[i];
+
+ if (key == 10) /* new line - convert to ^M */
+ key = 13;
+
+ _send_key_to_curses(key, NULL, FALSE);
+ }
+
+ XtFree(value);
+}
+
+static void _paste_utf8(Widget w, XtPointer event, Atom *selection, Atom *type,
+ XtPointer value, unsigned long *length, int *format)
+{
+ wchar_t key;
+ size_t i = 0, len;
+ char *string = value;
+
+ XC_LOG(("_paste_utf8() - called\n"));
+
+ if (!*type || !*length)
+ {
+ XtGetSelectionValue(w, XA_PRIMARY, XA_STRING, _paste_string,
+ event, ((XButtonEvent *)event)->time);
+ return;
+ }
+
+ len = *length;
+
+ if (!string)
+ return;
+
+ while (string[i] && (i < len))
+ {
+ int retval = _from_utf8(&key, string + i, len - i);
+
+ if (retval < 1)
+ return;
+
+ if (key == 10) /* new line - convert to ^M */
+ key = 13;
+
+ _send_key_to_curses(key, NULL, FALSE);
+
+ i += retval;
+ }
+
+ XtFree(value);
+}
+
+static void XCursesPasteSelection(Widget w, XButtonEvent *button_event)
+{
+ XC_LOG(("XCursesPasteSelection() - called\n"));
+
+ XtGetSelectionValue(w, XA_PRIMARY, XA_UTF8_STRING(XtDisplay(w)),
+ _paste_utf8, (XtPointer)button_event,
+ button_event->time);
+}
+
+static Boolean _convert_proc(Widget w, Atom *selection, Atom *target,
+ Atom *type_return, XtPointer *value_return,
+ unsigned long *length_return, int *format_return)
+{
+ XC_LOG(("_convert_proc() - called\n"));
+
+ if (*target == XA_TARGETS(XtDisplay(topLevel)))
+ {
+ XSelectionRequestEvent *req = XtGetSelectionRequest(w,
+ *selection, (XtRequestId)NULL);
+
+ Atom *targetP;
+ XPointer std_targets;
+ unsigned long std_length;
+
+ XmuConvertStandardSelection(topLevel, req->time, selection,
+ target, type_return, &std_targets,
+ &std_length, format_return);
+
+ *length_return = std_length + 2;
+ *value_return = XtMalloc(sizeof(Atom) * (*length_return));
+
+ targetP = *(Atom**)value_return;
+ *targetP++ = XA_STRING;
+ *targetP++ = XA_UTF8_STRING(XtDisplay(topLevel));
+
+ memmove((void *)targetP, (const void *)std_targets,
+ sizeof(Atom) * std_length);
+
+ XtFree((char *)std_targets);
+ *type_return = XA_ATOM;
+ *format_return = sizeof(Atom) * 8;
+
+ return True;
+ }
+ else if (*target == XA_UTF8_STRING(XtDisplay(topLevel)) ||
+ *target == XA_STRING)
+ {
+ bool utf8 = !(*target == XA_STRING);
+ char *data = XtMalloc(tmpsel_length * 3 + 1);
+ chtype *tmp = tmpsel;
+ int ret_length = 0;
+
+ if (utf8)
+ {
+ while (*tmp)
+ ret_length += _to_utf8(data + ret_length, *tmp++);
+ }
+ else
+ while (*tmp)
+ data[ret_length++] = *tmp++ & 0xff;
+
+ data[ret_length++] = '\0';
+
+ *value_return = data;
+ *length_return = ret_length;
+ *format_return = 8;
+ *type_return = *target;
+
+ return True;
+ }
+ else
+ return XmuConvertStandardSelection(topLevel, CurrentTime,
+ selection, target, type_return, (XPointer*)value_return,
+ length_return, format_return);
+}
+
+static void _lose_ownership(Widget w, Atom *type)
+{
+ XC_LOG(("_lose_ownership() - called\n"));
+
+ if (tmpsel)
+ free(tmpsel);
+
+ tmpsel = NULL;
+ tmpsel_length = 0;
+ _selection_off();
+}
+
+static void _show_selection(int start_x, int start_y, int end_x, int end_y,
+ bool highlight)
+{
+ int i, num_cols, start_col, row;
+
+ PDC_LOG(("%s:_show_selection() - called StartX: %d StartY: %d "
+ "EndX: %d EndY: %d Highlight: %d\n", XCLOGMSG,
+ start_x, start_y, end_x, end_y, highlight));
+
+ for (i = 0; i < end_y - start_y + 1; i++)
+ {
+ if (start_y == end_y) /* only one line */
+ {
+ start_col = start_x;
+ num_cols = end_x - start_x + 1;
+ row = start_y;
+ }
+ else if (!i) /* first line */
+ {
+ start_col = start_x;
+ num_cols = COLS - start_x;
+ row = start_y;
+ }
+ else if (start_y + i == end_y) /* last line */
+ {
+ start_col = 0;
+ num_cols = end_x + 1;
+ row = end_y;
+ }
+ else /* full line */
+ {
+ start_col = 0;
+ num_cols = COLS;
+ row = start_y + i;
+ }
+
+ XC_get_line_lock(row);
+
+ _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row) +
+ (start_col * sizeof(chtype))), row, start_col,
+ num_cols, highlight);
+
+ XC_release_line_lock(row);
+ }
+}
+
+static void _selection_off(void)
+{
+ XC_LOG(("_selection_off() - called\n"));
+
+ _display_screen();
+
+ selection_start_x = selection_start_y = selection_end_x =
+ selection_end_y = 0;
+
+ mouse_selection = FALSE;
+}
+
+static void _selection_on(int x, int y)
+{
+ XC_LOG(("_selection_on() - called\n"));
+
+ selection_start_x = selection_end_x = x;
+ selection_start_y = selection_end_y = y;
+}
+
+static void _selection_extend(int x, int y)
+{
+ int temp, current_start, current_end, current_start_x,
+ current_end_x, current_start_y, current_end_y, new_start,
+ new_end, new_start_x, new_end_x, new_start_y, new_end_y;
+
+ XC_LOG(("_selection_extend() - called\n"));
+
+ mouse_selection = TRUE;
+
+ /* convert x/y coordinates into start/stop */
+
+ current_start = (selection_start_y * COLS) + selection_start_x;
+ current_end = (selection_end_y * COLS) + selection_end_x;
+
+ if (current_start > current_end)
+ {
+ current_start_x = selection_end_x;
+ current_start_y = selection_end_y;
+ current_end_x = selection_start_x;
+ current_end_y = selection_start_y;
+ temp = current_start;
+ current_start = current_end;
+ current_end = temp;
+ }
+ else
+ {
+ current_end_x = selection_end_x;
+ current_end_y = selection_end_y;
+ current_start_x = selection_start_x;
+ current_start_y = selection_start_y;
+ }
+
+ /* Now we have the current selection as a linear expression.
+ Convert the new position to a linear expression. */
+
+ selection_end_x = x;
+ selection_end_y = y;
+
+ /* convert x/y coordinates into start/stop */
+
+ new_start = (selection_start_y * COLS) + selection_start_x;
+ new_end = (selection_end_y * COLS) + selection_end_x;
+
+ if (new_start > new_end)
+ {
+ new_start_x = selection_end_x;
+ new_start_y = selection_end_y;
+ new_end_x = selection_start_x;
+ new_end_y = selection_start_y;
+ temp = new_start;
+ new_start = new_end;
+ new_end = temp;
+ }
+ else
+ {
+ new_end_x = selection_end_x;
+ new_end_y = selection_end_y;
+ new_start_x = selection_start_x;
+ new_start_y = selection_start_y;
+ }
+
+ if (new_end > current_end)
+ _show_selection(current_end_x, current_end_y, new_end_x,
+ new_end_y, TRUE);
+ else if (new_end < current_end)
+ _show_selection(new_end_x, new_end_y, current_end_x,
+ current_end_y, FALSE);
+ else if (new_start < current_start)
+ _show_selection(new_start_x, new_start_y, current_start_x,
+ current_start_y, TRUE);
+ else if (new_start > current_start)
+ _show_selection(current_start_x, current_start_y,
+ new_start_x, new_start_y, FALSE);
+ else
+ _show_selection(current_start_x, current_start_y,
+ new_start_x, new_start_y, TRUE);
+}
+
+static void _selection_set(void)
+{
+ int i, j, start, end, start_x, end_x, start_y, end_y, num_cols,
+ start_col, row, num_chars, ch, last_nonblank, length, newlen;
+ chtype *ptr = NULL;
+
+ XC_LOG(("_selection_set() - called\n"));
+
+ /* convert x/y coordinates into start/stop */
+
+ start = (selection_start_y * COLS) + selection_start_x;
+ end = (selection_end_y * COLS) + selection_end_x;
+
+ if (start == end)
+ {
+ if (tmpsel)
+ free(tmpsel);
+
+ tmpsel = NULL;
+ tmpsel_length = 0;
+
+ return;
+ }
+
+ if (start > end)
+ {
+ start_x = selection_end_x;
+ start_y = selection_end_y;
+ end_x = selection_start_x;
+ end_y = selection_start_y;
+ length = start - end + 1;
+ }
+ else
+ {
+ end_x = selection_end_x;
+ end_y = selection_end_y;
+ start_x = selection_start_x;
+ start_y = selection_start_y;
+ length = end - start + 1;
+ }
+
+ newlen = length + end_y - start_y + 2;
+
+ if (length > (int)tmpsel_length)
+ {
+ if (!tmpsel_length)
+ tmpsel = malloc(newlen * sizeof(chtype));
+ else
+ tmpsel = realloc(tmpsel, newlen * sizeof(chtype));
+ }
+
+ if (!tmpsel)
+ {
+ tmpsel_length = 0;
+ return;
+ }
+
+ tmpsel_length = length;
+ num_chars = 0;
+
+ for (i = 0; i < end_y - start_y + 1; i++)
+ {
+
+ if (start_y == end_y) /* only one line */
+ {
+ start_col = start_x;
+ num_cols = end_x - start_x + 1;
+ row = start_y;
+ }
+ else if (!i) /* first line */
+ {
+ start_col = start_x;
+ num_cols = COLS - start_x;
+ row = start_y;
+ }
+ else if (start_y + i == end_y) /* last line */
+ {
+ start_col = 0;
+ num_cols = end_x + 1;
+ row = end_y;
+ }
+ else /* full line */
+ {
+ start_col = 0;
+ num_cols = COLS;
+ row = start_y + i;
+ }
+
+ XC_get_line_lock(row);
+
+ ptr = (chtype *)(Xcurscr + XCURSCR_Y_OFF(row) +
+ start_col * sizeof(chtype));
+
+ if (i < end_y - start_y)
+ {
+ last_nonblank = 0;
+
+ for (j = 0; j < num_cols; j++)
+ {
+ ch = (int)(ptr[j] & A_CHARTEXT);
+ if (ch != (int)' ')
+ last_nonblank = j;
+ }
+ }
+ else
+ last_nonblank = num_cols - 1;
+
+ for (j = 0; j <= last_nonblank; j++)
+ tmpsel[num_chars++] = ptr[j];
+
+ XC_release_line_lock(row);
+
+ if (i < end_y - start_y)
+ tmpsel[num_chars++] = '\n';
+ }
+
+ tmpsel[num_chars] = '\0';
+ tmpsel_length = num_chars;
+}
+
+static void _display_cursor(int old_row, int old_x, int new_row, int new_x)
+{
+ int xpos, ypos, i;
+ chtype *ch;
+ short fore = 0, back = 0;
+
+ PDC_LOG(("%s:_display_cursor() - draw char at row: %d col %d\n",
+ XCLOGMSG, old_row, old_x));
+
+ /* if the cursor position is outside the boundary of the screen,
+ ignore the request */
+
+ if (old_row >= XCursesLINES || old_x >= COLS ||
+ new_row >= XCursesLINES || new_x >= COLS)
+ return;
+
+ /* display the character at the current cursor position */
+
+ PDC_LOG(("%s:_display_cursor() - draw char at row: %d col %d\n",
+ XCLOGMSG, old_row, old_x));
+
+ _display_text((const chtype *)(Xcurscr + (XCURSCR_Y_OFF(old_row) +
+ (old_x * sizeof(chtype)))), old_row, old_x, 1, FALSE);
+
+ /* display the cursor at the new cursor position */
+
+ if (!SP->visibility)
+ return; /* cursor not displayed, no more to do */
+
+ _make_xy(new_x, new_row, &xpos, &ypos);
+
+ ch = (chtype *)(Xcurscr + XCURSCR_Y_OFF(new_row) + new_x * sizeof(chtype));
+
+ _set_cursor_color(ch, &fore, &back);
+
+ if (vertical_cursor)
+ {
+ XSetForeground(XCURSESDISPLAY, rect_cursor_gc, colors[back]);
+
+ for (i = 1; i <= SP->visibility; i++)
+ XDrawLine(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc,
+ xpos + i, ypos - xc_app_data.normalFont->ascent,
+ xpos + i, ypos - xc_app_data.normalFont->ascent +
+ font_height - 1);
+ }
+ else
+ {
+ if (SP->visibility == 1)
+ {
+ /* cursor visibility normal */
+
+ XSetForeground(XCURSESDISPLAY, rect_cursor_gc, colors[back]);
+
+ for (i = 0; i < xc_app_data.normalFont->descent + 2; i++)
+ XDrawLine(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc,
+ xpos, ypos - 2 + i, xpos + font_width, ypos - 2 + i);
+ }
+ else
+ {
+ /* cursor visibility high */
+#ifdef PDC_WIDE
+ XChar2b buf[2];
+
+ buf[0].byte1 = (*ch & 0xff00) >> 8;
+ buf[0].byte2 = *ch & 0x00ff;
+
+ buf[1].byte1 = buf[1].byte2 = 0;
+#else
+ char buf[2];
+
+ buf[0] = *ch & 0xff;
+ buf[1] = '\0';
+#endif
+ XSetForeground(XCURSESDISPLAY, block_cursor_gc, colors[fore]);
+ XSetBackground(XCURSESDISPLAY, block_cursor_gc, colors[back]);
+#ifdef PDC_WIDE
+ XDrawImageString16(
+#else
+ XDrawImageString(
+#endif
+ XCURSESDISPLAY, XCURSESWIN, block_cursor_gc,
+ xpos, ypos, buf, 1);
+ }
+ }
+
+ PDC_LOG(("%s:_display_cursor() - draw cursor at row %d col %d\n",
+ XCLOGMSG, new_row, new_x));
+}
+
+static void _redraw_cursor(void)
+{
+ _display_cursor(SP->cursrow, SP->curscol, SP->cursrow, SP->curscol);
+}
+
+static void _handle_enter_leave(Widget w, XtPointer client_data,
+ XEvent *event, Boolean *unused)
+{
+ XC_LOG(("_handle_enter_leave called\n"));
+
+ switch(event->type)
+ {
+ case EnterNotify:
+ XC_LOG(("EnterNotify received\n"));
+
+ window_entered = TRUE;
+ break;
+
+ case LeaveNotify:
+ XC_LOG(("LeaveNotify received\n"));
+
+ window_entered = FALSE;
+
+ /* Display the cursor so it stays on while the window is
+ not current */
+
+ _redraw_cursor();
+ break;
+
+ default:
+ PDC_LOG(("%s:_handle_enter_leave - unknown event %d\n",
+ XCLOGMSG, event->type));
+ }
+}
+
+static void _send_key_to_curses(unsigned long key, MOUSE_STATUS *ms,
+ bool key_code)
+{
+ PDC_LOG(("%s:_send_key_to_curses() - called: sending %d\n",
+ XCLOGMSG, key));
+
+ SP->key_code = key_code;
+
+ if (XC_write_socket(xc_key_sock, &key, sizeof(unsigned long)) < 0)
+ _exit_process(1, SIGKILL, "exiting from _send_key_to_curses");
+
+ if (ms)
+ {
+ MOUSE_LOG(("%s:writing mouse stuff\n", XCLOGMSG));
+
+ if (XC_write_socket(xc_key_sock, ms, sizeof(MOUSE_STATUS)) < 0)
+ _exit_process(1, SIGKILL, "exiting from _send_key_to_curses");
+ }
+}
+
+static void _blink_cursor(XtPointer unused, XtIntervalId *id)
+{
+ XC_LOG(("_blink_cursor() - called:\n"));
+
+ if (window_entered)
+ {
+ if (visible_cursor)
+ {
+ /* Cursor currently ON, turn it off */
+
+ int save_visibility = SP->visibility;
+ SP->visibility = 0;
+ _redraw_cursor();
+ SP->visibility = save_visibility;
+ visible_cursor = FALSE;
+ }
+ else
+ {
+ /* Cursor currently OFF, turn it on */
+
+ _redraw_cursor();
+ visible_cursor = TRUE;
+ }
+ }
+
+ XtAppAddTimeOut(app_context, xc_app_data.cursorBlinkRate,
+ _blink_cursor, NULL);
+}
+
+static void XCursesButton(Widget w, XEvent *event, String *params,
+ Cardinal *nparams)
+{
+ int button_no;
+ static int last_button_no = 0;
+ static Time last_button_press_time = 0;
+ MOUSE_STATUS save_mouse_status;
+ bool send_key = TRUE;
+ static bool remove_release;
+ static bool handle_real_release;
+
+ XC_LOG(("XCursesButton() - called\n"));
+
+ keysym = 0; /* suppress any modifier key return */
+
+ save_mouse_status = Mouse_status;
+ button_no = event->xbutton.button;
+
+ /* It appears that under X11R6 (at least on Linux), that an
+ event_type of ButtonMotion does not include the mouse button in
+ the event. The following code is designed to cater for this
+ situation. */
+
+ if (!button_no)
+ button_no = last_button_no;
+
+ last_button_no = button_no;
+
+ Mouse_status.changes = 0;
+
+ switch(event->type)
+ {
+ case ButtonPress:
+ /* Handle button 4 and 5, which are normally mapped to the wheel
+ mouse scroll up and down */
+
+ if (button_no == 4 || button_no == 5)
+ {
+ /* Send the KEY_MOUSE to curses program */
+
+ memset(&Mouse_status, 0, sizeof(Mouse_status));
+
+ Mouse_status.changes = (button_no == 5) ?
+ PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP;
+
+ MOUSE_X_POS = MOUSE_Y_POS = -1;
+ _send_key_to_curses(KEY_MOUSE, &Mouse_status, TRUE);
+ remove_release = TRUE;
+
+ return;
+ }
+
+ if (button_no == 2 &&
+ (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
+ {
+ XCursesPasteSelection(drawing, (XButtonEvent *)event);
+ remove_release = TRUE;
+
+ return;
+ }
+
+ remove_release = False;
+ handle_real_release = False;
+
+ MOUSE_LOG(("\nButtonPress\n"));
+
+ if ((event->xbutton.time - last_button_press_time) <
+ xc_app_data.doubleClickPeriod)
+ {
+ MOUSE_X_POS = save_mouse_status.x;
+ MOUSE_Y_POS = save_mouse_status.y;
+ BUTTON_STATUS(button_no) = BUTTON_DOUBLE_CLICKED;
+
+ _selection_off();
+ remove_release = True;
+ }
+ else
+ {
+ napms(SP->mouse_wait);
+ event->type = ButtonRelease;
+ XSendEvent(event->xbutton.display, event->xbutton.window,
+ True, 0, event);
+ last_button_press_time = event->xbutton.time;
+
+ return;
+ }
+
+ last_button_press_time = event->xbutton.time;
+ break;
+
+ case MotionNotify:
+ MOUSE_LOG(("\nMotionNotify: y: %d x: %d Width: %d "
+ "Height: %d\n", event->xbutton.y, event->xbutton.x,
+ font_width, font_height));
+
+ MOUSE_X_POS = (event->xbutton.x - xc_app_data.borderWidth) /
+ font_width;
+ MOUSE_Y_POS = (event->xbutton.y - xc_app_data.borderWidth) /
+ font_height;
+
+ if (button_no == 1 &&
+ (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
+ {
+ _selection_extend(MOUSE_X_POS, MOUSE_Y_POS);
+ send_key = FALSE;
+ }
+ else
+ _selection_off();
+
+ /* Throw away mouse movements if they are in the same character
+ position as the last mouse event, or if we are currently in
+ the middle of a double click event. */
+
+ if ((MOUSE_X_POS == save_mouse_status.x &&
+ MOUSE_Y_POS == save_mouse_status.y) ||
+ save_mouse_status.button[button_no - 1] == BUTTON_DOUBLE_CLICKED)
+ {
+ send_key = FALSE;
+ break;
+ }
+
+ Mouse_status.changes |= PDC_MOUSE_MOVED;
+ break;
+
+ case ButtonRelease:
+ if (remove_release)
+ {
+ MOUSE_LOG(("Release at: %ld - removed\n", event->xbutton.time));
+ return;
+ }
+ else
+ {
+ MOUSE_X_POS = (event->xbutton.x - xc_app_data.borderWidth) /
+ font_width;
+ MOUSE_Y_POS = (event->xbutton.y - xc_app_data.borderWidth) /
+ font_height;
+
+ if (!handle_real_release)
+ {
+ if ((event->xbutton.time - last_button_press_time) <
+ SP->mouse_wait &&
+ (event->xbutton.time != last_button_press_time))
+ {
+ /* The "real" release was shorter than usleep() time;
+ therefore generate a click event */
+
+ MOUSE_LOG(("Release at: %ld - click\n",
+ event->xbutton.time));
+
+ BUTTON_STATUS(button_no) = BUTTON_CLICKED;
+
+ if (button_no == 1 && mouse_selection &&
+ (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
+ {
+ send_key = FALSE;
+
+ if (XtOwnSelection(topLevel, XA_PRIMARY,
+ event->xbutton.time, _convert_proc,
+ _lose_ownership, NULL) == False)
+ _selection_off();
+ }
+ else
+ _selection_off();
+
+ /* Ensure the "pseudo" release event is ignored */
+
+ remove_release = True;
+ handle_real_release = False;
+ break;
+ }
+ else
+ {
+ /* Button release longer than usleep() time;
+ therefore generate a press and wait for the real
+ release to occur later. */
+
+ MOUSE_LOG(("Generated Release at: %ld - "
+ "press & release\n", event->xbutton.time));
+
+ BUTTON_STATUS(button_no) = BUTTON_PRESSED;
+
+ if (button_no == 1 &&
+ (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
+ {
+ _selection_off();
+ _selection_on(MOUSE_X_POS, MOUSE_Y_POS);
+ }
+
+ handle_real_release = True;
+ break;
+ }
+ }
+ else
+ {
+ MOUSE_LOG(("Release at: %ld - released\n",
+ event->xbutton.time));
+ }
+ }
+
+ MOUSE_LOG(("\nButtonRelease\n"));
+
+ BUTTON_STATUS(button_no) = BUTTON_RELEASED;
+
+ if (button_no == 1 && mouse_selection &&
+ (!SP->_trap_mbe || (event->xbutton.state & ShiftMask)))
+ {
+ send_key = FALSE;
+
+ if (XtOwnSelection(topLevel, XA_PRIMARY,
+ event->xbutton.time, _convert_proc,
+ _lose_ownership, NULL) == False)
+ _selection_off();
+
+ _selection_set();
+ }
+ else
+ _selection_off();
+
+ break;
+ }
+
+ /* Set up the mouse status fields in preparation for sending */
+
+ Mouse_status.changes |= 1 << (button_no - 1);
+
+ if (Mouse_status.changes & PDC_MOUSE_MOVED &&
+ BUTTON_STATUS(button_no) == BUTTON_PRESSED)
+ BUTTON_STATUS(button_no) = BUTTON_MOVED;
+
+ if (event->xbutton.state & ShiftMask)
+ BUTTON_STATUS(button_no) |= BUTTON_SHIFT;
+ if (event->xbutton.state & ControlMask)
+ BUTTON_STATUS(button_no) |= BUTTON_CONTROL;
+ if (event->xbutton.state & Mod1Mask)
+ BUTTON_STATUS(button_no) |= BUTTON_ALT;
+
+ /* If we are ignoring the event, or the mouse position is outside
+ the bounds of the screen (because of the border), return here */
+
+ MOUSE_LOG(("Button: %d x: %d y: %d Button status: %x "
+ "Mouse status: %x\n", button_no, MOUSE_X_POS, MOUSE_Y_POS,
+ BUTTON_STATUS(button_no), Mouse_status.changes));
+
+ MOUSE_LOG(("Send: %d Button1: %x Button2: %x Button3: %x %d %d\n",
+ send_key, BUTTON_STATUS(1), BUTTON_STATUS(2),
+ BUTTON_STATUS(3), XCursesLINES, XCursesCOLS));
+
+ if (!send_key || MOUSE_X_POS < 0 || MOUSE_X_POS >= XCursesCOLS ||
+ MOUSE_Y_POS < 0 || MOUSE_Y_POS >= XCursesLINES)
+ return;
+
+ /* Send the KEY_MOUSE to curses program */
+
+ _send_key_to_curses(KEY_MOUSE, &Mouse_status, TRUE);
+}
+
+static void _scroll_up_down(Widget w, XtPointer client_data,
+ XtPointer call_data)
+{
+ int pixels = (long) call_data;
+ int total_y = SP->sb_total_y * font_height;
+ int viewport_y = SP->sb_viewport_y * font_height;
+ int cur_y = SP->sb_cur_y * font_height;
+
+ /* When pixels is negative, right button pressed, move data down,
+ thumb moves up. Otherwise, left button pressed, pixels positive,
+ move data up, thumb down. */
+
+ cur_y += pixels;
+
+ /* limit panning to size of overall */
+
+ if (cur_y < 0)
+ cur_y = 0;
+ else
+ if (cur_y > (total_y - viewport_y))
+ cur_y = total_y - viewport_y;
+
+ SP->sb_cur_y = cur_y / font_height;
+
+ XawScrollbarSetThumb(w, (double)((double)cur_y / (double)total_y),
+ (double)((double)viewport_y / (double)total_y));
+
+ /* Send a key: if pixels negative, send KEY_SCROLL_DOWN */
+
+ _send_key_to_curses(KEY_SF, NULL, TRUE);
+}
+
+static void _scroll_left_right(Widget w, XtPointer client_data,
+ XtPointer call_data)
+{
+ int pixels = (long) call_data;
+ int total_x = SP->sb_total_x * font_width;
+ int viewport_x = SP->sb_viewport_x * font_width;
+ int cur_x = SP->sb_cur_x * font_width;
+
+ cur_x += pixels;
+
+ /* limit panning to size of overall */
+
+ if (cur_x < 0)
+ cur_x = 0;
+ else
+ if (cur_x > (total_x - viewport_x))
+ cur_x = total_x - viewport_x;
+
+ SP->sb_cur_x = cur_x / font_width;
+
+ XawScrollbarSetThumb(w, (double)((double)cur_x / (double)total_x),
+ (double)((double)viewport_x / (double)total_x));
+
+ _send_key_to_curses(KEY_SR, NULL, TRUE);
+}
+
+static void _thumb_up_down(Widget w, XtPointer client_data,
+ XtPointer call_data)
+{
+ double percent = *(double *) call_data;
+ double total_y = (double)SP->sb_total_y;
+ double viewport_y = (double)SP->sb_viewport_y;
+ int cur_y = SP->sb_cur_y;
+
+ /* If the size of the viewport is > overall area simply return,
+ as no scrolling is permitted. */
+
+ if (SP->sb_viewport_y >= SP->sb_total_y)
+ return;
+
+ if ((SP->sb_cur_y = (int)((double)total_y * percent)) >=
+ (total_y - viewport_y))
+ SP->sb_cur_y = total_y - viewport_y;
+
+ XawScrollbarSetThumb(w, (double)(cur_y / total_y),
+ (double)(viewport_y / total_y));
+
+ _send_key_to_curses(KEY_SF, NULL, TRUE);
+}
+
+static void _thumb_left_right(Widget w, XtPointer client_data,
+ XtPointer call_data)
+{
+ double percent = *(double *) call_data;
+ double total_x = (double)SP->sb_total_x;
+ double viewport_x = (double)SP->sb_viewport_x;
+ int cur_x = SP->sb_cur_x;
+
+ if (SP->sb_viewport_x >= SP->sb_total_x)
+ return;
+
+ if ((SP->sb_cur_x = (int)((float)total_x * percent)) >=
+ (total_x - viewport_x))
+ SP->sb_cur_x = total_x - viewport_x;
+
+ XawScrollbarSetThumb(w, (double)(cur_x / total_x),
+ (double)(viewport_x / total_x));
+
+ _send_key_to_curses(KEY_SR, NULL, TRUE);
+}
+
+static void _exit_process(int rc, int sig, char *msg)
+{
+ if (rc || sig)
+ fprintf(stderr, "%s:_exit_process() - called: rc:%d sig:%d <%s>\n",
+ XCLOGMSG, rc, sig, msg);
+
+ shmdt((char *)SP);
+ shmdt((char *)Xcurscr);
+ shmctl(shmidSP, IPC_RMID, 0);
+ shmctl(shmid_Xcurscr, IPC_RMID, 0);
+
+ if (bitmap_file)
+ {
+ XFreePixmap(XCURSESDISPLAY, icon_bitmap);
+ free(bitmap_file);
+ }
+
+#ifdef HAVE_XPM_H
+ if (pixmap_file)
+ {
+ XFreePixmap(XCURSESDISPLAY, icon_pixmap);
+ XFreePixmap(XCURSESDISPLAY, icon_pixmap_mask);
+ free(pixmap_file);
+ }
+#endif
+ XFreeGC(XCURSESDISPLAY, normal_gc);
+ XFreeGC(XCURSESDISPLAY, italic_gc);
+ XFreeGC(XCURSESDISPLAY, block_cursor_gc);
+ XFreeGC(XCURSESDISPLAY, rect_cursor_gc);
+ XFreeGC(XCURSESDISPLAY, border_gc);
+#ifdef PDC_XIM
+ XDestroyIC(Xic);
+#endif
+
+ shutdown(xc_display_sock, 2);
+ close(xc_display_sock);
+
+ shutdown(xc_exit_sock, 2);
+ close(xc_exit_sock);
+
+ shutdown(xc_key_sock, 2);
+ close(xc_key_sock);
+
+ if (sig)
+ kill(xc_otherpid, sig); /* to kill parent process */
+
+ _exit(rc);
+}
+
+static void _resize(void)
+{
+ short save_atrtab[PDC_COLOR_PAIRS * 2];
+
+ after_first_curses_request = FALSE;
+
+ SP->lines = XCursesLINES = ((resize_window_height -
+ (2 * xc_app_data.borderWidth)) / font_height);
+
+ LINES = XCursesLINES - SP->linesrippedoff - SP->slklines;
+
+ SP->cols = COLS = XCursesCOLS = ((resize_window_width -
+ (2 * xc_app_data.borderWidth)) / font_width);
+
+ window_width = resize_window_width;
+ window_height = resize_window_height;
+ visible_cursor = TRUE;
+
+ _draw_border();
+
+ /* Detach and drop the current shared memory segment and create and
+ attach to a new segment */
+
+ memcpy(save_atrtab, xc_atrtab, sizeof(save_atrtab));
+
+ SP->XcurscrSize = XCURSCR_SIZE;
+ shmdt((char *)Xcurscr);
+ shmctl(shmid_Xcurscr, IPC_RMID, 0);
+
+ if ((shmid_Xcurscr = shmget(shmkey_Xcurscr,
+ SP->XcurscrSize + XCURSESSHMMIN, 0700 | IPC_CREAT)) < 0)
+ {
+ perror("Cannot allocate shared memory for curscr");
+
+ _exit_process(4, SIGKILL, "exiting from _process_curses_requests");
+ }
+
+ Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0);
+ memset(Xcurscr, 0, SP->XcurscrSize);
+ xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
+ memcpy(xc_atrtab, save_atrtab, sizeof(save_atrtab));
+}
+
+/* For PDC_set_title() */
+
+static void _set_title(void)
+{
+ char title[1024]; /* big enough for window title */
+ int pos;
+
+ if ((XC_read_socket(xc_display_sock, &pos, sizeof(int)) < 0) ||
+ (XC_read_socket(xc_display_sock, title, pos) < 0))
+ {
+ _exit_process(5, SIGKILL, "exiting from _set_title");
+ }
+
+ XtVaSetValues(topLevel, XtNtitle, title, NULL);
+}
+
+/* For color_content() */
+
+static void _get_color(void)
+{
+ XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
+ int index = tmp->pixel;
+ Colormap cmap = DefaultColormap(XCURSESDISPLAY,
+ DefaultScreen(XCURSESDISPLAY));
+
+ if (index < 0 || index >= MAX_COLORS)
+ _exit_process(4, SIGKILL, "exiting from _get_color");
+
+ tmp->pixel = colors[index];
+ XQueryColor(XCURSESDISPLAY, cmap, tmp);
+}
+
+/* For init_color() */
+
+static void _set_color(void)
+{
+ XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF);
+ int index = tmp->pixel;
+ Colormap cmap = DefaultColormap(XCURSESDISPLAY,
+ DefaultScreen(XCURSESDISPLAY));
+
+ if (index < 0 || index >= MAX_COLORS)
+ _exit_process(4, SIGKILL, "exiting from _set_color");
+
+ if (XAllocColor(XCURSESDISPLAY, cmap, tmp))
+ {
+ XFreeColors(XCURSESDISPLAY, cmap, colors + index, 1, 0);
+ colors[index] = tmp->pixel;
+
+ _display_screen();
+ }
+}
+
+/* For PDC_getclipboard() */
+
+static void _get_selection(Widget w, XtPointer data, Atom *selection,
+ Atom *type, XtPointer value,
+ unsigned long *length, int *format)
+{
+ unsigned char *src = value;
+ int pos, len = *length;
+
+ XC_LOG(("_get_selection() - called\n"));
+
+ if (!value && !len)
+ {
+ if (XC_write_display_socket_int(PDC_CLIP_EMPTY) < 0)
+ _exit_process(4, SIGKILL, "exiting from _get_selection");
+ }
+ else
+ {
+ /* Here all is OK, send PDC_CLIP_SUCCESS, then length, then
+ contents */
+
+ if (XC_write_display_socket_int(PDC_CLIP_SUCCESS) < 0)
+ _exit_process(4, SIGKILL, "exiting from _get_selection");
+
+ if (XC_write_display_socket_int(len) < 0)
+ _exit_process(4, SIGKILL, "exiting from _get_selection");
+
+ for (pos = 0; pos < len; pos++)
+ {
+#ifdef PDC_WIDE
+ wchar_t c;
+#else
+ unsigned char c;
+#endif
+ c = *src++;
+
+ if (XC_write_socket(xc_display_sock, &c, sizeof(c)) < 0)
+ _exit_process(4, SIGKILL, "exiting from _get_selection");
+ }
+ }
+}
+
+#ifdef PDC_WIDE
+static void _get_selection_utf8(Widget w, XtPointer data, Atom *selection,
+ Atom *type, XtPointer value,
+ unsigned long *length, int *format)
+{
+ int len = *length;
+
+ XC_LOG(("_get_selection_utf8() - called\n"));
+
+ if (!*type || !*length)
+ {
+ XtGetSelectionValue(w, XA_PRIMARY, XA_STRING, _get_selection,
+ (XtPointer)NULL, 0);
+ return;
+ }
+
+ if (!value && !len)
+ {
+ if (XC_write_display_socket_int(PDC_CLIP_EMPTY) >= 0)
+ return;
+ }
+ else
+ {
+ wchar_t *wcontents = malloc((len + 1) * sizeof(wchar_t));
+ char *src = value;
+ int i = 0;
+
+ while (*src && i < (*length))
+ {
+ int retval = _from_utf8(wcontents + i, src, len);
+
+ src += retval;
+ len -= retval;
+ i++;
+ }
+
+ wcontents[i] = 0;
+ len = i;
+
+ /* Here all is OK, send PDC_CLIP_SUCCESS, then length, then
+ contents */
+
+ if (XC_write_display_socket_int(PDC_CLIP_SUCCESS) >= 0)
+ if (XC_write_display_socket_int(len) >= 0)
+ if (XC_write_socket(xc_display_sock,
+ wcontents, len * sizeof(wchar_t)) >= 0)
+ {
+ free(wcontents);
+ return;
+ }
+ }
+
+ _exit_process(4, SIGKILL, "exiting from _get_selection_utf8");
+}
+#endif
+
+/* For PDC_setclipboard() */
+
+static void _set_selection(void)
+{
+ long length, pos;
+ int status;
+
+ if (XC_read_socket(xc_display_sock, &length, sizeof(long)) < 0)
+ _exit_process(5, SIGKILL, "exiting from _set_selection");
+
+ if (length > (long)tmpsel_length)
+ {
+ if (!tmpsel_length)
+ tmpsel = malloc((length + 1) * sizeof(chtype));
+ else
+ tmpsel = realloc(tmpsel, (length + 1) * sizeof(chtype));
+ }
+
+ if (!tmpsel)
+ if (XC_write_display_socket_int(PDC_CLIP_MEMORY_ERROR) < 0)
+ _exit_process(4, SIGKILL, "exiting from _set_selection");
+
+ for (pos = 0; pos < length; pos++)
+ {
+#ifdef PDC_WIDE
+ wchar_t c;
+#else
+ unsigned char c;
+#endif
+ if (XC_read_socket(xc_display_sock, &c, sizeof(c)) < 0)
+ _exit_process(5, SIGKILL, "exiting from _set_selection");
+
+ tmpsel[pos] = c;
+ }
+
+ tmpsel_length = length;
+ tmpsel[length] = 0;
+
+ if (XtOwnSelection(topLevel, XA_PRIMARY, CurrentTime,
+ _convert_proc, _lose_ownership, NULL) == False)
+ {
+ status = PDC_CLIP_ACCESS_ERROR;
+ free(tmpsel);
+ tmpsel = NULL;
+ tmpsel_length = 0;
+ }
+ else
+ status = PDC_CLIP_SUCCESS;
+
+ _selection_off();
+
+ if (XC_write_display_socket_int(status) < 0)
+ _exit_process(4, SIGKILL, "exiting from _set_selection");
+}
+
+/* The curses process is waiting; tell it to continue */
+
+static void _resume_curses(void)
+{
+ if (XC_write_display_socket_int(CURSES_CONTINUE) < 0)
+ _exit_process(4, SIGKILL, "exiting from _process_curses_requests");
+}
+
+/* The curses process sent us a message */
+
+static void _process_curses_requests(XtPointer client_data, int *fid,
+ XtInputId *id)
+{
+ struct timeval socket_timeout = {0};
+ int s;
+ int old_row, new_row;
+ int old_x, new_x;
+ int pos, num_cols;
+
+ char buf[12]; /* big enough for 2 integers */
+
+ XC_LOG(("_process_curses_requests() - called\n"));
+
+ if (!received_map_notify)
+ return;
+
+ FD_ZERO(&xc_readfds);
+ FD_SET(xc_display_sock, &xc_readfds);
+
+ if ((s = select(FD_SETSIZE, (FD_SET_CAST)&xc_readfds, NULL,
+ NULL, &socket_timeout)) < 0)
+ _exit_process(2, SIGKILL, "exiting from _process_curses_requests"
+ " - select failed");
+
+ if (!s) /* no requests pending - should never happen! */
+ return;
+
+ if (FD_ISSET(xc_display_sock, &xc_readfds))
+ {
+ /* read first integer to determine total message has been
+ received */
+
+ XC_LOG(("_process_curses_requests() - before XC_read_socket()\n"));
+
+ if (XC_read_socket(xc_display_sock, &num_cols, sizeof(int)) < 0)
+ _exit_process(3, SIGKILL, "exiting from _process_curses_requests"
+ " - first read");
+
+ XC_LOG(("_process_curses_requests() - after XC_read_socket()\n"));
+
+ after_first_curses_request = TRUE;
+
+ switch(num_cols)
+ {
+ case CURSES_EXIT: /* request from curses to stop */
+ XC_LOG(("CURSES_EXIT received from child\n"));
+ _exit_process(0, 0, "XCursesProcess requested to exit by child");
+ break;
+
+ case CURSES_BELL:
+ XC_LOG(("CURSES_BELL received from child\n"));
+ XBell(XCURSESDISPLAY, 50);
+ break;
+
+ /* request from curses to confirm completion of display */
+
+ case CURSES_REFRESH:
+ XC_LOG(("CURSES_REFRESH received from child\n"));
+ _refresh_screen();
+ _resume_curses();
+ break;
+
+ case CURSES_REFRESH_SCROLLBAR:
+ _refresh_scrollbar();
+ break;
+
+ case CURSES_CURSOR:
+ XC_LOG(("CURSES_CURSOR received from child\n"));
+
+ if (XC_read_socket(xc_display_sock, buf, sizeof(int) * 2) < 0)
+ _exit_process(5, SIGKILL, "exiting from CURSES_CURSOR "
+ "_process_curses_requests");
+
+ memcpy(&pos, buf, sizeof(int));
+ old_row = pos & 0xFF;
+ old_x = pos >> 8;
+
+ memcpy(&pos, buf + sizeof(int), sizeof(int));
+ new_row = pos & 0xFF;
+ new_x = pos >> 8;
+
+ visible_cursor = TRUE;
+ _display_cursor(old_row, old_x, new_row, new_x);
+ break;
+
+ case CURSES_DISPLAY_CURSOR:
+ XC_LOG(("CURSES_DISPLAY_CURSOR received from child. Vis now: "));
+ XC_LOG((visible_cursor ? "1\n" : "0\n"));
+
+ /* If the window is not active, ignore this command. The
+ cursor will stay solid. */
+
+ if (window_entered)
+ {
+ if (visible_cursor)
+ {
+ /* Cursor currently ON, turn it off */
+
+ int save_visibility = SP->visibility;
+ SP->visibility = 0;
+ _redraw_cursor();
+ SP->visibility = save_visibility;
+ visible_cursor = FALSE;
+ }
+ else
+ {
+ /* Cursor currently OFF, turn it on */
+
+ _redraw_cursor();
+ visible_cursor = TRUE;
+ }
+ }
+
+ break;
+
+ case CURSES_TITLE:
+ XC_LOG(("CURSES_TITLE received from child\n"));
+ _set_title();
+ break;
+
+ case CURSES_RESIZE:
+ XC_LOG(("CURSES_RESIZE received from child\n"));
+ _resize();
+ _resume_curses();
+ break;
+
+ case CURSES_GET_SELECTION:
+ XC_LOG(("CURSES_GET_SELECTION received from child\n"));
+
+ _resume_curses();
+
+ XtGetSelectionValue(topLevel, XA_PRIMARY,
+#ifdef PDC_WIDE
+ XA_UTF8_STRING(XtDisplay(topLevel)),
+ _get_selection_utf8,
+#else
+ XA_STRING, _get_selection,
+#endif
+ (XtPointer)NULL, 0);
+
+ break;
+
+ case CURSES_SET_SELECTION:
+ XC_LOG(("CURSES_SET_SELECTION received from child\n"));
+ _set_selection();
+ break;
+
+ case CURSES_CLEAR_SELECTION:
+ XC_LOG(("CURSES_CLEAR_SELECTION received from child\n"));
+ _resume_curses();
+ _selection_off();
+ break;
+
+ case CURSES_GET_COLOR:
+ XC_LOG(("CURSES_GET_COLOR recieved from child\n"));
+ _get_color();
+ _resume_curses();
+ break;
+
+ case CURSES_SET_COLOR:
+ XC_LOG(("CURSES_SET_COLOR recieved from child\n"));
+ _set_color();
+ _resume_curses();
+ break;
+
+ default:
+ PDC_LOG(("%s:Unknown request %d\n", XCLOGMSG, num_cols));
+ }
+ }
+}
+
+static void _handle_structure_notify(Widget w, XtPointer client_data,
+ XEvent *event, Boolean *unused)
+{
+ XC_LOG(("_handle_structure_notify() - called\n"));
+
+ switch(event->type)
+ {
+ case ConfigureNotify:
+ XC_LOG(("ConfigureNotify received\n"));
+
+ /* Window has been resized, change width and height to send to
+ place_text and place_graphics in next Expose. Also will need
+ to kill (SIGWINCH) curses process if screen size changes. */
+
+ resize_window_width = event->xconfigure.width;
+ resize_window_height = event->xconfigure.height;
+
+ after_first_curses_request = FALSE;
+
+#ifdef SIGWINCH
+ SP->resized = 1;
+
+ kill(xc_otherpid, SIGWINCH);
+#endif
+ _send_key_to_curses(KEY_RESIZE, NULL, TRUE);
+ break;
+
+ case MapNotify:
+ XC_LOG(("MapNotify received\n"));
+
+ received_map_notify = 1;
+
+ _draw_border();
+ break;
+
+ default:
+ PDC_LOG(("%s:_handle_structure_notify - unknown event %d\n",
+ XCLOGMSG, event->type));
+ }
+}
+
+static RETSIGTYPE _handle_signals(int signo)
+{
+ int flag = CURSES_EXIT;
+
+ PDC_LOG(("%s:_handle_signals() - called: %d\n", XCLOGMSG, signo));
+
+ /* Patch by: Georg Fuchs */
+
+ XCursesSetSignal(signo, _handle_signals);
+
+#ifdef SIGTSTP
+ if (signo == SIGTSTP)
+ {
+ pause();
+ return;
+ }
+#endif
+#ifdef SIGCONT
+ if (signo == SIGCONT)
+ return;
+#endif
+#ifdef SIGCLD
+ if (signo == SIGCLD)
+ return;
+#endif
+#ifdef SIGTTIN
+ if (signo == SIGTTIN)
+ return;
+#endif
+#ifdef SIGWINCH
+ if (signo == SIGWINCH)
+ return;
+#endif
+
+ /* End of patch by: Georg Fuchs */
+
+ XCursesSetSignal(signo, SIG_IGN);
+
+ /* Send a CURSES_EXIT to myself */
+
+ if (XC_write_socket(xc_exit_sock, &flag, sizeof(int)) < 0)
+ _exit_process(7, signo, "exiting from _handle_signals");
+}
+
+#ifdef PDC_XIM
+static void _dummy_handler(Widget w, XtPointer client_data,
+ XEvent *event, Boolean *unused)
+{
+}
+#endif
+
+int XCursesSetupX(int argc, char *argv[])
+{
+ char *myargv[] = {"PDCurses", NULL};
+ extern bool sb_started;
+
+ int italic_font_valid;
+ XColor pointerforecolor, pointerbackcolor;
+ XrmValue rmfrom, rmto;
+ int i = 0;
+ int minwidth, minheight;
+
+ XC_LOG(("XCursesSetupX called\n"));
+
+ if (!argv)
+ {
+ argv = myargv;
+ argc = 1;
+ }
+
+ program_name = argv[0];
+
+ /* Keep open the 'write' end of the socket so the XCurses process
+ can send a CURSES_EXIT to itself from within the signal handler */
+
+ xc_exit_sock = xc_display_sockets[0];
+ xc_display_sock = xc_display_sockets[1];
+
+ close(xc_key_sockets[0]);
+ xc_key_sock = xc_key_sockets[1];
+
+ /* Trap all signals when XCurses is the child process, but only if
+ they haven't already been ignored by the application. */
+
+ for (i = 0; i < PDC_MAX_SIGNALS; i++)
+ if (XCursesSetSignal(i, _handle_signals) == SIG_IGN)
+ XCursesSetSignal(i, SIG_IGN);
+
+ /* Start defining X Toolkit things */
+
+#if XtSpecificationRelease > 4
+ XtSetLanguageProc(NULL, (XtLanguageProc)NULL, NULL);
+#endif
+
+ /* Exit if no DISPLAY variable set */
+
+ if (!getenv("DISPLAY"))
+ {
+ fprintf(stderr, "Error: no DISPLAY variable set\n");
+ kill(xc_otherpid, SIGKILL);
+ return ERR;
+ }
+
+ /* Initialise the top level widget */
+
+ topLevel = XtVaAppInitialize(&app_context, class_name, options,
+ XtNumber(options), &argc, argv, NULL, NULL);
+
+ XtVaGetApplicationResources(topLevel, &xc_app_data, app_resources,
+ XtNumber(app_resources), NULL);
+
+ /* Check application resource values here */
+
+ font_width = xc_app_data.normalFont->max_bounds.rbearing -
+ xc_app_data.normalFont->min_bounds.lbearing;
+
+ font_height = xc_app_data.normalFont->max_bounds.ascent +
+ xc_app_data.normalFont->max_bounds.descent;
+
+ font_ascent = xc_app_data.normalFont->max_bounds.ascent;
+ font_descent = xc_app_data.normalFont->max_bounds.descent;
+
+ /* Check that the italic font and normal fonts are the same size */
+ /* This appears backwards */
+
+ italic_font_valid = font_width !=
+ xc_app_data.italicFont->max_bounds.rbearing -
+ xc_app_data.italicFont->min_bounds.lbearing ||
+ font_height !=
+ xc_app_data.italicFont->max_bounds.ascent +
+ xc_app_data.italicFont->max_bounds.descent;
+
+ /* Calculate size of display window */
+
+ XCursesCOLS = xc_app_data.cols;
+ XCursesLINES = xc_app_data.lines;
+
+ window_width = font_width * XCursesCOLS +
+ 2 * xc_app_data.borderWidth;
+
+ window_height = font_height * XCursesLINES +
+ 2 * xc_app_data.borderWidth;
+
+ minwidth = font_width * 2 + xc_app_data.borderWidth * 2;
+ minheight = font_height * 2 + xc_app_data.borderWidth * 2;
+
+ /* Set up the icon for the application; the default is an internal
+ one for PDCurses. Then set various application level resources. */
+
+ _get_icon();
+
+#ifdef HAVE_XPM_H
+ if (xc_app_data.pixmap && xc_app_data.pixmap[0])
+ XtVaSetValues(topLevel, XtNminWidth, minwidth, XtNminHeight,
+ minheight, XtNbaseWidth, xc_app_data.borderWidth * 2,
+ XtNbaseHeight, xc_app_data.borderWidth * 2,
+ XtNiconPixmap, icon_pixmap,
+ XtNiconMask, icon_pixmap_mask, NULL);
+ else
+#endif
+ XtVaSetValues(topLevel, XtNminWidth, minwidth, XtNminHeight,
+ minheight, XtNbaseWidth, xc_app_data.borderWidth * 2,
+ XtNbaseHeight, xc_app_data.borderWidth * 2,
+ XtNiconPixmap, icon_bitmap, NULL);
+
+ /* Create a BOX widget in which to draw */
+
+ if (xc_app_data.scrollbarWidth && sb_started)
+ {
+ scrollBox = XtVaCreateManagedWidget(program_name,
+ scrollBoxWidgetClass, topLevel, XtNwidth,
+ window_width + xc_app_data.scrollbarWidth,
+ XtNheight, window_height + xc_app_data.scrollbarWidth,
+ XtNwidthInc, font_width, XtNheightInc, font_height, NULL);
+
+ drawing = XtVaCreateManagedWidget(program_name,
+ boxWidgetClass, scrollBox, XtNwidth,
+ window_width, XtNheight, window_height, XtNwidthInc,
+ font_width, XtNheightInc, font_height, NULL);
+
+ scrollVert = XtVaCreateManagedWidget("scrollVert",
+ scrollbarWidgetClass, scrollBox, XtNorientation,
+ XtorientVertical, XtNheight, window_height, XtNwidth,
+ xc_app_data.scrollbarWidth, NULL);
+
+ XtAddCallback(scrollVert, XtNscrollProc, _scroll_up_down, drawing);
+ XtAddCallback(scrollVert, XtNjumpProc, _thumb_up_down, drawing);
+
+ scrollHoriz = XtVaCreateManagedWidget("scrollHoriz",
+ scrollbarWidgetClass, scrollBox, XtNorientation,
+ XtorientHorizontal, XtNwidth, window_width, XtNheight,
+ xc_app_data.scrollbarWidth, NULL);
+
+ XtAddCallback(scrollHoriz, XtNscrollProc, _scroll_left_right, drawing);
+ XtAddCallback(scrollHoriz, XtNjumpProc, _thumb_left_right, drawing);
+ }
+ else
+ {
+ drawing = XtVaCreateManagedWidget(program_name, boxWidgetClass,
+ topLevel, XtNwidth, window_width, XtNheight, window_height,
+ XtNwidthInc, font_width, XtNheightInc, font_height, NULL);
+
+ XtVaSetValues(topLevel, XtNwidthInc, font_width, XtNheightInc,
+ font_height, NULL);
+ }
+
+ /* Process any default translations */
+
+ XtAugmentTranslations(drawing,
+ XtParseTranslationTable(default_translations));
+ XtAppAddActions(app_context, action_table, XtNumber(action_table));
+
+ /* Process the supplied colors */
+
+ _initialize_colors();
+
+ /* Determine text cursor alignment from resources */
+
+ if (!strcmp(xc_app_data.textCursor, "vertical"))
+ vertical_cursor = TRUE;
+
+ /* Now have LINES and COLS. Set these in the shared SP so the curses
+ program can find them. */
+
+ LINES = XCursesLINES;
+ COLS = XCursesCOLS;
+
+ if ((shmidSP = shmget(shmkeySP, sizeof(SCREEN) + XCURSESSHMMIN,
+ 0700 | IPC_CREAT)) < 0)
+ {
+ perror("Cannot allocate shared memory for SCREEN");
+ kill(xc_otherpid, SIGKILL);
+ return ERR;
+ }
+
+ SP = (SCREEN*)shmat(shmidSP, 0, 0);
+ memset(SP, 0, sizeof(SCREEN));
+ SP->XcurscrSize = XCURSCR_SIZE;
+ SP->lines = XCursesLINES;
+ SP->cols = XCursesCOLS;
+
+ SP->mouse_wait = xc_app_data.clickPeriod;
+ SP->audible = TRUE;
+
+ PDC_LOG(("%s:SHM size for curscr %d\n", XCLOGMSG, SP->XcurscrSize));
+
+ if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, SP->XcurscrSize +
+ XCURSESSHMMIN, 0700 | IPC_CREAT)) < 0)
+ {
+ perror("Cannot allocate shared memory for curscr");
+ kill(xc_otherpid, SIGKILL);
+ shmdt((char *)SP);
+ shmctl(shmidSP, IPC_RMID, 0);
+ return ERR;
+ }
+
+ Xcurscr = (unsigned char *)shmat(shmid_Xcurscr, 0, 0);
+ memset(Xcurscr, 0, SP->XcurscrSize);
+ xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF);
+
+ PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d LINES %d COLS %d\n",
+ XCLOGMSG, shmid_Xcurscr, shmkey_Xcurscr, LINES, COLS));
+
+ /* Add Event handlers to the drawing widget */
+
+ XtAddEventHandler(drawing, ExposureMask, False, _handle_expose, NULL);
+ XtAddEventHandler(drawing, StructureNotifyMask, False,
+ _handle_structure_notify, NULL);
+ XtAddEventHandler(drawing, EnterWindowMask | LeaveWindowMask, False,
+ _handle_enter_leave, NULL);
+ XtAddEventHandler(topLevel, 0, True, _handle_nonmaskable, NULL);
+
+ /* Add input handler from xc_display_sock (requests from curses
+ program) */
+
+ XtAppAddInput(app_context, xc_display_sock, (XtPointer)XtInputReadMask,
+ _process_curses_requests, NULL);
+
+ /* If there is a cursorBlink resource, start the Timeout event */
+
+ if (xc_app_data.cursorBlinkRate)
+ XtAppAddTimeOut(app_context, xc_app_data.cursorBlinkRate,
+ _blink_cursor, NULL);
+
+ /* Leave telling the curses process that it can start to here so
+ that when the curses process makes a request, the Xcurses
+ process can service the request. */
+
+ XC_write_display_socket_int(CURSES_CHILD);
+
+ XtRealizeWidget(topLevel);
+
+ /* Handle trapping of the WM_DELETE_WINDOW property */
+
+ wm_atom[0] = XInternAtom(XtDisplay(topLevel), "WM_DELETE_WINDOW", False);
+
+ XSetWMProtocols(XtDisplay(topLevel), XtWindow(topLevel), wm_atom, 1);
+
+ /* Create the Graphics Context for drawing. This MUST be done AFTER
+ the associated widget has been realized. */
+
+ XC_LOG(("before _get_gc\n"));
+
+ _get_gc(&normal_gc, xc_app_data.normalFont, COLOR_WHITE, COLOR_BLACK);
+
+ _get_gc(&italic_gc, italic_font_valid ? xc_app_data.italicFont :
+ xc_app_data.normalFont, COLOR_WHITE, COLOR_BLACK);
+
+ _get_gc(&block_cursor_gc, xc_app_data.normalFont,
+ COLOR_BLACK, COLOR_CURSOR);
+
+ _get_gc(&rect_cursor_gc, xc_app_data.normalFont,
+ COLOR_CURSOR, COLOR_BLACK);
+
+ _get_gc(&border_gc, xc_app_data.normalFont, COLOR_BORDER, COLOR_BLACK);
+
+ XSetLineAttributes(XCURSESDISPLAY, rect_cursor_gc, 2,
+ LineSolid, CapButt, JoinMiter);
+
+ XSetLineAttributes(XCURSESDISPLAY, border_gc, xc_app_data.borderWidth,
+ LineSolid, CapButt, JoinMiter);
+
+ /* Set the cursor for the application */
+
+ XDefineCursor(XCURSESDISPLAY, XCURSESWIN, xc_app_data.pointer);
+ rmfrom.size = sizeof(Pixel);
+ rmto.size = sizeof(XColor);
+
+ rmto.addr = (XPointer)&pointerforecolor;
+ rmfrom.addr = (XPointer)&(xc_app_data.pointerForeColor);
+ XtConvertAndStore(drawing, XtRPixel, &rmfrom, XtRColor, &rmto);
+
+ rmfrom.size = sizeof(Pixel);
+ rmto.size = sizeof(XColor);
+
+ rmfrom.addr = (XPointer)&(xc_app_data.pointerBackColor);
+ rmto.addr = (XPointer)&pointerbackcolor;
+ XtConvertAndStore(drawing, XtRPixel, &rmfrom, XtRColor, &rmto);
+
+ XRecolorCursor(XCURSESDISPLAY, xc_app_data.pointer,
+ &pointerforecolor, &pointerbackcolor);
+
+#ifndef PDC_XIM
+
+ /* Convert the supplied compose key to a Keysym */
+
+ compose_key = XStringToKeysym(xc_app_data.composeKey);
+
+ if (compose_key && IsModifierKey(compose_key))
+ {
+ int i, j;
+ KeyCode *kcp;
+ XModifierKeymap *map;
+ KeyCode compose_keycode = XKeysymToKeycode(XCURSESDISPLAY, compose_key);
+
+ map = XGetModifierMapping(XCURSESDISPLAY);
+ kcp = map->modifiermap;
+
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < map->max_keypermod; j++, kcp++)
+ {
+ if (!*kcp)
+ continue;
+
+ if (compose_keycode == *kcp)
+ {
+ compose_mask = state_mask[i];
+ break;
+ }
+ }
+
+ if (compose_mask)
+ break;
+ }
+
+ XFreeModifiermap(map);
+ }
+
+#else
+ Xim = XOpenIM(XCURSESDISPLAY, NULL, NULL, NULL);
+
+ if (Xim)
+ {
+ Xic = XCreateIC(Xim, XNInputStyle,
+ XIMPreeditNothing | XIMStatusNothing,
+ XNClientWindow, XCURSESWIN, NULL);
+ }
+
+ if (Xic)
+ {
+ long im_event_mask;
+
+ XGetICValues(Xic, XNFilterEvents, &im_event_mask, NULL);
+ if (im_event_mask)
+ XtAddEventHandler(drawing, im_event_mask, False,
+ _dummy_handler, NULL);
+
+ XSetICFocus(Xic);
+ }
+ else
+ {
+ perror("ERROR: Cannot create input context");
+ kill(xc_otherpid, SIGKILL);
+ shmdt((char *)SP);
+ shmdt((char *)Xcurscr);
+ shmctl(shmidSP, IPC_RMID, 0);
+ shmctl(shmid_Xcurscr, IPC_RMID, 0);
+ return ERR;
+ }
+
+#endif
+
+ /* Wait for events */
+
+ XtAppMainLoop(app_context);
+ return OK; /* won't get here */
+}
diff --git a/payloads/libpayload/curses/PDCurses/x11/xcurses-config.in b/payloads/libpayload/curses/PDCurses/x11/xcurses-config.in
new file mode 100644
index 0000000..55b4704
--- /dev/null
+++ b/payloads/libpayload/curses/PDCurses/x11/xcurses-config.in
@@ -0,0 +1,76 @@
+#! /bin/sh
+#
+# The idea to this kind of setup info script was stolen from numerous
+# other packages, such as neon, libxml and gnome.
+#
+# $Id: xcurses-config.in,v 1.6 2007/11/07 23:33:07 wmcbrine Exp $
+#
+
+verdot=3.4
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@/xcurses
+
+usage()
+{
+ echo "Usage: xcurses-config [OPTION]"
+ echo ""
+ echo "Available values for OPTION include:"
+ echo ""
+ echo " --help display this help and exit"
+ echo " --cflags pre-processor and compiler flags"
+ echo " [-I$includedir]"
+ echo " --libs library linking information"
+ echo " [-L$prefix/lib -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@"
+ echo " --prefix PDCurses install prefix"
+ echo " [$prefix]"
+ echo " --version output version information"
+ echo " [$verdot]"
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1
+fi
+
+while test $# -gt 0; do
+ case "$1" in
+ # this deals with options in the style
+ # --option=value and extracts the value part
+ # [not currently used]
+ -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) value= ;;
+ esac
+
+ case "$1" in
+ --prefix)
+ echo $prefix
+ ;;
+
+ --version)
+ echo $verdot
+ exit 0
+ ;;
+
+ --help)
+ usage 0
+ ;;
+
+ --cflags)
+ echo -I$includedir
+ ;;
+
+ --libs)
+ echo -L$prefix/lib -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@
+ ;;
+
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+exit 0
More information about the coreboot-gerrit
mailing list