changeset 109531:1b2674e70efe

Merge from mainline.
author Katsumi Yamaoka <katsumi@flagship2>
date Sun, 25 Jul 2010 10:16:08 +0000
parents 4714f535e450 (current diff) 2fe88640ebd3 (diff)
children 45a355dbe7fc
files admin/nt/README.W32 admin/nt/makedist.bat nt/README.W32
diffstat 46 files changed, 649 insertions(+), 432 deletions(-) [+]
line wrap: on
line diff
--- a/.bzrignore	Sat Jul 24 12:18:05 2010 +0000
+++ b/.bzrignore	Sun Jul 25 10:16:08 2010 +0000
@@ -1,12 +1,13 @@
+./_dir-locals.el
 ./bin
 ./BIN
+./config.log
+./config.status
 ./data
 ./etc/icons
 ./lock
+./README.W32
 ./site-lisp
-./_dir-locals.el
-./config.log
-./config.status
 oo
 oo-spd
 *.dSYM
@@ -33,16 +34,16 @@
 leim/changed.misc
 leim/changed.tit
 lib-src/stamp-*
-lib-src/ctags.c
-lib-src/echolisp.tmp
-lib-src/getopt.h
 lib-src/b2m
 lib-src/ctags
+lib-src/ctags.c
 lib-src/digest-doc
 lib-src/ebrowse
+lib-src/echolisp.tmp
 lib-src/emacsclient
 lib-src/etags
 lib-src/fakemail
+lib-src/getopt.h
 lib-src/hexl
 lib-src/make-docfile
 lib-src/movemail
--- a/.gitignore	Sat Jul 24 12:18:05 2010 +0000
+++ b/.gitignore	Sun Jul 25 10:16:08 2010 +0000
@@ -1,6 +1,7 @@
 autom4te.cache
 makefile
 *~
+/README.W32
 
 /bin/
 /site-lisp/
