+2014-08-09 Reuben Thomas <rrt@sc3d.org>
+
+ * make-dist (files): Remove msdos/is_exec.c and sigaction.c.
+ * config.bat: Require DJGPP 2.02 or later.
+
2014-08-09 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, incorporating:
+2014-08-09 Reuben Thomas <rrt@sc3d.org>
+
+ * notes/copyright: Remove mention of msdos/is_exec.c and
+ sigaction.c.
+ * authors.el (authors-renamed-files-alist): Removed is_exec.c.
+
2014-08-07 Reuben Thomas <rrt@sc3d.org>
* notes/exit-value: Remove specific discussion of VMS.
("server.c" . "emacsserver.c")
("lib-src/etags.c" . "etags.c")
;; msdos/
- ("is-exec.c" . "is_exec.c")
("enriched.doc" . "enriched.txt")
("GETTING.GNU.SOFTWARE" . "FTP")
("etc/MACHINES" . "MACHINES")
"[gnu.org #58812] Changing license of MH-E manual"
-msdos/is_exec.c, sigaction.c - these files are copyright DJ Delorie.
-Leave the copyrights alone. Leave the Eli Zaretskii copyright in
-is_exec.c alone. See the msdos/README file for the legal history of
-these files.
-
msdos/sed*.inp - These files are copyright FSF and distributed under
an MIT-like license.
definitely relicense that.").
2. The files that are copyright FSF and AIST, or AIST alone, should be
-and were updated, ditto the oldXMenu files with FSF copyright, and
-msdos/is_exec.c and sigaction.c.
+and were updated, ditto the oldXMenu files with FSF copyright.
3. lwlib/
rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.\r
\r
rem ----------------------------------------------------------------------\r
-rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
-rem\r
-rem + msdos version 3 or better.\r
-rem + DJGPP version 2.0 or later (version 2.03 or later recommended).\r
-rem + make utility that allows breaking of the 128 chars limit on\r
-rem command lines. ndmake (as of version 4.5) won't work due to a\r
-rem line length limit. The make that comes with DJGPP does work (and is\r
+rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r\r
+rem\r\r
+rem + msdos version 3 or better.\r\r
+rem + DJGPP version 2.02 or later (version 2.03 or later recommended).\r\r
+rem + make utility that allows breaking of the 128 chars limit on\r\r
+rem command lines. ndmake (as of version 4.5) won't work due to a\r\r
+rem line length limit. The make that comes with DJGPP does work (and is\r\r
rem recommended).\r
rem + rm, mv, and cp (from GNU file utilities).\r
rem + sed (you can use the port that comes with DJGPP).\r
If Not "%DJGPP%" == "" goto djgppOk\r
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
Goto End\r
-:djgppOk\r
-echo int main() >junk.c\r
-echo #ifdef __DJGPP__ >>junk.c\r
-echo {return (__DJGPP__)*10;} >>junk.c\r
-echo #else >>junk.c\r
-echo #ifdef __GO32__ >>junk.c\r
-echo {return 10;} >>junk.c\r
+:djgppOk\r\r
+echo int main() >junk.c\r\r
+echo #ifdef __DJGPP__ >>junk.c\r\r
+echo {return (__DJGPP__)*10 + (__DJGPP_MINOR__);} >>junk.c\r\r
+echo #else >>junk.c\r\r
+echo #ifdef __GO32__ >>junk.c\r\r
+echo {return 10;} >>junk.c\r\r
echo #else >>junk.c\r
echo {return 0;} >>junk.c\r
echo #endif >>junk.c\r
If ErrorLevel 10 Goto go32Ok\r
rm -f junk.c junk junk.exe\r
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
-Goto End\r
-:go32Ok\r
-set djgpp_ver=2\r
-If Not ErrorLevel 20 Echo To build 'Emacs' you need DJGPP v2.0 or later!\r
-If Not ErrorLevel 20 Goto End\r
-rm -f junk.c junk junk.exe\r
-rem DJECHO is used by the top-level Makefile in the v2.x build\r
-Echo Checking whether 'djecho' is available...\r
+Goto End\r\r
+:go32Ok\r\r
+set djgpp_ver=2\r\r
+If Not ErrorLevel 22 Echo To build 'Emacs' you need DJGPP v2.02 or later!\r\r
+If Not ErrorLevel 22 Goto End\r\r
+rm -f junk.c junk junk.exe\r\r
+rem DJECHO is used by the top-level Makefile in the v2.x build\r\r
+Echo Checking whether 'djecho' is available...\r\r
redir -o Nul -eo djecho -o junk.$$$ foo\r
-If Exist junk.$$$ Goto djechoOk\r
-Echo To build 'Emacs' you need the 'djecho.exe' program!\r
-Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.\r
-Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.\r
-Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,\r
-Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.\r
-Echo Then run CONFIG.BAT again with the same arguments you did now.\r
+If Exist junk.$$$ Goto djechoOk\r\r
+Echo To build 'Emacs' you need the 'djecho.exe' program!\r\r
+Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.\r\r
+Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,\r\r
+Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.\r\r
+Echo Then run CONFIG.BAT again with the same arguments you did now.\r\r
Goto End\r
:djechoOk\r
rm -f junk.$$$\r
+2014-08-09 Reuben Thomas <rrt@sc3d.org>
+
+ * PROBLEMS: Remove msdos/is_exec.c and sigaction.c.
+
2014-07-21 Dmitry Antipov <dmantipov@yandex.ru>
* TODO: remove frame height remark.
device names such as /dev/null in the DJGPP runtime library. A
work-around is to rename the problem directory to another name.
-*** MS-DOS+DJGPP: Problems on MS-DOS if DJGPP v2.0 is used to compile Emacs.
-
-There are two DJGPP library bugs which cause problems:
-
- * Running `shell-command' (or `compile', or `grep') you get
- `Searching for program: permission denied (EACCES), c:/command.com';
- * After you shell to DOS, Ctrl-Break kills Emacs.
-
-To work around these bugs, you can use two files in the msdos
-subdirectory: `is_exec.c' and `sigaction.c'. Compile them and link
-them into the Emacs executable `temacs'; then they will replace the
-incorrect library functions.
-
*** MS-DOS: Emacs compiled for MSDOS cannot find some Lisp files, or other
run-time support files, when long filename support is enabled.
(cd msdos
ln ChangeLog INSTALL README emacs.ico emacs.pif ../${tempdir}/msdos
ln depfiles.bat inttypes.h ../${tempdir}/msdos
- ln is_exec.c sigaction.c mainmake.v2 sed*.inp ../${tempdir}/msdos)
+ ln mainmake.v2 sed*.inp ../${tempdir}/msdos)
echo "Making links to \`nextstep'"
(cd nextstep
+2014-08-09 Reuben Thomas <rrt@sc3d.org>
+
+ * sed2v2.inp: Remove support for DJGPP 2.01.
+ * INSTALL: Don't mention removed files msdos/is_exec.c and
+ sigaction.c, and increase minimum version of DJGPP to 2.02.
+ * README: Remove note on legal status of removed files
+ msdos/is_exec.c and sigaction.c.
+
2014-04-16 Eli Zaretskii <eliz@gnu.org>
* sedlisp.inp:
supported (e.g., with a specialized driver such as doslfn).
To build and install the DJGPP port, you need to have the DJGPP ports
-of GCC (the GNU C compiler), GNU Make, rm, mv, cp, and sed. See the
-remarks in CONFIG.BAT for more information about locations and
-versions. The Emacs FAQ (see info/efaq.info) includes pointers to
-Internet sites where you can find the necessary utilities; search for
-"MS-DOS". The configuration step (see below) will test for these
-utilities and will refuse to continue if any of them isn't found.
+of GCC (the GNU C compiler), GNU Make, rm, mv, cp, and sed, and
+version 2.03 or later of DJGPP itself. See the remarks in CONFIG.BAT
+for more information about locations and versions. The Emacs FAQ (see
+info/efaq.info) includes pointers to Internet sites where you can find
+the necessary utilities; search for "MS-DOS". The configuration step
+(see below) will test for these utilities and will refuse to continue
+if any of them isn't found.
Bootstrapping Emacs or recompiling Lisp files in the `lisp'
subdirectory using the various targets in the lisp/Makefile file
itself, you will only need that if you check-out development sources
from the Emacs source repository.
-Building the DJGPP version of Emacs is currently supported only on
-systems which support long file names (e.g. Windows 9X or Windows XP).
-You need to unpack Emacs distribution in a way that doesn't truncate
-the original long filenames to the DOS 8.3 namespace; the easiest way
-to do this is to use djtar program which comes with DJGPP, since it
-will behave consistently with the rest of DJGPP tools. Do _not_
-disable the DJGPP long-file-name support (a.k.a. "LFN") while building
-Emacs.
+Building the DJGPP version of Emacs is supported only on systems which
+support long file names (e.g. Windows 9X or Windows XP). You need to
+unpack Emacs distribution in a way that doesn't truncate the original
+long filenames to the DOS 8.3 namespace; the easiest way to do this is
+to use djtar program which comes with DJGPP, since it will behave
+consistently with the rest of DJGPP tools. Do _not_ disable the DJGPP
+long-file-name support (a.k.a. "LFN") while building Emacs.
(By the time you read this, you have already unpacked the Emacs
distribution, but if the explanations above imply that you should have
Running "config msdos" checks for several programs that are required
to configure and build Emacs; if one of those programs is not found,
-CONFIG.BAT stops and prints an error message. If you have DJGPP
-version 2.0 or 2.01, it will complain about a program called
-DJECHO.EXE. These old versions of DJGPP shipped that program under
-the name ECHO.EXE, so you can simply copy ECHO.EXE to DJECHO.EXE and
-rerun CONFIG.BAT. If you have neither ECHO.EXE nor DJECHO.EXE, you
-should be able to find them in your djdevNNN.zip archive (where NNN is
-the DJGPP version number).
+CONFIG.BAT stops and prints an error message.
On Windows NT and Windows 2000/XP/Vista/7, running "config msdos"
might print an error message like "VDM has been already loaded". This
do work, so features such as compilation, grep, and Ispell run
synchronously, unlike on other platforms.
-Version 2.0 of djgpp has two bugs that affect Emacs. We've included
-corrected versions of two files from djgpp in the msdos subdirectory:
-is_exec.c and sigaction.c. To work around the bugs, compile these
-files and link them into temacs. Djgpp versions 2.01 and later have
-these bugs fixed, so upgrade if you can before building Emacs.
-
\f
This file is part of GNU Emacs.
#
# ----------------------------------------------------------------------
-
-NOTE ON THE LEGAL STATUS OF THE FILES IS_EXEC.C, SIGACTION.C
-
-As distributed with GNU Emacs, the files is_exec.c and sigaction.c are
-Copyright (C) 1995 DJ Delorie, and are licensed under the terms of the
-GNU General Public License version 3 (see COPYING), or (at your
-option) any later version.
-
-Here we record the details of the legal history of these files.
-
-The files is_exec.c and sigaction.c were originally part of DJGPP,
-distributed by DJ Delorie. The versions of these files in DJGPP
-contain the following license notice:
-
- Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details
-
-The contents of the file COPYING.DJ (as available at, for example, the
-URL: <http://www.delorie.com/bin/cvsweb.cgi/djgpp/copying.dj>) are as
-follows:
-
--- COPYING.DJ STARTS HERE --
-
-This is the file "COPYING.DJ". It does NOT apply to any sources or
-binaries copyrighted by UCB Berkeley, the Free Software Foundation, or
-any other agency besides DJ Delorie and others who have agreed to
-allow their sources to be distributed under these terms.
-
- Copyright Information for sources and executables that are marked
- Copyright (C) DJ Delorie
- 334 North Rd
- Deerfield NH 03037-1110
-
-This document is Copyright (C) DJ Delorie and may be distributed
-verbatim, but changing it is not allowed.
-
-Source code copyright DJ Delorie is distributed under the terms of the
-GNU General Public License, with the following exceptions:
-
-* Sources used to build crt0.o, gcrt0.o, libc.a, libdbg.a, and
- libemu.a are distributed under the terms of the GNU Library General
- Public License, rather than the GNU GPL.
-
-* Any existing copyright or authorship information in any given source
- file must remain intact. If you modify a source file, a notice to that
- effect must be added to the authorship information in the source file.
-
-* Runtime binaries, as provided by DJ in DJGPP, may be distributed
- without sources ONLY if the recipient is given sufficient information
- to obtain a copy of djgpp themselves. This primarily applies to
- go32-v2.exe, emu387.dxe, and stubedit.exe.
-
-* Runtime objects and libraries, as provided by DJ in DJGPP, when
- linked into an application, may be distributed without sources ONLY
- if the recipient is given sufficient information to obtain a copy of
- djgpp themselves. This primarily applies to crt0.o and libc.a.
-
------
-
-Changes to source code copyright BSD, FSF, or others, by DJ Delorie
-fall under the terms of the original copyright. Such files usually
-have multiple copyright notices in them.
-
-A copy of the files "COPYING" and "COPYING.LIB" are included with this
-document. If you did not receive a copy of these files, you may
-obtain one from whence this document was obtained, or by writing:
-
- Free Software Foundation, Inc.
- 51 Franklin Street,
- Fifth Floor,
- Boston, MA 02110-1301,
- USA
-
--- COPYING.DJ ENDS HERE --
-
-Both is_exec.c and sigaction.c are parts of DJGPP's libc.a, therefore
-according to exception 1 in the above terms their "base" license is
-the GNU Library General Public License [now known as the GNU Lesser
-General Public License].
-
-The terms of the GNU LGPL, specifically clause 3, which begins:
-
- 3. You may opt to apply the terms of the ordinary GNU General
- Public License instead of this License to a given copy of the
- Library.
-
-permit us to relicense the files is_exec.c and sigaction.c as used in
-GNU Emacs under the terms of the GNU GPL.
-
-COPYING.DJ, however, lists extra exceptions 2-4 to the GNU licenses.
-Items 3 and 4 are not relevant in the case of GNU Emacs, since they
-can only apply to copies of DJGPP [confirmed by email from DJ Delorie
-to rms at gnu.org and others, 2007/01/31].
-
-Exception 2 of COPYING.DJ, when viewed as an added restriction, rather
-than as an interpretation of the GPL, leads to problems. The added
-requirement makes the overall license of the file incompatible with
-the GNU GPL.
-
-As a solution to this problem, DJ Delorie has kindly granted (February
-2007) GNU Emacs an exception, and permits us to license the files
-is_exec.c and sigaction.c solely under the terms of the GNU GPL. This
-exception applies _only_ to these files as distributed with GNU Emacs.
-This solution was arrived at in an email discussion between DJ Delorie
-<dj at delorie.com> and Richard Stallman <rms at gnu.org> in
-January/February 2007. We record below a summary of the relevant final
-email in this discussion:
-
- From: DJ Delorie <dj at delorie.com>
- To: rms at gnu.org
- Subject: Re: COPYING.DJ and Emacsn
-
- I have no problem with whatever you wish to do with those files in
- emacs (as long as djgpp itself doesn't need to change).
-
-
-Accordingly, in February 2007 we relicensed the files is_exec.c and
-sigaction.c as used in GNU Emacs under the GNU GPL.
-
-Copies of both the GNU General Public License and GNU Lesser (Library)
-Public License may be obtained from <http://www.gnu.org/licenses/>, or:
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA.
-
\f
This file is part of GNU Emacs.
+++ /dev/null
-/* IS_EXEC.C
- *
- * Copyright (C) 1995 DJ Delorie
- * Copyright (C) 1994 Eli Zaretskii <eliz@is.elta.co.il>
- *
- * (See the README file in this directory for the copyright and license
- * history of this file.)
- *
- * This file 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.
- *
- * This file 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 this file. If not, see <http://www.gnu.org/licenses/>.
- *
- * Commentary:
- *
- * Given a filename or a file handle, and the extension of the file,
- * determine if the file is executable.
- * First, the file extension is checked in case it uniquely identifies
- * the file as either an executable or not. Failing this, the first
- * two bytes of the file are tested for known signatures of executable
- * files.
- *
- */
-
-#include <libc/stubs.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <dpmi.h>
-#include <go32.h>
-#include <io.h>
-#include <libc/farptrgs.h>
-#include <libc/dosio.h>
-
-extern unsigned short _djstat_flags;
-unsigned short _get_magic(const char *, int);
-int _is_executable(const char *, int, const char *);
-
-/*
- * Read a MAGIC NUMBER from a given file. These are the first
- * two bytes of the file, if we look at them as an unsigned short. */
-
-#define _STAT_EXEC_EXT 2 /* get execute bits from file extension? */
-#define _STAT_EXEC_MAGIC 4 /* get execute bits from magic signature? */
-
-unsigned short
-_get_magic(const char *s, int fh)
-{
- __dpmi_regs regs;
- unsigned short retval;
- unsigned short fpos_high = 0, fpos_low = 0;
- int read_fail = 0;
-
- /* If given a pathname, open the file. */
- if (s)
- {
- int handle;
- if((handle = _open(s,0)) == -1)
- return 0;
- regs.x.bx = handle;
- }
- /* Else file already open. Remember its current file position
- and move to beginning of file. */
- else
- {
- regs.x.ax = 0x4201; /* set pointer from current position */
- regs.x.bx = fh;
- regs.x.cx = regs.x.dx = 0; /* move 0 bytes (i.e., stay put) */
- __dpmi_int(0x21, ®s);
- if (regs.x.flags & 1)
- {
- errno = __doserr_to_errno(regs.x.ax);
- return 0;
- }
- fpos_high = regs.x.dx; /* got current position */
- fpos_low = regs.x.ax;
-
- regs.x.ax = 0x4200; /* set pointer from the beginning of file */
- regs.x.cx = regs.x.dx = 0; /* move to beginning of file */
- __dpmi_int(0x21, ®s);
- if (regs.x.flags & 1)
- {
- errno = __doserr_to_errno(regs.x.ax);
- return 0;
- }
- }
- regs.x.ds = __tb_segment;
- regs.x.dx = __tb_offset;
-
- /* Read 2 bytes from the file. */
- regs.x.ax = 0x3f00;
- regs.x.cx = 2;
- __dpmi_int(0x21, ®s);
-
- /* We can either (1) succeed, (2) read less than 2 bytes,
- or (3) fail to read at all. */
- if (regs.x.ax != 2)
- read_fail = (regs.x.flags & 1) ? regs.x.ax : -1;
-
- /* If called with filename, close the file. */
- if (s)
- {
- regs.x.ax = 0x3e00;
- __dpmi_int(0x21, ®s);
- if (regs.x.flags & 1)
- errno = __doserr_to_errno(regs.x.ax);
- }
- /* Else leave file pointer where we found it. */
- else
- {
- regs.x.ax = 0x4200; /* set pointer from the beginning of file */
- regs.x.bx = fh;
- regs.x.cx = fpos_high;
- regs.x.dx = fpos_low;
- __dpmi_int(0x21, ®s);
- if (regs.x.flags & 1)
- {
- errno = __doserr_to_errno(regs.x.ax);
- return 0;
- }
- }
-
- if (read_fail == 0)
- retval = _farpeekw(_dos_ds, __tb);
- else
- {
- /* The file couldn't be read: assume non-executable. If the file
- *is* executable, but was passed as a file-handle, and the user
- opened it in write-only mode, they lose... */
- retval = 0;
- if (read_fail != -1)
- errno = __doserr_to_errno(read_fail);
- }
-
- return retval;
-}
-
-/* A list of extensions which designate executable files. These
- are NOT tested for the magic number. */
-static char executables[] = "|EXE|COM|BAT|BTM|DLL|VXD|";
-
-/* A list of extensions which belong to files known to NEVER be
- executables. These exist to minimize read()'ing files while
- detecting executables by magic number. You are welcome to
- add to this list, but remember: only extensions which could
- NEVER be present in executables should go here. */
-static char non_executables[] = "\
-|A|A01|A02|A03|A04|A05|ADL|ARC|ARJ|ASC|ASM|AUX|AWK\
-|BAS|BIB|BGI|BMP\
-|C|CC|CFG|CGZ|CH3|CHR|CI|CLP|CMF|CPI|CPP|CXX\
-|DAT|DBF|DIZ|DOC|DVI\
-|E|EL|ELC\
-|F77|FN3\
-|GIF|GZ\
-|H|HLP|HPP|HXX\
-|ICO|IN|INC|INF|INI\
-|JPG\
-|L|LEX|LF|LIB|LOG|LST|LZH\
-|M|MAK|MAP|MF|MID|MPG\
-|O|OBJ\
-|PAK|PAS|PBM|PCD|PCX|PDS|PIC|PIF|PN3|PRJ|PS\
-|RAS|RGB|RLE\
-|S|SND|SY3\
-|TAR|TAZ|TEX|TGA|TGZ|TIF|TXH|TXI|TXT\
-|VOC\
-|WAV|WK1|WK3|WKB|WQ1|WQ3|WQ4|WQ5|WQ6|WQ!\
-|XBM\
-|Y\
-|ZIP|ZOO|";
-
-int
-_is_executable(const char *filename, int fhandle, const char *extension)
-{
- if (!extension && filename)
- {
- const char *cp, *ep=0;
- for (cp=filename; *cp; cp++)
- {
- if (*cp == '.')
- ep = cp;
- if (*cp == '/' || *cp == '\\' || *cp == ':')
- ep = 0;
- }
- extension = ep;
- }
- if ((_djstat_flags & _STAT_EXEC_EXT) == 0
- && extension
- && *extension
- && strlen(extension) <= ((extension[0]=='.') ? 4 : 3))
- {
- /* Search the list of extensions in executables[]. */
- char tmp_buf[6], *tp = tmp_buf;
-
- *tp++ = '|';
- if (*extension == '.')
- extension++;
- while (*extension)
- *tp++ = toupper (*extension++);
- *tp++ = '|';
- *tp = '\0';
- if (strstr(non_executables, tmp_buf))
- return 0;
- else if (strstr(executables, tmp_buf))
- return 1;
- }
-
- /* No extension, or extension doesn't define execute
- bits unambiguously. We are in for some dirty work.
- Read the first two bytes of the file and see if they
- are any of the known magic numbers which designate
- executable files.
- Unix-like shells, which have executable shell scripts
- without extensions and DON'T have "#!" as their FIRST
- TWO CHARACTERS, lose here. Sorry, folks. */
- if ( (_djstat_flags & _STAT_EXEC_MAGIC) == 0 )
- {
- switch (_get_magic(filename, fhandle))
- {
- case 0x5a4d: /* "MZ" */
- case 0x010b:
- case 0x014c:
- case 0x2123: /* "#!" */
- return 1;
- }
- }
-
- return 0;
-}
-
#include <sys/version.h>\
/* In DJGPP v2.x almost everything is already defined in a system header. */\
#include <sys/config.h>\
-/* For those who still use DJGPP v2.01 */\
-#if __DJGPP__ == 2 && __DJGPP_MINOR__ == 1\
-#define NSIG 320\
-#endif
/^#undef MSDOS *$/c\
#ifndef MSDOS\
+++ /dev/null
-/* sigaction.c
- *
- * Copyright (C) 1995 DJ Delorie
- *
- * (See the README file in this directory for the copyright and license
- * history of this file.)
- *
- * This file 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.
- *
- * This file 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 this file. If not, see <http://www.gnu.org/licenses/>.
- */
-#include <signal.h>
-#include <errno.h>
-
-int
-sigaction(int _sig, const struct sigaction *_act, struct sigaction *_oact)
-{
- int retval = 0;
-
- if (_oact)
- {
- void (*installed_sig)(int) = signal (_sig, SIG_IGN);
-
- /* FIXME */
- if (installed_sig == SIG_ERR)
- {
- retval = -1;
- errno = EINVAL;
- }
- else
- signal (_sig, installed_sig);
- _oact->sa_handler = installed_sig;
- retval = sigemptyset (&_oact->sa_mask);
- _oact->sa_flags = 0;
- }
- if (_act)
- {
- if (signal (_sig, _act->sa_handler) == SIG_ERR)
- {
- retval = -1;
- errno = EINVAL;
- }
- }
- return 0;
-}
-
-
-
+2014-08-09 Reuben Thomas <rrt@sc3d.org>
+
+ * msdos.c:
+ * dosfns.c (init_dosfns): Remove support for DJGPP < 2.02.
+
2014-08-09 Jan Djärv <jan.h.d@swipnet.se>
* widgetprv.h (EmacsFramePart): Remove font.
Don't OR it with the previous value, so the value recorded at dump
time, possibly with `preserve-case' flags set, won't get through. */
__opendir_flags = __OPENDIR_FIND_HIDDEN;
-
-#if __DJGPP_MINOR__ == 0
- /* Under LFN, preserve the case of files as recorded in the directory
- (in DJGPP 2.01 and later this is automagically done by the library). */
- if (!NILP (Fmsdos_long_file_names ()))
- __opendir_flags |= __OPENDIR_PRESERVE_CASE;
-#endif /* __DJGPP_MINOR__ == 0 */
}
\f
#ifndef HAVE_X_WINDOWS
#endif
\f
-#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2
-
-/* Augment DJGPP library POSIX signal functions. This is needed
- as of DJGPP v2.01, but might be in the library in later releases. */
-
-#include <libc/bss.h>
-
-/* A counter to know when to re-initialize the static sets. */
-static int sigprocmask_count = -1;
-
-/* Which signals are currently blocked (initially none). */
-static sigset_t current_mask;
-
-/* Which signals are pending (initially none). */
-static sigset_t msdos_pending_signals;
-
-/* Previous handlers to restore when the blocked signals are unblocked. */
-typedef void (*sighandler_t)(int);
-static sighandler_t prev_handlers[320];
-
-/* A signal handler which just records that a signal occurred
- (it will be raised later, if and when the signal is unblocked). */
-static void
-sig_suspender (int signo)
-{
- sigaddset (&msdos_pending_signals, signo);
-}
-
-int
-sigprocmask (int how, const sigset_t *new_set, sigset_t *old_set)
-{
- int signo;
- sigset_t new_mask;
-
- /* If called for the first time, initialize. */
- if (sigprocmask_count != __bss_count)
- {
- sigprocmask_count = __bss_count;
- sigemptyset (&msdos_pending_signals);
- sigemptyset (¤t_mask);
- for (signo = 0; signo < 320; signo++)
- prev_handlers[signo] = SIG_ERR;
- }
-
- if (old_set)
- *old_set = current_mask;
-
- if (new_set == 0)
- return 0;
-
- if (how != SIG_BLOCK && how != SIG_UNBLOCK && how != SIG_SETMASK)
- {
- errno = EINVAL;
- return -1;
- }
-
- sigemptyset (&new_mask);
-
- /* DJGPP supports upto 320 signals. */
- for (signo = 0; signo < 320; signo++)
- {
- if (sigismember (¤t_mask, signo))
- sigaddset (&new_mask, signo);
- else if (sigismember (new_set, signo) && how != SIG_UNBLOCK)
- {
- sigaddset (&new_mask, signo);
-
- /* SIGKILL is silently ignored, as on other platforms. */
- if (signo != SIGKILL && prev_handlers[signo] == SIG_ERR)
- prev_handlers[signo] = signal (signo, sig_suspender);
- }
- if (( how == SIG_UNBLOCK
- && sigismember (&new_mask, signo)
- && sigismember (new_set, signo))
- || (how == SIG_SETMASK
- && sigismember (&new_mask, signo)
- && !sigismember (new_set, signo)))
- {
- sigdelset (&new_mask, signo);
- if (prev_handlers[signo] != SIG_ERR)
- {
- signal (signo, prev_handlers[signo]);
- prev_handlers[signo] = SIG_ERR;
- }
- if (sigismember (&msdos_pending_signals, signo))
- {
- sigdelset (&msdos_pending_signals, signo);
- raise (signo);
- }
- }
- }
- current_mask = new_mask;
- return 0;
-}
-
-#endif /* not __DJGPP_MINOR__ < 2 */
-
#ifndef HAVE_SELECT
#include "sysselect.h"
dos_ttcooked ();
ScreenSetCursor (10, 0);
cputs ("\r\n\nEmacs aborted!\r\n");
-#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2
- if (screen_virtual_segment)
- dosv_refresh_virtual_screen (2 * 10 * screen_size_X, 4 * screen_size_X);
- /* Generate traceback, so we could tell whodunit. */
- signal (SIGINT, SIG_DFL);
- __asm__ __volatile__ ("movb $0x1b,%al;call ___djgpp_hw_exception");
-#else /* __DJGPP_MINOR__ >= 2 */
raise (SIGABRT);
-#endif /* __DJGPP_MINOR__ >= 2 */
exit (2);
}