summaryrefslogtreecommitdiff
path: root/lib-src
diff options
context:
space:
mode:
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/Makefile.in34
-rw-r--r--lib-src/be_resources.cc177
-rw-r--r--lib-src/ebrowse.c1
-rw-r--r--lib-src/emacsclient.c28
-rw-r--r--lib-src/etags.c10
-rw-r--r--lib-src/make-docfile.c141
-rw-r--r--lib-src/movemail.c1
-rw-r--r--lib-src/ntlib.c13
-rw-r--r--lib-src/seccomp-filter.c3
9 files changed, 262 insertions, 146 deletions
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index 338ba0d5767..0453b935068 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -20,6 +20,9 @@
SHELL = @SHELL@
+# Prevent any settings in the user environment causing problems.
+unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH
+
# Following ../lisp/Makefile.in.
EMACS = ../src/emacs${EXEEXT}
EMACSOPT = -batch --no-site-file --no-site-lisp
@@ -27,7 +30,9 @@ EMACSOPT = -batch --no-site-file --no-site-lisp
# ==================== Things 'configure' will edit ====================
CC=@CC@
+CXX=@CXX@
CFLAGS=@CFLAGS@
+CXXFLAGS=@CXXFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
@@ -130,6 +135,11 @@ MKDIR_P = @MKDIR_P@
# ========================== Lists of Files ===========================
+## Haiku build-time support
+HAVE_BE_APP=@HAVE_BE_APP@
+HAIKU_LIBS=@HAIKU_LIBS@
+HAIKU_CFLAGS=@HAIKU_CFLAGS@
+
# emacsclientw.exe for MinGW, empty otherwise
CLIENTW = @CLIENTW@
@@ -143,7 +153,11 @@ UTILITIES = hexl${EXEEXT} \
$(if $(with_mailutils), , movemail${EXEEXT}) \
$(and $(use_gamedir), update-game-score${EXEEXT})
+ifeq ($(HAVE_BE_APP),yes)
+DONT_INSTALL= make-docfile${EXEEXT} make-fingerprint${EXEEXT} be-resources
+else
DONT_INSTALL= make-docfile${EXEEXT} make-fingerprint${EXEEXT}
+endif
# Like UTILITIES, but they're not system-dependent, and should not be
# deleted by the distclean target.
@@ -232,6 +246,10 @@ WINDRES = @WINDRES@
## Some systems define this to request special libraries.
LIBS_SYSTEM = @LIBS_SYSTEM@
+# Flags that could be in WARN_CFLAGS, but are invalid for C++.
+NON_CXX_CFLAGS = -Wmissing-prototypes -Wnested-externs -Wold-style-definition \
+ -Wstrict-prototypes -Wno-override-init
+
BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \
$(WARN_CFLAGS) $(WERROR_CFLAGS) \
-I. -I../src -I../lib \
@@ -240,6 +258,9 @@ BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \
ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS}
+ALL_CXXFLAGS = $(filter-out ${NON_CXX_CFLAGS},${BASE_CFLAGS}) \
+ ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} ${HAIKU_CFLAGS}
+
# Configuration files for .o files to depend on.
config_h = ../src/config.h $(srcdir)/../src/conf_post.h
@@ -279,8 +300,8 @@ maybe-blessmail: $(BLESSMAIL_TARGET)
## up if chown or chgrp fails, as the package responsible for
## installing Emacs can fix this problem later.
$(DESTDIR)${archlibdir}: all
- @echo
- @echo "Installing utilities run internally by Emacs."
+ $(info $ )
+ $(info Installing utilities run internally by Emacs.)
umask 022 && ${MKDIR_P} "$(DESTDIR)${archlibdir}"
exp_archlibdir=`cd "$(DESTDIR)${archlibdir}" && /bin/pwd` && \
if [ "$$exp_archlibdir" != "`/bin/pwd`" ]; then \
@@ -321,8 +342,8 @@ $(DESTDIR)${archlibdir}: all
.PHONY: bootstrap-clean check tags
install: $(DESTDIR)${archlibdir}
- @echo
- @echo "Installing utilities for users to run."
+ $(info $ )
+ $(info Installing utilities for users to run.)
umask 022 && ${MKDIR_P} "$(DESTDIR)${bindir}"
for file in ${INSTALLABLES} ; do \
$(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} \
@@ -357,7 +378,7 @@ bootstrap-clean maintainer-clean: distclean
## Test the contents of the directory.
check:
- @echo "We don't have any tests for the lib-src/ directory yet."
+ $(info We don't have any tests for the lib-src/ directory yet.)
tagsfiles = $(wildcard ${srcdir}/*.[ch])
@@ -409,6 +430,9 @@ emacsclientw${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(CLIENTRES) $(config_h)
$(LOADLIBES) \
$(LIB_WSOCK32) $(LIB_EACCESS) $(LIBS_ECLIENT) -o $@
+be-resources: ${srcdir}/be_resources.cc ${config_h}
+ $(AM_V_CXXLD)$(CXX) ${ALL_CXXFLAGS} ${HAIKU_LIBS} $< -o $@
+
NTINC = ${srcdir}/../nt/inc
NTDEPS = $(NTINC)/ms-w32.h $(NTINC)/sys/stat.h $(NTINC)/inttypes.h \
$(NTINC)/stdint.h $(NTINC)/pwd.h $(NTINC)/sys/time.h $(NTINC)/stdbool.h \
diff --git a/lib-src/be_resources.cc b/lib-src/be_resources.cc
new file mode 100644
index 00000000000..414f91a192d
--- /dev/null
+++ b/lib-src/be_resources.cc
@@ -0,0 +1,177 @@
+/* Haiku window system support
+ Copyright (C) 2021-2022 Free Software Foundation, Inc.
+
+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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <cstdio>
+#include <cstring>
+#include <cstdlib>
+
+#include <SupportDefs.h>
+#include <Path.h>
+#include <AppFileInfo.h>
+#include <TranslationUtils.h>
+#include <Application.h>
+#include <Catalog.h>
+#include <Roster.h>
+#include <Bitmap.h>
+#include <Rect.h>
+#include <View.h>
+
+using namespace std;
+
+static void
+be_perror (status_t code, char *arg)
+{
+ if (code != B_OK)
+ {
+ switch (code)
+ {
+ case B_BAD_VALUE:
+ fprintf (stderr, "%s: Bad value\n", arg);
+ break;
+ case B_ENTRY_NOT_FOUND:
+ fprintf (stderr, "%s: Not found\n", arg);
+ break;
+ case B_PERMISSION_DENIED:
+ fprintf (stderr, "%s: Permission denied\n", arg);
+ break;
+ case B_NO_MEMORY:
+ fprintf (stderr, "%s: No memory\n", arg);
+ break;
+ case B_LINK_LIMIT:
+ fprintf (stderr, "%s: Link limit reached\n", arg);
+ break;
+ case B_BUSY:
+ fprintf (stderr, "%s: Busy\n", arg);
+ break;
+ case B_NO_MORE_FDS:
+ fprintf (stderr, "%s: No more file descriptors\n", arg);
+ break;
+ case B_FILE_ERROR:
+ fprintf (stderr, "%s: File error\n", arg);
+ break;
+ default:
+ fprintf (stderr, "%s: Unknown error\n", arg);
+ }
+ }
+ else
+ {
+ abort ();
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ BApplication app ("application/x-vnd.GNU-emacs-resource-helper");
+ BFile file;
+ BBitmap *icon;
+ BBitmap scale32 (BRect (0, 0, 31, 31), B_RGBA32, true);
+ BBitmap scale16 (BRect (0, 0, 15, 15), B_RGBA32, true);
+ BAppFileInfo info;
+ status_t code;
+ struct version_info vinfo;
+ char *v = strdup (PACKAGE_VERSION);
+
+ if (scale32.InitCheck () != B_OK
+ || scale16.InitCheck () != B_OK)
+ {
+ fprintf (stderr, "Bitmap initialization ran out of memory\n");
+ return EXIT_FAILURE;
+ }
+
+ BView scale32view (scale32.Bounds (), NULL,
+ B_FOLLOW_NONE, B_WILL_DRAW);
+ BView scale16view (scale16.Bounds (), NULL,
+ B_FOLLOW_NONE, B_WILL_DRAW);
+
+ if (argc != 3)
+ {
+ printf ("be-resources ICON FILE: make FILE appropriate for Emacs.\n");
+ return EXIT_FAILURE;
+ }
+
+ code = file.SetTo (argv[2], B_READ_WRITE);
+ if (code != B_OK)
+ {
+ be_perror (code, argv[2]);
+ return EXIT_FAILURE;
+ }
+ code = info.SetTo (&file);
+ if (code != B_OK)
+ {
+ be_perror (code, argv[2]);
+ return EXIT_FAILURE;
+ }
+ code = info.SetAppFlags (B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY);
+ if (code != B_OK)
+ {
+ be_perror (code, argv[2]);
+ return EXIT_FAILURE;
+ }
+
+ icon = BTranslationUtils::GetBitmapFile (argv[1], NULL);
+
+ if (!icon)
+ {
+ be_perror (B_ERROR, argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ scale32.AddChild (&scale32view);
+ scale16.AddChild (&scale16view);
+
+ if (!scale32view.LockLooper ()
+ || !scale16view.LockLooper ())
+ {
+ fprintf (stderr, "Failed to lock bitmap looper\n");
+ return EXIT_FAILURE;
+ }
+
+ scale32view.DrawBitmapAsync (icon, scale32.Bounds ());
+ scale16view.DrawBitmapAsync (icon, scale16.Bounds ());
+
+ scale32view.Sync ();
+ scale16view.Sync ();
+
+ info.SetIcon (&scale16, B_MINI_ICON);
+ info.SetIcon (&scale32, B_LARGE_ICON);
+ info.SetSignature ("application/x-vnd.GNU-emacs");
+
+ v = strtok (v, ".");
+ vinfo.major = atoi (v);
+
+ v = strtok (NULL, ".");
+ vinfo.middle = atoi (v);
+
+ v = strtok (NULL, ".");
+ vinfo.minor = v ? atoi (v) : 0;
+
+ vinfo.variety = 0;
+ vinfo.internal = 0;
+
+ strncpy ((char *) &vinfo.short_info, PACKAGE_VERSION,
+ sizeof vinfo.short_info - 1);
+ strncpy ((char *) &vinfo.long_info, PACKAGE_STRING,
+ sizeof vinfo.long_info - 1);
+
+ info.SetVersionInfo (&vinfo, B_APP_VERSION_KIND);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c
index ac7e7901878..b77572734fe 100644
--- a/lib-src/ebrowse.c
+++ b/lib-src/ebrowse.c
@@ -26,6 +26,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <assert.h>
#include <getopt.h>
+#include <attribute.h>
#include <flexmember.h>
#include <min-max.h>
#include <unlocked-io.h>
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 57a5eff3bf6..7406ef3490e 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -80,6 +80,7 @@ char *w32_getenv (const char *);
#include <sys/stat.h>
#include <unistd.h>
+#include <attribute.h>
#include <filename.h>
#include <intprops.h>
#include <min-max.h>
@@ -116,6 +117,9 @@ static bool eval;
/* True means open a new frame. --create-frame etc. */
static bool create_frame;
+/* True means reuse a frame if it already exists. */
+static bool reuse_frame;
+
/* The display on which Emacs should work. --display. */
static char const *display;
@@ -165,6 +169,7 @@ static struct option const longopts[] =
{ "tty", no_argument, NULL, 't' },
{ "nw", no_argument, NULL, 't' },
{ "create-frame", no_argument, NULL, 'c' },
+ { "reuse-frame", no_argument, NULL, 'r' },
{ "alternate-editor", required_argument, NULL, 'a' },
{ "frame-parameters", required_argument, NULL, 'F' },
#ifdef SOCKETS_IN_FILE_SYSTEM
@@ -551,6 +556,11 @@ decode_options (int argc, char **argv)
create_frame = true;
break;
+ case 'r':
+ create_frame = true;
+ reuse_frame = true;
+ break;
+
case 'p':
parent_id = optarg;
create_frame = true;
@@ -594,9 +604,16 @@ decode_options (int argc, char **argv)
alt_display = "ns";
#elif defined (HAVE_NTGUI)
alt_display = "w32";
+#elif defined (HAVE_HAIKU)
+ alt_display = "be";
#endif
+#ifdef HAVE_PGTK
+ display = egetenv ("WAYLAND_DISPLAY");
+ alt_display = egetenv ("DISPLAY");
+#else
display = egetenv ("DISPLAY");
+#endif
}
if (!display)
@@ -647,6 +664,8 @@ The following OPTIONS are accepted:\n\
-nw, -t, --tty Open a new Emacs frame on the current terminal\n\
-c, --create-frame Create a new frame instead of trying to\n\
use the current Emacs frame\n\
+-r, --reuse-frame Create a new frame if none exists, otherwise\n\
+ use the current Emacs frame\n\
", "\
-F ALIST, --frame-parameters=ALIST\n\
Set the parameters of a new frame\n\
@@ -1744,8 +1763,9 @@ start_daemon_and_retry_set_socket (void)
}
/* Try connecting, the daemon should have started by now. */
- message (true,
- "Emacs daemon should have started, trying to connect again\n");
+ if (!quiet)
+ message (true,
+ "Emacs daemon should have started, trying to connect again\n");
}
else if (dpid < 0)
{
@@ -1836,7 +1856,7 @@ start_daemon_and_retry_set_socket (void)
/* Try connecting, the daemon should have started by now. */
/* It's just a progress message, so don't pop a dialog if this is
emacsclientw. */
- if (!w32_window_app ())
+ if (!quiet && !w32_window_app ())
message (true,
"Emacs daemon should have started, trying to connect again\n");
#endif /* WINDOWSNT */
@@ -1940,7 +1960,7 @@ main (int argc, char **argv)
if (nowait)
send_to_emacs (emacs_socket, "-nowait ");
- if (!create_frame)
+ if (!create_frame || reuse_frame)
send_to_emacs (emacs_socket, "-current-frame ");
if (display)
diff --git a/lib-src/etags.c b/lib-src/etags.c
index f665f35fa60..65b9fae8d5a 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -112,6 +112,7 @@ University of California, as described above. */
# define O_CLOEXEC O_NOINHERIT
#endif /* WINDOWSNT */
+#include <attribute.h>
#include <inttypes.h>
#include <limits.h>
#include <unistd.h>
@@ -5773,7 +5774,7 @@ static void
TEX_decode_env (const char *evarname, const char *defenv)
{
const char *env, *p;
- ptrdiff_t len;
+ ptrdiff_t len = 1;
/* Append default string to environment. */
env = getenv (evarname);
@@ -5782,8 +5783,13 @@ TEX_decode_env (const char *evarname, const char *defenv)
else
env = concat (env, defenv, "");
+ /* If the environment variable doesn't start with a colon, increase
+ the length of the token table. */
+ if (*env != ':')
+ len++;
+
/* Allocate a token table */
- for (len = 1, p = env; (p = strchr (p, ':')); )
+ for (p = env; (p = strchr (p, ':')); )
if (*++p)
len++;
TEX_toktab = xnew (len, linebuffer);
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index ebe501f8677..d2d4b1d2778 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -19,8 +19,8 @@ You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
-/* The arguments given to this program are all the C and Lisp source files
- of GNU Emacs. .elc and .el and .c files are allowed.
+/* The arguments given to this program are all the C and some Lisp source files
+ of GNU Emacs. .el and .c files are allowed.
A .o file can also be specified; the .c file it was made from is used.
This helps the makefile pass the correct list of files.
Option -d DIR means change to DIR before looking for files.
@@ -42,6 +42,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <stdlib.h>
#include <string.h>
+#include <attribute.h>
#include <binary-io.h>
#include <c-ctype.h>
#include <intprops.h>
@@ -62,9 +63,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
Similarly, msdos defines this as sys_chdir, but we're not linking with the
file where that function is defined. */
#undef chdir
-#define IS_SLASH(c) ((c) == '/' || (c) == '\\' || (c) == ':')
-#else /* not DOS_NT */
-#define IS_SLASH(c) ((c) == '/')
#endif /* not DOS_NT */
static void scan_file (char *filename);
@@ -242,9 +240,7 @@ scan_file (char *filename)
if (!generate_globals)
put_filename (filename);
- if (len > 4 && !strcmp (filename + len - 4, ".elc"))
- scan_lisp_file (filename, "rb");
- else if (len > 3 && !strcmp (filename + len - 3, ".el"))
+ if (len > 3 && !strcmp (filename + len - 3, ".el"))
scan_lisp_file (filename, "r");
else
scan_c_file (filename, "r");
@@ -1225,7 +1221,7 @@ scan_c_stream (FILE *infile)
fatal ("read error");
}
-/* Read a file of Lisp code, compiled or interpreted.
+/* Read a file of Lisp source code.
Looks for
(defun NAME ARGS DOCSTRING ...)
(defmacro NAME ARGS DOCSTRING ...)
@@ -1252,10 +1248,8 @@ scan_c_stream (FILE *infile)
For defun, defmacro, and autoload, we know how to skip over the
arglist, but the doc string must still have a backslash and newline
immediately after the double quote.
- The only source files that must follow this convention are preloaded
- uncompiled ones like loaddefs.el; aside from that, it is always the .elc
- file that we should look at, and they are no problem because byte-compiler
- output follows this convention.
+ The only source files that follow this convention are autoload-generated
+ files like loaddefs.el;
The NAME and DOCSTRING are output.
NAME is preceded by `F' for a function or `V' for a variable.
An entry is output only if DOCSTRING has \ newline just after the opening ".
@@ -1331,50 +1325,14 @@ search_lisp_doc_at_eol (FILE *infile)
return true;
}
-#define DEF_ELISP_FILE(fn) { #fn, sizeof(#fn) - 1 }
-
static void
scan_lisp_file (const char *filename, const char *mode)
{
FILE *infile;
int c;
- char *saved_string = 0;
- /* These are the only files that are loaded uncompiled, and must
- follow the conventions of the doc strings expected by this
- function. These conventions are automatically followed by the
- byte compiler when it produces the .elc files. */
- static struct {
- const char *fn;
- int fl;
- } const uncompiled[] = {
- DEF_ELISP_FILE (loaddefs.el),
- DEF_ELISP_FILE (loadup.el),
- DEF_ELISP_FILE (charprop.el),
- DEF_ELISP_FILE (cp51932.el),
- DEF_ELISP_FILE (eucjp-ms.el)
- };
- int i;
- int flen = strlen (filename);
if (generate_globals)
fatal ("scanning lisp file when -g specified");
- if (flen > 3 && !strcmp (filename + flen - 3, ".el"))
- {
- bool match = false;
- for (i = 0; i < sizeof (uncompiled) / sizeof (uncompiled[0]); i++)
- {
- if (uncompiled[i].fl <= flen
- && !strcmp (filename + flen - uncompiled[i].fl, uncompiled[i].fn)
- && (flen == uncompiled[i].fl
- || IS_SLASH (filename[flen - uncompiled[i].fl - 1])))
- {
- match = true;
- break;
- }
- }
- if (!match)
- fatal ("uncompiled lisp file %s is not supported", filename);
- }
infile = fopen (filename, mode);
if (infile == NULL)
@@ -1398,54 +1356,6 @@ scan_lisp_file (const char *filename, const char *mode)
/* Skip the line break. */
while (c == '\n' || c == '\r')
c = getc (infile);
- /* Detect a dynamic doc string and save it for the next expression. */
- if (c == '#')
- {
- c = getc (infile);
- if (c == '@')
- {
- ptrdiff_t length = 0;
- ptrdiff_t i;
-
- /* Read the length. */
- while ((c = getc (infile),
- c_isdigit (c)))
- {
- if (INT_MULTIPLY_WRAPV (length, 10, &length)
- || INT_ADD_WRAPV (length, c - '0', &length)
- || SIZE_MAX < length)
- memory_exhausted ();
- }
-
- if (length <= 1)
- fatal ("invalid dynamic doc string length");
-
- if (c != ' ')
- fatal ("space not found after dynamic doc string length");
-
- /* The next character is a space that is counted in the length
- but not part of the doc string.
- We already read it, so just ignore it. */
- length--;
-
- /* Read in the contents. */
- free (saved_string);
- saved_string = xmalloc (length);
- for (i = 0; i < length; i++)
- saved_string[i] = getc (infile);
- /* The last character is a ^_.
- That is needed in the .elc file
- but it is redundant in DOC. So get rid of it here. */
- saved_string[length - 1] = 0;
- /* Skip the line break. */
- while (c == '\n' || c == '\r')
- c = getc (infile);
- /* Skip the following line. */
- while (! (c == '\n' || c == '\r' || c < 0))
- c = getc (infile);
- }
- continue;
- }
if (c != '(')
continue;
@@ -1498,7 +1408,6 @@ scan_lisp_file (const char *filename, const char *mode)
}
}
- /* defcustom can only occur in uncompiled Lisp files. */
else if (! strcmp (buffer, "defvar")
|| ! strcmp (buffer, "defconst")
|| ! strcmp (buffer, "defcustom"))
@@ -1506,9 +1415,8 @@ scan_lisp_file (const char *filename, const char *mode)
type = 'V';
read_lisp_symbol (infile, buffer);
- if (saved_string == 0)
- if (!search_lisp_doc_at_eol (infile))
- continue;
+ if (!search_lisp_doc_at_eol (infile))
+ continue;
}
else if (! strcmp (buffer, "custom-declare-variable")
@@ -1548,9 +1456,8 @@ scan_lisp_file (const char *filename, const char *mode)
}
}
- if (saved_string == 0)
- if (!search_lisp_doc_at_eol (infile))
- continue;
+ if (!search_lisp_doc_at_eol (infile))
+ continue;
}
else if (! strcmp (buffer, "fset") || ! strcmp (buffer, "defalias"))
@@ -1586,9 +1493,8 @@ scan_lisp_file (const char *filename, const char *mode)
}
}
- if (saved_string == 0)
- if (!search_lisp_doc_at_eol (infile))
- continue;
+ if (!search_lisp_doc_at_eol (infile))
+ continue;
}
else if (! strcmp (buffer, "autoload"))
@@ -1632,9 +1538,8 @@ scan_lisp_file (const char *filename, const char *mode)
}
read_c_string_or_comment (infile, 0, false, 0);
- if (saved_string == 0)
- if (!search_lisp_doc_at_eol (infile))
- continue;
+ if (!search_lisp_doc_at_eol (infile))
+ continue;
}
#ifdef DEBUG
@@ -1652,23 +1557,13 @@ scan_lisp_file (const char *filename, const char *mode)
continue;
}
- /* At this point, we should either use the previous dynamic doc string in
- saved_string or gobble a doc string from the input file.
- In the latter case, the opening quote (and leading backslash-newline)
+ /* At this point, we should gobble a doc string from the input file.
+ The opening quote (and leading backslash-newline)
have already been read. */
printf ("\037%c%s\n", type, buffer);
- if (saved_string)
- {
- fputs (saved_string, stdout);
- /* Don't use one dynamic doc string twice. */
- free (saved_string);
- saved_string = 0;
- }
- else
- read_c_string_or_comment (infile, 1, false, 0);
+ read_c_string_or_comment (infile, 1, false, 0);
}
- free (saved_string);
if (ferror (infile) || fclose (infile) != 0)
fatal ("%s: read error", filename);
}
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 888688f90b1..aa3c15e72e8 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -69,6 +69,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <signal.h>
#include <string.h>
+#include <attribute.h>
#include <unlocked-io.h>
#include "syswait.h"
diff --git a/lib-src/ntlib.c b/lib-src/ntlib.c
index ce4d7e1a43e..ee21abc7230 100644
--- a/lib-src/ntlib.c
+++ b/lib-src/ntlib.c
@@ -20,14 +20,8 @@ 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 <https://www.gnu.org/licenses/>. */
-/* Temporary workaround for compilation problems with MinGW64 GCC 11.
- The funky #ifdef's are to avoid warnings about unused macros. */
-#define _GL_ATTRIBUTE_MALLOC
-#define _GL_ATTRIBUTE_DEALLOC_FREE
-#ifdef _GL_ATTRIBUTE_MALLOC
-#endif
-#ifdef _GL_ATTRIBUTE_DEALLOC_FREE
-#endif
+#define DEFER_MS_W32_H
+#include <config.h>
#include <windows.h>
#include <stdlib.h>
@@ -296,9 +290,6 @@ is_exec (const char * name)
stricmp (p, ".cmd") == 0));
}
-/* FIXME? This is in configure.ac now - is this still needed? */
-#define IS_DIRECTORY_SEP(x) ((x) == '/' || (x) == '\\')
-
/* We need stat/fsfat below because nt/inc/sys/stat.h defines struct
stat that is incompatible with the MS run-time libraries. */
int
diff --git a/lib-src/seccomp-filter.c b/lib-src/seccomp-filter.c
index b5158510104..9f0de7d64f8 100644
--- a/lib-src/seccomp-filter.c
+++ b/lib-src/seccomp-filter.c
@@ -59,7 +59,8 @@ variants of those files that can be used to sandbox Emacs before
#include <seccomp.h>
#include <unistd.h>
-#include "verify.h"
+#include <attribute.h>
+#include <verify.h>
#ifndef ARCH_CET_STATUS
#define ARCH_CET_STATUS 0x3001