Index: Makefile
===================================================================
--- Makefile (nonexistent)
+++ Makefile (revision 5)
@@ -0,0 +1,58 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url = $(DOWNLOAD_SERVER)/sources/packages/l/aalib
+
+versions = 1.4rc5
+pkgname = aalib
+suffix = tar.gz
+
+tarballs = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s = $(addsuffix .sha1sum, $(tarballs))
+
+patches = $(CURDIR)/patches/aalib-1.4.0.patch
+patches += $(CURDIR)/patches/aalib-1.4.0-aclocal.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+ @echo -e "\n======= Downloading source tarballs =======\n" ; \
+ for tarball in $(tarballs) ; do \
+ echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+ done ; wait
+
+$(sha1s): $(tarballs)
+ @for sha in $@ ; do \
+ echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+ echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+ touch $$sha ; \
+ echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+ sha1sum --check $$sha ; ret="$$?" ; \
+ if [ "$$ret" == "1" ]; then \
+ echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+ exit 1 ; \
+ fi ; \
+ done
+
+$(patches): $(sha1s)
+ @echo -e "\n======= Create Patches =======\n" ; \
+ ( cd create-1.4.0-patch ; ./create.patch.sh ) ; \
+ ( cd create-1.4.0-aclocal-patch ; ./create.patch.sh ) ; \
+ echo -e "\n"
+
+download_clean:
+ @rm -f $(tarballs) $(sha1s) $(patches)
Index: create-1.4.0-aclocal-patch/aalib-1.4.0-new/aalib.m4
===================================================================
--- create-1.4.0-aclocal-patch/aalib-1.4.0-new/aalib.m4 (nonexistent)
+++ create-1.4.0-aclocal-patch/aalib-1.4.0-new/aalib.m4 (revision 5)
@@ -0,0 +1,169 @@
+# Configure paths for AALIB
+# Jan Hubicka 4/22/2001
+# stolen from Sam Lantinga 9/21/99
+# stolen from Manish Singh
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_AALIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for AALIB, and define AALIB_CFLAGS and AALIB_LIBS
+dnl
+AC_DEFUN([AM_PATH_AALIB],
+[dnl
+dnl Get the cflags and libraries from the aalib-config script
+dnl
+AC_ARG_WITH(aalib-prefix,[ --with-aalib-prefix=PFX Prefix where AALIB is installed (optional)],
+ aalib_prefix="$withval", aalib_prefix="")
+AC_ARG_WITH(aalib-exec-prefix,[ --with-aalib-exec-prefix=PFX Exec prefix where AALIB is installed (optional)],
+ aalib_exec_prefix="$withval", aalib_exec_prefix="")
+AC_ARG_ENABLE(aalibtest, [ --disable-aalibtest Do not try to compile and run a test AALIB program],
+ , enable_aalibtest=yes)
+
+ if test x$aalib_exec_prefix != x ; then
+ aalib_args="$aalib_args --exec-prefix=$aalib_exec_prefix"
+ if test x${AALIB_CONFIG+set} != xset ; then
+ AALIB_CONFIG=$aalib_exec_prefix/bin/aalib-config
+ fi
+ fi
+ if test x$aalib_prefix != x ; then
+ aalib_args="$aalib_args --prefix=$aalib_prefix"
+ if test x${AALIB_CONFIG+set} != xset ; then
+ AALIB_CONFIG=$aalib_prefix/bin/aalib-config
+ fi
+ fi
+
+ AC_PATH_PROG(AALIB_CONFIG, aalib-config, no)
+ min_aalib_version=ifelse([$1], ,0.11.0,$1)
+ AC_MSG_CHECKING(for AALIB - version >= $min_aalib_version)
+ no_aalib=""
+ if test "$AALIB_CONFIG" = "no" ; then
+ no_aalib=yes
+ else
+ AALIB_CFLAGS=`$AALIB_CONFIG $aalibconf_args --cflags`
+ AALIB_LIBS=`$AALIB_CONFIG $aalibconf_args --libs`
+
+ aalib_major_version=`$AALIB_CONFIG $aalib_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ aalib_minor_version=`$AALIB_CONFIG $aalib_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ aalib_micro_version=`$AALIB_CONFIG $aalib_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_aalibtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $AALIB_CFLAGS"
+ LIBS="$LIBS $AALIB_LIBS"
+dnl
+dnl Now check if the installed AALIB is sufficiently new. (Also sanity
+dnl checks the results of aalib-config to some extent
+dnl
+ rm -f conf.aalibtest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "aalib.h"
+
+char*
+my_strdup (char *str)
+{
+ char *new_str;
+
+ if (str)
+ {
+ new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
+ strcpy (new_str, str);
+ }
+ else
+ new_str = NULL;
+
+ return new_str;
+}
+
+int main (int argc, char *argv[])
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ /* This hangs on some systems (?)
+ system ("touch conf.aalibtest");
+ */
+ { FILE *fp = fopen("conf.aalibtest", "a"); if ( fp ) fclose(fp); }
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = my_strdup("$min_aalib_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
+ printf("%s, bad version string\n", "$min_aalib_version");
+ exit(1);
+ }
+
+ if (($aalib_major_version > major) ||
+ (($aalib_major_version == major) && ($aalib_minor_version > minor)) ||
+ (($aalib_major_version == major) && ($aalib_minor_version == minor) && ($aalib_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** 'aalib-config --version' returned %d.%d.%d, but the minimum version\n", $aalib_major_version, $aalib_minor_version, $aalib_micro_version);
+ printf("*** of AALIB required is %d.%d.%d. If aalib-config is correct, then it is\n", major, minor, micro);
+ printf("*** best to upgrade to the required version.\n");
+ printf("*** If aalib-config was wrong, set the environment variable AALIB_CONFIG\n");
+ printf("*** to point to the correct copy of aalib-config, and remove the file\n");
+ printf("*** config.cache before re-running configure\n");
+ return 1;
+ }
+}
+
+],, no_aalib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_aalib" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$AALIB_CONFIG" = "no" ; then
+ echo "*** The aalib-config script installed by AALIB could not be found"
+ echo "*** If AALIB was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the AALIB_CONFIG environment variable to the"
+ echo "*** full path to aalib-config."
+ else
+ if test -f conf.aalibtest ; then
+ :
+ else
+ echo "*** Could not run AALIB test program, checking why..."
+ CFLAGS="$CFLAGS $AALIB_CFLAGS"
+ LIBS="$LIBS $AALIB_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include "AALIB.h"
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding AALIB or finding the wrong"
+ echo "*** version of AALIB. If it is not finding AALIB, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means AALIB was incorrectly installed"
+ echo "*** or that you have moved AALIB since it was installed. In the latter case, you"
+ echo "*** may want to edit the aalib-config script: $AALIB_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ AALIB_CFLAGS=""
+ AALIB_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(AALIB_CFLAGS)
+ AC_SUBST(AALIB_LIBS)
+ rm -f conf.aalibtest
+])
Index: create-1.4.0-aclocal-patch/aalib-1.4.0-new
===================================================================
--- create-1.4.0-aclocal-patch/aalib-1.4.0-new (nonexistent)
+++ create-1.4.0-aclocal-patch/aalib-1.4.0-new (revision 5)
Property changes on: create-1.4.0-aclocal-patch/aalib-1.4.0-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-1.4.0-aclocal-patch/create.patch.sh
===================================================================
--- create-1.4.0-aclocal-patch/create.patch.sh (nonexistent)
+++ create-1.4.0-aclocal-patch/create.patch.sh (revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=1.4.0
+
+tar --files-from=file.list -xzvf ../aalib-1.4rc5.tar.gz
+mv aalib-$VERSION aalib-$VERSION-orig
+
+cp -rf ./aalib-$VERSION-new ./aalib-$VERSION
+
+diff --unified -Nr aalib-$VERSION-orig aalib-$VERSION > aalib-$VERSION-aclocal.patch
+
+mv aalib-$VERSION-aclocal.patch ../patches
+
+rm -rf ./aalib-$VERSION
+rm -rf ./aalib-$VERSION-orig
Property changes on: create-1.4.0-aclocal-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-1.4.0-aclocal-patch/file.list
===================================================================
--- create-1.4.0-aclocal-patch/file.list (nonexistent)
+++ create-1.4.0-aclocal-patch/file.list (revision 5)
@@ -0,0 +1 @@
+aalib-1.4.0/aalib.m4
Index: create-1.4.0-aclocal-patch
===================================================================
--- create-1.4.0-aclocal-patch (nonexistent)
+++ create-1.4.0-aclocal-patch (revision 5)
Property changes on: create-1.4.0-aclocal-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-1.4.0-patch/aalib-1.4.0-new/aalib-config.in
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new/aalib-config.in (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new/aalib-config.in (revision 5)
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+exec_prefix_set=no
+
+usage="\
+Usage: aalib-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]"
+
+if test $# -eq 0; then
+ echo "${usage}" 1>&2
+ exit 1
+fi
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ case $1 in
+ --prefix=*)
+ prefix=$optarg
+ if test $exec_prefix_set = no ; then
+ exec_prefix=$optarg
+ fi
+ ;;
+ --prefix)
+ echo $prefix
+ ;;
+ --exec-prefix=*)
+ exec_prefix=$optarg
+ exec_prefix_set=yes
+ ;;
+ --exec-prefix)
+ echo $exec_prefix
+ ;;
+ --version)
+ echo @VERSION@
+ ;;
+ --cflags)
+ if test @includedir@ != /usr/include ; then
+ # Handle oddities in Win32 path handling (assumes prefix)
+ prefix=`echo ${prefix} | sed 's,^//\([A-Z]\),\1:,'`
+
+ includes=-I@includedir@
+ fi
+ echo -I@includedir@ @AALIB_CFLAGS@
+ ;;
+@ENABLE_SHARED_TRUE@ --libs)
+@ENABLE_SHARED_TRUE@ libdirs="-L@libdir@ @AALIB_RLD_FLAGS@"
+@ENABLE_SHARED_TRUE@ echo $libdirs @AALIB_LIBS@
+@ENABLE_SHARED_TRUE@ ;;
+@ENABLE_STATIC_TRUE@@ENABLE_SHARED_TRUE@ --static-libs)
+@ENABLE_STATIC_TRUE@ libdirs="-L@libdir@ @AALIB_RLD_FLAGS@"
+@ENABLE_STATIC_TRUE@ echo $libdirs @AALIB_LIBS@
+@ENABLE_STATIC_TRUE@ ;;
+ *)
+ echo "${usage}" 1>&2
+ exit 1
+ ;;
+ esac
+ shift
+done
Index: create-1.4.0-patch/aalib-1.4.0-new/src/aacurkbd.c
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new/src/aacurkbd.c (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new/src/aacurkbd.c (revision 5)
@@ -0,0 +1,157 @@
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+#include "config.h"
+#ifdef CURSES_KBDDRIVER
+#ifdef USE_NCURSES
+#include <ncurses.h>
+#else
+#include <curses.h>
+#endif
+#ifdef GPM_MOUSEDRIVER
+#include <gpm.h>
+#endif
+#include "aalib.h"
+#include "aaint.h"
+static int iswaiting;
+static jmp_buf buf;
+extern int __curses_is_up;
+extern volatile int __resized_curses;
+#ifdef GPM_MOUSEDRIVER
+extern int __curses_usegpm;
+#endif
+static int uninitcurses;
+int __curses_x, __curses_y, __curses_buttons;
+int __curses_keyboard;
+
+#ifdef SIGWINCH
+static void handler(int i)
+{
+ __resized_curses = 2;
+ signal(SIGWINCH, handler);
+ if (iswaiting)
+ longjmp(buf, 1);
+}
+#endif
+static int curses_init(struct aa_context *context, int mode)
+{
+ if (!__curses_is_up) {
+ fflush(stdout);
+ if ((initscr()) == NULL)
+ return 0;
+ __curses_is_up = 1;
+ uninitcurses = 1;
+ }
+ __curses_keyboard = 1;
+ cbreak();
+ noecho();
+ nonl();
+ keypad(stdscr, TRUE);
+#ifdef SIGWINCH
+ signal(SIGWINCH, handler);
+#endif
+#ifdef GPM_MOUSEDRIVER
+ aa_recommendlowmouse("gpm");
+#endif
+ aa_recommendlowkbd ("linux");
+ aa_recommendlowmouse("curses");
+ return 1;
+}
+static void curses_uninit(aa_context * c)
+{
+ printf("uninitializing\n");
+ keypad(stdscr, FALSE);
+ nodelay(stdscr, FALSE);
+#ifdef SIGWINCH
+ signal(SIGWINCH, SIG_IGN); /*this line may cause problem... */
+#endif
+ nocbreak();
+ echo();
+ __curses_keyboard = 0;
+ nl();
+ if (uninitcurses) {
+ intrflush(stdscr, TRUE);
+ wclear(stdscr);
+ refresh();
+ uninitcurses = 0;
+ __curses_is_up = 0;
+ endwin();
+ }
+}
+static int curses_getchar(aa_context * c1, int wait)
+{
+ int c;
+ if (wait) {
+ nodelay(stdscr, FALSE);
+ setjmp(buf);
+ iswaiting = 1;
+ } else
+ nodelay(stdscr, TRUE);
+ if (__resized_curses == 2) {
+ __resized_curses = 1;
+ return (AA_RESIZE);
+ }
+#ifdef GPM_MOUSEDRIVER
+ if (__curses_usegpm) {
+ c = Gpm_Wgetch(stdscr);
+ } else
+#endif
+ c = wgetch(stdscr);
+ if (c == 27)
+ return (AA_ESC);
+ if (c > 0 && c < 127 && c != 127)
+ return (c);
+ switch (c) {
+ case ERR:
+ return (AA_NONE);
+ case KEY_LEFT:
+ return (AA_LEFT);
+ case KEY_RIGHT:
+ return (AA_RIGHT);
+ case KEY_UP:
+ return (AA_UP);
+ case KEY_DOWN:
+ return (AA_DOWN);
+#ifdef KEY_MOUSE
+ case KEY_MOUSE:
+#ifdef GPM_MOUSEDRIVER
+ if (!__curses_usegpm)
+#endif
+ {
+ MEVENT m;
+ if (getmouse(&m) == OK) {
+ __curses_x = m.x;
+ __curses_y = m.y;
+ }
+ if (m.bstate & BUTTON1_PRESSED)
+ __curses_buttons |= AA_BUTTON1;
+ if (m.bstate & BUTTON1_RELEASED)
+ __curses_buttons &= ~AA_BUTTON1;
+ if (m.bstate & BUTTON2_PRESSED)
+ __curses_buttons |= AA_BUTTON2;
+ if (m.bstate & BUTTON2_RELEASED)
+ __curses_buttons &= ~AA_BUTTON2;
+ if (m.bstate & BUTTON3_PRESSED)
+ __curses_buttons |= AA_BUTTON3;
+ if (m.bstate & BUTTON3_RELEASED)
+ __curses_buttons &= ~AA_BUTTON3;
+ }
+ return (AA_MOUSE);
+#endif
+ case KEY_BACKSPACE:
+ case 127:
+ return (AA_BACKSPACE);
+ }
+ return (AA_UNKNOWN);
+}
+
+
+__AA_CONST struct aa_kbddriver kbd_curses_d =
+{
+ "curses", "Curses keyboard driver 1.0",
+ 0,
+ curses_init,
+ curses_uninit,
+ curses_getchar,
+};
+#endif
Index: create-1.4.0-patch/aalib-1.4.0-new/src/aacurses.c
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new/src/aacurses.c (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new/src/aacurses.c (revision 5)
@@ -0,0 +1,151 @@
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+#include "config.h"
+#ifdef CURSES_DRIVER
+#ifdef USE_NCURSES
+#ifdef RENAMED_NCURSES
+#include <curses.h>
+#else
+#include <ncurses.h>
+#endif
+#else
+#include <curses.h>
+#endif
+#ifdef GPM_MOUSEDRIVER
+#include <gpm.h>
+#endif
+#include "aalib.h"
+#include "aaint.h"
+__AA_CONST struct aa_driver curses_d;
+int __curses_is_up;
+int __resized_curses;
+static int uninitcurses;
+
+static int curses_init(__AA_CONST struct aa_hardware_params *p, __AA_CONST void *none, struct aa_hardware_params *dest, void **param)
+{
+ int a;
+ if (!__curses_is_up) {
+ fflush(stdout);
+ if ((initscr()) == NULL)
+ return 0;
+ __curses_is_up = 1;
+ uninitcurses = 1;
+ }
+ dest->font=NULL;
+ dest->supported=AA_NORMAL_MASK;
+#ifdef HAVE_TERMATTRS
+ a = termattrs();
+ if (has_colors()) {
+ start_color();
+ init_pair(1, COLOR_BLACK, COLOR_BLACK);
+ dest->supported |= AA_DIM_MASK;
+ } else {
+ if (a & A_DIM)
+ dest->supported |= AA_DIM_MASK;
+ }
+ if (a & A_BOLD)
+ dest->supported |= AA_BOLD_MASK;
+ if (a & A_BOLD)
+ dest->supported |= AA_BOLDFONT_MASK;
+ if (a & A_REVERSE)
+ dest->supported |= AA_REVERSE_MASK;
+#else
+ dest->supported |= AA_REVERSE_MASK | AA_DIM_MASK | AA_BOLD_MASK | AA_BOLDFONT_MASK;
+#endif
+ intrflush(stdscr, FALSE);
+ aa_recommendlowkbd("curses");
+ return 1;
+}
+static void curses_uninit(aa_context * c)
+{
+ wclear(stdscr);
+ intrflush(stdscr, TRUE);
+#if 0
+ nocbreak();
+ echo();
+ nl();
+#endif
+ refresh();
+ if (uninitcurses) {
+ uninitcurses = 0;
+ __curses_is_up = 0;
+ endwin();
+ }
+}
+static void curses_getsize(aa_context * c, int *width, int *height)
+{
+ if (__resized_curses)
+ curses_uninit(c), curses_init(&c->params, NULL,&c->driverparams, NULL), __resized_curses = 0;
+ *width = stdscr->_maxx + 1;
+ *height = stdscr->_maxy + 1;
+#ifdef GPM_MOUSEDRIVER
+ gpm_mx = *width;
+ gpm_my = *height;
+#endif
+
+}
+static void curses_setattr(aa_context * c, int attr)
+{
+ switch (attr) {
+ case AA_NORMAL:
+ attrset(A_NORMAL);
+ break;
+ case AA_DIM:
+ if (has_colors()) {
+ attrset(A_BOLD);
+ attron(COLOR_PAIR(1));
+ } else {
+ attrset(A_DIM);
+ }
+ break;
+ case AA_BOLD:
+ attrset(A_BOLD);
+ break;
+ case AA_BOLDFONT:
+ attrset(A_BOLD);
+ break;
+ case AA_REVERSE:
+ attrset(A_REVERSE);
+ break;
+ case AA_SPECIAL:
+ attrset(A_REVERSE);
+ break;
+ }
+}
+static void curses_print(aa_context * c, __AA_CONST char *text)
+{
+ addstr(text);
+}
+static void curses_flush(aa_context * c)
+{
+ refresh();
+}
+static void curses_gotoxy(aa_context * c, int x, int y)
+{
+ move(y, x);
+}
+static void curses_cursor(aa_context * c, int mode)
+{
+#ifdef HAVE_CURS_SET
+ curs_set(mode);
+#endif
+}
+
+
+
+__AA_CONST struct aa_driver curses_d =
+{
+ "curses", "Curses driver 1.0",
+ curses_init,
+ curses_uninit,
+ curses_getsize,
+ curses_setattr,
+ curses_print,
+ curses_gotoxy,
+ /*curses_getchar,
+ NULL, */
+ curses_flush,
+ curses_cursor,
+};
+#endif
Index: create-1.4.0-patch/aalib-1.4.0-new/src/aalinux.c
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new/src/aalinux.c (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new/src/aalinux.c (revision 5)
@@ -0,0 +1,270 @@
+#include "config.h"
+#ifdef LINUX_DRIVER
+#include <sys/stat.h>
+#include <malloc.h>
+#include <sys/ioctl.h>
+#include <linux/kd.h>
+#ifdef GPM_MOUSEDRIVER
+#include <gpm.h>
+#endif
+#include <unistd.h>
+#include <fcntl.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "aalib.h"
+#include "aaint.h"
+#define MAXVCS 10
+static int readonly=1;
+static int cursorx, cursory;
+static FILE *vc[MAXVCS];
+static int nvcs;
+static int sizes[2][MAXVCS];
+static int cursor_visible = 1;
+static void linux_gotoxy (aa_context * c, int x, int y);
+
+static void
+linux_cursor (aa_context * c, int mode)
+{
+ cursor_visible = mode;
+ linux_gotoxy (c, cursorx, cursory);
+ if (mode)
+ {
+ printf ("[?25h");
+ }
+ else
+ printf ("[?25l");
+ fflush (stdout);
+}
+static int
+linux_init (__AA_CONST struct aa_hardware_params *p, __AA_CONST void *none,
+ struct aa_hardware_params *dest, void **params)
+{
+ static int registered;
+ static struct aa_font font;
+ __AA_CONST static struct aa_hardware_params def = { NULL,
+ AA_DIM_MASK | AA_REVERSE_MASK | AA_NORMAL_MASK | AA_BOLD_MASK |
+ AA_EXTENDED
+ };
+ struct stat sbuf;
+ int major, minor;
+ char fname[20];
+ char tmp[256], *env;
+ int vt;
+ int i, y;
+ int fd;
+ *dest = def;
+ fflush (stdout);
+ fd = dup (fileno (stderr));
+ fstat (fd, &sbuf);
+ major = sbuf.st_rdev >> 8;
+ vt = minor = sbuf.st_rdev & 0xff;
+ close (fd);
+ if (major != 4 || minor >= 64)
+ return (0);
+ readonly = 0;
+ if ((env = getenv ("AAVCS")) != NULL)
+ {
+ int p1 = 0, p2;
+ nvcs = 0;
+ while (env[p1])
+ {
+ while (env[p1] && env[p1] == ' ')
+ p1++;
+ if (!env[p1])
+ break;
+ p2 = 0;
+ while (env[p1] && env[p1] != ' ')
+ tmp[p2++] = env[p1++];
+ tmp[p2] = 0;
+ vc[nvcs] = fopen (tmp, "w+");
+ if (vc[nvcs] == NULL)
+ vc[nvcs] = fopen (tmp, "w"), readonly = 1;
+ if (vc[nvcs] == NULL)
+ return 0;
+ nvcs++;
+ }
+ }
+ else
+ {
+ sprintf (fname, "/dev/vcsa%i", vt);
+ vc[0] = fopen (fname, "w+");
+ if (vc[0] == NULL)
+ vc[0] = fopen (fname, "w"), readonly = 1;
+ nvcs = 1;
+ }
+ if (vc[0] == NULL)
+ return 0;
+ if (!registered)
+ {
+ char *data;
+ fd = open ("/dev/console", 0);
+ if (fd >= 0)
+ {
+ char buf[32 * 1024];
+ struct consolefontdesc desc;
+ desc.chardata = buf;
+ desc.charcount = 1024;
+ i = ioctl (fd, GIO_FONTX, &desc);
+ close (fd);
+ if (i)
+ { /*probably mda/hercules */
+ dest->font = &aa_font14;
+ dest->supported &= ~AA_DIM_MASK;
+ goto skip;
+ }
+ font.name = "Font used by your console";
+ font.shortname = "current";
+ font.height = desc.charheight;
+ data = malloc (desc.charheight * 256);
+ font.data = data;
+ if (font.data == NULL)
+ goto skip;
+ y = 0;
+ for (i = 0; i < 8192; i++)
+ {
+ if (i % 32 < font.height)
+ {
+ data[y] = desc.chardata[i], y++;
+ }
+ }
+ aa_registerfont (&font);
+ dest->font = &font;
+ }
+ }
+skip:;
+#ifdef GPM_MOUSEDRIVER
+ aa_recommendlowmouse ("gpm");
+#endif
+ aa_recommendlowkbd ("linux");
+ aa_recommendlowkbd ("slang");
+ aa_recommendlowkbd ("curses");
+ return 1;
+}
+static void
+linux_uninit (aa_context * c)
+{
+ int i;
+ for (i = 0; i < nvcs; i++)
+ {
+ fclose (vc[i]);
+ }
+}
+static void
+linux_getsize (aa_context * c, int *width, int *height)
+{
+ int i;
+ struct
+ {
+ unsigned char lines, cols, x, y;
+ }
+ scrn =
+ {
+ 0, 0, 0, 0};
+ *width = 0;
+ *height = 65536;
+ if (!readonly)
+ {
+ for (i = 0; i < nvcs; i++)
+ {
+ (void) fseek (vc[i], 0, SEEK_SET);
+ (void) fread (&scrn, 4, 1, vc[i]);
+ sizes[0][i] = scrn.cols;
+ sizes[1][i] = scrn.lines;
+ *width = *width + scrn.cols;
+ if (*height > scrn.lines)
+ *height = scrn.lines;
+ }
+ }
+ else
+ {
+ struct winsize ws;
+ if (ioctl (2, TIOCGWINSZ, &ws) == 0)
+ {
+ *width = ws.ws_col * nvcs;
+ *height = ws.ws_row;
+ }
+ else
+ { /* best guess */
+ *width = 80;
+ *height = 25;
+ }
+ }
+#ifdef GPM_MOUSEDRIVER
+ gpm_mx = *width - 1;
+ gpm_my = *height - 1;
+#endif
+}
+
+static void
+linux_flush (aa_context * c)
+{
+ int i;
+ int x, y, xstart = 0, xend, end = aa_scrwidth (c) * aa_scrheight (c);
+ unsigned char data[] = { 0x07, 0x08, 0x0f, 0x0f, 0x70, 0x17 };
+ for (i = 0; i < nvcs; i++)
+ {
+ fseek (vc[i], 4, 0);
+ for (y = 0; y < aa_scrheight (c); y++)
+ {
+ int start = y * aa_scrwidth (c);
+ for (x = xstart; x < xstart + sizes[0][i]; x++)
+ {
+ putc (c->textbuffer[x + start], vc[i]);
+ if (c->attrbuffer[x + start] < 7)
+ putc (data[c->attrbuffer[x + start]], vc[i]);
+ else
+ putc (0x27, vc[i]);
+ }
+ }
+ xstart += sizes[0][i];
+ fflush (vc[i]);
+ }
+}
+static void
+linux_gotoxy (aa_context * c, int x, int y)
+{
+ int n = 0;
+ int i;
+ struct
+ {
+ unsigned char lines, cols, x, y;
+ }
+ scrn;
+ cursorx = x;
+ cursory = y;
+ for (i = 0; i < nvcs; i++)
+ {
+ (void) fseek (vc[i], 0, SEEK_SET);
+ if (x >= n && x < n + sizes[0][i] && cursor_visible)
+ {
+ scrn.x = x - n;
+ scrn.y = y;
+ scrn.lines = sizes[0][i];
+ scrn.cols = sizes[1][i];
+ }
+ else
+ {
+ scrn.x = 0;
+ scrn.y = 0;
+ scrn.lines = sizes[0][i];
+ scrn.cols = sizes[1][i];
+ }
+ (void) fwrite (&scrn, 4, 1, vc[i]);
+ n += sizes[0][i];
+ }
+ fflush (vc[i]);
+}
+__AA_CONST struct aa_driver linux_d = {
+ "linux", "Linux pc console driver 1.0",
+ linux_init,
+ linux_uninit,
+ linux_getsize,
+ NULL,
+ NULL,
+ linux_gotoxy,
+ linux_flush,
+ linux_cursor
+};
+#endif
Index: create-1.4.0-patch/aalib-1.4.0-new/src/aalinuxkbd.c
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new/src/aalinuxkbd.c (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new/src/aalinuxkbd.c (revision 5)
@@ -0,0 +1,498 @@
+/* Raw keyboard mode driver for linux console by Jan Hubicka.
+ * This driver is based on:
+ * librawkey v0.21 - (c) 1994, 1995 Russell Marks
+ * This library may be freely used/copied/modified provided this copyright
+ * notice is left intact.
+ *
+ * needs keymap support in kernel - been there since 0.99pl12 I think.
+ */
+
+#include "config.h"
+#ifdef LINUX_DRIVER
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <sys/ioctl.h>
+#include <linux/kd.h> /* RAW mode stuff, etc. */
+#include <linux/keyboard.h> /* mainly for NR_KEYS */
+#include <linux/vt.h> /* for VT stuff - nah, really? :) */
+#include <string.h>
+#include <setjmp.h>
+#ifdef GPM_MOUSEDRIVER
+#include <gpm.h>
+#endif
+#include "aalib.h"
+#include "aaint.h"
+static struct termios oldios;
+
+/* random keys not convered anywhere else below */
+#define ESCAPE_KEY 0x01
+#define ENTER_KEY 28
+#define BACKSPACE 14
+#define TAB_KEY 15
+
+/* shifts */
+#define LEFT_SHIFT 0x2A
+#define RIGHT_SHIFT 0x36
+#define LEFT_CTRL 0x1D
+#define LEFT_ALT 0x38
+
+/* NB: right ctrl sends 0xE0 then LEFT_CTRL, right alt sends 0xE0 then
+ * LEFT_ALT. If you want to do any shift handling, you probably want to
+ * just ignore 0xE0, and look for LEFT_CTRL and LEFT_ALT.
+ * note that using scan_keyboard() and is_key_pressed() does this for you.
+ */
+
+/* function keys */
+
+/* this macro lets you do things like FUNC_KEY(1), FUNC_KEY(2), etc. up to
+ * FUNC_KEY(12).
+ * don't use any side-effects with it.
+ */
+#define FUNC_KEY(z) (0x3A+(z)+(((z)>10)?18:0))
+
+/* cursors, pgup, pgdn, etc. */
+
+#define CURSOR_LEFT 0x4B
+#define CURSOR_RIGHT 0x4D
+#define CURSOR_UP 0x48
+#define CURSOR_DOWN 0x50
+#define CURSORBLOCK_LEFT 105
+#define CURSORBLOCK_RIGHT 106
+#define CURSORBLOCK_UP 103
+#define CURSORBLOCK_DOWN 108
+#define KEYPAD_CENTER 0x4C /* the '5' in the centre of the keypad */
+
+#define INSERT_KEY 0x52
+#define DELETE_KEY 0x53
+#define HOME_KEY 0x47
+#define END_KEY 0x4F
+#define PAGE_UP 0x49
+#define PAGE_DOWN 0x51
+
+/* NB: the 'grey' cursors, pgup, pgdn etc. generate 0xE0 before sending the
+ * above codes. The easiest way to deal with this is to ignore 0xE0. :)
+ */
+
+#define CAPS_LOCK 0x3A
+#define NUM_LOCK 0x45
+#define SCROLL_LOCK 0x46
+
+/* PrintScreen generates E0, 2A, E0, 37. (0x63?)
+ * Pause generates E1, 10, 45. (0x77?)
+ * I leave it up to you how to figure those two out properly,
+ * but the easiest way is to ignore them. :-/
+ */
+
+#define GRAY_PLUS 0x4E
+#define GRAY_MINUS 0x4A
+#define GRAY_MULTIPLY 0x37 /* NB: also gen'd by PrtSc, see above */
+#define GRAY_DIVIDE 0x36 /* NB: prefixed by 0xE0 */
+
+
+
+/* for most other keys, you should use the keymap_trans() function to
+ * convert the scancode to whatever the keymap would normally generate.
+ */
+
+
+
+/* prototypes */
+
+/* NB: it is *vital* that you call rawmode_exit() when you finish, or
+ * else you'll be left with the keyboard translation in RAW mode! Not Good.
+ * Consider setting up a SIGSEGV handler that calls it, etc. just in case.
+ */
+
+static int keymap[2][NR_KEYS]; /* scancode -> ASCII translation */
+static int tty_fd = -1, restart_con, alt_pressed;
+static struct termios new_termio, old_termio;
+static int vtswitch_allowed;
+
+static char key_down[128];
+static int closed = 1;
+static int mypid;
+
+
+/* it's really easy to translate the scancodes these days, we just
+ * use the keytable stuff!
+ *
+ * returns 0 on error, 1 if ok
+ */
+static int get_keyb_map(void)
+{
+ static struct kbentry keyb_ent;
+ int f;
+
+ keyb_ent.kb_table = 0; /* unshifted */
+ for (f = 0; f < NR_KEYS; f++) {
+ keyb_ent.kb_index = f;
+
+ if (ioctl(tty_fd, KDGKBENT, (unsigned int) &keyb_ent))
+ return (0);
+
+ keymap[0][f] = keyb_ent.kb_value;
+ }
+ keyb_ent.kb_table = 1; /* unshifted */
+ for (f = 0; f < NR_KEYS; f++) {
+ keyb_ent.kb_index = f;
+
+ if (ioctl(tty_fd, KDGKBENT, (unsigned int) &keyb_ent))
+ return (0);
+
+ keymap[1][f] = keyb_ent.kb_value;
+ }
+ return (1);
+}
+
+
+
+
+static void allow_switch(int on)
+{
+ vtswitch_allowed = on;
+}
+
+static void raw_mode(int tty_fd, int on)
+{
+ ioctl(tty_fd, KDSKBMODE, on ? K_MEDIUMRAW : K_XLATE);
+}
+
+
+static void blank_key_down(void)
+{
+ int f;
+
+ for (f = 0; f < NR_KEYS; f++)
+ key_down[f] = 0;
+}
+
+
+static void vt_from_here(int num)
+{
+ ioctl(tty_fd, TCSETSW, &old_termio);
+ raw_mode(tty_fd, 0); /* don't use rawmode_exit 'cos of other things it does */
+ ioctl(tty_fd, VT_RELDISP, VT_ACKACQ);
+ signal(SIGUSR1, vt_from_here);
+}
+
+
+static void vt_to_here(int num)
+{
+ struct termios ios;
+ ioctl(tty_fd, TCSETSW, &new_termio);
+ restart_con = 1; /* we're back, say to start up again */
+ alt_pressed = 0;
+ raw_mode(tty_fd, 1);
+ ios = oldios;
+ ios.c_lflag &= ~ECHO;
+ tcsetattr(tty_fd, 0, &ios);
+ blank_key_down();
+ signal(SIGUSR2, vt_to_here);
+}
+
+
+/* returns 1 if ok, 0 otherwise */
+static int rawmode_init(void)
+{
+ if (!closed)
+ return (0);
+ mypid = getpid();
+ if (tty_fd == -1) {
+ tty_fd = fileno(stdin);
+ fcntl(tty_fd, F_SETFL, O_NONBLOCK);
+ }
+/* fix termio stuff so ^C-style interrupts are ignored */
+ ioctl(tty_fd, TCGETS, &old_termio);
+ new_termio = old_termio;
+ new_termio.c_lflag &= ~(ISIG | ICANON);
+ ioctl(tty_fd, TCSETSW, &new_termio);
+
+ if (get_keyb_map()) {
+ struct vt_mode vtm;
+ struct termios ios;
+
+ blank_key_down();
+ raw_mode(tty_fd, 1);
+ signal(SIGUSR1, vt_from_here);
+ signal(SIGUSR2, vt_to_here);
+ ioctl(tty_fd, VT_GETMODE, &vtm);
+ vtm.mode = VT_PROCESS;
+ vtm.relsig = SIGUSR1;
+ vtm.acqsig = SIGUSR2;
+ ioctl(tty_fd, VT_SETMODE, &vtm);
+
+ tcgetattr(tty_fd, &oldios);
+ ios = oldios;
+ ios.c_lflag &= ~ECHO;
+ tcsetattr(tty_fd, 0, &ios);
+ closed = 0;
+
+ return (1);
+ } else
+ return (0);
+}
+
+
+static void rawmode_exit(void)
+{
+ struct vt_mode vtm;
+
+ if (mypid != getpid())
+ return;
+ if (closed)
+ return;
+ closed = 1;
+ raw_mode(tty_fd, 0);
+ ioctl(tty_fd, VT_GETMODE, &vtm);
+ vtm.mode = VT_AUTO;
+ ioctl(tty_fd, VT_SETMODE, &vtm);
+ ioctl(tty_fd, TCSETSW, &old_termio);
+ fcntl(tty_fd, F_SETFL, 0); /* allow for old versions of bash */
+ tty_fd = -1;
+ tcsetattr(tty_fd, 0, &oldios);
+}
+
+
+/* returns -1 if no keypresses pending, else returns scancode. */
+static int get_scancode(void)
+{
+ unsigned char c;
+
+ if (read(tty_fd, &c, 1) <= 0)
+ return (-1);
+
+ return ((int) c);
+}
+
+
+/* this is the routine you should call whenever you would normally
+ * read a keypress. However, to actually tell if a key is pressed,
+ * call is_key_pressed() with a scancode as arg.
+ */
+static int scan_keyboard(void)
+{
+ int c, key, flag;
+
+/* we use BFI to fix the PrtSc/Pause problem - i.e. we don't :^) */
+ while ((c = get_scancode()) == 0xE0);
+ if (c == 0xE1)
+ c = get_scancode();
+
+ if (c == -1)
+ return -1; /* no key was pressed */
+
+ key = c & 127;
+ flag = (c & 128) ? 0 : 1; /* 1 = down */
+
+ if (flag || key_down[key] != flag)
+ key_down[key] = flag;
+ else
+ return (scan_keyboard ());
+
+ if (key == LEFT_ALT)
+ alt_pressed = flag;
+
+ if (alt_pressed && flag && key >= FUNC_KEY(1) && key <= FUNC_KEY(10)) {
+ struct vt_stat vts;
+ int newvt;
+
+ ioctl(tty_fd, VT_GETSTATE, &vts);
+ newvt = c - FUNC_KEY(1) + 1;
+ if (vts.v_active != newvt && vtswitch_allowed) {
+ ioctl(tty_fd, VT_ACTIVATE, newvt);
+ restart_con = 0;
+ while (restart_con == 0)
+ usleep(50000);
+ }
+ return -1; /* Got VT switch */
+ }
+ if (flag && key == 46 && key_down[LEFT_CTRL])
+ raise(SIGINT);
+ return key; /* No VT switch */
+}
+
+
+/* converts scancode to key binding */
+static int keymap_trans(int sc)
+{
+ if (sc < 0 || sc > 127)
+ return (-1);
+ return (keymap[key_down[LEFT_SHIFT] || key_down[RIGHT_SHIFT]][sc]);
+}
+
+
+
+
+
+static int iswaiting;
+static int __resized;
+#ifdef GPM_MOUSEDRIVER
+extern int __curses_usegpm;
+#endif
+static jmp_buf buf;
+#ifdef SIGWINCH
+static void handler(int i)
+{
+ __resized = 2;
+ signal(SIGWINCH, handler);
+ if (iswaiting)
+ longjmp(buf, 1);
+}
+#endif
+static char sig2catch[] =
+{SIGHUP, SIGINT, SIGQUIT, SIGILL,
+ SIGTRAP, SIGIOT, SIGBUS, SIGFPE,
+ SIGSEGV, SIGPIPE, SIGALRM, SIGTERM,
+ SIGXCPU, SIGXFSZ, SIGVTALRM,
+ /* SIGPROF , */ SIGPWR};
+static struct sigaction old_signal_handler[sizeof(sig2catch)];
+static void exithandler(int v)
+{
+ int i;
+ printf("AAlib: signal %i received\n", v);
+ rawmode_exit();
+ for (i = 0; i < (int) sizeof(sig2catch); i++)
+ if (sig2catch[i] == v) {
+ sigaction(v, old_signal_handler + i, NULL);
+ raise(v);
+ break;
+ }
+ if (i >= (int) sizeof(sig2catch)) {
+ printf("AA-lib: Aieeee! Illegal call to signal_handler, raising segfault.\n");
+ raise(SIGSEGV);
+ }
+}
+
+static int linux_init(struct aa_context *context, int mode)
+{
+ int i;
+ struct sigaction siga;
+ if (!(mode & AA_SENDRELEASE))
+ return 0;
+ if (!rawmode_init())
+ return 0;
+#ifdef SIGWINCH
+ signal(SIGWINCH, handler);
+#endif
+#ifdef GPM_MOUSEDRIVER
+ aa_recommendlowmouse("gpm");
+#endif
+ allow_switch(1);
+ atexit(rawmode_exit);
+ for (i = 0; i < (int) sizeof(sig2catch); i++) {
+ siga.sa_handler = exithandler;
+ siga.sa_flags = 0;
+ /*zero_sa_mask(&(siga.sa_mask)); */
+ memset(&siga.sa_mask, 0, sizeof(sigset_t));
+ sigaction((int) sig2catch[i], &siga, old_signal_handler + i);
+ }
+
+ return 1;
+}
+static void linux_uninit(aa_context * c)
+{
+#ifdef SIGWINCH
+ signal(SIGWINCH, SIG_IGN); /*this line may cause problem... */
+#endif
+ rawmode_exit();
+}
+#ifdef GPM_MOUSEDRIVER
+extern int __gpm_user_handler(Gpm_Event * event, void *data);
+#endif
+static int linux_getchar(aa_context * c1, int wait)
+{
+#ifdef GPM_MOUSEDRIVER
+ static Gpm_Event e;
+#endif
+ int c;
+ int key;
+ struct timeval tv;
+ do {
+ fd_set readfds;
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ FD_ZERO(&readfds);
+ FD_SET(tty_fd, &readfds);
+#ifdef GPM_MOUSEDRIVER
+ if (gpm_visiblepointer)
+ GPM_DRAWPOINTER(&e);
+ if (__curses_usegpm) {
+ FD_SET(gpm_fd, &readfds);
+ }
+#endif
+#ifdef GPM_MOUSEDRIVER
+ select((__curses_usegpm ? gpm_fd : 0) + 1, &readfds, NULL, NULL, wait ? NULL : &tv);
+ if (__curses_usegpm && FD_ISSET(gpm_fd, &readfds)) {
+ if (Gpm_GetEvent(&e) == 1) {
+ __gpm_user_handler(&e, NULL);
+ return AA_MOUSE;
+ }
+ }
+#else
+ select(tty_fd, &readfds, NULL, NULL, wait ? NULL : &tv);
+#endif
+ c = scan_keyboard();
+ if (c != -1) {
+ switch (c) {
+ case ESCAPE_KEY:
+ key = AA_ESC;
+ break;
+ case ENTER_KEY:
+ key = 13;
+ break;
+ case BACKSPACE:
+ key = AA_BACKSPACE;
+ break;
+ case CURSOR_LEFT:
+ key = AA_LEFT;
+ break;
+ case CURSOR_RIGHT:
+ key = AA_RIGHT;
+ break;
+ case CURSOR_UP:
+ key = AA_UP;
+ break;
+ case CURSOR_DOWN:
+ key = AA_DOWN;
+ break;
+ case CURSORBLOCK_LEFT:
+ key = AA_LEFT;
+ break;
+ case CURSORBLOCK_RIGHT:
+ key = AA_RIGHT;
+ break;
+ case CURSORBLOCK_UP:
+ key = AA_UP;
+ break;
+ case CURSORBLOCK_DOWN:
+ key = AA_DOWN;
+ break;
+ default:
+ key = keymap_trans(c) & 255;
+ }
+ if (!key_down[c])
+ key |= AA_RELEASE;
+ return key;
+ } else
+ key = AA_NONE;
+ }
+ while (wait);
+ return AA_NONE;
+}
+
+
+
+__AA_CONST struct aa_kbddriver kbd_linux_d =
+{
+ "linux", "Linux console raw keyboard driver 1.0",
+ AA_SENDRELEASE,
+ linux_init,
+ linux_uninit,
+ linux_getchar,
+};
+#endif
Index: create-1.4.0-patch/aalib-1.4.0-new/src/aasave.c
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: create-1.4.0-patch/aalib-1.4.0-new/src/aasave.c
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: create-1.4.0-patch/aalib-1.4.0-new/src/aastdin.c
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new/src/aastdin.c (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new/src/aastdin.c (revision 5)
@@ -0,0 +1,110 @@
+#include "config.h"
+#include <string.h>
+#include <stdio.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#ifdef GPM_MOUSEDRIVER
+#include <gpm.h>
+#endif
+#include "aalib.h"
+#include "aaint.h"
+static int iswaiting;
+static int __resized;
+#ifdef GPM_MOUSEDRIVER
+extern int __curses_usegpm;
+#endif
+static jmp_buf buf;
+#ifdef SIGWINCH
+static void handler(int i)
+{
+ __resized = 2;
+ signal(SIGWINCH, handler);
+ if (iswaiting)
+ longjmp(buf, 1);
+}
+#endif
+static int stdin_init(struct aa_context *context, int mode)
+{
+#ifdef SIGWINCH
+ signal(SIGWINCH, handler);
+#endif
+#ifdef GPM_MOUSEDRIVER
+ aa_recommendlowmouse("gpm");
+#endif
+ return 1;
+}
+static void stdin_uninit(aa_context * c)
+{
+#ifdef SIGWINCH
+ signal(SIGWINCH, SIG_IGN); /*this line may cause problem... */
+#endif
+}
+static int stdin_getchar(aa_context * c1, int wait)
+{
+ int c;
+ int flag;
+ struct timeval tv;
+
+ if (wait) {
+ setjmp(buf);
+ iswaiting = 1;
+ }
+ if (__resized == 2) {
+ __resized = 1;
+ return (AA_RESIZE);
+ }
+ if (!wait) {
+ fd_set readfds;
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ FD_ZERO(&readfds);
+ FD_SET(0, &readfds);
+#ifdef GPM_MOUSEDRIVER
+ if (__curses_usegpm) {
+ FD_SET(gpm_fd, &readfds);
+ }
+#endif
+#ifdef GPM_MOUSEDRIVER
+ if (!(flag = select((__curses_usegpm ? gpm_fd : 0) + 1, &readfds, NULL, NULL, &tv)))
+#else
+ if (!(flag = select(1, &readfds, NULL, NULL, &tv)))
+#endif
+ return AA_NONE;
+
+ }
+#ifdef GPM_MOUSEDRIVER
+ if (__curses_usegpm) {
+ c = Gpm_Getc(stdin);
+ } else
+#endif
+ c = getc(stdin);
+ iswaiting = 0;
+ if (c == 27)
+ return (AA_ESC);
+ if (c == 10)
+ return (13);
+ if (c > 0 && c < 127 && c != 127)
+ return (c);
+ switch (c) {
+#ifdef KEY_MOUSE
+ case KEY_MOUSE:
+ return AA_MOUSE
+#endif
+ case 127:
+ return (AA_BACKSPACE);
+ }
+ if(feof(stdin)) return AA_NONE;
+ return (AA_UNKNOWN);
+}
+
+
+__AA_CONST struct aa_kbddriver kbd_stdin_d =
+{
+ "stdin", "Standard input keyboard driver 1.0",
+ 0,
+ stdin_init,
+ stdin_uninit,
+ stdin_getchar,
+};
Index: create-1.4.0-patch/aalib-1.4.0-new/src
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new/src (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new/src (revision 5)
Property changes on: create-1.4.0-patch/aalib-1.4.0-new/src
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-1.4.0-patch/aalib-1.4.0-new
===================================================================
--- create-1.4.0-patch/aalib-1.4.0-new (nonexistent)
+++ create-1.4.0-patch/aalib-1.4.0-new (revision 5)
Property changes on: create-1.4.0-patch/aalib-1.4.0-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-1.4.0-patch/create.patch.sh
===================================================================
--- create-1.4.0-patch/create.patch.sh (nonexistent)
+++ create-1.4.0-patch/create.patch.sh (revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=1.4.0
+
+tar --files-from=file.list -xzvf ../aalib-1.4rc5.tar.gz
+mv aalib-$VERSION aalib-$VERSION-orig
+
+cp -rf ./aalib-$VERSION-new ./aalib-$VERSION
+
+diff --unified -Nr aalib-$VERSION-orig aalib-$VERSION > aalib-$VERSION.patch
+
+mv aalib-$VERSION.patch ../patches
+
+rm -rf ./aalib-$VERSION
+rm -rf ./aalib-$VERSION-orig
Property changes on: create-1.4.0-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-1.4.0-patch/file.list
===================================================================
--- create-1.4.0-patch/file.list (nonexistent)
+++ create-1.4.0-patch/file.list (revision 5)
@@ -0,0 +1,7 @@
+aalib-1.4.0/aalib-config.in
+aalib-1.4.0/src/aacurkbd.c
+aalib-1.4.0/src/aacurses.c
+aalib-1.4.0/src/aalinux.c
+aalib-1.4.0/src/aalinuxkbd.c
+aalib-1.4.0/src/aasave.c
+aalib-1.4.0/src/aastdin.c
Index: create-1.4.0-patch
===================================================================
--- create-1.4.0-patch (nonexistent)
+++ create-1.4.0-patch (revision 5)
Property changes on: create-1.4.0-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: patches/README
===================================================================
--- patches/README (nonexistent)
+++ patches/README (revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+ TODO: Leave some comment here.
+
+ * end */
Index: patches
===================================================================
--- patches (nonexistent)
+++ patches (revision 5)
Property changes on: patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: .
===================================================================
--- . (nonexistent)
+++ . (revision 5)
Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~