--- a/ChangeLog	Sat Jul 24 12:18:05 2010 +0000
+++ b/ChangeLog	Sun Jul 25 10:16:08 2010 +0000
@@ -1,3 +1,11 @@
+2010-07-24  Ken Brown  <kbrown@cornell.edu>
+
+	* configure.in (LINKER, LIB_GCC): Remove cygwin special cases (Bug#6715)
+
+2010-07-24  Juanma Barranquero  <lekktu@gmail.com>
+
+	* .bzrignore, .gitignore: Ignore README.W32 on the root directory.
+
 2010-07-24  Ken Brown  <kbrown@cornell.edu>  (tiny change)
 
 	* configure.in (START_FILES) [cygwin]: Set to pre-crt0.o (Bug#6715).
--- a/admin/ChangeLog	Sat Jul 24 12:18:05 2010 +0000
+++ b/admin/ChangeLog	Sun Jul 25 10:16:08 2010 +0000
@@ -1,3 +1,10 @@
+2010-07-24  Christoph Scholtes  <cschol2112@gmail.com>
+
+	* admin.el: Write version number to nt/makefile.w32-in.
+	* nt/makedist.bat: Remove; replaced with `zipdist.bat'
+	in the nt/ directory.
+	* nt/README.W32: Relocate to nt/ directory.
+
 2010-07-11  Andreas Schwab  <schwab@linux-m68k.org>
 
 	* CPP-DEFINES (HAVE_INDEX, HAVE_RINDEX): Remove.
--- a/admin/admin.el	Sat Jul 24 12:18:05 2010 +0000
+++ b/admin/admin.el	Sun Jul 25 10:16:08 2010 +0000
@@ -95,6 +95,9 @@
   (set-version-in-file root "lib-src/makefile.w32-in" version
 		       (rx (and "VERSION" (0+ space) "=" (0+ space)
 				(submatch (1+ (in "0-9."))))))
+  (set-version-in-file root "nt/makefile.w32-in" version
+		       (rx (and "VERSION" (0+ space) "=" (0+ space)
+				(submatch (1+ (in "0-9."))))))
   ;; nt/emacs.rc also contains the version number, but in an awkward
   ;; format. It must contain four components, separated by commas, and
   ;; in two places those commas are followed by space, in two other
--- a/admin/nt/README.W32	Sat Jul 24 12:18:05 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-  Free Software Foundation, Inc.
-See the end of the file for license conditions.
-
-			   Emacs for Windows
-
-  This README file describes how to set up and run a precompiled
-  version of GNU Emacs for Windows.  This distribution can be found on
-  the ftp.gnu.org server and its mirrors:
-
-	ftp://ftp.gnu.org/gnu/emacs/windows/
-
-  This server contains other distributions, including the full Emacs
-  source distribution and a barebin distribution which can be installed
-  over it, as well as older releases of Emacs for Windows.
-
-  Answers to frequently asked questions, and further information about
-  this port of GNU Emacs and related software packages can be found via
-  http:
-
-	http://www.gnu.org/software/emacs/windows/
-
-* Preliminaries
-
-  Along with this file should be six subdirectories (bin, etc, info,
-  lisp, leim, site-lisp).  If you have downloaded the barebin
-  distribution, then it will contain only the bin directory and the
-  built in documentation in etc/DOC-X, the rest of the subdirectories
-  are in the src distribution, which the barebin distribution is
-  designed to be used with.
-
-* Setting up Emacs
-
-  To install Emacs, simply unpack all the files into a directory of
-  your choice, but note that you might encounter minor problems if
-  there is a space anywhere in the directory name.  To complete the
-  installation process, you can optionally run the program addpm.exe
-  in the bin subdirectory.  This will put an icon for Emacs in the
-  Start Menu under "Start -> Programs -> Gnu Emacs".
-
-  Some users have reported that the Start Menu item is not created for
-  them.  If this happens, just create your own shortcut to runemacs.exe,
-  eg. by dragging it on to the desktop or the Start button.
-
-  Note that running addpm is now an optional step; Emacs is able to
-  locate all of its files without needing any information to be set in
-  the environment or the registry, although such settings will still
-  be obeyed if present.  This is convenient for running Emacs on a
-  machine which disallows registry changes, or on which software
-  should not be installed.  For instance, you can now run Emacs
-  directly from a CD or USB flash drive without copying or installing
-  anything on the machine itself.
-
-* Starting Emacs
-
-  To run Emacs, simply select Emacs from the Start Menu, or invoke
-  runemacs.exe directly from Explorer or from a command prompt.  This
-  will start Emacs in its default GUI mode, ready to use.  If you have
-  never used Emacs before, you should follow the tutorial at this
-  point (select Emacs Tutorial from the Help menu), since Emacs is
-  quite different from ordinary Windows applications in many respects.
-
-  If you want to use Emacs in tty or character mode within a command
-  window, you can start it by typing "emacs -nw" at the command prompt.
-  (Obviously, you need to ensure that the Emacs bin subdirectory is in
-  your PATH first, or specify the path to emacs.exe.)  The -nw
-  (non-windowed) mode of operation is most useful if you have a telnet
-  server on your machine, allowing you to run Emacs remotely.
-
-* EXE files included
-
-  Emacs comes with the following executable files in the bin directory.
-
-  + emacs.exe - The main Emacs executable.  As this is designed to run
-    as both a text-mode application (emacs -nw) and as a GUI application,
-    it will pop up a command prompt window if run directly from Explorer.
-
-  + runemacs.exe - A wrapper for running Emacs as a GUI application
-    without popping up a command prompt window.
-
-  + emacsclient.exe - A command-line client program that can
-    communicate with a running Emacs process.  See the `Emacs Server'
-    node of the Emacs manual.
-
-  + emacsclientw.exe - A version of emacsclient that does not open
-    a command-line window.
-
-  + addpm.exe - A basic installer that creates Start Menu icons for Emacs.
-    Running this is optional.
-
-  + cmdproxy.exe - Used internally by Emacs to work around problems with
-    the native shells in various versions of Windows.
-
-  + ctags.exe, etags.exe - Tools for generating tag files.  See the
-    `Tags' node of the Emacs manual.
-
-  + ebrowse.exe - A tool for generating C++ browse information.  See the
-    `Ebrowse' manual.
-
-  + ddeclient.exe - A tool for interacting with DDE servers.
-
-  + hexl.exe - A tool for converting files to hex dumps.  See the
-    `Editing Binary Files' node of the Emacs manual.
-
-  + movemail.exe - A helper application for safely moving mail from
-    a mail spool or POP server to a local user mailbox.  See the
-    `Movemail' node of the Emacs manual.
-
-  + digest-doc.exe, sorted-doc.exe - Tools for rebuilding the
-    built-in documentation.
-
-* Image support
-
-  Emacs has built in support for XBM and PPM/PGM/PBM images, and the
-  libXpm library is bundled, providing XPM support (required for color
-  toolbar icons and splash screen).  Source for libXpm should be available
-  on the same place as you got this binary distribution from.  The version
-  of libXpm bundled with this version of Emacs is 3.5.7, based on x.org's
-  libXpm library from X11R7.3.
-
-  Emacs can also support some other image formats with appropriate
-  libraries.  These libraries are all available as part of GTK, or from
-  gnuwin32.sourceforge.net.  Emacs will find them if the directory they
-  are installed in is on the PATH.
-
-      PNG: requires the PNG reference library 1.2 or later, which will
-      be named libpng13d.dll, libpng13.dll, libpng12d.dll, libpng12.dll
-      or libpng.dll.  LibPNG requires zlib, which should come from the same
-      source as you got libpng.
-
-      JPEG: requires the Independant JPEG Group's libjpeg 6b or later,
-      which will be called jpeg62.dll, libjpeg.dll, jpeg-62.dll or jpeg.dll.
-
-      TIFF: requires libTIFF 3.0 or later, which will be called libtiff3.dll
-      or libtiff.dll.
-
-      GIF: requires libungif or giflib 4.1 or later, which will be
-      called giflib4.dll, libungif4.dll or libungif.dll.
-
-   In addition, Emacs can be compiled to support SVG.  This precompiled
-   distribution has not been compiled that way, since the SVG library
-   or one or more of its extensive dependencies appear to be
-   unreliable under Windows.  See nt/INSTALL in the src distribution if
-   you wish to compile Emacs with SVG support.
-
-* Uninstalling Emacs
-
-  If you should need to uninstall Emacs, simply delete all the files
-  and subdirectories from the directory where it was unpacked (Emacs
-  does not install or update any files in system directories or
-  anywhere else).  If you ran the addpm.exe program to create the
-  registry entries and the Start menu icon, then you can remove the
-  registry entries using regedit.  All of the settings are written
-  under the Software\GNU\Emacs key in HKEY_LOCAL_MACHINE, or if you
-  didn't have administrator privileges when you installed, the same
-  key in HKEY_CURRENT_USER.  Just delete the whole Software\GNU\Emacs
-  key.
-
-  The Start menu entry can be removed by right-clicking on the Task bar
-  and selecting Properties, then using the Remove option on the Start
-  Menu Programs page.  (If you installed under an account with
-  administrator privileges, then you need to click the Advanced button
-  and look for the Gnu Emacs menu item under All Users.)
-
-* Troubleshooting
-
-  Unpacking the distributions
-
-  If you encounter trouble trying to run Emacs, there are a number of
-  possible causes.  Check the following for indications that the
-  distribution was not corrupted by the tools used to unpack it:
-
-    * Be sure to disable CR/LF translation or the executables will
-      be unusable.  Older versions of WinZipNT would enable this
-      translation by default.  If you are using WinZipNT, disable it.
-      (I don't have WinZipNT myself, and I do not know the specific
-      commands necessary to disable it.)
-
-    * Check that filenames were not truncated to 8.3.  For example,
-      there should be a file lisp\abbrevlist.elc; if this has been
-      truncated to abbrevli.elc, your distribution has been corrupted
-      while unpacking and Emacs will not start.
-
-  If you believe you have unpacked the distributions correctly and are
-  still encountering problems, see the section on Further Information
-  below.
-
-  Virus scanners
-
-  Some virus scanners interfere with Emacs' use of subprocesses.  If you
-  are unable to use subprocesses and you use Dr. Solomon's WinGuard or
-  McAfee's Vshield, turn off "Scan all files" (WinGuard) or "boot sector
-  scanning" (McAfee exclusion properties).
-
-* Further information
-
-  If you have access to the World Wide Web, I would recommend pointing
-  your favorite web browser to the following document (if you haven't
-  already):
-
-	http://www.gnu.org/software/emacs/windows/
-
-  This document serves as an FAQ and a source for further information
-  about the Windows port and related software packages.
-
-  In addition to the FAQ, there is a mailing list for discussing issues
-  related to the Windows port of Emacs.  For information about the
-  list, see this Web page:
-
-	http://lists.gnu.org/mailman/listinfo/help-emacs-windows
-
-  To ask questions on the mailing list, send email to
-  help-emacs-windows@gnu.org.  (You don't need to subscribe for that.)
-  To subscribe to the list or unsubscribe from it, fill the form you
-  find at http://lists.gnu.org/mailman/listinfo/help-emacs-windows as
-  explained there.
-
-  Another valuable source of information and help which should not be
-  overlooked is the various Usenet news groups dedicated to Emacs.
-  These are particularly good for help with general issues which aren't
-  specific to the Windows port of Emacs.  The main news groups to use
-  for seeking help are:
-
-	gnu.emacs.help
-	comp.emacs
-
-  There are also fairly regular postings and announcements of new or
-  updated Emacs packages on this group:
-
-	gnu.emacs.sources
-
-* Reporting bugs
-
-  If you encounter a bug in this port of Emacs, we would like to hear
-  about it.  First check the FAQ on the web page above to see if the bug
-  is already known and if there are any workarounds.  Then check whether
-  the bug has something to do with code in your .emacs file, e.g. by
-  invoking Emacs with the "-Q" option.
-
-  If you decide that it is a bug in Emacs, use the built in bug
-  reporting facility to report it (from the menu; Help -> Send Bug Report).
-  If you have not yet configured Emacs for mail, then when you press
-  C-c C-c to send the report, it will ask you to paste the text of the
-  report into your mail client.  If the bug is related to subprocesses,
-  also specify which shell you are using (e.g., include the values of
-  `shell-file-name' and `explicit-shell-file-name' in your message).
-
-  Enjoy!
-
-
-This file is part of GNU Emacs.
-
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
--- a/admin/nt/makedist.bat	Sat Jul 24 12:18:05 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-@echo off
-
-rem Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-rem   Free Software Foundation, Inc.
-
-rem Cannot use brackets in andrewi's email below because
-rem older Windows shells will treat that as redirection.
-
-rem Author: Andrew Innes andrewi@gnu.org
-
-rem This file is part of GNU Emacs.
-
-rem GNU Emacs is free software: you can redistribute it and/or modify
-rem it under the terms of the GNU General Public License as published by
-rem the Free Software Foundation, either version 3 of the License, or
-rem (at your option) any later version.
-
-rem GNU Emacs is distributed in the hope that it will be useful,
-rem but WITHOUT ANY WARRANTY; without even the implied warranty of
-rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-rem GNU General Public License for more details.
-
-rem You should have received a copy of the GNU General Public License
-rem along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.
-
-
-if (%3) == () goto usage
-if not (%4) == () goto %4
-
-:bin
-
-echo Create full bin distribution
-copy %3\README.W32 emacs-%1\README.W32
-rem Info-ZIP zip seems to be broken on Windows.
-rem It always writes to zip.zip and treats the zipfile argument as one
-rem of the files to go in it.
-rem zip -9 -r %2-bin-i386 emacs-%1/BUGS emacs-%1/COPYING emacs-%1/README emacs-%1/README.W32 emacs-%1/INSTALL emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim -x emacs.mdp *.pdb *.opt *~ CVS
-7z a -tZIP -mx=9 -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory %2-bin-i386.zip emacs-%1/BUGS emacs-%1/COPYING emacs-%1/README emacs-%1/README.W32 emacs-%1/INSTALL emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim emacs-%1/site-lisp
-del emacs-%1\README.W32
-if not (%4) == () goto end
-
-:barebin
-echo Create archive with just the basic binaries and generated files
-echo (the user needs to unpack the full source distribution for
-echo  everything else)
-copy %3\README.W32 emacs-%1\README.W32
-rem Info-ZIP zip seems to be broken on Windows.
-rem It always writes to zip.zip and treats the zipfile argument as one
-rem of the files to go in it.
-rem zip -9 -r %2-barebin-i386.zip emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc/DOC-X emacs-%1/COPYING
-7z a -tZIP -mx=9 %2-barebin-i386.zip emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc/DOC-X emacs-%1/COPYING
-del emacs-%1\README.W32
-if not (%4) == () goto end
-
-goto end
-
-:usage
-echo Generate source and binary distributions of emacs.
-echo Usage: %0 emacs-version dist-basename distfiles [bin,barebin]
-echo   (e.g., %0 19.34 emacs-19.34.5 d:\andrewi\distfiles)
-:end
-
-goto skipArchTag
-   arch-tag: 6e2ddd92-c1c9-4992-b6b5-207aaab72f68
-:skipArchTag
--- a/configure	Sat Jul 24 12:18:05 2010 +0000
+++ b/configure	Sun Jul 25 10:16:08 2010 +0000
@@ -14149,9 +14149,7 @@
 ORDINARY_LINK=
 case "$opsys" in
   ## gnu: GNU needs its own crt0.
-  aix4-2|darwin|gnu|usg5-4|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
-
-  cygwin) LINKER="\$(CC)" ;;
+  aix4-2|cygwin|darwin|gnu|usg5-4|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
 
   ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
   ## library search parth, i.e. it won't search /usr/lib for libc and
@@ -14206,8 +14204,7 @@
 if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
 
   case "$opsys" in
-    ## cygwin: don't link against static libgcc.
-    cygwin|freebsd|netbsd|openbsd) LIB_GCC= ;;
+    freebsd|netbsd|openbsd) LIB_GCC= ;;
 
     gnu-*)
       ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
