Android build script with pty code

This commit is contained in:
Gerhard Rieger 2014-03-26 16:20:02 +01:00
parent b3409560a0
commit 9d15417d62
2 changed files with 87 additions and 4 deletions

View file

@ -163,6 +163,8 @@ porting:
Mike Frysinger provided a patch that supports long long for time_t, Mike Frysinger provided a patch that supports long long for time_t,
socklen_t and a few other libc types. socklen_t and a few other libc types.
Artem Mygaiev extended Cedril Priscals Android build script with pty code
libwrap always logs to syslog libwrap always logs to syslog
added actual text version of GPLv2 added actual text version of GPLv2

View file

@ -40,14 +40,95 @@ ${ROOT}/configure \
CC="${OUT}/toolchain/bin/arm-linux-androideabi-gcc" \ CC="${OUT}/toolchain/bin/arm-linux-androideabi-gcc" \
|| exit 1 || exit 1
# Replace misconfigured values in config.h # Replace misconfigured values in config.h and enable PTY functions
mv config.h config.old mv config.h config.old
cat config.old \ cat config.old \
| sed 's/CRDLY_SHIFT/CRDLY_SHIFT 9/' \ | sed 's/CRDLY_SHIFT.*/CRDLY_SHIFT 9/' \
| sed 's/TABDLY_SHIFT/TABDLY_SHIFT 11/' \ | sed 's/TABDLY_SHIFT.*/TABDLY_SHIFT 11/' \
| sed 's/CSIZE_SHIFT/CSIZE_SHIFT 4/' \ | 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 > 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 <<EOF
/* Copyright (C) 1998, 1999, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 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 <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#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 # Compile
make socat || exit 1 make socat || exit 1