Files
screen/src/osdef.sh
Christian Brauner bab73f99a2 add compat layer to handle both fifos and sockets
So far screen could only support either sockets or fifos but not both. This
proved to be a blocker for any upgrade. This adds a compatibility layer to
screen v4 to support both sockets and fifos at the same time. The strategy here
is to only support fifos for legacy sessions that already exist. All new
sessions will use sockets by default.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-04-18 10:53:29 +02:00

70 lines
1.8 KiB
Bash

#! /bin/sh
if test -z "$CPP"; then
CPP="cc -E"
fi
if test -z "$srcdir"; then
srcdir=.
fi
rm -f core*
sed < $srcdir/osdef.h.in -n -e '/^extern/s@.*[)* ][)* ]*\([^ *]*\) __P.*@/[)*, ]\1[ (]/i\\\
\\/\\[^a-zA-Z_\\]\1 __P\\/d@p' > osdef1.sed
cat << EOF > osdef0.c
#include "config.h"
#include <sys/types.h>
#include <stdio.h>
#include <signal.h>
#include <sys/stat.h>
#include <pwd.h>
#ifdef SHADOWPW
#include <shadow.h>
#endif
#ifndef sun
#include <sys/ioctl.h>
#endif
#ifdef linux
#include <string.h>
#include <stdlib.h>
#endif
#include <sys/socket.h>
#ifndef NOSYSLOG
#include <syslog.h>
#endif
#include "os.h"
#if defined(UTMPOK) && defined (GETTTYENT) && !defined(GETUTENT)
#include <ttyent.h>
#endif
#ifdef SVR4
# include <sys/resource.h>
#endif
EOF
cat << EOF > osdef2.sed
1i\\
/*
1i\\
* This file is automagically created from osdef.sh -- DO NOT EDIT
1i\\
*/
EOF
$CPP -I. -I$srcdir osdef0.c | sed -n -f osdef1.sed >> osdef2.sed
sed -f osdef2.sed < $srcdir/osdef.h.in > osdef.h
rm osdef0.c osdef1.sed osdef2.sed
if test -f core*; then
file core*
echo " Sorry, your sed is broken. Call the system administrator."
echo " Meanwhile, you may try to compile screen with an empty osdef.h file."
echo " But if your compiler needs to have all functions declared, you should"
echo " retry 'make' now and only remove offending lines from osdef.h later."
exit 1
fi
if eval test "`diff osdef.h $srcdir/osdef.h.in | wc -l`" -eq 4; then
echo " Hmm, sed is very pessimistic about your system header files."
echo " But it did not dump core -- strange! Let's continue carefully..."
echo " If this fails, you may want to remove offending lines from osdef.h"
echo " or try with an empty osdef.h file, if your compiler can do without"
echo " function declarations."
fi