--- a/configure.in	Sat Jul 24 12:18:05 2010 +0000
+++ b/configure.in	Sun Jul 25 10:16:08 2010 +0000
@@ -3326,9 +3326,7 @@
 ORDINARY_LINK=
 case "$opsys" in
   ## gnu: GNU needs its own crt0.
-  aix4-2|darwin|gnu|usg5-4|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
-
-  cygwin) LINKER="\$(CC)" ;;
+  aix4-2|cygwin|darwin|gnu|usg5-4|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
 
   ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
   ## library search parth, i.e. it won't search /usr/lib for libc and
@@ -3381,8 +3379,7 @@
 if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
 
   case "$opsys" in
-    ## cygwin: don't link against static libgcc.
-    cygwin|freebsd|netbsd|openbsd) LIB_GCC= ;;
+    freebsd|netbsd|openbsd) LIB_GCC= ;;
 
     gnu-*)
       ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
--- a/etc/ChangeLog	Sat Jul 24 12:18:05 2010 +0000
+++ b/etc/ChangeLog	Sun Jul 25 10:16:08 2010 +0000
@@ -1,3 +1,8 @@
+2010-07-24  Christoph Scholtes  <cschol2112@gmail.com>
+
+	* NEWS: Document new --distfiles configure.bat option and
+	`dist' make target on Windows.
+
 2010-07-20  Juanma Barranquero  <lekktu@gmail.com>
 
 	* PROBLEMS: Add note about use of backslashes in Windows paths.
--- a/etc/NEWS	Sat Jul 24 12:18:05 2010 +0000
+++ b/etc/NEWS	Sun Jul 25 10:16:08 2010 +0000
@@ -432,6 +432,12 @@
 ** New configure.bat option --enable-checking builds emacs with extra
 runtime checks.
 
+** New configure.bat option --distfiles to specify files to be
+   included in binary distribution
+
+** New make target `dist' to create binary disttribution for Windows
+   platform
+
 
 ----------------------------------------------------------------------
 This file is part of GNU Emacs.
--- a/lib-src/ChangeLog	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/ChangeLog	Sun Jul 25 10:16:08 2010 +0000
@@ -1,3 +1,26 @@
+2010-07-25  Juanma Barranquero  <lekktu@gmail.com>
+
+	* emacsclient.c (getcwd): Fix previous change: make getcwd
+	conditional on HAVE_GETCWD and declare with the correct POSIX
+	profile (for some reason MinGW headers define its 2nd arg as int,
+	not size_t; but getcwd is not used on Windows nonetheless).
+
+2010-07-25  Juanma Barranquero  <lekktu@gmail.com>
+
+	* emacsclient.c (getcwd, w32_getenv):
+	* ntlib.h (getlogin, getuid, getegid, getgid): Fix prototypes.
+
+2010-07-24  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* update-game-score.c (usage):  Add NO_RETURN specifier.
+	* movemail.c (fatal, pfatal_with_name, pfatal_and_delete):
+	* make-docfile.c (fatal):
+	* hexl.c (usage):
+	* fakemail.c (fatal):
+	* etags.c (fatal, suggest_asking_for_help, pfatal):
+	* emacsclient.c (fatal):
+	* b2m.c (fatal): Likewise.
+
 2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 
 	* make-docfile.c (write_c_args): Correctly handle prefixes of "defalt".
--- a/lib-src/b2m.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/b2m.c	Sun Jul 25 10:16:08 2010 +0000
@@ -70,7 +70,7 @@
 long *xrealloc (char *ptr, unsigned int size);
 char *concat (char *s1, char *s2, char *s3);
 long readline (struct linebuffer *linebuffer, register FILE *stream);
-void fatal (char *message);
+void fatal (char *message) NO_RETURN;
 
 /*
  * xnew -- allocate storage.  SYNOPSIS: Type *xnew (int n, Type);
--- a/lib-src/emacsclient.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/emacsclient.c	Sun Jul 25 10:16:08 2010 +0000
@@ -82,10 +82,12 @@
 
 
 char *getenv (const char *), *getwd (char *);
-char *(getcwd) ();
+#ifdef HAVE_GETCWD
+char *(getcwd) (char *, size_t);
+#endif
 
 #ifdef WINDOWSNT
-char *w32_getenv ();
+char *w32_getenv (char *);
 #define egetenv(VAR) w32_getenv(VAR)
 #else
 #define egetenv(VAR) getenv(VAR)
@@ -158,6 +160,8 @@
 int emacs_pid = 0;
 
 void print_help_and_exit (void) NO_RETURN;
+void fail (void) NO_RETURN;
+
 
 struct option longopts[] =
 {
@@ -400,7 +404,7 @@
   /* On Windows 7 and later, we need to set the user model ID
      to associate emacsclient launched files with Emacs frames
      in the UI.  */
-  shell = LoadLibrary("shell32.dll");
+  shell = LoadLibrary ("shell32.dll");
   if (shell)
     {
       set_user_model
@@ -430,7 +434,7 @@
          nonconsole apps.  Testing for the console title seems to work. */
       window_app = (GetConsoleTitleA (szTitle, MAX_PATH) == 0);
       if (window_app)
-        InitCommonControls();
+        InitCommonControls ();
     }
 
   return window_app;
