diff --git a/CHANGES b/CHANGES index 485ee84..4d83fa9 100644 --- a/CHANGES +++ b/CHANGES @@ -73,6 +73,8 @@ porting: Mike Frysinger provided a patch that supports long long for time_t, socklen_t and a few other libc types. + Artem Mygaiev extended Cedril Priscals Android build script with pty code + docu: libwrap always logs to syslog diff --git a/socat_buildscript_for_android.sh b/socat_buildscript_for_android.sh index 31448a8..464af43 100755 --- a/socat_buildscript_for_android.sh +++ b/socat_buildscript_for_android.sh @@ -40,14 +40,95 @@ ${ROOT}/configure \ CC="${OUT}/toolchain/bin/arm-linux-androideabi-gcc" \ || exit 1 -# Replace misconfigured values in config.h +# Replace misconfigured values in config.h and enable PTY functions mv config.h config.old cat config.old \ - | sed 's/CRDLY_SHIFT/CRDLY_SHIFT 9/' \ - | sed 's/TABDLY_SHIFT/TABDLY_SHIFT 11/' \ - | sed 's/CSIZE_SHIFT/CSIZE_SHIFT 4/' \ + | sed 's/CRDLY_SHIFT.*/CRDLY_SHIFT 9/' \ + | sed 's/TABDLY_SHIFT.*/TABDLY_SHIFT 11/' \ + | sed 's/CSIZE_SHIFT.*/CSIZE_SHIFT 4/' \ + | sed 's/\/\* #undef HAVE_OPENPTY \*\//#define HAVE_OPENPTY 1/' \ + | sed 's/\/\* #undef HAVE_GRANTPT \*\//#define HAVE_GRANTPT 1/' \ > config.h +# Enable openpty() in Makefile +mv Makefile Makefile.old +cat Makefile.old | sed 's/error.c/error.c openpty.c/' > Makefile + +# Provide openpty.c +cat >openpty.c <, 1998. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define _PATH_DEVPTMX "/dev/ptmx" + +int openpty (int *amaster, int *aslave, char *name, struct termios *termp, + struct winsize *winp) +{ + char buf[PATH_MAX]; + int master, slave; + + master = open(_PATH_DEVPTMX, O_RDWR); + if (master == -1) + return -1; + + if (grantpt(master)) + goto fail; + + if (unlockpt(master)) + goto fail; + + if (ptsname_r(master, buf, sizeof buf)) + goto fail; + + slave = open(buf, O_RDWR | O_NOCTTY); + if (slave == -1) + goto fail; + + /* XXX Should we ignore errors here? */ + if (termp) + tcsetattr(slave, TCSAFLUSH, termp); + if (winp) + ioctl(slave, TIOCSWINSZ, winp); + + *amaster = master; + *aslave = slave; + if (name != NULL) + strcpy(name, buf); + + return 0; + +fail: + close(master); + return -1; +} +EOF + # Compile make socat || exit 1