# HG changeset patch # User cvs # Date 1186993101 -7200 # Node ID e70b3a057e12314dfdcdc6581f10808d8e921784 # Parent cf2a77a48c1ca6e7993319fd8ebcd1ae2d264b4a Import from CVS: tag r20-5b22 diff -r cf2a77a48c1c -r e70b3a057e12 CHANGES-beta --- a/CHANGES-beta Mon Aug 13 10:17:55 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 10:18:21 2007 +0200 @@ -1,4 +1,8 @@ -*- indented-text -*- +to 20.5 beta22 "Grison's Striped" +-- Port to mklinux courtesy of Kaoru Fukui +-- Miscellaneous bug fixes + to 20.5 beta21 "Golden Guernsey" -- Package interface standard 1.0 -- Cygwin stuffs from Andy Piper diff -r cf2a77a48c1c -r e70b3a057e12 ChangeLog --- a/ChangeLog Mon Aug 13 10:17:55 2007 +0200 +++ b/ChangeLog Mon Aug 13 10:18:21 2007 +0200 @@ -1,3 +1,12 @@ +1998-01-27 SL Baur + + * XEmacs 20.5-beta22 is released. + +1998-01-26 SL Baur + + * etc/aliases.ksh: New file. Start tracking useful Maintainer + XEmacs commands. + 1998-01-25 SL Baur * XEmacs 20.5-beta21 is released. diff -r cf2a77a48c1c -r e70b3a057e12 etc/aliases.ksh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/aliases.ksh Mon Aug 13 10:18:21 2007 +0200 @@ -0,0 +1,35 @@ +### aliases.ksh --- Useful shortcuts for XEmacs source hackers + +# Copyright (C) 1998 Free Software Foundation, Inc. + +# Author: Steve Baur +# Keywords: internal + +# 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. + +# Shortcuts for sh-derived Unix shells (ksh, zsh, bash) + +function runtemacs +{ + if [ ! -x temacs ]; then + echo "Must be in temacs source directory to run temacs." + return 1; + fi + + ./temacs -batch -l loadup.el run-temacs "$@" +} diff -r cf2a77a48c1c -r e70b3a057e12 lisp/ChangeLog --- a/lisp/ChangeLog Mon Aug 13 10:17:55 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 10:18:21 2007 +0200 @@ -1,3 +1,16 @@ +1998-01-27 SL Baur + + * loadup.el (running-xemacs): Spelling fix. + +1998-01-26 Colin Rafferty + + * packages.el (packages-find-packages-1): Don't allow a backwards + compatible lisp tree to overwrite `preloaded-file-list'. + +1998-01-26 SL Baur + + * loadup.el: Don't delete "xemacs" prior to dumping. + 1998-01-24 SL Baur * package-info.el (pi-last-mod-date): New function. diff -r cf2a77a48c1c -r e70b3a057e12 lisp/auto-autoloads.el --- a/lisp/auto-autoloads.el Mon Aug 13 10:17:55 2007 +0200 +++ b/lisp/auto-autoloads.el Mon Aug 13 10:18:21 2007 +0200 @@ -1045,12 +1045,10 @@ ;;;*** -;;;### (autoloads (help-read-key) "help-macro" "lisp/help-macro.el") +;;;### (autoloads nil "help-macro" "lisp/help-macro.el") (defcustom three-step-help t "*Non-nil means give more info about Help command in three steps.\nThe three steps are simple prompt, prompt with all options,\nand window listing and describing the options.\nA value of nil means skip the middle step, so that\n\\[help-command] \\[help-command] gives the window that lists the options." :type 'boolean :group 'help-appearance) -(autoload 'help-read-key "help-macro" nil nil nil) - ;;;*** ;;;### (autoloads (hyper-apropos-popup-menu hyper-apropos-set-variable hyper-set-variable hyper-apropos-read-variable-symbol hyper-describe-function hyper-describe-variable hyper-describe-face hyper-describe-key-briefly hyper-describe-key hyper-apropos) "hyper-apropos" "lisp/hyper-apropos.el") diff -r cf2a77a48c1c -r e70b3a057e12 lisp/loadup.el --- a/lisp/loadup.el Mon Aug 13 10:17:55 2007 +0200 +++ b/lisp/loadup.el Mon Aug 13 10:18:21 2007 +0200 @@ -40,7 +40,7 @@ (define-function 'defalias 'define-function) (defvar running-xemacs t - "Non-nil when the current emacsen is XEmacs.") + "Non-nil when the current emacs is XEmacs.") (defvar preloaded-file-list nil "List of files preloaded into the XEmacs binary image.") @@ -182,7 +182,8 @@ ;; Dump into the name `xemacs' (only) (when (member "dump" command-line-args) (message "Dumping under the name xemacs") - (condition-case () (delete-file "xemacs") (file-error nil)) + ;; This is handled earlier in the build process. + ;; (condition-case () (delete-file "xemacs") (file-error nil)) (when (fboundp 'really-free) (really-free)) (dump-emacs "xemacs" "temacs") diff -r cf2a77a48c1c -r e70b3a057e12 lisp/packages.el --- a/lisp/packages.el Mon Aug 13 10:17:55 2007 +0200 +++ b/lisp/packages.el Mon Aug 13 10:18:21 2007 +0200 @@ -323,7 +323,8 @@ (if (and (running-temacs-p) (file-exists-p (concat dir "/dumped-lisp.el"))) (let (package-lisp) - (load (concat dir "/dumped-lisp.el")) + (let (preloaded-file-list) + (load (concat dir "/dumped-lisp.el"))) (if package-lisp (progn (if (boundp 'preloaded-file-list) diff -r cf2a77a48c1c -r e70b3a057e12 nt/config.h --- a/nt/config.h Mon Aug 13 10:17:55 2007 +0200 +++ b/nt/config.h Mon Aug 13 10:18:21 2007 +0200 @@ -125,6 +125,7 @@ /* Define HAVE_XLOCALE_H if X11/Xlocale.h is present. */ #define HAVE_XLOCALE_H +#define HAVE_UNIXOID_EVENT_LOOP #endif /* HAVE_X_WINDOWS */ @@ -133,7 +134,7 @@ #define HAVE_WINDOW_SYSTEM #endif -/* #define HAVE_UNIXOID_EVENT_LOOP removed -- kkm*/ + /* Define USER_FULL_NAME to return a string that is the user's full name. diff -r cf2a77a48c1c -r e70b3a057e12 nt/xemacs.mak --- a/nt/xemacs.mak Mon Aug 13 10:17:55 2007 +0200 +++ b/nt/xemacs.mak Mon Aug 13 10:18:21 2007 +0200 @@ -380,7 +380,6 @@ $(OUTDIR)\menubar-x.obj \ $(OUTDIR)\objects-x.obj \ $(OUTDIR)\redisplay-x.obj \ - $(OUTDIR)\scrollbar.obj \ $(OUTDIR)\scrollbar-x.obj \ $(OUTDIR)\xgccache.obj \ $(OUTDIR)\xmu.obj \ diff -r cf2a77a48c1c -r e70b3a057e12 src/ChangeLog --- a/src/ChangeLog Mon Aug 13 10:17:55 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 10:18:21 2007 +0200 @@ -1,3 +1,33 @@ +1998-01-27 SL Baur + + * m/powerpc.h: Isolate changes for mklinux from AIX. + +1998-01-27 Hrvoje Niksic + + * symbols.c (init_symbols_once_early): Decreased default size of + Vpure_uninterned_symbol_table to 50. + +1998-01-27 SL Baur + + * redisplay-x.c (x_output_string): Correction for handling underlined + fonts when XGetFontProperty fails. + From Chris Felaco + +1998-01-27 Kyle Jones + + * alloc.c (Fpurecopy): Store symbols that aren't + interned in Vobarray into Vpure_uninterned_symbol_table. + + * symbols.c (init_symbols_once_early): Initialize + Vpure_uninterned_symbol_table. + + * emacsfns.h: Declare Vpure_uninterned_symbol_table. + +1998-01-26 SL Baur + + * alloc.c (report_pure_usage): New macro PURESIZE_SLOP to allow + for extra pure space. + 1998-01-23 SL Baur * sound.c (Fplay_sound_file): Use NILP for comparison of diff -r cf2a77a48c1c -r e70b3a057e12 src/alloc.c --- a/src/alloc.c Mon Aug 13 10:17:55 2007 +0200 +++ b/src/alloc.c Mon Aug 13 10:18:21 2007 +0200 @@ -2783,7 +2783,32 @@ else if (FLOATP (obj)) return make_pure_float (float_data (XFLOAT (obj))); #endif /* LISP_FLOAT_TYPE */ - else if (!SYMBOLP (obj)) + else if (SYMBOLP (obj)) + { + /* + * Symbols can't be made pure (and thus read-only), + * because assigning to their function, value or plist + * slots would produced a SEGV in the dumped XEmacs. So + * we previously would just return the symbol unchanged. + * + * But purified aggregate objects like lists and vectors + * can contain uninterned symbols. If there are no + * other non-pure references to the symbol, then the + * symbol is not proteted from garabge colelction + * because the collector does not mark the contents of + * purified objects. So to protect the symbols, an impure + * reference has to be kept for each uninterned symbol + * that is referenced by a pure object. All such + * symbols are stored in the hashtable pointed to by + * Vpure_uninterened_symbol_table, which is itself + * staticpro'd. + */ + if (EQ (XSYMBOL (obj)->obarray, Vobarray)) + return obj; + Fputhash (obj, obj, Vpure_uninterned_symbol_table); + return obj; + } + else signal_simple_error ("Can't purecopy %S", obj); } } @@ -2831,7 +2856,11 @@ int lost = (get_PURESIZE() - pureptr) / 1024; char buf[200]; extern Lisp_Object Vemacs_beta_version; - int slop = NILP(Vemacs_beta_version) ? 512 : 4; + /* This used to be NILP(Vemacs_beta_version) ? 512 : 4; */ +#ifndef PURESIZE_SLOP +#define PURESIZE_SLOP 4 +#endif + int slop = PURESIZE_SLOP; sprintf (buf, "Purespace usage: %ld of %ld (%d%%", pureptr, (long) get_PURESIZE(), diff -r cf2a77a48c1c -r e70b3a057e12 src/emacsfns.h --- a/src/emacsfns.h Mon Aug 13 10:17:55 2007 +0200 +++ b/src/emacsfns.h Mon Aug 13 10:18:21 2007 +0200 @@ -1715,6 +1715,7 @@ /* Defined in symbols.c */ extern Lisp_Object Vobarray; +extern Lisp_Object Vpure_uninterned_symbol_table; Lisp_Object Fintern (Lisp_Object str, Lisp_Object obarray); Lisp_Object Fintern_soft (Lisp_Object str, Lisp_Object obarray); int hash_string (CONST Bufbyte *, Bytecount len); diff -r cf2a77a48c1c -r e70b3a057e12 src/m/powerpc.h --- a/src/m/powerpc.h Mon Aug 13 10:17:55 2007 +0200 +++ b/src/m/powerpc.h Mon Aug 13 10:18:21 2007 +0200 @@ -47,6 +47,7 @@ #define EXPLICIT_SIGN_EXTEND +#ifndef __linux__ /* Data type of load average, as read out of kmem. */ #define LOAD_AVE_TYPE long @@ -54,3 +55,110 @@ /* Convert that into an integer that is 100 for a load average of 1.0 */ #define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE) +#else /* mklinux */ +#if 0 +/* The following line tells the configuration script what sort of + operating system this machine is likely to run. + USUAL-OPSYS="linux" */ + +/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word + is the most significant byte. */ + +#define WORDS_BIG_ENDIAN +#endif + +/* Define NO_ARG_ARRAY if you cannot take the address of the first of a + * group of arguments and treat it as an array of the arguments. */ + +#define NO_ARG_ARRAY + +#if 0 +/* Now define a symbol for the cpu type, if your compiler + does not define it automatically. */ + +/* #define IBMR2AIX */ + +/* Use type int rather than a union, to represent Lisp_Object */ +/* This is desirable for most machines. */ + +/* #define NO_UNION_TYPE */ + +/* Define CANNOT_DUMP on machines where unexec does not work. + Then the function dump-emacs will not be defined + and temacs will do (load "loadup") automatically unless told otherwise. */ + +/* #define CANNOT_DUMP */ + +#define UNEXEC unexelf.o +#endif + +/* Define addresses, macros, change some setup for dump */ + +#define NO_REMAP + +#if 0 +#define TEXT_START 0x00001000 +#define TEXT_END 0 +#define DATA_START 0x01000000 +#define DATA_END 0 + +/* The data segment in this machine always starts at address 0x10000000. + An address of data cannot be stored correctly in a Lisp object; + we always lose the high bits. We must tell XPNTR to add them back. */ + +#define DATA_SEG_BITS 0x10000000 +#endif + +/* Use type int rather than a union, to represent Lisp_Object */ + +/* #define NO_UNION_TYPE */ + +#ifdef CANNOT_DUMP +/* Define shared memory segment symbols */ + +#define PURE_SEG_BITS 0x30000000 + +/* Use shared memory. */ +/* This is turned off because it does not always work. See etc/AIX.DUMP. */ +/* #define HAVE_SHM */ +#define SHMKEY 5305035 /* used for shared memory code segments */ +#endif /* CANNOT_DUMP */ + +#define N_BADMAG(x) BADMAG(x) +#define N_TXTOFF(x) A_TEXTPOS(x) +#define N_SYMOFF(x) A_SYMPOS(x) +/* #define A_TEXT_OFFSET(HDR) sizeof(HDR) */ +/* #define ADJUST_EXEC_HEADER \ + unexec_text_start += sizeof(hdr); \ + unexec_data_start = ohdr.a_dbase +*/ +#undef ADDR_CORRECT +#define ADDR_CORRECT(x) ((int)(x)) + +/* Define C_ALLOCA if this machine does not support a true alloca + and the one written in C should be used instead. + Define HAVE_ALLOCA to say that the system provides a properly + working alloca function and it should be used. + Define neither one if an assembler-language alloca + in the file alloca.s should be used. */ + +#define HAVE_ALLOCA + +/* Specify the font for X to use. + This used to be Rom14.500; that's nice on the X server shipped with + the RS/6000, but it's not available on other servers. */ +#define X_DEFAULT_FONT "fixed" + +/* Here override various assumptions in ymakefile */ + +#define START_FILES +/* #define HAVE_SYSVIPC */ +/* #define HAVE_GETWD */ + +/* Don't try to include sioctl.h or ptem.h. */ +#undef NEED_SIOCTL +#undef NEED_PTEM_H + +#define ORDINARY_LINK +#define LD_SWITCH_MACHINE -T ppc.ldscript +#endif diff -r cf2a77a48c1c -r e70b3a057e12 src/ppc.ldscript --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ppc.ldscript Mon Aug 13 10:18:21 2007 +0200 @@ -0,0 +1,127 @@ +OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", + "elf32-powerpc") +OUTPUT_ARCH(powerpc) +ENTRY(_start) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/ppc-linux-elf/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +PROVIDE (__stack = 0); +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x200000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rela.text : { *(.rela.text) } + .rela.data : { *(.rela.data) } + .rela.rodata : { *(.rela.rodata) } + .rela.got : { *(.rela.got) } + .rela.got1 : { *(.rela.got1) } + .rela.got2 : { *(.rela.got2) } + .rela.ctors : { *(.rela.ctors) } + .rela.dtors : { *(.rela.dtors) } + .rela.init : { *(.rela.init) } + .rela.fini : { *(.rela.fini) } + .rela.bss : { *(.rela.bss) } + .rela.plt : { *(.rela.plt) } + .rela.sdata : { *(.rela.sdata2) } + .rela.sbss : { *(.rela.sbss2) } + .rela.sdata2 : { *(.rela.sdata2) } + .rela.sbss2 : { *(.rela.sbss2) } + .text : + { + *(.text) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + } =0 + .init : { *(.init) } =0 + .fini : { *(.fini) } =0 + .rodata : { *(.rodata) } + .rodata1 : { *(.rodata1) } + _etext = .; + PROVIDE (etext = .); + .sdata2 : { *(.sdata2) } + .sbss2 : { *(.sbss2) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. It would + be more correct to do this: + . = ALIGN(0x40000) + (ALIGN(8) & (0x40000 - 1)); + The current expression does not correctly handle the case of a + text segment ending precisely at the end of a page; it causes the + data segment to skip a page. The above expression does not have + this problem, but it will currently (2/95) cause BFD to allocate + a single segment, combining both text and data, for this case. + This will prevent the text segment from being shared among + multiple executions of the program; I think that is more + important than losing a page of the virtual address space (note + that no actual memory is lost; the page which is skipped can not + be referenced). */ + . = ALIGN(8) + 0x40000; + .data : + { + *(.data) + CONSTRUCTORS + } + .data1 : { *(.data1) } + .got1 : { *(.got1) } + .plt : { *(.plt) } + .dynamic : { *(.dynamic) } + /* Put .ctors and .dtors next to the .got2 section, so that the pointers + get relocated with -mrelocatable. Also put in the .fixup pointers. + The current compiler no longer needs this, but keep it around for 2.7.2 */ + PROVIDE (_GOT2_START_ = .); + .got2 : { *(.got2) } + PROVIDE (__CTOR_LIST__ = .); + .ctors : { *(.ctors) } + PROVIDE (__CTOR_END__ = .); + PROVIDE (__DTOR_LIST__ = .); + .dtors : { *(.dtors) } + PROVIDE (__DTOR_END__ = .); + PROVIDE (_FIXUP_START_ = .); + .fixup : { *(.fixup) } + PROVIDE (_FIXUP_END_ = .); + PROVIDE (_GOT2_END_ = .); + PROVIDE (_GOT_START_ = .); + .got : { *(.got) } + .got.plt : { *(.got.plt) } + PROVIDE (_GOT_END_ = .); + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : { *(.sdata) } + _edata = .; + PROVIDE (edata = .); + .sbss : + { + } + .bss : + { + PROVIDE (__sbss_start = .); + *(.sbss) + *(.scommon) + PROVIDE (__sbss_end = .); + PROVIDE (__bss_start = .); + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); + /* These are needed for ELF backends which have not yet been + converted to the new style linker. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + /* DWARF debug sections. + Symbols in the .debug DWARF section are relative to the beginning of the + section so we begin .debug at 0. It's not clear yet what needs to happen + for the others. */ + .debug 0 : { *(.debug) } + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_sfnames 0 : { *(.debug_sfnames) } + .line 0 : { *(.line) } + /* These must appear regardless of . */ +} diff -r cf2a77a48c1c -r e70b3a057e12 src/redisplay-x.c --- a/src/redisplay-x.c Mon Aug 13 10:17:55 2007 +0200 +++ b/src/redisplay-x.c Mon Aug 13 10:18:21 2007 +0200 @@ -974,7 +974,7 @@ xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)); if (!XGetFontProperty (xfont, XA_UNDERLINE_POSITION, &upos)) - upos = 0; + upos = dl->descent / 2; if (!XGetFontProperty (xfont, XA_UNDERLINE_THICKNESS, &uthick)) uthick = 1; diff -r cf2a77a48c1c -r e70b3a057e12 src/symbols.c --- a/src/symbols.c Mon Aug 13 10:17:55 2007 +0200 +++ b/src/symbols.c Mon Aug 13 10:18:21 2007 +0200 @@ -57,6 +57,8 @@ #include "buffer.h" /* for Vbuffer_defaults */ #include "console.h" +#include "elhash.h" /* for HASHTABLE_NONWEAK and HASHTABLE_EQ */ + Lisp_Object Qad_advice_info, Qad_activate; Lisp_Object Qget_value, Qset_value, Qbound_predicate, Qmake_unbound; @@ -3133,9 +3135,16 @@ { { symbol_value_forward_lheader_initializer, 0, 69}, SYMVAL_UNBOUND_MARKER }; +Lisp_Object Vpure_uninterned_symbol_table; + void init_symbols_once_early (void) { + /* see comment in Fpurecopy() */ + Vpure_uninterned_symbol_table = + make_lisp_hashtable (50, HASHTABLE_NONWEAK, HASHTABLE_EQ); + staticpro(&Vpure_uninterned_symbol_table); + Qnil = Fmake_symbol (make_pure_pname ((CONST Bufbyte *) "nil", 3, 1)); /* Bootstrapping problem: Qnil isn't set when make_pure_pname is called the first time. */ diff -r cf2a77a48c1c -r e70b3a057e12 src/unexelf.c --- a/src/unexelf.c Mon Aug 13 10:17:55 2007 +0200 +++ b/src/unexelf.c Mon Aug 13 10:18:21 2007 +0200 @@ -799,9 +799,17 @@ /* Write out the sections. .data and .data1 (and data2, called ".data" in the strings table) get copied from the current process instead of the old file. */ +#ifdef __powerpc__ + /* The PowerPC has additional 'data' segments which need to be saved */ + if (!strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data") || + !strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data1") || + !strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".sdata") || + !strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".sdata1")) +#else if (!strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data") || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), ".data1")) +#endif src = (caddr_t) OLD_SECTION_H (n).sh_addr; else src = old_base + OLD_SECTION_H (n).sh_offset; @@ -864,9 +872,17 @@ be no harm in that provided that r_offset is always the first member. */ nn = section.sh_info; +#ifdef __powerpc__ + /* The PowerPC has additional 'data' segments which need to be saved */ + if (!strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data") || + !strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data1") || + !strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".sdata") || + !strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".sdata1")) +#else if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data") || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), ".data1")) +#endif { Elf32_Addr offset = NEW_SECTION_H (nn).sh_addr - NEW_SECTION_H (nn).sh_offset; diff -r cf2a77a48c1c -r e70b3a057e12 version.sh --- a/version.sh Mon Aug 13 10:17:55 2007 +0200 +++ b/version.sh Mon Aug 13 10:18:21 2007 +0200 @@ -1,5 +1,5 @@ #!/bin/sh emacs_major_version=20 emacs_minor_version=5 -emacs_beta_version=21 -xemacs_codename="Golden Guernsey" +emacs_beta_version=22 +xemacs_codename="Grison's Striped"