@@ -481,7 +485,7 @@
 void
 message (int is_error, char *message, ...)
 {
-  char msg [2048];
+  char msg[2048];
   va_list args;
 
   va_start (args, message);
@@ -1468,7 +1472,7 @@
       pid_t w;
       w = waitpid (dpid, &status, WUNTRACED | WCONTINUED);
 
-      if ((w == -1) || !WIFEXITED (status) || WEXITSTATUS(status))
+      if ((w == -1) || !WIFEXITED (status) || WEXITSTATUS (status))
 	{
 	  message (TRUE, "Error: Could not start the Emacs daemon\n");
 	  exit (EXIT_FAILURE);
--- a/lib-src/etags.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/etags.c	Sun Jul 25 10:16:08 2010 +0000
@@ -406,9 +406,9 @@
 static void free_regexps (void);
 static void regex_tag_multiline (void);
 static void error (const char *, const char *);
-static void suggest_asking_for_help (void);
-void fatal (char *, char *);
-static void pfatal (char *);
+static void suggest_asking_for_help (void) NO_RETURN;
+void fatal (char *, char *) NO_RETURN;
+static void pfatal (char *) NO_RETURN;
 static void add_node (node *, node **);
 
 static void init (void);
--- a/lib-src/fakemail.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/fakemail.c	Sun Jul 25 10:16:08 2010 +0000
@@ -147,6 +147,8 @@
 static stream_list the_streams;
 static boolean no_problems = true;
 
+static void fatal (char *s1) NO_RETURN;
+
 extern FILE *popen (const char *, const char *);
 extern int fclose (FILE *), pclose (FILE *);
 
--- a/lib-src/hexl.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/hexl.c	Sun Jul 25 10:16:08 2010 +0000
@@ -49,7 +49,7 @@
 int group_by = DEFAULT_GROUPING;
 char *progname;
 
-void usage(void);
+void usage(void) NO_RETURN;
 
 int
 main (int argc, char **argv)
--- a/lib-src/make-docfile.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/make-docfile.c	Sun Jul 25 10:16:08 2010 +0000
@@ -70,6 +70,7 @@
 int scan_file (char *filename);
 int scan_lisp_file (char *filename, char *mode);
 int scan_c_file (char *filename, char *mode);
+void fatal (char *s1, char *s2) NO_RETURN;
 
 #ifdef MSDOS
 /* s/msdos.h defines this as sys_chdir, but we're not linking with the
--- a/lib-src/movemail.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/movemail.c	Sun Jul 25 10:16:08 2010 +0000
@@ -147,10 +147,10 @@
 char *strerror (int);
 #endif
 
-static void fatal (char *s1, char *s2, char *s3);
+static void fatal (char *s1, char *s2, char *s3) NO_RETURN;
 static void error (char *s1, char *s2, char *s3);
-static void pfatal_with_name (char *name);
-static void pfatal_and_delete (char *name);
+static void pfatal_with_name (char *name) NO_RETURN;
+static void pfatal_and_delete (char *name) NO_RETURN;
 static char *concat (char *s1, char *s2, char *s3);
 static long *xmalloc (unsigned int size);
 #ifdef MAIL_USE_POP
--- a/lib-src/ntlib.h	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/ntlib.h	Sun Jul 25 10:16:08 2010 +0000
@@ -30,14 +30,14 @@
 #ifdef sleep
 #undef sleep
 #endif
-void sleep(unsigned long seconds);
+void sleep (unsigned long seconds);
 char *getwd (char *dir);
-int getppid(void);
-char * getlogin ();
+int getppid (void);
+char * getlogin (void);
 char * cuserid (char * s);
-unsigned getuid ();
-unsigned getegid ();
-unsigned getgid ();
+unsigned getuid (void);
+unsigned getegid (void);
+unsigned getgid (void);
 int setuid (unsigned uid);
 int setegid (unsigned gid);
 char * getpass (const char * prompt);
--- a/lib-src/update-game-score.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/lib-src/update-game-score.c	Sun Jul 25 10:16:08 2010 +0000
@@ -60,6 +60,8 @@
 extern char *optarg;
 extern int optind, opterr;
 
+int usage (int err) NO_RETURN;
+
 #define MAX_ATTEMPTS 5
 #define MAX_SCORES 200
 #define MAX_DATA_LEN 1024
--- a/nt/ChangeLog	Sat Jul 24 12:18:05 2010 +0000
+++ b/nt/ChangeLog	Sun Jul 25 10:16:08 2010 +0000
@@ -1,3 +1,30 @@
+2010-07-25  Christoph Scholtes  <cschol2112@gmail.com>
+
+	Build binary distros on Windows using emacs-VERSION as root dir name.
+
+	* makefile.w32-in: Copy README.W32 to installation directory
+	during `make install'.  Remove README.W32 with `distclean' (in
+	case Emacs was installed in place).  Use temporary directory to
+	create distribution zip files in `dist' target.
+	* zipdist.bat: Simplify code using temporary directory.
+
+2010-07-25  Juanma Barranquero  <lekktu@gmail.com>
+
+	* runemacs.c (set_user_model_id): Fix prototype.
+
+2010-07-24  Christoph Scholtes  <cschol2112@gmail.com>
+
+	New make target for Windows platform: make dist (bug#6602)
+
+	* INSTALL: Document new dist target and add section about
+	creating binary distributions.
+	* README.W32: Relocate from admin/nt/ directory.
+	* configure.bat: New parameter `--distfiles'.
+	* makefile.w32-in: Add version number, new target `dist'.
+	Add new target `install-shortcuts'.
+	* zipdist.bat: New file; create zipped binary distribution,
+	replaces admin/nt/makedist.bat.
+
 2010-07-21  Juanma Barranquero  <lekktu@gmail.com>
 
 	* INSTALL: Add note about backslashes in Windows paths.
--- a/nt/INSTALL	Sat Jul 24 12:18:05 2010 +0000
+++ b/nt/INSTALL	Sun Jul 25 10:16:08 2010 +0000
@@ -406,6 +406,9 @@
   Removes the installed files in the bin subdirectory in addition to
   the files removed by make cleanall.
 
+  make dist
+  Builds Emacs from the available sources and pre-compiled lisp files.
+  Packages Emacs binaries as full distribution and barebin distribution.
 
   The following targets are intended only for use with the Bazaar sources.
 
@@ -428,6 +431,32 @@
   bootstrap to rebuild.  Occasionally it may be necessary to run this
   target after an update.
 
+* Creating binary distributions
+
+  Binary distributions (full and barebin distributions) can be
+  automatically built and packaged from source tarballs or a bzr
+  checkout.
+
+  When building Emacs binary distributions, the --distfiles argument
+  to configure.bat specifies files to be included in the bin directory
+  of the binary distributions. This is intended for libraries that are
+  not built as part of Emacs, e.g. image libraries.
+
+  For example, specifying
+
+	--distfiles D:\distfiles\libXpm.dll
+
+  results in libXpm.dll being copied from D:\distfiles to the
+  bin directory before packaging starts.
+
+  Multiple files can be specified using multiple --distfiles arguments:
+
+	--distfiles D:\distfiles\libXpm.dll --distfiles C:\jpeglib\jpeg.dll
+
+  For packaging the binary distributions, the 'dist' make target uses
+  7-Zip (http://www.7-zip.org), which must be installed and available
+  on the Windows Path.
+
 
 * Trouble-shooting
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/README.W32	Sun Jul 25 10:16:08 2010 +0000
@@ -0,0 +1,264 @@
+Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+  Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+			   Emacs for Windows
+
+  This README file describes how to set up and run a precompiled
+  version of GNU Emacs for Windows.  This distribution can be found on
+  the ftp.gnu.org server and its mirrors:
+
+	ftp://ftp.gnu.org/gnu/emacs/windows/
+
+  This server contains other distributions, including the full Emacs
+  source distribution and a barebin distribution which can be installed
+  over it, as well as older releases of Emacs for Windows.
+
+  Answers to frequently asked questions, and further information about
+  this port of GNU Emacs and related software packages can be found via
+  http:
+
+	http://www.gnu.org/software/emacs/windows/
+
+* Preliminaries
+
+  Along with this file should be six subdirectories (bin, etc, info,
+  lisp, leim, site-lisp).  If you have downloaded the barebin
+  distribution, then it will contain only the bin directory and the
+  built in documentation in etc/DOC-X, the rest of the subdirectories
+  are in the src distribution, which the barebin distribution is
+  designed to be used with.
+
+* Setting up Emacs
+
+  To install Emacs, simply unpack all the files into a directory of
+  your choice, but note that you might encounter minor problems if
+  there is a space anywhere in the directory name.  To complete the
+  installation process, you can optionally run the program addpm.exe
+  in the bin subdirectory.  This will put an icon for Emacs in the
+  Start Menu under "Start -> Programs -> Gnu Emacs".
+
+  Some users have reported that the Start Menu item is not created for
+  them.  If this happens, just create your own shortcut to runemacs.exe,
+  eg. by dragging it on to the desktop or the Start button.
+
+  Note that running addpm is now an optional step; Emacs is able to
+  locate all of its files without needing any information to be set in
+  the environment or the registry, although such settings will still
+  be obeyed if present.  This is convenient for running Emacs on a
+  machine which disallows registry changes, or on which software
+  should not be installed.  For instance, you can now run Emacs
+  directly from a CD or USB flash drive without copying or installing
+  anything on the machine itself.
+
+* Starting Emacs
+
+  To run Emacs, simply select Emacs from the Start Menu, or invoke
+  runemacs.exe directly from Explorer or from a command prompt.  This
+  will start Emacs in its default GUI mode, ready to use.  If you have
+  never used Emacs before, you should follow the tutorial at this
+  point (select Emacs Tutorial from the Help menu), since Emacs is
+  quite different from ordinary Windows applications in many respects.
+
+  If you want to use Emacs in tty or character mode within a command
+  window, you can start it by typing "emacs -nw" at the command prompt.
+  (Obviously, you need to ensure that the Emacs bin subdirectory is in
+  your PATH first, or specify the path to emacs.exe.)  The -nw
+  (non-windowed) mode of operation is most useful if you have a telnet
+  server on your machine, allowing you to run Emacs remotely.
+
+* EXE files included
+
+  Emacs comes with the following executable files in the bin directory.
+
+  + emacs.exe - The main Emacs executable.  As this is designed to run
+    as both a text-mode application (emacs -nw) and as a GUI application,
+    it will pop up a command prompt window if run directly from Explorer.
+
+  + runemacs.exe - A wrapper for running Emacs as a GUI application
+    without popping up a command prompt window.
+
+  + emacsclient.exe - A command-line client program that can
+    communicate with a running Emacs process.  See the `Emacs Server'
+    node of the Emacs manual.
+
+  + emacsclientw.exe - A version of emacsclient that does not open
+    a command-line window.
+
+  + addpm.exe - A basic installer that creates Start Menu icons for Emacs.
+    Running this is optional.
+
+  + cmdproxy.exe - Used internally by Emacs to work around problems with
+    the native shells in various versions of Windows.
+
+  + ctags.exe, etags.exe - Tools for generating tag files.  See the
+    `Tags' node of the Emacs manual.
+
+  + ebrowse.exe - A tool for generating C++ browse information.  See the
+    `Ebrowse' manual.
+
+  + ddeclient.exe - A tool for interacting with DDE servers.
+
+  + hexl.exe - A tool for converting files to hex dumps.  See the
+    `Editing Binary Files' node of the Emacs manual.
+
+  + movemail.exe - A helper application for safely moving mail from
+    a mail spool or POP server to a local user mailbox.  See the
+    `Movemail' node of the Emacs manual.
+
+  + digest-doc.exe, sorted-doc.exe - Tools for rebuilding the
+    built-in documentation.
+
+* Image support
+
+  Emacs has built in support for XBM and PPM/PGM/PBM images, and the
+  libXpm library is bundled, providing XPM support (required for color
+  toolbar icons and splash screen).  Source for libXpm should be available
+  on the same place as you got this binary distribution from.  The version
+  of libXpm bundled with this version of Emacs is 3.5.7, based on x.org's
+  libXpm library from X11R7.3.
+
+  Emacs can also support some other image formats with appropriate
+  libraries.  These libraries are all available as part of GTK, or from
+  gnuwin32.sourceforge.net.  Emacs will find them if the directory they
+  are installed in is on the PATH.
+
+      PNG: requires the PNG reference library 1.2 or later, which will
+      be named libpng13d.dll, libpng13.dll, libpng12d.dll, libpng12.dll
+      or libpng.dll.  LibPNG requires zlib, which should come from the same
+      source as you got libpng.
+
+      JPEG: requires the Independant JPEG Group's libjpeg 6b or later,
+      which will be called jpeg62.dll, libjpeg.dll, jpeg-62.dll or jpeg.dll.
+
+      TIFF: requires libTIFF 3.0 or later, which will be called libtiff3.dll
+      or libtiff.dll.
+
+      GIF: requires libungif or giflib 4.1 or later, which will be
+      called giflib4.dll, libungif4.dll or libungif.dll.
+
+   In addition, Emacs can be compiled to support SVG.  This precompiled
+   distribution has not been compiled that way, since the SVG library
+   or one or more of its extensive dependencies appear to be
+   unreliable under Windows.  See nt/INSTALL in the src distribution if
+   you wish to compile Emacs with SVG support.
+
+* Uninstalling Emacs
+
+  If you should need to uninstall Emacs, simply delete all the files
+  and subdirectories from the directory where it was unpacked (Emacs
+  does not install or update any files in system directories or
+  anywhere else).  If you ran the addpm.exe program to create the
+  registry entries and the Start menu icon, then you can remove the
+  registry entries using regedit.  All of the settings are written
+  under the Software\GNU\Emacs key in HKEY_LOCAL_MACHINE, or if you
+  didn't have administrator privileges when you installed, the same
+  key in HKEY_CURRENT_USER.  Just delete the whole Software\GNU\Emacs
+  key.
+
+  The Start menu entry can be removed by right-clicking on the Task bar
+  and selecting Properties, then using the Remove option on the Start
+  Menu Programs page.  (If you installed under an account with
+  administrator privileges, then you need to click the Advanced button
+  and look for the Gnu Emacs menu item under All Users.)
+
+* Troubleshooting
+
+  Unpacking the distributions
+
+  If you encounter trouble trying to run Emacs, there are a number of
+  possible causes.  Check the following for indications that the
+  distribution was not corrupted by the tools used to unpack it:
+
+    * Be sure to disable CR/LF translation or the executables will
+      be unusable.  Older versions of WinZipNT would enable this
+      translation by default.  If you are using WinZipNT, disable it.
+      (I don't have WinZipNT myself, and I do not know the specific
+      commands necessary to disable it.)
+
+    * Check that filenames were not truncated to 8.3.  For example,
+      there should be a file lisp\abbrevlist.elc; if this has been
+      truncated to abbrevli.elc, your distribution has been corrupted
+      while unpacking and Emacs will not start.
+
+  If you believe you have unpacked the distributions correctly and are
+  still encountering problems, see the section on Further Information
+  below.
+
+  Virus scanners
+
+  Some virus scanners interfere with Emacs' use of subprocesses.  If you
+  are unable to use subprocesses and you use Dr. Solomon's WinGuard or
+  McAfee's Vshield, turn off "Scan all files" (WinGuard) or "boot sector
+  scanning" (McAfee exclusion properties).
+
+* Further information
+
+  If you have access to the World Wide Web, I would recommend pointing
+  your favorite web browser to the following document (if you haven't
+  already):
+
+	http://www.gnu.org/software/emacs/windows/
+
+  This document serves as an FAQ and a source for further information
+  about the Windows port and related software packages.
+
+  In addition to the FAQ, there is a mailing list for discussing issues
+  related to the Windows port of Emacs.  For information about the
+  list, see this Web page:
+
+	http://lists.gnu.org/mailman/listinfo/help-emacs-windows
+
+  To ask questions on the mailing list, send email to
+  help-emacs-windows@gnu.org.  (You don't need to subscribe for that.)
+  To subscribe to the list or unsubscribe from it, fill the form you
+  find at http://lists.gnu.org/mailman/listinfo/help-emacs-windows as
+  explained there.
+
+  Another valuable source of information and help which should not be
+  overlooked is the various Usenet news groups dedicated to Emacs.
+  These are particularly good for help with general issues which aren't
+  specific to the Windows port of Emacs.  The main news groups to use
+  for seeking help are:
+
+	gnu.emacs.help
+	comp.emacs
+
+  There are also fairly regular postings and announcements of new or
+  updated Emacs packages on this group:
+
+	gnu.emacs.sources
+
+* Reporting bugs
+
+  If you encounter a bug in this port of Emacs, we would like to hear
+  about it.  First check the FAQ on the web page above to see if the bug
+  is already known and if there are any workarounds.  Then check whether
+  the bug has something to do with code in your .emacs file, e.g. by
+  invoking Emacs with the "-Q" option.
+
+  If you decide that it is a bug in Emacs, use the built in bug
+  reporting facility to report it (from the menu; Help -> Send Bug Report).
+  If you have not yet configured Emacs for mail, then when you press
+  C-c C-c to send the report, it will ask you to paste the text of the
+  report into your mail client.  If the bug is related to subprocesses,
+  also specify which shell you are using (e.g., include the values of
+  `shell-file-name' and `explicit-shell-file-name' in your message).
+
+  Enjoy!
+
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
--- a/nt/configure.bat	Sat Jul 24 12:18:05 2010 +0000
+++ b/nt/configure.bat	Sun Jul 25 10:16:08 2010 +0000
@@ -90,6 +90,8 @@
 set doldflags=
 set sep1=
 set sep2=
+set sep3=
+set distfiles=
 
 rem ----------------------------------------------------------------------
 rem   Handle arguments.
@@ -112,6 +114,7 @@
 if "%1" == "--without-tiff" goto withouttiff
 if "%1" == "--without-xpm" goto withoutxpm
 if "%1" == "--with-svg" goto withsvg
+if "%1" == "--distfiles" goto distfiles
 if "%1" == "" goto checkutils
 :usage
 echo Usage: configure [options]
@@ -132,6 +135,7 @@
 echo.   --without-tiff          do not use TIFF library even if it is installed
 echo.   --without-xpm           do not use XPM library even if it is installed
 echo.   --with-svg              use the RSVG library (experimental)
+echo.   --distfiles             path to files for make dist, e.g. libXpm.dll
 goto end
 rem ----------------------------------------------------------------------
 :setprefix
@@ -234,6 +238,16 @@
 goto again
 
 rem ----------------------------------------------------------------------
+
+:distfiles
+set HAVE_DISTFILES=1
+shift
+set distfiles=%distfiles%%sep3%%1
+set sep3= %nothing%
+shift
+goto again
+
+rem ----------------------------------------------------------------------
 rem    Check that necessary utilities (cp and rm) are present.
 :checkutils
 echo Checking for 'cp'...
@@ -521,6 +535,35 @@
 :svgDone
 rm -f junk.c junk.obj junk.err junk.out
 
+rem Any distfiles provided for building distribution? If no, we're done.
+if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone
+
+rem Any arguments to --distfiles specified? If no, we're done.
+if not "%distfiles%"=="" goto :checkDistFiles
+set distFilesOk=0
+echo No arguments specified for option --distfiles!
+goto distfilesDone
+
+:checkDistFiles
+echo Checking for distfiles...
+rem Check if all specified distfiles exist
+set fileNotFound=
+for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d
+if not "%fileNotFound%"=="" goto distFilesNotFound
+
+set distFilesOK=1
+echo ...all distfiles found.
+goto :distFilesDone
+
+:distFilesNotFound
+set distFilesOk=0
+echo ...%fileNotFound% not found.
+set distfiles=
+goto :distfilesDone
+
+:distFilesDone
+set fileNotFound=
+
 rem ----------------------------------------------------------------------
 :genmakefiles
 echo Generating makefiles
@@ -541,6 +584,7 @@
 if (%profile%) == (Y) echo PROFILE=1 >>config.settings
 if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings
 if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings
+if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings
 rem We go thru docflags because usercflags could be "-DFOO=bar" -something
 rem and the if command cannot cope with this
 for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y
@@ -642,12 +686,19 @@
  echo   Install libtiff development files or use --without-tiff
 
 :checkgif
-if not "(%HAVE_GIF%)" == "()" goto donelibchecks
-if (%gifsupport%) == (N) goto donelibchecks
+if not "(%HAVE_GIF%)" == "()" goto checkdistfiles
+if (%gifsupport%) == (N) goto checkdistfiles
  set libsOK=0
  echo GIF support is missing.
  echo   Install giflib or libungif development files or use --without-gif
 
+:checkdistfiles
+if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks
+if (%distFilesOk%) == (1) goto donelibchecks
+echo.
+echo Files specified with option --distfiles could not be found.
+echo   Fix these issues before running make dist
+
 :donelibchecks
 if (%libsOK%) == (1) goto success
 echo.
@@ -680,6 +731,9 @@
 set doldflags=
 set mingwflag=
 set mf=
+set distfiles=
+set HAVE_DISTFILES=
+set distFilesOk=
 
 goto skipArchTag
    arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c
--- a/nt/makefile.w32-in	Sat Jul 24 12:18:05 2010 +0000
+++ b/nt/makefile.w32-in	Sun Jul 25 10:16:08 2010 +0000
@@ -23,6 +23,10 @@
 # FIXME: This file uses DOS EOLs.  Convert to Unix after 22.1 is out
 #        (and remove or replace this comment).
 
+VERSION		= 24.0.50
+
+TMP_DIST_DIR 	= emacs-$(VERSION)
+
 TRES		= $(BLD)/emacs.res
 CLIENTRES	= $(BLD)/emacsclient.res
 
@@ -197,12 +201,16 @@
 #
 # Build and install emacs in INSTALL_DIR
 #
-install: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE)
+.PHONY: install-bin install-shortcuts
+
+install: install-bin install-shortcuts
+
+install-bin: all $(INSTALL_DIR)/bin install-other-dirs-$(MAKETYPE)
 	- $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin
 	- $(CP) $(BLD)/ddeclient.exe $(INSTALL_DIR)/bin
 	- $(CP) $(BLD)/cmdproxy.exe $(INSTALL_DIR)/bin
 	- $(CP) $(BLD)/runemacs.exe $(INSTALL_DIR)/bin
-	- "$(INSTALL_DIR)/bin/addpm" -q
+	- $(CP) README.W32 $(INSTALL_DIR)
 	- $(DEL) ../same-dir.tst
 	- $(DEL) $(INSTALL_DIR)/same-dir.tst
 	echo SameDirTest > "$(INSTALL_DIR)/same-dir.tst"
@@ -238,6 +246,26 @@
 	$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp install
 	$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install
 
+install-shortcuts:
+	"$(INSTALL_DIR)/bin/addpm" -q
+
+dist: install-bin
+	mkdir $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/README.W32" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/INSTALL" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/bin" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/etc" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/info" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/lisp" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/leim" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/site-lisp" $(TMP_DIST_DIR)
+	$(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin
+	$(COMSPEC)$(ComSpec) /c $(ARGQUOTE)zipdist.bat $(VERSION)$(ARGQUOTE)
+	$(DEL_TREE) $(TMP_DIST_DIR)
+
 force-info:
 # Note that doc/emacs/makefile knows how to
 # put the info files in $(infodir),
@@ -323,6 +351,7 @@
 	- $(DEL) stamp_BLD
 	- $(DEL) ../etc/DOC ../etc/DOC-X
 	- $(DEL) config.log Makefile
+	- $(DEL) ../README.W32
 
 distclean: distclean-other-dirs-$(MAKETYPE) top-distclean
 
--- a/nt/runemacs.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/nt/runemacs.c	Sun Jul 25 10:16:08 2010 +0000
@@ -43,7 +43,7 @@
 #include <string.h>
 #include <malloc.h>
 
-static void set_user_model_id ();
+static void set_user_model_id (void);
 
 int WINAPI
 WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/zipdist.bat	Sun Jul 25 10:16:08 2010 +0000
@@ -0,0 +1,49 @@
+@echo off
+rem Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+rem   Free Software Foundation, Inc.
+
+rem Author: Christoph Scholtes cschol2112 at gmail.com
+
+rem This file is part of GNU Emacs.
+
+rem GNU Emacs is free software: you can redistribute it and/or modify
+rem it under the terms of the GNU General Public License as published by
+rem the Free Software Foundation, either version 3 of the License, or
+rem (at your option) any later version.
+
+rem GNU Emacs is distributed in the hope that it will be useful,
+rem but WITHOUT ANY WARRANTY; without even the implied warranty of
+rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+rem GNU General Public License for more details.
+
+rem You should have received a copy of the GNU General Public License
+rem along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.
+
+SETLOCAL
+rem arg 1: Emacs version number
+set EMACS_VER=%1
+
+set TMP_DIST_DIR=emacs-%EMACS_VER%
+
+rem Check, if 7zip is installed and available on path
+:ZIP_CHECK
+7z
+if %ERRORLEVEL% NEQ 0 goto :ZIP_ERROR
+goto ZIP_DIST
+
+:ZIP_ERROR
+echo.
+echo ERROR: Make sure 7zip is installed and available on the Windows Path!
+goto EXIT
+
+rem Build distributions
+:ZIP_DIST
+rem Build and verify full distribution
+7z a -bd -tZIP -mx=9 -x!.bzrignore -x!.gitignore -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory emacs-%EMACS_VER%-bin-i386.zip %TMP_DIST_DIR%
+7z t emacs-%EMACS_VER%-bin-i386.zip
+rem Build and verify binary only distribution
+7z a -bd -tZIP -mx=9 -x!.bzrignore -x!.gitignore -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory emacs-%EMACS_VER%-barebin-i386.zip %TMP_DIST_DIR%/README.W32 %TMP_DIST_DIR%/bin %TMP_DIST_DIR%/etc/DOC-X %TMP_DIST_DIR%/COPYING
+7z t emacs-%EMACS_VER%-barebin-i386.zip
+goto EXIT
+
+:EXIT
--- a/src/ChangeLog	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/ChangeLog	Sun Jul 25 10:16:08 2010 +0000
@@ -1,3 +1,45 @@
+2010-07-25  Juanma Barranquero  <lekktu@gmail.com>
+
+	* callproc.c (relocate_fd): Set inside #ifndef WINDOWSNT.
+	* dired.c (opendir, readdir): Fix prototypes.
+	* editfns.c (w32_get_internal_run_time): Fix prototypes.
+	* keyboard.c (input_available_signal): Declare inside #ifdef SIGIO.
+	* ndir.h (opendir, readdir, seekdir, closedir): Fix prototypes.
+	(telldir): Remove declaration.
+	* ralloc.c (real_morecore, __morecore): Fix prototypes.
+	* sound.c (alsa_sound_perror): Declare inside #ifdef HAVE_ALSA.
+	* syssignal.h (strsignal): Fix prototype.
+	* term.c (tparam): Fix prototype.
+	(term_get_fkeys_address, term_get_fkeys_kboard, term_get_fkeys_1)
+	(term_get_fkeys): Set inside "#ifndef DOS_NT".
+	* vm-limit.c (check_memory_limits): Fix prototypes of real_morecore
+	and __morecore.
+	* w32gui.h (XParseGeometry): Fix prototype.
+	* w32heap.h (get_data_start, get_data_end, init_heap): Fix prototypes.
+	* w32term.c (my_set_focus): Declare inside #if 0.
+	* w32term.h (x_window_to_frame, x_display_info_for_name, w32_term_init)
+	(w32_fill_rect, w32_clear_window, init_crit, delete_crit, signal_quit)
+	(drain_message_queue, get_next_msg, post_msg, parse_button)
+	(ClipboardSequence_Proc): Fix prototypes.
+	(wait_for_sync): Remove declaration.
+
+2010-07-24  Juanma Barranquero  <lekktu@gmail.com>
+
+	* w32fns.c (w32_to_x_color): Remove, unused.
+
+2010-07-24  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* lisp.h: Remove leftover P_.
+
+2010-07-24  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* ecrt0.c, unexalpha.c: Remove files, unused.
+
+2010-07-24  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* cmds.c (internal_self_insert): Make static.
+	* lisp.h (internal_self_insert): Remove declaration.
+
 2010-07-23  Juanma Barranquero  <lekktu@gmail.com>
 
 	* alloc.c (free_float):
--- a/src/callproc.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/callproc.c	Sun Jul 25 10:16:08 2010 +0000
@@ -984,7 +984,9 @@
   RETURN_UNGCPRO (unbind_to (count, Fcall_process (nargs, args)));
 }
 
+#ifndef WINDOWSNT
 static int relocate_fd (int fd, int minfd);
+#endif
 
 static char **
 add_env (char **env, char **new_env, char *string)
@@ -1113,7 +1115,7 @@
     char **p, **q;
     register int new_length;
     Lisp_Object display = Qnil;
-    
+
     new_length = 0;
 
     for (tem = Vprocess_environment;
@@ -1149,7 +1151,7 @@
        but with corrected value.  */
     if (egetenv ("PWD"))
       *new_env++ = pwd_var;
- 
+
     if (STRINGP (display))
       {
 	int vlen = strlen ("DISPLAY=") + strlen (SDATA (display)) + 1;
@@ -1179,7 +1181,7 @@
       }
   }
 
-  
+
 #ifdef WINDOWSNT
   prepare_standard_handles (in, out, err, handles);
   set_process_dir (SDATA (current_dir));
@@ -1265,6 +1267,7 @@
 #endif /* not MSDOS */
 }
 
