summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in52
-rwxr-xr-xbuild-ins.in85
-rwxr-xr-xconfigure1.in204
-rw-r--r--etc/=MACHINES12
-rw-r--r--lib-src/=timer.c4
-rw-r--r--lib-src/etags.c380
-rw-r--r--lisp/mail/rmail.el8
-rw-r--r--lisp/play/doctor.el2
-rw-r--r--lisp/progmodes/compile.el26
-rw-r--r--lisp/startup.el8
-rwxr-xr-xmake-dist24
-rw-r--r--src/bytecode.c7
-rw-r--r--src/callint.c7
-rw-r--r--src/callproc.c3
-rw-r--r--src/editfns.c6
-rw-r--r--src/fileio.c8
-rw-r--r--src/floatfns.c12
-rw-r--r--src/lisp.h14
-rw-r--r--src/lread.c20
-rw-r--r--src/print.c12
-rw-r--r--src/process.c10
-rw-r--r--src/ralloc.c1
-rw-r--r--src/s/hpux.h5
-rw-r--r--src/search.c65
-rw-r--r--src/sysdep.c44
-rw-r--r--src/systty.h46
-rw-r--r--src/term.c7
-rw-r--r--src/xfns.c7
-rw-r--r--src/xterm.c34
29 files changed, 708 insertions, 405 deletions
diff --git a/Makefile.in b/Makefile.in
index 1c7d6dfad9e..ceb8f0e8297 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -14,6 +14,9 @@
# This is a very dangerous thing to do!
# make clean
# This is a little less dangerous.
+# make dist
+# This produces a tar file from the current source tree suitable
+# for redistribution.
SHELL = /bin/sh
@@ -28,65 +31,65 @@ prefix=/usr/local
# Where to install Emacs and other binaries that people will want to
# run directly (like etags).
-bindir=$(prefix)/bin
+bindir=${prefix}/bin
# A directory under which we will install many of Emacs's files. The
# default values for many of the variables below are expressed in
# terms of this one, so you may not need to change them.
-emacsdir=$(prefix)/emacs-19.0
+emacsdir=${prefix}/emacs-19.0
# Where to install and expect the architecture-independent data files
# (like the tutorial and the Zippy database).
-datadir=$(emacsdir)/etc
+datadir=${emacsdir}/etc
# Where to install the elisp files distributed with Emacs. Strictly
# speaking, all the elisp files should go under datadir (above), since
# both elisp source and compiled elisp are completely portable, but
# it's traditional to give the lisp files their own subdirectory.
-lispdir=$(emacsdir)/lisp
+lispdir=${emacsdir}/lisp
# Directories Emacs should search for elisp files specific to this
-# site (i.e. customizations), before consulting $(lispdir). This
+# site (i.e. customizations), before consulting ${lispdir}. This
# should be a colon-separated list of directories.
-locallisppath=$(emacsdir)/local-lisp
+locallisppath=${emacsdir}/local-lisp
# Where Emacs will search to find its elisp files. Before changing
# this, check to see if your purpose wouldn't better be served by
# changing locallisppath. This should be a colon-separated list of
# directories.
-lisppath=$(locallisppath):$(lispdir)
+lisppath=${locallisppath}:${lispdir}
-# Where Emacs will search for its elisp files before dumping. This is
+# Where Emacs will search for its elisp files while building. This is
# only used during the process of compiling Emacs, to help Emacs find
# its lisp files before they've been installed in their final
# location. It's usually identical to lisppath, except that the entry
# for the directory containing the installed lisp files has been
# replaced with ../lisp. This should be a colon-separated list of
# directories.
-dumplisppath=$(locallisppath):../lisp
+buildlisppath=../lisp
# Where to install and expect the files that Emacs modifies as it
# runs. These files are all architecture-independent. Right now,
# the only such data is the locking directory.
-statedir=$(emacsdir)
+statedir=${emacsdir}
# Where to create and expect the locking directory, where the Emacs
# locking code keeps track of which files are currently being edited.
-lockdir=$(statedir)/lock
+lockdir=${statedir}/lock
# Where to install and expect executable files to be run by Emacs
# rather than directly by users, and other architecture-dependent
# data.
-libdir=$(emacsdir)/arch-lib
+libdir=${emacsdir}/arch-lib
# Where to install Emacs's man pages.
mandir=/usr/man/man1
# Where to install and expect the info files describing Emacs. In the
-# past, this defaulted to a subdirectory of $(prefix)/lib/emacs, but
+# past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but
# since there are now many packages documented with the texinfo
# system, it is inappropriate to imply that it is part of Emacs.
-infodir=$(prefix)/info
+infodir=${prefix}/info
# ==================== Utility Programs for the Build ====================
@@ -110,22 +113,22 @@ SUBDIR = lib-src src
# Subdirectories to install, and where they'll go.
COPYDIR = arch-lib etc info lisp
-COPYDESTS = $(libdir) $(datadir) $(infodir) $(lispdir)
+COPYDESTS = ${libdir} ${datadir} ${infodir} ${lispdir}
all: src/paths.h ${SUBDIR}
removenullpaths=sed -e 's/^://' -e 's/:$$//' -e 's/::/:/'
src/paths.h: Makefile src/paths.h.in
- lisppath=`echo $(lisppath) | $(removenullpaths)` ; \
- dumplisppath=`echo $(dumplisppath) | $(removenullpaths)` ; \
- /bin/sed < src/paths.h.in > src/paths.h \
+ lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
+ buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ; \
+ /bin/sed < src/paths.h.in > src/paths.h \
-e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \
- -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${dumplisppath}'";' \
- -e 's;\(#.*PATH_EXEC\).*$$;\1 "$(libdir)";' \
- -e 's;\(#.*PATH_DATA\).*$$;\1 "$(datadir)";' \
- -e 's;\(#.*PATH_LOCK\).*$$;\1 "$(lockdir)/";' \
- -e 's;\(#.*PATH_SUPERLOCK\).*$$;\1 "$(lockdir)/!!!SuperLock!!!";'
+ -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${buildlisppath}'";' \
+ -e 's;\(#.*PATH_EXEC\).*$$;\1 "${libdir}";' \
+ -e 's;\(#.*PATH_DATA\).*$$;\1 "${datadir}";' \
+ -e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";' \
+ -e 's;\(#.*PATH_SUPERLOCK\).*$$;\1 "${lockdir}/!!!SuperLock!!!";'
src: lib-src
@@ -274,3 +277,6 @@ TAGS tags: lib-src
check:
@echo "We don't have any tests for GNU Emacs yet."
+
+dist:
+ make-dist
diff --git a/build-ins.in b/build-ins.in
index d23a1b28e80..0769f528ef0 100755
--- a/build-ins.in
+++ b/build-ins.in
@@ -18,21 +18,37 @@ bindir=${prefix}/bin
# A directory under which we will install many of Emacs's files. The
# default values for many of the variables below are expressed in
# terms of this one, so you may not need to change them.
-emacsdir=${prefix}/lib/emacs-19.0
+emacsdir=${prefix}/emacs-19.0
# Where to install and expect the architecture-independent data files
-# (like the tutorial and the zippy database).
+# (like the tutorial and the Zippy database).
datadir=${emacsdir}/etc
-# Where to install the elisp files distributed with Emacs.
+# Where to install the elisp files distributed with Emacs. Strictly
+# speaking, all the elisp files should go under datadir (above), since
+# both elisp source and compiled elisp are completely portable, but
+# it's traditional to give the lisp files their own subdirectory.
lispdir=${emacsdir}/lisp
-# Where Emacs will search to find its elisp files. This should be a
-# colon-separated list of directories. Strictly speaking, all the
-# elisp files should go under datadir (above), since both elisp source
-# and compiled elisp are completely portable, but it's traditional to
-# give the lisp files their own subdirectory.
-lisppath=${emacsdir}/local-lisp:${lispdir}
+# Directories Emacs should search for elisp files specific to this
+# site (i.e. customizations), before consulting ${lispdir}. This
+# should be a colon-separated list of directories.
+locallisppath=${emacsdir}/local-lisp
+
+# Where Emacs will search to find its elisp files. Before changing
+# this, check to see if your purpose wouldn't better be served by
+# changing locallisppath. This should be a colon-separated list of
+# directories.
+lisppath=${locallisppath}:${lispdir}
+
+# Where Emacs will search for its elisp files before dumping. This is
+# only used during the process of compiling Emacs, to help Emacs find
+# its lisp files before they've been installed in their final
+# location. It's usually identical to lisppath, except that the entry
+# for the directory containing the installed lisp files has been
+# replaced with ../lisp. This should be a colon-separated list of
+# directories.
+dumplisppath=../lisp
# Where to install and expect the files that Emacs modifies as it
# runs. These files are all architecture-independent. Right now,
@@ -57,46 +73,17 @@ mandir=/usr/man/man1
# system, it is inappropriate to imply that it is part of Emacs.
infodir=${prefix}/info
-scum
-
-
-# Where to install all of Emacs's data files - the lisp code,
-# documentation tree, and the architecture-dependent and -independent
-# libaries. The default definitions for the variables below are
-# expressed in terms of this one, so you may not need to change them.
-# set LIBROOT=/usr/local/lib/emacs-19.0
-emacsdir=/u/src/emacs/19.0
-
-# Emacs will search this path to find its elisp files. This should be
-# a colon-separated list of directories. Strictly speaking, all the
-# elisp files should go under DATADIR (below), since both elisp source
-# and compiled elisp are completely portable, but it's traditional to
-# give the lisp files their own subdirectory.
-LISPPATH=/u/src/emacs/19.0/local-lisp:/u/src/emacs/19.0/lisp
-
-# Emacs will look here for its architecture-independent files (like
-# the tutorial and the zippy database).
-DATADIR=/u/src/emacs/19.0/etc
-
-# Emacs will look here for its architecture-dependent files, like
-# executables for its utilities.
-LIBDIR=/u/src/emacs/19.0/arch-lib
-
-# The locking directory, where the Emacs locking code keeps track of
-# which files are currently being edited.
-# set LOCKDIR=${LIBROOT}/lock
-LOCKDIR=/u/src/emacs/19.0/lock
-
-# This is where build-install should place the binaries people will
-# want to run directly (like etags and Emacs itself).
-BINDIR=/usr/local/bin
-
-/bin/sed < src/paths.h.in > src/paths.h \
--e 's;\(#.*PATH_LOADSEARCH\).*$;\1 "${lisppath}";' \
--e 's;\(#.*PATH_EXEC\).*$;\1 "${libdir}";' \
--e 's;\(#.*PATH_DATA\).*$;\1 "${datadir}";' \
--e 's;\(#.*PATH_LOCK\).*$;\1 "${lockdir}/";' \
--e 's;\(#.*PATH_SUPERLOCK\).*$;\1 "${lockdir}/!!!SuperLock!!!";'
+removenullpaths="sed -e 's/^://' -e 's/:"'$'"//' -e 's/::/:/'"
+
+lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
+dumplisppath=`echo ${dumplisppath} | ${removenullpaths}` ; \
+/bin/sed < src/paths.h.in > src/paths.h \
+-e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \
+-e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${dumplisppath}'";' \
+-e 's;\(#.*PATH_EXEC\).*$$;\1 "${libdir}";' \
+-e 's;\(#.*PATH_DATA\).*$$;\1 "${datadir}";' \
+-e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";' \
+-e 's;\(#.*PATH_SUPERLOCK\).*$$;\1 "${lockdir}/!!!SuperLock!!!";'
(cd lib-src; make) || exit 1
(cd src; make) || exit 1
diff --git a/configure1.in b/configure1.in
index cc02b2e9b00..e75009351f1 100755
--- a/configure1.in
+++ b/configure1.in
@@ -33,11 +33,14 @@ progname=$0
short_usage="Type \`${progname} -usage' for more information about options."
usage_message="Usage: ${progname} MACHINENAME [-OPTION[=VALUE] ...]
+
+This message needs to be updated.
+
Set compilation and installation parameters for GNU Emacs, and report.
MACHINENAME is the machine to build for. See \`etc/MACHINES'.
Options are:
-opsystem=SYSTEM - operating system to build for; see \`etc/MACHINES'.
- -libroot=DIR - where to install Emacs's library files
+ -prefix=DIR - where to install Emacs's library files
These options have reasonable defaults (in []s), and may not be needed:
-g, -O - Passed to the compiler. If omitted, use -O only.
-cc=COMPILER - Which compiler to use. Defaults to gcc if available.
@@ -65,7 +68,8 @@ options=":\
usage:help:\
machine:opsystem:\
g:O:cc:\
-libroot:datadir:libdir:bindir:lisppath:lockdir:\
+prefix:bindir:emacsdir:datadir:lispdir:locallisppath:\
+lisppath:buildlisppath:statedir:lockdir:libdir:mandir:infodir:\
gnu_malloc:rel_alloc:highpri:lisp_float_type:\
window_system:have_x_menu:\
"
@@ -81,7 +85,7 @@ have_x_windows:have_x11:have_x_menu:\
c_switch_site:sigtype:\
"
-libroot=
+prefix=
bindir=/usr/local/bin
gnu_malloc=yes
lisp_float_type=yes
@@ -96,7 +100,8 @@ window_system=""
have_x_menu=""
echo "Examining options."
-for arg in $*; do
+while [ $# != 0 ]; do
+ arg="$1"
case "${arg}" in
-*)
# Separate the switch name from the value it's being given.
@@ -107,7 +112,9 @@ for arg in $*; do
valomitted=no
;;
-* )
- # If FOO is a boolean argument, -FOO is equivalent to -FOO=yes.
+ # If FOO is a boolean argument, -FOO is equivalent to
+ # -FOO=yes. Otherwise, the value comes from the next
+ # argument - see below.
opt=`echo ${arg} | sed 's:^-\(.*\)$:\1:'`
val="yes"
valomitted=yes
@@ -159,10 +166,13 @@ for arg in $*; do
;;
*)
if [ "${valomitted}" = "yes" ]; then
- (echo "${progname}: You must give a value for the \`-${opt}' option, as in
- \`-${opt}=FOO'."
- echo "${short_usage}") | more
- exit 1
+ if [ $# = 1 ]; then
+ (echo "${progname}: You must give a value for the \`-${opt}' option, as in
+ \`-${opt}=FOO'."
+ echo "${short_usage}") | more
+ exit 1
+ fi
+ shift; val="$1"
fi
;;
esac
@@ -173,6 +183,7 @@ for arg in $*; do
machine=${arg}
;;
esac
+ shift
done
if [ "${machine}" = "" ]; then
@@ -241,9 +252,52 @@ systems that Emacs has been ported to." 1>&2
fi
fi
-if [ "${libroot}" = "" ]; then
- echo "Guessing library directory."
- libroot=`/bin/pwd`
+if [ ! "${prefix}" ]; then
+ prefix="/usr/local"
+fi
+
+if [ ! "${emacsdir}" ]; then
+ emacsdir="${prefix}/emacs-19.0"
+fi
+
+if [ ! "${datadir}" ]; then
+ datadir="${emacsdir}/etc"
+fi
+
+if [ ! "${lispdir}" ]; then
+ lispdir="${emacsdir}/lisp"
+fi
+
+if [ ! "${locallisppath}" ]; then
+ locallisppath="${emacsdir}/local-lisp"
+fi
+
+if [ ! "${lisppath}" ]; then
+ lisppath="${locallisppath}:${lispdir}"
+fi
+
+if [ ! "${buildlisppath}" ]; then
+ buildlisppath=../lisp
+fi
+
+if [ ! "${statedir}" ]; then
+ statedir="${emacsdir}"
+fi
+
+if [ ! "${lockdir}" ]; then
+ lockdir="${statedir}/lock"
+fi
+
+if [ "${libdir}" = "" ]; then
+ libdir="${emacsdir}/arch-lib"
+fi
+
+if [ ! "${mandir}" ]; then
+ mandir="/usr/man/man1"
+fi
+
+if [ ! "${infodir}" ]; then
+ infodir="${prefix}/info"
fi
echo "Checking window system."
@@ -279,39 +333,10 @@ case "${window_system}" in
;;
esac
-# What is the return type of a signal handler? We grep
-# /usr/include/signal.h for the declaration of the signal function.
-# Yuck.
-echo "Looking for return type of signal handler functions."
-if [ -r /usr/include/signal.h ]; then
- sigpattern='[ ]*([ ]*\*[ ]*signal[ ]*('
- sigtype=void
- if grep -s "int${sigpattern}" /usr/include/signal.h; then
- sigtype=int
- fi
-fi
-
-
if [ "${have_x_menu}" = "" ]; then
have_x_menu=no
fi
-if [ "${lisppath}" = "" ]; then
- lisppath='$(locallisppath):$(lispdir)'
-fi
-
-if [ "${datadir}" = "" ]; then
- datadir='$(emacsdir)/etc'
-fi
-
-if [ "${libdir}" = "" ]; then
- libdir='$(emacsdir)/arch-lib'
-fi
-
-if [ "${lockdir}" = "" ]; then
- lockdir='$(statedir)/lock'
-fi
-
echo "Checking for GCC."
case "${cc}" in
"" )
@@ -328,11 +353,53 @@ case "${cc}" in
;;
esac
-case "${O},${g},${cc}" in
- ,,gcc ) O=yes; g=yes ;;
- ,,* ) O=yes; g=no ;;
+case "${cc}" in
+ "gcc" )
+ # With GCC, both O and g should default to yes, no matter what
+ # the other is.
+ case "${O},${g}" in
+ , ) O=yes; g=yes ;;
+ ,* ) O=yes; ;;
+ *, ) g=yes ;;
+ esac
+ ;;
+ "*" )
+ # With other compilers, treat them as mutually exclusive,
+ # defaulting to debug.
+ case "${O},${g}" in
+ , ) O=no ; g=yes ;;
+ ,no ) O=yes; ;;
+ ,yes ) O=no ; ;;
+ no, ) g=yes ;;
+ yes, ) g=no ;;
+ esac
+ ;;
esac
+# What is the return type of a signal handler? We run
+# /usr/include/signal.h through cpp and grep for the declaration of
+# the signal function. Yuck.
+echo "Looking for return type of signal handler functions."
+signal_h_file=''
+if [ -r /usr/include/signal.h ]; then
+ signal_h_file=/usr/include/signal.h
+elif [ -r /usr/include/sys/signal.h ]; then
+ signal_h_file=/usr/include/sys/signal.h
+fi
+sigtype=void
+if [ "${signal_h_file}" ]; then
+ sigpattern='[ ]*([ ]*\*[ ]*signal[ ]*('
+
+ # We make a symbolic link whose name ends in .c, so the compiler
+ # won't complain about having only been given a .h file.
+ tempcname="configure.tmp.$$.c"
+ ln -s ${signal_h_file} ${tempcname}
+ if ${cc} -E ${tempcname} | grep "int${sigpattern}" > /dev/null; then
+ sigtype=int
+ fi
+ rm ${tempcname}
+fi
+
echo "Examining the machine- and system-dependent files to find out"
echo " - which libraries the lib-src programs will want, and"
echo " - whether the GNU malloc routines are usable."
@@ -345,14 +412,16 @@ echo '#include "src/'${machfile}'"
#ifndef LIBS_SYSTEM
#define LIBS_SYSTEM
#endif
-libsrc_libs=LIBS_MACHINE LIBS_SYSTEM
+@configure@ libsrc_libs=LIBS_MACHINE LIBS_SYSTEM
#ifdef SYSTEM_MALLOC
-system_malloc=yes
+@configure@ system_malloc=yes
#else
-system_malloc=no
+@configure@ system_malloc=no
#endif
' > ${tempcname}
-eval `${cc} -E ${tempcname} | grep -v '^#' | grep -v '^[ ]*$'`
+eval `${cc} -E ${tempcname} \
+ | grep '@configure@' \
+ | sed -e 's/^@configure@//'`
rm ${tempcname}
# Do the opsystem or machine files prohibit the use of the GNU malloc?
@@ -383,7 +452,8 @@ esac
sed_flags="-e 's:@machine@:${machfile}:'"
sed_flags="${sed_flags} -e 's:@opsystem@:${opsysfile}:'"
for flag in `echo ${config_h_opts} | tr ':' ' '`; do
- cflagname=`echo ${flag} | tr a-z A-Z`
+ cflagname=`echo ${flag} \
+ | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
val=`eval echo '$'${flag}`
case ${val} in
no | "")
@@ -411,12 +481,20 @@ rm -f ./Makefile
# editing \`./Makefile.in' itself, or running \`${progname}' instead."
/bin/sed < Makefile.in \
-e '/^# DIST: /d' \
- -e 's;^\(emacsdir=\).*$;\1'"${libroot};" \
+ -e 's;^\(prefix=\).*$;\1'"${prefix};" \
-e 's;^\(bindir=\).*$;\1'"${bindir};" \
- -e 's;^\(lisppath=\).*$;\1'"${lisppath};" \
+ -e 's;^\(emacsdir=\).*$;\1'"${emacsdir};" \
-e 's;^\(datadir=\).*$;\1'"${datadir};" \
+ -e 's;^\(lispdir=\).*$;\1'"${lispdir};" \
+ -e 's;^\(locallisppath=\).*$;\1'"${locallisppath};" \
+ -e 's;^\(lisppath=\).*$;\1'"${lisppath};" \
+ -e 's;^\(buildlisppath=\).*$;\1'"${buildlisppath};" \
+ -e 's;^\(statedir=\).*$;\1'"${statedir};" \
-e 's;^\(lockdir=\).*$;\1'"${lockdir};" \
- -e 's;^\(libdir=\).*$;\1'"${libdir};") > ./Makefile
+ -e 's;^\(libdir=\).*$;\1'"${libdir};" \
+ -e 's;^\(mandir=\).*$;\1'"${mandir};" \
+ -e 's;^\(infodir=\).*$;\1'"${infodir};" \
+) > ./Makefile
# Remind people not to edit this.
chmod -w ./Makefile
@@ -427,12 +505,12 @@ rm -f ./build-install
# If you are thinking about editing it, you should seriously consider
# editing \`./build-install.in' itself, or running \`${progname}' instead."
/bin/sed < build-install.in \
- -e 's;^\(LIBROOT=\).*$;\1'"${libroot};" \
- -e 's;^\(BINDIR=\).*$;\1'"${bindir};" \
- -e 's;^\(LISPPATH=\).*$;\1'"${lisppath};" \
- -e 's;^\(DATADIR=\).*$;\1'"${datadir};" \
- -e 's;^\(LOCKDIR=\).*$;\1'"${lockdir};" \
- -e 's;^\(LIBDIR=\).*$;\1'"${libdir};") > ./build-install
+ -e 's;^\(prefix=\).*$;\1'"${prefix};" \
+ -e 's;^\(bindir=\).*$;\1'"${bindir};" \
+ -e 's;^\(lisppath=\).*$;\1'"${lisppath};" \
+ -e 's;^\(datadir=\).*$;\1'"${datadir};" \
+ -e 's;^\(lockdir=\).*$;\1'"${lockdir};" \
+ -e 's;^\(libdir=\).*$;\1'"${libdir};") > ./build-install
# Remind people not to edit this.
chmod -w build-install
chmod +x build-install
@@ -463,6 +541,11 @@ chmod -w lib-src/Makefile
# Create a verbal description of what we have done.
+if [ "${highpri}" ]; then
+ desc_highpri="${highpri}"
+else
+ desc_highpri="none"
+fi
message="# Configured for machine \`${machine}' running \`${opsystem}'.
# The following values have been set in ./Makefile and ./build-install:
# Executables will be placed in
@@ -477,7 +560,7 @@ message="# Configured for machine \`${machine}' running \`${opsystem}'.
# Emacs will keep track of file-locking in
# ${lockdir}.
# The following values have been set in src/config.h:
-# At how much higher than normal priority should Emacs run? ${highpri-none}
+# At how much higher than normal priority should Emacs run? ${desc_highpri}
# Should Emacs use the GNU version of malloc? ${gnu_malloc}${gnu_malloc_reason}
# Should Emacs use the relocating allocator for buffers? ${rel_alloc}
# Should Emacs support a floating point Elisp type? ${lisp_float_type}
@@ -511,7 +594,8 @@ echo "'${progname}' \\
-gnu_malloc='${gnu_malloc}' \\
-rel_alloc='${rel_alloc}' \\
-highpri='${highpri}' \\
- -lisp_float_type='${lisp_float_type}'" >> config.status
+ -lisp_float_type='${lisp_float_type}' \\
+ $@" >> config.status
# Remind people not to edit this.
chmod -w config.status
chmod +x config.status
diff --git a/etc/=MACHINES b/etc/=MACHINES
index 3e7796021fe..724c95f0797 100644
--- a/etc/=MACHINES
+++ b/etc/=MACHINES
@@ -82,12 +82,12 @@ System V rel 4 (-opsystem=usg5-4)
The standard C preprocessor generate xmakefile incorrectly. However,
/lib/cpp will work, so use `make CPP=/lib/cpp'.
- Versions 3 and earlier of V.4, on the Intel 386 and 860, had problems
- in the X11 libraries. These prevent Emacs from working with X.
- You can use Emacs with X provided your copy of X is based on X11
- release 4 or newer. Unfortunately, the only way you can tell whether
- your X11 library is new enough is to try compiling Emacs to use X.
- If xemacs runs, your X11 library is new enough.
+ Versions 3 and earlier of V.4, on the Intel 386 and 860, had
+ problems in the X11 libraries. These prevent Emacs from working
+ with X. You can use Emacs with X provided your copy of X is based
+ on X11 release 4 or newer. Unfortunately, the only way you can tell
+ whether your X11 library is new enough is to try compiling Emacs to
+ use X. If xemacs runs, your X11 library is new enough.
In this context, GSV4 and GSV4i are alternate names for X11R4.
OL2.* is X11R3 based. OL3 is in between X11R3 and X11R4, and may or
diff --git a/lib-src/=timer.c b/lib-src/=timer.c
index 149625f2995..d7084bfcdc4 100644
--- a/lib-src/=timer.c
+++ b/lib-src/=timer.c
@@ -105,7 +105,7 @@ void
getevent()
{
- extern char *memcpy(), *fgets();
+ extern char *fgets();
struct event *ep;
char buf[256];
@@ -127,7 +127,7 @@ getevent()
free((char *)events[slot]), events[slot] = 0;
else {
- (void)memcpy((char *)events[slot],(char *)ep,sizeof(struct event));
+ memcpy((char *)events[slot],(char *)ep,sizeof(struct event));
if (slot == mevent) mevent++;
} /* schedule */
} /* malloc */
diff --git a/lib-src/etags.c b/lib-src/etags.c
index fed3f584eff..69d29109b69 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -1,5 +1,5 @@
/* Tags file maker to go with GNU Emacs
- Copyright (C) 1984, 1987, 1988, 1989 Free Software Foundation, Inc. and Ken Arnold
+ Copyright (C) 1984, 1987, 1988, 1989, 1992 Free Software Foundation, Inc. and Ken Arnold
This file is part of GNU Emacs.
@@ -31,6 +31,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <sys/types.h>
#include <sys/stat.h>
+#include "getopt.h"
+
#ifdef __GNUC__
#define alloca __builtin_alloca
#else
@@ -410,6 +412,12 @@ DEFINEST definedef;
#define LEVEL_OK_FOR_FUNCDEF() \
(level==0 || c_ext && level==1 && structdef==sinbody)
+/*
+ * next_token_is_func
+ * set this to TRUE, and the next token considered is called a function.
+ */
+logical next_token_is_func;
+
/* C extensions. Currently all listed extensions are C++ dialects, so
* `c_ext' is used as an abbreviation for `c_ext&C_PLPL'. If a non-C++
* dialect is added, this must change.
@@ -436,7 +444,6 @@ char *curfile, /* current input file name */
*intk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789", /* valid in-token chars */
*notgd = ",;"; /* non-valid after-function chars */
-int file_num; /* current file number */
int append_to_tagfile; /* -a: append to tags */
int emacs_tags_format; /* emacs style output (no -e option any more) */
/* The following three default to 1 for etags, but to 0 for ctags. */
@@ -458,6 +465,27 @@ int noindentypedefs; /* -S: ignore indentation in C */
/* Name this program was invoked with. */
char *progname;
+struct option longopts[] = {
+ { "append", no_argument, NULL, 'a' },
+ { "backward-search", no_argument, NULL, 'B' },
+ { "c++", no_argument, NULL, 'C' },
+ { "cxref", no_argument, NULL, 'x' },
+ { "defines", no_argument, NULL, 'd' },
+ { "forward-search", no_argument, NULL, 'F' },
+ { "help", no_argument, NULL, 'H' },
+ { "ignore-indentation", no_argument, NULL, 'S' },
+ { "include", required_argument, NULL, 'i' },
+ { "no-defines", no_argument, NULL, 'D' },
+ { "no-warn", no_argument, NULL, 'w' },
+ { "output", required_argument, NULL, 'o' },
+ { "typedefs", no_argument, NULL, 't' },
+ { "typedefs-and-c++", no_argument, NULL, 'T' },
+ { "update", no_argument, NULL, 'u' },
+ { "version", no_argument, NULL, 'V' },
+ { "vgrind", no_argument, NULL, 'v' },
+ { 0 }
+};
+
FILE *inf, /* ioptr for current input file */
*outf; /* ioptr for tags file */
@@ -481,13 +509,118 @@ struct linebuffer filename_lb; /* used to read in filenames */
void
+print_version ()
+{
+#ifdef CTAGS
+ printf ("CTAGS ");
+#ifdef ETAGS
+ printf ("and ");
+#endif
+#endif
+#ifdef ETAGS
+ printf ("ETAGS ");
+#endif
+ printf ("for Emacs version 19.0.\n");
+
+ exit (0);
+}
+
+void
+print_help ()
+{
+ printf ("These are the options accepted by %s. You may use unambiguous\n\
+abbreviations for the long option names.\n\n", progname);
+
+ fputs ("\
+-a, --append\n\
+ Append tag entries to existing tags file.\n\
+-C, --c++\n\
+ Treat files with `.c' and `.h' extensions as C++ code, not C\n\
+ code. Files with `.C', `.H', `.cxx', `.hxx', or `.cc'\n\
+ extensions are always assumed to be C++ code.\n\
+-d, --defines\n\
+ Create tag entries for #defines, too.", stdout);
+
+#ifdef ETAGS
+ fputs (" This is the default\n\
+ behavior.", stdout);
+#endif
+
+ fputs ("\n\
+-D, --no-defines\n\
+ Don't create tag entries for #defines.", stdout);
+
+#ifdef CTAGS
+ fputs (" This is the default\n\
+ behavior.", stdout);
+#endif
+
+ puts ("\n\
+-o FILE, --output=FILE\n\
+ Write the tags to FILE.\n\
+-S, --ignore-indentation\n\
+ Don't rely on indentation quite as much as normal. Currently,\n\
+ this means not to assume that a closing brace in the first\n\
+ column is the final brace of a function or structure\n\
+ definition.\n\
+-t, --typedefs\n\
+ Generate tag entries for typedefs. This is the default\n\
+ behavior.\n\
+-T, --typedefs-and-c++\n\
+ Generate tag entries for typedefs, struct/enum/union tags, and\n\
+ C++ member functions.");
+
+#ifdef ETAGS
+ puts ("-i FILE, --include=FILE\n\
+ Include a note in tag file indicating that, when searching for\n\
+ a tag, one should also consult the tags file FILE after\n\
+ checking the current file.");
+#endif
+
+#ifdef CTAGS
+ puts ("-B, --backward-search\n\
+ Write the search commands for the tag entries using '?', the\n\
+ backward-search command.\n\
+-F, --forward-search\n\
+ Write the search commands for the tag entries using '/', the\n\
+ forward-search command.\n\
+-u, --update\n\
+ Update the tag entries for the given files, leaving tag\n\
+ entries for other files in place. Currently, this is\n\
+ implemented by deleting the existing entries for the given\n\
+ files and then rewriting the new entries at the end of the\n\
+ tags file. It is often faster to simply rebuild the entire\n\
+ tag file than to use this.\n\
+-v, --vgrind\n\
+ Generates an index of items intended for human consumption,\n\
+ similar to the output of vgrind. The index is sorted, and\n\
+ gives the page number of each item.\n\
+-x, --cxref\n\
+ Like --vgrind, but in the style of cxref, rather than vgrind.\n\
+ The output uses line numbers instead of page numbers, but\n\
+ beyond that the differences are cosmetic; try both to see\n\
+ which you like.\n\
+-w, --no-warn\n\
+ Suppress warning messages about entries defined in multiple\n\
+ files.");
+#endif
+
+ puts ("-V, --version\n\
+ Print the version of the program.\n\
+-H, --help\n\
+ Print this help message.");
+
+ exit (0);
+}
+
+
+void
main (argc, argv)
int argc;
char *argv[];
{
char cmd[100];
int i;
- int outfflag = 0;
unsigned int nincluded_files = 0;
char **included_files = (char **) alloca (argc * sizeof (char *));
char *this_file;
@@ -513,116 +646,109 @@ main (argc, argv)
if (emacs_tags_format)
typedefs = typedefs_and_cplusplus = constantypedefs = 1;
- for (; argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0'; argc--, argv++)
+ for (;;)
{
- for (i = 1; argv[1][i]; i++)
+ int opt;
+ opt = getopt_long (argc, argv, "aCdDo:StTi:BFuvxwVH", longopts, 0);
+
+ if (opt == EOF)
+ break;
+
+ switch (opt)
{
- switch (argv[1][i])
+ case '\0':
+ /* If getopt returns '\0', then it has already processed a
+ long-named option. We should do nothing. */
+ break;
+
+ /* Common options. */
+ case 'a':
+ append_to_tagfile++;
+ break;
+ case 'C':
+ cplusplus = 1;
+ break;
+ case 'd':
+ constantypedefs = 1;
+ break;
+ case 'D':
+ constantypedefs = 0;
+ break;
+ case 'o':
+ if (outfile)
{
- /* Common options. */
- case 'a':
- append_to_tagfile++;
- break;
- case 'C':
- cplusplus = 1;
- break;
- case 'd':
- constantypedefs = 1;
- break;
- case 'D':
- constantypedefs = 0;
- break;
- case 'o':
- if (outfflag)
- {
- fprintf (stderr,
- "%s: -o flag may only be given once\n", progname);
- goto usage;
- }
- outfflag++, argc--;
- argv++;
- if (argc <= 1 || argv[1][0] == '\0')
- {
- fprintf (stderr,
- "%s: -o flag must be followed by a filename\n",
- progname);
- goto usage;
- }
- outfile = argv[1];
- goto next_arg;
- case 'S':
- noindentypedefs++;
- break;
- case 't':
- typedefs++;
- break;
- case 'T':
- typedefs++;
- typedefs_and_cplusplus++;
- break;
-
- /* Etags options */
- case 'i':
- if (!emacs_tags_format)
- goto usage;
- --argc;
- ++argv;
- if (argc <= 1 || argv[1][0] == '\0')
- {
- fprintf (stderr,
- "%s: -i flag must be followed by a filename\n",
- progname);
- goto usage;
- }
- included_files[nincluded_files++] = argv[1];
- goto next_arg;
-
- /* Ctags options. */
- case 'B':
- searchar = '?';
- if (emacs_tags_format)
- goto usage;
- break;
- case 'F':
- searchar = '/';
- if (emacs_tags_format)
- goto usage;
- break;
- case 'u':
- update++;
- if (emacs_tags_format)
- goto usage;
- break;
- case 'v':
- vgrind_style++;
- /*FALLTHRU*/
- case 'x':
- cxref_style++;
- if (emacs_tags_format)
- goto usage;
- break;
- case 'w':
- no_warnings++;
- if (emacs_tags_format)
- goto usage;
- break;
-
- default:
+ fprintf (stderr,
+ "%s: -o flag may only be given once\n", progname);
goto usage;
}
+ outfile = optarg;
+ break;
+ case 'S':
+ noindentypedefs++;
+ break;
+ case 't':
+ typedefs++;
+ break;
+ case 'T':
+ typedefs++;
+ typedefs_and_cplusplus++;
+ break;
+ case 'V':
+ print_version ();
+ break;
+ case 'H':
+ print_help ();
+ break;
+
+ /* Etags options */
+ case 'i':
+ if (!emacs_tags_format)
+ goto usage;
+ included_files[nincluded_files++] = optarg;
+ break;
+
+ /* Ctags options. */
+ case 'B':
+ searchar = '?';
+ if (emacs_tags_format)
+ goto usage;
+ break;
+ case 'F':
+ searchar = '/';
+ if (emacs_tags_format)
+ goto usage;
+ break;
+ case 'u':
+ update++;
+ if (emacs_tags_format)
+ goto usage;
+ break;
+ case 'v':
+ vgrind_style++;
+ /*FALLTHRU*/
+ case 'x':
+ cxref_style++;
+ if (emacs_tags_format)
+ goto usage;
+ break;
+ case 'w':
+ no_warnings++;
+ if (emacs_tags_format)
+ goto usage;
+ break;
+
+ default:
+ goto usage;
}
- next_arg:;
}
- if (argc <= 1)
+ if (optind == argc)
{
+ fprintf (stderr, "%s: No input files specified.\n", progname);
+
usage:
- fprintf (stderr, "Usage:\n");
-#ifndef CTAGS
- fprintf (stderr, "\tetags [-aDiS] [-o tagsfile] file ...\n");
-#else
- fprintf (stderr, "\tctags [-aBdeFTStuwvx] [-o tagsfile] file ...\n");
-#endif
+ fprintf (stderr, "%s: Try '%s --help' for a complete list of options.\n",
+ progname, progname);
exit (BAD);
}
@@ -652,10 +778,10 @@ main (argc, argv)
}
}
- file_num = 1;
#ifdef VMS
- for (argc--, argv++;
- (this_file = gfnames (&argc, &argv, &got_err)) != NULL; file_num++)
+ argc -= optind;
+ argv += optind;
+ while (gfnames (&argc, &argv, &got_err) != NULL)
{
if (got_err)
{
@@ -670,9 +796,9 @@ main (argc, argv)
} /* solely to balance out the ifdef'd parens above */
#endif
#else
- for (; file_num < argc; file_num++)
+ for (; optind < argc; optind++)
{
- this_file = argv[file_num];
+ this_file = argv[optind];
if (1)
{
#endif
@@ -706,9 +832,11 @@ main (argc, argv)
put_entries (head);
exit (GOOD);
}
- if (update) /* update cannot be set under VMS */
+ if (update)
{
- for (i = 1; i < argc; i++)
+ /* update cannot be set under VMS, so we may assume that argc
+ and argv have not been munged. */
+ for (i = optind; i < argc; i++)
{
sprintf (cmd,
"mv %s OTAGS;fgrep -v '\t%s\t' OTAGS >%s;rm OTAGS",
@@ -905,7 +1033,9 @@ find_entries (file)
goto close_and_return;
}
/* if not a .c or .h or .y file, try fortran */
- else if (cp && ((cp[1] != 'c' && cp[1] != 'h' && cp[1] != 'y')
+ else if (cp && ((cp[1] != 'c'
+ && cp[1] != 'h'
+ && cp[1] != 'y')
|| (cp[1] != 0 && cp[2] != 0)))
{
if (PF_funcs (inf) != 0)
@@ -1308,6 +1438,8 @@ C_entries (c_ext)
definedef = dnone;
gotone = midtoken = inquote = inchar = incomm = FALSE;
level = 0;
+ tydef = none;
+ next_token_is_func = 0;
C_create_stabs ();
@@ -1316,6 +1448,9 @@ C_entries (c_ext)
c = *lp++;
if (c == '\\')
{
+ /* If we're at the end of the line, the next character is a
+ '\0'; don't skip it, because it's the thing that tells us
+ to read the next line. */
if (*lp == 0)
continue;
lp++;
@@ -1331,10 +1466,6 @@ C_entries (c_ext)
}
else if (inquote)
{
- /*
- * Too dumb to know about \" not being magic, but
- * they usually occur in pairs anyway.
- */
if (c == '"')
inquote = FALSE;
continue;
@@ -1569,11 +1700,6 @@ consider_token (c, lpp, tokp, is_func, c_ext, level)
int level; /* IN */
{
reg char *lp = *lpp;
- /*
- * next_token_is_func
- * set this to TRUE, and the next token considered is called a function.
- */
- static logical next_token_is_func;
logical firsttok; /* TRUE if have seen first token in ()'s */
Stab_entry *tokse = stab_find (get_C_stab (c_ext), tokp->p, tokp->len);
enum sym_type toktype = stab_type (tokse);
@@ -1758,10 +1884,18 @@ consider_token (c, lpp, tokp, is_func, c_ext, level)
goto goodone;
}
/* Detect GNUmacs's function-defining macros. */
- if (definedef == dnone && strneq (tokp->p, "DEF", 3))
+ if (definedef == dnone)
{
- next_token_is_func = TRUE;
- goto badone;
+ if (strneq (tokp->p, "DEF", 3))
+ {
+ next_token_is_func = TRUE;
+ goto badone;
+ }
+ else if (strneq (tokp->p, "EXFUN", 5))
+ {
+ next_token_is_func = FALSE;
+ goto badone;
+ }
}
if (next_token_is_func)
{
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 347fce775f1..c45f7552aae 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -99,10 +99,12 @@ Called with region narrowed to unformatted header.")
(defvar rmail-last-file nil)
(defvar rmail-last-rmail-file nil)
+;;; Regexp matching the delimiter of messages in UNIX mail format
+;;; (UNIX From lines), minus the initial ^. Note that if you change
+;;; this expression, you must change the code in rmail-nuke-pinhead-header
+;;; that knows the exact ordering of the \\( \\) subexpressions.
(defvar rmail-unix-mail-delimiter
- "From \\([^ \n]*\\(\\|\".*\"[^ \n]*\\)\\) ?\\([^ \n]*\\) \\([^ ]*\\) *\\([0-9]*\\) \\([0-9:]*\\)\\( ?[A-Z]?[A-Z][A-Z]T\\( DST\\)?\\| ?[-+]?[0-9][0-9][0-9][0-9]\\|\\) [0-9][0-9]\\([0-9]*\\) *\\(remote from [^\n]*\\)?\n"
- "Regexp matching the delimiter of messages in UNIX mail format (UNIX From lines), minus the
-initial ^. ")
+ "From \\([^ \n]*\\(\\|\".*\"[^ \n]*\\)\\) ?\\([^ \n]*\\) \\([^ ]*\\) *\\([0-9]*\\) \\([0-9:]*\\)\\( ?[A-Z]?[A-Z][A-Z]T\\( DST\\)?\\| ?[-+]?[0-9][0-9][0-9][0-9]\\|\\) [0-9][0-9]\\([0-9]*\\) *\\(remote from [^\n]*\\)?\n" nil)
;;;; *** Rmail Mode ***
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index 873fc5f5c50..74d6efc4c2d 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -1319,7 +1319,7 @@ element pair in RLIST."
TYPE is number of words preceding KEY to start looking for subject.
MEM is t if results are to be put on Doctor's memory stack.
Return in the global variables SUBJ, VERB and OBJECT."
- (let ((foo (doctor-subjsearch sent key type) sent))
+ (let ((foo (doctor-subjsearch sent key type)))
(or foo
(setq foo sent
mem nil))
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index d8e8f6e3bd5..48e061c3481 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -19,8 +19,6 @@
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
-(provide 'compile)
-
;;;###autoload
(defvar compilation-mode-hook nil
"*List of hook functions run by compilation-mode (see `run-hooks').")
@@ -437,18 +435,30 @@ other kinds of prefix arguments are ignored."
;; If compilation-last-buffer is set to a live buffer, use that.
;; Otherwise, look for a compilation buffer and signal an error
;; if there are none.
-(defun compilation-find-buffer ()
- (if (compilation-buffer-p (current-buffer))
+(defun compilation-find-buffer (&optional other-buffer)
+ (if (and (not other-buffer)
+ (compilation-buffer-p (current-buffer)))
;; The current buffer is a compilation buffer.
(current-buffer)
- (if (and compilation-last-buffer (buffer-name compilation-last-buffer))
+ (if (and compilation-last-buffer (buffer-name compilation-last-buffer)
+ (or (not other-buffer) (not (eq compilation-last-buffer
+ (current-buffer)))))
compilation-last-buffer
(let ((buffers (buffer-list)))
- (while (and buffers (not (compilation-buffer-p (car buffers))))
+ (while (and buffers (or (not (compilation-buffer-p (car buffers)))
+ (and other-buffer
+ (eq (car buffers) (current-buffer)))))
(setq buffers (cdr buffers)))
(if buffers
(car buffers)
- (error "No compilation started!"))))))
+ (or (and other-buffer
+ (compilation-buffer-p (current-buffer))
+ ;; The current buffer is a compilation buffer.
+ (progn
+ (if other-buffer
+ (message "This is the only compilation buffer."))
+ (current-buffer)))
+ (error "No compilation started!")))))))
;;;###autoload
(defun next-error (&optional argp)
@@ -792,3 +802,5 @@ See variable `compilation-parse-errors-function' for the interface it uses."
(setq compilation-error-list (nreverse compilation-error-list)))
(define-key ctl-x-map "`" 'next-error)
+
+(provide 'compile)
diff --git a/lisp/startup.el b/lisp/startup.el
index fa81e24b775..3bd20aa9de5 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1,11 +1,11 @@
;; Process Emacs shell arguments
-;; Copyright (C) 1985, 1986 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1992 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
;; GNU Emacs 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 1, or (at your option)
+;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
@@ -116,7 +116,9 @@ directory name of the directory where the `.emacs' file was looked for.")
(setq command-line-processed t)
;; In presence of symlinks, switch to cleaner form of default directory.
(if (and (not (eq system-type 'vax-vms))
- (getenv "PWD"))
+ (getenv "PWD")
+ (equal (nthcdr 10 (file-attributes default-directory))
+ (nthcdr 10 (file-attributes (getenv "PWD")))))
(setq default-directory (file-name-as-directory (getenv "PWD"))))
(let ((tail directory-abbrev-alist))
(while tail
diff --git a/make-dist b/make-dist
index db0a5cb62c4..cd2773bd5c7 100755
--- a/make-dist
+++ b/make-dist
@@ -14,12 +14,17 @@ set -e
# Print out each line we read, for debugging's sake.
# set -v
-cleanup=yes
+clean_up=yes
+make_tar=yes
while [ $# -gt 0 ]; do
case "$1" in
- "--no-cleanup" )
- cleanup=no
+ "--no-clean_up" )
+ clean_up=no
+ ;;
+ "--no-tar" )
+ make_tar=no
+ clean_up=no
;;
* )
echo "${progname}: Unrecognized argument: $1" >&2
@@ -65,9 +70,10 @@ mkdir ${tempdir}
# We copy in the top-level files before creating the subdirectories in
# hopes that this will make the top-level files appear first in the
-# tar file.
+# tar file; this means that people can start reading the INSTALL and
+# README while the rest of the tar file is still unpacking. Whoopee.
echo "Copying top-level files."
-ln INSTALL PROBLEMS README ${tempdir}
+ln GETTING.GNU.SOFTWARE INSTALL PROBLEMS README ${tempdir}
ln ChangeLog Makefile.in build-install.in configure make-dist ${tempdir}
echo "Creating subdirectories."
@@ -174,10 +180,12 @@ for subdir in lisp src lib-src info shortnames; do
ln -s ../etc/COPYING ${tempdir}/${subdir}
done
-echo "Creating tar file."
-(cd ${tempparent}; tar cvf - ${emacsname}) | compress > ${emacsname}.tar.Z
+if [ "${make_tar}" = yes ]; then
+ echo "Creating tar file."
+ (cd ${tempparent}; tar cvf - ${emacsname}) | compress > ${emacsname}.tar.Z
+fi
-if [ "${cleanup}" = yes ]; then
+if [ "${clean_up}" = yes ]; then
echo "Cleaning up the staging directory."
rm -rf ${tempparent}
fi
diff --git a/src/bytecode.c b/src/bytecode.c
index acde450299c..5ab689f1925 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1,11 +1,11 @@
/* Execution of byte code produced by bytecomp.el.
- Copyright (C) 1985, 1986, 1987, 1988 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1987, 1988, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -1077,8 +1077,7 @@ If the third argument is incorrect, Emacs may crash.")
break;
case Bnumberp:
- TOP = (XTYPE (TOP) == Lisp_Int || XTYPE (TOP) == Lisp_Float
- ? Qt : Qnil);
+ TOP = (NUMBERP (TOP) ? Qt : Qnil);
break;
case Bintegerp:
diff --git a/src/callint.c b/src/callint.c
index ffee0785095..0075ef721dc 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -408,12 +408,7 @@ Otherwise, this is done only if an arg is read using the minibuffer.")
case 'n': /* Read number from minibuffer. */
do
args[i] = Fread_minibuffer (build_string (prompt), Qnil);
-#ifdef LISP_FLOAT_TYPE
- while (XTYPE (args[i]) != Lisp_Int
- && XTYPE (args[i]) != Lisp_Float);
-#else
- while (XTYPE (args[i]) != Lisp_Int);
-#endif
+ while (! NUMBERP (args[i]));
visargs[i] = last_minibuf_string;
break;
diff --git a/src/callproc.c b/src/callproc.c
index d22393a2635..68b447d401d 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -200,7 +200,7 @@ If you quit, the process is killed with SIGKILL.")
env = environ;
#if 0 /* Some systems don't have sigblock. */
- mask = sigblock (sigmask (SIGCHLD));
+ EMACS_SIGBLOCK (sigmask (SIGCHLD), mask);
#endif
/* Record that we're about to create a synchronous process. */
@@ -511,6 +511,7 @@ This function consults the variable ``process-environment'' for its value.")
callable from C. */
char *
egetenv (var)
+ char *var;
{
char *value;
int valuelen;
diff --git a/src/editfns.c b/src/editfns.c
index d0db0837591..0ef059aa055 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1094,20 +1094,24 @@ Use %% to put a single % into the output.")
/* Would get MPV otherwise, since Lisp_Int's `point' to low memory. */
else if (XTYPE (args[n]) == Lisp_Int && *format != 's')
{
+#ifdef LISP_FLOAT_TYPE
/* The following loop issumes the Lisp type indicates
the proper way to pass the argument.
So make sure we have a flonum if the argument should
be a double. */
if (*format == 'e' || *format == 'f' || *format == 'g')
args[n] = Ffloat (args[n]);
+#endif
total += 10;
}
+#ifdef LISP_FLOAT_TYPE
else if (XTYPE (args[n]) == Lisp_Float && *format != 's')
{
if (! (*format == 'e' || *format == 'f' || *format == 'g'))
args[n] = Ftruncate (args[n]);
total += 20;
}
+#endif
else
{
/* Anything but a string, convert to a string using princ. */
@@ -1131,6 +1135,7 @@ Use %% to put a single % into the output.")
/* We checked above that the corresponding format effector
isn't %s, which would cause MPV. */
strings[n] = (unsigned char *) XINT (args[n]);
+#ifdef LISP_FLOAT_TYPE
else if (XTYPE (args[n]) == Lisp_Float)
{
union { double d; int half[2]; } u;
@@ -1139,6 +1144,7 @@ Use %% to put a single % into the output.")
strings[n++] = (unsigned char *) u.half[0];
strings[n] = (unsigned char *) u.half[1];
}
+#endif
else
strings[n] = XSTRING (args[n])->data;
}
diff --git a/src/fileio.c b/src/fileio.c
index ea7f8c6250f..f977ee0c623 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1,11 +1,11 @@
/* File IO for GNU Emacs.
- Copyright (C) 1985, 1986, 1987, 1988 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1987, 1988, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -411,7 +411,7 @@ directory_file_name (src, dst)
/* Process as Unix format: just remove any final slash.
But leave "/" unchanged; do not change it to "". */
strcpy (dst, src);
- if (dst[slen - 1] == '/' && slen > 1)
+ if (slen > 1 && dst[slen - 1] == '/')
dst[slen - 1] = 0;
return 1;
}
@@ -2478,7 +2478,7 @@ Auto-saving writes the buffer into a file\n\
so that your editing is not lost if the system crashes.\n\
This file is not the file you visited; that changes only when you save.\n\n\
Non-nil first argument means do not print any message if successful.\n\
-Non-nil second argumet means save only current buffer.")
+Non-nil second argument means save only current buffer.")
(nomsg)
Lisp_Object nomsg;
{
diff --git a/src/floatfns.c b/src/floatfns.c
index 12f14ffef72..ed94c9ebafe 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -1,11 +1,11 @@
/* Primitive operations on floating point for GNU Emacs Lisp interpreter.
- Copyright (C) 1988 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -42,7 +42,7 @@ extern int errno;
#define sinh(x) ((exp(x)-exp(-x))*0.5)
#endif /* VMS */
-static float_error ();
+static SIGTYPE float_error ();
/* Nonzero while executing in floating point.
This tells float_error what to do. */
@@ -60,8 +60,8 @@ static Lisp_Object float_error_arg;
Handle errors which may result in signals or may set errno. */
#define IN_FLOAT(D, NUM) \
-(in_float = 1, errno = 0, float_error_arg = NUM, (D), \
- (errno == ERANGE || errno == EDOM ? float_error () : 0), \
+(in_float = 1, errno = 0, float_error_arg = NUM, (D), \
+ (errno == ERANGE || errno == EDOM ? float_error () : (SIGTYPE) 0), \
in_float = 0)
/* Extract a Lisp number as a `double', or signal an error. */
@@ -498,7 +498,7 @@ Rounds the value toward zero.")
return num;
}
-static
+static SIGTYPE
float_error (signo)
int signo;
{
diff --git a/src/lisp.h b/src/lisp.h
index 1e5d4bf9365..c7dd07058eb 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1,11 +1,11 @@
/* Fundamental definitions for GNU Emacs Lisp interpreter.
- Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1987, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -506,15 +506,19 @@ typedef unsigned char UCHAR;
/* Data type checking */
-#ifdef NULL
-#undef NULL
-#endif
#define NILP(x) (XFASTINT (x) == XFASTINT (Qnil))
+#ifdef LISP_FLOAT_TYPE
+#define NUMBERP(x) (XTYPE (x) == Lisp_Int || XTYPE (x) == Lisp_Float)
+#else
+#define NUMBERP(x) (XTYPE (x) == Lisp_Int)
+#endif
+
/* #define LISTP(x) (XTYPE ((x)) == Lisp_Cons)*/
#define CONSP(x) (XTYPE ((x)) == Lisp_Cons)
#define EQ(x, y) (XFASTINT (x) == XFASTINT (y))
+
#define CHECK_LIST(x, i) \
{ if ((XTYPE ((x)) != Lisp_Cons) && !NILP (x)) x = wrong_type_argument (Qlistp, (x)); }
diff --git a/src/lread.c b/src/lread.c
index 78d578758b0..c3157c8d618 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1448,14 +1448,15 @@ init_lread ()
uses ../lisp, instead of the path of the installed elisp
libraries. However, if it appears that Vload_path was changed
from the default before dumping, don't override that value. */
- {
- Lisp_Object normal_path;
-
- normal_path = decode_env_path ("", normal);
+ if (initialized)
+ {
+ Lisp_Object dump_path;
- if (
- if (initialized
- || EQ (Vload_path, initial_path))
+ dump_path = decode_env_path ("", PATH_DUMPLOADSEARCH);
+ if (! NILP (Fequal (dump_path, Vload_path)))
+ Vload_path = decode_env_path ("", normal);
+ }
+ else
Vload_path = decode_env_path ("", normal);
#endif
@@ -1487,11 +1488,6 @@ init_lread ()
Vvalues = Qnil;
- if (initialized)
- initial_path = Qnil;
- else
- initial_path = Vload_path;
-
load_in_progress = 0;
}
diff --git a/src/print.c b/src/print.c
index b65db9aedc6..8ab40735e38 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1,11 +1,11 @@
/* Lisp object printing and output streams.
- Copyright (C) 1985, 1986, 1988 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1988, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -566,12 +566,12 @@ Output stream is STREAM, or value of `standard-output' (which see).")
for the convenience of the debugger. */
Lisp_Object Qexternal_debugging_output;
-DEFUN ("external-debugging-output",
- Fexternal_debugging_output, Sexternal_debugging_output,
- 1, 1, 0, "Write CHARACTER to stderr.\n\
+DEFUN ("external-debugging-output", Fexternal_debugging_output, Sexternal_debugging_output, 1, 1, 0,
+ "Write CHARACTER to stderr.\n\
You can call print while debugging emacs, and pass it this function\n\
to make it write to the debugging output.\n")
- (Lisp_Object character)
+ (character)
+ Lisp_Object character;
{
CHECK_NUMBER (character, 0);
putc (XINT (character), stderr);
diff --git a/src/process.c b/src/process.c
index 1bdc27be91b..442cae6d159 100644
--- a/src/process.c
+++ b/src/process.c
@@ -403,7 +403,7 @@ status_message (status)
}
#ifdef HAVE_PTYS
-static pty_process;
+static int pty_process;
/* Open an available pty, returning a file descriptor.
Return -1 on failure.
@@ -1803,6 +1803,7 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
if (read_kbd && detect_input_pending ())
break;
+#ifdef SIGIO
/* If we think we have keyboard input waiting, but didn't get SIGIO
go read it. This can happen with X on BSD after logging out.
In that case, there really is no input and no SIGIO,
@@ -1813,6 +1814,7 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
*/
if (read_kbd && interrupt_input && (FD_ISSET (fileno (stdin), &Available)))
kill (0, SIGIO);
+#endif
#ifdef vipc
/* Check for connection from other process */
@@ -2106,12 +2108,14 @@ send_process (proc, buf, len)
while (len > 0)
{
int this = len;
+ SIGTYPE (*old_sigpipe)();
+
/* Don't send more than 500 bytes at a time. */
if (this > 500)
this = 500;
- signal (SIGPIPE, send_process_trap);
+ old_sigpipe = signal (SIGPIPE, send_process_trap);
rv = write (XFASTINT (XPROCESS (proc)->outfd), buf, this);
- signal (SIGPIPE, SIG_DFL);
+ signal (SIGPIPE, old_sigpipe);
if (rv < 0)
{
if (0
diff --git a/src/ralloc.c b/src/ralloc.c
index fe22ae4ffe1..927c2dd5477 100644
--- a/src/ralloc.c
+++ b/src/ralloc.c
@@ -27,6 +27,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "lisp.h" /* Needed for VALBITS. */
#undef NULL
#include "mem_limits.h"
+#include "getpagesize.h"
#define NIL ((POINTER) 0)
diff --git a/src/s/hpux.h b/src/s/hpux.h
index 33de0875602..e146501004c 100644
--- a/src/s/hpux.h
+++ b/src/s/hpux.h
@@ -228,6 +228,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define HAVE_GETTIMEOFDAY
#define HAVE_VFORK
#define HAVE_PERROR /* Delete this line for version 6. */
+#define HAVE_RENAME
/* The following maps shared exec file to demand loaded exec.
Don't do this as demand loaded exec is broken in hpux. */
@@ -253,8 +254,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* This is how to get the device name of the tty end of a pty. */
#define PTY_TTY_NAME_SPRINTF \
- sprintf (ptyname, "/dev/pty/tty%c%x", c, i);
+ sprintf (pty_name, "/dev/pty/tty%c%x", c, i);
/* This is how to get the device name of the control end of a pty. */
#define PTY_NAME_SPRINTF \
- sprintf (ptyname, "/dev/ptym/pty%c%x", c, i);
+ sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);
diff --git a/src/search.c b/src/search.c
index cad14a47560..46ff1ec7e77 100644
--- a/src/search.c
+++ b/src/search.c
@@ -23,6 +23,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "syntax.h"
#include "buffer.h"
#include "commands.h"
+
#include <sys/types.h>
#include "regex.h"
@@ -39,9 +40,14 @@ char search_fastmap[0400];
Lisp_Object last_regexp;
-/* Every call to re_match, etc., must pass &search_regs as the regs argument
- unless you can show it is unnecessary (i.e., if re_match is certainly going
- to be called again before region-around-match can be called). */
+/* Every call to re_match, etc., must pass &search_regs as the regs
+ argument unless you can show it is unnecessary (i.e., if re_match
+ is certainly going to be called again before region-around-match
+ can be called).
+
+ Since the registers are now dynamically allocated, we need to make
+ sure not to refer to the Nth register before checking that it has
+ been allocated. */
static struct re_registers search_regs;
@@ -147,7 +153,7 @@ DEFUN ("looking-at", Flooking_at, Slooking_at, 1, 1, 0,
matcher_overflow ();
val = (0 <= i ? Qt : Qnil);
- for (i = 0; i < RE_NREGS; i++)
+ for (i = 0; i < search_regs.num_regs; i++)
if (search_regs.start[i] >= 0)
{
search_regs.start[i] += BEGV;
@@ -489,7 +495,7 @@ search_buffer (string, pos, lim, n, RE, trt, inverse_trt)
/* generality of an RE search is */
/* really needed. */
/* first item is "exact match" */
- && *(searchbuf.buffer) == RE_EXACTN_VALUE
+ && *(searchbuf.buffer) == (char) RE_EXACTN_VALUE
&& searchbuf.buffer[1] + 2 == searchbuf.used) /*first is ONLY item */
{
RE = 0; /* can do straight (non RE) search */
@@ -542,7 +548,7 @@ search_buffer (string, pos, lim, n, RE, trt, inverse_trt)
if (val >= 0)
{
j = BEGV;
- for (i = 0; i < RE_NREGS; i++)
+ for (i = 0; i < search_regs.num_regs; i++)
if (search_regs.start[i] >= 0)
{
search_regs.start[i] += j;
@@ -569,7 +575,7 @@ search_buffer (string, pos, lim, n, RE, trt, inverse_trt)
if (val >= 0)
{
j = BEGV;
- for (i = 0; i < RE_NREGS; i++)
+ for (i = 0; i < search_regs.num_regs; i++)
if (search_regs.start[i] >= 0)
{
search_regs.start[i] += j;
@@ -996,6 +1002,10 @@ Leaves point at end of replacement text.")
case_action = nochange; /* We tried an initialization */
/* but some C compilers blew it */
+
+ if (search_regs.num_regs <= 0)
+ error ("replace-match called before any match found");
+
if (search_regs.start[0] < BEGV
|| search_regs.start[0] > search_regs.end[0]
|| search_regs.end[0] > ZV)
@@ -1068,7 +1078,7 @@ Leaves point at end of replacement text.")
Finsert_buffer_substring (Fcurrent_buffer (),
make_number (search_regs.start[0]),
make_number (search_regs.end[0]));
- else if (c >= '1' && c <= RE_NREGS + '0')
+ else if (c >= '1' && c <= search_regs.num_regs + '0')
{
if (search_regs.start[c - '0'] >= 1)
Finsert_buffer_substring (Fcurrent_buffer (),
@@ -1103,9 +1113,10 @@ match_limit (num, beginningp)
CHECK_NUMBER (num, 0);
n = XINT (num);
- if (n < 0 || n >= RE_NREGS)
- args_out_of_range (num, make_number (RE_NREGS));
- if (search_regs.start[n] < 0)
+ if (n < 0 || n >= search_regs.num_regs)
+ args_out_of_range (num, make_number (search_regs.num_regs));
+ if (search_regs.num_regs <= 0
+ || search_regs.start[n] < 0)
return Qnil;
return (make_number ((beginningp) ? search_regs.start[n]
: search_regs.end[n]));
@@ -1141,11 +1152,14 @@ if the last match was on a buffer; integers or nil if a string was matched.\n\
Use `store-match-data' to reinstate the data in this list.")
()
{
- Lisp_Object data[2 * RE_NREGS];
+ Lisp_Object *data;
int i, len;
+ data = (Lisp_Object *) alloca ((2 * search_regs.num_regs)
+ * sizeof (Lisp_Object));
+
len = -1;
- for (i = 0; i < RE_NREGS; i++)
+ for (i = 0; i < search_regs.num_regs; i++)
{
int start = search_regs.start[i];
if (start >= 0)
@@ -1184,7 +1198,30 @@ LIST should have been created by calling `match-data' previously.")
if (!CONSP (list) && !NILP (list))
list = wrong_type_argument (Qconsp, list, 0);
- for (i = 0; i < RE_NREGS; i++)
+ /* Allocate registers if they don't already exist. */
+ {
+ int length = Flength (list) / 2;
+
+ if (length > search_regs.num_regs)
+ {
+ if (search_regs.start)
+ search_regs.start =
+ (regoff_t *) realloc (search_regs.start,
+ length * sizeof (regoff_t));
+ else
+ search_regs.start = (regoff_t *) malloc (length * sizeof (regoff_t));
+ if (search_regs.end)
+ search_regs.end =
+ (regoff_t *) realloc (search_regs.end,
+ length * sizeof (regoff_t));
+ else
+ search_regs.end = (regoff_t *) malloc (length * sizeof (regoff_t));
+
+ search_regs.num_regs = length;
+ }
+ }
+
+ for (i = 0; i < search_regs.num_regs; i++)
{
marker = Fcar (list);
if (NILP (marker))
diff --git a/src/sysdep.c b/src/sysdep.c
index 1483898478d..03614f98cce 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -110,19 +110,6 @@ extern char *sys_errlist[];
#endif /* not 4.1 */
#endif /* BSD */
-#ifdef AIX
-/* Get files for keyboard remapping */
-#define HFNKEYS 2
-#include <sys/hft.h>
-#include <sys/devinfo.h>
-#endif
-
-/* Get rid of LLITOUT in 4.1, since it is said to stimulate kernel bugs. */
-#ifdef BSD4_1
-#undef LLITOUT
-#define LLITOUT 0
-#endif /* 4.1 */
-
#ifdef BROKEN_TIOCGWINSZ
#undef TIOCGWINSZ
#endif
@@ -144,31 +131,6 @@ extern char *sys_errlist[];
#endif /* TIOCGWINSZ */
#endif /* USG */
-#ifdef NEED_BSDTTY
-#include <sys/bsdtty.h>
-#endif
-
-#if defined (HPUX) && defined (HAVE_PTYS)
-#include <sys/ptyio.h>
-#endif
-
-#ifdef AIX
-#include <sys/pty.h>
-#include <unistd.h>
-#endif /* AIX */
-
-#ifdef SYSV_PTYS
-#include <sys/tty.h>
-#include <sys/pty.h>
-#endif
-
-/* saka@pfu.fujitsu.co.JP writes:
- FASYNC defined in this file. But, FASYNC don't working.
- so no problem, because unrequest_sigio only need. */
-#if defined (pfa)
-#include <sys/file.h>
-#endif
-
extern int quit_char;
#include "screen.h"
@@ -2348,6 +2310,8 @@ getwd (pathname)
* that files be of same type (regular->regular, dir->dir, etc).
*/
+#ifndef HAVE_RENAME
+
rename (from, to)
char *from;
char *to;
@@ -2362,9 +2326,11 @@ rename (from, to)
return (-1);
}
+#endif
+
/* Set priority value to PRIO. */
-void
+int
setpriority (which, who, prio)
int which, who, prio;
{
diff --git a/src/systty.h b/src/systty.h
index 07f12eb33d1..4bbf021595d 100644
--- a/src/systty.h
+++ b/src/systty.h
@@ -33,6 +33,44 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#endif /* not HAVE_TERMIOS */
#endif /* not HAVE_TERMIO */
+#ifdef AIX
+/* Get files for keyboard remapping */
+#define HFNKEYS 2
+#include <sys/hft.h>
+#include <sys/devinfo.h>
+#endif
+
+/* Get rid of LLITOUT in 4.1, since it is said to stimulate kernel bugs. */
+#ifdef BSD4_1
+#undef LLITOUT
+#define LLITOUT 0
+#endif /* 4.1 */
+
+#ifdef NEED_BSDTTY
+#include <sys/bsdtty.h>
+#endif
+
+#if defined (HPUX) && defined (HAVE_PTYS)
+#include <sys/ptyio.h>
+#endif
+
+#ifdef AIX
+#include <sys/pty.h>
+#include <unistd.h>
+#endif /* AIX */
+
+#ifdef SYSV_PTYS
+#include <sys/tty.h>
+#include <sys/pty.h>
+#endif
+
+/* saka@pfu.fujitsu.co.JP writes:
+ FASYNC defined in this file. But, FASYNC don't working.
+ so no problem, because unrequest_sigio only need. */
+#if defined (pfa)
+#include <sys/file.h>
+#endif
+
/* Special cases - inhibiting the use of certain features. */
@@ -184,6 +222,13 @@ struct emacs_tty {
(tcsetattr ((fd), (waitp) ? TCSAFLUSH : TCSADRAIN, &(p)->main) != -1)
#else
+#ifdef HAVE_TERMIO
+
+#define EMACS_GET_TTY_1(fd, p) (ioctl ((fd), TCGETA, &(p)->main) != -1)
+#define EMACS_SET_TTY_1(fd, p, waitp) \
+ (ioctl ((fd), (waitp) ? TCSETAW : TCSETAF, &(p)->main) != -1)
+
+#else
#ifdef VMS
/* These definitions will really only work in sysdep.c, because of their
@@ -203,6 +248,7 @@ struct emacs_tty {
#endif
#endif
+#endif
#ifdef TIOCGLTC
struct ltchars ltchars;
diff --git a/src/term.c b/src/term.c
index c23723217e5..e9f7ddbcd18 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1,11 +1,11 @@
/* terminal control module for terminals described by TERMCAP
- Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1987, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -465,6 +465,7 @@ change_line_highlight (new_highlight, vpos, first_unused_hpos)
/* Move to absolute position, specified origin 0 */
cursor_to (row, col)
+ int row, col;
{
if (! SCREEN_IS_TERMCAP ((updating_screen
? updating_screen
@@ -488,6 +489,7 @@ cursor_to (row, col)
/* Similar but don't take any account of the wasted characters. */
raw_cursor_to (row, col)
+ int row, col;
{
if (! SCREEN_IS_TERMCAP ((updating_screen ? updating_screen : selected_screen)))
{
@@ -1393,6 +1395,7 @@ It may be necessary to do `unsetenv TERMCAP' as well.\n",
/* VARARGS 1 */
fatal (str, arg1, arg2)
+ char *str, *arg1, *arg2;
{
fprintf (stderr, "emacs: ");
fprintf (stderr, str, arg1, arg2);
diff --git a/src/xfns.c b/src/xfns.c
index 4f3a7ff9e2b..d3943a5f779 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1,11 +1,11 @@
/* Functions for the X window system.
- Copyright (C) 1989 Free Software Foundation.
+ Copyright (C) 1989, 1992 Free Software Foundation.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -3950,7 +3950,8 @@ also be depressed for NEWSTRING to appear.")
register Lisp_Object newstring;
{
char *rawstring;
- register KeySym keysym, modifier_list[16];
+ register KeySym keysym;
+ KeySym modifier_list[16];
CHECK_STRING (x_keysym, 1);
CHECK_STRING (newstring, 3);
diff --git a/src/xterm.c b/src/xterm.c
index 05ad3bc588d..1df1c7d36ba 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1,11 +1,11 @@
/* X Communication module for terminals which understand the X protocol.
- Copyright (C) 1989 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1992 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs 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 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -258,8 +258,8 @@ static void dumpqueue ();
#endif
void dumpborder ();
-static XTcursor_to ();
-static XTclear_end_of_line ();
+static int XTcursor_to ();
+static int XTclear_end_of_line ();
/* These hooks are called by update_screen at the beginning and end
of a screen update. We record in `updating_screen' the identity
@@ -361,7 +361,7 @@ XTreset_terminal_modes ()
where display update commands will take effect.
This does not affect the place where the cursor-box is displayed. */
-static
+static int
XTcursor_to (row, col)
register int row, col;
{
@@ -582,7 +582,7 @@ XTwrite_glyphs (start, len)
to column FIRST_UNUSED (exclusive). The idea is that everything
from FIRST_UNUSED onward is already erased. */
-static
+static int
XTclear_end_of_line (first_unused)
register int first_unused;
{
@@ -2775,6 +2775,19 @@ x_text_icon (s, icon_name)
return 0;
}
+/* Handling X errors. */
+
+/* A handler for SIGPIPE, when it occurs on the X server's connection.
+ This basically does an orderly shutdown of Emacs. */
+static SIGTYPE
+x_death_handler ()
+{
+ if (_Xdebug)
+ abort ();
+ else
+ Fkill_emacs (make_number (70));
+}
+
static char *x_proto_requests[] =
{
"CreateWindow",
@@ -2961,14 +2974,9 @@ x_error_handler (disp, event)
}
UNBLOCK_INPUT;
- if (_Xdebug)
- abort ();
- else
- Fkill_emacs (make_number (70));
+ x_death_handler ();
}
-/* Initialize communication with the X window server. */
-
#if 0
static unsigned int x_wire_count;
x_trace_wire ()
@@ -3740,7 +3748,7 @@ x_term_init (display_name)
signal (SIGWINCH, SIG_DFL);
#endif /* SIGWINCH */
- signal (SIGPIPE, x_error_handler);
+ signal (SIGPIPE, x_death_handler);
}
void