diff options
author | shige <shige@FreeBSD.org> | 2001-06-27 14:33:44 +0000 |
---|---|---|
committer | shige <shige@FreeBSD.org> | 2001-06-27 14:33:44 +0000 |
commit | c4eab6363dc7da1c28308cd80d05739545886fb1 (patch) | |
tree | 10950edddb0428ac18dc84eccb724cd1b379d7dc /japanese | |
parent | 3b3c9de735d0ea84ed73c67f3206aa6cfb1b8bb9 (diff) | |
download | FreeBSD-ports-c4eab6363dc7da1c28308cd80d05739545886fb1.zip FreeBSD-ports-c4eab6363dc7da1c28308cd80d05739545886fb1.tar.gz |
New port: emcws (emacs with various input methods).
PR: ports/22107
Submitted by: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp>
Diffstat (limited to 'japanese')
115 files changed, 4846 insertions, 0 deletions
diff --git a/japanese/Makefile b/japanese/Makefile index 8d41053..f0322b4 100644 --- a/japanese/Makefile +++ b/japanese/Makefile @@ -52,6 +52,7 @@ SUBDIR += emacs-manual SUBDIR += emacs20-dl-canna SUBDIR += emacs20-dl-wnn6 + SUBDIR += emacs20-emcws SUBDIR += epic4 SUBDIR += epwutil SUBDIR += escpf diff --git a/japanese/emacs-emcws/Makefile b/japanese/emacs-emcws/Makefile new file mode 100644 index 0000000..370e99a --- /dev/null +++ b/japanese/emacs-emcws/Makefile @@ -0,0 +1,149 @@ +# New ports collection makefile for: GNU emacs +# Version required: 20.7 +# Date created: 08 Oct. 2000 +# Whom: NAKAJI Hiroyuki <nakaji@jp.freebsd.org> +# +# $FreeBSD$ +# + +PORTNAME= emcws +PORTVERSION= 20.7 +CATEGORIES= japanese editors ipv6 +MASTER_SITES= ${MASTER_SITE_GNU} +MASTER_SITE_SUBDIR= emacs +DISTNAME= emacs-${PORTVERSION} + +PATCH_SITES= ftp://ftp.ki.nu/pub/emcws/ \ + ftp://ftp.jpl.org/pub/misc/ +PATCHFILES= emcws-${EMACS_VER}-20010622.gz +PATCH_DIST_STRIP= -p1 + +MAINTAINER= nakaji@jp.freebsd.org + +Y2K= http://www.gnu.org/software/year2000.html + +RUN_DEPENDS= emacs-${EMACS_VER}:${PORTSDIR}/editors/emacs20 + +WRKSRC= ${WRKDIR}/emacs-${EMACS_VER} + +USE_AUTOCONF= YES +USE_GMAKE= YES +EMACS_VER= 20.7 + +# Change these as you like. +USE_WNN6?= YES +USE_FREEWNN?= NO +USE_CANNA?= YES +USE_SJ3?= NO + +CONFIGURE_TARGET= ${MACHINE_ARCH}--freebsd +.if !defined(NO_X11) +CONFIGURE_ARGS= --with-x-toolkit --with-pop +USE_XLIB= YES +.else +CONFIGURE_ARGS= --with-x=no --with-pop +.endif +.if defined(USE_WNN6) +.if (${USE_WNN6} == "yes" || ${USE_WNN6} == "YES") +CONFIGURE_ARGS+=--with-wnn6 --with-wnn-includes=${LOCALBASE}/include/wnn6/wnn \ + --with-wnn-libraries=${LOCALBASE}/lib/libwnn6.so +LIB_DEPENDS+= wnn6.1:${PORTSDIR}/japanese/Wnn6-lib +.endif +.endif +.if defined(USE_FREEWNN) +.if (${USE_FREEWNN} == "yes" || ${USE_FREEWNN} == "YES") +CONFIGURE_ARGS+=--with-wnn4 --with-wnn-includes=${LOCALBASE}/include/wnn \ + --with-wnn-libraries=${LOCALBASE}/lib/libwnn.so +LIB_DEPENDS+= wnn.0:${PORTSDIR}/japanese/FreeWnn-lib +.endif +.endif +.if defined(USE_CANNA) +.if (${USE_CANNA} == "yes" || ${USE_CANNA} == "YES") +CONFIGURE_ARGS+= --with-canna \ + --with-canna-includes=${LOCALBASE}/include \ + --with-canna-libraries=${LOCALBASE}/lib +LIB_DEPENDS+= canna.1:${PORTSDIR}/japanese/Canna +.endif +.endif +.if defined(USE_SJ3) +.if (${USE_SJ3} == "yes" || ${USE_SJ3} == "YES") +CONFIGURE_ARGS+= --with-sj3 +BUILD_DEPENDS+= sj3serv:${PORTSDIR}/japanese/sj3 +.endif +.endif + +DOC_FILE= DOC-EMCWS-${EMACS_VER}.1 +EMCWS_ELCS= busyu.el \ + can-n-egg.el \ + canna.el \ + canna.elc \ + egg-jsymbol.el \ + egg-keymap.el \ + egg.el \ + egg.elc \ + eggrc-sj3 \ + eggrc-v41 \ + eggrc-wnn \ + isearch-ext.el \ + isearch-ext.elc \ + its/han-kata.el \ + its/hankaku.el \ + its/hira.el \ + its/kanainput.el \ + its/kata.el \ + its/zenkaku.el \ + mule-inst.el \ + sj3-client.el \ + sj3-egg.el \ + wnn-client.el \ + wnn-egg.el \ + wnn-egg.elc + +PLIST_SUB= EMACS_VER=${EMACS_VER} EMACS_ARCH=${CONFIGURE_TARGET} \ + DOC_FILE=${DOC_FILE} + +SCRIPTS_ENV= SED=${SED} MV=${MV} \ + DOC_FILE=${DOC_FILE} + +.if defined(WITH_XPG4) +.if ${OSVERSION} >= 220000 && ${OSVERSION} < 400020 +CONFIGURE_ARGS+= --with-xpg4 +.endif +.if ${OSVERSION} >= 500000 && ${OSVERSION} < 500005 +CONFIGURE_ARGS+= --with-xpg4 +.endif +.endif + +pre-fetch: + @${CAT} ${FILESDIR}/emcws-message + +pre-build: + find ${WRKSRC} \( -name \*.orig -o -name \*~ \) -exec ${RM} -f \{} \; + ${RM} -rf ${WRKSRC}/info/* + ${LN} -sf DOC ${WRKSRC}/etc/${DOC_FILE} + +do-install: + @${INSTALL_PROGRAM} ${WRKSRC}/src/emacs ${PREFIX}/bin/emcws-${EMACS_VER} + @${RM} -f ${PREFIX}/bin/emcws + @${LN} ${PREFIX}/bin/emcws-${EMACS_VER} ${PREFIX}/bin/emcws + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc + @${INSTALL_DATA} ${WRKSRC}/etc/DOC ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc/${DOC_FILE} + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/its || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/its + @for i in ${EMCWS_ELCS}; do \ + ${CP} -p ${WRKSRC}/lisp/$$i \ + ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/$$i; \ + done + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp + @if [ ! -f ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp/subdirs.el ]; then \ + (${ECHO} "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \ + ${ECHO} " (normal-top-level-add-subdirs-to-load-path))") \ + > ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp/subdirs.el ; \ + fi + +post-install: + @${CAT} ${PKGMESSAGE} + +.include <bsd.port.mk> diff --git a/japanese/emacs-emcws/distinfo b/japanese/emacs-emcws/distinfo new file mode 100644 index 0000000..8f70ec2 --- /dev/null +++ b/japanese/emacs-emcws/distinfo @@ -0,0 +1,2 @@ +MD5 (emacs-20.7.tar.gz) = c732cf5e668d4ac67d9418ecb103ecf5 +MD5 (emcws-20.7-20010622.gz) = e46d6785ecb03974680d67515c750740 diff --git a/japanese/emacs-emcws/files/emcws-message b/japanese/emacs-emcws/files/emcws-message new file mode 100644 index 0000000..22f3409 --- /dev/null +++ b/japanese/emacs-emcws/files/emcws-message @@ -0,0 +1,16 @@ +**************************************************************************** + NOTE: Warning message about Emcws + + You can define which input method you use with following variables. + + USE_WNN6 to use Wnn6 + USE_FREEWNN to use FreeWnn + USE_CANNA to use Canna + USE_SJ3 to use sj3 + + In default, USE_WNN6 and USE_CANNA are set. + + If you want to use Emcws with Canna and FreeWnn, run + + make install USE_FREEWNN=yes USE_CANNA=yes +**************************************************************************** diff --git a/japanese/emacs-emcws/files/patch-aa b/japanese/emacs-emcws/files/patch-aa new file mode 100644 index 0000000..eb174b9 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-aa @@ -0,0 +1,11 @@ +--- Makefile.in.orig Sat Apr 10 04:16:24 1999 ++++ Makefile.in Sat Jul 24 01:03:43 1999 +@@ -188,7 +188,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 leim ++SUBDIR = lib-src src leim man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile diff --git a/japanese/emacs-emcws/files/patch-ac b/japanese/emacs-emcws/files/patch-ac new file mode 100644 index 0000000..7b2aa2c --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ac @@ -0,0 +1,14 @@ +--- man/widget.texi.orig Mon Oct 13 14:20:26 1997 ++++ man/widget.texi Mon Oct 13 14:21:25 1997 +@@ -3,6 +3,11 @@ + @c %**start of header + @setfilename ../info/widget + @settitle The Emacs Widget Library ++@dircategory The Emacs editor and associated tools ++@direntry ++* Widget: (widget). The Emacs Widget Library ++@end direntry ++ + @iftex + @afourpaper + @headings double diff --git a/japanese/emacs-emcws/files/patch-ad b/japanese/emacs-emcws/files/patch-ad new file mode 100644 index 0000000..c702def --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ad @@ -0,0 +1,14 @@ +--- man/dired-x.texi.orig Sun May 17 03:52:28 1998 ++++ man/dired-x.texi Sat Jul 24 01:19:47 1999 +@@ -19,9 +19,9 @@ + @c dired-x.el REVISION NUMBER + @settitle Dired Extra Version 2 User's Manual + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Dired-X: (dired-x). Dired Extra Features. ++* Dired-X: (dired-x). Dired Extra Features. + @end direntry + + @iftex diff --git a/japanese/emacs-emcws/files/patch-af b/japanese/emacs-emcws/files/patch-af new file mode 100644 index 0000000..f2013a3 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-af @@ -0,0 +1,695 @@ +--- src/unexfreebsd.c.orig Wed Dec 3 17:28:14 1997 ++++ src/unexfreebsd.c Wed Dec 3 17:34:02 1997 +@@ -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; ++} diff --git a/japanese/emacs-emcws/files/patch-ag b/japanese/emacs-emcws/files/patch-ag new file mode 100644 index 0000000..127f1b6 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ag @@ -0,0 +1,19 @@ +--- man/Makefile.in.orig Sat Dec 5 08:33:16 1998 ++++ man/Makefile.in Sat Jul 24 01:25:06 1999 +@@ -11,7 +11,7 @@ + + + # The makeinfo program is part of the Texinfo distribution. +-MAKEINFO = makeinfo ++MAKEINFO = makeinfo --no-split + INFO_TARGETS = ../info/emacs ../info/ccmode ../info/cl \ + ../info/dired-x ../info/ediff ../info/forms ../info/gnus \ + ../info/info ../info/message ../info/mh-e ../info/reftex \ +@@ -70,6 +70,7 @@ + ${srcdir}/glossary.texi \ + ${srcdir}/ack.texi + ++all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) diff --git a/japanese/emacs-emcws/files/patch-ah b/japanese/emacs-emcws/files/patch-ah new file mode 100644 index 0000000..5a24e77 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ah @@ -0,0 +1,29 @@ +--- lib-src/Makefile.in.orig Sat Aug 1 20:22:55 1998 ++++ lib-src/Makefile.in Sat Feb 13 17:30:37 1999 +@@ -218,7 +218,7 @@ + LIBMAIL=-lmail + #endif + +-LOADLIBES=LIBS_SYSTEM LIBS_MACHINE LIB_STANDARD_LIBSRC ++LOADLIBES=LIBS_SYSTEM LIBS_MACHINE LIB_STANDARD_LIBSRC -lcompat + + /* We need to #define emacs to get the right versions of some files. + Some other files - those shared with other GNU utilities - need +@@ -278,7 +278,7 @@ + if [ `(cd ${archlibdir} && /bin/pwd)` \ + != `(cd ${srcdir} && /bin/pwd)` ]; then \ + for file in ${SCRIPTS}; do \ +- $(INSTALL_PROGRAM) ${srcdir}/$$file ${archlibdir}/$$file; \ ++ $(INSTALL_SCRIPT) ${srcdir}/$$file ${archlibdir}/$$file; \ + done ; \ + fi + +@@ -290,7 +290,7 @@ + chmod a+rx ${bindir}/$${file}; \ + done + for file in ${INSTALLABLE_SCRIPTS} ; do \ +- $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file} ; \ ++ $(INSTALL_SCRIPT) ${srcdir}/$${file} ${bindir}/$${file} ; \ + chmod a+rx ${bindir}/$${file}; \ + done + diff --git a/japanese/emacs-emcws/files/patch-ai b/japanese/emacs-emcws/files/patch-ai new file mode 100644 index 0000000..1ae2376 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ai @@ -0,0 +1,17 @@ +--- src/unexelf.c.orig Mon Aug 10 11:33:12 1998 ++++ src/unexelf.c Sun Jan 3 20:54:08 1999 +@@ -512,6 +512,14 @@ + # include <link.h> /* get ElfW etc */ + #endif + ++#ifdef __FreeBSD__ ++# ifdef __STDC__ ++# define ElfW(type) Elf_##type ++# else ++# define ElfW(type) Elf_/**/type ++# endif ++#endif ++ + #ifndef ElfW + # ifdef __STDC__ + # define ElfW(type) Elf32_##type diff --git a/japanese/emacs-emcws/files/patch-aj b/japanese/emacs-emcws/files/patch-aj new file mode 100644 index 0000000..b11a244 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-aj @@ -0,0 +1,31 @@ +--- src/m/alpha.h.orig Wed Oct 29 16:47:37 1997 ++++ src/m/alpha.h Sun Jan 3 20:05:49 1999 +@@ -239,7 +239,7 @@ + + #ifndef NOT_C_CODE + /* We need these because pointers are larger than the default ints. */ +-#if !defined(__NetBSD__) && !defined(__OpenBSD__) ++#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) + #include <alloca.h> + #else + #include <stdlib.h> +@@ -308,7 +308,8 @@ + termio and struct termios are mutually incompatible. */ + #define NO_TERMIO + +-#if defined (LINUX) || defined (__NetBSD__) || defined (__OpenBSD__) ++#if defined (LINUX) || \ ++ defined(__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) + # define TEXT_END ({ extern int _etext; &_etext; }) + # ifndef __ELF__ + # define COFF +@@ -316,7 +317,8 @@ + # endif /* notdef __ELF__ */ + #endif + +-#if (defined (__NetBSD__) || defined (__OpenBSD__)) && defined (__ELF__) ++#if (defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)) \ ++ && defined (__ELF__) + #define HAVE_TEXT_START + #endif + diff --git a/japanese/emacs-emcws/files/patch-al b/japanese/emacs-emcws/files/patch-al new file mode 100644 index 0000000..01116fb --- /dev/null +++ b/japanese/emacs-emcws/files/patch-al @@ -0,0 +1,17 @@ +--- man/cc-mode.texi.orig Sun May 17 03:55:23 1998 ++++ man/cc-mode.texi Sat Jul 24 01:03:42 1999 +@@ -8,10 +8,10 @@ + @settitle CC MODE Version 5 Documentation + @footnotestyle end + +-@dircategory Editors +-@direntry +-* CC mode: (ccmode). The GNU Emacs mode for editing C, C++, Objective-C +- and Java code. ++@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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/japanese/emacs-emcws/files/patch-am b/japanese/emacs-emcws/files/patch-am new file mode 100644 index 0000000..678e11f --- /dev/null +++ b/japanese/emacs-emcws/files/patch-am @@ -0,0 +1,14 @@ +--- man/cl.texi.orig Wed Apr 7 03:12:55 1999 ++++ man/cl.texi Sat Jul 24 01:03:42 1999 +@@ -2,9 +2,9 @@ + @setfilename ../info/cl + @settitle Common Lisp Extensions + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* CL: (cl). Partial Common Lisp support for Emacs Lisp. ++* CL: (cl). Partial Common Lisp support for Emacs Lisp. + @end direntry + + @iftex diff --git a/japanese/emacs-emcws/files/patch-an b/japanese/emacs-emcws/files/patch-an new file mode 100644 index 0000000..0335a0d --- /dev/null +++ b/japanese/emacs-emcws/files/patch-an @@ -0,0 +1,14 @@ +--- man/emacs.texi.orig Fri Jun 25 02:53:58 1999 ++++ man/emacs.texi Sat Jul 24 01:09:24 1999 +@@ -11,9 +11,9 @@ + updated for Emacs version 20.4 + @c Please REMEMBER to update edition number in *three* places in this file. + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Emacs: (emacs). The extensible self-documenting text editor. ++* Emacs: (emacs). The extensible self-documenting text editor. + @end direntry + + Published by the Free Software Foundation diff --git a/japanese/emacs-emcws/files/patch-ao b/japanese/emacs-emcws/files/patch-ao new file mode 100644 index 0000000..4a39b60 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ao @@ -0,0 +1,26 @@ +--- man/forms.texi.orig Mon Aug 24 18:43:18 1998 ++++ man/forms.texi Sat Jul 24 01:03:41 1999 +@@ -8,18 +8,17 @@ + @syncodeindex vr cp + @syncodeindex fn cp + @syncodeindex ky cp ++@dircategory The Emacs editor and associated tools ++@direntry ++* Forms: (forms). Emacs package for editing data bases ++ by filling in forms. ++@end direntry + @iftex + @finalout + @setchapternewpage odd + @end iftex + @c @smallbook + @comment %**end of header (This is for running Texinfo on a region.) +- +-@dircategory Editors +-@direntry +-* Forms: (forms). Emacs package for editing data bases +- by filling in forms. +-@end direntry + + @ifinfo + This file documents Forms mode, a form-editing major mode for GNU Emacs. diff --git a/japanese/emacs-emcws/files/patch-ap b/japanese/emacs-emcws/files/patch-ap new file mode 100644 index 0000000..6ccf025 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ap @@ -0,0 +1,13 @@ +--- man/gnus.texi.orig Wed Apr 7 07:46:41 1999 ++++ man/gnus.texi Sat Jul 24 01:09:33 1999 +@@ -5,8 +5,9 @@ + @synindex fn cp + @synindex vr cp + @synindex pg cp ++@dircategory The Emacs editor and associated tools + @direntry +-* Gnus: (gnus). The newsreader Gnus. ++* Gnus: (gnus). The newsreader Gnus. + @end direntry + @iftex + @finalout diff --git a/japanese/emacs-emcws/files/patch-aq b/japanese/emacs-emcws/files/patch-aq new file mode 100644 index 0000000..207dde1 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-aq @@ -0,0 +1,20 @@ +--- man/mh-e.texi.orig Sun May 17 03:51:15 1998 ++++ man/mh-e.texi Sat Jul 24 01:03:41 1999 +@@ -4,13 +4,12 @@ + @setfilename ../info/mh-e + @settitle mh-e + @c %**end of header +- +-@setchapternewpage odd +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* MH-E: (mh-e). Emacs interface to the MH mail system. ++* MH-E: (mh-e). Emacs interface to the MH mail system. + @end direntry ++ ++@setchapternewpage odd + + @c Version variables. + @set EDITION 1.2 diff --git a/japanese/emacs-emcws/files/patch-ar b/japanese/emacs-emcws/files/patch-ar new file mode 100644 index 0000000..c7c6cf9 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ar @@ -0,0 +1,24 @@ +--- man/sc.texi.orig Fri Jul 3 03:48:27 1998 ++++ man/sc.texi Sat Jul 24 01:03:42 1999 +@@ -3,15 +3,15 @@ + @comment %**start of header (This is for running Texinfo on a region.) + @setfilename ../info/sc + @settitle Supercite Version 3.1 User's Manual ++@dircategory The Emacs editor and associated tools ++@direntry ++* SC: (sc). Supercite lets you cite parts of messages ++ you're replying to, in flexible ways. ++@end direntry ++ + @iftex + @finalout + @end iftex +- +-@dircategory Editors +-@direntry +-* SC: (sc). Supercite lets you cite parts of messages you're +- replying to, in flexible ways. +-@end direntry + + @c @setchapternewpage odd % For book style double sided manual. + @comment %**end of header (This is for running Texinfo on a region.) diff --git a/japanese/emacs-emcws/files/patch-as b/japanese/emacs-emcws/files/patch-as new file mode 100644 index 0000000..621927b --- /dev/null +++ b/japanese/emacs-emcws/files/patch-as @@ -0,0 +1,15 @@ +--- man/vip.texi.orig Sun May 17 03:48:50 1998 ++++ man/vip.texi Sat Jul 24 01:03:40 1999 +@@ -2,10 +2,9 @@ + + @setfilename ../info/vip + @settitle VIP +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* VIP: (vip). An older VI-emulation for Emacs. ++* VIP: (vip). A VI-emulation for Emacs. + @end direntry + + @iftex diff --git a/japanese/emacs-emcws/files/patch-at b/japanese/emacs-emcws/files/patch-at new file mode 100644 index 0000000..e85d00b --- /dev/null +++ b/japanese/emacs-emcws/files/patch-at @@ -0,0 +1,17 @@ +--- man/viper.texi.orig Mon Nov 9 02:13:07 1998 ++++ man/viper.texi Sat Jul 24 01:03:41 1999 +@@ -5,12 +5,9 @@ + @comment @setfilename viper + @comment @setfilename viper.info + @setfilename ../info/viper +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* VIPER: (viper). The newest Emacs VI-emulation mode. +- (also, A VI Plan for Emacs Rescue +- or the VI PERil.) ++* VIPER: (viper). The new VI-emulation mode in Emacs-19.29. + @end direntry + + @iftex diff --git a/japanese/emacs-emcws/files/patch-au b/japanese/emacs-emcws/files/patch-au new file mode 100644 index 0000000..2e34ee0 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-au @@ -0,0 +1,14 @@ +--- man/ediff.texi.orig Tue Jun 9 12:29:49 1998 ++++ man/ediff.texi Sat Jul 24 01:19:48 1999 +@@ -14,9 +14,9 @@ + @synindex fn cp + @synindex pg cp + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Ediff: (ediff). A visual interface for comparing and merging programs. ++* Ediff: (ediff). A visual interface for comparing and merging programs. + @end direntry + + @iftex diff --git a/japanese/emacs-emcws/files/patch-av b/japanese/emacs-emcws/files/patch-av new file mode 100644 index 0000000..f188e69 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-av @@ -0,0 +1,21 @@ +--- man/message.texi.orig Wed Apr 7 07:48:28 1999 ++++ man/message.texi Sat Jul 24 01:23:30 1999 +@@ -5,15 +5,15 @@ + @synindex fn cp + @synindex vr cp + @synindex pg cp ++@ifinfo ++@dircategory The Emacs editor and associated tools + @direntry +-* Message: (message). Mail and news composition mode that goes with Gnus. ++* Message: (message). Message, the Emacs message composition mode. + @end direntry + @iftex + @finalout + @end iftex + @setchapternewpage odd +- +-@ifinfo + + This file documents Message, the Emacs message composition mode. + diff --git a/japanese/emacs-emcws/files/patch-aw b/japanese/emacs-emcws/files/patch-aw new file mode 100644 index 0000000..95c7138 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-aw @@ -0,0 +1,16 @@ +--- man/reftex.texi.orig Sat Jul 24 02:31:43 1999 ++++ man/reftex.texi Sat Jul 24 02:33:26 1999 +@@ -2,10 +2,10 @@ + @c %**start of header + @setfilename ../info/reftex + @settitle RefTeX User Manual +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* reftex: (reftex). Support for LaTeX labels, references, and citations +- with Emacs. ++* reftex: (reftex). Support for LaTeX labels, references, ++ and citations with Emacs. + @end direntry + @synindex ky cp + @syncodeindex vr cp diff --git a/japanese/emacs-emcws/files/patch-bb b/japanese/emacs-emcws/files/patch-bb new file mode 100644 index 0000000..896c8fe --- /dev/null +++ b/japanese/emacs-emcws/files/patch-bb @@ -0,0 +1,13 @@ +--- man/info.texi.orig Fri Apr 17 10:12:19 1998 ++++ man/info.texi Wed Feb 10 00:18:56 1999 +@@ -2,6 +2,10 @@ + @comment %**start of header + @setfilename ../info/info + @settitle Info 1.0 ++@dircategory The Emacs editor and associated tools ++@direntry ++* Info: (info). GNU on-line hyper document system. ++@end direntry + @comment %**end of header + + @iftex diff --git a/japanese/emacs-emcws/files/patch-ca b/japanese/emacs-emcws/files/patch-ca new file mode 100644 index 0000000..a9b1ff4 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ca @@ -0,0 +1,31 @@ +--- src/Makefile.in.orig Sat Mar 11 12:49:45 2000 ++++ src/Makefile.in Sat Mar 11 12:52:04 2000 +@@ -126,6 +126,10 @@ + #define LIBS_MACHINE + #endif + ++#ifndef LIBS_XPG ++#define LIBS_XPG ++#endif ++ + #ifndef LIB_MATH + # ifdef LISP_FLOAT_TYPE + # define LIB_MATH -lm +@@ -579,7 +583,7 @@ + #define LIBS_TERMCAP + termcapobj = termcap.o tparam.o + #else /* LIBS_TERMCAP */ +-termcapobj = tparam.o ++termcapobj = terminfo.o + #endif /* LIBS_TERMCAP */ + #endif /* ! defined (TERMINFO) */ + +@@ -864,7 +868,7 @@ + duplicated symbols. If the standard libraries were compiled + with GCC, we might need gnulib again after them. */ + LIBES = $(LOADLIBES) $(LDLIBS) $(LIBX) LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \ +- LIBS_MULE LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR) ++ LIBS_XPG LIBS_MULE LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR) + + /* Enable recompilation of certain other files depending on system type. */ + diff --git a/japanese/emacs-emcws/files/patch-cb b/japanese/emacs-emcws/files/patch-cb new file mode 100644 index 0000000..28e6f9f --- /dev/null +++ b/japanese/emacs-emcws/files/patch-cb @@ -0,0 +1,34 @@ +--- src/s/freebsd.h.orig Tue Apr 13 03:22:12 1999 ++++ src/s/freebsd.h Sat Jul 24 01:30:10 1999 +@@ -45,6 +45,13 @@ + #define LIBS_SYSTEM -lutil + #define LIBS_TERMCAP -ltermcap + ++/* Use XPG4 Library for FreeBSD */ ++#if __FreeBSD_version >= 220000 ++#ifdef USE_XPG ++#define LIBS_XPG -lxpg4 ++#endif ++#endif ++ + #define SYSV_SYSTEM_DIR + + /* freebsd has POSIX-style pgrp behavior. */ +@@ -54,9 +61,16 @@ + #ifdef __ELF__ + + #define LD_SWITCH_SYSTEM ++ ++#ifdef __alpha__ ++#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crtbegin.o ++#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o ++#else + #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 ++#endif ++ ++#define UNEXEC unexelf.o + #undef LIB_GCC + #define LIB_GCC + diff --git a/japanese/emacs-emcws/files/patch-cc b/japanese/emacs-emcws/files/patch-cc new file mode 100644 index 0000000..8202cf7 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-cc @@ -0,0 +1,36 @@ +--- configure.in.orig Sat Mar 11 12:55:54 2000 ++++ configure.in Sat Mar 11 12:58:33 2000 +@@ -42,6 +42,9 @@ + AC_ARG_WITH(hesiod, + [ --with-hesiod support Hesiod to get the POP server host], + [AC_DEFINE(HESIOD)]) ++AC_ARG_WITH(xpg4, ++[ --with-xpg4 support XPG4 library on FreeBSD system], ++[AC_DEFINE(USE_XPG)]) + dnl + AC_ARG_WITH(wnn, + [ --with-wnn obsolete, same as --with-wnn4]) +@@ -179,6 +182,15 @@ + machine='' opsys='' unported=no + case "${canonical}" in + ++ ## FreeBSD ports ++ *-*-freebsd* ) ++ opsys=freebsd ++ case "${canonical}" in ++ alpha*-*-freebsd*) machine=alpha ;; ++ i[3456]86-*-freebsd*) machine=intel386 ;; ++ esac ++ ;; ++ + ## NetBSD ports + *-*-netbsd* ) + opsys=netbsd +@@ -985,7 +997,6 @@ + ;; + *-sysv4.2uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;; + *-386bsd* ) opsys=386bsd ;; +- *-freebsd* ) opsys=freebsd ;; + *-nextstep* ) opsys=nextstep ;; + ## Otherwise, we'll fall through to the generic opsys code at the bottom. + esac diff --git a/japanese/emacs-emcws/files/patch-cd b/japanese/emacs-emcws/files/patch-cd new file mode 100644 index 0000000..9792250 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-cd @@ -0,0 +1,12 @@ +--- src/config.in.orig Sat Nov 21 09:00:30 1998 ++++ src/config.in Sat Nov 21 09:00:58 1998 +@@ -118,6 +118,9 @@ + /* Define to support using a Hesiod database to find the POP server. */ + #undef HESIOD + ++/* Define to support using a XPG4 library on FreeBSD system. */ ++#undef USE_XPG ++ + /* Some things figured out by the configure script, grouped as they are in + configure.in. */ + #ifndef _ALL_SOURCE /* suppress warning if this is pre-defined */ diff --git a/japanese/emacs-emcws/files/patch-cf b/japanese/emacs-emcws/files/patch-cf new file mode 100644 index 0000000..d427361 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-cf @@ -0,0 +1,10 @@ +--- src/config.in.orig Sun Jul 16 13:11:42 2000 ++++ src/config.in Sun Jul 16 13:12:48 2000 +@@ -237,6 +237,7 @@ + #undef HAVE_GETCWD + #undef HAVE_SHUTDOWN + #undef HAVE_STRFTIME ++#undef HAVE_GETADDRINFO + #undef HAVE_GRANTPT + #undef HAVE_GETPT + diff --git a/japanese/emacs-emcws/files/patch-cg b/japanese/emacs-emcws/files/patch-cg new file mode 100644 index 0000000..1973aff --- /dev/null +++ b/japanese/emacs-emcws/files/patch-cg @@ -0,0 +1,149 @@ +--- src/process.c-dist Fri Aug 14 22:51:44 1998 ++++ src/process.c Fri Jul 30 12:21:11 1999 +@@ -1,7 +1,18 @@ ++/* ++ * Locally hacked process.c to add ipv6 support. -wsr ++ * ++ * The configure.in file should define "HAVE_GETADDRINFO" if it is found ++ * in libc. ++ * ++ */ ++ + /* Asynchronous subprocess control for GNU Emacs. + Copyright (C) 1985, 86, 87, 88, 93, 94, 95, 96, 1998 + Free Software Foundation, Inc. + ++ ipv6 changes are ++ Copyright (C) 1999 Wolfgang S. Rupprecht ++ + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify +@@ -1808,15 +1819,22 @@ + { + Lisp_Object proc; + register int i; ++ ++#ifndef HAVE_GETADDRINFO + struct sockaddr_in address; + struct servent *svc_info; + struct hostent *host_info_ptr, host_info; + char *(addr_list[2]); + IN_ADDR numeric_addr; +- int s, outch, inch; +- char errstring[80]; +- int port; + struct hostent host_info_fixed; ++ int port; ++#else /* HAVE_GETADDRINFO */ ++ struct addrinfo hints, *res, *lres; ++ int ret = 0; ++ int xerrno = 0; ++ char *portstring, portbuf [128]; ++#endif /* HAVE_GETADDRINFO */ ++ int s = -1, outch, inch; + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + int retry = 0; + int count = specpdl_ptr - specpdl; +@@ -1829,6 +1847,22 @@ + GCPRO4 (name, buffer, host, service); + CHECK_STRING (name, 0); + CHECK_STRING (host, 0); ++ ++#ifdef HAVE_GETADDRINFO ++ /* ++ * caution: service can either be a string or int. ++ * Convert to a C string for later use by getaddrinfo. ++ */ ++ if (INTEGERP (service)) { ++ snprintf (portbuf, sizeof (portbuf), "%d", XINT (service)); ++ portstring = portbuf; ++ } ++ else ++ { ++ CHECK_STRING (service, 0); ++ portstring = XSTRING (service)->data; ++ } ++#else /* HAVE_GETADDRINFO */ + if (INTEGERP (service)) + port = htons ((unsigned short) XINT (service)); + else +@@ -1839,6 +1873,8 @@ + error ("Unknown service \"%s\"", XSTRING (service)->data); + port = svc_info->s_port; + } ++#endif /* HAVE_GETADDRINFO */ ++ + + /* Slow down polling to every ten seconds. + Some kernels have a bug which causes retrying connect to fail +@@ -1848,6 +1884,62 @@ + #endif + + #ifndef TERM ++#ifdef HAVE_GETADDRINFO /* We have a modern OS. -wsr */ ++ { ++ immediate_quit = 1; ++ QUIT; ++ memset(&hints, 0, sizeof(hints)); ++ hints.ai_flags = 0; ++ hints.ai_family = AF_UNSPEC; ++ hints.ai_socktype = SOCK_STREAM; ++ hints.ai_protocol = 0; ++ ret = getaddrinfo(XSTRING (host)->data, portstring, &hints, &res); ++ if (ret){ ++ error("%s/%s %s", XSTRING (host)->data, portstring, ++ gai_strerror(ret)); ++ } ++ immediate_quit = 0; ++ } ++ ++ for (lres = res; lres ; lres = lres->ai_next) { /* address loop */ ++ s = socket(lres->ai_family, lres->ai_socktype, lres->ai_protocol); ++ if (s < 0) ++ continue; ++ ++ /* Kernel bugs (on Ultrix at least) cause lossage (not just EINTR) ++ when connect is interrupted. So let's not let it get interrupted. ++ Note we do not turn off polling, because polling is only used ++ when not interrupt_input, and thus not normally used on the systems ++ which have this bug. On systems which use polling, there's no way ++ to quit if polling is turned off. */ ++ if (interrupt_input) ++ unrequest_sigio (); ++ ++ immediate_quit = 1; ++ QUIT; ++ ++ ret = connect(s, lres->ai_addr, lres->ai_addrlen); ++ if (ret){ ++ close(s); ++ s= -1; ++ continue; ++ } ++ ++ break; ++ } /* address loop */ ++ ++ freeaddrinfo(res); ++ if (s < 0) ++ { ++ if (interrupt_input) ++ request_sigio (); ++ ++ errno = xerrno; ++ report_file_error ("connection failed", ++ Fcons (host, Fcons (name, Qnil))); ++ } ++#else /* HAVE_GETADDRINFO */ ++ + while (1) + { + #ifdef TRY_AGAIN +@@ -1938,6 +2030,7 @@ + report_file_error ("connection failed", + Fcons (host, Fcons (name, Qnil))); + } ++#endif /* HAVE_GETADDRINFO */ + + immediate_quit = 0; diff --git a/japanese/emacs-emcws/files/patch-ch b/japanese/emacs-emcws/files/patch-ch new file mode 100644 index 0000000..4dd63d0 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-ch @@ -0,0 +1,11 @@ +--- configure.in-dist Tue Jun 30 15:15:05 1998 ++++ configure.in Wed Jul 28 10:38:16 1999 +@@ -1613,7 +1613,7 @@ + rename closedir mkdir rmdir sysinfo \ + random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \ + strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \ +-utimes setrlimit setpgid getcwd shutdown strftime) ++utimes setrlimit setpgid getcwd shutdown strftime getaddrinfo) + + # Check this now, so that we will NOT find the above functions in ncurses. + # That is because we have not set up to link ncurses in lib-src. diff --git a/japanese/emacs-emcws/files/patch-da b/japanese/emacs-emcws/files/patch-da new file mode 100644 index 0000000..63a79f7 --- /dev/null +++ b/japanese/emacs-emcws/files/patch-da @@ -0,0 +1,33 @@ +--- configure.in.orig Tue Jun 26 11:38:25 2001 ++++ configure.in Tue Jun 26 11:39:29 2001 +@@ -35,7 +35,11 @@ + dnl A case that the LEIM package exists. + dnl + locallisppath='${datadir}/emacs/${version}-emcws/site-lisp:'\ +-'${datadir}/emacs/site-lisp:${datadir}/emacs/${version}-emcws/leim' ++'${datadir}/emacs/site-lisp:'\ ++'${datadir}/emacs/${version}-emcws/leim:'\ ++'${datadir}/emacs/${version}/site-lisp:'\ ++'${datadir}/emacs/${version}/leim:'\ ++'${datadir}/emacs/${version}/lisp'\ + echo + echo modifying leim/Makefile.in for emcws + mv leim/Makefile.in leim/Makefile.in.orig +@@ -49,12 +53,14 @@ + dnl A case that the LEIM package does not exist. + dnl + locallisppath='${datadir}/emacs/${version}-emcws/site-lisp:'\ +-'${datadir}/emacs/site-lisp' ++'${datadir}/emacs/site-lisp:'\ ++'${datadir}/emacs/${version}/site-lisp:'\ ++'${datadir}/emacs/${version}/lisp' + fi + + lisppath='${locallisppath}:${lispdir}' +-etcdir='${datadir}/emacs/${version}-emcws/etc' +-archlibdir='${libexecdir}/emacs/${version}-emcws/${configuration}' ++etcdir='${datadir}/emacs/${version}/etc' ++archlibdir='${libexecdir}/emacs/${version}/${configuration}' + docdir='${datadir}/emacs/${version}-emcws/etc' + + AC_ARG_WITH(gcc, diff --git a/japanese/emacs-emcws/files/site-init.el.tmpl b/japanese/emacs-emcws/files/site-init.el.tmpl new file mode 100644 index 0000000..364b9d3 --- /dev/null +++ b/japanese/emacs-emcws/files/site-init.el.tmpl @@ -0,0 +1,10 @@ +;;; site-init.el -- site-dependent initialization file + +;; +;; Init file for FreeBSD port: emacs20-emcws +;; + +; change a default file name of the internal DOC-string. +(Snarf-documentation "%%DOC_FILE%%") + +;;; site-init.el ends here diff --git a/japanese/emacs-emcws/pkg-comment b/japanese/emacs-emcws/pkg-comment new file mode 100644 index 0000000..224dbff --- /dev/null +++ b/japanese/emacs-emcws/pkg-comment @@ -0,0 +1 @@ +Emacs + Canna + Wnn + Sj3 diff --git a/japanese/emacs-emcws/pkg-descr b/japanese/emacs-emcws/pkg-descr new file mode 100644 index 0000000..58c2b6a --- /dev/null +++ b/japanese/emacs-emcws/pkg-descr @@ -0,0 +1,5 @@ +Emcws stands for Emacs + Canna + Wnn + Sj3, +which is interim solutions to input 2 bytes chars by communicating with +Kana Kanji conversion server. + +WWW: ftp://ftp.ki.nu/pub/emcws/README.html diff --git a/japanese/emacs-emcws/pkg-message b/japanese/emacs-emcws/pkg-message new file mode 100644 index 0000000..70079d6 --- /dev/null +++ b/japanese/emacs-emcws/pkg-message @@ -0,0 +1,14 @@ +**************************************************************************** + NOTE: Warning message about locale. + + This binary is not linked with libxpg4 shared library by default. + If your LANG environment variable has a value but "C", the following + warning message may be displayed: + + Warning: locale not supported by C library, locale unchanged + + If you complain about this message, type `make install WITH_XPG4=yes' + at the "${PORTSDIR}/japanese/emacs20-emcws" directory to re-make + this package. + +**************************************************************************** diff --git a/japanese/emacs-emcws/pkg-plist b/japanese/emacs-emcws/pkg-plist new file mode 100644 index 0000000..6f1a75c --- /dev/null +++ b/japanese/emacs-emcws/pkg-plist @@ -0,0 +1,34 @@ +bin/emcws-%%EMACS_VER%% +bin/emcws +share/emacs/%%EMACS_VER%%-emcws/etc/%%DOC_FILE%% +share/emacs/%%EMACS_VER%%-emcws/lisp/busyu.el +share/emacs/%%EMACS_VER%%-emcws/lisp/can-n-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/canna.el +share/emacs/%%EMACS_VER%%-emcws/lisp/canna.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/egg-jsymbol.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg-keymap.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-sj3 +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-v41 +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-wnn +share/emacs/%%EMACS_VER%%-emcws/lisp/isearch-ext.el +share/emacs/%%EMACS_VER%%-emcws/lisp/isearch-ext.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/its/han-kata.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/hankaku.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/hira.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/kanainput.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/kata.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/zenkaku.el +share/emacs/%%EMACS_VER%%-emcws/lisp/mule-inst.el +share/emacs/%%EMACS_VER%%-emcws/lisp/sj3-client.el +share/emacs/%%EMACS_VER%%-emcws/lisp/sj3-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-client.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-egg.elc +share/emacs/%%EMACS_VER%%-emcws/site-lisp/subdirs.el +@dirrm share/emacs/%%EMACS_VER%%-emcws/lisp/its +@dirrm share/emacs/%%EMACS_VER%%-emcws/lisp +@dirrm share/emacs/%%EMACS_VER%%-emcws/site-lisp +@dirrm share/emacs/%%EMACS_VER%%-emcws/etc +@dirrm share/emacs/%%EMACS_VER%%-emcws diff --git a/japanese/emacs-emcws/scripts/configure b/japanese/emacs-emcws/scripts/configure new file mode 100644 index 0000000..f588d1f --- /dev/null +++ b/japanese/emacs-emcws/scripts/configure @@ -0,0 +1,14 @@ +#! /bin/sh + +for f in site-init.el; do + ${SED} -e "s,%%DOC_FILE%%,${DOC_FILE},g" \ + < ${FILESDIR}/${f}.tmpl > ${WRKSRC}/lisp/${f} +done + +cd ${WRKSRC} + +if [ -f /usr/lib/aout/crt0.o -a ! -f /usr/lib/crt0.o ]; then + ${SED} -e "s|/usr/lib/crt0\.o|/usr/lib/aout/crt0.o|g" \ + src/s/freebsd.h > src/s/freebsd.h.new || exit + ${MV} -f src/s/freebsd.h.new src/s/freebsd.h +fi diff --git a/japanese/emacs20-emcws/Makefile b/japanese/emacs20-emcws/Makefile new file mode 100644 index 0000000..370e99a --- /dev/null +++ b/japanese/emacs20-emcws/Makefile @@ -0,0 +1,149 @@ +# New ports collection makefile for: GNU emacs +# Version required: 20.7 +# Date created: 08 Oct. 2000 +# Whom: NAKAJI Hiroyuki <nakaji@jp.freebsd.org> +# +# $FreeBSD$ +# + +PORTNAME= emcws +PORTVERSION= 20.7 +CATEGORIES= japanese editors ipv6 +MASTER_SITES= ${MASTER_SITE_GNU} +MASTER_SITE_SUBDIR= emacs +DISTNAME= emacs-${PORTVERSION} + +PATCH_SITES= ftp://ftp.ki.nu/pub/emcws/ \ + ftp://ftp.jpl.org/pub/misc/ +PATCHFILES= emcws-${EMACS_VER}-20010622.gz +PATCH_DIST_STRIP= -p1 + +MAINTAINER= nakaji@jp.freebsd.org + +Y2K= http://www.gnu.org/software/year2000.html + +RUN_DEPENDS= emacs-${EMACS_VER}:${PORTSDIR}/editors/emacs20 + +WRKSRC= ${WRKDIR}/emacs-${EMACS_VER} + +USE_AUTOCONF= YES +USE_GMAKE= YES +EMACS_VER= 20.7 + +# Change these as you like. +USE_WNN6?= YES +USE_FREEWNN?= NO +USE_CANNA?= YES +USE_SJ3?= NO + +CONFIGURE_TARGET= ${MACHINE_ARCH}--freebsd +.if !defined(NO_X11) +CONFIGURE_ARGS= --with-x-toolkit --with-pop +USE_XLIB= YES +.else +CONFIGURE_ARGS= --with-x=no --with-pop +.endif +.if defined(USE_WNN6) +.if (${USE_WNN6} == "yes" || ${USE_WNN6} == "YES") +CONFIGURE_ARGS+=--with-wnn6 --with-wnn-includes=${LOCALBASE}/include/wnn6/wnn \ + --with-wnn-libraries=${LOCALBASE}/lib/libwnn6.so +LIB_DEPENDS+= wnn6.1:${PORTSDIR}/japanese/Wnn6-lib +.endif +.endif +.if defined(USE_FREEWNN) +.if (${USE_FREEWNN} == "yes" || ${USE_FREEWNN} == "YES") +CONFIGURE_ARGS+=--with-wnn4 --with-wnn-includes=${LOCALBASE}/include/wnn \ + --with-wnn-libraries=${LOCALBASE}/lib/libwnn.so +LIB_DEPENDS+= wnn.0:${PORTSDIR}/japanese/FreeWnn-lib +.endif +.endif +.if defined(USE_CANNA) +.if (${USE_CANNA} == "yes" || ${USE_CANNA} == "YES") +CONFIGURE_ARGS+= --with-canna \ + --with-canna-includes=${LOCALBASE}/include \ + --with-canna-libraries=${LOCALBASE}/lib +LIB_DEPENDS+= canna.1:${PORTSDIR}/japanese/Canna +.endif +.endif +.if defined(USE_SJ3) +.if (${USE_SJ3} == "yes" || ${USE_SJ3} == "YES") +CONFIGURE_ARGS+= --with-sj3 +BUILD_DEPENDS+= sj3serv:${PORTSDIR}/japanese/sj3 +.endif +.endif + +DOC_FILE= DOC-EMCWS-${EMACS_VER}.1 +EMCWS_ELCS= busyu.el \ + can-n-egg.el \ + canna.el \ + canna.elc \ + egg-jsymbol.el \ + egg-keymap.el \ + egg.el \ + egg.elc \ + eggrc-sj3 \ + eggrc-v41 \ + eggrc-wnn \ + isearch-ext.el \ + isearch-ext.elc \ + its/han-kata.el \ + its/hankaku.el \ + its/hira.el \ + its/kanainput.el \ + its/kata.el \ + its/zenkaku.el \ + mule-inst.el \ + sj3-client.el \ + sj3-egg.el \ + wnn-client.el \ + wnn-egg.el \ + wnn-egg.elc + +PLIST_SUB= EMACS_VER=${EMACS_VER} EMACS_ARCH=${CONFIGURE_TARGET} \ + DOC_FILE=${DOC_FILE} + +SCRIPTS_ENV= SED=${SED} MV=${MV} \ + DOC_FILE=${DOC_FILE} + +.if defined(WITH_XPG4) +.if ${OSVERSION} >= 220000 && ${OSVERSION} < 400020 +CONFIGURE_ARGS+= --with-xpg4 +.endif +.if ${OSVERSION} >= 500000 && ${OSVERSION} < 500005 +CONFIGURE_ARGS+= --with-xpg4 +.endif +.endif + +pre-fetch: + @${CAT} ${FILESDIR}/emcws-message + +pre-build: + find ${WRKSRC} \( -name \*.orig -o -name \*~ \) -exec ${RM} -f \{} \; + ${RM} -rf ${WRKSRC}/info/* + ${LN} -sf DOC ${WRKSRC}/etc/${DOC_FILE} + +do-install: + @${INSTALL_PROGRAM} ${WRKSRC}/src/emacs ${PREFIX}/bin/emcws-${EMACS_VER} + @${RM} -f ${PREFIX}/bin/emcws + @${LN} ${PREFIX}/bin/emcws-${EMACS_VER} ${PREFIX}/bin/emcws + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc + @${INSTALL_DATA} ${WRKSRC}/etc/DOC ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc/${DOC_FILE} + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/its || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/its + @for i in ${EMCWS_ELCS}; do \ + ${CP} -p ${WRKSRC}/lisp/$$i \ + ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/$$i; \ + done + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp + @if [ ! -f ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp/subdirs.el ]; then \ + (${ECHO} "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \ + ${ECHO} " (normal-top-level-add-subdirs-to-load-path))") \ + > ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp/subdirs.el ; \ + fi + +post-install: + @${CAT} ${PKGMESSAGE} + +.include <bsd.port.mk> diff --git a/japanese/emacs20-emcws/distinfo b/japanese/emacs20-emcws/distinfo new file mode 100644 index 0000000..8f70ec2 --- /dev/null +++ b/japanese/emacs20-emcws/distinfo @@ -0,0 +1,2 @@ +MD5 (emacs-20.7.tar.gz) = c732cf5e668d4ac67d9418ecb103ecf5 +MD5 (emcws-20.7-20010622.gz) = e46d6785ecb03974680d67515c750740 diff --git a/japanese/emacs20-emcws/files/emcws-message b/japanese/emacs20-emcws/files/emcws-message new file mode 100644 index 0000000..22f3409 --- /dev/null +++ b/japanese/emacs20-emcws/files/emcws-message @@ -0,0 +1,16 @@ +**************************************************************************** + NOTE: Warning message about Emcws + + You can define which input method you use with following variables. + + USE_WNN6 to use Wnn6 + USE_FREEWNN to use FreeWnn + USE_CANNA to use Canna + USE_SJ3 to use sj3 + + In default, USE_WNN6 and USE_CANNA are set. + + If you want to use Emcws with Canna and FreeWnn, run + + make install USE_FREEWNN=yes USE_CANNA=yes +**************************************************************************** diff --git a/japanese/emacs20-emcws/files/patch-aa b/japanese/emacs20-emcws/files/patch-aa new file mode 100644 index 0000000..eb174b9 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-aa @@ -0,0 +1,11 @@ +--- Makefile.in.orig Sat Apr 10 04:16:24 1999 ++++ Makefile.in Sat Jul 24 01:03:43 1999 +@@ -188,7 +188,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 leim ++SUBDIR = lib-src src leim man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile diff --git a/japanese/emacs20-emcws/files/patch-ac b/japanese/emacs20-emcws/files/patch-ac new file mode 100644 index 0000000..7b2aa2c --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ac @@ -0,0 +1,14 @@ +--- man/widget.texi.orig Mon Oct 13 14:20:26 1997 ++++ man/widget.texi Mon Oct 13 14:21:25 1997 +@@ -3,6 +3,11 @@ + @c %**start of header + @setfilename ../info/widget + @settitle The Emacs Widget Library ++@dircategory The Emacs editor and associated tools ++@direntry ++* Widget: (widget). The Emacs Widget Library ++@end direntry ++ + @iftex + @afourpaper + @headings double diff --git a/japanese/emacs20-emcws/files/patch-ad b/japanese/emacs20-emcws/files/patch-ad new file mode 100644 index 0000000..c702def --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ad @@ -0,0 +1,14 @@ +--- man/dired-x.texi.orig Sun May 17 03:52:28 1998 ++++ man/dired-x.texi Sat Jul 24 01:19:47 1999 +@@ -19,9 +19,9 @@ + @c dired-x.el REVISION NUMBER + @settitle Dired Extra Version 2 User's Manual + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Dired-X: (dired-x). Dired Extra Features. ++* Dired-X: (dired-x). Dired Extra Features. + @end direntry + + @iftex diff --git a/japanese/emacs20-emcws/files/patch-af b/japanese/emacs20-emcws/files/patch-af new file mode 100644 index 0000000..f2013a3 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-af @@ -0,0 +1,695 @@ +--- src/unexfreebsd.c.orig Wed Dec 3 17:28:14 1997 ++++ src/unexfreebsd.c Wed Dec 3 17:34:02 1997 +@@ -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; ++} diff --git a/japanese/emacs20-emcws/files/patch-ag b/japanese/emacs20-emcws/files/patch-ag new file mode 100644 index 0000000..127f1b6 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ag @@ -0,0 +1,19 @@ +--- man/Makefile.in.orig Sat Dec 5 08:33:16 1998 ++++ man/Makefile.in Sat Jul 24 01:25:06 1999 +@@ -11,7 +11,7 @@ + + + # The makeinfo program is part of the Texinfo distribution. +-MAKEINFO = makeinfo ++MAKEINFO = makeinfo --no-split + INFO_TARGETS = ../info/emacs ../info/ccmode ../info/cl \ + ../info/dired-x ../info/ediff ../info/forms ../info/gnus \ + ../info/info ../info/message ../info/mh-e ../info/reftex \ +@@ -70,6 +70,7 @@ + ${srcdir}/glossary.texi \ + ${srcdir}/ack.texi + ++all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) diff --git a/japanese/emacs20-emcws/files/patch-ah b/japanese/emacs20-emcws/files/patch-ah new file mode 100644 index 0000000..5a24e77 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ah @@ -0,0 +1,29 @@ +--- lib-src/Makefile.in.orig Sat Aug 1 20:22:55 1998 ++++ lib-src/Makefile.in Sat Feb 13 17:30:37 1999 +@@ -218,7 +218,7 @@ + LIBMAIL=-lmail + #endif + +-LOADLIBES=LIBS_SYSTEM LIBS_MACHINE LIB_STANDARD_LIBSRC ++LOADLIBES=LIBS_SYSTEM LIBS_MACHINE LIB_STANDARD_LIBSRC -lcompat + + /* We need to #define emacs to get the right versions of some files. + Some other files - those shared with other GNU utilities - need +@@ -278,7 +278,7 @@ + if [ `(cd ${archlibdir} && /bin/pwd)` \ + != `(cd ${srcdir} && /bin/pwd)` ]; then \ + for file in ${SCRIPTS}; do \ +- $(INSTALL_PROGRAM) ${srcdir}/$$file ${archlibdir}/$$file; \ ++ $(INSTALL_SCRIPT) ${srcdir}/$$file ${archlibdir}/$$file; \ + done ; \ + fi + +@@ -290,7 +290,7 @@ + chmod a+rx ${bindir}/$${file}; \ + done + for file in ${INSTALLABLE_SCRIPTS} ; do \ +- $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file} ; \ ++ $(INSTALL_SCRIPT) ${srcdir}/$${file} ${bindir}/$${file} ; \ + chmod a+rx ${bindir}/$${file}; \ + done + diff --git a/japanese/emacs20-emcws/files/patch-ai b/japanese/emacs20-emcws/files/patch-ai new file mode 100644 index 0000000..1ae2376 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ai @@ -0,0 +1,17 @@ +--- src/unexelf.c.orig Mon Aug 10 11:33:12 1998 ++++ src/unexelf.c Sun Jan 3 20:54:08 1999 +@@ -512,6 +512,14 @@ + # include <link.h> /* get ElfW etc */ + #endif + ++#ifdef __FreeBSD__ ++# ifdef __STDC__ ++# define ElfW(type) Elf_##type ++# else ++# define ElfW(type) Elf_/**/type ++# endif ++#endif ++ + #ifndef ElfW + # ifdef __STDC__ + # define ElfW(type) Elf32_##type diff --git a/japanese/emacs20-emcws/files/patch-aj b/japanese/emacs20-emcws/files/patch-aj new file mode 100644 index 0000000..b11a244 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-aj @@ -0,0 +1,31 @@ +--- src/m/alpha.h.orig Wed Oct 29 16:47:37 1997 ++++ src/m/alpha.h Sun Jan 3 20:05:49 1999 +@@ -239,7 +239,7 @@ + + #ifndef NOT_C_CODE + /* We need these because pointers are larger than the default ints. */ +-#if !defined(__NetBSD__) && !defined(__OpenBSD__) ++#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) + #include <alloca.h> + #else + #include <stdlib.h> +@@ -308,7 +308,8 @@ + termio and struct termios are mutually incompatible. */ + #define NO_TERMIO + +-#if defined (LINUX) || defined (__NetBSD__) || defined (__OpenBSD__) ++#if defined (LINUX) || \ ++ defined(__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) + # define TEXT_END ({ extern int _etext; &_etext; }) + # ifndef __ELF__ + # define COFF +@@ -316,7 +317,8 @@ + # endif /* notdef __ELF__ */ + #endif + +-#if (defined (__NetBSD__) || defined (__OpenBSD__)) && defined (__ELF__) ++#if (defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)) \ ++ && defined (__ELF__) + #define HAVE_TEXT_START + #endif + diff --git a/japanese/emacs20-emcws/files/patch-al b/japanese/emacs20-emcws/files/patch-al new file mode 100644 index 0000000..01116fb --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-al @@ -0,0 +1,17 @@ +--- man/cc-mode.texi.orig Sun May 17 03:55:23 1998 ++++ man/cc-mode.texi Sat Jul 24 01:03:42 1999 +@@ -8,10 +8,10 @@ + @settitle CC MODE Version 5 Documentation + @footnotestyle end + +-@dircategory Editors +-@direntry +-* CC mode: (ccmode). The GNU Emacs mode for editing C, C++, Objective-C +- and Java code. ++@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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/japanese/emacs20-emcws/files/patch-am b/japanese/emacs20-emcws/files/patch-am new file mode 100644 index 0000000..678e11f --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-am @@ -0,0 +1,14 @@ +--- man/cl.texi.orig Wed Apr 7 03:12:55 1999 ++++ man/cl.texi Sat Jul 24 01:03:42 1999 +@@ -2,9 +2,9 @@ + @setfilename ../info/cl + @settitle Common Lisp Extensions + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* CL: (cl). Partial Common Lisp support for Emacs Lisp. ++* CL: (cl). Partial Common Lisp support for Emacs Lisp. + @end direntry + + @iftex diff --git a/japanese/emacs20-emcws/files/patch-an b/japanese/emacs20-emcws/files/patch-an new file mode 100644 index 0000000..0335a0d --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-an @@ -0,0 +1,14 @@ +--- man/emacs.texi.orig Fri Jun 25 02:53:58 1999 ++++ man/emacs.texi Sat Jul 24 01:09:24 1999 +@@ -11,9 +11,9 @@ + updated for Emacs version 20.4 + @c Please REMEMBER to update edition number in *three* places in this file. + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Emacs: (emacs). The extensible self-documenting text editor. ++* Emacs: (emacs). The extensible self-documenting text editor. + @end direntry + + Published by the Free Software Foundation diff --git a/japanese/emacs20-emcws/files/patch-ao b/japanese/emacs20-emcws/files/patch-ao new file mode 100644 index 0000000..4a39b60 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ao @@ -0,0 +1,26 @@ +--- man/forms.texi.orig Mon Aug 24 18:43:18 1998 ++++ man/forms.texi Sat Jul 24 01:03:41 1999 +@@ -8,18 +8,17 @@ + @syncodeindex vr cp + @syncodeindex fn cp + @syncodeindex ky cp ++@dircategory The Emacs editor and associated tools ++@direntry ++* Forms: (forms). Emacs package for editing data bases ++ by filling in forms. ++@end direntry + @iftex + @finalout + @setchapternewpage odd + @end iftex + @c @smallbook + @comment %**end of header (This is for running Texinfo on a region.) +- +-@dircategory Editors +-@direntry +-* Forms: (forms). Emacs package for editing data bases +- by filling in forms. +-@end direntry + + @ifinfo + This file documents Forms mode, a form-editing major mode for GNU Emacs. diff --git a/japanese/emacs20-emcws/files/patch-ap b/japanese/emacs20-emcws/files/patch-ap new file mode 100644 index 0000000..6ccf025 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ap @@ -0,0 +1,13 @@ +--- man/gnus.texi.orig Wed Apr 7 07:46:41 1999 ++++ man/gnus.texi Sat Jul 24 01:09:33 1999 +@@ -5,8 +5,9 @@ + @synindex fn cp + @synindex vr cp + @synindex pg cp ++@dircategory The Emacs editor and associated tools + @direntry +-* Gnus: (gnus). The newsreader Gnus. ++* Gnus: (gnus). The newsreader Gnus. + @end direntry + @iftex + @finalout diff --git a/japanese/emacs20-emcws/files/patch-aq b/japanese/emacs20-emcws/files/patch-aq new file mode 100644 index 0000000..207dde1 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-aq @@ -0,0 +1,20 @@ +--- man/mh-e.texi.orig Sun May 17 03:51:15 1998 ++++ man/mh-e.texi Sat Jul 24 01:03:41 1999 +@@ -4,13 +4,12 @@ + @setfilename ../info/mh-e + @settitle mh-e + @c %**end of header +- +-@setchapternewpage odd +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* MH-E: (mh-e). Emacs interface to the MH mail system. ++* MH-E: (mh-e). Emacs interface to the MH mail system. + @end direntry ++ ++@setchapternewpage odd + + @c Version variables. + @set EDITION 1.2 diff --git a/japanese/emacs20-emcws/files/patch-ar b/japanese/emacs20-emcws/files/patch-ar new file mode 100644 index 0000000..c7c6cf9 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ar @@ -0,0 +1,24 @@ +--- man/sc.texi.orig Fri Jul 3 03:48:27 1998 ++++ man/sc.texi Sat Jul 24 01:03:42 1999 +@@ -3,15 +3,15 @@ + @comment %**start of header (This is for running Texinfo on a region.) + @setfilename ../info/sc + @settitle Supercite Version 3.1 User's Manual ++@dircategory The Emacs editor and associated tools ++@direntry ++* SC: (sc). Supercite lets you cite parts of messages ++ you're replying to, in flexible ways. ++@end direntry ++ + @iftex + @finalout + @end iftex +- +-@dircategory Editors +-@direntry +-* SC: (sc). Supercite lets you cite parts of messages you're +- replying to, in flexible ways. +-@end direntry + + @c @setchapternewpage odd % For book style double sided manual. + @comment %**end of header (This is for running Texinfo on a region.) diff --git a/japanese/emacs20-emcws/files/patch-as b/japanese/emacs20-emcws/files/patch-as new file mode 100644 index 0000000..621927b --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-as @@ -0,0 +1,15 @@ +--- man/vip.texi.orig Sun May 17 03:48:50 1998 ++++ man/vip.texi Sat Jul 24 01:03:40 1999 +@@ -2,10 +2,9 @@ + + @setfilename ../info/vip + @settitle VIP +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* VIP: (vip). An older VI-emulation for Emacs. ++* VIP: (vip). A VI-emulation for Emacs. + @end direntry + + @iftex diff --git a/japanese/emacs20-emcws/files/patch-at b/japanese/emacs20-emcws/files/patch-at new file mode 100644 index 0000000..e85d00b --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-at @@ -0,0 +1,17 @@ +--- man/viper.texi.orig Mon Nov 9 02:13:07 1998 ++++ man/viper.texi Sat Jul 24 01:03:41 1999 +@@ -5,12 +5,9 @@ + @comment @setfilename viper + @comment @setfilename viper.info + @setfilename ../info/viper +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* VIPER: (viper). The newest Emacs VI-emulation mode. +- (also, A VI Plan for Emacs Rescue +- or the VI PERil.) ++* VIPER: (viper). The new VI-emulation mode in Emacs-19.29. + @end direntry + + @iftex diff --git a/japanese/emacs20-emcws/files/patch-au b/japanese/emacs20-emcws/files/patch-au new file mode 100644 index 0000000..2e34ee0 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-au @@ -0,0 +1,14 @@ +--- man/ediff.texi.orig Tue Jun 9 12:29:49 1998 ++++ man/ediff.texi Sat Jul 24 01:19:48 1999 +@@ -14,9 +14,9 @@ + @synindex fn cp + @synindex pg cp + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Ediff: (ediff). A visual interface for comparing and merging programs. ++* Ediff: (ediff). A visual interface for comparing and merging programs. + @end direntry + + @iftex diff --git a/japanese/emacs20-emcws/files/patch-av b/japanese/emacs20-emcws/files/patch-av new file mode 100644 index 0000000..f188e69 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-av @@ -0,0 +1,21 @@ +--- man/message.texi.orig Wed Apr 7 07:48:28 1999 ++++ man/message.texi Sat Jul 24 01:23:30 1999 +@@ -5,15 +5,15 @@ + @synindex fn cp + @synindex vr cp + @synindex pg cp ++@ifinfo ++@dircategory The Emacs editor and associated tools + @direntry +-* Message: (message). Mail and news composition mode that goes with Gnus. ++* Message: (message). Message, the Emacs message composition mode. + @end direntry + @iftex + @finalout + @end iftex + @setchapternewpage odd +- +-@ifinfo + + This file documents Message, the Emacs message composition mode. + diff --git a/japanese/emacs20-emcws/files/patch-aw b/japanese/emacs20-emcws/files/patch-aw new file mode 100644 index 0000000..95c7138 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-aw @@ -0,0 +1,16 @@ +--- man/reftex.texi.orig Sat Jul 24 02:31:43 1999 ++++ man/reftex.texi Sat Jul 24 02:33:26 1999 +@@ -2,10 +2,10 @@ + @c %**start of header + @setfilename ../info/reftex + @settitle RefTeX User Manual +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* reftex: (reftex). Support for LaTeX labels, references, and citations +- with Emacs. ++* reftex: (reftex). Support for LaTeX labels, references, ++ and citations with Emacs. + @end direntry + @synindex ky cp + @syncodeindex vr cp diff --git a/japanese/emacs20-emcws/files/patch-bb b/japanese/emacs20-emcws/files/patch-bb new file mode 100644 index 0000000..896c8fe --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-bb @@ -0,0 +1,13 @@ +--- man/info.texi.orig Fri Apr 17 10:12:19 1998 ++++ man/info.texi Wed Feb 10 00:18:56 1999 +@@ -2,6 +2,10 @@ + @comment %**start of header + @setfilename ../info/info + @settitle Info 1.0 ++@dircategory The Emacs editor and associated tools ++@direntry ++* Info: (info). GNU on-line hyper document system. ++@end direntry + @comment %**end of header + + @iftex diff --git a/japanese/emacs20-emcws/files/patch-ca b/japanese/emacs20-emcws/files/patch-ca new file mode 100644 index 0000000..a9b1ff4 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ca @@ -0,0 +1,31 @@ +--- src/Makefile.in.orig Sat Mar 11 12:49:45 2000 ++++ src/Makefile.in Sat Mar 11 12:52:04 2000 +@@ -126,6 +126,10 @@ + #define LIBS_MACHINE + #endif + ++#ifndef LIBS_XPG ++#define LIBS_XPG ++#endif ++ + #ifndef LIB_MATH + # ifdef LISP_FLOAT_TYPE + # define LIB_MATH -lm +@@ -579,7 +583,7 @@ + #define LIBS_TERMCAP + termcapobj = termcap.o tparam.o + #else /* LIBS_TERMCAP */ +-termcapobj = tparam.o ++termcapobj = terminfo.o + #endif /* LIBS_TERMCAP */ + #endif /* ! defined (TERMINFO) */ + +@@ -864,7 +868,7 @@ + duplicated symbols. If the standard libraries were compiled + with GCC, we might need gnulib again after them. */ + LIBES = $(LOADLIBES) $(LDLIBS) $(LIBX) LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \ +- LIBS_MULE LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR) ++ LIBS_XPG LIBS_MULE LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR) + + /* Enable recompilation of certain other files depending on system type. */ + diff --git a/japanese/emacs20-emcws/files/patch-cb b/japanese/emacs20-emcws/files/patch-cb new file mode 100644 index 0000000..28e6f9f --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-cb @@ -0,0 +1,34 @@ +--- src/s/freebsd.h.orig Tue Apr 13 03:22:12 1999 ++++ src/s/freebsd.h Sat Jul 24 01:30:10 1999 +@@ -45,6 +45,13 @@ + #define LIBS_SYSTEM -lutil + #define LIBS_TERMCAP -ltermcap + ++/* Use XPG4 Library for FreeBSD */ ++#if __FreeBSD_version >= 220000 ++#ifdef USE_XPG ++#define LIBS_XPG -lxpg4 ++#endif ++#endif ++ + #define SYSV_SYSTEM_DIR + + /* freebsd has POSIX-style pgrp behavior. */ +@@ -54,9 +61,16 @@ + #ifdef __ELF__ + + #define LD_SWITCH_SYSTEM ++ ++#ifdef __alpha__ ++#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crtbegin.o ++#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o ++#else + #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 ++#endif ++ ++#define UNEXEC unexelf.o + #undef LIB_GCC + #define LIB_GCC + diff --git a/japanese/emacs20-emcws/files/patch-cc b/japanese/emacs20-emcws/files/patch-cc new file mode 100644 index 0000000..8202cf7 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-cc @@ -0,0 +1,36 @@ +--- configure.in.orig Sat Mar 11 12:55:54 2000 ++++ configure.in Sat Mar 11 12:58:33 2000 +@@ -42,6 +42,9 @@ + AC_ARG_WITH(hesiod, + [ --with-hesiod support Hesiod to get the POP server host], + [AC_DEFINE(HESIOD)]) ++AC_ARG_WITH(xpg4, ++[ --with-xpg4 support XPG4 library on FreeBSD system], ++[AC_DEFINE(USE_XPG)]) + dnl + AC_ARG_WITH(wnn, + [ --with-wnn obsolete, same as --with-wnn4]) +@@ -179,6 +182,15 @@ + machine='' opsys='' unported=no + case "${canonical}" in + ++ ## FreeBSD ports ++ *-*-freebsd* ) ++ opsys=freebsd ++ case "${canonical}" in ++ alpha*-*-freebsd*) machine=alpha ;; ++ i[3456]86-*-freebsd*) machine=intel386 ;; ++ esac ++ ;; ++ + ## NetBSD ports + *-*-netbsd* ) + opsys=netbsd +@@ -985,7 +997,6 @@ + ;; + *-sysv4.2uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;; + *-386bsd* ) opsys=386bsd ;; +- *-freebsd* ) opsys=freebsd ;; + *-nextstep* ) opsys=nextstep ;; + ## Otherwise, we'll fall through to the generic opsys code at the bottom. + esac diff --git a/japanese/emacs20-emcws/files/patch-cd b/japanese/emacs20-emcws/files/patch-cd new file mode 100644 index 0000000..9792250 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-cd @@ -0,0 +1,12 @@ +--- src/config.in.orig Sat Nov 21 09:00:30 1998 ++++ src/config.in Sat Nov 21 09:00:58 1998 +@@ -118,6 +118,9 @@ + /* Define to support using a Hesiod database to find the POP server. */ + #undef HESIOD + ++/* Define to support using a XPG4 library on FreeBSD system. */ ++#undef USE_XPG ++ + /* Some things figured out by the configure script, grouped as they are in + configure.in. */ + #ifndef _ALL_SOURCE /* suppress warning if this is pre-defined */ diff --git a/japanese/emacs20-emcws/files/patch-cf b/japanese/emacs20-emcws/files/patch-cf new file mode 100644 index 0000000..d427361 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-cf @@ -0,0 +1,10 @@ +--- src/config.in.orig Sun Jul 16 13:11:42 2000 ++++ src/config.in Sun Jul 16 13:12:48 2000 +@@ -237,6 +237,7 @@ + #undef HAVE_GETCWD + #undef HAVE_SHUTDOWN + #undef HAVE_STRFTIME ++#undef HAVE_GETADDRINFO + #undef HAVE_GRANTPT + #undef HAVE_GETPT + diff --git a/japanese/emacs20-emcws/files/patch-cg b/japanese/emacs20-emcws/files/patch-cg new file mode 100644 index 0000000..1973aff --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-cg @@ -0,0 +1,149 @@ +--- src/process.c-dist Fri Aug 14 22:51:44 1998 ++++ src/process.c Fri Jul 30 12:21:11 1999 +@@ -1,7 +1,18 @@ ++/* ++ * Locally hacked process.c to add ipv6 support. -wsr ++ * ++ * The configure.in file should define "HAVE_GETADDRINFO" if it is found ++ * in libc. ++ * ++ */ ++ + /* Asynchronous subprocess control for GNU Emacs. + Copyright (C) 1985, 86, 87, 88, 93, 94, 95, 96, 1998 + Free Software Foundation, Inc. + ++ ipv6 changes are ++ Copyright (C) 1999 Wolfgang S. Rupprecht ++ + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify +@@ -1808,15 +1819,22 @@ + { + Lisp_Object proc; + register int i; ++ ++#ifndef HAVE_GETADDRINFO + struct sockaddr_in address; + struct servent *svc_info; + struct hostent *host_info_ptr, host_info; + char *(addr_list[2]); + IN_ADDR numeric_addr; +- int s, outch, inch; +- char errstring[80]; +- int port; + struct hostent host_info_fixed; ++ int port; ++#else /* HAVE_GETADDRINFO */ ++ struct addrinfo hints, *res, *lres; ++ int ret = 0; ++ int xerrno = 0; ++ char *portstring, portbuf [128]; ++#endif /* HAVE_GETADDRINFO */ ++ int s = -1, outch, inch; + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + int retry = 0; + int count = specpdl_ptr - specpdl; +@@ -1829,6 +1847,22 @@ + GCPRO4 (name, buffer, host, service); + CHECK_STRING (name, 0); + CHECK_STRING (host, 0); ++ ++#ifdef HAVE_GETADDRINFO ++ /* ++ * caution: service can either be a string or int. ++ * Convert to a C string for later use by getaddrinfo. ++ */ ++ if (INTEGERP (service)) { ++ snprintf (portbuf, sizeof (portbuf), "%d", XINT (service)); ++ portstring = portbuf; ++ } ++ else ++ { ++ CHECK_STRING (service, 0); ++ portstring = XSTRING (service)->data; ++ } ++#else /* HAVE_GETADDRINFO */ + if (INTEGERP (service)) + port = htons ((unsigned short) XINT (service)); + else +@@ -1839,6 +1873,8 @@ + error ("Unknown service \"%s\"", XSTRING (service)->data); + port = svc_info->s_port; + } ++#endif /* HAVE_GETADDRINFO */ ++ + + /* Slow down polling to every ten seconds. + Some kernels have a bug which causes retrying connect to fail +@@ -1848,6 +1884,62 @@ + #endif + + #ifndef TERM ++#ifdef HAVE_GETADDRINFO /* We have a modern OS. -wsr */ ++ { ++ immediate_quit = 1; ++ QUIT; ++ memset(&hints, 0, sizeof(hints)); ++ hints.ai_flags = 0; ++ hints.ai_family = AF_UNSPEC; ++ hints.ai_socktype = SOCK_STREAM; ++ hints.ai_protocol = 0; ++ ret = getaddrinfo(XSTRING (host)->data, portstring, &hints, &res); ++ if (ret){ ++ error("%s/%s %s", XSTRING (host)->data, portstring, ++ gai_strerror(ret)); ++ } ++ immediate_quit = 0; ++ } ++ ++ for (lres = res; lres ; lres = lres->ai_next) { /* address loop */ ++ s = socket(lres->ai_family, lres->ai_socktype, lres->ai_protocol); ++ if (s < 0) ++ continue; ++ ++ /* Kernel bugs (on Ultrix at least) cause lossage (not just EINTR) ++ when connect is interrupted. So let's not let it get interrupted. ++ Note we do not turn off polling, because polling is only used ++ when not interrupt_input, and thus not normally used on the systems ++ which have this bug. On systems which use polling, there's no way ++ to quit if polling is turned off. */ ++ if (interrupt_input) ++ unrequest_sigio (); ++ ++ immediate_quit = 1; ++ QUIT; ++ ++ ret = connect(s, lres->ai_addr, lres->ai_addrlen); ++ if (ret){ ++ close(s); ++ s= -1; ++ continue; ++ } ++ ++ break; ++ } /* address loop */ ++ ++ freeaddrinfo(res); ++ if (s < 0) ++ { ++ if (interrupt_input) ++ request_sigio (); ++ ++ errno = xerrno; ++ report_file_error ("connection failed", ++ Fcons (host, Fcons (name, Qnil))); ++ } ++#else /* HAVE_GETADDRINFO */ ++ + while (1) + { + #ifdef TRY_AGAIN +@@ -1938,6 +2030,7 @@ + report_file_error ("connection failed", + Fcons (host, Fcons (name, Qnil))); + } ++#endif /* HAVE_GETADDRINFO */ + + immediate_quit = 0; diff --git a/japanese/emacs20-emcws/files/patch-ch b/japanese/emacs20-emcws/files/patch-ch new file mode 100644 index 0000000..4dd63d0 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-ch @@ -0,0 +1,11 @@ +--- configure.in-dist Tue Jun 30 15:15:05 1998 ++++ configure.in Wed Jul 28 10:38:16 1999 +@@ -1613,7 +1613,7 @@ + rename closedir mkdir rmdir sysinfo \ + random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \ + strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \ +-utimes setrlimit setpgid getcwd shutdown strftime) ++utimes setrlimit setpgid getcwd shutdown strftime getaddrinfo) + + # Check this now, so that we will NOT find the above functions in ncurses. + # That is because we have not set up to link ncurses in lib-src. diff --git a/japanese/emacs20-emcws/files/patch-da b/japanese/emacs20-emcws/files/patch-da new file mode 100644 index 0000000..63a79f7 --- /dev/null +++ b/japanese/emacs20-emcws/files/patch-da @@ -0,0 +1,33 @@ +--- configure.in.orig Tue Jun 26 11:38:25 2001 ++++ configure.in Tue Jun 26 11:39:29 2001 +@@ -35,7 +35,11 @@ + dnl A case that the LEIM package exists. + dnl + locallisppath='${datadir}/emacs/${version}-emcws/site-lisp:'\ +-'${datadir}/emacs/site-lisp:${datadir}/emacs/${version}-emcws/leim' ++'${datadir}/emacs/site-lisp:'\ ++'${datadir}/emacs/${version}-emcws/leim:'\ ++'${datadir}/emacs/${version}/site-lisp:'\ ++'${datadir}/emacs/${version}/leim:'\ ++'${datadir}/emacs/${version}/lisp'\ + echo + echo modifying leim/Makefile.in for emcws + mv leim/Makefile.in leim/Makefile.in.orig +@@ -49,12 +53,14 @@ + dnl A case that the LEIM package does not exist. + dnl + locallisppath='${datadir}/emacs/${version}-emcws/site-lisp:'\ +-'${datadir}/emacs/site-lisp' ++'${datadir}/emacs/site-lisp:'\ ++'${datadir}/emacs/${version}/site-lisp:'\ ++'${datadir}/emacs/${version}/lisp' + fi + + lisppath='${locallisppath}:${lispdir}' +-etcdir='${datadir}/emacs/${version}-emcws/etc' +-archlibdir='${libexecdir}/emacs/${version}-emcws/${configuration}' ++etcdir='${datadir}/emacs/${version}/etc' ++archlibdir='${libexecdir}/emacs/${version}/${configuration}' + docdir='${datadir}/emacs/${version}-emcws/etc' + + AC_ARG_WITH(gcc, diff --git a/japanese/emacs20-emcws/files/site-init.el.tmpl b/japanese/emacs20-emcws/files/site-init.el.tmpl new file mode 100644 index 0000000..364b9d3 --- /dev/null +++ b/japanese/emacs20-emcws/files/site-init.el.tmpl @@ -0,0 +1,10 @@ +;;; site-init.el -- site-dependent initialization file + +;; +;; Init file for FreeBSD port: emacs20-emcws +;; + +; change a default file name of the internal DOC-string. +(Snarf-documentation "%%DOC_FILE%%") + +;;; site-init.el ends here diff --git a/japanese/emacs20-emcws/pkg-comment b/japanese/emacs20-emcws/pkg-comment new file mode 100644 index 0000000..224dbff --- /dev/null +++ b/japanese/emacs20-emcws/pkg-comment @@ -0,0 +1 @@ +Emacs + Canna + Wnn + Sj3 diff --git a/japanese/emacs20-emcws/pkg-descr b/japanese/emacs20-emcws/pkg-descr new file mode 100644 index 0000000..58c2b6a --- /dev/null +++ b/japanese/emacs20-emcws/pkg-descr @@ -0,0 +1,5 @@ +Emcws stands for Emacs + Canna + Wnn + Sj3, +which is interim solutions to input 2 bytes chars by communicating with +Kana Kanji conversion server. + +WWW: ftp://ftp.ki.nu/pub/emcws/README.html diff --git a/japanese/emacs20-emcws/pkg-message b/japanese/emacs20-emcws/pkg-message new file mode 100644 index 0000000..70079d6 --- /dev/null +++ b/japanese/emacs20-emcws/pkg-message @@ -0,0 +1,14 @@ +**************************************************************************** + NOTE: Warning message about locale. + + This binary is not linked with libxpg4 shared library by default. + If your LANG environment variable has a value but "C", the following + warning message may be displayed: + + Warning: locale not supported by C library, locale unchanged + + If you complain about this message, type `make install WITH_XPG4=yes' + at the "${PORTSDIR}/japanese/emacs20-emcws" directory to re-make + this package. + +**************************************************************************** diff --git a/japanese/emacs20-emcws/pkg-plist b/japanese/emacs20-emcws/pkg-plist new file mode 100644 index 0000000..6f1a75c --- /dev/null +++ b/japanese/emacs20-emcws/pkg-plist @@ -0,0 +1,34 @@ +bin/emcws-%%EMACS_VER%% +bin/emcws +share/emacs/%%EMACS_VER%%-emcws/etc/%%DOC_FILE%% +share/emacs/%%EMACS_VER%%-emcws/lisp/busyu.el +share/emacs/%%EMACS_VER%%-emcws/lisp/can-n-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/canna.el +share/emacs/%%EMACS_VER%%-emcws/lisp/canna.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/egg-jsymbol.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg-keymap.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-sj3 +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-v41 +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-wnn +share/emacs/%%EMACS_VER%%-emcws/lisp/isearch-ext.el +share/emacs/%%EMACS_VER%%-emcws/lisp/isearch-ext.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/its/han-kata.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/hankaku.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/hira.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/kanainput.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/kata.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/zenkaku.el +share/emacs/%%EMACS_VER%%-emcws/lisp/mule-inst.el +share/emacs/%%EMACS_VER%%-emcws/lisp/sj3-client.el +share/emacs/%%EMACS_VER%%-emcws/lisp/sj3-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-client.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-egg.elc +share/emacs/%%EMACS_VER%%-emcws/site-lisp/subdirs.el +@dirrm share/emacs/%%EMACS_VER%%-emcws/lisp/its +@dirrm share/emacs/%%EMACS_VER%%-emcws/lisp +@dirrm share/emacs/%%EMACS_VER%%-emcws/site-lisp +@dirrm share/emacs/%%EMACS_VER%%-emcws/etc +@dirrm share/emacs/%%EMACS_VER%%-emcws diff --git a/japanese/emacs20-emcws/scripts/configure b/japanese/emacs20-emcws/scripts/configure new file mode 100644 index 0000000..f588d1f --- /dev/null +++ b/japanese/emacs20-emcws/scripts/configure @@ -0,0 +1,14 @@ +#! /bin/sh + +for f in site-init.el; do + ${SED} -e "s,%%DOC_FILE%%,${DOC_FILE},g" \ + < ${FILESDIR}/${f}.tmpl > ${WRKSRC}/lisp/${f} +done + +cd ${WRKSRC} + +if [ -f /usr/lib/aout/crt0.o -a ! -f /usr/lib/crt0.o ]; then + ${SED} -e "s|/usr/lib/crt0\.o|/usr/lib/aout/crt0.o|g" \ + src/s/freebsd.h > src/s/freebsd.h.new || exit + ${MV} -f src/s/freebsd.h.new src/s/freebsd.h +fi diff --git a/japanese/emacs21-emcws/Makefile b/japanese/emacs21-emcws/Makefile new file mode 100644 index 0000000..370e99a --- /dev/null +++ b/japanese/emacs21-emcws/Makefile @@ -0,0 +1,149 @@ +# New ports collection makefile for: GNU emacs +# Version required: 20.7 +# Date created: 08 Oct. 2000 +# Whom: NAKAJI Hiroyuki <nakaji@jp.freebsd.org> +# +# $FreeBSD$ +# + +PORTNAME= emcws +PORTVERSION= 20.7 +CATEGORIES= japanese editors ipv6 +MASTER_SITES= ${MASTER_SITE_GNU} +MASTER_SITE_SUBDIR= emacs +DISTNAME= emacs-${PORTVERSION} + +PATCH_SITES= ftp://ftp.ki.nu/pub/emcws/ \ + ftp://ftp.jpl.org/pub/misc/ +PATCHFILES= emcws-${EMACS_VER}-20010622.gz +PATCH_DIST_STRIP= -p1 + +MAINTAINER= nakaji@jp.freebsd.org + +Y2K= http://www.gnu.org/software/year2000.html + +RUN_DEPENDS= emacs-${EMACS_VER}:${PORTSDIR}/editors/emacs20 + +WRKSRC= ${WRKDIR}/emacs-${EMACS_VER} + +USE_AUTOCONF= YES +USE_GMAKE= YES +EMACS_VER= 20.7 + +# Change these as you like. +USE_WNN6?= YES +USE_FREEWNN?= NO +USE_CANNA?= YES +USE_SJ3?= NO + +CONFIGURE_TARGET= ${MACHINE_ARCH}--freebsd +.if !defined(NO_X11) +CONFIGURE_ARGS= --with-x-toolkit --with-pop +USE_XLIB= YES +.else +CONFIGURE_ARGS= --with-x=no --with-pop +.endif +.if defined(USE_WNN6) +.if (${USE_WNN6} == "yes" || ${USE_WNN6} == "YES") +CONFIGURE_ARGS+=--with-wnn6 --with-wnn-includes=${LOCALBASE}/include/wnn6/wnn \ + --with-wnn-libraries=${LOCALBASE}/lib/libwnn6.so +LIB_DEPENDS+= wnn6.1:${PORTSDIR}/japanese/Wnn6-lib +.endif +.endif +.if defined(USE_FREEWNN) +.if (${USE_FREEWNN} == "yes" || ${USE_FREEWNN} == "YES") +CONFIGURE_ARGS+=--with-wnn4 --with-wnn-includes=${LOCALBASE}/include/wnn \ + --with-wnn-libraries=${LOCALBASE}/lib/libwnn.so +LIB_DEPENDS+= wnn.0:${PORTSDIR}/japanese/FreeWnn-lib +.endif +.endif +.if defined(USE_CANNA) +.if (${USE_CANNA} == "yes" || ${USE_CANNA} == "YES") +CONFIGURE_ARGS+= --with-canna \ + --with-canna-includes=${LOCALBASE}/include \ + --with-canna-libraries=${LOCALBASE}/lib +LIB_DEPENDS+= canna.1:${PORTSDIR}/japanese/Canna +.endif +.endif +.if defined(USE_SJ3) +.if (${USE_SJ3} == "yes" || ${USE_SJ3} == "YES") +CONFIGURE_ARGS+= --with-sj3 +BUILD_DEPENDS+= sj3serv:${PORTSDIR}/japanese/sj3 +.endif +.endif + +DOC_FILE= DOC-EMCWS-${EMACS_VER}.1 +EMCWS_ELCS= busyu.el \ + can-n-egg.el \ + canna.el \ + canna.elc \ + egg-jsymbol.el \ + egg-keymap.el \ + egg.el \ + egg.elc \ + eggrc-sj3 \ + eggrc-v41 \ + eggrc-wnn \ + isearch-ext.el \ + isearch-ext.elc \ + its/han-kata.el \ + its/hankaku.el \ + its/hira.el \ + its/kanainput.el \ + its/kata.el \ + its/zenkaku.el \ + mule-inst.el \ + sj3-client.el \ + sj3-egg.el \ + wnn-client.el \ + wnn-egg.el \ + wnn-egg.elc + +PLIST_SUB= EMACS_VER=${EMACS_VER} EMACS_ARCH=${CONFIGURE_TARGET} \ + DOC_FILE=${DOC_FILE} + +SCRIPTS_ENV= SED=${SED} MV=${MV} \ + DOC_FILE=${DOC_FILE} + +.if defined(WITH_XPG4) +.if ${OSVERSION} >= 220000 && ${OSVERSION} < 400020 +CONFIGURE_ARGS+= --with-xpg4 +.endif +.if ${OSVERSION} >= 500000 && ${OSVERSION} < 500005 +CONFIGURE_ARGS+= --with-xpg4 +.endif +.endif + +pre-fetch: + @${CAT} ${FILESDIR}/emcws-message + +pre-build: + find ${WRKSRC} \( -name \*.orig -o -name \*~ \) -exec ${RM} -f \{} \; + ${RM} -rf ${WRKSRC}/info/* + ${LN} -sf DOC ${WRKSRC}/etc/${DOC_FILE} + +do-install: + @${INSTALL_PROGRAM} ${WRKSRC}/src/emacs ${PREFIX}/bin/emcws-${EMACS_VER} + @${RM} -f ${PREFIX}/bin/emcws + @${LN} ${PREFIX}/bin/emcws-${EMACS_VER} ${PREFIX}/bin/emcws + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc + @${INSTALL_DATA} ${WRKSRC}/etc/DOC ${PREFIX}/share/emacs/${EMACS_VER}-emcws/etc/${DOC_FILE} + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/its || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/its + @for i in ${EMCWS_ELCS}; do \ + ${CP} -p ${WRKSRC}/lisp/$$i \ + ${PREFIX}/share/emacs/${EMACS_VER}-emcws/lisp/$$i; \ + done + @test -d ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp || \ + ${MKDIR} ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp + @if [ ! -f ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp/subdirs.el ]; then \ + (${ECHO} "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \ + ${ECHO} " (normal-top-level-add-subdirs-to-load-path))") \ + > ${PREFIX}/share/emacs/${EMACS_VER}-emcws/site-lisp/subdirs.el ; \ + fi + +post-install: + @${CAT} ${PKGMESSAGE} + +.include <bsd.port.mk> diff --git a/japanese/emacs21-emcws/distinfo b/japanese/emacs21-emcws/distinfo new file mode 100644 index 0000000..8f70ec2 --- /dev/null +++ b/japanese/emacs21-emcws/distinfo @@ -0,0 +1,2 @@ +MD5 (emacs-20.7.tar.gz) = c732cf5e668d4ac67d9418ecb103ecf5 +MD5 (emcws-20.7-20010622.gz) = e46d6785ecb03974680d67515c750740 diff --git a/japanese/emacs21-emcws/files/emcws-message b/japanese/emacs21-emcws/files/emcws-message new file mode 100644 index 0000000..22f3409 --- /dev/null +++ b/japanese/emacs21-emcws/files/emcws-message @@ -0,0 +1,16 @@ +**************************************************************************** + NOTE: Warning message about Emcws + + You can define which input method you use with following variables. + + USE_WNN6 to use Wnn6 + USE_FREEWNN to use FreeWnn + USE_CANNA to use Canna + USE_SJ3 to use sj3 + + In default, USE_WNN6 and USE_CANNA are set. + + If you want to use Emcws with Canna and FreeWnn, run + + make install USE_FREEWNN=yes USE_CANNA=yes +**************************************************************************** diff --git a/japanese/emacs21-emcws/files/patch-aa b/japanese/emacs21-emcws/files/patch-aa new file mode 100644 index 0000000..eb174b9 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-aa @@ -0,0 +1,11 @@ +--- Makefile.in.orig Sat Apr 10 04:16:24 1999 ++++ Makefile.in Sat Jul 24 01:03:43 1999 +@@ -188,7 +188,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 leim ++SUBDIR = lib-src src leim man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile diff --git a/japanese/emacs21-emcws/files/patch-ac b/japanese/emacs21-emcws/files/patch-ac new file mode 100644 index 0000000..7b2aa2c --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ac @@ -0,0 +1,14 @@ +--- man/widget.texi.orig Mon Oct 13 14:20:26 1997 ++++ man/widget.texi Mon Oct 13 14:21:25 1997 +@@ -3,6 +3,11 @@ + @c %**start of header + @setfilename ../info/widget + @settitle The Emacs Widget Library ++@dircategory The Emacs editor and associated tools ++@direntry ++* Widget: (widget). The Emacs Widget Library ++@end direntry ++ + @iftex + @afourpaper + @headings double diff --git a/japanese/emacs21-emcws/files/patch-ad b/japanese/emacs21-emcws/files/patch-ad new file mode 100644 index 0000000..c702def --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ad @@ -0,0 +1,14 @@ +--- man/dired-x.texi.orig Sun May 17 03:52:28 1998 ++++ man/dired-x.texi Sat Jul 24 01:19:47 1999 +@@ -19,9 +19,9 @@ + @c dired-x.el REVISION NUMBER + @settitle Dired Extra Version 2 User's Manual + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Dired-X: (dired-x). Dired Extra Features. ++* Dired-X: (dired-x). Dired Extra Features. + @end direntry + + @iftex diff --git a/japanese/emacs21-emcws/files/patch-af b/japanese/emacs21-emcws/files/patch-af new file mode 100644 index 0000000..f2013a3 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-af @@ -0,0 +1,695 @@ +--- src/unexfreebsd.c.orig Wed Dec 3 17:28:14 1997 ++++ src/unexfreebsd.c Wed Dec 3 17:34:02 1997 +@@ -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; ++} diff --git a/japanese/emacs21-emcws/files/patch-ag b/japanese/emacs21-emcws/files/patch-ag new file mode 100644 index 0000000..127f1b6 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ag @@ -0,0 +1,19 @@ +--- man/Makefile.in.orig Sat Dec 5 08:33:16 1998 ++++ man/Makefile.in Sat Jul 24 01:25:06 1999 +@@ -11,7 +11,7 @@ + + + # The makeinfo program is part of the Texinfo distribution. +-MAKEINFO = makeinfo ++MAKEINFO = makeinfo --no-split + INFO_TARGETS = ../info/emacs ../info/ccmode ../info/cl \ + ../info/dired-x ../info/ediff ../info/forms ../info/gnus \ + ../info/info ../info/message ../info/mh-e ../info/reftex \ +@@ -70,6 +70,7 @@ + ${srcdir}/glossary.texi \ + ${srcdir}/ack.texi + ++all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) diff --git a/japanese/emacs21-emcws/files/patch-ah b/japanese/emacs21-emcws/files/patch-ah new file mode 100644 index 0000000..5a24e77 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ah @@ -0,0 +1,29 @@ +--- lib-src/Makefile.in.orig Sat Aug 1 20:22:55 1998 ++++ lib-src/Makefile.in Sat Feb 13 17:30:37 1999 +@@ -218,7 +218,7 @@ + LIBMAIL=-lmail + #endif + +-LOADLIBES=LIBS_SYSTEM LIBS_MACHINE LIB_STANDARD_LIBSRC ++LOADLIBES=LIBS_SYSTEM LIBS_MACHINE LIB_STANDARD_LIBSRC -lcompat + + /* We need to #define emacs to get the right versions of some files. + Some other files - those shared with other GNU utilities - need +@@ -278,7 +278,7 @@ + if [ `(cd ${archlibdir} && /bin/pwd)` \ + != `(cd ${srcdir} && /bin/pwd)` ]; then \ + for file in ${SCRIPTS}; do \ +- $(INSTALL_PROGRAM) ${srcdir}/$$file ${archlibdir}/$$file; \ ++ $(INSTALL_SCRIPT) ${srcdir}/$$file ${archlibdir}/$$file; \ + done ; \ + fi + +@@ -290,7 +290,7 @@ + chmod a+rx ${bindir}/$${file}; \ + done + for file in ${INSTALLABLE_SCRIPTS} ; do \ +- $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file} ; \ ++ $(INSTALL_SCRIPT) ${srcdir}/$${file} ${bindir}/$${file} ; \ + chmod a+rx ${bindir}/$${file}; \ + done + diff --git a/japanese/emacs21-emcws/files/patch-ai b/japanese/emacs21-emcws/files/patch-ai new file mode 100644 index 0000000..1ae2376 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ai @@ -0,0 +1,17 @@ +--- src/unexelf.c.orig Mon Aug 10 11:33:12 1998 ++++ src/unexelf.c Sun Jan 3 20:54:08 1999 +@@ -512,6 +512,14 @@ + # include <link.h> /* get ElfW etc */ + #endif + ++#ifdef __FreeBSD__ ++# ifdef __STDC__ ++# define ElfW(type) Elf_##type ++# else ++# define ElfW(type) Elf_/**/type ++# endif ++#endif ++ + #ifndef ElfW + # ifdef __STDC__ + # define ElfW(type) Elf32_##type diff --git a/japanese/emacs21-emcws/files/patch-aj b/japanese/emacs21-emcws/files/patch-aj new file mode 100644 index 0000000..b11a244 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-aj @@ -0,0 +1,31 @@ +--- src/m/alpha.h.orig Wed Oct 29 16:47:37 1997 ++++ src/m/alpha.h Sun Jan 3 20:05:49 1999 +@@ -239,7 +239,7 @@ + + #ifndef NOT_C_CODE + /* We need these because pointers are larger than the default ints. */ +-#if !defined(__NetBSD__) && !defined(__OpenBSD__) ++#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) + #include <alloca.h> + #else + #include <stdlib.h> +@@ -308,7 +308,8 @@ + termio and struct termios are mutually incompatible. */ + #define NO_TERMIO + +-#if defined (LINUX) || defined (__NetBSD__) || defined (__OpenBSD__) ++#if defined (LINUX) || \ ++ defined(__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) + # define TEXT_END ({ extern int _etext; &_etext; }) + # ifndef __ELF__ + # define COFF +@@ -316,7 +317,8 @@ + # endif /* notdef __ELF__ */ + #endif + +-#if (defined (__NetBSD__) || defined (__OpenBSD__)) && defined (__ELF__) ++#if (defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__)) \ ++ && defined (__ELF__) + #define HAVE_TEXT_START + #endif + diff --git a/japanese/emacs21-emcws/files/patch-al b/japanese/emacs21-emcws/files/patch-al new file mode 100644 index 0000000..01116fb --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-al @@ -0,0 +1,17 @@ +--- man/cc-mode.texi.orig Sun May 17 03:55:23 1998 ++++ man/cc-mode.texi Sat Jul 24 01:03:42 1999 +@@ -8,10 +8,10 @@ + @settitle CC MODE Version 5 Documentation + @footnotestyle end + +-@dircategory Editors +-@direntry +-* CC mode: (ccmode). The GNU Emacs mode for editing C, C++, Objective-C +- and Java code. ++@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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/japanese/emacs21-emcws/files/patch-am b/japanese/emacs21-emcws/files/patch-am new file mode 100644 index 0000000..678e11f --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-am @@ -0,0 +1,14 @@ +--- man/cl.texi.orig Wed Apr 7 03:12:55 1999 ++++ man/cl.texi Sat Jul 24 01:03:42 1999 +@@ -2,9 +2,9 @@ + @setfilename ../info/cl + @settitle Common Lisp Extensions + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* CL: (cl). Partial Common Lisp support for Emacs Lisp. ++* CL: (cl). Partial Common Lisp support for Emacs Lisp. + @end direntry + + @iftex diff --git a/japanese/emacs21-emcws/files/patch-an b/japanese/emacs21-emcws/files/patch-an new file mode 100644 index 0000000..0335a0d --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-an @@ -0,0 +1,14 @@ +--- man/emacs.texi.orig Fri Jun 25 02:53:58 1999 ++++ man/emacs.texi Sat Jul 24 01:09:24 1999 +@@ -11,9 +11,9 @@ + updated for Emacs version 20.4 + @c Please REMEMBER to update edition number in *three* places in this file. + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Emacs: (emacs). The extensible self-documenting text editor. ++* Emacs: (emacs). The extensible self-documenting text editor. + @end direntry + + Published by the Free Software Foundation diff --git a/japanese/emacs21-emcws/files/patch-ao b/japanese/emacs21-emcws/files/patch-ao new file mode 100644 index 0000000..4a39b60 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ao @@ -0,0 +1,26 @@ +--- man/forms.texi.orig Mon Aug 24 18:43:18 1998 ++++ man/forms.texi Sat Jul 24 01:03:41 1999 +@@ -8,18 +8,17 @@ + @syncodeindex vr cp + @syncodeindex fn cp + @syncodeindex ky cp ++@dircategory The Emacs editor and associated tools ++@direntry ++* Forms: (forms). Emacs package for editing data bases ++ by filling in forms. ++@end direntry + @iftex + @finalout + @setchapternewpage odd + @end iftex + @c @smallbook + @comment %**end of header (This is for running Texinfo on a region.) +- +-@dircategory Editors +-@direntry +-* Forms: (forms). Emacs package for editing data bases +- by filling in forms. +-@end direntry + + @ifinfo + This file documents Forms mode, a form-editing major mode for GNU Emacs. diff --git a/japanese/emacs21-emcws/files/patch-ap b/japanese/emacs21-emcws/files/patch-ap new file mode 100644 index 0000000..6ccf025 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ap @@ -0,0 +1,13 @@ +--- man/gnus.texi.orig Wed Apr 7 07:46:41 1999 ++++ man/gnus.texi Sat Jul 24 01:09:33 1999 +@@ -5,8 +5,9 @@ + @synindex fn cp + @synindex vr cp + @synindex pg cp ++@dircategory The Emacs editor and associated tools + @direntry +-* Gnus: (gnus). The newsreader Gnus. ++* Gnus: (gnus). The newsreader Gnus. + @end direntry + @iftex + @finalout diff --git a/japanese/emacs21-emcws/files/patch-aq b/japanese/emacs21-emcws/files/patch-aq new file mode 100644 index 0000000..207dde1 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-aq @@ -0,0 +1,20 @@ +--- man/mh-e.texi.orig Sun May 17 03:51:15 1998 ++++ man/mh-e.texi Sat Jul 24 01:03:41 1999 +@@ -4,13 +4,12 @@ + @setfilename ../info/mh-e + @settitle mh-e + @c %**end of header +- +-@setchapternewpage odd +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* MH-E: (mh-e). Emacs interface to the MH mail system. ++* MH-E: (mh-e). Emacs interface to the MH mail system. + @end direntry ++ ++@setchapternewpage odd + + @c Version variables. + @set EDITION 1.2 diff --git a/japanese/emacs21-emcws/files/patch-ar b/japanese/emacs21-emcws/files/patch-ar new file mode 100644 index 0000000..c7c6cf9 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ar @@ -0,0 +1,24 @@ +--- man/sc.texi.orig Fri Jul 3 03:48:27 1998 ++++ man/sc.texi Sat Jul 24 01:03:42 1999 +@@ -3,15 +3,15 @@ + @comment %**start of header (This is for running Texinfo on a region.) + @setfilename ../info/sc + @settitle Supercite Version 3.1 User's Manual ++@dircategory The Emacs editor and associated tools ++@direntry ++* SC: (sc). Supercite lets you cite parts of messages ++ you're replying to, in flexible ways. ++@end direntry ++ + @iftex + @finalout + @end iftex +- +-@dircategory Editors +-@direntry +-* SC: (sc). Supercite lets you cite parts of messages you're +- replying to, in flexible ways. +-@end direntry + + @c @setchapternewpage odd % For book style double sided manual. + @comment %**end of header (This is for running Texinfo on a region.) diff --git a/japanese/emacs21-emcws/files/patch-as b/japanese/emacs21-emcws/files/patch-as new file mode 100644 index 0000000..621927b --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-as @@ -0,0 +1,15 @@ +--- man/vip.texi.orig Sun May 17 03:48:50 1998 ++++ man/vip.texi Sat Jul 24 01:03:40 1999 +@@ -2,10 +2,9 @@ + + @setfilename ../info/vip + @settitle VIP +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* VIP: (vip). An older VI-emulation for Emacs. ++* VIP: (vip). A VI-emulation for Emacs. + @end direntry + + @iftex diff --git a/japanese/emacs21-emcws/files/patch-at b/japanese/emacs21-emcws/files/patch-at new file mode 100644 index 0000000..e85d00b --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-at @@ -0,0 +1,17 @@ +--- man/viper.texi.orig Mon Nov 9 02:13:07 1998 ++++ man/viper.texi Sat Jul 24 01:03:41 1999 +@@ -5,12 +5,9 @@ + @comment @setfilename viper + @comment @setfilename viper.info + @setfilename ../info/viper +- +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* VIPER: (viper). The newest Emacs VI-emulation mode. +- (also, A VI Plan for Emacs Rescue +- or the VI PERil.) ++* VIPER: (viper). The new VI-emulation mode in Emacs-19.29. + @end direntry + + @iftex diff --git a/japanese/emacs21-emcws/files/patch-au b/japanese/emacs21-emcws/files/patch-au new file mode 100644 index 0000000..2e34ee0 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-au @@ -0,0 +1,14 @@ +--- man/ediff.texi.orig Tue Jun 9 12:29:49 1998 ++++ man/ediff.texi Sat Jul 24 01:19:48 1999 +@@ -14,9 +14,9 @@ + @synindex fn cp + @synindex pg cp + +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* Ediff: (ediff). A visual interface for comparing and merging programs. ++* Ediff: (ediff). A visual interface for comparing and merging programs. + @end direntry + + @iftex diff --git a/japanese/emacs21-emcws/files/patch-av b/japanese/emacs21-emcws/files/patch-av new file mode 100644 index 0000000..f188e69 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-av @@ -0,0 +1,21 @@ +--- man/message.texi.orig Wed Apr 7 07:48:28 1999 ++++ man/message.texi Sat Jul 24 01:23:30 1999 +@@ -5,15 +5,15 @@ + @synindex fn cp + @synindex vr cp + @synindex pg cp ++@ifinfo ++@dircategory The Emacs editor and associated tools + @direntry +-* Message: (message). Mail and news composition mode that goes with Gnus. ++* Message: (message). Message, the Emacs message composition mode. + @end direntry + @iftex + @finalout + @end iftex + @setchapternewpage odd +- +-@ifinfo + + This file documents Message, the Emacs message composition mode. + diff --git a/japanese/emacs21-emcws/files/patch-aw b/japanese/emacs21-emcws/files/patch-aw new file mode 100644 index 0000000..95c7138 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-aw @@ -0,0 +1,16 @@ +--- man/reftex.texi.orig Sat Jul 24 02:31:43 1999 ++++ man/reftex.texi Sat Jul 24 02:33:26 1999 +@@ -2,10 +2,10 @@ + @c %**start of header + @setfilename ../info/reftex + @settitle RefTeX User Manual +-@dircategory Editors ++@dircategory The Emacs editor and associated tools + @direntry +-* reftex: (reftex). Support for LaTeX labels, references, and citations +- with Emacs. ++* reftex: (reftex). Support for LaTeX labels, references, ++ and citations with Emacs. + @end direntry + @synindex ky cp + @syncodeindex vr cp diff --git a/japanese/emacs21-emcws/files/patch-bb b/japanese/emacs21-emcws/files/patch-bb new file mode 100644 index 0000000..896c8fe --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-bb @@ -0,0 +1,13 @@ +--- man/info.texi.orig Fri Apr 17 10:12:19 1998 ++++ man/info.texi Wed Feb 10 00:18:56 1999 +@@ -2,6 +2,10 @@ + @comment %**start of header + @setfilename ../info/info + @settitle Info 1.0 ++@dircategory The Emacs editor and associated tools ++@direntry ++* Info: (info). GNU on-line hyper document system. ++@end direntry + @comment %**end of header + + @iftex diff --git a/japanese/emacs21-emcws/files/patch-ca b/japanese/emacs21-emcws/files/patch-ca new file mode 100644 index 0000000..a9b1ff4 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ca @@ -0,0 +1,31 @@ +--- src/Makefile.in.orig Sat Mar 11 12:49:45 2000 ++++ src/Makefile.in Sat Mar 11 12:52:04 2000 +@@ -126,6 +126,10 @@ + #define LIBS_MACHINE + #endif + ++#ifndef LIBS_XPG ++#define LIBS_XPG ++#endif ++ + #ifndef LIB_MATH + # ifdef LISP_FLOAT_TYPE + # define LIB_MATH -lm +@@ -579,7 +583,7 @@ + #define LIBS_TERMCAP + termcapobj = termcap.o tparam.o + #else /* LIBS_TERMCAP */ +-termcapobj = tparam.o ++termcapobj = terminfo.o + #endif /* LIBS_TERMCAP */ + #endif /* ! defined (TERMINFO) */ + +@@ -864,7 +868,7 @@ + duplicated symbols. If the standard libraries were compiled + with GCC, we might need gnulib again after them. */ + LIBES = $(LOADLIBES) $(LDLIBS) $(LIBX) LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \ +- LIBS_MULE LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR) ++ LIBS_XPG LIBS_MULE LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR) + + /* Enable recompilation of certain other files depending on system type. */ + diff --git a/japanese/emacs21-emcws/files/patch-cb b/japanese/emacs21-emcws/files/patch-cb new file mode 100644 index 0000000..28e6f9f --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-cb @@ -0,0 +1,34 @@ +--- src/s/freebsd.h.orig Tue Apr 13 03:22:12 1999 ++++ src/s/freebsd.h Sat Jul 24 01:30:10 1999 +@@ -45,6 +45,13 @@ + #define LIBS_SYSTEM -lutil + #define LIBS_TERMCAP -ltermcap + ++/* Use XPG4 Library for FreeBSD */ ++#if __FreeBSD_version >= 220000 ++#ifdef USE_XPG ++#define LIBS_XPG -lxpg4 ++#endif ++#endif ++ + #define SYSV_SYSTEM_DIR + + /* freebsd has POSIX-style pgrp behavior. */ +@@ -54,9 +61,16 @@ + #ifdef __ELF__ + + #define LD_SWITCH_SYSTEM ++ ++#ifdef __alpha__ ++#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crtbegin.o ++#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o ++#else + #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 ++#endif ++ ++#define UNEXEC unexelf.o + #undef LIB_GCC + #define LIB_GCC + diff --git a/japanese/emacs21-emcws/files/patch-cc b/japanese/emacs21-emcws/files/patch-cc new file mode 100644 index 0000000..8202cf7 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-cc @@ -0,0 +1,36 @@ +--- configure.in.orig Sat Mar 11 12:55:54 2000 ++++ configure.in Sat Mar 11 12:58:33 2000 +@@ -42,6 +42,9 @@ + AC_ARG_WITH(hesiod, + [ --with-hesiod support Hesiod to get the POP server host], + [AC_DEFINE(HESIOD)]) ++AC_ARG_WITH(xpg4, ++[ --with-xpg4 support XPG4 library on FreeBSD system], ++[AC_DEFINE(USE_XPG)]) + dnl + AC_ARG_WITH(wnn, + [ --with-wnn obsolete, same as --with-wnn4]) +@@ -179,6 +182,15 @@ + machine='' opsys='' unported=no + case "${canonical}" in + ++ ## FreeBSD ports ++ *-*-freebsd* ) ++ opsys=freebsd ++ case "${canonical}" in ++ alpha*-*-freebsd*) machine=alpha ;; ++ i[3456]86-*-freebsd*) machine=intel386 ;; ++ esac ++ ;; ++ + ## NetBSD ports + *-*-netbsd* ) + opsys=netbsd +@@ -985,7 +997,6 @@ + ;; + *-sysv4.2uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;; + *-386bsd* ) opsys=386bsd ;; +- *-freebsd* ) opsys=freebsd ;; + *-nextstep* ) opsys=nextstep ;; + ## Otherwise, we'll fall through to the generic opsys code at the bottom. + esac diff --git a/japanese/emacs21-emcws/files/patch-cd b/japanese/emacs21-emcws/files/patch-cd new file mode 100644 index 0000000..9792250 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-cd @@ -0,0 +1,12 @@ +--- src/config.in.orig Sat Nov 21 09:00:30 1998 ++++ src/config.in Sat Nov 21 09:00:58 1998 +@@ -118,6 +118,9 @@ + /* Define to support using a Hesiod database to find the POP server. */ + #undef HESIOD + ++/* Define to support using a XPG4 library on FreeBSD system. */ ++#undef USE_XPG ++ + /* Some things figured out by the configure script, grouped as they are in + configure.in. */ + #ifndef _ALL_SOURCE /* suppress warning if this is pre-defined */ diff --git a/japanese/emacs21-emcws/files/patch-cf b/japanese/emacs21-emcws/files/patch-cf new file mode 100644 index 0000000..d427361 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-cf @@ -0,0 +1,10 @@ +--- src/config.in.orig Sun Jul 16 13:11:42 2000 ++++ src/config.in Sun Jul 16 13:12:48 2000 +@@ -237,6 +237,7 @@ + #undef HAVE_GETCWD + #undef HAVE_SHUTDOWN + #undef HAVE_STRFTIME ++#undef HAVE_GETADDRINFO + #undef HAVE_GRANTPT + #undef HAVE_GETPT + diff --git a/japanese/emacs21-emcws/files/patch-cg b/japanese/emacs21-emcws/files/patch-cg new file mode 100644 index 0000000..1973aff --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-cg @@ -0,0 +1,149 @@ +--- src/process.c-dist Fri Aug 14 22:51:44 1998 ++++ src/process.c Fri Jul 30 12:21:11 1999 +@@ -1,7 +1,18 @@ ++/* ++ * Locally hacked process.c to add ipv6 support. -wsr ++ * ++ * The configure.in file should define "HAVE_GETADDRINFO" if it is found ++ * in libc. ++ * ++ */ ++ + /* Asynchronous subprocess control for GNU Emacs. + Copyright (C) 1985, 86, 87, 88, 93, 94, 95, 96, 1998 + Free Software Foundation, Inc. + ++ ipv6 changes are ++ Copyright (C) 1999 Wolfgang S. Rupprecht ++ + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify +@@ -1808,15 +1819,22 @@ + { + Lisp_Object proc; + register int i; ++ ++#ifndef HAVE_GETADDRINFO + struct sockaddr_in address; + struct servent *svc_info; + struct hostent *host_info_ptr, host_info; + char *(addr_list[2]); + IN_ADDR numeric_addr; +- int s, outch, inch; +- char errstring[80]; +- int port; + struct hostent host_info_fixed; ++ int port; ++#else /* HAVE_GETADDRINFO */ ++ struct addrinfo hints, *res, *lres; ++ int ret = 0; ++ int xerrno = 0; ++ char *portstring, portbuf [128]; ++#endif /* HAVE_GETADDRINFO */ ++ int s = -1, outch, inch; + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; + int retry = 0; + int count = specpdl_ptr - specpdl; +@@ -1829,6 +1847,22 @@ + GCPRO4 (name, buffer, host, service); + CHECK_STRING (name, 0); + CHECK_STRING (host, 0); ++ ++#ifdef HAVE_GETADDRINFO ++ /* ++ * caution: service can either be a string or int. ++ * Convert to a C string for later use by getaddrinfo. ++ */ ++ if (INTEGERP (service)) { ++ snprintf (portbuf, sizeof (portbuf), "%d", XINT (service)); ++ portstring = portbuf; ++ } ++ else ++ { ++ CHECK_STRING (service, 0); ++ portstring = XSTRING (service)->data; ++ } ++#else /* HAVE_GETADDRINFO */ + if (INTEGERP (service)) + port = htons ((unsigned short) XINT (service)); + else +@@ -1839,6 +1873,8 @@ + error ("Unknown service \"%s\"", XSTRING (service)->data); + port = svc_info->s_port; + } ++#endif /* HAVE_GETADDRINFO */ ++ + + /* Slow down polling to every ten seconds. + Some kernels have a bug which causes retrying connect to fail +@@ -1848,6 +1884,62 @@ + #endif + + #ifndef TERM ++#ifdef HAVE_GETADDRINFO /* We have a modern OS. -wsr */ ++ { ++ immediate_quit = 1; ++ QUIT; ++ memset(&hints, 0, sizeof(hints)); ++ hints.ai_flags = 0; ++ hints.ai_family = AF_UNSPEC; ++ hints.ai_socktype = SOCK_STREAM; ++ hints.ai_protocol = 0; ++ ret = getaddrinfo(XSTRING (host)->data, portstring, &hints, &res); ++ if (ret){ ++ error("%s/%s %s", XSTRING (host)->data, portstring, ++ gai_strerror(ret)); ++ } ++ immediate_quit = 0; ++ } ++ ++ for (lres = res; lres ; lres = lres->ai_next) { /* address loop */ ++ s = socket(lres->ai_family, lres->ai_socktype, lres->ai_protocol); ++ if (s < 0) ++ continue; ++ ++ /* Kernel bugs (on Ultrix at least) cause lossage (not just EINTR) ++ when connect is interrupted. So let's not let it get interrupted. ++ Note we do not turn off polling, because polling is only used ++ when not interrupt_input, and thus not normally used on the systems ++ which have this bug. On systems which use polling, there's no way ++ to quit if polling is turned off. */ ++ if (interrupt_input) ++ unrequest_sigio (); ++ ++ immediate_quit = 1; ++ QUIT; ++ ++ ret = connect(s, lres->ai_addr, lres->ai_addrlen); ++ if (ret){ ++ close(s); ++ s= -1; ++ continue; ++ } ++ ++ break; ++ } /* address loop */ ++ ++ freeaddrinfo(res); ++ if (s < 0) ++ { ++ if (interrupt_input) ++ request_sigio (); ++ ++ errno = xerrno; ++ report_file_error ("connection failed", ++ Fcons (host, Fcons (name, Qnil))); ++ } ++#else /* HAVE_GETADDRINFO */ ++ + while (1) + { + #ifdef TRY_AGAIN +@@ -1938,6 +2030,7 @@ + report_file_error ("connection failed", + Fcons (host, Fcons (name, Qnil))); + } ++#endif /* HAVE_GETADDRINFO */ + + immediate_quit = 0; diff --git a/japanese/emacs21-emcws/files/patch-ch b/japanese/emacs21-emcws/files/patch-ch new file mode 100644 index 0000000..4dd63d0 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-ch @@ -0,0 +1,11 @@ +--- configure.in-dist Tue Jun 30 15:15:05 1998 ++++ configure.in Wed Jul 28 10:38:16 1999 +@@ -1613,7 +1613,7 @@ + rename closedir mkdir rmdir sysinfo \ + random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \ + strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \ +-utimes setrlimit setpgid getcwd shutdown strftime) ++utimes setrlimit setpgid getcwd shutdown strftime getaddrinfo) + + # Check this now, so that we will NOT find the above functions in ncurses. + # That is because we have not set up to link ncurses in lib-src. diff --git a/japanese/emacs21-emcws/files/patch-da b/japanese/emacs21-emcws/files/patch-da new file mode 100644 index 0000000..63a79f7 --- /dev/null +++ b/japanese/emacs21-emcws/files/patch-da @@ -0,0 +1,33 @@ +--- configure.in.orig Tue Jun 26 11:38:25 2001 ++++ configure.in Tue Jun 26 11:39:29 2001 +@@ -35,7 +35,11 @@ + dnl A case that the LEIM package exists. + dnl + locallisppath='${datadir}/emacs/${version}-emcws/site-lisp:'\ +-'${datadir}/emacs/site-lisp:${datadir}/emacs/${version}-emcws/leim' ++'${datadir}/emacs/site-lisp:'\ ++'${datadir}/emacs/${version}-emcws/leim:'\ ++'${datadir}/emacs/${version}/site-lisp:'\ ++'${datadir}/emacs/${version}/leim:'\ ++'${datadir}/emacs/${version}/lisp'\ + echo + echo modifying leim/Makefile.in for emcws + mv leim/Makefile.in leim/Makefile.in.orig +@@ -49,12 +53,14 @@ + dnl A case that the LEIM package does not exist. + dnl + locallisppath='${datadir}/emacs/${version}-emcws/site-lisp:'\ +-'${datadir}/emacs/site-lisp' ++'${datadir}/emacs/site-lisp:'\ ++'${datadir}/emacs/${version}/site-lisp:'\ ++'${datadir}/emacs/${version}/lisp' + fi + + lisppath='${locallisppath}:${lispdir}' +-etcdir='${datadir}/emacs/${version}-emcws/etc' +-archlibdir='${libexecdir}/emacs/${version}-emcws/${configuration}' ++etcdir='${datadir}/emacs/${version}/etc' ++archlibdir='${libexecdir}/emacs/${version}/${configuration}' + docdir='${datadir}/emacs/${version}-emcws/etc' + + AC_ARG_WITH(gcc, diff --git a/japanese/emacs21-emcws/files/site-init.el.tmpl b/japanese/emacs21-emcws/files/site-init.el.tmpl new file mode 100644 index 0000000..364b9d3 --- /dev/null +++ b/japanese/emacs21-emcws/files/site-init.el.tmpl @@ -0,0 +1,10 @@ +;;; site-init.el -- site-dependent initialization file + +;; +;; Init file for FreeBSD port: emacs20-emcws +;; + +; change a default file name of the internal DOC-string. +(Snarf-documentation "%%DOC_FILE%%") + +;;; site-init.el ends here diff --git a/japanese/emacs21-emcws/pkg-comment b/japanese/emacs21-emcws/pkg-comment new file mode 100644 index 0000000..224dbff --- /dev/null +++ b/japanese/emacs21-emcws/pkg-comment @@ -0,0 +1 @@ +Emacs + Canna + Wnn + Sj3 diff --git a/japanese/emacs21-emcws/pkg-descr b/japanese/emacs21-emcws/pkg-descr new file mode 100644 index 0000000..58c2b6a --- /dev/null +++ b/japanese/emacs21-emcws/pkg-descr @@ -0,0 +1,5 @@ +Emcws stands for Emacs + Canna + Wnn + Sj3, +which is interim solutions to input 2 bytes chars by communicating with +Kana Kanji conversion server. + +WWW: ftp://ftp.ki.nu/pub/emcws/README.html diff --git a/japanese/emacs21-emcws/pkg-message b/japanese/emacs21-emcws/pkg-message new file mode 100644 index 0000000..70079d6 --- /dev/null +++ b/japanese/emacs21-emcws/pkg-message @@ -0,0 +1,14 @@ +**************************************************************************** + NOTE: Warning message about locale. + + This binary is not linked with libxpg4 shared library by default. + If your LANG environment variable has a value but "C", the following + warning message may be displayed: + + Warning: locale not supported by C library, locale unchanged + + If you complain about this message, type `make install WITH_XPG4=yes' + at the "${PORTSDIR}/japanese/emacs20-emcws" directory to re-make + this package. + +**************************************************************************** diff --git a/japanese/emacs21-emcws/pkg-plist b/japanese/emacs21-emcws/pkg-plist new file mode 100644 index 0000000..6f1a75c --- /dev/null +++ b/japanese/emacs21-emcws/pkg-plist @@ -0,0 +1,34 @@ +bin/emcws-%%EMACS_VER%% +bin/emcws +share/emacs/%%EMACS_VER%%-emcws/etc/%%DOC_FILE%% +share/emacs/%%EMACS_VER%%-emcws/lisp/busyu.el +share/emacs/%%EMACS_VER%%-emcws/lisp/can-n-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/canna.el +share/emacs/%%EMACS_VER%%-emcws/lisp/canna.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/egg-jsymbol.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg-keymap.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/egg.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-sj3 +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-v41 +share/emacs/%%EMACS_VER%%-emcws/lisp/eggrc-wnn +share/emacs/%%EMACS_VER%%-emcws/lisp/isearch-ext.el +share/emacs/%%EMACS_VER%%-emcws/lisp/isearch-ext.elc +share/emacs/%%EMACS_VER%%-emcws/lisp/its/han-kata.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/hankaku.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/hira.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/kanainput.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/kata.el +share/emacs/%%EMACS_VER%%-emcws/lisp/its/zenkaku.el +share/emacs/%%EMACS_VER%%-emcws/lisp/mule-inst.el +share/emacs/%%EMACS_VER%%-emcws/lisp/sj3-client.el +share/emacs/%%EMACS_VER%%-emcws/lisp/sj3-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-client.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-egg.el +share/emacs/%%EMACS_VER%%-emcws/lisp/wnn-egg.elc +share/emacs/%%EMACS_VER%%-emcws/site-lisp/subdirs.el +@dirrm share/emacs/%%EMACS_VER%%-emcws/lisp/its +@dirrm share/emacs/%%EMACS_VER%%-emcws/lisp +@dirrm share/emacs/%%EMACS_VER%%-emcws/site-lisp +@dirrm share/emacs/%%EMACS_VER%%-emcws/etc +@dirrm share/emacs/%%EMACS_VER%%-emcws diff --git a/japanese/emacs21-emcws/scripts/configure b/japanese/emacs21-emcws/scripts/configure new file mode 100644 index 0000000..f588d1f --- /dev/null +++ b/japanese/emacs21-emcws/scripts/configure @@ -0,0 +1,14 @@ +#! /bin/sh + +for f in site-init.el; do + ${SED} -e "s,%%DOC_FILE%%,${DOC_FILE},g" \ + < ${FILESDIR}/${f}.tmpl > ${WRKSRC}/lisp/${f} +done + +cd ${WRKSRC} + +if [ -f /usr/lib/aout/crt0.o -a ! -f /usr/lib/crt0.o ]; then + ${SED} -e "s|/usr/lib/crt0\.o|/usr/lib/aout/crt0.o|g" \ + src/s/freebsd.h > src/s/freebsd.h.new || exit + ${MV} -f src/s/freebsd.h.new src/s/freebsd.h +fi |