+#ifndef WINDOWSNT
 /* Move the file descriptor FD so that its number is not less than MINFD.
    If the file descriptor is moved at all, the original is freed.  */
 static int
@@ -1298,6 +1301,7 @@
       return new;
     }
 }
+#endif /* not WINDOWSNT */
 
 static int
 getenv_internal_1 (const char *var, int varlen, char **value, int *valuelen,
--- a/src/cmds.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/cmds.c	Sun Jul 25 10:16:08 2010 +0000
@@ -45,6 +45,8 @@
 
 extern Lisp_Object Qface;
 extern Lisp_Object Vtranslation_table_for_input;
+
+static int internal_self_insert (int, int);
 
 DEFUN ("forward-point", Fforward_point, Sforward_point, 1, 1, 0,
        doc: /* Return buffer position N characters after (before if N negative) point.  */)
@@ -347,7 +349,7 @@
 
 static Lisp_Object Qexpand_abbrev;
 
-int
+static int
 internal_self_insert (int c, int noautofill)
 {
   int hairy = 0;
--- a/src/dired.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/dired.c	Sun Jul 25 10:16:08 2010 +0000
@@ -66,8 +66,8 @@
 #ifndef MSDOS
 #define DIRENTRY struct direct
 
-extern DIR *opendir ();
-extern struct direct *readdir ();
+extern DIR *opendir (char *);
+extern struct direct *readdir (DIR *);
 
 #endif /* not MSDOS */
 #endif /* not SYSV_SYSTEM_DIR */
--- a/src/editfns.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/editfns.c	Sun Jul 25 10:16:08 2010 +0000
@@ -90,7 +90,7 @@
                                const struct tm *, int);
 
 #ifdef WINDOWSNT
-extern Lisp_Object w32_get_internal_run_time ();
+extern Lisp_Object w32_get_internal_run_time (void);
 #endif
 
 static int tm_diff (struct tm *, struct tm *);
--- a/src/keyboard.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/keyboard.c	Sun Jul 25 10:16:08 2010 +0000
@@ -635,7 +635,9 @@
 static void clear_event (struct input_event *);
 static Lisp_Object restore_kboard_configuration (Lisp_Object);
 static SIGTYPE interrupt_signal (int signalnum);
+#ifdef SIGIO
 static SIGTYPE input_available_signal (int signo);
+#endif
 static void handle_interrupt (void);
 static void timer_start_idle (void);
 static void timer_stop_idle (void);
@@ -3895,7 +3897,7 @@
 {
   register int c;
   Lisp_Object obj;
-  
+
   if (kbd_on_hold_p () && kbd_buffer_nr_stored () < KBD_BUFFER_SIZE/4)
     {
       /* Start reading input again, we have processed enough so we can
--- a/src/lisp.h	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/lisp.h	Sun Jul 25 10:16:08 2010 +0000
@@ -2393,7 +2393,6 @@
 EXFUN (Fend_of_line, 1);
 EXFUN (Fforward_char, 1);
 EXFUN (Fforward_line, 1);
-extern int internal_self_insert (int, int);
 extern void syms_of_cmds (void);
 extern void keys_of_cmds (void);
 
@@ -3400,16 +3399,16 @@
 extern int emacs_read (int, char *, unsigned int);
 extern int emacs_write (int, const char *, unsigned int);
 #ifndef HAVE_MEMSET
-extern void *memset P_ ((void *, int, size_t));
+extern void *memset (void *, int, size_t);
 #endif
 #ifndef HAVE_MEMCPY
-extern void *memcpy P_ ((void *, void *, size_t));
+extern void *memcpy (void *, void *, size_t);
 #endif
 #ifndef HAVE_MEMMOVE
-extern void *memmove P_ ((void *, void *, size_t));
+extern void *memmove (void *, void *, size_t);
 #endif
 #ifndef HAVE_MEMCMP
-extern int memcmp P_ ((void *, void *, size_t));
+extern int memcmp (void *, void *, size_t);
 #endif
 
 /* Defined in filelock.c */
--- a/src/ndir.h	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/ndir.h	Sun Jul 25 10:16:08 2010 +0000
@@ -32,11 +32,10 @@
 	char	dd_buf[DIRBLKSIZ];	/* directory block */
 	}	DIR;			/* stream data from opendir() */
 
-extern DIR		*opendir();
-extern struct direct	*readdir();
-extern long		telldir();
-extern void		seekdir();
-extern void		closedir();
+extern DIR		*opendir (char *);
+extern struct direct	*readdir (DIR *);
+extern void		seekdir (DIR *, long);
+extern void		closedir (DIR *);
 
 #define rewinddir( dirp )	seekdir( dirp, 0L )
 
--- a/src/ralloc.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/ralloc.c	Sun Jul 25 10:16:08 2010 +0000
@@ -79,7 +79,7 @@
 /* Declarations for working with the malloc, ralloc, and system breaks.  */
 
 /* Function to set the real break value.  */
-POINTER (*real_morecore) ();
+POINTER (*real_morecore) (long int);
 
 /* The break value, as seen by malloc.  */
 static POINTER virtual_break_value;
@@ -111,7 +111,7 @@
    from the system.  */
 
 #ifndef SYSTEM_MALLOC
-extern POINTER (*__morecore) ();
+extern POINTER (*__morecore) (long int);
 #endif
 
 
--- a/src/sound.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/sound.c	Sun Jul 25 10:16:08 2010 +0000
@@ -115,7 +115,9 @@
   SOUND_ATTR_SENTINEL
 };
 
+#ifdef HAVE_ALSA
 static void alsa_sound_perror (char *, int) NO_RETURN;
+#endif
 static void sound_perror (char *) NO_RETURN;
 static void sound_warning (char *);
 static int parse_sound (Lisp_Object, Lisp_Object *);
--- a/src/syssignal.h	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/syssignal.h	Sun Jul 25 10:16:08 2010 +0000
@@ -160,7 +160,7 @@
 
 #ifndef HAVE_STRSIGNAL
 /* strsignal is in sysdep.c */
-char *strsignal ();
+char *strsignal (int);
 #endif
 
 #ifdef FORWARD_SIGNAL_TO_MAIN_THREAD
--- a/src/term.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/term.c	Sun Jul 25 10:16:08 2010 +0000
@@ -183,7 +183,7 @@
 
 static int system_uses_terminfo;
 
-char *tparam ();
+char *tparam (char *, char *, int, int, ...);
 
 extern char *tgetstr (char *, char **);
 
@@ -1363,6 +1363,7 @@
   {"!3", "S-undo"}       /*shifted undo key*/
   };
 
