- removed unwanted files - internationalization and jpeg library doesn't work yet git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/branches/1.5-xserver@2433 3789f03b-4d11-0410-bbf8-ca57d06f2519tags/v0.0.90
@@ -0,0 +1 @@ | |||
SUBDIRS = common unix |
@@ -0,0 +1,11 @@ | |||
SUBDIRS = | |||
if ZLIB | |||
SUBDIRS += zlib | |||
endif | |||
#if JPEG | |||
#SUBDIRS += jpeg | |||
#endif | |||
SUBDIRS += rdr network Xregion rfb |
@@ -1,4 +0,0 @@ | |||
SUBDIRS = @ZLIB_DIR@ @JPEG_DIR@ rdr network Xregion rfb | |||
# followed by boilerplate.mk |
@@ -0,0 +1,3 @@ | |||
noinst_LTLIBRARIES = libXregion.la | |||
libXregion_la_SOURCES = Region.c region.h Xregion.h |
@@ -1,15 +0,0 @@ | |||
SRCS = Region.c | |||
OBJS = $(SRCS:.c=.o) | |||
library = libXregion.a | |||
all:: $(library) | |||
$(library): $(OBJS) | |||
rm -f $(library) | |||
$(AR) $(library) $(OBJS) | |||
$(RANLIB) $(library) | |||
# followed by boilerplate.mk |
@@ -1,35 +0,0 @@ | |||
all:: | |||
@subdirs="$(SUBDIRS)"; for d in $$subdirs; do (cd $$d; $(MAKE) $@) || exit 1; done | |||
clean:: | |||
@subdirs="$(SUBDIRS)"; for d in $$subdirs; do (cd $$d; $(MAKE) $@) || exit 1; done | |||
clean:: | |||
rm -f $(program) $(library) *.o | |||
SHELL = @SHELL@ | |||
top_srcdir = @top_srcdir@ | |||
@SET_MAKE@ | |||
CC = @CC@ | |||
CFLAGS = @CFLAGS@ $(DIR_CFLAGS) | |||
CCLD = $(CC) | |||
CXX = @CXX@ | |||
CXXFLAGS = @CXXFLAGS@ | |||
CXXLD = $(CXX) | |||
CPPFLAGS = @CPPFLAGS@ | |||
DEFS = @DEFS@ | |||
ALL_CPPFLAGS = $(CPPFLAGS) $(DEFS) $(DIR_CPPFLAGS) | |||
LIBS = @LIBS@ | |||
LDFLAGS = @LDFLAGS@ | |||
RANLIB = @RANLIB@ | |||
AR = ar cq | |||
.SUFFIXES: | |||
.SUFFIXES: .cxx .c .o | |||
.c.o: | |||
$(CC) $(ALL_CPPFLAGS) $(CFLAGS) -o $@ -c $< | |||
.cxx.o: | |||
$(CXX) $(ALL_CPPFLAGS) $(CXXFLAGS) -o $@ -c $< |
@@ -1,138 +0,0 @@ | |||
dnl Process this file with autoconf to produce a configure script. | |||
AC_INIT(rdr/InStream.h) | |||
dnl dirty hack to prevent use of -g in CFLAGS and CXXFLAGS | |||
ac_cv_prog_cc_g=no | |||
ac_cv_prog_cxx_g=no | |||
dnl Checks for programs. | |||
AC_PROG_CC | |||
AC_PROG_CXX | |||
AC_PROG_RANLIB | |||
AC_PROG_MAKE_SET | |||
AC_LANG_CPLUSPLUS | |||
case "`(uname -sr) 2>/dev/null`" in | |||
"SunOS 5"*) | |||
SOLARIS=yes | |||
;; | |||
"Linux"*) | |||
LINUX=yes | |||
;; | |||
"IRIX 6"*) | |||
X_LIBS="-L/usr/lib32" | |||
;; | |||
"LynxOS 2"*) | |||
SJLJ_EXCEPTIONS=yes | |||
;; | |||
esac | |||
dnl FIXME: Remove duplication between this script and ../unix/configure.in | |||
if test "$GCC" = yes; then | |||
CFLAGS="$CFLAGS -Wall" | |||
if test "$SOLARIS" = yes; then | |||
CFLAGS="$CFLAGS -Wno-unknown-pragmas -Wno-implicit-int" | |||
fi | |||
fi | |||
if test "$GXX" = yes; then | |||
CXXFLAGS="$CXXFLAGS -Wall" | |||
if test "$SOLARIS" = yes; then | |||
CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas -fpermissive" | |||
fi | |||
if test "$SJLJ_EXCEPTIONS" = yes; then | |||
CXXFLAGS="$CXXFLAGS -fsjlj-exceptions" | |||
fi | |||
fi | |||
dnl Checks for IRIX-specific Compression Library. | |||
AC_CHECK_LIB(cl, clQuerySchemeFromName, | |||
[AC_DEFINE(HAVE_CL) | |||
PLATFORM_CXXSRCS="$PLATFORM_CXXSRCS IrixCLJpegCompressor.cxx" | |||
LIBS="$LIBS -lcl"]) | |||
dnl Checks for IRIX-specific Digital Media libraries. | |||
AC_CHECK_LIB(dmedia, dmICCreate, | |||
[AC_DEFINE(HAVE_DMEDIA) | |||
PLATFORM_CXXSRCS="$PLATFORM_CXXSRCS IrixDMJpegCompressor.cxx" | |||
PLATFORM_CXXSRCS="$PLATFORM_CXXSRCS IrixDMIC_RawToJpeg.cxx" | |||
LIBS="$LIBS -ldmedia"]) | |||
AC_SUBST(PLATFORM_CXXSRCS) | |||
AC_ARG_WITH(installed-zlib, | |||
[ --with-installed-zlib use the version of zlib which is installed on the | |||
system instead of the one distributed with VNC]) | |||
if test "$with_installed_zlib" = yes; then | |||
echo "using installed zlib" | |||
ZLIB_LIB=-lz | |||
else | |||
ZLIB_DIR=zlib | |||
ZLIB_INCLUDE='-I$(top_srcdir)/zlib' | |||
ZLIB_LIB='$(top_srcdir)/zlib/libz.a' | |||
echo "configuring zlib..." | |||
(cd zlib; ./configure) | |||
echo "...done configuring zlib" | |||
fi | |||
AC_SUBST(ZLIB_DIR) | |||
AC_SUBST(ZLIB_INCLUDE) | |||
AC_SUBST(ZLIB_LIB) | |||
AC_ARG_WITH(installed-jpeg, | |||
[ --with-installed-jpeg use the version of jpeg which is installed on the | |||
system instead of the one distributed with VNC]) | |||
if test "$with_installed_jpeg" = yes; then | |||
echo "using installed jpeg" | |||
JPEG_LIB=-ljpeg | |||
else | |||
JPEG_DIR=jpeg/build | |||
JPEG_INCLUDE='-I$(top_srcdir)/jpeg' | |||
JPEG_LIB='$(top_srcdir)/jpeg/build/libjpeg.a' | |||
echo "configuring jpeg..." | |||
(mkdir jpeg/build; cd jpeg/build; ../configure) | |||
echo "...done configuring jpeg" | |||
fi | |||
AC_SUBST(JPEG_DIR) | |||
AC_SUBST(JPEG_INCLUDE) | |||
AC_SUBST(JPEG_LIB) | |||
AC_CHECK_FUNC(vsnprintf,VSNPRINTF_DEFINE='-DHAVE_VSNPRINTF',VSNPRINTF_DEFINE=) | |||
AC_SUBST(VSNPRINTF_DEFINE) | |||
AC_CHECK_FUNC(strcasecmp,STRCASECMP_DEFINE='-DHAVE_STRCASECMP', | |||
STRCASECMP_DEFINE=) | |||
AC_SUBST(STRCASECMP_DEFINE) | |||
AC_CHECK_FUNC(strncasecmp,STRNCASECMP_DEFINE='-DHAVE_STRNCASECMP', | |||
STRNCASECMP_DEFINE=) | |||
AC_SUBST(STRNCASECMP_DEFINE) | |||
AC_MSG_CHECKING(for socklen_t) | |||
AC_TRY_COMPILE( | |||
[#include <sys/types.h> | |||
#include <sys/socket.h>], | |||
[socklen_t x; | |||
accept(0, 0, &x);], | |||
AC_MSG_RESULT(yes) | |||
SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=socklen_t', | |||
AC_MSG_RESULT(using int) | |||
SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=int') | |||
AC_SUBST(SOCKLEN_T_DEFINE) | |||
BOILERPLATE=boilerplate.mk | |||
if (sh -c "make --version" 2>/dev/null | grep GNU 2>&1 >/dev/null); then | |||
if sh -c "vncmkdepend" >/dev/null 2>&1; then | |||
BOILERPLATE="$BOILERPLATE:depend.mk" | |||
fi | |||
fi | |||
AC_OUTPUT(Makefile:Makefile.in:$BOILERPLATE \ | |||
rdr/Makefile:rdr/Makefile.in:$BOILERPLATE \ | |||
network/Makefile:network/Makefile.in:$BOILERPLATE \ | |||
Xregion/Makefile:Xregion/Makefile.in:$BOILERPLATE \ | |||
rfb/Makefile:rfb/Makefile.in:$BOILERPLATE \ | |||
) |
@@ -1,76 +0,0 @@ | |||
# | |||
# C / C++ header dependency stuff | |||
# | |||
# Needs GNU make and vncmkdepend, a hacked version of makedepend | |||
.SUFFIXES: .d | |||
CMAKEDEPEND = vncmkdepend | |||
CXXMAKEDEPEND = vncmkdepend | |||
# | |||
# The recommended method of doing dependency analysis in the GNU make manual | |||
# turns out to be painfully slow. This method is similar but it's | |||
# substantially faster and retains the desirable property that the user doesn't | |||
# need to manually invoke a "make depend" step. | |||
# | |||
# As with the method described in the manual, we generate a separate dependency | |||
# (.d) file for each source file. The .d file records the header files that | |||
# each C or C++ source file includes. Any source file recorded in SRCS or | |||
# CXXSRCS will cause us to try and include the corresponding .d file and GNU | |||
# make then treats each .d file as a target to be remade. | |||
# | |||
# Unlike the manual's method, the rule we provide for making the .d file is | |||
# actually a fake. All it does is record in a temporary file that the .d file | |||
# needs to be remade. But as well as all the .d files, we also try to include | |||
# a file called "depend.phony". This file never exists, but it causes GNU make | |||
# to try and make the target "depend.phony". The rule for depend.phony then | |||
# looks at the temporary files generated by the .d rules and then invokes the | |||
# "omkdepend" program on all of the source files in one go. | |||
# | |||
# | |||
# We use simple assignment here to remove any of the depend.tmp files | |||
# at the time make parses this bit. | |||
# | |||
dummyvariable := $(shell $(RM) cdepend.tmp cxxdepend.tmp) | |||
# | |||
# Now the "fake" rules for generating .d files. | |||
# | |||
%.d: %.c | |||
@echo "$<" >> cdepend.tmp | |||
%.d: %.cxx | |||
@echo "$<" >> cxxdepend.tmp | |||
# | |||
# The depend.phony rule which actually runs omkdepend. | |||
# | |||
depend.phony: | |||
@if [ -f cdepend.tmp ]; then \ | |||
echo $(CMAKEDEPEND) $(ALL_CPPFLAGS) `cat cdepend.tmp`; \ | |||
$(CMAKEDEPEND) $(ALL_CPPFLAGS) `cat cdepend.tmp`; \ | |||
rm -f cdepend.tmp; \ | |||
fi; \ | |||
if [ -f cxxdepend.tmp ]; then \ | |||
echo $(CXXMAKEDEPEND) $(ALL_CPPFLAGS) `cat cxxdepend.tmp`; \ | |||
$(CXXMAKEDEPEND) $(ALL_CPPFLAGS) `cat cxxdepend.tmp`; \ | |||
rm -f cxxdepend.tmp; \ | |||
fi | |||
# | |||
# Now include the .d files and the "depend.phony" file which never exists. | |||
# For some reason GNU make evaluates the targets in reverse order, so we need | |||
# to include depend.phony first. The "-" tells make not to complain that it | |||
# can't find the file. | |||
# | |||
-include depend.phony | |||
ifdef SRCS | |||
-include $(patsubst %.c,%.d,$(patsubst %.cxx,%.d,$(SRCS))) | |||
endif |
@@ -0,0 +1,5 @@ | |||
noinst_LTLIBRARIES = libnetwork.la | |||
libnetwork_la_SOURCES = Socket.h TcpSocket.cxx TcpSocket.h | |||
libnetwork_la_CPPFLAGS = -I$(COMMON_DIR) |
@@ -1,17 +0,0 @@ | |||
SRCS = TcpSocket.cxx | |||
OBJS = $(SRCS:.cxx=.o) | |||
DIR_CPPFLAGS = -I$(top_srcdir) @SOCKLEN_T_DEFINE@ | |||
library = libnetwork.a | |||
all:: $(library) | |||
$(library): $(OBJS) | |||
rm -f $(library) | |||
$(AR) $(library) $(OBJS) | |||
$(RANLIB) $(library) | |||
# followed by boilerplate.mk |
@@ -16,6 +16,10 @@ | |||
* USA. | |||
*/ | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#ifdef WIN32 | |||
//#include <io.h> | |||
#include <winsock2.h> |
@@ -0,0 +1,10 @@ | |||
noinst_LTLIBRARIES = librdr.la | |||
librdr_la_SOURCES = Exception.cxx Exception.h FdInStream.cxx FdInStream.h \ | |||
FdOutStream.cxx FdOutStream.h FixedMemOutStream.h HexInStream.cxx \ | |||
HexInStream.h HexOutStream.cxx HexOutStream.h InStream.cxx InStream.h \ | |||
MemInStream.h MemOutStream.h OutStream.h RandomStream.cxx \ | |||
RandomStream.h SubstitutingInStream.h types.h ZlibInStream.cxx \ | |||
ZlibInStream.h ZlibOutStream.cxx ZlibOutStream.h | |||
librdr_la_CPPFLAGS = -I$(COMMON_DIR) |
@@ -1,19 +0,0 @@ | |||
SRCS = Exception.cxx FdInStream.cxx FdOutStream.cxx InStream.cxx \ | |||
RandomStream.cxx ZlibInStream.cxx ZlibOutStream.cxx \ | |||
HexInStream.cxx HexOutStream.cxx | |||
OBJS = $(SRCS:.cxx=.o) | |||
DIR_CPPFLAGS = -I$(top_srcdir) @ZLIB_INCLUDE@ | |||
library = librdr.a | |||
all:: $(library) | |||
$(library): $(OBJS) | |||
rm -f $(library) | |||
$(AR) $(library) $(OBJS) | |||
$(RANLIB) $(library) | |||
# followed by boilerplate.mk |
@@ -4,7 +4,7 @@ | |||
#include <stdio.h> | |||
#include <sys/types.h> | |||
extern "C" { | |||
#include <jpeg/jpeglib.h> | |||
#include <jpeglib.h> | |||
} | |||
#include <rdr/types.h> |
@@ -18,6 +18,10 @@ | |||
// -=- Logger.cxx - support for the Logger and LogWriter classes | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include <stdarg.h> | |||
#include <stdio.h> | |||
#include <string.h> |
@@ -0,0 +1,55 @@ | |||
noinst_LTLIBRARIES = librfb.la | |||
librfb_la_SOURCES = Blacklist.cxx Blacklist.h CapsContainer.cxx \ | |||
CapsContainer.h CapsList.cxx CapsList.h CConnection.cxx CConnection.h \ | |||
CFTMsgReader.cxx CFTMsgReader.h CFTMsgWriter.cxx CFTMsgWriter.h \ | |||
CMsgHandler.cxx CMsgHandler.h CMsgReader.cxx CMsgReader.h \ | |||
CMsgReaderV3.cxx CMsgReaderV3.h CMsgWriter.cxx CMsgWriter.h \ | |||
CMsgWriterV3.cxx CMsgWriterV3.h ColourCube.h ColourMap.h \ | |||
ComparingUpdateTracker.cxx ComparingUpdateTracker.h Configuration.cxx \ | |||
Configuration.h ConnParams.cxx ConnParams.h CSecurity.h \ | |||
CSecurityNone.h CSecurityVncAuth.cxx CSecurityVncAuth.h Cursor.cxx \ | |||
Cursor.h Decoder.cxx Decoder.h DirManager.h d3des.c d3des.h \ | |||
Encoder.cxx Encoder.h encodings.cxx encodings.h Exception.h \ | |||
FileInfo.cxx FileInfo.h FileManager.cxx FileManager.h FileReader.cxx \ | |||
FileReader.h FileWriter.cxx FileWriter.h fttypes.h hextileConstants.h \ | |||
hextileDecode.h HextileDecoder.cxx HextileDecoder.h \ | |||
hextileEncodeBetter.h hextileEncode.h HextileEncoder.cxx \ | |||
HextileEncoder.h Hostname.h HTTPServer.cxx HTTPServer.h ImageGetter.h \ | |||
InputHandler.h JpegCompressor.cxx JpegCompressor.h JpegEncoder.cxx \ | |||
JpegEncoder.h KeyRemapper.cxx KeyRemapper.h keysymdef.h \ | |||
ListConnInfo.h Logger.cxx Logger_file.cxx Logger_file.h Logger.h \ | |||
Logger_stdio.cxx Logger_stdio.h LogWriter.cxx LogWriter.h msgTypes.h \ | |||
Password.cxx Password.h PixelBuffer.cxx PixelBuffer.h PixelFormat.cxx \ | |||
PixelFormat.h Pixel.h RawDecoder.cxx RawDecoder.h RawEncoder.cxx \ | |||
RawEncoder.h Rect.h Region.cxx Region.h rreDecode.h RREDecoder.cxx \ | |||
RREDecoder.h rreEncode.h RREEncoder.cxx RREEncoder.h \ | |||
ScaledPixelBuffer.cxx ScaledPixelBuffer.h ScaleFilters.cxx \ | |||
ScaleFilters.h SConnection.cxx SConnection.h SDesktop.h secTypes.cxx \ | |||
secTypes.h ServerCore.cxx ServerCore.h SFileTransfer.cxx \ | |||
SFileTransfer.h SFileTransferManager.cxx SFileTransferManager.h \ | |||
SFTMsgReader.cxx SFTMsgReader.h SFTMsgWriter.cxx SFTMsgWriter.h \ | |||
SMsgHandler.cxx SMsgHandler.h SMsgReader.cxx SMsgReader.h \ | |||
SMsgReaderV3.cxx SMsgReaderV3.h SMsgWriter.cxx SMsgWriter.h \ | |||
SMsgWriterV3.cxx SMsgWriterV3.h SSecurityFactoryStandard.cxx \ | |||
SSecurityFactoryStandard.h SSecurity.h SSecurityNone.h \ | |||
SSecurityVncAuth.cxx SSecurityVncAuth.h Threading.h tightDecode.h \ | |||
TightDecoder.cxx TightDecoder.h tightEncode.h TightEncoder.cxx \ | |||
TightEncoder.h TightPalette.cxx TightPalette.h Timer.cxx Timer.h \ | |||
TransferQueue.cxx TransferQueue.h TransImageGetter.cxx \ | |||
TransImageGetter.h transInitTempl.h transTempl.h TrueColourMap.h \ | |||
UpdateTracker.cxx UpdateTracker.h UserPasswdGetter.h util.cxx util.h \ | |||
VNCSConnectionST.cxx VNCSConnectionST.h VNCServer.h VNCServerST.cxx \ | |||
VNCServerST.h zrleDecode.h ZRLEDecoder.cxx ZRLEDecoder.h zrleEncode.h \ | |||
ZRLEEncoder.cxx ZRLEEncoder.h | |||
if CL | |||
librfb_la_SOURCES += IrixCLJpegCompressor.cxx IrixCLJpegCompressor.h | |||
endif | |||
if DMEDIA | |||
librfb_la_SOURCES += IrixDMIC_RawToJpeg.cxx IrixDMIC_RawToJpeg.h \ | |||
IrixDMJpegCompressor.cxx IrixDMJpegCompressor.h | |||
endif | |||
librfb_la_CPPFLAGS = -I$(COMMON_DIR) |
@@ -1,88 +0,0 @@ | |||
CXXSRCS = \ | |||
Blacklist.cxx \ | |||
CConnection.cxx \ | |||
CMsgHandler.cxx \ | |||
CMsgReader.cxx \ | |||
CMsgReaderV3.cxx \ | |||
CMsgWriter.cxx \ | |||
CMsgWriterV3.cxx \ | |||
CSecurityVncAuth.cxx \ | |||
CapsContainer.cxx \ | |||
CapsList.cxx \ | |||
ComparingUpdateTracker.cxx \ | |||
Configuration.cxx \ | |||
ConnParams.cxx \ | |||
Cursor.cxx \ | |||
Decoder.cxx \ | |||
Encoder.cxx \ | |||
FileInfo.cxx \ | |||
FileManager.cxx \ | |||
FileReader.cxx \ | |||
FileWriter.cxx \ | |||
JpegCompressor.cxx \ | |||
JpegEncoder.cxx \ | |||
HTTPServer.cxx \ | |||
HextileDecoder.cxx \ | |||
HextileEncoder.cxx \ | |||
KeyRemapper.cxx \ | |||
LogWriter.cxx \ | |||
Logger.cxx \ | |||
Logger_file.cxx \ | |||
Logger_stdio.cxx \ | |||
Password.cxx \ | |||
PixelBuffer.cxx \ | |||
PixelFormat.cxx \ | |||
RREEncoder.cxx \ | |||
RREDecoder.cxx \ | |||
RawDecoder.cxx \ | |||
RawEncoder.cxx \ | |||
Region.cxx \ | |||
SConnection.cxx \ | |||
SFTMsgReader.cxx \ | |||
SFTMsgWriter.cxx \ | |||
SFileTransfer.cxx \ | |||
SFileTransferManager.cxx \ | |||
SMsgHandler.cxx \ | |||
SMsgReader.cxx \ | |||
SMsgReaderV3.cxx \ | |||
SMsgWriter.cxx \ | |||
SMsgWriterV3.cxx \ | |||
ServerCore.cxx \ | |||
SSecurityFactoryStandard.cxx \ | |||
SSecurityVncAuth.cxx \ | |||
ScaledPixelBuffer.cxx \ | |||
ScaleFilters.cxx \ | |||
Timer.cxx \ | |||
TightDecoder.cxx \ | |||
TightEncoder.cxx \ | |||
TightPalette.cxx \ | |||
TransImageGetter.cxx \ | |||
TransferQueue.cxx \ | |||
UpdateTracker.cxx \ | |||
VNCSConnectionST.cxx \ | |||
VNCServerST.cxx \ | |||
ZRLEEncoder.cxx \ | |||
ZRLEDecoder.cxx \ | |||
encodings.cxx \ | |||
secTypes.cxx \ | |||
util.cxx \ | |||
@PLATFORM_CXXSRCS@ | |||
SRCS = d3des.c $(CXXSRCS) | |||
OBJS = d3des.o $(CXXSRCS:.cxx=.o) | |||
DIR_CPPFLAGS = -I$(top_srcdir) @JPEG_INCLUDE@ @VSNPRINTF_DEFINE@ \ | |||
@STRCASECMP_DEFINE@ @STRNCASECMP_DEFINE@ | |||
library = librfb.a | |||
all:: $(library) | |||
$(library): $(OBJS) | |||
rm -f $(library) | |||
$(AR) $(library) $(OBJS) | |||
$(RANLIB) $(library) | |||
# followed by boilerplate.mk |
@@ -23,6 +23,10 @@ | |||
#ifndef __RFB_UTIL_H__ | |||
#define __RFB_UTIL_H__ | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include <limits.h> | |||
#include <string.h> | |||
@@ -0,0 +1,7 @@ | |||
noinst_LTLIBRARIES = libz.la | |||
libz_la_SOURCES = adler32.c compress.c crc32.c deflate.c deflate.h example.c \ | |||
gzio.c infblock.c infblock.h infcodes.c infcodes.h inffast.c \ | |||
inffast.h inffixed.h inflate.c inftrees.c inftrees.h infutil.c \ | |||
infutil.h maketree.c minigzip.c trees.c trees.h uncompr.c zconf.h \ | |||
zlib.h zutil.c zutil.h |
@@ -1,175 +0,0 @@ | |||
# Makefile for zlib | |||
# Copyright (C) 1995-2002 Jean-loup Gailly. | |||
# For conditions of distribution and use, see copyright notice in zlib.h | |||
# To compile and test, type: | |||
# ./configure; make test | |||
# The call of configure is optional if you don't have special requirements | |||
# If you wish to build zlib as a shared library, use: ./configure -s | |||
# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type: | |||
# make install | |||
# To install in $HOME instead of /usr/local, use: | |||
# make install prefix=$HOME | |||
CC=cc | |||
CFLAGS=-O | |||
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 | |||
#CFLAGS=-g -DDEBUG | |||
#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ | |||
# -Wstrict-prototypes -Wmissing-prototypes | |||
LDFLAGS=-L. -lz | |||
LDSHARED=$(CC) | |||
CPP=$(CC) -E | |||
VER=1.1.4 | |||
LIBS=libz.a | |||
SHAREDLIB=libz.so | |||
AR=ar rc | |||
RANLIB=ranlib | |||
TAR=tar | |||
SHELL=/bin/sh | |||
prefix = /usr/local | |||
exec_prefix = ${prefix} | |||
libdir = ${exec_prefix}/lib | |||
includedir = ${prefix}/include | |||
OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \ | |||
zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o | |||
OBJA = | |||
# to use the asm code: make OBJA=match.o | |||
TEST_OBJS = example.o minigzip.o | |||
DISTFILES = README FAQ INDEX ChangeLog configure Make*[a-z0-9] *.[ch] *.mms \ | |||
algorithm.txt zlib.3 zlib.html \ | |||
msdos/Make*[a-z0-9] msdos/zlib.def msdos/zlib.rc \ | |||
nt/Make*[a-z0-9] nt/zlib.dnt amiga/Make*.??? os2/M*.os2 os2/zlib.def \ | |||
contrib/RE*.contrib contrib/*.txt contrib/asm386/*.asm contrib/asm386/*.c \ | |||
contrib/asm386/*.bat contrib/asm386/zlibvc.d?? contrib/asm[56]86/*.?86 \ | |||
contrib/asm[56]86/*.S contrib/iostream/*.cpp \ | |||
contrib/iostream/*.h contrib/iostream2/*.h contrib/iostream2/*.cpp \ | |||
contrib/untgz/Makefile contrib/untgz/*.c contrib/untgz/*.w32 \ | |||
contrib/minizip/[CM]*[pe] contrib/minizip/*.[ch] contrib/minizip/*.[td]?? \ | |||
contrib/delphi*/*.??? | |||
all: example minigzip | |||
test: all | |||
@LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ | |||
echo hello world | ./minigzip | ./minigzip -d || \ | |||
echo ' *** minigzip test FAILED ***' ; \ | |||
if ./example; then \ | |||
echo ' *** zlib test OK ***'; \ | |||
else \ | |||
echo ' *** zlib test FAILED ***'; \ | |||
fi | |||
libz.a: $(OBJS) $(OBJA) | |||
$(AR) $@ $(OBJS) $(OBJA) | |||
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1 | |||
match.o: match.S | |||
$(CPP) match.S > _match.s | |||
$(CC) -c _match.s | |||
mv _match.o match.o | |||
rm -f _match.s | |||
$(SHAREDLIB).$(VER): $(OBJS) | |||
$(LDSHARED) -o $@ $(OBJS) | |||
rm -f $(SHAREDLIB) $(SHAREDLIB).1 | |||
ln -s $@ $(SHAREDLIB) | |||
ln -s $@ $(SHAREDLIB).1 | |||
example: example.o $(LIBS) | |||
$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) | |||
minigzip: minigzip.o $(LIBS) | |||
$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) | |||
install: $(LIBS) | |||
-@if [ ! -d $(includedir) ]; then mkdir $(includedir); fi | |||
-@if [ ! -d $(libdir) ]; then mkdir $(libdir); fi | |||
cp zlib.h zconf.h $(includedir) | |||
chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h | |||
cp $(LIBS) $(libdir) | |||
cd $(libdir); chmod 755 $(LIBS) | |||
-@(cd $(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1 | |||
cd $(libdir); if test -f $(SHAREDLIB).$(VER); then \ | |||
rm -f $(SHAREDLIB) $(SHAREDLIB).1; \ | |||
ln -s $(SHAREDLIB).$(VER) $(SHAREDLIB); \ | |||
ln -s $(SHAREDLIB).$(VER) $(SHAREDLIB).1; \ | |||
(ldconfig || true) >/dev/null 2>&1; \ | |||
fi | |||
# The ranlib in install is needed on NeXTSTEP which checks file times | |||
# ldconfig is for Linux | |||
uninstall: | |||
cd $(includedir); \ | |||
v=$(VER); \ | |||
if test -f zlib.h; then \ | |||
v=`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`; \ | |||
rm -f zlib.h zconf.h; \ | |||
fi; \ | |||
cd $(libdir); rm -f libz.a; \ | |||
if test -f $(SHAREDLIB).$$v; then \ | |||
rm -f $(SHAREDLIB).$$v $(SHAREDLIB) $(SHAREDLIB).1; \ | |||
fi | |||
clean: | |||
rm -f *.o *~ example minigzip libz.a libz.so* foo.gz so_locations \ | |||
_match.s maketree | |||
distclean: clean | |||
zip: | |||
mv Makefile Makefile~; cp -p Makefile.in Makefile | |||
rm -f test.c ztest*.c contrib/minizip/test.zip | |||
v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ | |||
zip -ul9 zlib$$v $(DISTFILES) | |||
mv Makefile~ Makefile | |||
dist: | |||
mv Makefile Makefile~; cp -p Makefile.in Makefile | |||
rm -f test.c ztest*.c contrib/minizip/test.zip | |||
d=zlib-`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ | |||
rm -f $$d.tar.gz; \ | |||
if test ! -d ../$$d; then rm -f ../$$d; ln -s `pwd` ../$$d; fi; \ | |||
files=""; \ | |||
for f in $(DISTFILES); do files="$$files $$d/$$f"; done; \ | |||
cd ..; \ | |||
GZIP=-9 $(TAR) chofz $$d/$$d.tar.gz $$files; \ | |||
if test ! -d $$d; then rm -f $$d; fi | |||
mv Makefile~ Makefile | |||
tags: | |||
etags *.[ch] | |||
depend: | |||
makedepend -- $(CFLAGS) -- *.[ch] | |||
# DO NOT DELETE THIS LINE -- make depend depends on it. | |||
adler32.o: zlib.h zconf.h | |||
compress.o: zlib.h zconf.h | |||
crc32.o: zlib.h zconf.h | |||
deflate.o: deflate.h zutil.h zlib.h zconf.h | |||
example.o: zlib.h zconf.h | |||
gzio.o: zutil.h zlib.h zconf.h | |||
infblock.o: infblock.h inftrees.h infcodes.h infutil.h zutil.h zlib.h zconf.h | |||
infcodes.o: zutil.h zlib.h zconf.h | |||
infcodes.o: inftrees.h infblock.h infcodes.h infutil.h inffast.h | |||
inffast.o: zutil.h zlib.h zconf.h inftrees.h | |||
inffast.o: infblock.h infcodes.h infutil.h inffast.h | |||
inflate.o: zutil.h zlib.h zconf.h infblock.h | |||
inftrees.o: zutil.h zlib.h zconf.h inftrees.h | |||
infutil.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h | |||
minigzip.o: zlib.h zconf.h | |||
trees.o: deflate.h zutil.h zlib.h zconf.h trees.h | |||
uncompr.o: zlib.h zconf.h | |||
zutil.o: zutil.h zlib.h zconf.h |
@@ -1,213 +0,0 @@ | |||
#!/bin/sh | |||
# configure script for zlib. This script is needed only if | |||
# you wish to build a shared library and your system supports them, | |||
# of if you need special compiler, flags or install directory. | |||
# Otherwise, you can just use directly "make test; make install" | |||
# | |||
# To create a shared library, use "configure --shared"; by default a static | |||
# library is created. If the primitive shared library support provided here | |||
# does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz | |||
# | |||
# To impose specific compiler or flags or install directory, use for example: | |||
# prefix=$HOME CC=cc CFLAGS="-O4" ./configure | |||
# or for csh/tcsh users: | |||
# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure) | |||
# LDSHARED is the command to be used to create a shared library | |||
# Incorrect settings of CC or CFLAGS may prevent creating a shared library. | |||
# If you have problems, try without defining CC and CFLAGS before reporting | |||
# an error. | |||
LIBS=libz.a | |||
SHAREDLIB=libz.so | |||
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` | |||
AR=${AR-"ar rc"} | |||
RANLIB=${RANLIB-"ranlib"} | |||
prefix=${prefix-/usr/local} | |||
exec_prefix=${exec_prefix-'${prefix}'} | |||
libdir=${libdir-'${exec_prefix}/lib'} | |||
includedir=${includedir-'${prefix}/include'} | |||
shared_ext='.so' | |||
shared=0 | |||
gcc=0 | |||
old_cc="$CC" | |||
old_cflags="$CFLAGS" | |||
while test $# -ge 1 | |||
do | |||
case "$1" in | |||
-h* | --h*) | |||
echo 'usage:' | |||
echo ' configure [--shared] [--prefix=PREFIX] [--exec_prefix=EXPREFIX]' | |||
echo ' [--libdir=LIBDIR] [--includedir=INCLUDEDIR]' | |||
exit 0;; | |||
-p*=* | --p*=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; | |||
-e*=* | --e*=*) exec_prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; | |||
-l*=* | --libdir=*) libdir=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; | |||
-i*=* | --includedir=*) includedir=`echo $1 | sed 's/[-a-z_]*=//'`;shift;; | |||
-p* | --p*) prefix="$2"; shift; shift;; | |||
-e* | --e*) exec_prefix="$2"; shift; shift;; | |||
-l* | --l*) libdir="$2"; shift; shift;; | |||
-i* | --i*) includedir="$2"; shift; shift;; | |||
-s* | --s*) shared=1; shift;; | |||
*) shift;; | |||
esac | |||
done | |||
test=ztest$$ | |||
cat > $test.c <<EOF | |||
extern int getchar(); | |||
int hello() {return getchar();} | |||
EOF | |||
test -z "$CC" && echo Checking for gcc... | |||
cc=${CC-gcc} | |||
cflags=${CFLAGS-"-O3"} | |||
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure | |||
case "$cc" in | |||
*gcc*) gcc=1;; | |||
esac | |||
if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then | |||
CC="$cc" | |||
SFLAGS=${CFLAGS-"-fPIC -O3"} | |||
CFLAGS="$cflags" | |||
case `(uname -s || echo unknown) 2>/dev/null` in | |||
Linux | linux) LDSHARED=${LDSHARED-"gcc -shared -Wl,-soname,libz.so.1"};; | |||
*) LDSHARED=${LDSHARED-"gcc -shared"};; | |||
esac | |||
else | |||
# find system name and corresponding cc options | |||
CC=${CC-cc} | |||
case `(uname -sr || echo unknown) 2>/dev/null` in | |||
HP-UX*) SFLAGS=${CFLAGS-"-O +z"} | |||
CFLAGS=${CFLAGS-"-O"} | |||
# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"} | |||
LDSHARED=${LDSHARED-"ld -b"} | |||
shared_ext='.sl' | |||
SHAREDLIB='libz.sl';; | |||
IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."} | |||
CFLAGS=${CFLAGS-"-ansi -O2"} | |||
LDSHARED=${LDSHARED-"cc -shared"};; | |||
OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"} | |||
CFLAGS=${CFLAGS-"-O -std1"} | |||
LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,$SHAREDLIB -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"};; | |||
OSF1*) SFLAGS=${CFLAGS-"-O -std1"} | |||
CFLAGS=${CFLAGS-"-O -std1"} | |||
LDSHARED=${LDSHARED-"cc -shared"};; | |||
QNX*) SFLAGS=${CFLAGS-"-4 -O"} | |||
CFLAGS=${CFLAGS-"-4 -O"} | |||
LDSHARED=${LDSHARED-"cc"} | |||
RANLIB=${RANLIB-"true"} | |||
AR="cc -A";; | |||
SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "} | |||
CFLAGS=${CFLAGS-"-O3"} | |||
LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};; | |||
SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."} | |||
CFLAGS=${CFLAGS-"-fast -xcg89"} | |||
LDSHARED=${LDSHARED-"cc -G"};; | |||
SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"} | |||
CFLAGS=${CFLAGS-"-O2"} | |||
LDSHARED=${LDSHARED-"ld"};; | |||
UNIX_System_V\ 4.2.0) | |||
SFLAGS=${CFLAGS-"-KPIC -O"} | |||
CFLAGS=${CFLAGS-"-O"} | |||
LDSHARED=${LDSHARED-"cc -G"};; | |||
UNIX_SV\ 4.2MP) | |||
SFLAGS=${CFLAGS-"-Kconform_pic -O"} | |||
CFLAGS=${CFLAGS-"-O"} | |||
LDSHARED=${LDSHARED-"cc -G"};; | |||
# send working options for other systems to support@gzip.org | |||
*) SFLAGS=${CFLAGS-"-O"} | |||
CFLAGS=${CFLAGS-"-O"} | |||
LDSHARED=${LDSHARED-"cc -shared"};; | |||
esac | |||
fi | |||
if test $shared -eq 1; then | |||
echo Checking for shared library support... | |||
# we must test in two steps (cc then ld), required at least on SunOS 4.x | |||
if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" && | |||
test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then | |||
CFLAGS="$SFLAGS" | |||
LIBS="$SHAREDLIB.$VER" | |||
echo Building shared library $SHAREDLIB.$VER with $CC. | |||
elif test -z "$old_cc" -a -z "$old_cflags"; then | |||
echo No shared library suppport. | |||
shared=0; | |||
else | |||
echo 'No shared library suppport; try without defining CC and CFLAGS' | |||
shared=0; | |||
fi | |||
fi | |||
if test $shared -eq 0; then | |||
LDSHARED="$CC" | |||
echo Building static library $LIBS version $VER with $CC. | |||
fi | |||
cat > $test.c <<EOF | |||
#include <unistd.h> | |||
int main() { return 0; } | |||
EOF | |||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then | |||
CFLAGS="$CFLAGS -DHAVE_UNISTD_H" | |||
echo "Checking for unistd.h... Yes." | |||
else | |||
echo "Checking for unistd.h... No." | |||
fi | |||
cat > $test.c <<EOF | |||
#include <errno.h> | |||
int main() { return 0; } | |||
EOF | |||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then | |||
echo "Checking for errno.h... Yes." | |||
else | |||
echo "Checking for errno.h... No." | |||
CFLAGS="$CFLAGS -DNO_ERRNO_H" | |||
fi | |||
cat > $test.c <<EOF | |||
#include <sys/types.h> | |||
#include <sys/mman.h> | |||
#include <sys/stat.h> | |||
caddr_t hello() { | |||
return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0); | |||
} | |||
EOF | |||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then | |||
CFLAGS="$CFLAGS -DUSE_MMAP" | |||
echo Checking for mmap support... Yes. | |||
else | |||
echo Checking for mmap support... No. | |||
fi | |||
CPP=${CPP-"$CC -E"} | |||
case $CFLAGS in | |||
*ASMV*) | |||
if test "`nm $test.o | grep _hello`" = ""; then | |||
CPP="$CPP -DNO_UNDERLINE" | |||
echo Checking for underline in external names... No. | |||
else | |||
echo Checking for underline in external names... Yes. | |||
fi;; | |||
esac | |||
rm -f $test.[co] $test$shared_ext | |||
# udpate Makefile | |||
sed < Makefile.in " | |||
/^CC *=/s%=.*%=$CC% | |||
/^CFLAGS *=/s%=.*%=$CFLAGS% | |||
/^CPP *=/s%=.*%=$CPP% | |||
/^LDSHARED *=/s%=.*%=$LDSHARED% | |||
/^LIBS *=/s%=.*%=$LIBS% | |||
/^SHAREDLIB *=/s%=.*%=$SHAREDLIB% | |||
/^AR *=/s%=.*%=$AR% | |||
/^RANLIB *=/s%=.*%=$RANLIB% | |||
/^VER *=/s%=.*%=$VER% | |||
/^prefix *=/s%=.*%=$prefix% | |||
/^exec_prefix *=/s%=.*%=$exec_prefix% | |||
/^libdir *=/s%=.*%=$libdir% | |||
/^includedir *=/s%=.*%=$includedir% | |||
" > Makefile |
@@ -0,0 +1,30 @@ | |||
# -*- Autoconf -*- | |||
# Process this file with autoconf to produce a configure script. | |||
AC_PREREQ([2.61]) | |||
AC_INIT([zlib], [1.1.4]) | |||
AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2]) | |||
# Checks for programs. | |||
AC_PROG_CC | |||
AC_PROG_LIBTOOL | |||
# Checks for libraries. | |||
# Checks for header files. | |||
AC_HEADER_STDC | |||
AC_CHECK_HEADERS([fcntl.h malloc.h stddef.h stdlib.h string.h unistd.h errno.h]) | |||
# Checks for typedefs, structures, and compiler characteristics. | |||
AC_C_CONST | |||
AC_TYPE_OFF_T | |||
# Checks for library functions. | |||
AC_FUNC_ERROR_AT_LINE | |||
AC_FUNC_MMAP | |||
AC_FUNC_VPRINTF | |||
AC_CHECK_FUNCS([munmap strerror]) | |||
AC_CONFIG_HEADERS([config.h]) | |||
AC_CONFIG_FILES([Makefile]) | |||
AC_OUTPUT |
@@ -15,6 +15,10 @@ | |||
/* @(#) $Id: minigzip.c,v 1.1 2004/10/08 09:44:26 const_k Exp $ */ | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include <stdio.h> | |||
#include "zlib.h" | |||
@@ -25,7 +29,7 @@ | |||
extern void exit OF((int)); | |||
#endif | |||
#ifdef USE_MMAP | |||
#ifdef HAVE_MMAP | |||
# include <sys/types.h> | |||
# include <sys/mman.h> | |||
# include <sys/stat.h> | |||
@@ -75,7 +79,7 @@ char *prog; | |||
void error OF((const char *msg)); | |||
void gz_compress OF((FILE *in, gzFile out)); | |||
#ifdef USE_MMAP | |||
#ifdef HAVE_MMAP | |||
int gz_compress_mmap OF((FILE *in, gzFile out)); | |||
#endif | |||
void gz_uncompress OF((gzFile in, FILE *out)); | |||
@@ -105,7 +109,7 @@ void gz_compress(in, out) | |||
int len; | |||
int err; | |||
#ifdef USE_MMAP | |||
#ifdef HAVE_MMAP | |||
/* Try first compressing with mmap. If mmap fails (minigzip used in a | |||
* pipe), use the normal fread loop. | |||
*/ | |||
@@ -125,7 +129,7 @@ void gz_compress(in, out) | |||
if (gzclose(out) != Z_OK) error("failed gzclose"); | |||
} | |||
#ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */ | |||
#ifdef HAVE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */ | |||
/* Try compressing the input file at once using mmap. Return Z_OK if | |||
* if success, Z_ERRNO otherwise. | |||
@@ -160,7 +164,7 @@ int gz_compress_mmap(in, out) | |||
if (gzclose(out) != Z_OK) error("failed gzclose"); | |||
return Z_OK; | |||
} | |||
#endif /* USE_MMAP */ | |||
#endif /* HAVE_MMAP */ | |||
/* =========================================================================== | |||
* Uncompress input to output then close both files. |
@@ -8,6 +8,10 @@ | |||
#ifndef _ZCONF_H | |||
#define _ZCONF_H | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
/* | |||
* If you *really* need a unique prefix for all types and library functions, | |||
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. |
@@ -13,6 +13,10 @@ | |||
#ifndef _Z_UTIL_H | |||
#define _Z_UTIL_H | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include "zlib.h" | |||
#ifdef STDC | |||
@@ -20,10 +24,10 @@ | |||
# include <string.h> | |||
# include <stdlib.h> | |||
#endif | |||
#ifdef NO_ERRNO_H | |||
extern int errno; | |||
#else | |||
#ifdef HAVE_ERRNO_H | |||
# include <errno.h> | |||
#else | |||
extern int errno; | |||
#endif | |||
#ifndef local |
@@ -0,0 +1,158 @@ | |||
dnl Process this file with autoconf to produce a configure script. | |||
AC_INIT([tightvnc], [1.5.0a1], [http://www.tightvnc.com/bugs.html]) | |||
AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2]) | |||
dnl Checks for programs. | |||
dnl AM_GNU_GETTEXT([external]) | |||
dnl AM_GNU_GETTEXT_VERSION([0.17]) | |||
AC_PROG_CC | |||
AC_PROG_CXX | |||
AC_PROG_LIBTOOL | |||
AC_PROG_MAKE_SET | |||
AC_LANG([C++]) | |||
saved_cflags="$CFLAGS" | |||
saved_cxxflags="$CXXFLAGS" | |||
CFLAGS="$CFLAGS -Wall -Wextra" | |||
CXXFLAGS="$CXXFLAGS -Wall -Wextra" | |||
AC_MSG_CHECKING([if compiler supports -Wall and -Werror flags]) | |||
AC_COMPILE_IFELSE( | |||
[AC_LANG_PROGRAM([])], | |||
[AC_MSG_RESULT([yes])], | |||
[AC_MSG_RESULT([no]) | |||
CFLAGS="$saved_cflags" | |||
CXXFLAGS="$saved_cxxflags"]) | |||
AC_SUBST([COMMON_DIR], ['$(top_srcdir)/common']) | |||
AC_SUBST([UNIX_DIR], ['$(top_srcdir)/unix']) | |||
AC_SUBST([TX_DIR], ['$(UNIX_DIR)/tx']) | |||
AC_SUBST([INTL_DIR], ['$(UNIX_DIR)/intl']) | |||
AC_SUBST([RFB_LIBS], ['$(COMMON_DIR)/rfb/librfb.la']) | |||
AC_SUBST([RDR_LIBS], ['$(COMMON_DIR)/rdr/librdr.la']) | |||
AC_SUBST([NETWORK_LIBS], ['$(COMMON_DIR)/network/libnetwork.la']) | |||
AC_SUBST([TX_LIBS], ['$(TX_DIR)/libtx.la']) | |||
AC_CONFIG_HEADERS([config.h]) | |||
dnl XXX this statement really bother me | |||
case "`(uname -sr) 2>/dev/null`" in | |||
"SunOS 5"*) | |||
SOLARIS=yes | |||
USE_MITSHM=yes | |||
USE_SUN_OVL=yes | |||
;; | |||
"Linux"*) | |||
LINUX=yes | |||
USE_MITSHM=yes | |||
;; | |||
"IRIX 6"*) | |||
X_LIBS="-L/usr/lib32" | |||
USE_MITSHM=yes | |||
USE_READDISPLAY=yes | |||
;; | |||
"LynxOS 2"*) | |||
SJLJ_EXCEPTIONS=yes | |||
;; | |||
esac | |||
dnl FIXME: Check for MIT-SHM properly, add a corresponding --with option. | |||
if test "$USE_MITSHM" = yes; then | |||
MITSHM_DEFINE="-DHAVE_MITSHM" | |||
fi | |||
AC_SUBST(MITSHM_DEFINE) | |||
if test "$GCC" = yes; then | |||
if test "$SOLARIS" = yes; then | |||
CFLAGS="$CFLAGS -Wno-unknown-pragmas -Wno-implicit-int" | |||
fi | |||
fi | |||
if test "$GXX" = yes; then | |||
if test "$SOLARIS" = yes; then | |||
CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas -fpermissive" | |||
fi | |||
if test "$SJLJ_EXCEPTIONS" = yes; then | |||
CXXFLAGS="$CXXFLAGS -fsjlj-exceptions" | |||
fi | |||
fi | |||
AC_PATH_XTRA | |||
AC_ARG_ENABLE([vncconfig], | |||
AS_HELP_STRING([--enable-vncconfig], | |||
[build the vncconfig utility(default yes)]), | |||
[BUILD_VNCCONFIG="$enableval"], [BUILD_VNCCONFIG="yes"]) | |||
AM_CONDITIONAL([VNCCONFIG], [test "x$BUILD_VNCCONFIG" = xyes]) | |||
dnl Check for the XTest X11 extension library. | |||
AC_SEARCH_LIBS([XTestGrabControl], [Xtst], | |||
[AC_DEFINE([HAVE_XTEST], [], [Define if you have Xtst library])], | |||
[AC_MSG_WARN([No XTest extension, building x0vncserver view-only])]) | |||
dnl Support for READDISPLAY (Irix) and SUN_OVL (Solaris) extensions | |||
dnl FIXME: Implement corresponding --with options. | |||
if test "$USE_READDISPLAY" = yes; then | |||
AC_DEFINE([HAVE_READDISPLAY], [], [Define if you have READDISPLAY extension]) | |||
elif test "$USE_SUN_OVL" = yes; then | |||
AC_DEFINE([HAVE_SUN_OVL], [], [Define if you have SUN_OVL extension]) | |||
fi | |||
dnl Under Lynx/OS 2.3, we have to link with -lbsd to resolve | |||
dnl gethostbyname, inet_addr, htons etc. Check if it's necessary. | |||
AC_SEARCH_LIBS([gethostbyname], [c bsd]) | |||
dnl Checks for IRIX-specific Compression Library. | |||
AC_SEARCH_LIBS([clQuerySchemeFromName], [cl], | |||
[AC_DEFINE([HAVE_CL], [], [Define if you have cl library]) | |||
USE_CL=yes]) | |||
AM_CONDITIONAL([CL], [test "x$USE_CL" = xyes]) | |||
dnl Checks for IRIX-specific Digital Media libraries. | |||
AC_SEARCH_LIBS([dmICCreate], [dmedia], | |||
[AC_DEFINE([HAVE_DMEDIA], [], [Define if you have dmedia library]) | |||
USE_DMEDIA=yes]) | |||
AM_CONDITIONAL([DMEDIA], [test "x$USE_DMEDIA" = xyes]) | |||
AC_SEARCH_LIBS([inflate], [z], [], | |||
[AC_CONFIG_SUBDIRS([common/zlib]) | |||
ZLIB_LIBS='$(COMMON_DIR)/zlib/libz.la' | |||
VNC_ZLIB=yes]) | |||
AM_CONDITIONAL([ZLIB], [test "x$VNC_ZLIB" = xyes]) | |||
AC_SUBST(ZLIB_LIBS) | |||
AC_SEARCH_LIBS([jpeg_destroy_compress], [jpeg], [], | |||
dnl [AC_CONFIG_SUBDIRS([common/jpeg]) | |||
[JPEG_LIBS='$(COMMON_DIR)/jpeg/libjpeg.a' | |||
VNC_JPEG=yes]) | |||
AM_CONDITIONAL([JPEG], [test "x$VNC_JPEG" = xyes]) | |||
AC_SUBST(JPEG_LIBS) | |||
AC_CHECK_FUNCS_ONCE([vsnprintf strcasecmp strncasecmp]) | |||
AC_MSG_CHECKING([for socklen_t]) | |||
AC_COMPILE_IFELSE( | |||
[AC_LANG_PROGRAM( | |||
[[#include <sys/types.h> | |||
#include <sys/socket.h>]], | |||
[[socklen_t x; | |||
accept(0, 0, &x);]])], | |||
[AC_MSG_RESULT([yes]) | |||
AC_DEFINE([VNC_SOCKLEN_T], [socklen_t], [Define to socklen_t or int])], | |||
[AC_MSG_RESULT([using int]) | |||
AC_DEFINE([VNC_SOCKLEN_T], [int], [Define to socklen_t or int])]) | |||
AC_CONFIG_FILES([Makefile | |||
common/Makefile | |||
common/rdr/Makefile | |||
common/network/Makefile | |||
common/Xregion/Makefile | |||
common/rfb/Makefile | |||
unix/Makefile | |||
unix/tx/Makefile | |||
unix/x0vncserver/Makefile | |||
unix/vncviewer/Makefile | |||
unix/vncconfig/Makefile | |||
unix/vncpasswd/Makefile]) | |||
AC_OUTPUT |
@@ -0,0 +1,5 @@ | |||
SUBDIRS = tx x0vncserver vncviewer vncpasswd | |||
if VNCCONFIG | |||
SUBDIRS += vncconfig | |||
endif |
@@ -1,7 +0,0 @@ | |||
PACKAGE = @PACKAGE@ | |||
VERSION = @VERSION@ | |||
SUBDIRS = ../common intl tx x0vncserver vncviewer po vncpasswd @VNCCONFIG_DIR@ | |||
# followed by boilerplate.mk |
@@ -1,36 +0,0 @@ | |||
all:: | |||
@subdirs="$(SUBDIRS)"; for d in $$subdirs; do (cd $$d; $(MAKE) $@) || exit 1; done | |||
clean:: | |||
@subdirs="$(SUBDIRS)"; for d in $$subdirs; do (cd $$d; $(MAKE) $@) || exit 1; done | |||
clean:: | |||
rm -f $(program) $(library) *.o | |||
SHELL = @SHELL@ | |||
top_srcdir = @top_srcdir@ | |||
top_builddir = @top_builddir@ | |||
@SET_MAKE@ | |||
CC = @CC@ | |||
CFLAGS = @CFLAGS@ $(DIR_CFLAGS) | |||
CCLD = $(CC) | |||
CXX = @CXX@ | |||
CXXFLAGS = @CXXFLAGS@ | |||
CXXLD = $(CXX) | |||
CPPFLAGS = @CPPFLAGS@ | |||
DEFS = @DEFS@ | |||
ALL_CPPFLAGS = $(CPPFLAGS) $(DEFS) $(DIR_CPPFLAGS) | |||
LIBS = @LIBS@ | |||
LDFLAGS = @LDFLAGS@ | |||
RANLIB = @RANLIB@ | |||
AR = ar cq | |||
.SUFFIXES: | |||
.SUFFIXES: .cxx .c .o | |||
.c.o: | |||
$(CC) $(ALL_CPPFLAGS) $(CFLAGS) -o $@ -c $< | |||
.cxx.o: | |||
$(CXX) $(ALL_CPPFLAGS) $(CXXFLAGS) -o $@ -c $< |
@@ -1,3 +0,0 @@ | |||
#!/bin/sh | |||
rm -rf autom4te.cache | |||
autoreconf -i |
@@ -1,3 +0,0 @@ | |||
#!/bin/sh | |||
rm `find ../common -name "*.d" -print` | |||
rm `find . -name "*.d" -print` |
@@ -1,2 +0,0 @@ | |||
COMMON = @top_srcdir@/../common | |||
TOP = @top_srcdir@ |
@@ -1,184 +0,0 @@ | |||
dnl Process this file with autoconf to produce a configure script. | |||
AC_INIT(vncviewer/vncviewer.cxx) | |||
PACKAGE=tightvnc | |||
VERSION=1.5.0 | |||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") | |||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION") | |||
AC_SUBST(PACKAGE) | |||
AC_SUBST(VERSION) | |||
dnl Configure the common directory | |||
echo "configuring common..." | |||
(cd ../common; ./configure $*) | |||
echo "...done configuring common" | |||
dnl dirty hack to prevent use of -g in CFLAGS and CXXFLAGS | |||
ac_cv_prog_cc_g=no | |||
ac_cv_prog_cxx_g=no | |||
dnl Checks for programs. | |||
AC_PROG_CC | |||
AC_PROG_CXX | |||
AC_PROG_RANLIB | |||
AC_PROG_MAKE_SET | |||
AC_LANG_CPLUSPLUS | |||
case "`(uname -sr) 2>/dev/null`" in | |||
"SunOS 5"*) | |||
SOLARIS=yes | |||
USE_MITSHM=yes | |||
USE_SUN_OVL=yes | |||
;; | |||
"Linux"*) | |||
LINUX=yes | |||
USE_MITSHM=yes | |||
;; | |||
"IRIX 6"*) | |||
X_LIBS="-L/usr/lib32" | |||
USE_MITSHM=yes | |||
USE_READDISPLAY=yes | |||
;; | |||
"LynxOS 2"*) | |||
SJLJ_EXCEPTIONS=yes | |||
;; | |||
esac | |||
dnl FIXME: Check for MIT-SHM properly, add a corresponding --with option. | |||
if test "$USE_MITSHM" = yes; then | |||
MITSHM_DEFINE="-DHAVE_MITSHM" | |||
fi | |||
AC_SUBST(MITSHM_DEFINE) | |||
if test "$GCC" = yes; then | |||
CFLAGS="$CFLAGS -Wall" | |||
if test "$SOLARIS" = yes; then | |||
CFLAGS="$CFLAGS -Wno-unknown-pragmas -Wno-implicit-int" | |||
fi | |||
fi | |||
if test "$GXX" = yes; then | |||
CXXFLAGS="$CXXFLAGS -Wall" | |||
if test "$SOLARIS" = yes; then | |||
CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas -fpermissive" | |||
fi | |||
if test "$SJLJ_EXCEPTIONS" = yes; then | |||
CXXFLAGS="$CXXFLAGS -fsjlj-exceptions" | |||
fi | |||
fi | |||
dnl Check for IRIX-specific Compression Library. | |||
AC_CHECK_LIB(cl, clQuerySchemeFromName, | |||
[AC_DEFINE(HAVE_CL) | |||
CL_LIB=-lcl]) | |||
AC_SUBST(CL_LIB) | |||
dnl Check for IRIX-specific Digital Media libraries. | |||
AC_CHECK_LIB(dmedia, dmICCreate, | |||
[AC_DEFINE(HAVE_DMEDIA) | |||
DMEDIA_LIB=-ldmedia]) | |||
AC_SUBST(DMEDIA_LIB) | |||
AC_PATH_XTRA | |||
AC_ARG_WITH(installed-zlib, | |||
[ --with-installed-zlib use the version of zlib which is installed on the | |||
system instead of the one distributed with VNC]) | |||
if test "$with_installed_zlib" = yes; then | |||
echo "using installed zlib" | |||
ZLIB_LIB=-lz | |||
else | |||
ZLIB_DIR='$(COMMON)/zlib' | |||
ZLIB_INCLUDE='-I$(COMMON)/zlib' | |||
ZLIB_LIB='$(COMMON)/zlib/libz.a' | |||
fi | |||
AC_SUBST(ZLIB_DIR) | |||
AC_SUBST(ZLIB_INCLUDE) | |||
AC_SUBST(ZLIB_LIB) | |||
AC_ARG_WITH(installed-jpeg, | |||
[ --with-installed-jpeg use the version of jpeg which is installed on the | |||
system instead of the one distributed with VNC]) | |||
if test "$with_installed_jpeg" = yes; then | |||
echo "using installed jpeg" | |||
JPEG_LIB=-ljpeg | |||
else | |||
JPEG_DIR='$(COMMON)/jpeg/build' | |||
JPEG_INCLUDE='-I$(COMMON)/jpeg' | |||
JPEG_LIB='$(COMMON)/jpeg/build/libjpeg.a' | |||
fi | |||
AC_SUBST(JPEG_DIR) | |||
AC_SUBST(JPEG_INCLUDE) | |||
AC_SUBST(JPEG_LIB) | |||
AC_ARG_ENABLE(vncconfig, | |||
[ --enable-vncconfig build the vncconfig utility (assumed by default), | |||
use --disable-vncconfig to skip building vncconfig]) | |||
if test "$enable_vncconfig" = no; then | |||
echo "vncconfig utility will not be built" | |||
VNCCONFIG_DIR= | |||
else | |||
VNCCONFIG_DIR='vncconfig' | |||
fi | |||
AC_SUBST(VNCCONFIG_DIR) | |||
dnl Check for the XTest X11 extension library. | |||
AC_CHECK_LIB(Xtst,XTestGrabControl,USE_XTEST=yes,USE_XTEST=, | |||
["$X_LIBS" -lXext -lX11]) | |||
if test "$USE_XTEST" = yes; then | |||
XTEST_DEFINE='-DHAVE_XTEST' | |||
XTEST_LIB=-lXtst | |||
else | |||
echo Warning: No XTest extension, building x0vncserver view-only | |||
XTEST_DEFINE= | |||
XTEST_LIB= | |||
fi | |||
AC_SUBST(XTEST_DEFINE) | |||
AC_SUBST(XTEST_LIB) | |||
dnl Support for READDISPLAY (Irix) and SUN_OVL (Solaris) extensions | |||
dnl FIXME: Implement corresponding --with options. | |||
if test "$USE_READDISPLAY" = yes; then | |||
READDISPLAY_DEFINE='-DHAVE_READDISPLAY' | |||
elif test "$USE_SUN_OVL" = yes; then | |||
READDISPLAY_DEFINE='-DHAVE_SUN_OVL' | |||
else | |||
READDISPLAY_DEFINE= | |||
fi | |||
AC_SUBST(READDISPLAY_DEFINE) | |||
dnl Under Lynx/OS 2.3, we have to link with -lbsd to resolve | |||
dnl gethostbyname, inet_addr, htons etc. Check if it's necessary. | |||
dnl NOTE: Did not want to use AC_SEARCH_LIBS which would add | |||
dnl -lbsd to LIBS. We set INET_LIB instead. | |||
AC_LANG_SAVE | |||
AC_LANG_C | |||
AC_CHECK_FUNC(gethostbyname,INET_LIB_REQ=,INET_LIB_REQ=yes) | |||
if test "$INET_LIB_REQ" = yes; then | |||
AC_CHECK_LIB(bsd,gethostbyname,INET_LIB=-lbsd,INET_LIB=) | |||
fi | |||
AC_LANG_RESTORE | |||
AC_SUBST(INET_LIB) | |||
AM_GNU_GETTEXT | |||
BOILERPLATE=boilerplate.mk | |||
if (sh -c "make --version" 2>/dev/null | grep GNU 2>&1 >/dev/null); then | |||
if sh -c "vncmkdepend" >/dev/null 2>&1; then | |||
BOILERPLATE="$BOILERPLATE:depend.mk" | |||
fi | |||
fi | |||
AC_OUTPUT(Makefile:common.mk:Makefile.in:$BOILERPLATE \ | |||
tx/Makefile:common.mk:tx/Makefile.in:$BOILERPLATE \ | |||
x0vncserver/Makefile:common.mk:x0vncserver/Makefile.in:$BOILERPLATE \ | |||
vncviewer/Makefile:common.mk:vncviewer/Makefile.in:$BOILERPLATE \ | |||
vncconfig/Makefile:common.mk:vncconfig/Makefile.in:$BOILERPLATE \ | |||
vncpasswd/Makefile:common.mk:vncpasswd/Makefile.in:$BOILERPLATE \ | |||
intl/Makefile \ | |||
po/Makefile.in \ | |||
) |
@@ -1,76 +0,0 @@ | |||
# | |||
# C / C++ header dependency stuff | |||
# | |||
# Needs GNU make and vncmkdepend, a hacked version of makedepend | |||
.SUFFIXES: .d | |||
CMAKEDEPEND = vncmkdepend | |||
CXXMAKEDEPEND = vncmkdepend | |||
# | |||
# The recommended method of doing dependency analysis in the GNU make manual | |||
# turns out to be painfully slow. This method is similar but it's | |||
# substantially faster and retains the desirable property that the user doesn't | |||
# need to manually invoke a "make depend" step. | |||
# | |||
# As with the method described in the manual, we generate a separate dependency | |||
# (.d) file for each source file. The .d file records the header files that | |||
# each C or C++ source file includes. Any source file recorded in SRCS or | |||
# CXXSRCS will cause us to try and include the corresponding .d file and GNU | |||
# make then treats each .d file as a target to be remade. | |||
# | |||
# Unlike the manual's method, the rule we provide for making the .d file is | |||
# actually a fake. All it does is record in a temporary file that the .d file | |||
# needs to be remade. But as well as all the .d files, we also try to include | |||
# a file called "depend.phony". This file never exists, but it causes GNU make | |||
# to try and make the target "depend.phony". The rule for depend.phony then | |||
# looks at the temporary files generated by the .d rules and then invokes the | |||
# "omkdepend" program on all of the source files in one go. | |||
# | |||
# | |||
# We use simple assignment here to remove any of the depend.tmp files | |||
# at the time make parses this bit. | |||
# | |||
dummyvariable := $(shell $(RM) cdepend.tmp cxxdepend.tmp) | |||
# | |||
# Now the "fake" rules for generating .d files. | |||
# | |||
%.d: %.c | |||
@echo "$<" >> cdepend.tmp | |||
%.d: %.cxx | |||
@echo "$<" >> cxxdepend.tmp | |||
# | |||
# The depend.phony rule which actually runs omkdepend. | |||
# | |||
depend.phony: | |||
@if [ -f cdepend.tmp ]; then \ | |||
echo $(CMAKEDEPEND) $(ALL_CPPFLAGS) `cat cdepend.tmp`; \ | |||
$(CMAKEDEPEND) $(ALL_CPPFLAGS) `cat cdepend.tmp`; \ | |||
rm -f cdepend.tmp; \ | |||
fi; \ | |||
if [ -f cxxdepend.tmp ]; then \ | |||
echo $(CXXMAKEDEPEND) $(ALL_CPPFLAGS) `cat cxxdepend.tmp`; \ | |||
$(CXXMAKEDEPEND) $(ALL_CPPFLAGS) `cat cxxdepend.tmp`; \ | |||
rm -f cxxdepend.tmp; \ | |||
fi | |||
# | |||
# Now include the .d files and the "depend.phony" file which never exists. | |||
# For some reason GNU make evaluates the targets in reverse order, so we need | |||
# to include depend.phony first. The "-" tells make not to complain that it | |||
# can't find the file. | |||
# | |||
-include depend.phony | |||
ifdef SRCS | |||
-include $(patsubst %.c,%.d,$(patsubst %.cxx,%.d,$(SRCS))) | |||
endif |
@@ -1,322 +0,0 @@ | |||
#!/bin/sh | |||
# install - install a program, script, or datafile | |||
scriptversion=2004-09-10.20 | |||
# This originates from X11R5 (mit/util/scripts/install.sh), which was | |||
# later released in X11R6 (xc/config/util/install.sh) with the | |||
# following copyright and license. | |||
# | |||
# Copyright (C) 1994 X Consortium | |||
# | |||
# 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, 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 | |||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | |||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- | |||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
# | |||
# Except as contained in this notice, the name of the X Consortium shall not | |||
# be used in advertising or otherwise to promote the sale, use or other deal- | |||
# ings in this Software without prior written authorization from the X Consor- | |||
# tium. | |||
# | |||
# | |||
# FSF changes to this file are in the public domain. | |||
# | |||
# 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. | |||
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}" | |||
chmodcmd="$chmodprog 0755" | |||
chowncmd= | |||
chgrpcmd= | |||
stripcmd= | |||
rmcmd="$rmprog -f" | |||
mvcmd="$mvprog" | |||
src= | |||
dst= | |||
dir_arg= | |||
dstarg= | |||
no_target_directory= | |||
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE | |||
or: $0 [OPTION]... SRCFILES... DIRECTORY | |||
or: $0 [OPTION]... -t DIRECTORY SRCFILES... | |||
or: $0 [OPTION]... -d DIRECTORIES... | |||
In the 1st form, copy SRCFILE to DSTFILE. | |||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. | |||
In the 4th, create DIRECTORIES. | |||
Options: | |||
-c (ignored) | |||
-d create directories instead of installing files. | |||
-g GROUP $chgrpprog installed files to GROUP. | |||
-m MODE $chmodprog installed files to MODE. | |||
-o USER $chownprog installed files to USER. | |||
-s $stripprog installed files. | |||
-t DIRECTORY install into DIRECTORY. | |||
-T report an error if DSTFILE is a directory. | |||
--help display this help and exit. | |||
--version display version info and exit. | |||
Environment variables override the default commands: | |||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG | |||
" | |||
while test -n "$1"; do | |||
case $1 in | |||
-c) shift | |||
continue;; | |||
-d) dir_arg=true | |||
shift | |||
continue;; | |||
-g) chgrpcmd="$chgrpprog $2" | |||
shift | |||
shift | |||
continue;; | |||
--help) echo "$usage"; exit 0;; | |||
-m) chmodcmd="$chmodprog $2" | |||
shift | |||
shift | |||
continue;; | |||
-o) chowncmd="$chownprog $2" | |||
shift | |||
shift | |||
continue;; | |||
-s) stripcmd=$stripprog | |||
shift | |||
continue;; | |||
-t) dstarg=$2 | |||
shift | |||
shift | |||
continue;; | |||
-T) no_target_directory=true | |||
shift | |||
continue;; | |||
--version) echo "$0 $scriptversion"; exit 0;; | |||
*) # When -d is used, all remaining arguments are directories to create. | |||
# When -t is used, the destination is already specified. | |||
test -n "$dir_arg$dstarg" && break | |||
# Otherwise, the last argument is the destination. Remove it from $@. | |||
for arg | |||
do | |||
if test -n "$dstarg"; then | |||
# $@ is not empty: it contains at least $arg. | |||
set fnord "$@" "$dstarg" | |||
shift # fnord | |||
fi | |||
shift # arg | |||
dstarg=$arg | |||
done | |||
break;; | |||
esac | |||
done | |||
if test -z "$1"; then | |||
if test -z "$dir_arg"; then | |||
echo "$0: no input file specified." >&2 | |||
exit 1 | |||
fi | |||
# It's OK to call `install-sh -d' without argument. | |||
# This can happen when creating conditional directories. | |||
exit 0 | |||
fi | |||
for src | |||
do | |||
# Protect names starting with `-'. | |||
case $src in | |||
-*) src=./$src ;; | |||
esac | |||
if test -n "$dir_arg"; then | |||
dst=$src | |||
src= | |||
if test -d "$dst"; then | |||
mkdircmd=: | |||
chmodcmd= | |||
else | |||
mkdircmd=$mkdirprog | |||
fi | |||
else | |||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command | |||
# might cause directories to be created, which would be especially bad | |||
# if $src (and thus $dsttmp) contains '*'. | |||
if test ! -f "$src" && test ! -d "$src"; then | |||
echo "$0: $src does not exist." >&2 | |||
exit 1 | |||
fi | |||
if test -z "$dstarg"; then | |||
echo "$0: no destination specified." >&2 | |||
exit 1 | |||
fi | |||
dst=$dstarg | |||
# Protect names starting with `-'. | |||
case $dst in | |||
-*) dst=./$dst ;; | |||
esac | |||
# If destination is a directory, append the input filename; won't work | |||
# if double slashes aren't ignored. | |||
if test -d "$dst"; then | |||
if test -n "$no_target_directory"; then | |||
echo "$0: $dstarg: Is a directory" >&2 | |||
exit 1 | |||
fi | |||
dst=$dst/`basename "$src"` | |||
fi | |||
fi | |||
# This sed command emulates the dirname command. | |||
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` | |||
# Make sure that the destination directory exists. | |||
# Skip lots of stat calls in the usual case. | |||
if test ! -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 test $# -ne 0 ; do | |||
pathcomp=$pathcomp$1 | |||
shift | |||
if test ! -d "$pathcomp"; then | |||
$mkdirprog "$pathcomp" | |||
# mkdir can fail with a `File exist' error in case several | |||
# install-sh are creating the directory concurrently. This | |||
# is OK. | |||
test -d "$pathcomp" || exit | |||
fi | |||
pathcomp=$pathcomp/ | |||
done | |||
fi | |||
if test -n "$dir_arg"; then | |||
$doit $mkdircmd "$dst" \ | |||
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ | |||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ | |||
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ | |||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } | |||
else | |||
dstfile=`basename "$dst"` | |||
# Make a couple of temp file names in the proper directory. | |||
dsttmp=$dstdir/_inst.$$_ | |||
rmtmp=$dstdir/_rm.$$_ | |||
# Trap to clean up those temp files at exit. | |||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 | |||
trap '(exit $?); exit' 1 2 13 15 | |||
# Copy the file name to the temp name. | |||
$doit $cpprog "$src" "$dsttmp" && | |||
# 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 $cpprog $src $dsttmp" command. | |||
# | |||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ | |||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ | |||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ | |||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && | |||
# Now rename the file to the real destination. | |||
{ $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ | |||
|| { | |||
# The rename failed, perhaps because mv can't rename something else | |||
# to itself, or perhaps because mv is so ancient that it does not | |||
# support -f. | |||
# Now remove or move aside any old file at destination location. | |||
# We try this two ways since rm can't unlink itself on some | |||
# systems and the destination file might be busy for other | |||
# reasons. In this case, the final cleanup might fail but the new | |||
# file should still install successfully. | |||
{ | |||
if test -f "$dstdir/$dstfile"; then | |||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ | |||
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ | |||
|| { | |||
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 | |||
(exit 1); exit | |||
} | |||
else | |||
: | |||
fi | |||
} && | |||
# Now rename the file to the real destination. | |||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile" | |||
} | |||
} | |||
fi || { (exit 1); exit; } | |||
done | |||
# The final little trick to "correctly" pass the exit status to the exit trap. | |||
{ | |||
(exit 0); exit | |||
} | |||
# Local variables: | |||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||
# time-stamp-start: "scriptversion=" | |||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||
# time-stamp-end: "$" | |||
# End: |
@@ -1,111 +0,0 @@ | |||
#! /bin/sh | |||
# mkinstalldirs --- make directory hierarchy | |||
# Author: Noah Friedman <friedman@prep.ai.mit.edu> | |||
# Created: 1993-05-16 | |||
# Public domain | |||
errstatus=0 | |||
dirmode="" | |||
usage="\ | |||
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." | |||
# process command line arguments | |||
while test $# -gt 0 ; do | |||
case $1 in | |||
-h | --help | --h*) # -h for help | |||
echo "$usage" 1>&2 | |||
exit 0 | |||
;; | |||
-m) # -m PERM arg | |||
shift | |||
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } | |||
dirmode=$1 | |||
shift | |||
;; | |||
--) # stop option processing | |||
shift | |||
break | |||
;; | |||
-*) # unknown option | |||
echo "$usage" 1>&2 | |||
exit 1 | |||
;; | |||
*) # first non-opt arg | |||
break | |||
;; | |||
esac | |||
done | |||
for file | |||
do | |||
if test -d "$file"; then | |||
shift | |||
else | |||
break | |||
fi | |||
done | |||
case $# in | |||
0) exit 0 ;; | |||
esac | |||
case $dirmode in | |||
'') | |||
if mkdir -p -- . 2>/dev/null; then | |||
echo "mkdir -p -- $*" | |||
exec mkdir -p -- "$@" | |||
fi | |||
;; | |||
*) | |||
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then | |||
echo "mkdir -m $dirmode -p -- $*" | |||
exec mkdir -m "$dirmode" -p -- "$@" | |||
fi | |||
;; | |||
esac | |||
for file | |||
do | |||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` | |||
shift | |||
pathcomp= | |||
for d | |||
do | |||
pathcomp="$pathcomp$d" | |||
case $pathcomp in | |||
-*) pathcomp=./$pathcomp ;; | |||
esac | |||
if test ! -d "$pathcomp"; then | |||
echo "mkdir $pathcomp" | |||
mkdir "$pathcomp" || lasterr=$? | |||
if test ! -d "$pathcomp"; then | |||
errstatus=$lasterr | |||
else | |||
if test ! -z "$dirmode"; then | |||
echo "chmod $dirmode $pathcomp" | |||
lasterr="" | |||
chmod "$dirmode" "$pathcomp" || lasterr=$? | |||
if test ! -z "$lasterr"; then | |||
errstatus=$lasterr | |||
fi | |||
fi | |||
fi | |||
fi | |||
pathcomp="$pathcomp/" | |||
done | |||
done | |||
exit $errstatus | |||
# Local Variables: | |||
# mode: shell-script | |||
# sh-indentation: 2 | |||
# End: | |||
# mkinstalldirs ends here |
@@ -0,0 +1,7 @@ | |||
noinst_LTLIBRARIES = libtx.la | |||
libtx_la_SOURCES = TXButton.h TXDialog.h TXEntry.h TXCheckbox.h TXImage.cxx \ | |||
TXImage.h TXLabel.h TXMenu.cxx TXMenu.h TXMsgBox.h TXScrollbar.cxx \ | |||
TXScrollbar.h TXViewport.cxx TXViewport.h TXWindow.cxx TXWindow.h | |||
libtx_la_CPPFLAGS = -I$(COMMON_DIR) |
@@ -1,17 +0,0 @@ | |||
SRCS = TXWindow.cxx TXScrollbar.cxx TXViewport.cxx TXImage.cxx TXMenu.cxx | |||
OBJS = $(SRCS:.cxx=.o) | |||
DIR_CPPFLAGS = -I$(COMMON) @X_CFLAGS@ # X_CFLAGS are really CPPFLAGS | |||
library = libtx.a | |||
all:: $(library) | |||
$(library): $(OBJS) | |||
rm -f $(library) | |||
$(AR) $(library) $(OBJS) | |||
$(RANLIB) $(library) | |||
# followed by boilerplate.mk |
@@ -0,0 +1,9 @@ | |||
bin_PROGRAMS = vncconfig | |||
vncconfig_SOURCES = buildtime.c QueryConnectDialog.cxx QueryConnectDialog.h \ | |||
vncconfig.cxx vncExt.c vncExt.h | |||
vncconfig_CPPFLAGS = -I$(COMMON_DIR) -I$(TX_DIR) | |||
vncconfig_LDADD = $(TX_LIBS) $(RFB_LIBS) $(NETWORK_LIBS) $(RDR_LIBS) -lX11 \ | |||
-lXext |
@@ -1,24 +0,0 @@ | |||
SRCS = vncExt.c vncconfig.cxx QueryConnectDialog.cxx | |||
OBJS = vncExt.o vncconfig.o QueryConnectDialog.o | |||
program = vncconfig | |||
DEP_LIBS = $(TOP)/tx/libtx.a $(COMMON)/rfb/librfb.a \ | |||
$(COMMON)/network/libnetwork.a \ | |||
$(COMMON)/rdr/librdr.a | |||
EXTRA_LIBS = @X_PRE_LIBS@ @X_LIBS@ -lX11 -lXext @X_EXTRA_LIBS@ | |||
DIR_CPPFLAGS = -I$(COMMON) -I$(TOP)/tx @X_CFLAGS@ # X_CFLAGS are really CPPFLAGS | |||
all:: $(program) | |||
$(program): $(OBJS) buildtime.o $(DEP_LIBS) | |||
rm -f $(program) | |||
$(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) buildtime.o $(DEP_LIBS) $(LIBS) $(EXTRA_LIBS) | |||
buildtime.o: $(OBJS) $(DEP_LIBS) | |||
# followed by boilerplate.mk |
@@ -1,97 +0,0 @@ | |||
#!/bin/sh | |||
# | |||
# Copyright (C) 2002-2005 RealVNC Ltd. | |||
# | |||
# This 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 | |||
# (at your option) any later version. | |||
# | |||
# This software 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. | |||
# | |||
# You should have received a copy of the GNU General Public License | |||
# along with this software; if not, write to the Free Software | |||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | |||
# USA. | |||
# | |||
# | |||
# vncinstall - copy the VNC programs to an installation directory. | |||
# Also tries to install the manual pages somewhere sensible. | |||
# | |||
if [ $# -lt 1 -o $# -gt 3 -o ! -d "$1" ]; then | |||
echo "usage: $0 <installation-directory> [<man-page-directory>] [<module-directory>]" | |||
echo "e.g. $0 /usr/local/bin" | |||
exit 1 | |||
fi | |||
dst=$1 | |||
shift | |||
if [ $# -gt 0 ]; then | |||
mandst="$1/man1" | |||
shift | |||
if [ $# -gt 0 ]; then | |||
moduledst=$1 | |||
shift | |||
else | |||
moduledst=/usr/X11R6/lib/modules/extensions | |||
fi | |||
else | |||
if [ "`basename $dst`" = bin ]; then | |||
mandst="`dirname $dst`/man/man1" | |||
if [ ! -d "$mandst" -a "$dst" = /usr/bin ]; then | |||
mandst=/usr/share/man/man1 | |||
fi | |||
fi | |||
fi | |||
if [ "$mandst" != "" ]; then | |||
if [ ! -d "$mandst" -o ! -w "$mandst" ]; then | |||
echo "Can't install manual pages to $mandst" | |||
mandst="" | |||
fi | |||
fi | |||
for f in xc/programs/Xserver/Xvnc vncviewer/vncviewer vncpasswd/vncpasswd \ | |||
vncconfig/vncconfig vncserver x0vncserver/x0vncserver; do | |||
if [ ! -f $f ]; then | |||
echo "Couldn't find $f" | |||
else | |||
if cmp -s $f $dst/`basename $f`; then | |||
echo "`basename $f` hasn't changed" | |||
else | |||
echo "Copying $f to $dst" | |||
cp -pf $f $dst | |||
chmod 0555 $dst/`basename $f` | |||
fi | |||
if [ -f $f.man ]; then | |||
if [ "$mandst" != "" -a -d "$mandst" ]; then | |||
if cmp -s $f.man $mandst/`basename $f.1`; then | |||
echo "`basename $f.man` hasn't changed" | |||
else | |||
echo "Copying $f.man to $mandst/`basename $f.1`" | |||
cp -pf $f.man $mandst/`basename $f.1` | |||
chmod 0444 $mandst/`basename $f.1` | |||
fi | |||
fi | |||
fi | |||
fi | |||
done | |||
vncModule=xc/programs/Xserver/vnc/module/vnc.so | |||
if [ -f "$vncModule" -a -d "$moduledst" ]; then | |||
if cmp -s $vncModule $moduledst/`basename $vncModule`; then | |||
echo "`basename $vncModule` hasn't changed" | |||
else | |||
echo "Copying $vncModule to $moduledst" | |||
cp -pf $vncModule $moduledst | |||
chmod 0555 $moduledst/`basename $vncModule` | |||
fi | |||
fi |
@@ -1,4 +0,0 @@ | |||
SRCS = include.c main.c parse.c pr.c cppsetup.c ifparser.c | |||
OBJS = $(SRCS:.c=.o) | |||
vncmkdepend: $(OBJS) | |||
$(CC) $^ -o $@ |
@@ -1,39 +0,0 @@ | |||
vncmkdepend | |||
=========== | |||
This code is taken from the X11R6 makedepend sources. All I have done is: | |||
* Remove all predefined symbols, include directories and other | |||
platform-specific behaviour. Its behaviour should be the same on all | |||
platforms. All symbols and include directories must be explicitly given on | |||
the command line with -D and -I flags. | |||
* Fix processing of numbers in #if expressions. | |||
* Fix processing of -D flag. | |||
* Fix C++ comment handling. | |||
* Improve #error warnings. | |||
* Change the output so that processing <name>.<suffix> produces <name>.d | |||
The copyright on the code is: | |||
Copyright (c) 1993, 1994 X Consortium | |||
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, 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 | |||
X CONSORTIUM 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 of the X Consortium shall not be | |||
used in advertising or otherwise to promote the sale, use or other dealings | |||
in this Software without prior written authorization from the X Consortium. |
@@ -1,242 +0,0 @@ | |||
/* $XConsortium: cppsetup.c,v 1.13 94/04/17 20:10:32 gildea Exp $ */ | |||
/* | |||
Copyright (c) 1993, 1994 X Consortium | |||
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, 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 | |||
X CONSORTIUM 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 of the X Consortium shall not be | |||
used in advertising or otherwise to promote the sale, use or other dealings | |||
in this Software without prior written authorization from the X Consortium. | |||
*/ | |||
#include "def.h" | |||
#ifdef CPP | |||
/* | |||
* This file is strictly for the sake of cpy.y and yylex.c (if | |||
* you indeed have the source for cpp). | |||
*/ | |||
#define IB 1 | |||
#define SB 2 | |||
#define NB 4 | |||
#define CB 8 | |||
#define QB 16 | |||
#define WB 32 | |||
#define SALT '#' | |||
#if pdp11 | vax | ns16000 | mc68000 | ibm032 | |||
#define COFF 128 | |||
#else | |||
#define COFF 0 | |||
#endif | |||
/* | |||
* These variables used by cpy.y and yylex.c | |||
*/ | |||
extern char *outp, *inp, *newp, *pend; | |||
extern char *ptrtab; | |||
extern char fastab[]; | |||
extern char slotab[]; | |||
/* | |||
* cppsetup | |||
*/ | |||
struct filepointer *currentfile; | |||
struct inclist *currentinc; | |||
cppsetup(line, filep, inc) | |||
register char *line; | |||
register struct filepointer *filep; | |||
register struct inclist *inc; | |||
{ | |||
register char *p, savec; | |||
static boolean setupdone = FALSE; | |||
boolean value; | |||
if (!setupdone) { | |||
cpp_varsetup(); | |||
setupdone = TRUE; | |||
} | |||
currentfile = filep; | |||
currentinc = inc; | |||
inp = newp = line; | |||
for (p=newp; *p; p++) | |||
; | |||
/* | |||
* put a newline back on the end, and set up pend, etc. | |||
*/ | |||
*p++ = '\n'; | |||
savec = *p; | |||
*p = '\0'; | |||
pend = p; | |||
ptrtab = slotab+COFF; | |||
*--inp = SALT; | |||
outp=inp; | |||
value = yyparse(); | |||
*p = savec; | |||
return(value); | |||
} | |||
struct symtab *lookup(symbol) | |||
char *symbol; | |||
{ | |||
static struct symtab undefined; | |||
struct symtab *sp; | |||
sp = isdefined(symbol, currentinc, NULL); | |||
if (sp == NULL) { | |||
sp = &undefined; | |||
sp->s_value = NULL; | |||
} | |||
return (sp); | |||
} | |||
pperror(tag, x0,x1,x2,x3,x4) | |||
int tag,x0,x1,x2,x3,x4; | |||
{ | |||
warning("\"%s\", line %d: ", currentinc->i_file, currentfile->f_line); | |||
warning(x0,x1,x2,x3,x4); | |||
} | |||
yyerror(s) | |||
register char *s; | |||
{ | |||
fatalerr("Fatal error: %s\n", s); | |||
} | |||
#else /* not CPP */ | |||
#include "ifparser.h" | |||
struct _parse_data { | |||
struct filepointer *filep; | |||
struct inclist *inc; | |||
const char *line; | |||
}; | |||
static const char * | |||
_my_if_errors (ip, cp, expecting) | |||
IfParser *ip; | |||
const char *cp; | |||
const char *expecting; | |||
{ | |||
struct _parse_data *pd = (struct _parse_data *) ip->data; | |||
int lineno = pd->filep->f_line; | |||
char *filename = pd->inc->i_file; | |||
char prefix[300]; | |||
int prefixlen; | |||
int i; | |||
sprintf (prefix, "\"%s\":%d", filename, lineno); | |||
prefixlen = strlen(prefix); | |||
fprintf (stderr, "%s: %s", prefix, pd->line); | |||
i = cp - pd->line; | |||
if (i > 0 && pd->line[i-1] != '\n') { | |||
putc ('\n', stderr); | |||
} | |||
for (i += prefixlen + 3; i > 0; i--) { | |||
putc (' ', stderr); | |||
} | |||
fprintf (stderr, "^--- expecting %s\n", expecting); | |||
return NULL; | |||
} | |||
#define MAXNAMELEN 256 | |||
static struct symtab * | |||
_lookup_variable (ip, var, len) | |||
IfParser *ip; | |||
const char *var; | |||
int len; | |||
{ | |||
char tmpbuf[MAXNAMELEN + 1]; | |||
struct _parse_data *pd = (struct _parse_data *) ip->data; | |||
if (len > MAXNAMELEN) | |||
return 0; | |||
strncpy (tmpbuf, var, len); | |||
tmpbuf[len] = '\0'; | |||
return isdefined (tmpbuf, pd->inc, NULL); | |||
} | |||
static int | |||
_my_eval_defined (ip, var, len) | |||
IfParser *ip; | |||
const char *var; | |||
int len; | |||
{ | |||
if (_lookup_variable (ip, var, len)) | |||
return 1; | |||
else | |||
return 0; | |||
} | |||
#define isvarfirstletter(ccc) (isalpha(ccc) || (ccc) == '_') | |||
static int | |||
_my_eval_variable (ip, var, len) | |||
IfParser *ip; | |||
const char *var; | |||
int len; | |||
{ | |||
struct symtab *s; | |||
s = _lookup_variable (ip, var, len); | |||
if (!s) | |||
return 0; | |||
do { | |||
var = s->s_value; | |||
if (!isvarfirstletter(*var)) | |||
break; | |||
s = _lookup_variable (ip, var, strlen(var)); | |||
} while (s); | |||
return atoi(var); | |||
} | |||
cppsetup(line, filep, inc) | |||
register char *line; | |||
register struct filepointer *filep; | |||
register struct inclist *inc; | |||
{ | |||
IfParser ip; | |||
struct _parse_data pd; | |||
int val = 0; | |||
pd.filep = filep; | |||
pd.inc = inc; | |||
pd.line = line; | |||
ip.funcs.handle_error = _my_if_errors; | |||
ip.funcs.eval_defined = _my_eval_defined; | |||
ip.funcs.eval_variable = _my_eval_variable; | |||
ip.data = (char *) &pd; | |||
(void) ParseIfExpression (&ip, line, &val); | |||
if (val) | |||
return IF; | |||
else | |||
return IFFALSE; | |||
} | |||
#endif /* CPP */ | |||
@@ -1,140 +0,0 @@ | |||
/* $XConsortium: def.h,v 1.25 94/04/17 20:10:33 gildea Exp $ */ | |||
/* | |||
Copyright (c) 1993, 1994 X Consortium | |||
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, 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 | |||
X CONSORTIUM 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 of the X Consortium shall not be | |||
used in advertising or otherwise to promote the sale, use or other dealings | |||
in this Software without prior written authorization from the X Consortium. | |||
*/ | |||
#include <stdio.h> | |||
#include <ctype.h> | |||
#ifndef X_NOT_POSIX | |||
#ifndef _POSIX_SOURCE | |||
#define _POSIX_SOURCE | |||
#endif | |||
#endif | |||
#include <sys/types.h> | |||
#include <fcntl.h> | |||
#include <sys/stat.h> | |||
#define MAXDEFINES 512 | |||
#define MAXFILES 512 | |||
#define MAXDIRS 64 | |||
#define SYMTABINC 10 /* must be > 1 for define() to work right */ | |||
#define TRUE 1 | |||
#define FALSE 0 | |||
/* the following must match the directives table in main.c */ | |||
#define IF 0 | |||
#define IFDEF 1 | |||
#define IFNDEF 2 | |||
#define ELSE 3 | |||
#define ENDIF 4 | |||
#define DEFINE 5 | |||
#define UNDEF 6 | |||
#define INCLUDE 7 | |||
#define LINE 8 | |||
#define PRAGMA 9 | |||
#define ERROR 10 | |||
#define IDENT 11 | |||
#define SCCS 12 | |||
#define ELIF 13 | |||
#define EJECT 14 | |||
#define IFFALSE 15 /* pseudo value --- never matched */ | |||
#define ELIFFALSE 16 /* pseudo value --- never matched */ | |||
#define INCLUDEDOT 17 /* pseudo value --- never matched */ | |||
#define IFGUESSFALSE 18 /* pseudo value --- never matched */ | |||
#define ELIFGUESSFALSE 19 /* pseudo value --- never matched */ | |||
#ifdef DEBUG | |||
extern int _debugmask; | |||
/* | |||
* debug levels are: | |||
* | |||
* 0 show ifn*(def)*,endif | |||
* 1 trace defined/!defined | |||
* 2 show #include | |||
* 3 show #include SYMBOL | |||
* 4-6 unused | |||
*/ | |||
#define debug(level,arg) { if (_debugmask & (1 << level)) warning arg; } | |||
#else | |||
#define debug(level,arg) /**/ | |||
#endif /* DEBUG */ | |||
typedef unsigned char boolean; | |||
struct symtab { | |||
char *s_name; | |||
char *s_value; | |||
}; | |||
struct inclist { | |||
char *i_incstring; /* string from #include line */ | |||
char *i_file; /* path name of the include file */ | |||
struct inclist **i_list; /* list of files it itself includes */ | |||
int i_listlen; /* length of i_list */ | |||
struct symtab *i_defs; /* symbol table for this file */ | |||
int i_ndefs; /* current # defines */ | |||
int i_deflen; /* amount of space in table */ | |||
boolean i_defchecked; /* whether defines have been checked */ | |||
boolean i_notified; /* whether we have revealed includes */ | |||
boolean i_marked; /* whether it's in the makefile */ | |||
boolean i_searched; /* whether we have read this */ | |||
boolean i_included_sym; /* whether #include SYMBOL was found */ | |||
/* Can't use i_list if TRUE */ | |||
}; | |||
struct filepointer { | |||
char *f_p; | |||
char *f_base; | |||
char *f_end; | |||
long f_len; | |||
long f_line; | |||
}; | |||
#ifndef X_NOT_STDC_ENV | |||
#include <stdlib.h> | |||
#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ | |||
char *malloc(), *realloc(); | |||
#endif /* macII */ | |||
#else | |||
char *malloc(); | |||
char *realloc(); | |||
#endif | |||
char *copy(); | |||
char *base_name(); | |||
char *getline(); | |||
struct symtab *slookup(); | |||
struct symtab *isdefined(); | |||
struct symtab *fdefined(); | |||
struct filepointer *getfile(); | |||
struct inclist *newinclude(); | |||
struct inclist *inc_path(); | |||
#if NeedVarargsPrototypes | |||
extern fatalerr(char *, ...); | |||
extern warning(char *, ...); | |||
extern warning1(char *, ...); | |||
#endif |
@@ -1,445 +0,0 @@ | |||
/* | |||
* $XConsortium: ifparser.c,v 1.7 94/01/18 21:30:50 rws Exp $ | |||
* | |||
* Copyright 1992 Network Computing Devices, Inc. | |||
* | |||
* Permission to use, copy, modify, and distribute this software and its | |||
* documentation for any purpose and without fee is hereby granted, 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 Network Computing Devices may not be | |||
* used in advertising or publicity pertaining to distribution of the software | |||
* without specific, written prior permission. Network Computing Devices makes | |||
* no representations about the suitability of this software for any purpose. | |||
* It is provided ``as is'' without express or implied warranty. | |||
* | |||
* NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS | |||
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, | |||
* IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, | |||
* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | |||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE | |||
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | |||
* PERFORMANCE OF THIS SOFTWARE. | |||
* | |||
* Author: Jim Fulton | |||
* Network Computing Devices, Inc. | |||
* | |||
* Simple if statement processor | |||
* | |||
* This module can be used to evaluate string representations of C language | |||
* if constructs. It accepts the following grammar: | |||
* | |||
* EXPRESSION := VALUE | |||
* | VALUE BINOP EXPRESSION | |||
* | |||
* VALUE := '(' EXPRESSION ')' | |||
* | '!' VALUE | |||
* | '-' VALUE | |||
* | 'defined' '(' variable ')' | |||
* | 'defined' variable | |||
* | # variable '(' variable-list ')' | |||
* | variable | |||
* | number | |||
* | |||
* BINOP := '*' | '/' | '%' | |||
* | '+' | '-' | |||
* | '<<' | '>>' | |||
* | '<' | '>' | '<=' | '>=' | |||
* | '==' | '!=' | |||
* | '&' | '|' | |||
* | '&&' | '||' | |||
* | |||
* The normal C order of precidence is supported. | |||
* | |||
* | |||
* External Entry Points: | |||
* | |||
* ParseIfExpression parse a string for #if | |||
*/ | |||
#include "ifparser.h" | |||
#include <ctype.h> | |||
/**************************************************************************** | |||
Internal Macros and Utilities for Parser | |||
****************************************************************************/ | |||
#define DO(val) if (!(val)) return NULL | |||
#define CALLFUNC(ggg,fff) (*((ggg)->funcs.fff)) | |||
#define SKIPSPACE(ccc) while (isspace(*ccc)) ccc++ | |||
#define isvarfirstletter(ccc) (isalpha(ccc) || (ccc) == '_') | |||
static const char * | |||
parse_variable (g, cp, varp) | |||
IfParser *g; | |||
const char *cp; | |||
const char **varp; | |||
{ | |||
SKIPSPACE (cp); | |||
if (!isvarfirstletter (*cp)) | |||
return CALLFUNC(g, handle_error) (g, cp, "variable name"); | |||
*varp = cp; | |||
/* EMPTY */ | |||
for (cp++; isalnum(*cp) || *cp == '_'; cp++) ; | |||
return cp; | |||
} | |||
static const char * | |||
parse_number (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
SKIPSPACE (cp); | |||
if (!isdigit(*cp)) | |||
return CALLFUNC(g, handle_error) (g, cp, "number"); | |||
*valp = strtol(cp, &cp, 0); | |||
return cp; | |||
} | |||
static const char * | |||
parse_value (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
const char *var; | |||
*valp = 0; | |||
SKIPSPACE (cp); | |||
if (!*cp) | |||
return cp; | |||
switch (*cp) { | |||
case '(': | |||
DO (cp = ParseIfExpression (g, cp + 1, valp)); | |||
SKIPSPACE (cp); | |||
if (*cp != ')') | |||
return CALLFUNC(g, handle_error) (g, cp, ")"); | |||
return cp + 1; /* skip the right paren */ | |||
case '!': | |||
DO (cp = parse_value (g, cp + 1, valp)); | |||
*valp = !(*valp); | |||
return cp; | |||
case '-': | |||
DO (cp = parse_value (g, cp + 1, valp)); | |||
*valp = -(*valp); | |||
return cp; | |||
case '#': | |||
DO (cp = parse_variable (g, cp + 1, &var)); | |||
SKIPSPACE (cp); | |||
if (*cp != '(') | |||
return CALLFUNC(g, handle_error) (g, cp, "("); | |||
do { | |||
DO (cp = parse_variable (g, cp + 1, &var)); | |||
SKIPSPACE (cp); | |||
} while (*cp && *cp != ')'); | |||
if (*cp != ')') | |||
return CALLFUNC(g, handle_error) (g, cp, ")"); | |||
*valp = 1; /* XXX */ | |||
return cp + 1; | |||
case 'd': | |||
if (strncmp (cp, "defined", 7) == 0 && !isalnum(cp[7])) { | |||
int paren = 0; | |||
cp += 7; | |||
SKIPSPACE (cp); | |||
if (*cp == '(') { | |||
paren = 1; | |||
cp++; | |||
} | |||
DO (cp = parse_variable (g, cp, &var)); | |||
SKIPSPACE (cp); | |||
if (paren && *cp != ')') | |||
return CALLFUNC(g, handle_error) (g, cp, ")"); | |||
*valp = (*(g->funcs.eval_defined)) (g, var, cp - var); | |||
return cp + paren; /* skip the right paren */ | |||
} | |||
/* fall out */ | |||
} | |||
if (isdigit(*cp)) { | |||
DO (cp = parse_number (g, cp, valp)); | |||
} else if (!isvarfirstletter(*cp)) | |||
return CALLFUNC(g, handle_error) (g, cp, "variable or number"); | |||
else { | |||
DO (cp = parse_variable (g, cp, &var)); | |||
*valp = (*(g->funcs.eval_variable)) (g, var, cp - var); | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_product (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_value (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '*': | |||
DO (cp = parse_product (g, cp + 1, &rightval)); | |||
*valp = (*valp * rightval); | |||
break; | |||
case '/': | |||
DO (cp = parse_product (g, cp + 1, &rightval)); | |||
*valp = (*valp / rightval); | |||
break; | |||
case '%': | |||
DO (cp = parse_product (g, cp + 1, &rightval)); | |||
*valp = (*valp % rightval); | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_sum (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_product (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '+': | |||
DO (cp = parse_sum (g, cp + 1, &rightval)); | |||
*valp = (*valp + rightval); | |||
break; | |||
case '-': | |||
DO (cp = parse_sum (g, cp + 1, &rightval)); | |||
*valp = (*valp - rightval); | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_shift (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_sum (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '<': | |||
if (cp[1] == '<') { | |||
DO (cp = parse_shift (g, cp + 2, &rightval)); | |||
*valp = (*valp << rightval); | |||
} | |||
break; | |||
case '>': | |||
if (cp[1] == '>') { | |||
DO (cp = parse_shift (g, cp + 2, &rightval)); | |||
*valp = (*valp >> rightval); | |||
} | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_inequality (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_shift (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '<': | |||
if (cp[1] == '=') { | |||
DO (cp = parse_inequality (g, cp + 2, &rightval)); | |||
*valp = (*valp <= rightval); | |||
} else { | |||
DO (cp = parse_inequality (g, cp + 1, &rightval)); | |||
*valp = (*valp < rightval); | |||
} | |||
break; | |||
case '>': | |||
if (cp[1] == '=') { | |||
DO (cp = parse_inequality (g, cp + 2, &rightval)); | |||
*valp = (*valp >= rightval); | |||
} else { | |||
DO (cp = parse_inequality (g, cp + 1, &rightval)); | |||
*valp = (*valp > rightval); | |||
} | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_equality (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_inequality (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '=': | |||
if (cp[1] == '=') | |||
cp++; | |||
DO (cp = parse_equality (g, cp + 1, &rightval)); | |||
*valp = (*valp == rightval); | |||
break; | |||
case '!': | |||
if (cp[1] != '=') | |||
break; | |||
DO (cp = parse_equality (g, cp + 2, &rightval)); | |||
*valp = (*valp != rightval); | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_band (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_equality (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '&': | |||
if (cp[1] != '&') { | |||
DO (cp = parse_band (g, cp + 1, &rightval)); | |||
*valp = (*valp & rightval); | |||
} | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_bor (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_band (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '|': | |||
if (cp[1] != '|') { | |||
DO (cp = parse_bor (g, cp + 1, &rightval)); | |||
*valp = (*valp | rightval); | |||
} | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_land (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_bor (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '&': | |||
if (cp[1] != '&') | |||
return CALLFUNC(g, handle_error) (g, cp, "&&"); | |||
DO (cp = parse_land (g, cp + 2, &rightval)); | |||
*valp = (*valp && rightval); | |||
break; | |||
} | |||
return cp; | |||
} | |||
static const char * | |||
parse_lor (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
int rightval; | |||
DO (cp = parse_land (g, cp, valp)); | |||
SKIPSPACE (cp); | |||
switch (*cp) { | |||
case '|': | |||
if (cp[1] != '|') | |||
return CALLFUNC(g, handle_error) (g, cp, "||"); | |||
DO (cp = parse_lor (g, cp + 2, &rightval)); | |||
*valp = (*valp || rightval); | |||
break; | |||
} | |||
return cp; | |||
} | |||
/**************************************************************************** | |||
External Entry Points | |||
****************************************************************************/ | |||
const char * | |||
ParseIfExpression (g, cp, valp) | |||
IfParser *g; | |||
const char *cp; | |||
int *valp; | |||
{ | |||
return parse_lor (g, cp, valp); | |||
} | |||
@@ -1,76 +0,0 @@ | |||
/* | |||
* $XConsortium: ifparser.h,v 1.1 92/08/22 13:05:39 rws Exp $ | |||
* | |||
* Copyright 1992 Network Computing Devices, Inc. | |||
* | |||
* Permission to use, copy, modify, and distribute this software and its | |||
* documentation for any purpose and without fee is hereby granted, 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 Network Computing Devices may not be | |||
* used in advertising or publicity pertaining to distribution of the software | |||
* without specific, written prior permission. Network Computing Devices makes | |||
* no representations about the suitability of this software for any purpose. | |||
* It is provided ``as is'' without express or implied warranty. | |||
* | |||
* NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS | |||
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, | |||
* IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, | |||
* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | |||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE | |||
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | |||
* PERFORMANCE OF THIS SOFTWARE. | |||
* | |||
* Author: Jim Fulton | |||
* Network Computing Devices, Inc. | |||
* | |||
* Simple if statement processor | |||
* | |||
* This module can be used to evaluate string representations of C language | |||
* if constructs. It accepts the following grammar: | |||
* | |||
* EXPRESSION := VALUE | |||
* | VALUE BINOP EXPRESSION | |||
* | |||
* VALUE := '(' EXPRESSION ')' | |||
* | '!' VALUE | |||
* | '-' VALUE | |||
* | 'defined' '(' variable ')' | |||
* | variable | |||
* | number | |||
* | |||
* BINOP := '*' | '/' | '%' | |||
* | '+' | '-' | |||
* | '<<' | '>>' | |||
* | '<' | '>' | '<=' | '>=' | |||
* | '==' | '!=' | |||
* | '&' | '|' | |||
* | '&&' | '||' | |||
* | |||
* The normal C order of precidence is supported. | |||
* | |||
* | |||
* External Entry Points: | |||
* | |||
* ParseIfExpression parse a string for #if | |||
*/ | |||
#include <stdio.h> | |||
#define const /**/ | |||
typedef int Bool; | |||
#define False 0 | |||
#define True 1 | |||
typedef struct _if_parser { | |||
struct { /* functions */ | |||
char *(*handle_error) (/* struct _if_parser *, const char *, | |||
const char * */); | |||
int (*eval_variable) (/* struct _if_parser *, const char *, int */); | |||
int (*eval_defined) (/* struct _if_parser *, const char *, int */); | |||
} funcs; | |||
char *data; | |||
} IfParser; | |||
char *ParseIfExpression (/* IfParser *, const char *, int * */); | |||
@@ -1,312 +0,0 @@ | |||
/* $XConsortium: include.c,v 1.17 94/12/05 19:33:08 gildea Exp $ */ | |||
/* | |||
Copyright (c) 1993, 1994 X Consortium | |||
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, 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 | |||
X CONSORTIUM 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 of the X Consortium shall not be | |||
used in advertising or otherwise to promote the sale, use or other dealings | |||
in this Software without prior written authorization from the X Consortium. | |||
*/ | |||
#include "def.h" | |||
extern struct inclist inclist[ MAXFILES ], | |||
*inclistp; | |||
extern char *includedirs[ ]; | |||
extern char *notdotdot[ ]; | |||
extern boolean show_where_not; | |||
extern boolean warn_multiple; | |||
struct inclist *inc_path(file, include, dot) | |||
register char *file, | |||
*include; | |||
boolean dot; | |||
{ | |||
static char path[ BUFSIZ ]; | |||
register char **pp, *p; | |||
register struct inclist *ip; | |||
struct stat st; | |||
boolean found = FALSE; | |||
/* | |||
* Check all previously found include files for a path that | |||
* has already been expanded. | |||
*/ | |||
for (ip = inclist; ip->i_file; ip++) | |||
if ((strcmp(ip->i_incstring, include) == 0) && !ip->i_included_sym) | |||
{ | |||
found = TRUE; | |||
break; | |||
} | |||
/* | |||
* If the path was surrounded by "" or is an absolute path, | |||
* then check the exact path provided. | |||
*/ | |||
if (!found && (dot || *include == '/')) { | |||
if (stat(include, &st) == 0) { | |||
ip = newinclude(include, include); | |||
found = TRUE; | |||
} | |||
else if (show_where_not) | |||
warning1("\tnot in %s\n", include); | |||
} | |||
/* | |||
* See if this include file is in the directory of the | |||
* file being compiled. | |||
*/ | |||
if (!found) { | |||
for (p=file+strlen(file); p>file; p--) | |||
if (*p == '/') | |||
break; | |||
if (p == file) | |||
strcpy(path, include); | |||
else { | |||
strncpy(path, file, (p-file) + 1); | |||
path[ (p-file) + 1 ] = '\0'; | |||
strcpy(path + (p-file) + 1, include); | |||
} | |||
remove_dotdot(path); | |||
if (stat(path, &st) == 0) { | |||
ip = newinclude(path, include); | |||
found = TRUE; | |||
} | |||
else if (show_where_not) | |||
warning1("\tnot in %s\n", path); | |||
} | |||
/* | |||
* Check the include directories specified. (standard include dir | |||
* should be at the end.) | |||
*/ | |||
if (!found) | |||
for (pp = includedirs; *pp; pp++) { | |||
#ifdef WIN32 | |||
sprintf(path, "%s\\%s", *pp, include); | |||
#else | |||
sprintf(path, "%s/%s", *pp, include); | |||
#endif | |||
remove_dotdot(path); | |||
if (stat(path, &st) == 0) { | |||
ip = newinclude(path, include); | |||
found = TRUE; | |||
break; | |||
} | |||
else if (show_where_not) | |||
warning1("\tnot in %s\n", path); | |||
} | |||
if (!found) | |||
ip = NULL; | |||
return(ip); | |||
} | |||
/* | |||
* Occasionally, pathnames are created that look like .../x/../y | |||
* Any of the 'x/..' sequences within the name can be eliminated. | |||
* (but only if 'x' is not a symbolic link!!) | |||
*/ | |||
remove_dotdot(path) | |||
char *path; | |||
{ | |||
register char *end, *from, *to, **cp; | |||
char *components[ MAXFILES ], | |||
newpath[ BUFSIZ ]; | |||
boolean component_copied; | |||
/* | |||
* slice path up into components. | |||
*/ | |||
to = newpath; | |||
if (*path == '/') | |||
*to++ = '/'; | |||
*to = '\0'; | |||
cp = components; | |||
for (from=end=path; *end; end++) | |||
if (*end == '/') { | |||
while (*end == '/') | |||
*end++ = '\0'; | |||
if (*from) | |||
*cp++ = from; | |||
from = end; | |||
} | |||
*cp++ = from; | |||
*cp = NULL; | |||
/* | |||
* Recursively remove all 'x/..' component pairs. | |||
*/ | |||
cp = components; | |||
while(*cp) { | |||
if (!isdot(*cp) && !isdotdot(*cp) && isdotdot(*(cp+1)) | |||
&& !issymbolic(newpath, *cp)) | |||
{ | |||
char **fp = cp + 2; | |||
char **tp = cp; | |||
do | |||
*tp++ = *fp; /* move all the pointers down */ | |||
while (*fp++); | |||
if (cp != components) | |||
cp--; /* go back and check for nested ".." */ | |||
} else { | |||
cp++; | |||
} | |||
} | |||
/* | |||
* Concatenate the remaining path elements. | |||
*/ | |||
cp = components; | |||
component_copied = FALSE; | |||
while(*cp) { | |||
if (component_copied) | |||
*to++ = '/'; | |||
component_copied = TRUE; | |||
for (from = *cp; *from; ) | |||
*to++ = *from++; | |||
*to = '\0'; | |||
cp++; | |||
} | |||
*to++ = '\0'; | |||
/* | |||
* copy the reconstituted path back to our pointer. | |||
*/ | |||
strcpy(path, newpath); | |||
} | |||
isdot(p) | |||
register char *p; | |||
{ | |||
if(p && *p++ == '.' && *p++ == '\0') | |||
return(TRUE); | |||
return(FALSE); | |||
} | |||
isdotdot(p) | |||
register char *p; | |||
{ | |||
if(p && *p++ == '.' && *p++ == '.' && *p++ == '\0') | |||
return(TRUE); | |||
return(FALSE); | |||
} | |||
issymbolic(dir, component) | |||
register char *dir, *component; | |||
{ | |||
#ifdef S_IFLNK | |||
struct stat st; | |||
char buf[ BUFSIZ ], **pp; | |||
sprintf(buf, "%s%s%s", dir, *dir ? "/" : "", component); | |||
for (pp=notdotdot; *pp; pp++) | |||
if (strcmp(*pp, buf) == 0) | |||
return (TRUE); | |||
if (lstat(buf, &st) == 0 | |||
&& (st.st_mode & S_IFMT) == S_IFLNK) { | |||
*pp++ = copy(buf); | |||
if (pp >= ¬dotdot[ MAXDIRS ]) | |||
fatalerr("out of .. dirs, increase MAXDIRS\n"); | |||
return(TRUE); | |||
} | |||
#endif | |||
return(FALSE); | |||
} | |||
/* | |||
* Add an include file to the list of those included by 'file'. | |||
*/ | |||
struct inclist *newinclude(newfile, incstring) | |||
register char *newfile, *incstring; | |||
{ | |||
register struct inclist *ip; | |||
/* | |||
* First, put this file on the global list of include files. | |||
*/ | |||
ip = inclistp++; | |||
if (inclistp == inclist + MAXFILES - 1) | |||
fatalerr("out of space: increase MAXFILES\n"); | |||
ip->i_file = copy(newfile); | |||
ip->i_included_sym = FALSE; | |||
if (incstring == NULL) | |||
ip->i_incstring = ip->i_file; | |||
else | |||
ip->i_incstring = copy(incstring); | |||
return(ip); | |||
} | |||
included_by(ip, newfile) | |||
register struct inclist *ip, *newfile; | |||
{ | |||
register i; | |||
if (ip == NULL) | |||
return; | |||
/* | |||
* Put this include file (newfile) on the list of files included | |||
* by 'file'. If 'file' is NULL, then it is not an include | |||
* file itself (i.e. was probably mentioned on the command line). | |||
* If it is already on the list, don't stick it on again. | |||
*/ | |||
if (ip->i_list == NULL) | |||
ip->i_list = (struct inclist **) | |||
malloc(sizeof(struct inclist *) * ++ip->i_listlen); | |||
else { | |||
for (i=0; i<ip->i_listlen; i++) | |||
if (ip->i_list[ i ] == newfile) { | |||
i = strlen(newfile->i_file); | |||
if (!ip->i_included_sym && | |||
!(i > 2 && | |||
newfile->i_file[i-1] == 'c' && | |||
newfile->i_file[i-2] == '.')) | |||
{ | |||
/* only bitch if ip has */ | |||
/* no #include SYMBOL lines */ | |||
/* and is not a .c file */ | |||
if (warn_multiple) | |||
{ | |||
warning("%s includes %s more than once!\n", | |||
ip->i_file, newfile->i_file); | |||
warning1("Already have\n"); | |||
for (i=0; i<ip->i_listlen; i++) | |||
warning1("\t%s\n", ip->i_list[i]->i_file); | |||
} | |||
} | |||
return; | |||
} | |||
ip->i_list = (struct inclist **) realloc(ip->i_list, | |||
sizeof(struct inclist *) * ++ip->i_listlen); | |||
} | |||
ip->i_list[ ip->i_listlen-1 ] = newfile; | |||
} | |||
inc_clean () | |||
{ | |||
register struct inclist *ip; | |||
for (ip = inclist; ip < inclistp; ip++) { | |||
ip->i_marked = FALSE; | |||
} | |||
} |
@@ -1,593 +0,0 @@ | |||
/* $XConsortium: main.c,v 1.84 94/11/30 16:10:44 kaleb Exp $ */ | |||
/* | |||
Copyright (c) 1993, 1994 X Consortium | |||
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, 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 | |||
X CONSORTIUM 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 of the X Consortium shall not be | |||
used in advertising or otherwise to promote the sale, use or other dealings | |||
in this Software without prior written authorization from the X Consortium. | |||
*/ | |||
#include "def.h" | |||
#ifdef hpux | |||
#define sigvec sigvector | |||
#endif /* hpux */ | |||
#ifdef X_POSIX_C_SOURCE | |||
#define _POSIX_C_SOURCE X_POSIX_C_SOURCE | |||
#include <signal.h> | |||
#undef _POSIX_C_SOURCE | |||
#else | |||
#if defined(X_NOT_POSIX) || defined(_POSIX_SOURCE) | |||
#include <signal.h> | |||
#else | |||
#define _POSIX_SOURCE | |||
#include <signal.h> | |||
#undef _POSIX_SOURCE | |||
#endif | |||
#endif | |||
#if NeedVarargsPrototypes | |||
#include <stdarg.h> | |||
#endif | |||
#ifdef DEBUG | |||
int _debugmask; | |||
#endif | |||
char *ProgramName; | |||
char *directives[] = { | |||
"if", | |||
"ifdef", | |||
"ifndef", | |||
"else", | |||
"endif", | |||
"define", | |||
"undef", | |||
"include", | |||
"line", | |||
"pragma", | |||
"error", | |||
"ident", | |||
"sccs", | |||
"elif", | |||
"eject", | |||
NULL | |||
}; | |||
struct symtab predefs[] = { {NULL, NULL} }; | |||
struct inclist inclist[ MAXFILES ], | |||
*inclistp = inclist, | |||
maininclist; | |||
char *filelist[ MAXFILES ]; | |||
char *includedirs[ MAXDIRS + 1 ]; | |||
char *notdotdot[ MAXDIRS ]; | |||
char *objprefix = ""; | |||
char *objsuffix = ".o"; | |||
int width = 78; | |||
boolean append = FALSE; | |||
boolean printed = FALSE; | |||
boolean verbose = FALSE; | |||
boolean show_where_not = FALSE; | |||
boolean warn_multiple = FALSE; /* Warn on multiple includes of same file */ | |||
static | |||
#ifdef SIGNALRETURNSINT | |||
int | |||
#else | |||
void | |||
#endif | |||
catch (sig) | |||
int sig; | |||
{ | |||
fflush (stdout); | |||
fatalerr ("got signal %d\n", sig); | |||
} | |||
#if defined(USG) || (defined(i386) && defined(SYSV)) || defined(WIN32) || defined(__nextstep__) | |||
#define USGISH | |||
#endif | |||
#ifndef USGISH | |||
#ifndef _POSIX_SOURCE | |||
#define sigaction sigvec | |||
#define sa_handler sv_handler | |||
#define sa_mask sv_mask | |||
#define sa_flags sv_flags | |||
#endif | |||
struct sigaction sig_act; | |||
#endif /* USGISH */ | |||
main(argc, argv) | |||
int argc; | |||
char **argv; | |||
{ | |||
register char **fp = filelist; | |||
register char **incp = includedirs; | |||
register char *p; | |||
register struct inclist *ip; | |||
char *makefile = NULL; | |||
struct filepointer *filecontent; | |||
struct symtab *psymp = predefs; | |||
char *endmarker = NULL; | |||
char *defincdir = NULL; | |||
ProgramName = argv[0]; | |||
while (psymp->s_name) | |||
{ | |||
define2(psymp->s_name, psymp->s_value, &maininclist); | |||
psymp++; | |||
} | |||
if (argc == 2 && argv[1][0] == '@') { | |||
struct stat ast; | |||
int afd; | |||
char *args; | |||
char **nargv; | |||
int nargc; | |||
char quotechar = '\0'; | |||
nargc = 1; | |||
if ((afd = open(argv[1]+1, O_RDONLY)) < 0) | |||
fatalerr("cannot open \"%s\"\n", argv[1]+1); | |||
fstat(afd, &ast); | |||
args = (char *)malloc(ast.st_size + 1); | |||
if ((ast.st_size = read(afd, args, ast.st_size)) < 0) | |||
fatalerr("failed to read %s\n", argv[1]+1); | |||
args[ast.st_size] = '\0'; | |||
close(afd); | |||
for (p = args; *p; p++) { | |||
if (quotechar) { | |||
if (quotechar == '\\' || | |||
(*p == quotechar && p[-1] != '\\')) | |||
quotechar = '\0'; | |||
continue; | |||
} | |||
switch (*p) { | |||
case '\\': | |||
case '"': | |||
case '\'': | |||
quotechar = *p; | |||
break; | |||
case ' ': | |||
case '\n': | |||
*p = '\0'; | |||
if (p > args && p[-1]) | |||
nargc++; | |||
break; | |||
} | |||
} | |||
if (p[-1]) | |||
nargc++; | |||
nargv = (char **)malloc(nargc * sizeof(char *)); | |||
nargv[0] = argv[0]; | |||
argc = 1; | |||
for (p = args; argc < nargc; p += strlen(p) + 1) | |||
if (*p) nargv[argc++] = p; | |||
argv = nargv; | |||
} | |||
for(argc--, argv++; argc; argc--, argv++) { | |||
/* if looking for endmarker then check before parsing */ | |||
if (endmarker && strcmp (endmarker, *argv) == 0) { | |||
endmarker = NULL; | |||
continue; | |||
} | |||
if (**argv != '-') { | |||
/* treat +thing as an option for C++ */ | |||
if (endmarker && **argv == '+') | |||
continue; | |||
*fp++ = argv[0]; | |||
continue; | |||
} | |||
switch(argv[0][1]) { | |||
case '-': | |||
endmarker = &argv[0][2]; | |||
if (endmarker[0] == '\0') endmarker = "--"; | |||
break; | |||
case 'D': | |||
{ | |||
int offset = 2; | |||
if (argv[0][2] == '\0') { | |||
argv++; | |||
argc--; | |||
offset = 0; | |||
} | |||
for (p=argv[0] + offset; *p ; p++) | |||
if (*p == '=') { | |||
*p = ' '; | |||
break; | |||
} | |||
define(argv[0] + offset, &maininclist); | |||
break; | |||
} | |||
case 'I': | |||
if (incp >= includedirs + MAXDIRS) | |||
fatalerr("Too many -I flags.\n"); | |||
*incp++ = argv[0]+2; | |||
if (**(incp-1) == '\0') { | |||
*(incp-1) = *(++argv); | |||
argc--; | |||
} | |||
break; | |||
case 'Y': | |||
defincdir = argv[0]+2; | |||
break; | |||
/* do not use if endmarker processing */ | |||
case 'a': | |||
if (endmarker) break; | |||
append = TRUE; | |||
break; | |||
case 'w': | |||
if (endmarker) break; | |||
if (argv[0][2] == '\0') { | |||
argv++; | |||
argc--; | |||
width = atoi(argv[0]); | |||
} else | |||
width = atoi(argv[0]+2); | |||
break; | |||
case 'o': | |||
if (endmarker) break; | |||
if (argv[0][2] == '\0') { | |||
argv++; | |||
argc--; | |||
objsuffix = argv[0]; | |||
} else | |||
objsuffix = argv[0]+2; | |||
break; | |||
case 'p': | |||
if (endmarker) break; | |||
if (argv[0][2] == '\0') { | |||
argv++; | |||
argc--; | |||
objprefix = argv[0]; | |||
} else | |||
objprefix = argv[0]+2; | |||
break; | |||
case 'v': | |||
if (endmarker) break; | |||
verbose = TRUE; | |||
#ifdef DEBUG | |||
if (argv[0][2]) | |||
_debugmask = atoi(argv[0]+2); | |||
#endif | |||
break; | |||
case 'm': | |||
warn_multiple = TRUE; | |||
break; | |||
/* Ignore -O, -g so we can just pass ${CFLAGS} to | |||
makedepend | |||
*/ | |||
case 'O': | |||
case 'g': | |||
break; | |||
default: | |||
if (endmarker) break; | |||
/* fatalerr("unknown opt = %s\n", argv[0]); */ | |||
warning("ignoring option %s\n", argv[0]); | |||
} | |||
} | |||
if (!defincdir) { | |||
} else if (*defincdir) { | |||
if (incp >= includedirs + MAXDIRS) | |||
fatalerr("Too many -I flags.\n"); | |||
*incp++ = defincdir; | |||
} | |||
/* | |||
* catch signals. | |||
*/ | |||
#ifdef USGISH | |||
/* should really reset SIGINT to SIG_IGN if it was. */ | |||
#ifdef SIGHUP | |||
signal (SIGHUP, catch); | |||
#endif | |||
signal (SIGINT, catch); | |||
#ifdef SIGQUIT | |||
signal (SIGQUIT, catch); | |||
#endif | |||
signal (SIGILL, catch); | |||
#ifdef SIGBUS | |||
signal (SIGBUS, catch); | |||
#endif | |||
signal (SIGSEGV, catch); | |||
#ifdef SIGSYS | |||
signal (SIGSYS, catch); | |||
#endif | |||
#else | |||
sig_act.sa_handler = catch; | |||
#ifdef _POSIX_SOURCE | |||
sigemptyset(&sig_act.sa_mask); | |||
sigaddset(&sig_act.sa_mask, SIGINT); | |||
sigaddset(&sig_act.sa_mask, SIGQUIT); | |||
#ifdef SIGBUS | |||
sigaddset(&sig_act.sa_mask, SIGBUS); | |||
#endif | |||
sigaddset(&sig_act.sa_mask, SIGILL); | |||
sigaddset(&sig_act.sa_mask, SIGSEGV); | |||
sigaddset(&sig_act.sa_mask, SIGHUP); | |||
sigaddset(&sig_act.sa_mask, SIGPIPE); | |||
#ifdef SIGSYS | |||
sigaddset(&sig_act.sa_mask, SIGSYS); | |||
#endif | |||
#else | |||
sig_act.sa_mask = ((1<<(SIGINT -1)) | |||
|(1<<(SIGQUIT-1)) | |||
#ifdef SIGBUS | |||
|(1<<(SIGBUS-1)) | |||
#endif | |||
|(1<<(SIGILL-1)) | |||
|(1<<(SIGSEGV-1)) | |||
|(1<<(SIGHUP-1)) | |||
|(1<<(SIGPIPE-1)) | |||
#ifdef SIGSYS | |||
|(1<<(SIGSYS-1)) | |||
#endif | |||
); | |||
#endif /* _POSIX_SOURCE */ | |||
sig_act.sa_flags = 0; | |||
sigaction(SIGHUP, &sig_act, (struct sigaction *)0); | |||
sigaction(SIGINT, &sig_act, (struct sigaction *)0); | |||
sigaction(SIGQUIT, &sig_act, (struct sigaction *)0); | |||
sigaction(SIGILL, &sig_act, (struct sigaction *)0); | |||
#ifdef SIGBUS | |||
sigaction(SIGBUS, &sig_act, (struct sigaction *)0); | |||
#endif | |||
sigaction(SIGSEGV, &sig_act, (struct sigaction *)0); | |||
#ifdef SIGSYS | |||
sigaction(SIGSYS, &sig_act, (struct sigaction *)0); | |||
#endif | |||
#endif /* USGISH */ | |||
/* | |||
* now peruse through the list of files. | |||
*/ | |||
for(fp=filelist; *fp; fp++) { | |||
char *base = base_name(*fp); | |||
char *depfile = (char *)malloc(strlen(base) + 3); | |||
sprintf(depfile,"%s.d",base); | |||
if (!freopen(depfile, "wb", stdout)) | |||
fatalerr("cannot open \"%s\"\n", depfile); | |||
free(depfile); | |||
free(base); | |||
printed = FALSE; | |||
filecontent = getfile(*fp); | |||
ip = newinclude(*fp, (char *)NULL); | |||
find_includes(filecontent, ip, ip, 0, TRUE); | |||
freefile(filecontent); | |||
recursive_pr_include(ip, ip->i_file, base_name(*fp)); | |||
inc_clean(); | |||
if (printed) | |||
printf("\n"); | |||
} | |||
exit(0); | |||
} | |||
struct filepointer *getfile(file) | |||
char *file; | |||
{ | |||
register int fd; | |||
struct filepointer *content; | |||
struct stat st; | |||
content = (struct filepointer *)malloc(sizeof(struct filepointer)); | |||
if ((fd = open(file, O_RDONLY)) < 0) { | |||
warning("cannot open \"%s\"\n", file); | |||
content->f_p = content->f_base = content->f_end = (char *)malloc(1); | |||
*content->f_p = '\0'; | |||
return(content); | |||
} | |||
fstat(fd, &st); | |||
content->f_base = (char *)malloc(st.st_size+1); | |||
if (content->f_base == NULL) | |||
fatalerr("cannot allocate mem\n"); | |||
if ((st.st_size = read(fd, content->f_base, st.st_size)) < 0) | |||
fatalerr("failed to read %s\n", file); | |||
close(fd); | |||
content->f_len = st.st_size+1; | |||
content->f_p = content->f_base; | |||
content->f_end = content->f_base + st.st_size; | |||
*content->f_end = '\0'; | |||
content->f_line = 0; | |||
return(content); | |||
} | |||
freefile(fp) | |||
struct filepointer *fp; | |||
{ | |||
free(fp->f_base); | |||
free(fp); | |||
} | |||
char *copy(str) | |||
register char *str; | |||
{ | |||
register char *p = (char *)malloc(strlen(str) + 1); | |||
strcpy(p, str); | |||
return(p); | |||
} | |||
match(str, list) | |||
register char *str, **list; | |||
{ | |||
register int i; | |||
for (i=0; *list; i++, list++) | |||
if (strcmp(str, *list) == 0) | |||
return(i); | |||
return(-1); | |||
} | |||
/* | |||
* Get the next line. We only return lines beginning with '#' since that | |||
* is all this program is ever interested in. | |||
*/ | |||
char *getline(filep) | |||
register struct filepointer *filep; | |||
{ | |||
register char *p, /* walking pointer */ | |||
*eof, /* end of file pointer */ | |||
*bol; /* beginning of line pointer */ | |||
register lineno; /* line number */ | |||
p = filep->f_p; | |||
eof = filep->f_end; | |||
if (p >= eof) | |||
return((char *)NULL); | |||
lineno = filep->f_line; | |||
for(bol = p--; ++p < eof; ) { | |||
if (*p == '/' && *(p+1) == '*') { /* consume comments */ | |||
*p++ = ' ', *p++ = ' '; | |||
while (*p) { | |||
if (*p == '*' && *(p+1) == '/') { | |||
*p++ = ' ', *p = ' '; | |||
break; | |||
} | |||
else if (*p == '\n') | |||
lineno++; | |||
*p++ = ' '; | |||
} | |||
continue; | |||
} | |||
else if (*p == '/' && *(p+1) == '/') { /* consume comments */ | |||
*p++ = ' ', *p++ = ' '; | |||
while (*p && *p != '\n') | |||
*p++ = ' '; | |||
p--; /* go back to before newline */ | |||
lineno++; | |||
continue; | |||
} | |||
else if (*p == '\\') { | |||
if (*(p+1) == '\n') { | |||
*p = ' '; | |||
*(p+1) = ' '; | |||
lineno++; | |||
} | |||
} | |||
else if (*p == '\n') { | |||
lineno++; | |||
if (*bol == '#') { | |||
register char *cp; | |||
*p++ = '\0'; | |||
/* punt lines with just # (yacc generated) */ | |||
for (cp = bol+1; | |||
*cp && (*cp == ' ' || *cp == '\t'); cp++); | |||
if (*cp) goto done; | |||
} | |||
bol = p+1; | |||
} | |||
} | |||
if (*bol != '#') | |||
bol = NULL; | |||
done: | |||
filep->f_p = p; | |||
filep->f_line = lineno; | |||
return(bol); | |||
} | |||
/* | |||
* Strip the file name down to what we want to see in the Makefile. | |||
* It will have objprefix and objsuffix around it. | |||
*/ | |||
char *base_name(file) | |||
register char *file; | |||
{ | |||
register char *p; | |||
for(p=file+strlen(file); p>file && *p != '/' && *p != '\\'; p--) ; | |||
if (p>file) p++; | |||
file = copy(p); | |||
for(p=file+strlen(file); p>file && *p != '.'; p--) ; | |||
if (*p == '.') | |||
*p = '\0'; | |||
return(file); | |||
} | |||
#if NeedVarargsPrototypes | |||
fatalerr(char *msg, ...) | |||
#else | |||
/*VARARGS*/ | |||
fatalerr(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) | |||
char *msg; | |||
#endif | |||
{ | |||
#if NeedVarargsPrototypes | |||
va_list args; | |||
#endif | |||
fprintf(stderr, "%s: error: ", ProgramName); | |||
#if NeedVarargsPrototypes | |||
va_start(args, msg); | |||
vfprintf(stderr, msg, args); | |||
va_end(args); | |||
#else | |||
fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); | |||
#endif | |||
exit (1); | |||
} | |||
#if NeedVarargsPrototypes | |||
warning(char *msg, ...) | |||
#else | |||
/*VARARGS0*/ | |||
warning(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) | |||
char *msg; | |||
#endif | |||
{ | |||
#if NeedVarargsPrototypes | |||
va_list args; | |||
#endif | |||
fprintf(stderr, "%s: warning: ", ProgramName); | |||
#if NeedVarargsPrototypes | |||
va_start(args, msg); | |||
vfprintf(stderr, msg, args); | |||
va_end(args); | |||
#else | |||
fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); | |||
#endif | |||
} | |||
#if NeedVarargsPrototypes | |||
warning1(char *msg, ...) | |||
#else | |||
/*VARARGS0*/ | |||
warning1(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) | |||
char *msg; | |||
#endif | |||
{ | |||
#if NeedVarargsPrototypes | |||
va_list args; | |||
va_start(args, msg); | |||
vfprintf(stderr, msg, args); | |||
va_end(args); | |||
#else | |||
fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); | |||
#endif | |||
} |
@@ -1,568 +0,0 @@ | |||
/* $XConsortium: parse.c,v 1.30 94/04/17 20:10:38 gildea Exp $ */ | |||
/* | |||
Copyright (c) 1993, 1994 X Consortium | |||
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, 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 | |||
X CONSORTIUM 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 of the X Consortium shall not be | |||
used in advertising or otherwise to promote the sale, use or other dealings | |||
in this Software without prior written authorization from the X Consortium. | |||
*/ | |||
#include "def.h" | |||
extern char *directives[]; | |||
extern struct inclist maininclist; | |||
find_includes(filep, file, file_red, recursion, failOK) | |||
struct filepointer *filep; | |||
struct inclist *file, *file_red; | |||
int recursion; | |||
boolean failOK; | |||
{ | |||
register char *line; | |||
register int type; | |||
boolean recfailOK; | |||
while (line = getline(filep)) { | |||
switch(type = deftype(line, filep, file_red, file, TRUE)) { | |||
case IF: | |||
doif: | |||
type = find_includes(filep, file, | |||
file_red, recursion+1, failOK); | |||
while ((type == ELIF) || (type == ELIFFALSE) || | |||
(type == ELIFGUESSFALSE)) | |||
type = gobble(filep, file, file_red); | |||
if (type == ELSE) | |||
gobble(filep, file, file_red); | |||
break; | |||
case IFFALSE: | |||
case IFGUESSFALSE: | |||
doiffalse: | |||
if (type == IFGUESSFALSE || type == ELIFGUESSFALSE) | |||
recfailOK = TRUE; | |||
else | |||
recfailOK = failOK; | |||
type = gobble(filep, file, file_red); | |||
if (type == ELSE) | |||
find_includes(filep, file, | |||
file_red, recursion+1, recfailOK); | |||
else | |||
if (type == ELIF) | |||
goto doif; | |||
else | |||
if ((type == ELIFFALSE) || (type == ELIFGUESSFALSE)) | |||
goto doiffalse; | |||
break; | |||
case IFDEF: | |||
case IFNDEF: | |||
if ((type == IFDEF && isdefined(line, file_red, NULL)) | |||
|| (type == IFNDEF && !isdefined(line, file_red, NULL))) { | |||
debug(1,(type == IFNDEF ? | |||
"line %d: %s !def'd in %s via %s%s\n" : "", | |||
filep->f_line, line, | |||
file->i_file, file_red->i_file, ": doit")); | |||
type = find_includes(filep, file, | |||
file_red, recursion+1, failOK); | |||
while (type == ELIF || type == ELIFFALSE || type == ELIFGUESSFALSE) | |||
type = gobble(filep, file, file_red); | |||
if (type == ELSE) | |||
gobble(filep, file, file_red); | |||
} | |||
else { | |||
debug(1,(type == IFDEF ? | |||
"line %d: %s !def'd in %s via %s%s\n" : "", | |||
filep->f_line, line, | |||
file->i_file, file_red->i_file, ": gobble")); | |||
type = gobble(filep, file, file_red); | |||
if (type == ELSE) | |||
find_includes(filep, file, | |||
file_red, recursion+1, failOK); | |||
else if (type == ELIF) | |||
goto doif; | |||
else if (type == ELIFFALSE || type == ELIFGUESSFALSE) | |||
goto doiffalse; | |||
} | |||
break; | |||
case ELSE: | |||
case ELIFFALSE: | |||
case ELIFGUESSFALSE: | |||
case ELIF: | |||
if (!recursion) | |||
gobble(filep, file, file_red); | |||
case ENDIF: | |||
if (recursion) | |||
return(type); | |||
case DEFINE: | |||
define(line, file); | |||
break; | |||
case UNDEF: | |||
if (!*line) { | |||
warning("%s, line %d: incomplete undef == \"%s\"\n", | |||
file_red->i_file, filep->f_line, line); | |||
break; | |||
} | |||
undefine(line, file_red); | |||
break; | |||
case INCLUDE: | |||
add_include(filep, file, file_red, line, FALSE, failOK); | |||
break; | |||
case INCLUDEDOT: | |||
add_include(filep, file, file_red, line, TRUE, failOK); | |||
break; | |||
case ERROR: | |||
warning("(from %s) %s: %d: %s\n", | |||
file_red->i_file, file->i_file, | |||
filep->f_line, line); | |||
break; | |||
case PRAGMA: | |||
case IDENT: | |||
case SCCS: | |||
case EJECT: | |||
break; | |||
case -1: | |||
warning("%s", file_red->i_file); | |||
if (file_red != file) | |||
warning1(" (reading %s)", file->i_file); | |||
warning1(", line %d: unknown directive == \"%s\"\n", | |||
filep->f_line, line); | |||
break; | |||
case -2: | |||
warning("%s", file_red->i_file); | |||
if (file_red != file) | |||
warning1(" (reading %s)", file->i_file); | |||
warning1(", line %d: incomplete include == \"%s\"\n", | |||
filep->f_line, line); | |||
break; | |||
} | |||
} | |||
return(-1); | |||
} | |||
gobble(filep, file, file_red) | |||
register struct filepointer *filep; | |||
struct inclist *file, *file_red; | |||
{ | |||
register char *line; | |||
register int type; | |||
while (line = getline(filep)) { | |||
switch(type = deftype(line, filep, file_red, file, FALSE)) { | |||
case IF: | |||
case IFFALSE: | |||
case IFGUESSFALSE: | |||
case IFDEF: | |||
case IFNDEF: | |||
type = gobble(filep, file, file_red); | |||
while ((type == ELIF) || (type == ELIFFALSE) || | |||
(type == ELIFGUESSFALSE)) | |||
type = gobble(filep, file, file_red); | |||
if (type == ELSE) | |||
(void)gobble(filep, file, file_red); | |||
break; | |||
case ELSE: | |||
case ENDIF: | |||
debug(0,("%s, line %d: #%s\n", | |||
file->i_file, filep->f_line, | |||
directives[type])); | |||
return(type); | |||
case DEFINE: | |||
case UNDEF: | |||
case INCLUDE: | |||
case INCLUDEDOT: | |||
case PRAGMA: | |||
case ERROR: | |||
case IDENT: | |||
case SCCS: | |||
case EJECT: | |||
break; | |||
case ELIF: | |||
case ELIFFALSE: | |||
case ELIFGUESSFALSE: | |||
return(type); | |||
case -1: | |||
warning("%s, line %d: unknown directive == \"%s\"\n", | |||
file_red->i_file, filep->f_line, line); | |||
break; | |||
} | |||
} | |||
return(-1); | |||
} | |||
/* | |||
* Decide what type of # directive this line is. | |||
*/ | |||
int deftype (line, filep, file_red, file, parse_it) | |||
register char *line; | |||
register struct filepointer *filep; | |||
register struct inclist *file_red, *file; | |||
int parse_it; | |||
{ | |||
register char *p; | |||
char *directive, savechar; | |||
register int ret; | |||
/* | |||
* Parse the directive... | |||
*/ | |||
directive=line+1; | |||
while (*directive == ' ' || *directive == '\t') | |||
directive++; | |||
p = directive; | |||
while (*p >= 'a' && *p <= 'z') | |||
p++; | |||
savechar = *p; | |||
*p = '\0'; | |||
ret = match(directive, directives); | |||
*p = savechar; | |||
/* If we don't recognize this compiler directive or we happen to just | |||
* be gobbling up text while waiting for an #endif or #elif or #else | |||
* in the case of an #elif we must check the zero_value and return an | |||
* ELIF or an ELIFFALSE. | |||
*/ | |||
if (ret == ELIF && !parse_it) | |||
{ | |||
while (*p == ' ' || *p == '\t') | |||
p++; | |||
/* | |||
* parse an expression. | |||
*/ | |||
debug(0,("%s, line %d: #elif %s ", | |||
file->i_file, filep->f_line, p)); | |||
ret = zero_value(p, filep, file_red); | |||
if (ret != IF) | |||
{ | |||
debug(0,("false...\n")); | |||
if (ret == IFFALSE) | |||
return(ELIFFALSE); | |||
else | |||
return(ELIFGUESSFALSE); | |||
} | |||
else | |||
{ | |||
debug(0,("true...\n")); | |||
return(ELIF); | |||
} | |||
} | |||
if (ret < 0 || ! parse_it) | |||
return(ret); | |||
/* | |||
* now decide how to parse the directive, and do it. | |||
*/ | |||
while (*p == ' ' || *p == '\t') | |||
p++; | |||
switch (ret) { | |||
case IF: | |||
/* | |||
* parse an expression. | |||
*/ | |||
ret = zero_value(p, filep, file_red); | |||
debug(0,("%s, line %d: %s #if %s\n", | |||
file->i_file, filep->f_line, ret?"false":"true", p)); | |||
break; | |||
case IFDEF: | |||
case IFNDEF: | |||
debug(0,("%s, line %d: #%s %s\n", | |||
file->i_file, filep->f_line, directives[ret], p)); | |||
case UNDEF: | |||
/* | |||
* separate the name of a single symbol. | |||
*/ | |||
while (isalnum(*p) || *p == '_') | |||
*line++ = *p++; | |||
*line = '\0'; | |||
break; | |||
case INCLUDE: | |||
debug(2,("%s, line %d: #include %s\n", | |||
file->i_file, filep->f_line, p)); | |||
/* Support ANSI macro substitution */ | |||
{ | |||
struct symtab *sym = isdefined(p, file_red, NULL); | |||
while (sym) { | |||
p = sym->s_value; | |||
debug(3,("%s : #includes SYMBOL %s = %s\n", | |||
file->i_incstring, | |||
sym -> s_name, | |||
sym -> s_value)); | |||
/* mark file as having included a 'soft include' */ | |||
file->i_included_sym = TRUE; | |||
sym = isdefined(p, file_red, NULL); | |||
} | |||
} | |||
/* | |||
* Separate the name of the include file. | |||
*/ | |||
while (*p && *p != '"' && *p != '<') | |||
p++; | |||
if (! *p) | |||
return(-2); | |||
if (*p++ == '"') { | |||
ret = INCLUDEDOT; | |||
while (*p && *p != '"') | |||
*line++ = *p++; | |||
} else | |||
while (*p && *p != '>') | |||
*line++ = *p++; | |||
*line = '\0'; | |||
break; | |||
case DEFINE: | |||
/* | |||
* copy the definition back to the beginning of the line. | |||
*/ | |||
strcpy (line, p); | |||
break; | |||
case ELSE: | |||
case ENDIF: | |||
case ELIF: | |||
case PRAGMA: | |||
case ERROR: | |||
case IDENT: | |||
case SCCS: | |||
case EJECT: | |||
debug(0,("%s, line %d: #%s\n", | |||
file->i_file, filep->f_line, directives[ret])); | |||
/* | |||
* nothing to do. | |||
*/ | |||
break; | |||
} | |||
return(ret); | |||
} | |||
struct symtab *isdefined(symbol, file, srcfile) | |||
register char *symbol; | |||
struct inclist *file; | |||
struct inclist **srcfile; | |||
{ | |||
register struct symtab *val; | |||
if (val = slookup(symbol, &maininclist)) { | |||
debug(1,("%s defined on command line\n", symbol)); | |||
if (srcfile != NULL) *srcfile = &maininclist; | |||
return(val); | |||
} | |||
if (val = fdefined(symbol, file, srcfile)) | |||
return(val); | |||
debug(1,("%s not defined in %s\n", symbol, file->i_file)); | |||
return(NULL); | |||
} | |||
struct symtab *fdefined(symbol, file, srcfile) | |||
register char *symbol; | |||
struct inclist *file; | |||
struct inclist **srcfile; | |||
{ | |||
register struct inclist **ip; | |||
register struct symtab *val; | |||
register int i; | |||
static int recurse_lvl = 0; | |||
if (file->i_defchecked) | |||
return(NULL); | |||
file->i_defchecked = TRUE; | |||
if (val = slookup(symbol, file)) | |||
debug(1,("%s defined in %s as %s\n", symbol, file->i_file, val->s_value)); | |||
if (val == NULL && file->i_list) | |||
{ | |||
for (ip = file->i_list, i=0; i < file->i_listlen; i++, ip++) | |||
if (val = fdefined(symbol, *ip, srcfile)) { | |||
break; | |||
} | |||
} | |||
else if (val != NULL && srcfile != NULL) *srcfile = file; | |||
recurse_lvl--; | |||
file->i_defchecked = FALSE; | |||
return(val); | |||
} | |||
/* | |||
* Return type based on if the #if expression evaluates to 0 | |||
*/ | |||
zero_value(exp, filep, file_red) | |||
register char *exp; | |||
register struct filepointer *filep; | |||
register struct inclist *file_red; | |||
{ | |||
if (cppsetup(exp, filep, file_red)) | |||
return(IFFALSE); | |||
else | |||
return(IF); | |||
} | |||
define(def, file) | |||
char *def; | |||
struct inclist *file; | |||
{ | |||
char *val; | |||
/* Separate symbol name and its value */ | |||
val = def; | |||
while (isalnum(*val) || *val == '_') | |||
val++; | |||
if (*val) | |||
*val++ = '\0'; | |||
while (*val == ' ' || *val == '\t') | |||
val++; | |||
if (!*val) | |||
val = "1"; | |||
define2(def, val, file); | |||
} | |||
define2(name, val, file) | |||
char *name, *val; | |||
struct inclist *file; | |||
{ | |||
int first, last, below; | |||
register struct symtab *sp = NULL, *dest; | |||
/* Make space if it's needed */ | |||
if (file->i_defs == NULL) | |||
{ | |||
file->i_defs = (struct symtab *) | |||
malloc(sizeof (struct symtab) * SYMTABINC); | |||
file->i_deflen = SYMTABINC; | |||
file->i_ndefs = 0; | |||
} | |||
else if (file->i_ndefs == file->i_deflen) | |||
file->i_defs = (struct symtab *) | |||
realloc(file->i_defs, | |||
sizeof(struct symtab)*(file->i_deflen+=SYMTABINC)); | |||
if (file->i_defs == NULL) | |||
fatalerr("malloc()/realloc() failure in insert_defn()\n"); | |||
below = first = 0; | |||
last = file->i_ndefs - 1; | |||
while (last >= first) | |||
{ | |||
/* Fast inline binary search */ | |||
register char *s1; | |||
register char *s2; | |||
register int middle = (first + last) / 2; | |||
/* Fast inline strchr() */ | |||
s1 = name; | |||
s2 = file->i_defs[middle].s_name; | |||
while (*s1++ == *s2++) | |||
if (s2[-1] == '\0') break; | |||
/* If exact match, set sp and break */ | |||
if (*--s1 == *--s2) | |||
{ | |||
sp = file->i_defs + middle; | |||
break; | |||
} | |||
/* If name > i_defs[middle] ... */ | |||
if (*s1 > *s2) | |||
{ | |||
below = first; | |||
first = middle + 1; | |||
} | |||
/* else ... */ | |||
else | |||
{ | |||
below = last = middle - 1; | |||
} | |||
} | |||
/* Search is done. If we found an exact match to the symbol name, | |||
just replace its s_value */ | |||
if (sp != NULL) | |||
{ | |||
free(sp->s_value); | |||
sp->s_value = copy(val); | |||
return; | |||
} | |||
sp = file->i_defs + file->i_ndefs++; | |||
dest = file->i_defs + below + 1; | |||
while (sp > dest) | |||
{ | |||
*sp = sp[-1]; | |||
sp--; | |||
} | |||
sp->s_name = copy(name); | |||
sp->s_value = copy(val); | |||
} | |||
struct symtab *slookup(symbol, file) | |||
register char *symbol; | |||
register struct inclist *file; | |||
{ | |||
register int first = 0; | |||
register int last = file->i_ndefs - 1; | |||
if (file) while (last >= first) | |||
{ | |||
/* Fast inline binary search */ | |||
register char *s1; | |||
register char *s2; | |||
register int middle = (first + last) / 2; | |||
/* Fast inline strchr() */ | |||
s1 = symbol; | |||
s2 = file->i_defs[middle].s_name; | |||
while (*s1++ == *s2++) | |||
if (s2[-1] == '\0') break; | |||
/* If exact match, we're done */ | |||
if (*--s1 == *--s2) | |||
{ | |||
return file->i_defs + middle; | |||
} | |||
/* If symbol > i_defs[middle] ... */ | |||
if (*s1 > *s2) | |||
{ | |||
first = middle + 1; | |||
} | |||
/* else ... */ | |||
else | |||
{ | |||
last = middle - 1; | |||
} | |||
} | |||
return(NULL); | |||
} | |||
undefine(symbol, file) | |||
char *symbol; | |||
register struct inclist *file; | |||
{ | |||
register struct symtab *ptr; | |||
struct inclist *srcfile; | |||
while ((ptr = isdefined(symbol, file, &srcfile)) != NULL) | |||
{ | |||
srcfile->i_ndefs--; | |||
for (; ptr < srcfile->i_defs + srcfile->i_ndefs; ptr++) | |||
*ptr = ptr[1]; | |||
} | |||
} |
@@ -1,130 +0,0 @@ | |||
/* $XConsortium: pr.c,v 1.17 94/04/17 20:10:38 gildea Exp $ */ | |||
/* | |||
Copyright (c) 1993, 1994 X Consortium | |||
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, 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 | |||
X CONSORTIUM 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 of the X Consortium shall not be | |||
used in advertising or otherwise to promote the sale, use or other dealings | |||
in this Software without prior written authorization from the X Consortium. | |||
*/ | |||
#include "def.h" | |||
extern struct inclist inclist[ MAXFILES ], | |||
*inclistp; | |||
extern char *objprefix; | |||
extern char *objsuffix; | |||
extern int width; | |||
extern boolean printed; | |||
extern boolean verbose; | |||
extern boolean show_where_not; | |||
add_include(filep, file, file_red, include, dot, failOK) | |||
struct filepointer *filep; | |||
struct inclist *file, *file_red; | |||
char *include; | |||
boolean dot; | |||
{ | |||
register struct inclist *newfile; | |||
register struct filepointer *content; | |||
/* | |||
* First decide what the pathname of this include file really is. | |||
*/ | |||
newfile = inc_path(file->i_file, include, dot); | |||
if (newfile == NULL) { | |||
if (failOK) | |||
return; | |||
if (file != file_red) | |||
warning("%s (reading %s, line %d): ", | |||
file_red->i_file, file->i_file, filep->f_line); | |||
else | |||
warning("%s, line %d: ", file->i_file, filep->f_line); | |||
warning1("cannot find include file \"%s\"\n", include); | |||
show_where_not = TRUE; | |||
newfile = inc_path(file->i_file, include, dot); | |||
show_where_not = FALSE; | |||
} | |||
if (newfile) { | |||
included_by(file, newfile); | |||
if (!newfile->i_searched) { | |||
newfile->i_searched = TRUE; | |||
content = getfile(newfile->i_file); | |||
find_includes(content, newfile, file_red, 0, failOK); | |||
freefile(content); | |||
} | |||
} | |||
} | |||
recursive_pr_include(head, file, base) | |||
register struct inclist *head; | |||
register char *file, *base; | |||
{ | |||
register int i; | |||
if (head->i_marked) | |||
return; | |||
head->i_marked = TRUE; | |||
if (head->i_file != file) | |||
pr(head, file, base); | |||
for (i=0; i<head->i_listlen; i++) | |||
recursive_pr_include(head->i_list[ i ], file, base); | |||
} | |||
pr(ip, file, base) | |||
register struct inclist *ip; | |||
char *file, *base; | |||
{ | |||
static char *lastfile; | |||
register int len, i; | |||
char buf[ BUFSIZ ]; | |||
#ifdef WIN32 | |||
char *transfile = TranslateFileNameD2U(ip->i_file,0); | |||
#else | |||
char *transfile = ip->i_file; | |||
#endif | |||
printed = TRUE; | |||
if (file != lastfile) { | |||
lastfile = file; | |||
sprintf(buf, "%s%s%s %s.d: %s", objprefix, base, objsuffix, | |||
base, transfile); | |||
} | |||
else { | |||
sprintf(buf, " \\\n %s", transfile); | |||
} | |||
fwrite(buf, strlen(buf), 1, stdout); | |||
/* | |||
* If verbose is set, then print out what this file includes. | |||
*/ | |||
if (! verbose || ip->i_list == NULL || ip->i_notified) | |||
return; | |||
ip->i_notified = TRUE; | |||
lastfile = NULL; | |||
printf("\n# %s includes:", transfile); | |||
for (i=0; i<ip->i_listlen; i++) | |||
printf("\n#\t%s", ip->i_list[ i ]->i_incstring); | |||
#ifdef WIN32 | |||
free(transfile); | |||
#endif | |||
} |
@@ -0,0 +1,7 @@ | |||
bin_PROGRAMS = vncpasswd | |||
vncpasswd_SOURCES = vncpasswd.cxx | |||
vncpasswd_CPPFLAGS = -I$(COMMON_DIR) | |||
vncpasswd_LDADD = $(RFB_LIBS) |
@@ -1,18 +0,0 @@ | |||
SRCS = vncpasswd.cxx | |||
OBJS = vncpasswd.o | |||
program = vncpasswd | |||
DEP_LIBS = $(COMMON)/rfb/librfb.a | |||
DIR_CPPFLAGS = -I$(COMMON) | |||
all:: $(program) | |||
$(program): $(OBJS) $(DEP_LIBS) | |||
rm -f $(program) | |||
$(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(DEP_LIBS) $(LIBS) | |||
# followed by boilerplate.mk |
@@ -0,0 +1,12 @@ | |||
bin_PROGRAMS = vncviewer | |||
vncviewer_SOURCES = AboutDialog.h buildtime.c CConn.cxx CConn.h \ | |||
DesktopWindow.cxx DesktopWindow.h InfoDialog.h OptionsDialog.h \ | |||
parameters.h PasswdDialog.h ServerDialog.h vncviewer.cxx | |||
vncviewer_CPPFLAGS = -I$(COMMON_DIR) -I$(TX_DIR) \ | |||
-I$(UNIX_DIR) -DLOCALEDIR=\"$(localedir)\" | |||
vncviewer_LDADD = $(TX_LIBS) $(RFB_LIBS) $(NETWORK_LIBS) $(RDR_LIBS) -lXext \ | |||
-lX11 $(JPEG_LIBS) $(ZLIB_LIBS) | |||
@@ -1,33 +0,0 @@ | |||
PACKAGE = @PACKAGE@ | |||
VERSION = @VERSION@ | |||
prefix = @prefix@ | |||
datadir = @datadir@ | |||
localedir = $(datadir)/locale | |||
SRCS = DesktopWindow.cxx CConn.cxx vncviewer.cxx | |||
OBJS = $(SRCS:.cxx=.o) | |||
program = vncviewer | |||
DEP_LIBS = $(TOP)/tx/libtx.a \ | |||
$(COMMON)/rfb/librfb.a \ | |||
$(COMMON)/network/libnetwork.a \ | |||
$(COMMON)/rdr/librdr.a | |||
EXTRA_LIBS = @ZLIB_LIB@ @JPEG_LIB@ @X_PRE_LIBS@ @X_LIBS@ -lXext -lX11 \ | |||
@X_EXTRA_LIBS@ @CL_LIB@ @DMEDIA_LIB@ @LIBINTL@ | |||
DIR_CPPFLAGS = -I$(COMMON) -I$(TOP) -I$(TOP)/tx -I$(TOP)/intl -DLOCALEDIR=\"$(localedir)\" @X_CFLAGS@ # X_CFLAGS are really CPPFLAGS | |||
all:: $(program) | |||
$(program): $(OBJS) buildtime.o $(DEP_LIBS) | |||
rm -f $(program) | |||
$(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) buildtime.o $(DEP_LIBS) $(LIBS) $(EXTRA_LIBS) | |||
buildtime.o: $(OBJS) $(DEP_LIBS) | |||
# followed by boilerplate.mk |
@@ -20,6 +20,10 @@ | |||
// Image.cxx | |||
// | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <sys/types.h> |
@@ -23,6 +23,10 @@ | |||
#ifndef __IMAGE_H__ | |||
#define __IMAGE_H__ | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include <X11/Xlib.h> | |||
#include <X11/Xutil.h> | |||
@@ -0,0 +1,13 @@ | |||
bin_PROGRAMS = x0vncserver | |||
x0vncserver_SOURCES = buildtime.c Geometry.cxx Geometry.h Image.cxx Image.h \ | |||
PollingManager.cxx PollingManager.h PollingScheduler.cxx \ | |||
PollingScheduler.h TimeMillis.cxx TimeMillis.h XPixelBuffer.cxx \ | |||
XPixelBuffer.h x0vncserver.cxx \ | |||
$(UNIX_DIR)/vncconfig/QueryConnectDialog.cxx | |||
x0vncserver_CPPFLAGS = -I$(UNIX_DIR) -I$(COMMON_DIR) -I$(TX_DIR) \ | |||
-I$(VNCCONFIG_DIR) | |||
x0vncserver_LDADD = $(RFB_LIBS) $(NETWORK_LIBS) $(RDR_LIBS) $(TX_LIBS) \ | |||
$(ZLIB_LIBS) $(JPEG_LIBS) -lXext -lX11 |
@@ -1,30 +0,0 @@ | |||
SRCS = Image.cxx TimeMillis.cxx PollingScheduler.cxx PollingManager.cxx \ | |||
Geometry.cxx XPixelBuffer.cxx \ | |||
x0vncserver.cxx ../vncconfig/QueryConnectDialog.cxx | |||
OBJS = $(SRCS:.cxx=.o) | |||
program = x0vncserver | |||
DEP_LIBS = $(COMMON)/rfb/librfb.a \ | |||
$(COMMON)/network/libnetwork.a \ | |||
$(COMMON)/rdr/librdr.a \ | |||
$(TOP)/tx/libtx.a | |||
EXTRA_LIBS = @ZLIB_LIB@ @JPEG_LIB@ @INET_LIB@ @X_PRE_LIBS@ @X_LIBS@ \ | |||
@XTEST_LIB@ -lXext -lX11 @X_EXTRA_LIBS@ @CL_LIB@ @DMEDIA_LIB@ | |||
# X_CFLAGS are really CPPFLAGS | |||
DIR_CPPFLAGS = -I$(COMMON) -I$(TOP) -I$(TOP)/tx -I$(TOP)/vncconfig \ | |||
@XTEST_DEFINE@ @READDISPLAY_DEFINE@ @MITSHM_DEFINE@ @X_CFLAGS@ | |||
all:: $(program) | |||
$(program): $(OBJS) buildtime.o $(DEP_LIBS) | |||
rm -f $(program) | |||
$(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) buildtime.o $(DEP_LIBS) $(LIBS) $(EXTRA_LIBS) | |||
buildtime.o: $(OBJS) $(DEP_LIBS) | |||
# followed by boilerplate.mk |
@@ -20,6 +20,10 @@ | |||
// FIXME: Check cases when screen width/height is not a multiply of 32. | |||
// e.g. 800x600. | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#include <strings.h> | |||
#include <sys/types.h> | |||
#include <sys/stat.h> |