ELFize. Also, upgrade to mule-2.3 based on emacs-19.34b (used to be

19.28).

PR:		8178
Submitted by:	taoka@infonets.hiroshima-u.ac.jp
This commit is contained in:
Satoshi Asami 1998-10-07 08:11:41 +00:00
parent a783310e66
commit 2e7cf46d9c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=13703
70 changed files with 5146 additions and 2282 deletions

View file

@ -1,15 +1,13 @@
# New ports collection makefile for: mule with Wnn4
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Wnn4
# Version required: 2.3@19.34
# Date created: 20 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.2 1997/09/22 17:48:36 max Exp $
# $Id: Makefile,v 1.3 1998/09/27 00:01:11 steve Exp $
#
PKGNAME= zh-mule-wnn4-2.3
CATEGORIES= chinese editors
CWNN4= yes
BROKEN_ELF= build
.include "${.CURDIR}/../../editors/mule/Makefile"

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,35 +1,48 @@
# New ports collection makefile for: files except executables for mule
# Version required: 2.3
# New ports collection makefile for: files except executables for mule 2.3@19.34
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id$
# $Id: Makefile,v 1.30 1997/09/10 08:49:44 asami Exp $
#
DISTNAME= mule-2.3
PKGNAME= mule-common-2.3
CATEGORIES= editors chinese japanese korean
CATEGORIES= editors japanese
MASTER_SITES= ftp://etlport.etl.go.jp/pub/mule/ \
ftp://ftp.mei.co.jp/archive/free/gnu/emacs/Mule/ \
ftp://ftp.iij.ad.jp/pub/misc/mule/ \
ftp://ports.jp.FreeBSD.org/pub/incoming/distfiles/
DISTFILES= mule-2.3.tar.gz mule-2.3.patch-970819.tar.gz
http://www.infonets.hiroshima-u.ac.jp/~taoka/FreeBSD/mule/
DISTFILES= emacs-19.34b.tar.gz mule-2.3-19.34.patch-981002.tar.gz
PATCH_SITES= ftp://etlport.etl.go.jp/pub/mule/
PATCHFILES= mule-23-1934-alpha01.diff.gz
PATCH_DIST_STRIP= -p1
MAINTAINER= taoka@infonets.hiroshima-u.ac.jp
EXTRACT_ONLY= mule-2.3.tar.gz
.for dir in editors/mule japanese/mule-canna japanese/mule-canna+sj3 \
japanese/mule-canna japanese/mule-canna+sj3 \
japanese/mule-canna+sj3+wnn4 japanese/mule-canna+sj3+wnn6 \
japanese/mule-canna+wnn4 japanese/mule-canna+wnn6 \
japanese/mule-sj3 japanese/mule-sj3+wnn japanese/mule-sj3+wnn6 \
japanese/mule-wnn4 japanese/mule-wnn6 \
chinese/mule-wnn4 korean/mule-wnn4
.if exists(${.CURDIR}/../../${dir}/work/.build_done)
.for dir in chinese/mule-wnn4 \
editors/mule \
japanese/mule-canna+sj3+wnn4 \
japanese/mule-canna+sj3+wnn6 \
japanese/mule-canna+sj3 \
japanese/mule-canna+wnn4 \
japanese/mule-canna+wnn6 \
japanese/mule-canna \
japanese/mule-sj3+wnn4 \
japanese/mule-sj3+wnn6 \
japanese/mule-sj3 \
japanese/mule-wnn4 \
japanese/mule-wnn6 \
korean/mule-wnn4
.if exists(${.CURDIR}/../../${dir}/work/.install_done)
WRKDIR= ${.CURDIR}/../../${dir}/work
.elif exists(${.CURDIR}/../../${dir}/work/.build_done)
WRKDIR?= ${.CURDIR}/../../${dir}/work
.endif
.endfor
WRKSRC= ${WRKDIR}/mule
WRKSRC= ${WRKDIR}/emacs-19.34
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/mule.sh
.if !defined(WRKDIR) && !defined(PACKAGE_BUILDING)
BROKEN= You should build install one of the other mule ports first
@ -37,39 +50,44 @@ BROKEN= You should build install one of the other mule ports first
INSTALL_COOKIE= ${WRKDIR}/.install_done-${PKGNAME}
PACKAGE_COOKIE= ${WRKDIR}/.package_done-${PKGNAME}
TMPPLIST= ${WRKDIR}/.PLIST.mktmp-${PKGNAME}
PLIST_SUB= EMACS_VERSION=19.34
USE_GMAKE= yes
GNU_CONFIGURE= yes
USE_GMAKE= yes
CONFIGURE_ARGS= i386--freebsd --with-x-toolkit \
--terminal-face \
EMACS_PREFIX= mule
EMACS_EXECUTABLE = mule
CONFIGURE_ARGS= i386--freebsd --with-executable=${EMACS_EXECUTABLE} \
--with-emacs-prefix=${EMACS_PREFIX} \
--with-terminal-face \
--x-includes=${X11BASE}/include --x-libraries=${X11BASE}/lib \
--locallisppath=${PREFIX}/lib/mule/site-lisp:${PREFIX}/share/emacs/site-lisp
STRIP=
MAN1= coco.1 ctags.1 etags.1 m2ps.1 mule.1
MAN1= coco.1 ctags.1 etags.1 m2ps.1 emacs.1 mule.1
INSTALL_TARGET= install-arch-indep
post-extract:
${EXTRACT_CMD} -C ${WRKSRC} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/mule-2.3.patch-970819.tar.gz
cd ${WRKSRC}; ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ./takana.tar.gz
pre-patch:
cd ${WRKSRC}; ${PATCH} ${PATCH_DIST_ARGS} < ${WRKSRC}/patch
post-patch:
cd ${WRKSRC}; ${PATCH} ${PATCH_DIST_ARGS} < ${WRKSRC}/Mule-2.3.patch
${CP} ${FILESDIR}/unexfreebsd.c ${WRKSRC}/src
pre-build:
find ${WRKSRC} \( -name \*.orig -o -name \*~ \) -exec ${RM} -f \{} \;
${RM} -f ${WRKSRC}/etc/DOC* ${WRKSRC}/src/emacs ${WRKSRC}/src/emacs-19.28.*
${RM} -f ${WRKSRC}/etc/DOC* ${WRKSRC}/src/emacs ${WRKSRC}/src/emacs-19.34.*
post-install:
# note that any2ps rcs-checkin are scripts
.for file in b2m coco ctags emacsclient etags m2ps
strip ${PREFIX}/bin/${file}
.endfor
if [ ! -f ${PREFIX}/info/dir ]; then \
${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/info/dir; \
fi
.for info in emacs vip forms gnus cl sc
if [ ! -f ${PREFIX}/share/mule/19.34/info/dir ]; then \
${MKDIR} ${PREFIX}/share/mule/19.34/info; \
${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/share/mule/19.34/info/dir; \
fi
.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode message
install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir
.endfor
# Our makeinfo can't handle files with Japanese characters. :<
@ -80,6 +98,19 @@ post-install:
install-info --section="The Emacs editor and associated tools" --entry="* Canna-jp: (canna-jp). Another Japanese Inputting Method. (Japanese)" ${PREFIX}/info/canna-jp ${PREFIX}/info/dir
@${SH} ${PKGDIR}/INSTALL ${PKGNAME} POST-INSTALL
@${TOUCH} ${TOUCH_FLAGS} ${INSTALL_COOKIE}
if [ ! -f ${STARTUP_SCRIPT} ]; then \
${ECHO} "Installing ${STARTUP_SCRIPT} startup file."; \
${ECHO} '#!/bin/sh' > ${STARTUP_SCRIPT}; \
${ECHO} 'echo -n " Mule"' >> ${STARTUP_SCRIPT}; \
${ECHO} 'if [ -d /var/run/emacs/lock ]; then' >> ${STARTUP_SCRIPT}; \
${ECHO} ' rm -f /var/run/emacs/lock/*' >> ${STARTUP_SCRIPT}; \
${ECHO} "else" >> ${STARTUP_SCRIPT}; \
${ECHO} " mkdir -p /var/run/emacs/lock" >> ${STARTUP_SCRIPT}; \
${ECHO} "fi" >> ${STARTUP_SCRIPT} ; \
${ECHO} "chmod 1777 /var/run/emacs/lock${lockdir}" >> ${STARTUP_SCRIPT} ; \
chmod 755 ${STARTUP_SCRIPT} ; \
chown bin.bin ${STARTUP_SCRIPT}; \
fi
post-package:
@${TOUCH} ${TOUCH_FLAGS} ${PACKAGE_COOKIE}

View file

@ -1,2 +1,3 @@
MD5 (mule-2.3.tar.gz) = e97cfbf19ee43442b416004eb92aac41
MD5 (mule-2.3.patch-970819.tar.gz) = affdd51086c15abbb0a50999ac2e2796
MD5 (emacs-19.34b.tar.gz) = 9bd3c694a9019c2a2ebd703a9a0394e0
MD5 (mule-2.3-19.34.patch-981002.tar.gz) = cadf0c5e4ec4d74b921ffa96a7cca96e
MD5 (mule-23-1934-alpha01.diff.gz) = 09b0fbf4871b701eb6371e56388db9e0

View file

@ -1,25 +1,6 @@
--- ./man/Makefile.org Sat Jul 2 14:35:17 1994
+++ ./man/Makefile Tue May 20 22:28:50 1997
@@ -4,7 +4,7 @@
MAKEINFO = makeinfo
TEXINDEX_OBJS = texindex.o getopt.o
INFO_TARGETS = ../info/emacs ../info/cl ../info/forms ../info/vip \
- ../info/gnus ../info/sc ../info/info ../info/dired-x
+ ../info/gnus ../info/sc ../info/dired-x
DVI_TARGETS = emacs.dvi cl.dvi forms.dvi vip.dvi gnus.dvi sc.dvi dired-x.dvi
INFOSOURCES = info.texi info-stnd.texi
@@ -54,6 +54,7 @@
gnu1.texi \
glossary.texi
+all: info
info: $(INFO_TARGETS)
dvi: $(DVI_TARGETS)
--- ./man/vip.texi.org Tue May 20 22:29:04 1997
+++ ./man/vip.texi Tue May 20 22:30:32 1997
@@ -24,6 +24,10 @@
--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995
+++ ./man/vip.texi Tue May 20 01:28:33 1997
@@ -2,6 +2,10 @@
@setfilename ../info/vip
@settitle VIP
@ -30,8 +11,8 @@
@iftex
@finalout
--- ./man/emacs.texi.org Fri Nov 4 03:08:52 1994
+++ ./man/emacs.texi Tue May 20 22:30:32 1997
--- ./man/emacs.texi.org Mon Aug 19 21:15:12 1996
+++ ./man/emacs.texi Tue May 20 01:20:11 1997
@@ -49,6 +49,11 @@
@settitle GNU Emacs Manual
@setfilename ../info/emacs
@ -44,8 +25,21 @@
@c
@c in general, keep the following line commented out, unless doing a
@c copy of this manual that will be published. the manual should go
--- ./man/forms.texi.org Thu Jul 28 13:46:45 1994
+++ ./man/forms.texi Tue May 20 22:30:32 1997
--- ./man/viper.texi.org Wed Aug 7 10:59:45 1996
+++ ./man/viper.texi Tue May 20 01:29:17 1997
@@ -4,6 +4,10 @@
\input texinfo
@setfilename ../info/viper
+@dircategory The Emacs editor and associated tools
+@direntry
+* VIPER: (viper). The new VI-emulation mode in Emacs-19.29.
+@end direntry
@iftex
@finalout
--- ./man/forms.texi.org Sat Mar 23 06:42:27 1996
+++ ./man/forms.texi Tue May 20 01:22:37 1997
@@ -9,6 +9,11 @@
@syncodeindex vr cp
@syncodeindex fn cp
@ -58,8 +52,35 @@
@iftex
@finalout
@setchapternewpage odd
--- ./man/cl.texi.org Sat Jan 8 00:42:47 1994
+++ ./man/cl.texi Tue May 20 22:30:32 1997
--- ./man/gnus.texi.org Wed Jun 26 14:49:29 1996
+++ ./man/gnus.texi Tue May 20 01:23:15 1997
@@ -5,6 +5,11 @@
@synindex fn cp
@synindex vr cp
@synindex pg cp
+@dircategory The Emacs editor and associated tools
+@direntry
+* GNUS: (gnus). The news reader GNUS.
+@end direntry
+
@iftex
@finalout
@end iftex
--- ./man/mh-e.texi.org Sun Aug 4 00:00:29 1996
+++ ./man/mh-e.texi Tue May 20 01:23:49 1997
@@ -4,6 +4,10 @@
@setfilename ../info/mh-e
@settitle mh-e
@c %**end of header
+@dircategory The Emacs editor and associated tools
+@direntry
+* MH-E: (mh-e). Emacs interface to the MH mail system.
+@end direntry
@setchapternewpage odd
--- ./man/cl.texi.org Mon Apr 15 21:36:53 1996
+++ ./man/cl.texi Tue May 20 01:24:18 1997
@@ -2,6 +2,12 @@
@setfilename ../info/cl
@settitle Common Lisp Extensions
@ -73,8 +94,8 @@
@iftex
@finalout
@end iftex
--- ./man/sc.texi.org Sat Jan 8 00:41:40 1994
+++ ./man/sc.texi Tue May 20 22:30:32 1997
--- ./man/sc.texi.org Thu Jan 4 12:55:23 1996
+++ ./man/sc.texi Tue May 20 01:25:13 1997
@@ -3,6 +3,12 @@
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename ../info/sc
@ -88,8 +109,8 @@
@iftex
@finalout
@end iftex
--- ./man/dired-x.texi.org Sat Aug 13 09:58:50 1994
+++ ./man/dired-x.texi Tue May 20 22:48:19 1997
--- ./man/dired-x.texi.org Thu Jan 4 12:54:19 1996
+++ ./man/dired-x.texi Tue May 20 01:25:55 1997
@@ -18,6 +18,11 @@
@setfilename ../info/dired-x
@c dired-x.el REVISION NUMBER
@ -102,57 +123,106 @@
@iftex
@finalout
@end iftex
@@ -196,32 +201,32 @@
@enumerate
@item
Omitting of uninteresting files from dired listing.
-@itemize
+@itemize @bullet
@xref{Omitting Files in Dired}
@end itemize
@item
Local variables for dired directories.
-@itemize
+@itemize @bullet
@xref{Local Variables}
@end itemize
@item
Guessing shell commands in dired buffers.
-@itemize
+@itemize @bullet
@xref{Shell Command Guessing}
@end itemize
@item
Running dired command in non-dired buffers.
-@itemize
+@itemize @bullet
@xref{Virtual Dired}
@end itemize
@item
Finding a file mentioned in a buffer
-@itemize
+@itemize @bullet
@xref{Find File At Point}
@end itemize
@item
Commands using file marking.
-@itemize
+@itemize @bullet
@xref{Advanced Mark Commands}
@end itemize
@end enumerate
--- ./man/gnus.texi.org Sun Sep 11 11:52:45 1994
+++ ./man/gnus.texi Tue May 20 23:23:03 1997
@@ -3,6 +3,12 @@
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename ../info/gnus
@settitle GNUS 3.15 Manual
+
--- ./man/ediff.texi.org Fri Jun 21 20:00:04 1996
+++ ./man/ediff.texi Tue May 20 01:26:29 1997
@@ -10,6 +10,11 @@
@synindex vr cp
@synindex fn cp
@synindex pg cp
+@dircategory The Emacs editor and associated tools
+@direntry
+* GNUS: (gnus). The news reader GNUS.
+* Ediff: (ediff). A comprehensive visual interface to diff
+ and patch.
+@end direntry
+
@iftex
@finalout
@end iftex
--- ./man/cc-mode.texi.org Sun Aug 4 21:56:21 1996
+++ ./man/cc-mode.texi Tue May 20 01:27:18 1997
@@ -9,6 +9,12 @@
@settitle CC-MODE Version 4 Documentation
@footnotestyle end
+@dircategory The Emacs editor and associated tools
+@direntry
+* CC mode: (ccmode). The GNU Emacs mode for editing C, C++,
+ Objective-C and Java code.
+@end direntry
+
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@comment @setchapternewpage odd !! we don't want blank pages !!
@comment %**end of header (This is for running Texinfo on a region)
--- ./man/message.texi.org Wed Jun 26 14:49:43 1996
+++ ./man/message.texi Sat Dec 13 17:46:31 1997
@@ -5,6 +5,10 @@
@synindex fn cp
@synindex vr cp
@synindex pg cp
+@dircategory The Emacs editor and associated tools
+@direntry
+* Message: (message). Editing mail and news messages.
+@end direntry
@iftex
@finalout
@end iftex
--- Makefile.in.~1~ Sat Jul 11 17:57:16 1998
+++ Makefile.in Sat Jul 11 17:58:45 1998
@@ -191,7 +191,7 @@
# Subdirectories to make recursively. `lisp' is not included
# because the compiled lisp files are part of the distribution
# and you cannot remake them without installing Emacs first.
-SUBDIR = lib-src src
+SUBDIR = lib-src src man
# The makefiles of the directories in $SUBDIR.
SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile
--- Makefile.in.~1~ Fri Jul 10 00:00:50 1998
+++ Makefile.in Fri Jul 10 00:10:50 1998
@@ -375,14 +375,9 @@
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
then \
(cd ${infodir}; \
- if [ -f dir ]; then \
- if [ ! -f dir.old ]; then mv -f dir dir.old; \
- else mv -f dir dir.bak; fi; \
- fi; \
cd ${srcdir}/info ; \
- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \
(cd $${thisdir}; chmod a+r ${infodir}/dir); \
- for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip* \
+ for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* message* mh-e* sc* vip* \
antenews* canna* egg* languages* m2ps* mule* kbd-trans* \
quail* terminology* CCL* ISO2022* R2L* XFONT*; do \
(cd $${thisdir}; \
--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996
+++ ./man/Makefile.in Tue Apr 15 00:29:52 1997
@@ -13,7 +13,7 @@
# The makeinfo program is part of the Texinfo distribution.
MAKEINFO = makeinfo
INFO_TARGETS = ../info/emacs ../info/ccmode ../info/cl ../info/dired-x \
- ../info/ediff ../info/forms ../info/gnus ../info/info \
+ ../info/ediff ../info/forms ../info/gnus \
../info/mh-e ../info/sc ../info/vip ../info/viper \
../info/message
DVI_TARGETS = emacs.dvi cc-mode.dvi cl.dvi dired-x.dvi ediff.dvi forms.dvi \
@@ -66,6 +66,7 @@
${srcdir}/gnu1.texi \
${srcdir}/glossary.texi
+all: info
info: $(INFO_TARGETS)
dvi: $(DVI_TARGETS)
@@ -74,12 +75,6 @@
# in srcdir. There is no provision for Info files
# to exist in the build directory.
# In a distribution of Emacs, the Info files should be up to date.
-
-../info/info: ${INFOSOURCES}
- cd $(srcdir); $(MAKEINFO) --no-split info.texi
-
-info.dvi: ${INFOSOURCES}
- TEXINPUTS="$(srcdir) $(TEXINPUTS)"; $(TEXI2DVI) ${srcdir}/info.texi
../info/emacs: ${EMACSSOURCES}
cd $(srcdir); $(MAKEINFO) emacs.texi

View file

@ -1,25 +1,74 @@
--- ../mule-2.3.org/src/s/freebsd.h.org Fri Nov 4 03:11:17 1994
+++ ./src/s/freebsd.h Mon Feb 16 17:29:31 1998
@@ -31,10 +31,10 @@
--- orig/s/freebsd.h Mon Jun 10 05:14:32 1996
+++ src/s/freebsd.h Tue Sep 29 11:35:32 1998
@@ -1,5 +1,15 @@
/* s/ file for freebsd system. */
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
-#define LIBS_DEBUG
+#define LIBS_DEBUG -lcrypt
+/* Get the correct __FreeBSD_version, even if this is before that was
+ defined. */
+#ifndef __FreeBSD__
+#define __FreeBSD_version 199401
+#elif __FreeBSD__ == 1
+#define __FreeBSD_version 199405
+#else
+#include <osreldate.h>
+#endif
+
/* '__FreeBSD__' is defined by the preprocessor on FreeBSD-1.1 and up.
Earlier versions do not have shared libraries, so inhibit them.
You can inhibit them on newer systems if you wish
@@ -34,7 +44,6 @@
#define LIBS_DEBUG
#define LIBS_SYSTEM -lutil
#define LIBS_TERMCAP -ltermcap
-#define LIB_GCC -lgcc
+#define LIB_GCC /usr/lib/libgcc.a
/* Reread the time zone on startup. */
#define LOCALTIME_CACHE
@@ -81,6 +81,9 @@
#define SYSV_SYSTEM_DIR
@@ -42,12 +51,28 @@
#undef BSD_PGRPS
#define GETPGRP_NO_ARG
+#ifdef __ELF__
+
+#define LD_SWITCH_SYSTEM
+#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o
+#define UNEXEC unexelf.o
+#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
+#undef LIB_GCC
+#define LIB_GCC
+
+#else /* not __ELF__ */
+
#ifndef NO_SHARED_LIBS
#define LD_SWITCH_SYSTEM -e start -dc -dp
#define HAVE_TEXT_START /* No need to define `start_of_text'. */
+#if __FreeBSD_version >= 300002
+#define START_FILES pre-crt0.o /usr/lib/aout/crt0.o
+#else /* __FreeBSD_version < 300002 */
#define START_FILES pre-crt0.o /usr/lib/crt0.o
-#define UNEXEC unexsunos4.o
+#endif /* __FreeBSD_version < 300002 */
+#define UNEXEC unexfreebsd.o
#define RUN_TIME_REMAP
+#define LIB_GCC -lgcc
#ifndef N_TRELOFF
#define N_PAGSIZ(x) __LDPGSZ
@@ -63,6 +88,8 @@
#endif /* __FreeBSD__ */
#endif /* NO_SHARED_LIBS */
+#endif /* not __ELF__ */
+
#define HAVE_WAIT_HEADER
#define HAVE_GETLOADAVG
/*#define HAVE_GETPAGESIZE /* configure now puts this in config.h */
@@ -80,6 +107,8 @@
#define BSD 199103
#elif __FreeBSD__ == 2
#define BSD 199306
+#elif __FreeBSD__ == 3
+#define BSD 199506
+#define FREEBSD_NEW_LDSO
#endif
#define WAITTYPE int

View file

@ -0,0 +1,23 @@
--- src/unexelf.c.orig Fri Oct 2 12:55:43 1998
+++ src/unexelf.c Fri Oct 2 13:02:05 1998
@@ -678,7 +678,8 @@
if (n < 0)
fatal ("Couldn't find segment next to .bss in %s\n", old_name, 0);
- NEW_PROGRAM_H (n).p_filesz += new_data2_size;
+/* NEW_PROGRAM_H (n).p_filesz += new_data2_size; */
+ NEW_PROGRAM_H (n).p_filesz = new_bss_addr - NEW_PROGRAM_H (n).p_vaddr; /* From emacs 20.3 */
NEW_PROGRAM_H (n).p_memsz = NEW_PROGRAM_H (n).p_filesz;
#if 0 /* Maybe allow section after data2 - does this ever happen? */
@@ -845,7 +846,9 @@
for (; symp < symendp; symp ++)
if (strcmp ((char *) (symnames + symp->st_name), "_end") == 0
- || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0)
+ || strcmp ((char *) (symnames + symp->st_name), "end") == 0
+ || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0
+ || strcmp ((char *) (symnames + symp->st_name), "edata") == 0)
memcpy (&symp->st_value, &new_bss_addr, sizeof (new_bss_addr));
}

View file

@ -0,0 +1,73 @@
From ftp://ftp.etl.go.jp/pub/mule/BUG-INFO
6) This fix a bug of displaying multilingual text in mode lines.
--- /usr/dist/mule/mule-2.3/src/xdisp.c Fri Jun 9 17:37:14 1995
+++ ./src/xdisp.c Wed Mar 6 17:08:03 1996
@@ -3973,8 +3973,9 @@
/* 91.10.21 by K.Handa, 92.4.30 by Y.Niibe */
int mc_flag = !NILP(XBUFFER (w->buffer)->mc_flag);
- /* 92.3.21, 92.9.7 by K.Handa */
- register unsigned char *endp = string + strlen(string);
+ /* 92.3.21, 92.9.7, 95.8.31 by K.Handa */
+ register unsigned char *endp
+ = string + (length < 0 ? strlen(string) : length);
char *hexa = "0123456789ABCDEF"; /* 92.4.9 by K.Handa */
/* 92.4.9 by K.Handa, 92.4.30 by Y.Niibe */
int ctl_hexa = !NILP (XBUFFER (w->buffer)->ctl_hexa);
8) Another fix for a severe bug for writing *viscii* file.
--- mule/lisp/mule-init.el.old Wed May 8 13:05:30 1996
+++ ./lisp/mule-init.el Wed May 8 13:04:06 1996
@@ -638,7 +638,7 @@
(r0 -= 160)
(write-read-repeat
r0
- [ 0 129 130 131 132 165 134 135 136 137 138 139 140 141 142 143
+ [ 0 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
144 145 146 0 0 147 150 151 152 0 0 0 0 180 149 0
0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 159
0 186 0 0 0 128 20 187 188 0 0 25 30 0 179 191
11) This patch fixes Single Shift 3 handling.
--- /usr/dist/mule/mule-2.3/src/coding.c Wed Nov 30 16:45:02 1994
+++ ./src/coding.c Sat Sep 28 09:41:51 1996
@@ -1044,7 +1044,7 @@
{ \
if (lc != lcg) dp = designate(dp, lcg, lc, 3, form), lcg = lc; \
if (form & CODE_SEVEN) \
- *dp++ = ESC, *dp++ = 'N'; \
+ *dp++ = ESC, *dp++ = 'O'; \
else \
*dp++ = SS3; \
cntl = (cntl & ~CC_GRAPHIC_MASK) | CC_IN_G3; \
12) This patch fixes wrong handling of *iso-2022-lock* by coco.
--- /usr/dist/mule/mule-2.3/lib-src/mulelib.c Mon Jul 17 15:03:43 1995
+++ ./lib-src/mulelib.c Fri Oct 4 21:28:48 1996
@@ -287,13 +287,18 @@
p0 = p1 + 1;
if (CODE_TYPE (cs) == ISO2022) {
long flags[12];
- for (i = 0; i < 11; i++) {
- if (!(flags[i] = atoi(p0))) flags[i] = Qnil;
+ for (i = 0; i < 4; i++) {
+ if ((flags[i] = atoi(p0)) == -1) flags[i] = LCASCII;
PROCEED_CHAR(',');
p0 = p1 + 1;
}
- flags[i] = atoi(p0);
CODE_LC_SET(cs, flags[0], flags[1], flags[2], flags[3]);
+ for (; i < 11; i++) {
+ if (!(flags[i] = atoi(p0))) flags[i] = Qnil;
+ PROCEED_CHAR(',');
+ p0 = p1 + 1;
+ }
+ if (!(flags[i] = atoi(p0))) flags[i] = Qnil;
CODE_FORM_SET(cs, (Lisp_Object)flags[4], (Lisp_Object)flags[5],
(Lisp_Object)flags[6], (Lisp_Object)flags[7],
(Lisp_Object)flags[8], (Lisp_Object)flags[9],

View file

@ -0,0 +1,11 @@
--- src/s.emacs/freebsd.h Tue Sep 29 11:35:32 1998
+++ src/s/freebsd.h Tue Sep 29 11:42:53 1998
@@ -42,7 +42,7 @@
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
#define LIBS_DEBUG
-#define LIBS_SYSTEM -lutil
+#define LIBS_SYSTEM -lutil -lcrypt -lxpg4
#define LIBS_TERMCAP -ltermcap
#define SYSV_SYSTEM_DIR

View file

@ -0,0 +1,89 @@
diff -arcN ../mule-2.3.org/etc/FAQ-Mule.jp ./etc/FAQ-Mule.jp
*** ../mule-2.3.org/etc/FAQ-Mule.jp Fri Jul 21 20:40:06 1995
--- ./etc/FAQ-Mule.jp Wed Aug 21 11:33:22 1996
***************
*** 1867,1872 ****
--- 1867,1874 ----
$B$H=q$/J}K!$b$"$j$^$9!#(B
+ ($BCm5-(B : FreeBSD$B$G$O!"B>$H6%9g$9$k$?$a%]!<%HHV9f$O(B3086$B$K$7$F$"$j$^$9!#(B)
+
Emacs lisp $B%W%m%0%i%_%s%0(B
=========================
diff -arcN ../mule-2.3.org/lisp/eggrc-sj3 ./lisp/eggrc-sj3
*** ../mule-2.3.org/lisp/eggrc-sj3 Fri Oct 21 13:18:21 1994
--- ./lisp/eggrc-sj3 Wed Aug 21 13:05:24 1996
***************
*** 3,11 ****
;;; Version 1.0
;;; Copyright 1990 Kiyoji Ishii
;;;
! (set-default-sys-dic-directory "/usr/sony/dict/sj3")
! (set-default-usr-dic-directory "/usr/sony/dict/sj3/user/$USER")
;;;
;;; System Dictionary
--- 3,17 ----
;;; Version 1.0
;;; Copyright 1990 Kiyoji Ishii
;;;
+ ;;;
+ ;;; Change dictionary paths.
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
+ ;;; Remove $USER variable. Use (user-login-name).
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/20
+ ;;;
! (set-default-sys-dic-directory "/usr/local/lib/sj3/dict")
! (set-default-usr-dic-directory (concat "/usr/local/lib/sj3/dict/user/" (user-login-name)))
;;;
;;; System Dictionary
diff -arcN ../mule-2.3.org/lisp/sj3-egg.el ./lisp/sj3-egg.el
*** ../mule-2.3.org/lisp/sj3-egg.el Fri Feb 17 17:23:31 1995
--- ./lisp/sj3-egg.el Wed Aug 21 13:32:36 1996
***************
*** 294,301 ****
;;;
;;; Entry functions for egg-startup-file
;;;
! (defvar *default-sys-dic-directory* "/usr/sony/dict/sj3")
(defun set-default-sys-dic-directory (pathname)
"$B%7%9%F%`<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B
--- 294,307 ----
;;;
;;; Entry functions for egg-startup-file
;;;
+ ;;;
+ ;;; Change dictionary paths.
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
+ ;;; Remove $USER variable. Use (user-login-name).
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/20
+ ;;;
! (defvar *default-sys-dic-directory* "/usr/local/lib/sj3/dict")
(defun set-default-sys-dic-directory (pathname)
"$B%7%9%F%`<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B
***************
*** 310,316 ****
(format "System Default directory(%s) $B$,$"$j$^$;$s!#(B" pathname))
(setq *default-sys-dic-directory* (file-name-as-directory pathname)))))
! (defvar *default-usr-dic-directory* "/usr/sony/dict/sj3/user/$USER")
(defun set-default-usr-dic-directory (pathname)
"$BMxMQ<T<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B
--- 316,322 ----
(format "System Default directory(%s) $B$,$"$j$^$;$s!#(B" pathname))
(setq *default-sys-dic-directory* (file-name-as-directory pathname)))))
! (defvar *default-usr-dic-directory* (concat "/usr/local/lib/sj3/dict/user/" (user-login-name)))
(defun set-default-usr-dic-directory (pathname)
"$BMxMQ<T<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B

View file

@ -0,0 +1,60 @@
--- ../mule.org/lisp/eggrc-wnn Fri Jul 28 20:12:41 1995
+++ ./lisp/eggrc-wnn Wed Oct 29 12:13:50 1997
@@ -24,7 +24,7 @@
;;;
;;; modified for Wnn V4 - Use compatible library of Wnn v3
;;; Copyright 1989 OMRON Tateisi Electronics, Co.
-;;; 1989 7/12 by H.Kuribayashi kuri@frf.oron.junet
+;;; 1989 7/12 by H.Kuribayashi kuri@frf.omron.junet
;;; 92.5.19 modified for Wnn V4 by T.Shingu <shingu@cpr.canon.co.jp>
;;; Use non compatible library.
@@ -50,14 +50,16 @@
(concat wnn-usr-dic-dir "/symbol.h") 1 nil t)
(add-wnn-dict "iwanami/tankan.dic" "" 1 nil nil)
(add-wnn-dict "iwanami/tankan2.dic" "" 1 nil nil)
- (add-wnn-dict "iwanami/tel.dic" "" 1 nil nil)
- (add-wnn-dict "iwanami/zip.dic" "" 1 nil nil)
+ (add-wnn-dict "iwanami/tel.dic"
+ (concat wnn-usr-dic-dir "/tel.h") 1 nil t)
+ (add-wnn-dict "iwanami/zip.dic"
+ (concat wnn-usr-dic-dir "/zip.h") 1 nil t)
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 15 t t)
; (add-wnn-dict "wnncons/tankan2.dic" "" 1 nil nil)
; (add-wnn-dict "wnncons/tankan3.dic" "" 1 nil nil)
(set-wnn-param 5 10 2 45 0 80 5 1 20 0 400 -100 400 80 200 2 200)
- (add-wnn-notrans-dict (concat wnn-usr-dic-dir "/katakana") 15 t)
+ (add-wnn-notrans-dict (concat wnn-usr-dic-dir "/muhenkan") 15 t)
(add-wnn-bmodify-dict (concat wnn-usr-dic-dir "/bunsetsu") 15 t)
(set-last-is-first-mode t)
@@ -101,7 +103,9 @@
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 5 t t)
; (add-wnn-dict "wnncons/tankan2.dic" "" 1 nil nil)
; (add-wnn-dict "wnncons/tankan3.dic" "" 1 nil nil)
- (set-wnn-param 2 10 2 45 5 80 5 1 40 0 400 -100 400 80 200 2 200)
+; (set-wnn-param 2 10 2 45 5 80 5 1 40 0 400 -100 400 80 200 2 200)
+; New Parameter
+ (set-wnn-param 2 10 2 45 100 200 5 1 40 -100 200 -100 200 80 200 200 200)
(set-wnn-reverse t)
(set-wnn-fuzokugo "pubdic/full.fzk")
(add-wnn-dict "pubdic/kihon.dic" (concat wnn-usr-dic-dir "/kihon.h") 5 nil t)
@@ -158,7 +162,7 @@
((eq wnn-server-type 'kserver)
(set-wnn-reverse nil)
(set-wnn-fuzokugo "sys/full.fzk")
- ; (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
+ (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
(add-wnn-dict "sys/single.dic" (concat wnn-usr-dic-dir "/single.h") 1 nil t)
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 5 t t)
; (add-wnn-dict (concat wnn-usr-dic-dir "/hangul") "" 5 t t)
@@ -166,7 +170,7 @@
(set-wnn-param 1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0)
(set-wnn-reverse t)
(set-wnn-fuzokugo "sys/full.fzk")
- ; (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
+ (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
(add-wnn-dict "sys/single.dic" (concat wnn-usr-dic-dir "/single.h") 1 nil t)
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 5 t t)
; (add-wnn-dict (concat wnn-usr-dic-dir "/hangul") "" 5 t t)

View file

@ -0,0 +1,45 @@
--- Makefile.in.orig Fri Jul 10 11:22:07 1998
+++ Makefile.in Fri Jul 10 11:27:03 1998
@@ -310,14 +310,14 @@
### It would be nice to do something for a parallel make
### to ensure that install-arch-indep finishes before this starts.
install-arch-dep: mkdir
- (cd lib-src; \
- $(MAKE) install $(MFLAGS) prefix=${prefix} \
- exec_prefix=${exec_prefix} bindir=${bindir} \
- libexecdir=${libexecdir} archlibdir=${archlibdir})
${INSTALL_PROGRAM} src/emacs ${bindir}/${executable}-${version}
-chmod 1755 ${bindir}/${executable}-${version}
rm -f ${bindir}/$(EMACS)
-ln ${bindir}/${executable}-${version} ${bindir}/$(EMACS)
+ echo "Copying etc/DOC-* to ${docdir} ..." ; \
+ (cd ./etc; tar -cf - DOC*)|(cd ${docdir}; umask 0; tar -xvf - ); \
+ (cd $(docdir); chmod a+r DOC*; rm DOC) \
+
### Install the files that are machine-independent.
### Most of them come straight from the distribution;
@@ -327,6 +327,10 @@
### Note that we copy DOC* and then delete DOC
### as a workaround for a bug in tar on Ultrix 4.2.
install-arch-indep: mkdir
+ (cd lib-src; \
+ $(MAKE) install $(MFLAGS) prefix=${prefix} \
+ exec_prefix=${exec_prefix} bindir=${bindir} \
+ libexecdir=${libexecdir} archlibdir=${archlibdir})
-set ${COPYDESTS} ; \
for dir in ${COPYDIR} ; do \
if [ `(cd $$1 && /bin/pwd)` != `(cd $${dir} && /bin/pwd)` ] ; then \
@@ -360,9 +364,9 @@
-chmod -R a+r ${COPYDESTS}
if [ `(cd ./etc; /bin/pwd)` != `(cd ${docdir}; /bin/pwd)` ]; \
then \
- echo "Copying etc/DOC-*, etc/CHARSETS, and etc/CODINGS to ${docdir} ..." ; \
- (cd ./etc; tar -cf - DOC* CHARSETS CODINGS)|(cd ${docdir}; umask 0; tar -xvf - ); \
- (cd $(docdir); chmod a+r DOC* CHARSETS CODINGS; rm DOC) \
+ echo "Copying etc/CHARSETS, and etc/CODINGS to ${docdir} ..." ; \
+ (cd ./etc; tar -cf - CHARSETS CODINGS)|(cd ${docdir}; umask 0; tar -xvf - ); \
+ (cd $(docdir); chmod a+r CHARSETS CODINGS) \
else true; fi
if [ -r ./lisp ] \
&& [ x`(cd ./lisp; /bin/pwd)` != x`(cd ${lispdir}; /bin/pwd)` ] \

View file

@ -0,0 +1,5 @@
--- lisp/its/han-kata.el~ Thu Aug 6 19:55:01 1998
+++ lisp/its/han-kata.el Mon Aug 10 13:24:50 1998
@@ -45 +45 @@
-(defvar enable-double-n-syntax nil "*Enable ""nn"" input for ""(I](B"" ")
+(defvar enable-double-n-syntax nil "*Enable \"nn\" input for \"(I](B\" ")

View file

@ -0,0 +1,16 @@
--- configure.orig Sat Sep 19 23:06:14 1998
+++ configure Sat Sep 19 23:14:44 1998
@@ -564,11 +564,11 @@
emacs_prefix=emacs
lispdir='${datadir}/${emacs_prefix}/${version}/lisp'
locallisppath='${datadir}/${emacs_prefix}/${version}/site-lisp:'\
-'${datadir}/${emacs_prefix}/site-lisp'
+'${datadir}/${emacs_prefix}/site-lisp:${datadir}/emacs/site-lisp'
lisppath='${locallisppath}:${lispdir}'
etcdir='${datadir}/${emacs_prefix}/${version}/etc'
# share lockdir with emacs and mule.
-lockdir='${sharedstatedir}/emacs/lock'
+lockdir='/var/run/emacs/lock'
archlibdir='${libexecdir}/${emacs_prefix}/${version}/${configuration}'
docdir='${datadir}/${emacs_prefix}/${version}/etc'

View file

@ -32,11 +32,11 @@
(setq-default quail-current-package (assoc "hangul" quail-package-alist))
)
;; Add System Info path '/usr/share/info' into Info-default-directory-list
(setq Info-default-directory-list
(append (list
"%%LOCALBASE%%/share/mule/19.34/info"
"%%X11BASE%%/info"
"/usr/share/info"
"/usr/X11R6/info"
) Info-default-directory-list))
;; END mule-family

View file

@ -0,0 +1,692 @@
/* Code to do an unexec for FreeBSD for a temacs linked -Bdynamic.
Derived from unexnetbsd.c, which was derived from unexsunos4.c
Copyright (C) 1992, 1993 Free Software Foundation, Inc.
This file is part of XEmacs.
XEmacs 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, or (at your option) any
later version.
XEmacs 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 XEmacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Synched up with: Not in FSF? */
/*
Created 29-Oct-92 by Harlan Sexton
Tweaked 06-Aug-93 by Dean Michaels to work with sun3.
Converted 01-Dec-93 by Paul Mackerras to work with NetBSD shared libraries.
Tweaked 26-Feb-94 by Shawn Carey for use with FreeBSD-1.1 shared libraries.
*/
/********************** Included .h Files **************************/
#include <config.h>
#include <stdarg.h>
#include <sys/param.h>
#include <sys/mman.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <string.h>
#include <stdio.h>
#include <a.out.h>
#include <unistd.h>
#include <ctype.h>
#include <stab.h>
#include <dirent.h>
#include <link.h>
/********************** Macros *************************************/
#define SYS_ERR strerror(errno)
#define MASK_UP(x,p_of_two) \
((((unsigned long) (x)) + ((p_of_two) - 1)) & (~((p_of_two) - 1)))
#define MASK_DOWN(x,p_of_two) (((unsigned long) (x)) & (~((p_of_two) - 1)))
/********************** Typedefs and Structs ***********************/
struct translation_struct
{
long txtaddr;
long txtoff;
long dataddr;
long datoff;
long bssaddr;
long endaddr;
};
/********************** Function Prototypes/Declarations ***********/
static void unexec_error (const char *m, int use_errno, ...);
static int unexec_open (char *filename, int flag, int mode);
static caddr_t unexec_mmap (int fd, size_t len, int prot, int flags);
static long unexec_seek (int fd, long position);
static void unexec_read (int fd, long position, char *buf, int bytes);
static void unexec_write (int fd, long position, char *buf, int bytes);
static void unexec_pad (int fd, int bytes);
static void unexec_fstat (int fd, struct stat *statptr);
static void unexec_fchmod (int fd, int mode);
static long unexec_addr_to_offset (long addr, struct translation_struct *ts);
static void copy_relocation_site (struct relocation_info *ri,
caddr_t from_base_addr,
caddr_t to_base_addr,
struct translation_struct *ts);
static void reset_symtab (struct nlist *start, struct nlist *end,
char *strtab, long edata_value, long end_value,
int shlib_image);
static void reset_ldso_symtab (struct nzlist *start, struct nzlist *end,
char *strtab, long edata_value, long end_value,
int shlib_image);
int run_time_remap (char *dummy);
/********************** Variables **********************************/
/* for reporting error messages from system calls */
extern int errno;
extern int _DYNAMIC;
extern char **environ;
static unsigned long sbrk_of_0_at_unexec;
/*******************************************************************/
static void
unexec_error (const char *fmt, int use_errno, ...)
{
const char *err_msg = SYS_ERR;
va_list args;
fprintf (stderr, "unexec - ");
va_start (args, use_errno);
vfprintf (stderr, fmt, args);
va_end (args);
if (use_errno)
fprintf (stderr, ": %s", err_msg);
fprintf (stderr, "\n");
exit (1);
return;
}
static int
unexec_open (char *filename, int flag, int mode)
{
int fd;
errno = 0;
fd = open (filename, flag, mode);
if (fd < 0)
unexec_error ("Failure opening file %s", 1, filename);
return fd;
}
static caddr_t
unexec_mmap (int fd, size_t len, int prot, int flags)
{
caddr_t return_val;
unexec_seek (fd, 0);
errno = 0;
return_val = mmap (0, len, prot, flags, fd, 0);
if (return_val == (caddr_t) -1)
unexec_error ("Failure mmap'ing file", 1);
return return_val;
}
static long
unexec_seek (int fd, long position)
{
long seek_value;
if (fd <= 0)
unexec_error ("No file open in which to seek", 0);
errno = 0;
if (position < 0)
seek_value = (long) lseek (fd, 0, L_INCR);
else
seek_value = (long) lseek (fd, position, L_SET);
if (seek_value < 0)
unexec_error ("Failed to do a seek to 0x%x in %s", 1,
position, "unexec() output file");
return seek_value;
}
static void
unexec_read (int fd, long position, char *buf, int bytes)
{
int n_read;
int remains = bytes;
position = unexec_seek (fd, position);
if (bytes < 0)
unexec_error ("Attempted read of %d bytes", 0, bytes);
errno = 0;
while (remains > 0)
{
n_read = read (fd, buf, remains);
if (n_read <= 0)
unexec_error ("Read failed for 0x%x bytes at offset 0x%x in %s",
1, bytes, position, "unexec() output file");
buf += n_read;
remains -= n_read;
}
return;
}
static void
unexec_write (int fd, long position, char *buf, int bytes)
{
int n_written;
int remains = bytes;
position = unexec_seek (fd, position);
if (bytes < 0)
unexec_error ("Attempted write of %d bytes in %s",
0, bytes, "unexec() output file");
errno = 0;
while (remains > 0)
{
n_written = write (fd, buf, remains);
if (n_written <= 0)
unexec_error ("Write failed for 0x%x bytes at offset 0x%x in %s",
1, bytes, position, "unexec() output file");
buf += n_written;
remains -= n_written;
}
return;
}
static void
unexec_pad (int fd, int bytes)
{
if (bytes > 0)
{
char buf[1024];
int remaining = bytes;
memset (buf, 0, sizeof (buf));
while (remaining > 0)
{
int this_write = (remaining > sizeof(buf))?sizeof(buf):remaining;
unexec_write (fd, -1, buf, this_write);
remaining -= this_write;
}
}
}
static void
unexec_fstat (int fd, struct stat *statptr)
{
errno = 0;
if (-1 == fstat (fd, statptr))
unexec_error ("fstat() failed for descriptor %d", 1, fd);
return;
}
static void
unexec_fchmod (int fd, int mode)
{
errno = 0;
if (-1 == fchmod (fd, mode))
unexec_error ("fchmod() failed for descriptor %d", 1, fd);
return;
}
static long
unexec_addr_to_offset (long addr, struct translation_struct *ts)
{
if ((addr < ts->txtaddr) || (addr >= ts->bssaddr))
return -1;
else if (addr >= ts->dataddr)
return ((long) ((addr - ts->dataddr) + ts->datoff));
else
return ((long) ((addr - ts->txtaddr) + ts->txtoff));
}
/*
* "LD.SO" DATA AND SYMBOL TABLE OPERATIONS
*/
static void
copy_relocation_site (struct relocation_info *ri,
caddr_t from_base_addr,
caddr_t to_base_addr,
struct translation_struct *ts)
{
long offset;
caddr_t from, to;
/* We can get relocation sites in the bss region, for objects whose
contents are copied from a shared library. We don't need or want
to restore these at present. */
#ifndef sparc
if (ri->r_copy)
return;
#else
/* Struct relocation_info_sparc doesn't have member r_copy.
Instead, we use the address to check if this is run-time-copied. */
if (ri->r_address >= ts->bssaddr && ri->r_address < ts->endaddr)
return;
#endif
offset = unexec_addr_to_offset (ri->r_address, ts);
if (offset == -1)
unexec_error ("bad relocation address 0x%x (0x%x)", 0, ri->r_address,
((long *)ri)[1]);
from = from_base_addr + offset;
to = to_base_addr + offset;
/* This stuff should be in a md_ file somewhere... */
#ifndef sparc
switch (ri->r_length)
{
case 0:
*((char *) to) = *((char *) from);
break;
case 1:
*((short *) to) = *((short *) from);
break;
case 2:
*((long *) to) = *((long *) from);
break;
default:
unexec_error ("unknown reloc length %d seen during unexec()",
0, ri->r_length);
break;
}
#else /* sparc */
switch (ri->r_type)
{
case RELOC_8:
case RELOC_DISP8:
*((char *) to) = *((char *) from);
break;
case RELOC_16:
case RELOC_DISP16:
*((short *) to) = *((short *) from);
break;
case RELOC_LO10:
case RELOC_13:
case RELOC_22:
case RELOC_HI22:
case RELOC_WDISP22:
case RELOC_WDISP30:
case RELOC_32:
case RELOC_DISP32:
case RELOC_GLOB_DAT:
*((long *) to) = *((long *) from);
break;
case RELOC_JMP_SLOT:
{
long *target = (long *) to;
long *source = (long *) from;
*target = *source;
target++;
source++;
*target = *source;
target++;
source++;
*target = *source;
}
break;
default:
unexec_error ("unknown reloc type %d seen during unexec()",
0, ri->r_type);
break;
}
#endif /* sparc */
}
static void
reset_symtab (struct nlist *start, struct nlist *end, char *strtab,
long edata_value, long end_value, int shlib_image)
{
struct nlist *tmp = start;
int found_edata = 0;
int found_end = 0;
while (tmp < end)
{
int type = tmp->n_type;
if ((type == (N_UNDF | N_EXT)) &&
(tmp->n_value != 0))
unexec_error ("unexec'ing image has COMMON symbols in it -- we quit!",
0);
if (!(type & N_STAB))
{
if (!found_edata &&
(type == (N_EXT | N_DATA)) &&
tmp->n_un.n_strx &&
!strcmp ("_edata", strtab + tmp->n_un.n_strx))
{
tmp->n_value = edata_value;
found_edata = 1;
}
if ((type & N_TYPE) == N_BSS)
{
if (!found_end &&
(type == (N_EXT | N_BSS)) &&
tmp->n_un.n_strx &&
!strcmp ("_end", strtab + tmp->n_un.n_strx))
{
tmp->n_value = end_value;
found_end = 1;
}
else if (type & N_EXT)
tmp->n_type = N_DATA | N_EXT;
else
tmp->n_type = N_DATA;
}
/* the way things are being handled here, having sbrk() in the
image is fatal for an image linked with shared lib's (although
the code could be modified to support it), but this should
never happen anyway */
if (shlib_image &&
(type == (N_EXT | N_TEXT)) &&
tmp->n_un.n_strx &&
!strcmp ("_sbrk", strtab + tmp->n_un.n_strx))
unexec_error ("unexec'd shlib image has sbrk() in it -- we quit!",
0);
}
tmp++;
}
}
static void
reset_ldso_symtab (struct nzlist *start, struct nzlist *end, char *strtab,
long edata_value, long end_value, int shlib_image)
{
struct nzlist *tmp = start;
int found_edata = 0;
int found_end = 0;
while (tmp < end) {
int type = tmp->nz_type;
/*
* the following code breaks under FreeBSD-1.1-BETA, but everything
* seems to work perfectly if it's commented out. This did not break
* anything until the changes to ld.so were made.
*/
/*
if ((type == (N_UNDF | N_EXT)) && (tmp->nz_value != 0))
unexec_error("unexec'ing image has COMMON symbols in rel -- we quit!",0);
*/
if (!(type & N_STAB)) {
if (!found_edata &&
(type == (N_EXT | N_DATA)) &&
!strcmp ("_edata", strtab + tmp->nz_strx)) {
tmp->nz_value = edata_value;
found_edata = 1;
}
if ((type & N_TYPE) == N_BSS) {
if (!found_end &&
(type == (N_EXT | N_BSS)) &&
!strcmp ("_end", strtab + tmp->nz_strx)) {
tmp->nz_value = end_value;
found_end = 1;
} else if (type & N_EXT)
tmp->nz_type = N_DATA | N_EXT;
else
tmp->nz_type = N_DATA;
}
/* the way things are being handled here, having sbrk() in the
image is fatal for an image linked with shared lib's (although
the code could be modified to support it), but this should
never happen anyway */
if (shlib_image &&
(type == (N_EXT | N_TEXT)) &&
!strcmp ("_sbrk", strtab + tmp->nz_strx))
unexec_error("unexec'd shlib image has sbrk() ref -- we quit!", 0);
}
tmp++;
}
}
extern int getpagesize (void);
/*
* EXPORTED FUNCTIONS
*/
/* this has to be a global variable to prevent the optimizers from
* assuming that it can not be 0.
*/
static void *dynamic_addr = (void *) &_DYNAMIC;
int
unexec (char *new_name, char *old_name,
unsigned int emacs_edata, unsigned int dummy1, unsigned int dummy2)
{
/* ld.so data */
struct _dynamic *ld = 0;
struct section_dispatch_table *ld2 = 0;
/* old and new state */
int old_fd;
int new_fd;
caddr_t old_base_addr;
caddr_t new_base_addr;
struct exec old_hdr;
struct exec new_hdr;
struct stat old_buf;
struct stat new_buf;
/* some process specific "constants" */
unsigned long n_pagsiz, new_edata;
long page_size = getpagesize ();
caddr_t plt_end;
caddr_t current_break = (caddr_t) sbrk (0);
if (!page_size)
unexec_error ("unexec() failed because we can't get the size of a page!",
0);
/* see if this is a -Bdynamic image -- if so, find ld.so structures */
if (dynamic_addr)
{
ld = (struct _dynamic *) dynamic_addr;
ld2 = ld->d_un.d_sdt;
if (ld->d_version < LD_VERSION_BSD)
unexec_error ("%s linked with obsolete version of ld -- we quit!",
0, old_name);
}
/* open the old and new files, figuring out how big the old one is
so that we can map it in */
old_fd = unexec_open (old_name, O_RDONLY, 0);
new_fd = unexec_open (new_name, O_RDWR | O_CREAT | O_TRUNC, 0666);
/* setup the header and the statbuf for old_fd */
unexec_read (old_fd, 0, (char *) &old_hdr, sizeof (old_hdr));
unexec_fstat (old_fd, &old_buf);
/* set up some important constants */
n_pagsiz = __LDPGSZ;
if (dynamic_addr)
plt_end = (caddr_t) MASK_UP (ld2->sdt_plt + ld2->sdt_plt_sz, sizeof (double));
else
plt_end = (caddr_t) N_DATADDR (old_hdr);
#if 0
/* never write protect the variable "environ", defined in /lib/crt0.o, and
set in process.c and callproc.c */
mprotect_bottom_addr = ((unsigned long) &environ) + sizeof (char **);
/* never protect ABOVE the end of data emacs_edata specified */
mprotect_top_addr = MIN (emacs_edata, N_DATADDR (old_hdr) + old_hdr.a_data);
#endif
/* Set up the image of the old file */
old_base_addr = unexec_mmap (old_fd, old_buf.st_size, PROT_READ,
MAP_FILE | MAP_PRIVATE);
close (old_fd);
/* set up the new exec */
new_hdr = old_hdr;
new_edata = (unsigned long) MASK_UP (current_break, n_pagsiz);
new_hdr.a_data = new_edata - ((unsigned long) N_DATADDR (old_hdr));
new_hdr.a_bss = 0;
/* set up this variable, in case we want to reset "the break"
when restarting */
sbrk_of_0_at_unexec = ((unsigned long) MASK_UP (current_break, n_pagsiz));
/* Write out the first approximation to the new file. The sizes of
each section will be correct, but there will be a number of
corrections that will need to be made. */
{
long old_datoff = N_DATOFF (old_hdr);
long old_dataddr = N_DATADDR (old_hdr);
long new_treloff = N_RELOFF (new_hdr);
long old_treloff = N_RELOFF (old_hdr);
long ld_so_size = ((unsigned long) plt_end) - old_dataddr;
long real_data_size = current_break - plt_end;
long pad_size =
MASK_UP (current_break, n_pagsiz) - ((unsigned long) current_break);
/* First, write the text segment with new header -- copy everything until
the start of the data segment from the old file, and then go back and
write the new header. */
unexec_write (new_fd, 0, old_base_addr, old_datoff + ld_so_size);
unexec_write (new_fd, 0, (char *) &new_hdr, sizeof (new_hdr));
/* Copy the rest of the data segment from the running image. */
unexec_write (new_fd, old_datoff + ld_so_size,
plt_end, real_data_size);
/* pad out the data segment */
unexec_pad (new_fd, pad_size);
/* Finally, copy the symbol table information from the old file. */
unexec_write (new_fd, new_treloff,
old_base_addr + old_treloff,
old_buf.st_size - old_treloff);
}
/* Next, map in the output file so that we can jump around fixing it
up. We retain the old file so that we can refer to it. */
unexec_fstat (new_fd, &new_buf);
new_base_addr = unexec_mmap (new_fd,
MASK_UP (new_buf.st_size, page_size),
PROT_READ | PROT_WRITE,
MAP_FILE | MAP_SHARED);
/* We need to do 2 things. First, make sure that _edata and _end (and
hence, curbrk) are set to the correct values. At the same time, for
neatness and to help with debugging, mark all the types of all ld.so
and nm BSS symbols in the new file to be DATA, and make sure that
there are no COMMON symbols in the output file, as any references to
these can lose really big. Second, reset all of the ld.so "relocation
sites" in the new file to have the values that appear in the old file
-- the failure to do this was the biggest loser in the old version of
this code. */
/* STEP 1 */
/* Reset the regular symbol table first. */
reset_symtab ((struct nlist *) (new_base_addr + N_SYMOFF(new_hdr)),
(struct nlist *) (new_base_addr + N_SYMOFF(new_hdr) +
new_hdr.a_syms),
(char *) (new_base_addr + N_STROFF(new_hdr)),
new_edata, new_edata,
!!dynamic_addr);
/* Now reset the ld.so symbol table. */
if (dynamic_addr)
{
struct translation_struct ts;
struct relocation_info *tmp, *end;
caddr_t syms, strings;
/* set up the structure that we use to translate addresses in the
old file into file offsets */
ts.txtaddr = N_TXTADDR (old_hdr);
ts.txtoff = N_TXTOFF (old_hdr);
ts.dataddr = N_DATADDR (old_hdr);
ts.datoff = N_DATOFF (old_hdr);
ts.bssaddr = N_DATADDR (old_hdr) + old_hdr.a_data;
ts.endaddr = ts.bssaddr + old_hdr.a_bss;
syms = new_base_addr + unexec_addr_to_offset(ld2->sdt_nzlist, &ts);
strings = new_base_addr + unexec_addr_to_offset(ld2->sdt_strings, &ts);
reset_ldso_symtab ((struct nzlist *) syms, (struct nzlist *) strings,
(char *) strings,
new_edata, new_edata,
!!dynamic_addr);
/* STEP 2 */
tmp = (struct relocation_info *)
(old_base_addr + unexec_addr_to_offset(ld2->sdt_rel, &ts));
end = (struct relocation_info *)
(old_base_addr + unexec_addr_to_offset(ld2->sdt_hash, &ts));
while (tmp < end)
{
copy_relocation_site (tmp, old_base_addr, new_base_addr, &ts);
tmp++;
}
}
/* get rid of the mmap-ed file space and make the output file
executable -- then quit */
munmap (new_base_addr, MASK_UP (new_buf.st_size, page_size));
munmap (old_base_addr, MASK_UP (old_buf.st_size, page_size));
unexec_fchmod (new_fd, 0755);
close (new_fd);
return 0;
}
int
run_time_remap (char *dummy)
{
unsigned long current_sbrk = (unsigned long) sbrk (0);
if (sbrk_of_0_at_unexec > current_sbrk)
{
errno = 0;
if (brk ((caddr_t) sbrk_of_0_at_unexec))
fprintf (stderr, "failed to change brk addr to 0x%lx: %s\n",
sbrk_of_0_at_unexec, SYS_ERR);
}
return 0;
}

View file

@ -1,15 +1,15 @@
This is emacs lisp files, info pages, and so on (except executables)
for mule-2.3, a multilingual editor based on emacs-19.28.
for mule-2.3, a multilingual editor based on emacs-19.34.
You must install one of packages, mule-2.3, ja-mule-*-2.3 (
ja-mule-canna-2.3, ja-mule-canna+sj3-2.3, etc.), zh-mule-wnn4-2.3 and
ko-mule-wnn4-2.3, each of which contains only the executables for
mule-2.3.
This package and the above package of the executables *will* clobber any
existing emacs installation. In particular, the executables and man
pages of etags/ctags are installed, and the info pages that come with
the original emacs get installed too.
This package and the above package of the executables *will* clobber
any existing emacs installation. In particular, the executables and
man pages of etags/ctags are installed, and the info pages that come
with the original emacs get installed too.
Although this shouldn't cause any problems to run both mule and emacs,
it may cause some confusion when one of them is pkg_delete'd. If
@ -20,10 +20,5 @@ subdirectory of the ports package. Copy it into your /usr/local/info
to read mule info pages, but also make sure you also add everything
that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34
# Version required: 2.3@19.34
# Date created: 6 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.31 1998/05/02 21:07:09 max Exp $
# $Id: Makefile,v 1.32 1998/09/21 22:33:05 steve Exp $
#
DISTNAME= mule-2.3
@ -12,17 +12,21 @@ CATEGORIES?= editors
MASTER_SITES= ftp://etlport.etl.go.jp/pub/mule/ \
ftp://ftp.mei.co.jp/archive/free/gnu/emacs/Mule/ \
ftp://ftp.iij.ad.jp/pub/misc/mule/ \
ftp://ports.jp.FreeBSD.org/pub/incoming/distfiles/
DISTFILES= mule-2.3.tar.gz mule-2.3.patch-970819.tar.gz
http://www.infonets.hiroshima-u.ac.jp/~taoka/FreeBSD/mule/
DISTFILES= emacs-19.34b.tar.gz mule-2.3-19.34.patch-981002.tar.gz
PATCH_SITES= ftp://etlport.etl.go.jp/pub/mule/
PATCHFILES= mule-23-1934-alpha01.diff.gz
PATCH_DIST_STRIP= -p1
MAINTAINER?= taoka@infonets.hiroshima-u.ac.jp
RUN_DEPENDS= ${PREFIX}/lib/mule/19.28/lisp/mule.el:${PORTSDIR}/editors/mule-common
RUN_DEPENDS= ${PREFIX}/share/${EMACS_PREFIX}/19.34/lisp/mule.el:${PORTSDIR}/editors/mule-common
LIB_DEPENDS= ${LIB_INPUT_METHOD}
BUILD_DEPENDS= ${BUILD_INPUT_METHOD}
EXTRACT_ONLY= mule-2.3.tar.gz
WRKSRC= ${WRKDIR}/mule
EXTRACT_ONLY= emacs-19.34b.tar.gz
WRKSRC= ${WRKDIR}/emacs-19.34
PATCHDIR= ${.CURDIR}/../../editors/mule-common/patches
FILESDIR= ${.CURDIR}/../../editors/mule-common/files
SCRIPTDIR= ${.CURDIR}/../../editors/mule-common/scripts
@ -31,9 +35,15 @@ INSTALL_COOKIE= ${WRKDIR}/.install_done-${PKGNAME}
PACKAGE_COOKIE= ${WRKDIR}/.package_done-${PKGNAME}
GNU_CONFIGURE= yes
USE_GMAKE= yes
CONFIGURE_ARGS= i386--freebsd --terminal-face \
MAKE_ENV= LIBDIR="${LIBDIR}"
# /usr/bin/sed should be used because configure script includes 'Ctrl-L'
CONFIGURE_ENV= PATH=/usr/bin:$$PATH
EMACS_PREFIX= mule
EMACS_EXECUTABLE = mule
CONFIGURE_ARGS= i386--freebsd --with-executable=${EMACS_EXECUTABLE} \
--with-emacs-prefix=${EMACS_PREFIX} \
--with-terminal-face \
--x-includes=${X11BASE}/include --x-libraries=${X11BASE}/lib \
--locallisppath=${PREFIX}/lib/mule/site-lisp:${PREFIX}/share/emacs/site-lisp \
${WITH_INPUT_METHOD} ${WITH_DIALOGS}
STRIP=
@ -41,48 +51,80 @@ INSTALL_TARGET= install-arch-dep
.if defined(CANNA)
LIB_INPUT_METHOD+= canna.1:${PORTSDIR}/japanese/Canna
WITH_INPUT_METHOD+= --canna --canna-libraries=${PREFIX}/lib \
--canna-includes=${PREFIX}/include
WITH_INPUT_METHOD+= --with-canna --with-canna-libraries=${PREFIX}/lib \
--with-canna-includes=${PREFIX}/include
.endif
.if defined(SJ3)
BUILD_INPUT_METHOD+=sj3serv:${PORTSDIR}/japanese/sj3
WITH_INPUT_METHOD+= --sj3
WITH_INPUT_METHOD+= --with-sj3
.endif
.if defined(WNN4)
BUILD_INPUT_METHOD+=${PREFIX}/bin/Wnn4/jserver:${PORTSDIR}/japanese/Wnn
WITH_INPUT_METHOD+= --with-wnn4 --wnn-libraries=${X11BASE}/lib/libwnn.a \
--wnn-includes=${X11BASE}/include/wnn
WITH_INPUT_METHOD+= --with-wnn4 --with-wnn-libraries=${X11BASE}/lib \
--with-wnn-includes=${X11BASE}/include/wnn
.elif defined(CWNN4)
BUILD_INPUT_METHOD+=${PREFIX}/bin/cWnn4/cserver:${PORTSDIR}/chinese/Wnn
WITH_INPUT_METHOD+= --with-wnn4 --wnn-libraries=${X11BASE}/lib/libcwnn.a \
--wnn-includes=${X11BASE}/include/cwnn
WITH_INPUT_METHOD+= --with-wnn4 --with-wnn-libraries=${X11BASE}/lib/libcwnn.a \
--with-wnn-includes=${X11BASE}/include/cwnn
.elif defined(KWNN4)
BUILD_INPUT_METHOD+=${PREFIX}/bin/kWnn4/kserver:${PORTSDIR}/korean/Wnn
WITH_INPUT_METHOD+= --with-wnn4 --wnn-libraries=${X11BASE}/lib/libkwnn.a \
--wnn-includes=${X11BASE}/include/kwnn
WITH_INPUT_METHOD+= --with-wnn4 --with-wnn-libraries=${X11BASE}/lib/libkwnn.a \
--with-wnn-includes=${X11BASE}/include/kwnn
.elif defined(WNN6)
BUILD_INPUT_METHOD+=${PREFIX}/include/wnn/jlib.h:${PORTSDIR}/japanese/Wnn6-lib
WITH_INPUT_METHOD+= --with-wnn6 --wnn-libraries=${PREFIX}/lib/libwnn.a \
--wnn-includes=${PREFIX}/include/wnn
WITH_INPUT_METHOD+= --with-wnn6 --with-wnn-libraries=${PREFIX}/lib/libwnn.a \
--with-wnn-includes=${PREFIX}/include/wnn
.endif
COMP_ELC= egg.elc wnn-egg.elc sj3-client.elc sj3-egg.elc canna.elc
ELC_DIR= ../lisp
WITH_DIALOGS= --with-x-toolkit
SITE_START=${PREFIX}/lib/mule/site-lisp/site-start.el
SITE_START=${PREFIX}/share/${EMACS_PREFIX}/19.34/site-lisp/site-start.el
# ORIGINAL, MEW_ORG_PATCH and MEW_PATCH are used for debugging.
#
# ORIGINAL: original mule 2.3 based on emacs 19.34
# MEW_ORG_PATCH: apply mew's patches to original mule (http://www.mew.org)
# MEW_PATCH: apply mew's patch after apply Mr. Katayama's patches
post-extract:
${EXTRACT_CMD} -C ${WRKSRC} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/mule-2.3.patch-970819.tar.gz
cd ${WRKSRC}; ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ./takana.tar.gz
pre-patch:
cd ${WRKSRC}; ${PATCH} ${PATCH_DIST_ARGS} < ${WRKSRC}/patch
${EXTRACT_CMD} -C ${WRKDIR} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/mule-2.3-19.34.patch-981002.tar.gz
${CP} ${FILESDIR}/unexfreebsd.c ${WRKSRC}/src
.if !defined(ORIGINAL) && !defined(MEW_ORG_PATCH)
${EXTRACT_CMD} -C ${WRKDIR} ${EXTRACT_BEFORE_ARGS} ${WRKDIR}/takana-19.34.tar.gz
${MKDIR} ${WRKSRC}/lisp/its
${CP} ${WRKDIR}/lisp/its/* ${WRKSRC}/lisp/its/
.endif
.if !defined(ORIGINAL)
post-patch:
cd ${WRKSRC}; ${PATCH} ${PATCH_DIST_ARGS} < ${WRKSRC}/Mule-2.3.patch
.if !defined(MEW_ORG_PATCH)
cd ${WRKSRC}; ${PATCH} --forward --quiet -E -p0 < ${WRKDIR}/patch-19.34
cd ${WRKSRC}; ${PATCH} --forward --quiet -E -p0 < ${WRKDIR}/Mule-2.3-19.34.patch
cd ${WRKSRC}; ${PATCH} --forward --quiet -E -p0 < ${WRKDIR}/extra.patch
.if defined(MEW_PATCH)
cd ${WRKSRC}/lisp; ${PATCH} --forward --quiet -E -p0 < ${WRKDIR}/mew/egg.el-19.34.patch-for_katayama
.endif
.else
cd ${WRKSRC}/lisp; ${PATCH} --forward --quiet -E -p0 < ${WRKDIR}/mew/egg.el-19.34.patch
.endif
.if defined(MEW_PATCH) || defined(MEW_ORG_PATCH)
cd ${WRKSRC}/lisp; ${PATCH} --forward --quiet -E -p0 < ${WRKDIR}/mew/canna.el-19.34.patch
cd ${WRKSRC}/lisp; ${PATCH} --forward --quiet -E -p0 < ${WRKDIR}/mew/sj3-egg.el.patch
.endif
.endif
pre-build:
find ${WRKSRC} \( -name \*.orig -o -name \*~ \) -exec ${RM} -f \{} \;
${RM} -f ${WRKSRC}/etc/DOC* ${WRKSRC}/src/emacs ${WRKSRC}/src/emacs-19.28.*
${RM} -f ${WRKSRC}/etc/DOC* ${WRKSRC}/src/emacs ${WRKSRC}/src/emacs-19.34.*
post-build:
# bytecompile elisps for Japanese input method
for file in ${COMP_ELC}; do \
target="$$target ${ELC_DIR}/$$file"; \
done; \
cd ${WRKSRC}/src; \
./temacs -batch -l mule-inst.el $$target
# If site-start.el exists, you should run below when you install by
# this port
@ -94,10 +136,7 @@ pre-install:
fi
post-install:
# note that any2ps is a script
.for file in b2m coco ctags emacsclient etags m2ps mule-19.28
strip ${PREFIX}/bin/${file}
.endfor
strip ${PREFIX}/bin/${EMACS_EXECUTABLE}-19.34
# for wnn4+sj3 or wnn6+sj3
@if [ -e ${PKGDIR}/INSTALL ]; then \
${SH} ${PKGDIR}/INSTALL ${PKGNAME} POST-INSTALL; \
@ -107,12 +146,18 @@ post-install:
.if defined(CWNN4)
${SED} -e 's/;;\(.*\);;CHINESE$$/\1;;CHINESE/' \
-e 's/;;\(.*\);;not KOREAN$$/\1;;not KOREAN/' \
-e 's,%%X11BASE%%,${X11BASE},' \
-e 's,%%LOCALBASE%%,${LOCALBASE},' \
${FILESDIR}/site-start.el.tmpl >> ${SITE_START}
.elif defined(KWNN4)
${SED} -e 's/;;\(.*\);;KOREAN$$/\1;;KOREAN/' \
-e 's,%%X11BASE%%,${X11BASE},' \
-e 's,%%LOCALBASE%%,${LOCALBASE},' \
${FILESDIR}/site-start.el.tmpl >> ${SITE_START}
.else
${SED} -e 's/;;\(.*\);;not KOREAN$$/\1;;not KOREAN/' \
-e 's,%%X11BASE%%,${X11BASE},' \
-e 's,%%LOCALBASE%%,${LOCALBASE},' \
${FILESDIR}/site-start.el.tmpl >> ${SITE_START}
.endif
@${TOUCH} ${TOUCH_FLAGS} ${INSTALL_COOKIE}

View file

@ -1 +1 @@
A multilingual emacs (Only the executables)
A multilingual emacs based 19.34 (Only the executables)

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -15,15 +15,11 @@ executables and man pages of etags/ctags are not installed, and the
info pages that come with the original emacs don't get installed too.
The Japanese version is build to install everything, by the way.
A "dir" file is supplied in the ${PORTSDIR}/editors/mule-common/files/
subdirectory of the ports package. Copy it into your /usr/local/info
to read mule info pages, but also make sure you also add everything
that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
A "dir" file is supplied in the
${PORTSDIR}/editors/mule-common/files/ subdirectory of the
ports package. Copy it into your /usr/local/info to read mule info
pages, but also make sure you also add everything that may have been
added to that file!
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,30 +1,5 @@
bin/mule-19.28
bin/mule-19.34
@exec ln -sf %D/%F %B/mule
@unexec rm %B/mule
bin/any2ps
bin/b2m
bin/coco
bin/ctags
bin/emacsclient
bin/etags
bin/m2ps
bin/rcs-checkin
lib/mule/19.28/etc/DOC
lib/mule/19.28/etc/DOC-19.28.1
lib/mule/19.28/i386--freebsd/cvtmail
lib/mule/19.28/i386--freebsd/digest-doc
lib/mule/19.28/i386--freebsd/emacsserver
lib/mule/19.28/i386--freebsd/fakemail
lib/mule/19.28/i386--freebsd/hexl
lib/mule/19.28/i386--freebsd/make-docfile
lib/mule/19.28/i386--freebsd/make-path
lib/mule/19.28/i386--freebsd/movemail
lib/mule/19.28/i386--freebsd/profile
lib/mule/19.28/i386--freebsd/rcs2log
lib/mule/19.28/i386--freebsd/sorted-doc
lib/mule/19.28/i386--freebsd/test-distrib
lib/mule/19.28/i386--freebsd/timer
lib/mule/19.28/i386--freebsd/vcdiff
lib/mule/19.28/i386--freebsd/wakeup
lib/mule/19.28/i386--freebsd/yow
lib/mule/site-lisp/site-start.el
share/mule/19.34/etc/DOC-19.34.1
share/mule/19.34/site-lisp/site-start.el

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with Canna, sj3 and Wnn4
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna, sj3 and Wnn4
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 10:13:41 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:07 max Exp $
#
PKGNAME= ja-mule-canna+sj3+wnn4-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in ' mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with Canna and Wnn4
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna and Wnn4
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:29 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:10 max Exp $
#
PKGNAME= ja-mule-canna+wnn4-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with Canna, sj3 and Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna, sj3 and Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:26 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:08 max Exp $
#
PKGNAME= ja-mule-canna+sj3+wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
CANNA= yes
SJ3= yes
WNN6= yes

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with Canna, sj3 and Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna, sj3 and Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:26 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:08 max Exp $
#
PKGNAME= ja-mule-canna+sj3+wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
CANNA= yes
SJ3= yes
WNN6= yes

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with Canna and sj3
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna and sj3
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:18 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:05 max Exp $
#
PKGNAME= ja-mule-canna+sj3-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -22,8 +22,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with Canna and Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna and Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:35 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:11 max Exp $
#
PKGNAME= ja-mule-canna+wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
CANNA= yes
WNN6= yes

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with Canna and Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna and Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:35 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:11 max Exp $
#
PKGNAME= ja-mule-canna+wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
CANNA= yes
WNN6= yes

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with Canna
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Canna
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.30 1997/09/10 08:50:03 asami Exp $
# $Id: Makefile,v 1.31 1997/09/14 21:35:04 max Exp $
#
PKGNAME= ja-mule-canna-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -22,8 +22,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with sj3 and Wnn4
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with sj3 and Wnn4
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:52 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:14 max Exp $
#
PKGNAME= ja-mule-sj3+wnn4-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with Wnn4
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Wnn4
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.30 1997/09/10 08:51:14 asami Exp $
# $Id: Makefile,v 1.31 1997/09/14 21:35:18 max Exp $
#
PKGNAME= ja-mule-wnn4-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with sj3 and Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with sj3 and Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:57 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:16 max Exp $
#
PKGNAME= ja-mule-sj3+wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
SJ3= yes
WNN6= yes

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with sj3 and Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with sj3 and Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:50:57 asami Exp $
# $Id: Makefile,v 1.2 1997/09/14 21:35:16 max Exp $
#
PKGNAME= ja-mule-sj3+wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
SJ3= yes
WNN6= yes

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with sj3
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with sj3
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.7 1997/09/10 08:50:38 asami Exp $
# $Id: Makefile,v 1.8 1997/09/14 21:35:13 max Exp $
#
PKGNAME= ja-mule-sj3-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -22,8 +22,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.30 1997/09/10 08:51:19 asami Exp $
# $Id: Makefile,v 1.31 1997/09/14 21:35:20 max Exp $
#
PKGNAME= ja-mule-wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
WNN6= yes
.include "${.CURDIR}/../../editors/mule/Makefile"

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,14 +1,16 @@
# New ports collection makefile for: mule with Wnn6
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Wnn6
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.30 1997/09/10 08:51:19 asami Exp $
# $Id: Makefile,v 1.31 1997/09/14 21:35:20 max Exp $
#
PKGNAME= ja-mule-wnn6-2.3
CATEGORIES= japanese editors
BROKEN_ELF= yes
WNN6= yes
.include "${.CURDIR}/../../editors/mule/Makefile"

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,9 +1,9 @@
# New ports collection makefile for: mule with Wnn4
# Version required: 2.3
# New ports collection makefile for: mule 2.3@19.34 with Wnn4
# Version required: 2.3@19.34
# Date created: 20 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id: Makefile,v 1.1 1997/09/10 08:51:24 asami Exp $
# $Id: Makefile,v 1.2 1997/09/22 16:22:06 max Exp $
#
PKGNAME= ko-mule-wnn4-2.3

View file

@ -1,5 +1,5 @@
This is a package containing only the executables for mule-2.3, a
multilingual editor based on emacs-19.28.
multilingual editor based on emacs-19.34.
You should install a package, mule-common-2.3, containing emacs lisp
files, info pages, and so on (except executables) for mule-2.3.
@ -25,8 +25,8 @@ that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
Patches for those are in 'mule-2.3-19.34.patch-YYMMDD.tar.gz' and are
applied in this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

View file

@ -1,35 +1,48 @@
# New ports collection makefile for: files except executables for mule
# Version required: 2.3
# New ports collection makefile for: files except executables for mule 2.3@19.34
# Version required: 2.3@19.34
# Date created: 7 July 1997
# Whom: Satoshi Taoka <taoka@infonets.hiroshima-u.ac.jp>
#
# $Id$
# $Id: Makefile,v 1.30 1997/09/10 08:49:44 asami Exp $
#
DISTNAME= mule-2.3
PKGNAME= mule-common-2.3
CATEGORIES= editors chinese japanese korean
CATEGORIES= editors japanese
MASTER_SITES= ftp://etlport.etl.go.jp/pub/mule/ \
ftp://ftp.mei.co.jp/archive/free/gnu/emacs/Mule/ \
ftp://ftp.iij.ad.jp/pub/misc/mule/ \
ftp://ports.jp.FreeBSD.org/pub/incoming/distfiles/
DISTFILES= mule-2.3.tar.gz mule-2.3.patch-970819.tar.gz
http://www.infonets.hiroshima-u.ac.jp/~taoka/FreeBSD/mule/
DISTFILES= emacs-19.34b.tar.gz mule-2.3-19.34.patch-981002.tar.gz
PATCH_SITES= ftp://etlport.etl.go.jp/pub/mule/
PATCHFILES= mule-23-1934-alpha01.diff.gz
PATCH_DIST_STRIP= -p1
MAINTAINER= taoka@infonets.hiroshima-u.ac.jp
EXTRACT_ONLY= mule-2.3.tar.gz
.for dir in editors/mule japanese/mule-canna japanese/mule-canna+sj3 \
japanese/mule-canna japanese/mule-canna+sj3 \
japanese/mule-canna+sj3+wnn4 japanese/mule-canna+sj3+wnn6 \
japanese/mule-canna+wnn4 japanese/mule-canna+wnn6 \
japanese/mule-sj3 japanese/mule-sj3+wnn japanese/mule-sj3+wnn6 \
japanese/mule-wnn4 japanese/mule-wnn6 \
chinese/mule-wnn4 korean/mule-wnn4
.if exists(${.CURDIR}/../../${dir}/work/.build_done)
.for dir in chinese/mule-wnn4 \
editors/mule \
japanese/mule-canna+sj3+wnn4 \
japanese/mule-canna+sj3+wnn6 \
japanese/mule-canna+sj3 \
japanese/mule-canna+wnn4 \
japanese/mule-canna+wnn6 \
japanese/mule-canna \
japanese/mule-sj3+wnn4 \
japanese/mule-sj3+wnn6 \
japanese/mule-sj3 \
japanese/mule-wnn4 \
japanese/mule-wnn6 \
korean/mule-wnn4
.if exists(${.CURDIR}/../../${dir}/work/.install_done)
WRKDIR= ${.CURDIR}/../../${dir}/work
.elif exists(${.CURDIR}/../../${dir}/work/.build_done)
WRKDIR?= ${.CURDIR}/../../${dir}/work
.endif
.endfor
WRKSRC= ${WRKDIR}/mule
WRKSRC= ${WRKDIR}/emacs-19.34
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/mule.sh
.if !defined(WRKDIR) && !defined(PACKAGE_BUILDING)
BROKEN= You should build install one of the other mule ports first
@ -37,39 +50,44 @@ BROKEN= You should build install one of the other mule ports first
INSTALL_COOKIE= ${WRKDIR}/.install_done-${PKGNAME}
PACKAGE_COOKIE= ${WRKDIR}/.package_done-${PKGNAME}
TMPPLIST= ${WRKDIR}/.PLIST.mktmp-${PKGNAME}
PLIST_SUB= EMACS_VERSION=19.34
USE_GMAKE= yes
GNU_CONFIGURE= yes
USE_GMAKE= yes
CONFIGURE_ARGS= i386--freebsd --with-x-toolkit \
--terminal-face \
EMACS_PREFIX= mule
EMACS_EXECUTABLE = mule
CONFIGURE_ARGS= i386--freebsd --with-executable=${EMACS_EXECUTABLE} \
--with-emacs-prefix=${EMACS_PREFIX} \
--with-terminal-face \
--x-includes=${X11BASE}/include --x-libraries=${X11BASE}/lib \
--locallisppath=${PREFIX}/lib/mule/site-lisp:${PREFIX}/share/emacs/site-lisp
STRIP=
MAN1= coco.1 ctags.1 etags.1 m2ps.1 mule.1
MAN1= coco.1 ctags.1 etags.1 m2ps.1 emacs.1 mule.1
INSTALL_TARGET= install-arch-indep
post-extract:
${EXTRACT_CMD} -C ${WRKSRC} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/mule-2.3.patch-970819.tar.gz
cd ${WRKSRC}; ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ./takana.tar.gz
pre-patch:
cd ${WRKSRC}; ${PATCH} ${PATCH_DIST_ARGS} < ${WRKSRC}/patch
post-patch:
cd ${WRKSRC}; ${PATCH} ${PATCH_DIST_ARGS} < ${WRKSRC}/Mule-2.3.patch
${CP} ${FILESDIR}/unexfreebsd.c ${WRKSRC}/src
pre-build:
find ${WRKSRC} \( -name \*.orig -o -name \*~ \) -exec ${RM} -f \{} \;
${RM} -f ${WRKSRC}/etc/DOC* ${WRKSRC}/src/emacs ${WRKSRC}/src/emacs-19.28.*
${RM} -f ${WRKSRC}/etc/DOC* ${WRKSRC}/src/emacs ${WRKSRC}/src/emacs-19.34.*
post-install:
# note that any2ps rcs-checkin are scripts
.for file in b2m coco ctags emacsclient etags m2ps
strip ${PREFIX}/bin/${file}
.endfor
if [ ! -f ${PREFIX}/info/dir ]; then \
${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/info/dir; \
fi
.for info in emacs vip forms gnus cl sc
if [ ! -f ${PREFIX}/share/mule/19.34/info/dir ]; then \
${MKDIR} ${PREFIX}/share/mule/19.34/info; \
${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/share/mule/19.34/info/dir; \
fi
.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode message
install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir
.endfor
# Our makeinfo can't handle files with Japanese characters. :<
@ -80,6 +98,19 @@ post-install:
install-info --section="The Emacs editor and associated tools" --entry="* Canna-jp: (canna-jp). Another Japanese Inputting Method. (Japanese)" ${PREFIX}/info/canna-jp ${PREFIX}/info/dir
@${SH} ${PKGDIR}/INSTALL ${PKGNAME} POST-INSTALL
@${TOUCH} ${TOUCH_FLAGS} ${INSTALL_COOKIE}
if [ ! -f ${STARTUP_SCRIPT} ]; then \
${ECHO} "Installing ${STARTUP_SCRIPT} startup file."; \
${ECHO} '#!/bin/sh' > ${STARTUP_SCRIPT}; \
${ECHO} 'echo -n " Mule"' >> ${STARTUP_SCRIPT}; \
${ECHO} 'if [ -d /var/run/emacs/lock ]; then' >> ${STARTUP_SCRIPT}; \
${ECHO} ' rm -f /var/run/emacs/lock/*' >> ${STARTUP_SCRIPT}; \
${ECHO} "else" >> ${STARTUP_SCRIPT}; \
${ECHO} " mkdir -p /var/run/emacs/lock" >> ${STARTUP_SCRIPT}; \
${ECHO} "fi" >> ${STARTUP_SCRIPT} ; \
${ECHO} "chmod 1777 /var/run/emacs/lock${lockdir}" >> ${STARTUP_SCRIPT} ; \
chmod 755 ${STARTUP_SCRIPT} ; \
chown bin.bin ${STARTUP_SCRIPT}; \
fi
post-package:
@${TOUCH} ${TOUCH_FLAGS} ${PACKAGE_COOKIE}

View file

@ -1,2 +1,3 @@
MD5 (mule-2.3.tar.gz) = e97cfbf19ee43442b416004eb92aac41
MD5 (mule-2.3.patch-970819.tar.gz) = affdd51086c15abbb0a50999ac2e2796
MD5 (emacs-19.34b.tar.gz) = 9bd3c694a9019c2a2ebd703a9a0394e0
MD5 (mule-2.3-19.34.patch-981002.tar.gz) = cadf0c5e4ec4d74b921ffa96a7cca96e
MD5 (mule-23-1934-alpha01.diff.gz) = 09b0fbf4871b701eb6371e56388db9e0

View file

@ -1,25 +1,6 @@
--- ./man/Makefile.org Sat Jul 2 14:35:17 1994
+++ ./man/Makefile Tue May 20 22:28:50 1997
@@ -4,7 +4,7 @@
MAKEINFO = makeinfo
TEXINDEX_OBJS = texindex.o getopt.o
INFO_TARGETS = ../info/emacs ../info/cl ../info/forms ../info/vip \
- ../info/gnus ../info/sc ../info/info ../info/dired-x
+ ../info/gnus ../info/sc ../info/dired-x
DVI_TARGETS = emacs.dvi cl.dvi forms.dvi vip.dvi gnus.dvi sc.dvi dired-x.dvi
INFOSOURCES = info.texi info-stnd.texi
@@ -54,6 +54,7 @@
gnu1.texi \
glossary.texi
+all: info
info: $(INFO_TARGETS)
dvi: $(DVI_TARGETS)
--- ./man/vip.texi.org Tue May 20 22:29:04 1997
+++ ./man/vip.texi Tue May 20 22:30:32 1997
@@ -24,6 +24,10 @@
--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995
+++ ./man/vip.texi Tue May 20 01:28:33 1997
@@ -2,6 +2,10 @@
@setfilename ../info/vip
@settitle VIP
@ -30,8 +11,8 @@
@iftex
@finalout
--- ./man/emacs.texi.org Fri Nov 4 03:08:52 1994
+++ ./man/emacs.texi Tue May 20 22:30:32 1997
--- ./man/emacs.texi.org Mon Aug 19 21:15:12 1996
+++ ./man/emacs.texi Tue May 20 01:20:11 1997
@@ -49,6 +49,11 @@
@settitle GNU Emacs Manual
@setfilename ../info/emacs
@ -44,8 +25,21 @@
@c
@c in general, keep the following line commented out, unless doing a
@c copy of this manual that will be published. the manual should go
--- ./man/forms.texi.org Thu Jul 28 13:46:45 1994
+++ ./man/forms.texi Tue May 20 22:30:32 1997
--- ./man/viper.texi.org Wed Aug 7 10:59:45 1996
+++ ./man/viper.texi Tue May 20 01:29:17 1997
@@ -4,6 +4,10 @@
\input texinfo
@setfilename ../info/viper
+@dircategory The Emacs editor and associated tools
+@direntry
+* VIPER: (viper). The new VI-emulation mode in Emacs-19.29.
+@end direntry
@iftex
@finalout
--- ./man/forms.texi.org Sat Mar 23 06:42:27 1996
+++ ./man/forms.texi Tue May 20 01:22:37 1997
@@ -9,6 +9,11 @@
@syncodeindex vr cp
@syncodeindex fn cp
@ -58,8 +52,35 @@
@iftex
@finalout
@setchapternewpage odd
--- ./man/cl.texi.org Sat Jan 8 00:42:47 1994
+++ ./man/cl.texi Tue May 20 22:30:32 1997
--- ./man/gnus.texi.org Wed Jun 26 14:49:29 1996
+++ ./man/gnus.texi Tue May 20 01:23:15 1997
@@ -5,6 +5,11 @@
@synindex fn cp
@synindex vr cp
@synindex pg cp
+@dircategory The Emacs editor and associated tools
+@direntry
+* GNUS: (gnus). The news reader GNUS.
+@end direntry
+
@iftex
@finalout
@end iftex
--- ./man/mh-e.texi.org Sun Aug 4 00:00:29 1996
+++ ./man/mh-e.texi Tue May 20 01:23:49 1997
@@ -4,6 +4,10 @@
@setfilename ../info/mh-e
@settitle mh-e
@c %**end of header
+@dircategory The Emacs editor and associated tools
+@direntry
+* MH-E: (mh-e). Emacs interface to the MH mail system.
+@end direntry
@setchapternewpage odd
--- ./man/cl.texi.org Mon Apr 15 21:36:53 1996
+++ ./man/cl.texi Tue May 20 01:24:18 1997
@@ -2,6 +2,12 @@
@setfilename ../info/cl
@settitle Common Lisp Extensions
@ -73,8 +94,8 @@
@iftex
@finalout
@end iftex
--- ./man/sc.texi.org Sat Jan 8 00:41:40 1994
+++ ./man/sc.texi Tue May 20 22:30:32 1997
--- ./man/sc.texi.org Thu Jan 4 12:55:23 1996
+++ ./man/sc.texi Tue May 20 01:25:13 1997
@@ -3,6 +3,12 @@
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename ../info/sc
@ -88,8 +109,8 @@
@iftex
@finalout
@end iftex
--- ./man/dired-x.texi.org Sat Aug 13 09:58:50 1994
+++ ./man/dired-x.texi Tue May 20 22:48:19 1997
--- ./man/dired-x.texi.org Thu Jan 4 12:54:19 1996
+++ ./man/dired-x.texi Tue May 20 01:25:55 1997
@@ -18,6 +18,11 @@
@setfilename ../info/dired-x
@c dired-x.el REVISION NUMBER
@ -102,57 +123,106 @@
@iftex
@finalout
@end iftex
@@ -196,32 +201,32 @@
@enumerate
@item
Omitting of uninteresting files from dired listing.
-@itemize
+@itemize @bullet
@xref{Omitting Files in Dired}
@end itemize
@item
Local variables for dired directories.
-@itemize
+@itemize @bullet
@xref{Local Variables}
@end itemize
@item
Guessing shell commands in dired buffers.
-@itemize
+@itemize @bullet
@xref{Shell Command Guessing}
@end itemize
@item
Running dired command in non-dired buffers.
-@itemize
+@itemize @bullet
@xref{Virtual Dired}
@end itemize
@item
Finding a file mentioned in a buffer
-@itemize
+@itemize @bullet
@xref{Find File At Point}
@end itemize
@item
Commands using file marking.
-@itemize
+@itemize @bullet
@xref{Advanced Mark Commands}
@end itemize
@end enumerate
--- ./man/gnus.texi.org Sun Sep 11 11:52:45 1994
+++ ./man/gnus.texi Tue May 20 23:23:03 1997
@@ -3,6 +3,12 @@
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename ../info/gnus
@settitle GNUS 3.15 Manual
+
--- ./man/ediff.texi.org Fri Jun 21 20:00:04 1996
+++ ./man/ediff.texi Tue May 20 01:26:29 1997
@@ -10,6 +10,11 @@
@synindex vr cp
@synindex fn cp
@synindex pg cp
+@dircategory The Emacs editor and associated tools
+@direntry
+* GNUS: (gnus). The news reader GNUS.
+* Ediff: (ediff). A comprehensive visual interface to diff
+ and patch.
+@end direntry
+
@iftex
@finalout
@end iftex
--- ./man/cc-mode.texi.org Sun Aug 4 21:56:21 1996
+++ ./man/cc-mode.texi Tue May 20 01:27:18 1997
@@ -9,6 +9,12 @@
@settitle CC-MODE Version 4 Documentation
@footnotestyle end
+@dircategory The Emacs editor and associated tools
+@direntry
+* CC mode: (ccmode). The GNU Emacs mode for editing C, C++,
+ Objective-C and Java code.
+@end direntry
+
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@comment @setchapternewpage odd !! we don't want blank pages !!
@comment %**end of header (This is for running Texinfo on a region)
--- ./man/message.texi.org Wed Jun 26 14:49:43 1996
+++ ./man/message.texi Sat Dec 13 17:46:31 1997
@@ -5,6 +5,10 @@
@synindex fn cp
@synindex vr cp
@synindex pg cp
+@dircategory The Emacs editor and associated tools
+@direntry
+* Message: (message). Editing mail and news messages.
+@end direntry
@iftex
@finalout
@end iftex
--- Makefile.in.~1~ Sat Jul 11 17:57:16 1998
+++ Makefile.in Sat Jul 11 17:58:45 1998
@@ -191,7 +191,7 @@
# Subdirectories to make recursively. `lisp' is not included
# because the compiled lisp files are part of the distribution
# and you cannot remake them without installing Emacs first.
-SUBDIR = lib-src src
+SUBDIR = lib-src src man
# The makefiles of the directories in $SUBDIR.
SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile
--- Makefile.in.~1~ Fri Jul 10 00:00:50 1998
+++ Makefile.in Fri Jul 10 00:10:50 1998
@@ -375,14 +375,9 @@
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
then \
(cd ${infodir}; \
- if [ -f dir ]; then \
- if [ ! -f dir.old ]; then mv -f dir dir.old; \
- else mv -f dir dir.bak; fi; \
- fi; \
cd ${srcdir}/info ; \
- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \
(cd $${thisdir}; chmod a+r ${infodir}/dir); \
- for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip* \
+ for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* message* mh-e* sc* vip* \
antenews* canna* egg* languages* m2ps* mule* kbd-trans* \
quail* terminology* CCL* ISO2022* R2L* XFONT*; do \
(cd $${thisdir}; \
--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996
+++ ./man/Makefile.in Tue Apr 15 00:29:52 1997
@@ -13,7 +13,7 @@
# The makeinfo program is part of the Texinfo distribution.
MAKEINFO = makeinfo
INFO_TARGETS = ../info/emacs ../info/ccmode ../info/cl ../info/dired-x \
- ../info/ediff ../info/forms ../info/gnus ../info/info \
+ ../info/ediff ../info/forms ../info/gnus \
../info/mh-e ../info/sc ../info/vip ../info/viper \
../info/message
DVI_TARGETS = emacs.dvi cc-mode.dvi cl.dvi dired-x.dvi ediff.dvi forms.dvi \
@@ -66,6 +66,7 @@
${srcdir}/gnu1.texi \
${srcdir}/glossary.texi
+all: info
info: $(INFO_TARGETS)
dvi: $(DVI_TARGETS)
@@ -74,12 +75,6 @@
# in srcdir. There is no provision for Info files
# to exist in the build directory.
# In a distribution of Emacs, the Info files should be up to date.
-
-../info/info: ${INFOSOURCES}
- cd $(srcdir); $(MAKEINFO) --no-split info.texi
-
-info.dvi: ${INFOSOURCES}
- TEXINPUTS="$(srcdir) $(TEXINPUTS)"; $(TEXI2DVI) ${srcdir}/info.texi
../info/emacs: ${EMACSSOURCES}
cd $(srcdir); $(MAKEINFO) emacs.texi

View file

@ -1,25 +1,74 @@
--- ../mule-2.3.org/src/s/freebsd.h.org Fri Nov 4 03:11:17 1994
+++ ./src/s/freebsd.h Mon Feb 16 17:29:31 1998
@@ -31,10 +31,10 @@
--- orig/s/freebsd.h Mon Jun 10 05:14:32 1996
+++ src/s/freebsd.h Tue Sep 29 11:35:32 1998
@@ -1,5 +1,15 @@
/* s/ file for freebsd system. */
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
-#define LIBS_DEBUG
+#define LIBS_DEBUG -lcrypt
+/* Get the correct __FreeBSD_version, even if this is before that was
+ defined. */
+#ifndef __FreeBSD__
+#define __FreeBSD_version 199401
+#elif __FreeBSD__ == 1
+#define __FreeBSD_version 199405
+#else
+#include <osreldate.h>
+#endif
+
/* '__FreeBSD__' is defined by the preprocessor on FreeBSD-1.1 and up.
Earlier versions do not have shared libraries, so inhibit them.
You can inhibit them on newer systems if you wish
@@ -34,7 +44,6 @@
#define LIBS_DEBUG
#define LIBS_SYSTEM -lutil
#define LIBS_TERMCAP -ltermcap
-#define LIB_GCC -lgcc
+#define LIB_GCC /usr/lib/libgcc.a
/* Reread the time zone on startup. */
#define LOCALTIME_CACHE
@@ -81,6 +81,9 @@
#define SYSV_SYSTEM_DIR
@@ -42,12 +51,28 @@
#undef BSD_PGRPS
#define GETPGRP_NO_ARG
+#ifdef __ELF__
+
+#define LD_SWITCH_SYSTEM
+#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o
+#define UNEXEC unexelf.o
+#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
+#undef LIB_GCC
+#define LIB_GCC
+
+#else /* not __ELF__ */
+
#ifndef NO_SHARED_LIBS
#define LD_SWITCH_SYSTEM -e start -dc -dp
#define HAVE_TEXT_START /* No need to define `start_of_text'. */
+#if __FreeBSD_version >= 300002
+#define START_FILES pre-crt0.o /usr/lib/aout/crt0.o
+#else /* __FreeBSD_version < 300002 */
#define START_FILES pre-crt0.o /usr/lib/crt0.o
-#define UNEXEC unexsunos4.o
+#endif /* __FreeBSD_version < 300002 */
+#define UNEXEC unexfreebsd.o
#define RUN_TIME_REMAP
+#define LIB_GCC -lgcc
#ifndef N_TRELOFF
#define N_PAGSIZ(x) __LDPGSZ
@@ -63,6 +88,8 @@
#endif /* __FreeBSD__ */
#endif /* NO_SHARED_LIBS */
+#endif /* not __ELF__ */
+
#define HAVE_WAIT_HEADER
#define HAVE_GETLOADAVG
/*#define HAVE_GETPAGESIZE /* configure now puts this in config.h */
@@ -80,6 +107,8 @@
#define BSD 199103
#elif __FreeBSD__ == 2
#define BSD 199306
+#elif __FreeBSD__ == 3
+#define BSD 199506
+#define FREEBSD_NEW_LDSO
#endif
#define WAITTYPE int

View file

@ -0,0 +1,23 @@
--- src/unexelf.c.orig Fri Oct 2 12:55:43 1998
+++ src/unexelf.c Fri Oct 2 13:02:05 1998
@@ -678,7 +678,8 @@
if (n < 0)
fatal ("Couldn't find segment next to .bss in %s\n", old_name, 0);
- NEW_PROGRAM_H (n).p_filesz += new_data2_size;
+/* NEW_PROGRAM_H (n).p_filesz += new_data2_size; */
+ NEW_PROGRAM_H (n).p_filesz = new_bss_addr - NEW_PROGRAM_H (n).p_vaddr; /* From emacs 20.3 */
NEW_PROGRAM_H (n).p_memsz = NEW_PROGRAM_H (n).p_filesz;
#if 0 /* Maybe allow section after data2 - does this ever happen? */
@@ -845,7 +846,9 @@
for (; symp < symendp; symp ++)
if (strcmp ((char *) (symnames + symp->st_name), "_end") == 0
- || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0)
+ || strcmp ((char *) (symnames + symp->st_name), "end") == 0
+ || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0
+ || strcmp ((char *) (symnames + symp->st_name), "edata") == 0)
memcpy (&symp->st_value, &new_bss_addr, sizeof (new_bss_addr));
}

View file

@ -0,0 +1,73 @@
From ftp://ftp.etl.go.jp/pub/mule/BUG-INFO
6) This fix a bug of displaying multilingual text in mode lines.
--- /usr/dist/mule/mule-2.3/src/xdisp.c Fri Jun 9 17:37:14 1995
+++ ./src/xdisp.c Wed Mar 6 17:08:03 1996
@@ -3973,8 +3973,9 @@
/* 91.10.21 by K.Handa, 92.4.30 by Y.Niibe */
int mc_flag = !NILP(XBUFFER (w->buffer)->mc_flag);
- /* 92.3.21, 92.9.7 by K.Handa */
- register unsigned char *endp = string + strlen(string);
+ /* 92.3.21, 92.9.7, 95.8.31 by K.Handa */
+ register unsigned char *endp
+ = string + (length < 0 ? strlen(string) : length);
char *hexa = "0123456789ABCDEF"; /* 92.4.9 by K.Handa */
/* 92.4.9 by K.Handa, 92.4.30 by Y.Niibe */
int ctl_hexa = !NILP (XBUFFER (w->buffer)->ctl_hexa);
8) Another fix for a severe bug for writing *viscii* file.
--- mule/lisp/mule-init.el.old Wed May 8 13:05:30 1996
+++ ./lisp/mule-init.el Wed May 8 13:04:06 1996
@@ -638,7 +638,7 @@
(r0 -= 160)
(write-read-repeat
r0
- [ 0 129 130 131 132 165 134 135 136 137 138 139 140 141 142 143
+ [ 0 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
144 145 146 0 0 147 150 151 152 0 0 0 0 180 149 0
0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 159
0 186 0 0 0 128 20 187 188 0 0 25 30 0 179 191
11) This patch fixes Single Shift 3 handling.
--- /usr/dist/mule/mule-2.3/src/coding.c Wed Nov 30 16:45:02 1994
+++ ./src/coding.c Sat Sep 28 09:41:51 1996
@@ -1044,7 +1044,7 @@
{ \
if (lc != lcg) dp = designate(dp, lcg, lc, 3, form), lcg = lc; \
if (form & CODE_SEVEN) \
- *dp++ = ESC, *dp++ = 'N'; \
+ *dp++ = ESC, *dp++ = 'O'; \
else \
*dp++ = SS3; \
cntl = (cntl & ~CC_GRAPHIC_MASK) | CC_IN_G3; \
12) This patch fixes wrong handling of *iso-2022-lock* by coco.
--- /usr/dist/mule/mule-2.3/lib-src/mulelib.c Mon Jul 17 15:03:43 1995
+++ ./lib-src/mulelib.c Fri Oct 4 21:28:48 1996
@@ -287,13 +287,18 @@
p0 = p1 + 1;
if (CODE_TYPE (cs) == ISO2022) {
long flags[12];
- for (i = 0; i < 11; i++) {
- if (!(flags[i] = atoi(p0))) flags[i] = Qnil;
+ for (i = 0; i < 4; i++) {
+ if ((flags[i] = atoi(p0)) == -1) flags[i] = LCASCII;
PROCEED_CHAR(',');
p0 = p1 + 1;
}
- flags[i] = atoi(p0);
CODE_LC_SET(cs, flags[0], flags[1], flags[2], flags[3]);
+ for (; i < 11; i++) {
+ if (!(flags[i] = atoi(p0))) flags[i] = Qnil;
+ PROCEED_CHAR(',');
+ p0 = p1 + 1;
+ }
+ if (!(flags[i] = atoi(p0))) flags[i] = Qnil;
CODE_FORM_SET(cs, (Lisp_Object)flags[4], (Lisp_Object)flags[5],
(Lisp_Object)flags[6], (Lisp_Object)flags[7],
(Lisp_Object)flags[8], (Lisp_Object)flags[9],

View file

@ -0,0 +1,11 @@
--- src/s.emacs/freebsd.h Tue Sep 29 11:35:32 1998
+++ src/s/freebsd.h Tue Sep 29 11:42:53 1998
@@ -42,7 +42,7 @@
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
#define LIBS_DEBUG
-#define LIBS_SYSTEM -lutil
+#define LIBS_SYSTEM -lutil -lcrypt -lxpg4
#define LIBS_TERMCAP -ltermcap
#define SYSV_SYSTEM_DIR

View file

@ -0,0 +1,89 @@
diff -arcN ../mule-2.3.org/etc/FAQ-Mule.jp ./etc/FAQ-Mule.jp
*** ../mule-2.3.org/etc/FAQ-Mule.jp Fri Jul 21 20:40:06 1995
--- ./etc/FAQ-Mule.jp Wed Aug 21 11:33:22 1996
***************
*** 1867,1872 ****
--- 1867,1874 ----
$B$H=q$/J}K!$b$"$j$^$9!#(B
+ ($BCm5-(B : FreeBSD$B$G$O!"B>$H6%9g$9$k$?$a%]!<%HHV9f$O(B3086$B$K$7$F$"$j$^$9!#(B)
+
Emacs lisp $B%W%m%0%i%_%s%0(B
=========================
diff -arcN ../mule-2.3.org/lisp/eggrc-sj3 ./lisp/eggrc-sj3
*** ../mule-2.3.org/lisp/eggrc-sj3 Fri Oct 21 13:18:21 1994
--- ./lisp/eggrc-sj3 Wed Aug 21 13:05:24 1996
***************
*** 3,11 ****
;;; Version 1.0
;;; Copyright 1990 Kiyoji Ishii
;;;
! (set-default-sys-dic-directory "/usr/sony/dict/sj3")
! (set-default-usr-dic-directory "/usr/sony/dict/sj3/user/$USER")
;;;
;;; System Dictionary
--- 3,17 ----
;;; Version 1.0
;;; Copyright 1990 Kiyoji Ishii
;;;
+ ;;;
+ ;;; Change dictionary paths.
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
+ ;;; Remove $USER variable. Use (user-login-name).
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/20
+ ;;;
! (set-default-sys-dic-directory "/usr/local/lib/sj3/dict")
! (set-default-usr-dic-directory (concat "/usr/local/lib/sj3/dict/user/" (user-login-name)))
;;;
;;; System Dictionary
diff -arcN ../mule-2.3.org/lisp/sj3-egg.el ./lisp/sj3-egg.el
*** ../mule-2.3.org/lisp/sj3-egg.el Fri Feb 17 17:23:31 1995
--- ./lisp/sj3-egg.el Wed Aug 21 13:32:36 1996
***************
*** 294,301 ****
;;;
;;; Entry functions for egg-startup-file
;;;
! (defvar *default-sys-dic-directory* "/usr/sony/dict/sj3")
(defun set-default-sys-dic-directory (pathname)
"$B%7%9%F%`<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B
--- 294,307 ----
;;;
;;; Entry functions for egg-startup-file
;;;
+ ;;;
+ ;;; Change dictionary paths.
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10
+ ;;; Remove $USER variable. Use (user-login-name).
+ ;;; Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/20
+ ;;;
! (defvar *default-sys-dic-directory* "/usr/local/lib/sj3/dict")
(defun set-default-sys-dic-directory (pathname)
"$B%7%9%F%`<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B
***************
*** 310,316 ****
(format "System Default directory(%s) $B$,$"$j$^$;$s!#(B" pathname))
(setq *default-sys-dic-directory* (file-name-as-directory pathname)))))
! (defvar *default-usr-dic-directory* "/usr/sony/dict/sj3/user/$USER")
(defun set-default-usr-dic-directory (pathname)
"$BMxMQ<T<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B
--- 316,322 ----
(format "System Default directory(%s) $B$,$"$j$^$;$s!#(B" pathname))
(setq *default-sys-dic-directory* (file-name-as-directory pathname)))))
! (defvar *default-usr-dic-directory* (concat "/usr/local/lib/sj3/dict/user/" (user-login-name)))
(defun set-default-usr-dic-directory (pathname)
"$BMxMQ<T<-=q$NI8=`(Bdirectory PATHNAME$B$r;XDj$9$k!#(B

View file

@ -0,0 +1,60 @@
--- ../mule.org/lisp/eggrc-wnn Fri Jul 28 20:12:41 1995
+++ ./lisp/eggrc-wnn Wed Oct 29 12:13:50 1997
@@ -24,7 +24,7 @@
;;;
;;; modified for Wnn V4 - Use compatible library of Wnn v3
;;; Copyright 1989 OMRON Tateisi Electronics, Co.
-;;; 1989 7/12 by H.Kuribayashi kuri@frf.oron.junet
+;;; 1989 7/12 by H.Kuribayashi kuri@frf.omron.junet
;;; 92.5.19 modified for Wnn V4 by T.Shingu <shingu@cpr.canon.co.jp>
;;; Use non compatible library.
@@ -50,14 +50,16 @@
(concat wnn-usr-dic-dir "/symbol.h") 1 nil t)
(add-wnn-dict "iwanami/tankan.dic" "" 1 nil nil)
(add-wnn-dict "iwanami/tankan2.dic" "" 1 nil nil)
- (add-wnn-dict "iwanami/tel.dic" "" 1 nil nil)
- (add-wnn-dict "iwanami/zip.dic" "" 1 nil nil)
+ (add-wnn-dict "iwanami/tel.dic"
+ (concat wnn-usr-dic-dir "/tel.h") 1 nil t)
+ (add-wnn-dict "iwanami/zip.dic"
+ (concat wnn-usr-dic-dir "/zip.h") 1 nil t)
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 15 t t)
; (add-wnn-dict "wnncons/tankan2.dic" "" 1 nil nil)
; (add-wnn-dict "wnncons/tankan3.dic" "" 1 nil nil)
(set-wnn-param 5 10 2 45 0 80 5 1 20 0 400 -100 400 80 200 2 200)
- (add-wnn-notrans-dict (concat wnn-usr-dic-dir "/katakana") 15 t)
+ (add-wnn-notrans-dict (concat wnn-usr-dic-dir "/muhenkan") 15 t)
(add-wnn-bmodify-dict (concat wnn-usr-dic-dir "/bunsetsu") 15 t)
(set-last-is-first-mode t)
@@ -101,7 +103,9 @@
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 5 t t)
; (add-wnn-dict "wnncons/tankan2.dic" "" 1 nil nil)
; (add-wnn-dict "wnncons/tankan3.dic" "" 1 nil nil)
- (set-wnn-param 2 10 2 45 5 80 5 1 40 0 400 -100 400 80 200 2 200)
+; (set-wnn-param 2 10 2 45 5 80 5 1 40 0 400 -100 400 80 200 2 200)
+; New Parameter
+ (set-wnn-param 2 10 2 45 100 200 5 1 40 -100 200 -100 200 80 200 200 200)
(set-wnn-reverse t)
(set-wnn-fuzokugo "pubdic/full.fzk")
(add-wnn-dict "pubdic/kihon.dic" (concat wnn-usr-dic-dir "/kihon.h") 5 nil t)
@@ -158,7 +162,7 @@
((eq wnn-server-type 'kserver)
(set-wnn-reverse nil)
(set-wnn-fuzokugo "sys/full.fzk")
- ; (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
+ (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
(add-wnn-dict "sys/single.dic" (concat wnn-usr-dic-dir "/single.h") 1 nil t)
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 5 t t)
; (add-wnn-dict (concat wnn-usr-dic-dir "/hangul") "" 5 t t)
@@ -166,7 +170,7 @@
(set-wnn-param 1 5 2 750 10 80 10 5 1000 50 0 -200 0 0 0 16 0)
(set-wnn-reverse t)
(set-wnn-fuzokugo "sys/full.fzk")
- ; (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
+ (add-wnn-dict "sys/hword.dic" (concat wnn-usr-dic-dir "/hword.h") 4 nil t)
(add-wnn-dict "sys/single.dic" (concat wnn-usr-dic-dir "/single.h") 1 nil t)
(add-wnn-dict (concat wnn-usr-dic-dir "/ud") "" 5 t t)
; (add-wnn-dict (concat wnn-usr-dic-dir "/hangul") "" 5 t t)

View file

@ -0,0 +1,45 @@
--- Makefile.in.orig Fri Jul 10 11:22:07 1998
+++ Makefile.in Fri Jul 10 11:27:03 1998
@@ -310,14 +310,14 @@
### It would be nice to do something for a parallel make
### to ensure that install-arch-indep finishes before this starts.
install-arch-dep: mkdir
- (cd lib-src; \
- $(MAKE) install $(MFLAGS) prefix=${prefix} \
- exec_prefix=${exec_prefix} bindir=${bindir} \
- libexecdir=${libexecdir} archlibdir=${archlibdir})
${INSTALL_PROGRAM} src/emacs ${bindir}/${executable}-${version}
-chmod 1755 ${bindir}/${executable}-${version}
rm -f ${bindir}/$(EMACS)
-ln ${bindir}/${executable}-${version} ${bindir}/$(EMACS)
+ echo "Copying etc/DOC-* to ${docdir} ..." ; \
+ (cd ./etc; tar -cf - DOC*)|(cd ${docdir}; umask 0; tar -xvf - ); \
+ (cd $(docdir); chmod a+r DOC*; rm DOC) \
+
### Install the files that are machine-independent.
### Most of them come straight from the distribution;
@@ -327,6 +327,10 @@
### Note that we copy DOC* and then delete DOC
### as a workaround for a bug in tar on Ultrix 4.2.
install-arch-indep: mkdir
+ (cd lib-src; \
+ $(MAKE) install $(MFLAGS) prefix=${prefix} \
+ exec_prefix=${exec_prefix} bindir=${bindir} \
+ libexecdir=${libexecdir} archlibdir=${archlibdir})
-set ${COPYDESTS} ; \
for dir in ${COPYDIR} ; do \
if [ `(cd $$1 && /bin/pwd)` != `(cd $${dir} && /bin/pwd)` ] ; then \
@@ -360,9 +364,9 @@
-chmod -R a+r ${COPYDESTS}
if [ `(cd ./etc; /bin/pwd)` != `(cd ${docdir}; /bin/pwd)` ]; \
then \
- echo "Copying etc/DOC-*, etc/CHARSETS, and etc/CODINGS to ${docdir} ..." ; \
- (cd ./etc; tar -cf - DOC* CHARSETS CODINGS)|(cd ${docdir}; umask 0; tar -xvf - ); \
- (cd $(docdir); chmod a+r DOC* CHARSETS CODINGS; rm DOC) \
+ echo "Copying etc/CHARSETS, and etc/CODINGS to ${docdir} ..." ; \
+ (cd ./etc; tar -cf - CHARSETS CODINGS)|(cd ${docdir}; umask 0; tar -xvf - ); \
+ (cd $(docdir); chmod a+r CHARSETS CODINGS) \
else true; fi
if [ -r ./lisp ] \
&& [ x`(cd ./lisp; /bin/pwd)` != x`(cd ${lispdir}; /bin/pwd)` ] \

View file

@ -0,0 +1,5 @@
--- lisp/its/han-kata.el~ Thu Aug 6 19:55:01 1998
+++ lisp/its/han-kata.el Mon Aug 10 13:24:50 1998
@@ -45 +45 @@
-(defvar enable-double-n-syntax nil "*Enable ""nn"" input for ""(I](B"" ")
+(defvar enable-double-n-syntax nil "*Enable \"nn\" input for \"(I](B\" ")

View file

@ -0,0 +1,16 @@
--- configure.orig Sat Sep 19 23:06:14 1998
+++ configure Sat Sep 19 23:14:44 1998
@@ -564,11 +564,11 @@
emacs_prefix=emacs
lispdir='${datadir}/${emacs_prefix}/${version}/lisp'
locallisppath='${datadir}/${emacs_prefix}/${version}/site-lisp:'\
-'${datadir}/${emacs_prefix}/site-lisp'
+'${datadir}/${emacs_prefix}/site-lisp:${datadir}/emacs/site-lisp'
lisppath='${locallisppath}:${lispdir}'
etcdir='${datadir}/${emacs_prefix}/${version}/etc'
# share lockdir with emacs and mule.
-lockdir='${sharedstatedir}/emacs/lock'
+lockdir='/var/run/emacs/lock'
archlibdir='${libexecdir}/${emacs_prefix}/${version}/${configuration}'
docdir='${datadir}/${emacs_prefix}/${version}/etc'

View file

@ -32,11 +32,11 @@
(setq-default quail-current-package (assoc "hangul" quail-package-alist))
)
;; Add System Info path '/usr/share/info' into Info-default-directory-list
(setq Info-default-directory-list
(append (list
"%%LOCALBASE%%/share/mule/19.34/info"
"%%X11BASE%%/info"
"/usr/share/info"
"/usr/X11R6/info"
) Info-default-directory-list))
;; END mule-family

View file

@ -0,0 +1,692 @@
/* Code to do an unexec for FreeBSD for a temacs linked -Bdynamic.
Derived from unexnetbsd.c, which was derived from unexsunos4.c
Copyright (C) 1992, 1993 Free Software Foundation, Inc.
This file is part of XEmacs.
XEmacs 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, or (at your option) any
later version.
XEmacs 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 XEmacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Synched up with: Not in FSF? */
/*
Created 29-Oct-92 by Harlan Sexton
Tweaked 06-Aug-93 by Dean Michaels to work with sun3.
Converted 01-Dec-93 by Paul Mackerras to work with NetBSD shared libraries.
Tweaked 26-Feb-94 by Shawn Carey for use with FreeBSD-1.1 shared libraries.
*/
/********************** Included .h Files **************************/
#include <config.h>
#include <stdarg.h>
#include <sys/param.h>
#include <sys/mman.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <string.h>
#include <stdio.h>
#include <a.out.h>
#include <unistd.h>
#include <ctype.h>
#include <stab.h>
#include <dirent.h>
#include <link.h>
/********************** Macros *************************************/
#define SYS_ERR strerror(errno)
#define MASK_UP(x,p_of_two) \
((((unsigned long) (x)) + ((p_of_two) - 1)) & (~((p_of_two) - 1)))
#define MASK_DOWN(x,p_of_two) (((unsigned long) (x)) & (~((p_of_two) - 1)))
/********************** Typedefs and Structs ***********************/
struct translation_struct
{
long txtaddr;
long txtoff;
long dataddr;
long datoff;
long bssaddr;
long endaddr;
};
/********************** Function Prototypes/Declarations ***********/
static void unexec_error (const char *m, int use_errno, ...);
static int unexec_open (char *filename, int flag, int mode);
static caddr_t unexec_mmap (int fd, size_t len, int prot, int flags);
static long unexec_seek (int fd, long position);
static void unexec_read (int fd, long position, char *buf, int bytes);
static void unexec_write (int fd, long position, char *buf, int bytes);
static void unexec_pad (int fd, int bytes);
static void unexec_fstat (int fd, struct stat *statptr);
static void unexec_fchmod (int fd, int mode);
static long unexec_addr_to_offset (long addr, struct translation_struct *ts);
static void copy_relocation_site (struct relocation_info *ri,
caddr_t from_base_addr,
caddr_t to_base_addr,
struct translation_struct *ts);
static void reset_symtab (struct nlist *start, struct nlist *end,
char *strtab, long edata_value, long end_value,
int shlib_image);
static void reset_ldso_symtab (struct nzlist *start, struct nzlist *end,
char *strtab, long edata_value, long end_value,
int shlib_image);
int run_time_remap (char *dummy);
/********************** Variables **********************************/
/* for reporting error messages from system calls */
extern int errno;
extern int _DYNAMIC;
extern char **environ;
static unsigned long sbrk_of_0_at_unexec;
/*******************************************************************/
static void
unexec_error (const char *fmt, int use_errno, ...)
{
const char *err_msg = SYS_ERR;
va_list args;
fprintf (stderr, "unexec - ");
va_start (args, use_errno);
vfprintf (stderr, fmt, args);
va_end (args);
if (use_errno)
fprintf (stderr, ": %s", err_msg);
fprintf (stderr, "\n");
exit (1);
return;
}
static int
unexec_open (char *filename, int flag, int mode)
{
int fd;
errno = 0;
fd = open (filename, flag, mode);
if (fd < 0)
unexec_error ("Failure opening file %s", 1, filename);
return fd;
}
static caddr_t
unexec_mmap (int fd, size_t len, int prot, int flags)
{
caddr_t return_val;
unexec_seek (fd, 0);
errno = 0;
return_val = mmap (0, len, prot, flags, fd, 0);
if (return_val == (caddr_t) -1)
unexec_error ("Failure mmap'ing file", 1);
return return_val;
}
static long
unexec_seek (int fd, long position)
{
long seek_value;
if (fd <= 0)
unexec_error ("No file open in which to seek", 0);
errno = 0;
if (position < 0)
seek_value = (long) lseek (fd, 0, L_INCR);
else
seek_value = (long) lseek (fd, position, L_SET);
if (seek_value < 0)
unexec_error ("Failed to do a seek to 0x%x in %s", 1,
position, "unexec() output file");
return seek_value;
}
static void
unexec_read (int fd, long position, char *buf, int bytes)
{
int n_read;
int remains = bytes;
position = unexec_seek (fd, position);
if (bytes < 0)
unexec_error ("Attempted read of %d bytes", 0, bytes);
errno = 0;
while (remains > 0)
{
n_read = read (fd, buf, remains);
if (n_read <= 0)
unexec_error ("Read failed for 0x%x bytes at offset 0x%x in %s",
1, bytes, position, "unexec() output file");
buf += n_read;
remains -= n_read;
}
return;
}
static void
unexec_write (int fd, long position, char *buf, int bytes)
{
int n_written;
int remains = bytes;
position = unexec_seek (fd, position);
if (bytes < 0)
unexec_error ("Attempted write of %d bytes in %s",
0, bytes, "unexec() output file");
errno = 0;
while (remains > 0)
{
n_written = write (fd, buf, remains);
if (n_written <= 0)
unexec_error ("Write failed for 0x%x bytes at offset 0x%x in %s",
1, bytes, position, "unexec() output file");
buf += n_written;
remains -= n_written;
}
return;
}
static void
unexec_pad (int fd, int bytes)
{
if (bytes > 0)
{
char buf[1024];
int remaining = bytes;
memset (buf, 0, sizeof (buf));
while (remaining > 0)
{
int this_write = (remaining > sizeof(buf))?sizeof(buf):remaining;
unexec_write (fd, -1, buf, this_write);
remaining -= this_write;
}
}
}
static void
unexec_fstat (int fd, struct stat *statptr)
{
errno = 0;
if (-1 == fstat (fd, statptr))
unexec_error ("fstat() failed for descriptor %d", 1, fd);
return;
}
static void
unexec_fchmod (int fd, int mode)
{
errno = 0;
if (-1 == fchmod (fd, mode))
unexec_error ("fchmod() failed for descriptor %d", 1, fd);
return;
}
static long
unexec_addr_to_offset (long addr, struct translation_struct *ts)
{
if ((addr < ts->txtaddr) || (addr >= ts->bssaddr))
return -1;
else if (addr >= ts->dataddr)
return ((long) ((addr - ts->dataddr) + ts->datoff));
else
return ((long) ((addr - ts->txtaddr) + ts->txtoff));
}
/*
* "LD.SO" DATA AND SYMBOL TABLE OPERATIONS
*/
static void
copy_relocation_site (struct relocation_info *ri,
caddr_t from_base_addr,
caddr_t to_base_addr,
struct translation_struct *ts)
{
long offset;
caddr_t from, to;
/* We can get relocation sites in the bss region, for objects whose
contents are copied from a shared library. We don't need or want
to restore these at present. */
#ifndef sparc
if (ri->r_copy)
return;
#else
/* Struct relocation_info_sparc doesn't have member r_copy.
Instead, we use the address to check if this is run-time-copied. */
if (ri->r_address >= ts->bssaddr && ri->r_address < ts->endaddr)
return;
#endif
offset = unexec_addr_to_offset (ri->r_address, ts);
if (offset == -1)
unexec_error ("bad relocation address 0x%x (0x%x)", 0, ri->r_address,
((long *)ri)[1]);
from = from_base_addr + offset;
to = to_base_addr + offset;
/* This stuff should be in a md_ file somewhere... */
#ifndef sparc
switch (ri->r_length)
{
case 0:
*((char *) to) = *((char *) from);
break;
case 1:
*((short *) to) = *((short *) from);
break;
case 2:
*((long *) to) = *((long *) from);
break;
default:
unexec_error ("unknown reloc length %d seen during unexec()",
0, ri->r_length);
break;
}
#else /* sparc */
switch (ri->r_type)
{
case RELOC_8:
case RELOC_DISP8:
*((char *) to) = *((char *) from);
break;
case RELOC_16:
case RELOC_DISP16:
*((short *) to) = *((short *) from);
break;
case RELOC_LO10:
case RELOC_13:
case RELOC_22:
case RELOC_HI22:
case RELOC_WDISP22:
case RELOC_WDISP30:
case RELOC_32:
case RELOC_DISP32:
case RELOC_GLOB_DAT:
*((long *) to) = *((long *) from);
break;
case RELOC_JMP_SLOT:
{
long *target = (long *) to;
long *source = (long *) from;
*target = *source;
target++;
source++;
*target = *source;
target++;
source++;
*target = *source;
}
break;
default:
unexec_error ("unknown reloc type %d seen during unexec()",
0, ri->r_type);
break;
}
#endif /* sparc */
}
static void
reset_symtab (struct nlist *start, struct nlist *end, char *strtab,
long edata_value, long end_value, int shlib_image)
{
struct nlist *tmp = start;
int found_edata = 0;
int found_end = 0;
while (tmp < end)
{
int type = tmp->n_type;
if ((type == (N_UNDF | N_EXT)) &&
(tmp->n_value != 0))
unexec_error ("unexec'ing image has COMMON symbols in it -- we quit!",
0);
if (!(type & N_STAB))
{
if (!found_edata &&
(type == (N_EXT | N_DATA)) &&
tmp->n_un.n_strx &&
!strcmp ("_edata", strtab + tmp->n_un.n_strx))
{
tmp->n_value = edata_value;
found_edata = 1;
}
if ((type & N_TYPE) == N_BSS)
{
if (!found_end &&
(type == (N_EXT | N_BSS)) &&
tmp->n_un.n_strx &&
!strcmp ("_end", strtab + tmp->n_un.n_strx))
{
tmp->n_value = end_value;
found_end = 1;
}
else if (type & N_EXT)
tmp->n_type = N_DATA | N_EXT;
else
tmp->n_type = N_DATA;
}
/* the way things are being handled here, having sbrk() in the
image is fatal for an image linked with shared lib's (although
the code could be modified to support it), but this should
never happen anyway */
if (shlib_image &&
(type == (N_EXT | N_TEXT)) &&
tmp->n_un.n_strx &&
!strcmp ("_sbrk", strtab + tmp->n_un.n_strx))
unexec_error ("unexec'd shlib image has sbrk() in it -- we quit!",
0);
}
tmp++;
}
}
static void
reset_ldso_symtab (struct nzlist *start, struct nzlist *end, char *strtab,
long edata_value, long end_value, int shlib_image)
{
struct nzlist *tmp = start;
int found_edata = 0;
int found_end = 0;
while (tmp < end) {
int type = tmp->nz_type;
/*
* the following code breaks under FreeBSD-1.1-BETA, but everything
* seems to work perfectly if it's commented out. This did not break
* anything until the changes to ld.so were made.
*/
/*
if ((type == (N_UNDF | N_EXT)) && (tmp->nz_value != 0))
unexec_error("unexec'ing image has COMMON symbols in rel -- we quit!",0);
*/
if (!(type & N_STAB)) {
if (!found_edata &&
(type == (N_EXT | N_DATA)) &&
!strcmp ("_edata", strtab + tmp->nz_strx)) {
tmp->nz_value = edata_value;
found_edata = 1;
}
if ((type & N_TYPE) == N_BSS) {
if (!found_end &&
(type == (N_EXT | N_BSS)) &&
!strcmp ("_end", strtab + tmp->nz_strx)) {
tmp->nz_value = end_value;
found_end = 1;
} else if (type & N_EXT)
tmp->nz_type = N_DATA | N_EXT;
else
tmp->nz_type = N_DATA;
}
/* the way things are being handled here, having sbrk() in the
image is fatal for an image linked with shared lib's (although
the code could be modified to support it), but this should
never happen anyway */
if (shlib_image &&
(type == (N_EXT | N_TEXT)) &&
!strcmp ("_sbrk", strtab + tmp->nz_strx))
unexec_error("unexec'd shlib image has sbrk() ref -- we quit!", 0);
}
tmp++;
}
}
extern int getpagesize (void);
/*
* EXPORTED FUNCTIONS
*/
/* this has to be a global variable to prevent the optimizers from
* assuming that it can not be 0.
*/
static void *dynamic_addr = (void *) &_DYNAMIC;
int
unexec (char *new_name, char *old_name,
unsigned int emacs_edata, unsigned int dummy1, unsigned int dummy2)
{
/* ld.so data */
struct _dynamic *ld = 0;
struct section_dispatch_table *ld2 = 0;
/* old and new state */
int old_fd;
int new_fd;
caddr_t old_base_addr;
caddr_t new_base_addr;
struct exec old_hdr;
struct exec new_hdr;
struct stat old_buf;
struct stat new_buf;
/* some process specific "constants" */
unsigned long n_pagsiz, new_edata;
long page_size = getpagesize ();
caddr_t plt_end;
caddr_t current_break = (caddr_t) sbrk (0);
if (!page_size)
unexec_error ("unexec() failed because we can't get the size of a page!",
0);
/* see if this is a -Bdynamic image -- if so, find ld.so structures */
if (dynamic_addr)
{
ld = (struct _dynamic *) dynamic_addr;
ld2 = ld->d_un.d_sdt;
if (ld->d_version < LD_VERSION_BSD)
unexec_error ("%s linked with obsolete version of ld -- we quit!",
0, old_name);
}
/* open the old and new files, figuring out how big the old one is
so that we can map it in */
old_fd = unexec_open (old_name, O_RDONLY, 0);
new_fd = unexec_open (new_name, O_RDWR | O_CREAT | O_TRUNC, 0666);
/* setup the header and the statbuf for old_fd */
unexec_read (old_fd, 0, (char *) &old_hdr, sizeof (old_hdr));
unexec_fstat (old_fd, &old_buf);
/* set up some important constants */
n_pagsiz = __LDPGSZ;
if (dynamic_addr)
plt_end = (caddr_t) MASK_UP (ld2->sdt_plt + ld2->sdt_plt_sz, sizeof (double));
else
plt_end = (caddr_t) N_DATADDR (old_hdr);
#if 0
/* never write protect the variable "environ", defined in /lib/crt0.o, and
set in process.c and callproc.c */
mprotect_bottom_addr = ((unsigned long) &environ) + sizeof (char **);
/* never protect ABOVE the end of data emacs_edata specified */
mprotect_top_addr = MIN (emacs_edata, N_DATADDR (old_hdr) + old_hdr.a_data);
#endif
/* Set up the image of the old file */
old_base_addr = unexec_mmap (old_fd, old_buf.st_size, PROT_READ,
MAP_FILE | MAP_PRIVATE);
close (old_fd);
/* set up the new exec */
new_hdr = old_hdr;
new_edata = (unsigned long) MASK_UP (current_break, n_pagsiz);
new_hdr.a_data = new_edata - ((unsigned long) N_DATADDR (old_hdr));
new_hdr.a_bss = 0;
/* set up this variable, in case we want to reset "the break"
when restarting */
sbrk_of_0_at_unexec = ((unsigned long) MASK_UP (current_break, n_pagsiz));
/* Write out the first approximation to the new file. The sizes of
each section will be correct, but there will be a number of
corrections that will need to be made. */
{
long old_datoff = N_DATOFF (old_hdr);
long old_dataddr = N_DATADDR (old_hdr);
long new_treloff = N_RELOFF (new_hdr);
long old_treloff = N_RELOFF (old_hdr);
long ld_so_size = ((unsigned long) plt_end) - old_dataddr;
long real_data_size = current_break - plt_end;
long pad_size =
MASK_UP (current_break, n_pagsiz) - ((unsigned long) current_break);
/* First, write the text segment with new header -- copy everything until
the start of the data segment from the old file, and then go back and
write the new header. */
unexec_write (new_fd, 0, old_base_addr, old_datoff + ld_so_size);
unexec_write (new_fd, 0, (char *) &new_hdr, sizeof (new_hdr));
/* Copy the rest of the data segment from the running image. */
unexec_write (new_fd, old_datoff + ld_so_size,
plt_end, real_data_size);
/* pad out the data segment */
unexec_pad (new_fd, pad_size);
/* Finally, copy the symbol table information from the old file. */
unexec_write (new_fd, new_treloff,
old_base_addr + old_treloff,
old_buf.st_size - old_treloff);
}
/* Next, map in the output file so that we can jump around fixing it
up. We retain the old file so that we can refer to it. */
unexec_fstat (new_fd, &new_buf);
new_base_addr = unexec_mmap (new_fd,
MASK_UP (new_buf.st_size, page_size),
PROT_READ | PROT_WRITE,
MAP_FILE | MAP_SHARED);
/* We need to do 2 things. First, make sure that _edata and _end (and
hence, curbrk) are set to the correct values. At the same time, for
neatness and to help with debugging, mark all the types of all ld.so
and nm BSS symbols in the new file to be DATA, and make sure that
there are no COMMON symbols in the output file, as any references to
these can lose really big. Second, reset all of the ld.so "relocation
sites" in the new file to have the values that appear in the old file
-- the failure to do this was the biggest loser in the old version of
this code. */
/* STEP 1 */
/* Reset the regular symbol table first. */
reset_symtab ((struct nlist *) (new_base_addr + N_SYMOFF(new_hdr)),
(struct nlist *) (new_base_addr + N_SYMOFF(new_hdr) +
new_hdr.a_syms),
(char *) (new_base_addr + N_STROFF(new_hdr)),
new_edata, new_edata,
!!dynamic_addr);
/* Now reset the ld.so symbol table. */
if (dynamic_addr)
{
struct translation_struct ts;
struct relocation_info *tmp, *end;
caddr_t syms, strings;
/* set up the structure that we use to translate addresses in the
old file into file offsets */
ts.txtaddr = N_TXTADDR (old_hdr);
ts.txtoff = N_TXTOFF (old_hdr);
ts.dataddr = N_DATADDR (old_hdr);
ts.datoff = N_DATOFF (old_hdr);
ts.bssaddr = N_DATADDR (old_hdr) + old_hdr.a_data;
ts.endaddr = ts.bssaddr + old_hdr.a_bss;
syms = new_base_addr + unexec_addr_to_offset(ld2->sdt_nzlist, &ts);
strings = new_base_addr + unexec_addr_to_offset(ld2->sdt_strings, &ts);
reset_ldso_symtab ((struct nzlist *) syms, (struct nzlist *) strings,
(char *) strings,
new_edata, new_edata,
!!dynamic_addr);
/* STEP 2 */
tmp = (struct relocation_info *)
(old_base_addr + unexec_addr_to_offset(ld2->sdt_rel, &ts));
end = (struct relocation_info *)
(old_base_addr + unexec_addr_to_offset(ld2->sdt_hash, &ts));
while (tmp < end)
{
copy_relocation_site (tmp, old_base_addr, new_base_addr, &ts);
tmp++;
}
}
/* get rid of the mmap-ed file space and make the output file
executable -- then quit */
munmap (new_base_addr, MASK_UP (new_buf.st_size, page_size));
munmap (old_base_addr, MASK_UP (old_buf.st_size, page_size));
unexec_fchmod (new_fd, 0755);
close (new_fd);
return 0;
}
int
run_time_remap (char *dummy)
{
unsigned long current_sbrk = (unsigned long) sbrk (0);
if (sbrk_of_0_at_unexec > current_sbrk)
{
errno = 0;
if (brk ((caddr_t) sbrk_of_0_at_unexec))
fprintf (stderr, "failed to change brk addr to 0x%lx: %s\n",
sbrk_of_0_at_unexec, SYS_ERR);
}
return 0;
}

View file

@ -1,15 +1,15 @@
This is emacs lisp files, info pages, and so on (except executables)
for mule-2.3, a multilingual editor based on emacs-19.28.
for mule-2.3, a multilingual editor based on emacs-19.34.
You must install one of packages, mule-2.3, ja-mule-*-2.3 (
ja-mule-canna-2.3, ja-mule-canna+sj3-2.3, etc.), zh-mule-wnn4-2.3 and
ko-mule-wnn4-2.3, each of which contains only the executables for
mule-2.3.
This package and the above package of the executables *will* clobber any
existing emacs installation. In particular, the executables and man
pages of etags/ctags are installed, and the info pages that come with
the original emacs get installed too.
This package and the above package of the executables *will* clobber
any existing emacs installation. In particular, the executables and
man pages of etags/ctags are installed, and the info pages that come
with the original emacs get installed too.
Although this shouldn't cause any problems to run both mule and emacs,
it may cause some confusion when one of them is pkg_delete'd. If
@ -20,10 +20,5 @@ subdirectory of the ports package. Copy it into your /usr/local/info
to read mule info pages, but also make sure you also add everything
that may have been added to that file!
[Notice]
Mr. Yoshio KATAYAMA <kate@pfu.co.jp> fixed many bugs for mule-2.3.
Patches for those are in 'mule-2.3.patch.tar.gz' and are applied in
this port.
- S. Taoka
taoka@infonets.hiroshima-u.ac.jp

File diff suppressed because it is too large Load diff