+#ifndef DOS_NT
 static char **term_get_fkeys_address;
 static KBOARD *term_get_fkeys_kboard;
 static Lisp_Object term_get_fkeys_1 (void);
@@ -1500,6 +1501,7 @@
 
   return Qnil;
 }
+#endif /* not DOS_NT */
 
 
 /***********************************************************************
--- a/src/vm-limit.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/vm-limit.c	Sun Jul 25 10:16:08 2010 +0000
@@ -173,9 +173,9 @@
 check_memory_limits (void)
 {
 #ifdef REL_ALLOC
-  extern POINTER (*real_morecore) ();
+  extern POINTER (*real_morecore) (SIZE);
 #endif
-  extern POINTER (*__morecore) ();
+  extern POINTER (*__morecore) (SIZE);
 
   register POINTER cp;
   unsigned long five_percent;
--- a/src/w32fns.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/w32fns.c	Sun Jul 25 10:16:08 2010 +0000
@@ -786,25 +786,6 @@
 }
 
 static Lisp_Object
-w32_to_x_color (Lisp_Object rgb)
-{
-  Lisp_Object color;
-
-  CHECK_NUMBER (rgb);
-
-  BLOCK_INPUT;
-
-  color = Frassq (rgb, Vw32_color_map);
-
-  UNBLOCK_INPUT;
-
-  if (!NILP (color))
-    return (Fcar (color));
-  else
-    return Qnil;
-}
-
-static Lisp_Object
 w32_color_map_lookup (char *colorname)
 {
   Lisp_Object tail, ret = Qnil;
--- a/src/w32gui.h	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/w32gui.h	Sun Jul 25 10:16:08 2010 +0000
@@ -118,7 +118,7 @@
 #define PBaseSize	(1L << 8) /* program specified base for incrementing */
 #define PWinGravity	(1L << 9) /* program specified window gravity */
 
-extern int XParseGeometry ();
+extern int XParseGeometry (char *, int *, int *, unsigned *, unsigned *);
 
 
 typedef struct {
--- a/src/w32heap.h	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/w32heap.h	Sun Jul 25 10:16:08 2010 +0000
@@ -41,8 +41,8 @@
 #define get_w32_major_version()  	w32_major_version
 #define get_w32_minor_version()  	w32_minor_version
 
-extern unsigned char *get_data_start();
-extern unsigned char *get_data_end();
+extern unsigned char *get_data_start (void);
+extern unsigned char *get_data_end (void);
 extern unsigned long  reserved_heap_size;
 extern SYSTEM_INFO    sysinfo_cache;
 extern OSVERSIONINFO  osinfo_cache;
@@ -62,7 +62,7 @@
 extern void *sbrk (unsigned long size);
 
 /* Initialize heap structures for sbrk on startup.  */
-extern void init_heap ();
+extern void init_heap (void);
 
 /* Round the heap to this size.  */
 extern void round_heap (unsigned long size);
--- a/src/w32term.c	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/w32term.c	Sun Jul 25 10:16:08 2010 +0000
@@ -268,7 +268,9 @@
 static void w32_clip_to_row (struct window *, struct glyph_row *, int, HDC);
 static BOOL my_show_window (struct frame *, HWND, int);
 static void my_set_window_pos (HWND, HWND, int, int, int, int, UINT);
+#if 0
 static void my_set_focus (struct frame *, HWND);
+#endif
 static void my_set_foreground_window (HWND);
 static void my_destroy_window (struct frame *, HWND);
 
--- a/src/w32term.h	Sat Jul 24 12:18:05 2010 +0000
+++ b/src/w32term.h	Sun Jul 25 10:16:08 2010 +0000
@@ -48,8 +48,6 @@
 extern MSG CurMsg;
 extern BOOL bUseDflt;
 
-extern struct frame *x_window_to_frame ();
-
 /* Structure recording bitmaps and reference count.
    If REFCOUNT is 0 then this record is free to be reused.  */
 
@@ -226,13 +224,16 @@
 /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'.  */
 extern Lisp_Object Vx_pixel_size_width_font_regexp;
 
-struct w32_display_info *x_display_info_for_name ();
+extern struct frame *x_window_to_frame (struct w32_display_info *, HWND);
+
+struct w32_display_info *x_display_info_for_name (Lisp_Object);
 
 Lisp_Object display_x_get_resource (struct w32_display_info *,
                                     Lisp_Object, Lisp_Object,
                                     Lisp_Object, Lisp_Object);
 
-extern struct w32_display_info *w32_term_init ();
+extern struct w32_display_info *w32_term_init (Lisp_Object,
+					       char *, char *);
 
 extern int x_display_pixel_height (struct w32_display_info *);
 extern int x_display_pixel_width (struct w32_display_info *);
@@ -544,8 +545,10 @@
 #define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
 
 
-extern void w32_fill_rect ();
-extern void w32_clear_window ();
+struct frame;  /* from frame.h */
+
+extern void w32_fill_rect (struct frame *, HDC, COLORREF, RECT *);
+extern void w32_clear_window (struct frame *);
 
 #define w32_fill_area(f,hdc,pix,x,y,nx,ny) \
 do { \
@@ -645,10 +648,10 @@
 
 extern CRITICAL_SECTION critsect;
 
-extern void init_crit ();
-extern void delete_crit ();
+extern void init_crit (void);
+extern void delete_crit (void);
 
-extern void signal_quit ();
+extern void signal_quit (void);
 
 #define enter_crit() EnterCriticalSection (&critsect)
 #define leave_crit() LeaveCriticalSection (&critsect)
@@ -658,14 +661,13 @@
 extern HDC get_frame_dc (struct frame * f);
 extern int release_frame_dc (struct frame * f, HDC hDC);
 
-extern void drain_message_queue ();
+extern void drain_message_queue (void);
 
-extern BOOL get_next_msg ();
-extern BOOL post_msg ();
+extern BOOL get_next_msg (W32Msg *, BOOL);
+extern BOOL post_msg (W32Msg *);
 extern void complete_deferred_msg (HWND hwnd, UINT msg, LRESULT result);
-extern void wait_for_sync ();
 
-extern BOOL parse_button ();
+extern BOOL parse_button (int, int, int *, int *);
 
 extern void w32_sys_ring_bell (struct frame *f);
 extern void x_delete_display (struct w32_display_info *dpyinfo);
@@ -725,7 +727,7 @@
 EXFUN (Fx_display_color_p, 1);
 EXFUN (Fx_display_grayscale_p, 1);
 
-typedef DWORD (WINAPI * ClipboardSequence_Proc) ();
+typedef DWORD (WINAPI * ClipboardSequence_Proc) (void);
 typedef BOOL (WINAPI * AppendMenuW_Proc) (
     IN HMENU,
     IN UINT,