mirror of git://git.sv.gnu.org/emacs.git
Compare commits
39 Commits
4306aba2d0
...
ea98a6af2f
Author | SHA1 | Date |
---|---|---|
Po Lu | ea98a6af2f | |
Po Lu | af6df8e045 | |
Eli Zaretskii | 5b9995052d | |
Po Lu | 67b1da215c | |
Po Lu | 26a407cebe | |
Po Lu | ed03b7ab9f | |
Po Lu | 41596bd711 | |
Po Lu | 15fd1e2cb6 | |
Po Lu | 47a0fc91df | |
Paul Eggert | 99a5c75f3b | |
Paul Eggert | 7ae091d933 | |
Paul Eggert | 2e13c2adba | |
Eli Zaretskii | dcb6a9ebcb | |
Po Lu | 6d4179957a | |
Po Lu | b990c37b9a | |
Po Lu | f43f7d7a43 | |
Eli Zaretskii | 733ff78581 | |
Eli Zaretskii | 48c9285c19 | |
kobarity | 6380806196 | |
Eli Zaretskii | 5fdc6d8357 | |
Eli Zaretskii | 3eca0bc307 | |
Michael Albinus | b43c31d2f5 | |
Po Lu | 1c4b1ce8fa | |
Po Lu | 3ff83246c8 | |
Eli Zaretskii | 0ec9a02a0d | |
Eric Abrahamsen | 41bfca0005 | |
Eric Abrahamsen | b1e94b7bd3 | |
Juri Linkov | 5d8c2bad21 | |
Jim Porter | ffc70962ca | |
Mattias Engdegård | 184d6e8c02 | |
Eli Zaretskii | 78761d699e | |
Eli Zaretskii | 3129fed4be | |
Po Lu | 0f67ddd8d9 | |
Eli Zaretskii | 2f8bccf9d8 | |
Eli Zaretskii | f9832e80b8 | |
Eli Zaretskii | a7d247be90 | |
Illia Ostapyshyn | 8560ee7b5c | |
Eli Zaretskii | 74c6b59af1 | |
Eli Zaretskii | 3d65d4306b |
|
@ -126,6 +126,7 @@ rm -- "$src"lib/gl_openssl.h \
|
|||
"$src"m4/gnulib-cache.m4 "$src"m4/gnulib-tool.m4 \
|
||||
"$src"m4/locale-fr.m4 \
|
||||
"$src"m4/manywarnings-c++.m4 \
|
||||
"$src"m4/off64_t.m4 \
|
||||
"$src"m4/warn-on-use.m4 "$src"m4/wint_t.m4 &&
|
||||
cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc &&
|
||||
cp -- "$gnulib_srcdir"/build-aux/config.guess \
|
||||
|
|
|
@ -1584,6 +1584,10 @@ AC_DEFUN([gt_TYPE_WINT_T],
|
|||
AC_DEFUN_ONCE([gl_STDLIB_H],
|
||||
[AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
|
||||
gl_NEXT_HEADERS([stdlib.h])])
|
||||
# Emacs does not need to check for off64_t.
|
||||
AC_DEFUN([gl_TYPE_OFF64_T],
|
||||
[HAVE_OFF64_T=1
|
||||
AC_SUBST([HAVE_OFF64_T])])
|
||||
|
||||
# Initialize gnulib right after choosing the compiler.
|
||||
dnl Amongst other things, this sets AR and ARFLAGS.
|
||||
|
|
|
@ -175,6 +175,9 @@ scroll the current window by one line at a time. If you intend to use
|
|||
any of these commands, you might want to give them key bindings
|
||||
(@pxref{Init Rebinding}).
|
||||
|
||||
On graphical displays, you can also scroll a window using the scroll
|
||||
bar; @pxref{Scroll Bars}.
|
||||
|
||||
@node Recentering
|
||||
@section Recentering
|
||||
|
||||
|
@ -405,6 +408,10 @@ than the amount you previously set by @code{scroll-left}. When
|
|||
other than the one showing the cursor will be scrolled by that minimal
|
||||
amount.
|
||||
|
||||
On graphical displays, you can scroll a window horizontally using
|
||||
the horizontal scroll bar, if you turn on the optional
|
||||
@code{horizontal-scroll-bar-mode}; @pxref{Scroll Bars}.
|
||||
|
||||
@node Narrowing
|
||||
@section Narrowing
|
||||
@cindex widening
|
||||
|
|
|
@ -1146,11 +1146,11 @@ text or moving point with a keyboard command will usually bring it back
|
|||
into view.
|
||||
|
||||
@findex horizontal-scroll-bar-mode
|
||||
To toggle the use of horizontal scroll bars, type @kbd{M-x
|
||||
horizontal-scroll-bar-mode}. This command applies to all frames,
|
||||
To toggle the use of horizontal scroll bars, type @w{@kbd{M-x
|
||||
horizontal-scroll-bar-mode}}. This command applies to all frames,
|
||||
including frames yet to be created. To toggle horizontal scroll bars
|
||||
for just the selected frame, use the command @kbd{M-x
|
||||
toggle-horizontal-scroll-bar}.
|
||||
for just the selected frame, use the command @w{@kbd{M-x
|
||||
toggle-horizontal-scroll-bar}}.
|
||||
|
||||
@vindex horizontal-scroll-bar-mode
|
||||
To control the use of horizontal scroll bars at startup, customize the
|
||||
|
|
|
@ -590,7 +590,7 @@ even when @command{mutool} can be found on your system, customize the
|
|||
variable @code{doc-view-imenu-enabled} to the @code{nil} value. You
|
||||
can further customize how @code{imenu} items are formatted and
|
||||
displayed using the variables @code{doc-view-imenu-format} and
|
||||
@code{doc-view-flatten}.
|
||||
@code{doc-view-imenu-flatten}.
|
||||
|
||||
@node DocView Searching
|
||||
@subsection DocView Searching
|
||||
|
|
|
@ -527,7 +527,7 @@ while searching for an entry matching the @code{rms} user on host
|
|||
@code{gnu.org} and port @code{22}, then the entry
|
||||
@file{gnu.org:22/rms.gpg} is preferred over @file{gnu.org.gpg}.
|
||||
However, such processing is not applied when the option
|
||||
@code{auth-source-pass-extra-parameters} is set to @code{t}.
|
||||
@code{auth-source-pass-extra-query-keywords} is set to @code{t}.
|
||||
|
||||
Users of @code{pass} may also be interested in functionality provided
|
||||
by other Emacs packages:
|
||||
|
|
|
@ -489,14 +489,16 @@ an @command{ssh} server:
|
|||
@file{@trampfn{plink,user@@host,/path/to/file}}.
|
||||
|
||||
|
||||
@anchor{Quick Start Guide su, sudo, doas, androidsu and sg methods}
|
||||
@section Using @option{su}, @option{sudo}, @option{doas}, @option{androidsu} and @option{sg}
|
||||
@anchor{Quick Start Guide su, sudo, doas, run0, androidsu and sg methods}
|
||||
@section Using @option{su}, @option{sudo}, @option{doas}, @option{run0}, @option{androidsu} and @option{sg}
|
||||
@cindex method @option{su}
|
||||
@cindex @option{su} method
|
||||
@cindex method @option{sudo}
|
||||
@cindex @option{sudo} method
|
||||
@cindex method @option{doas}
|
||||
@cindex @option{doas} method
|
||||
@cindex method @option{run0}
|
||||
@cindex @option{run0} method
|
||||
@cindex method @option{androidsu}
|
||||
@cindex @option{androidsu} method
|
||||
@cindex method @option{sg}
|
||||
|
@ -504,9 +506,11 @@ an @command{ssh} server:
|
|||
|
||||
Sometimes, it is necessary to work on your local host under different
|
||||
permissions. For this, you can use the @option{su} or @option{sudo}
|
||||
connection method. On OpenBSD systems, the @option{doas} connection
|
||||
method offers the same functionality. If your local system is
|
||||
Android, use the method @option{androidsu} instead of @option{su}.
|
||||
connection method. If your system is @code{systemd}-based, there is
|
||||
the @option{run0} connection method. On OpenBSD systems, the
|
||||
@option{doas} connection method offers the same functionality. If
|
||||
your local system is Android, use the method @option{androidsu}
|
||||
instead of @option{su}.
|
||||
|
||||
These methods use @samp{root} as default user name and the return
|
||||
value of @code{(system-name)} as default host name. Therefore, it is
|
||||
|
@ -516,8 +520,8 @@ The method @option{sg} stands for ``switch group''; here the user name
|
|||
is used as the group to change to. The default host name is the same.
|
||||
|
||||
|
||||
@anchor{Quick Start Guide Combining ssh, plink, su, sudo and doas methods}
|
||||
@section Combining @option{ssh} or @option{plink} with @option{su}, @option{sudo} or @option{doas}
|
||||
@anchor{Quick Start Guide Combining ssh, plink, su, sudo, doas and run0 methods}
|
||||
@section Combining @option{ssh} or @option{plink} with @option{su}, @option{sudo}, @option{doas} or @option{run0}
|
||||
@cindex method @option{ssh}
|
||||
@cindex @option{ssh} method
|
||||
@cindex method @option{plink}
|
||||
|
@ -528,13 +532,15 @@ is used as the group to change to. The default host name is the same.
|
|||
@cindex @option{sudo} method
|
||||
@cindex method @option{doas}
|
||||
@cindex @option{doas} method
|
||||
@cindex method @option{run0}
|
||||
@cindex @option{run0} method
|
||||
|
||||
If the @option{su}, @option{sudo} or @option{doas} option should be
|
||||
performed on another host, it can be combined with a leading
|
||||
@option{ssh} or @option{plink} option. That means that @value{tramp}
|
||||
connects first to the other host with non-administrative credentials,
|
||||
and changes to administrative credentials on that host afterwards. In
|
||||
a simple case, the syntax looks like
|
||||
If the @option{su}, @option{sudo}, @option{doas} or @option{run0}
|
||||
method should be performed on another host, it can be combined with a
|
||||
leading @option{ssh} or @option{plink} method. That means that
|
||||
@value{tramp} connects first to the other host with non-administrative
|
||||
credentials, and changes to administrative credentials on that host
|
||||
afterwards. In a simple case, the syntax looks like
|
||||
@file{@trampfn{ssh@value{postfixhop}user@@host|sudo,,/path/to/file}}.
|
||||
@xref{Ad-hoc multi-hops}.
|
||||
|
||||
|
@ -882,6 +888,16 @@ This method is used on OpenBSD like the @command{sudo} command. Like
|
|||
the @option{sudo} method, a @option{doas} connection is disabled after
|
||||
a predefined timeout.
|
||||
|
||||
@item @option{run0}
|
||||
@cindex method @option{run0}
|
||||
@cindex @option{run0} method
|
||||
|
||||
This method is used on @code{systemd}-based hosts. Internally, it
|
||||
uses the @code{systemd-run} command. A @option{run0} connection is
|
||||
disabled after a predefined timeout as well.
|
||||
|
||||
This is an optional method, @ref{Optional methods}.
|
||||
|
||||
@item @option{sg}
|
||||
@cindex method @option{sg}
|
||||
@cindex @option{sg} method
|
||||
|
@ -2104,8 +2120,9 @@ machine melancholia#4711 port davs login daniel%BIZARRE password geheim
|
|||
|
||||
For the methods @option{doas}, @option{sudo} and @option{sudoedit} the
|
||||
password of the user requesting the connection is needed, and not the
|
||||
password of the target user. If these connections happen on the local
|
||||
host, an entry with the local user and local host is used:
|
||||
password of the target user@footnote{On the local host, @code{run0}
|
||||
uses a graphical password agent.}. If these connections happen on the
|
||||
local host, an entry with the local user and local host is used:
|
||||
|
||||
@example
|
||||
machine @var{host} port sudo login @var{user} password secret
|
||||
|
@ -2278,8 +2295,8 @@ All @file{tramp-sh.el} based methods accept the property
|
|||
@t{"session-timeout"}. This is the time (in seconds) after a
|
||||
connection is disabled for security reasons, and must be
|
||||
reestablished. A value of @code{nil} disables this feature. Most of
|
||||
the methods do not set this property except the @option{sudo} and
|
||||
@option{doas} methods, which use predefined values.
|
||||
the methods do not set this property except the @option{sudo},
|
||||
@option{doas} and @option{run0} methods, which use predefined values.
|
||||
|
||||
@item @t{"~"}@*
|
||||
@t{"~user"}
|
||||
|
@ -3815,7 +3832,7 @@ The buffer must either visit a file, or a directory
|
|||
@defopt tramp-file-name-with-method
|
||||
The method @code{tramp-revert-buffer-with-sudo} shows an alternate
|
||||
buffer. It defaults to @code{sudo}, other valid methods are
|
||||
@code{su}, @code{doas}, and @code{ksu}.
|
||||
@code{su}, @code{doas}, @code{run0}, and @code{ksu}.
|
||||
|
||||
@lisp
|
||||
(customize-set-variable 'tramp-file-name-with-method "doas")
|
||||
|
@ -4056,7 +4073,9 @@ here will not work as expected.
|
|||
@vindex ForwardX11Trusted@r{, ssh option}
|
||||
An alternate approach is specify @option{ForwardX11 yes} or
|
||||
@option{ForwardX11Trusted yes} in @file{~/.ssh/config} on the local
|
||||
host.
|
||||
host. Furthermore, set @code{tramp-use-connection-share} to
|
||||
@code{nil} (@pxref{Using ssh connection sharing}), in order to avoid
|
||||
unwanted side effects.
|
||||
|
||||
|
||||
@subsection Running @code{shell} on a remote host
|
||||
|
|
12
etc/NEWS
12
etc/NEWS
|
@ -1069,6 +1069,11 @@ This provides access to system files with elevated privileges granted by
|
|||
the idiosyncratic 'su' implementations and system utilities customary on
|
||||
Android.
|
||||
|
||||
+++
|
||||
*** New optional connection method "run0".
|
||||
This connection method is similar to "sudo", but it uses the
|
||||
'systemd-run' program internally.
|
||||
|
||||
+++
|
||||
*** New connection methods "dockercp" and "podmancp".
|
||||
These are the external methods counterparts of "docker" and "podman".
|
||||
|
@ -1471,6 +1476,13 @@ name as a string. The new function
|
|||
'dictionary-completing-read-dictionary' can be used to prompt with
|
||||
completion based on dictionaries that the server supports.
|
||||
|
||||
---
|
||||
*** The default value of 'dictionary-tooltip-dictionary' has changed.
|
||||
The new default value is t, which means use the same dictionary as the
|
||||
value of 'dictionary-default-dictionary'. The previous default value
|
||||
was nil, which effectively disabled 'dictionary-tooltip-mode', even if
|
||||
the mode was turned on.
|
||||
|
||||
** Pp
|
||||
|
||||
*** New 'pp-default-function' user option replaces 'pp-use-max-width'.
|
||||
|
|
18
etc/PROBLEMS
18
etc/PROBLEMS
|
@ -3402,7 +3402,7 @@ for further discussion.
|
|||
|
||||
* Runtime problems specific to macOS
|
||||
|
||||
** Error message when opening Emacs on macOS
|
||||
** Error message about malicious software when opening Emacs on macOS
|
||||
|
||||
When opening Emacs, you may see an error message saying something like
|
||||
this:
|
||||
|
@ -3419,6 +3419,22 @@ the Emacs app icon, and then choose Open. This adds a security
|
|||
exception for Emacs and from now on you should be able to open it by
|
||||
double-clicking on its icon, like any other app.
|
||||
|
||||
** Error message about color list unarchiver when starting Emacs on macOS
|
||||
|
||||
The error message looks like this:
|
||||
|
||||
Failed to initialize color list unarchiver:
|
||||
Error Domain=NSCocoaErrorDomain Code=4864 "*** -[NSKeyedUnarchiver
|
||||
_initForReadingFromData:error:throwLegacyExceptions:]: non-keyed archive cannot be decoded by NSKeyedUnarchiver"
|
||||
UserInfo={NSDebugDescription=*** -[NSKeyedUnarchiver
|
||||
_initForReadingFromData:error:throwLegacyExceptions:]: non-keyed archive cannot be decoded by NSKeyedUnarchiver}
|
||||
|
||||
After showing this message, Emacs usually works normally.
|
||||
|
||||
The usual reason for this is that the color file,
|
||||
~/Library/Colors/Emacs.clr, is stale or corrupted. The solution is to
|
||||
delete that file and restart Emacs.
|
||||
|
||||
** macOS doesn't come with libxpm, so only XPM3 is supported.
|
||||
|
||||
Libxpm is available for macOS as part of the XQuartz project.
|
||||
|
|
|
@ -36,12 +36,6 @@ public final class EmacsNative
|
|||
private static final String[] libraryDeps;
|
||||
|
||||
|
||||
/* Like `dup' in C. */
|
||||
public static native int dup (int fd);
|
||||
|
||||
/* Like `close' in C. */
|
||||
public static native int close (int fd);
|
||||
|
||||
/* Obtain the fingerprint of this build of Emacs. The fingerprint
|
||||
can be used to determine the dump file name. */
|
||||
public static native String getFingerprint ();
|
||||
|
|
|
@ -505,42 +505,45 @@ public final class EmacsView extends ViewGroup
|
|||
public boolean
|
||||
onKeyDown (int keyCode, KeyEvent event)
|
||||
{
|
||||
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)
|
||||
&& !EmacsNative.shouldForwardMultimediaButtons ())
|
||||
return false;
|
||||
if (((keyCode == KeyEvent.KEYCODE_VOLUME_UP
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)
|
||||
&& !EmacsNative.shouldForwardMultimediaButtons ())
|
||||
|| keyCode == KeyEvent.KEYCODE_SCROLL_LOCK
|
||||
|| keyCode == KeyEvent.KEYCODE_NUM_LOCK)
|
||||
return super.onKeyDown (keyCode, event);
|
||||
|
||||
window.onKeyDown (keyCode, event);
|
||||
return true;
|
||||
return window.onKeyDown (keyCode, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean
|
||||
onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)
|
||||
{
|
||||
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)
|
||||
&& !EmacsNative.shouldForwardMultimediaButtons ())
|
||||
return false;
|
||||
if (((keyCode == KeyEvent.KEYCODE_VOLUME_UP
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)
|
||||
&& !EmacsNative.shouldForwardMultimediaButtons ())
|
||||
|| keyCode == KeyEvent.KEYCODE_SCROLL_LOCK
|
||||
|| keyCode == KeyEvent.KEYCODE_NUM_LOCK)
|
||||
return super.onKeyMultiple (keyCode, repeatCount, event);
|
||||
|
||||
window.onKeyDown (keyCode, event);
|
||||
return true;
|
||||
return window.onKeyDown (keyCode, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean
|
||||
onKeyUp (int keyCode, KeyEvent event)
|
||||
{
|
||||
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)
|
||||
&& !EmacsNative.shouldForwardMultimediaButtons ())
|
||||
return false;
|
||||
if (((keyCode == KeyEvent.KEYCODE_VOLUME_UP
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|
||||
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE)
|
||||
&& !EmacsNative.shouldForwardMultimediaButtons ())
|
||||
|| keyCode == KeyEvent.KEYCODE_SCROLL_LOCK
|
||||
|| keyCode == KeyEvent.KEYCODE_NUM_LOCK)
|
||||
return super.onKeyUp (keyCode, event);
|
||||
|
||||
window.onKeyUp (keyCode, event);
|
||||
return true;
|
||||
return window.onKeyUp (keyCode, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -633,8 +633,8 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
|
||||
|
||||
/* Return the modifier mask associated with the specified keyboard
|
||||
input EVENT. Replace bits corresponding to Left or Right keys
|
||||
with their corresponding general modifier bits. */
|
||||
input EVENT. Replace bits representing Left or Right keys with
|
||||
their corresponding general modifier bits. */
|
||||
|
||||
public static int
|
||||
eventModifiers (KeyEvent event)
|
||||
|
@ -642,7 +642,7 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
int state;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
|
||||
state = event.getModifiers ();
|
||||
state = KeyEvent.normalizeMetaState (event.getMetaState ());
|
||||
else
|
||||
{
|
||||
/* Replace this with getMetaState and manual
|
||||
|
@ -667,10 +667,10 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
/* event.getCharacters is used because older input methods still
|
||||
require it. */
|
||||
@SuppressWarnings ("deprecation")
|
||||
public void
|
||||
public boolean
|
||||
onKeyDown (int keyCode, KeyEvent event)
|
||||
{
|
||||
int state, state_1, extra_ignored;
|
||||
int state, state_1, extra_ignored, unicode_char;
|
||||
long serial;
|
||||
String characters;
|
||||
|
||||
|
@ -686,18 +686,15 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
Deliver onKeyDown events in onKeyUp instead, so as not to
|
||||
navigate backwards during gesture navigation. */
|
||||
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
state = eventModifiers (event);
|
||||
|
||||
/* Num Lock, Scroll Lock and Meta aren't supported by systems older
|
||||
than Android 3.0. */
|
||||
/* Meta isn't supported by systems older than Android 3.0. */
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
|
||||
extra_ignored = (KeyEvent.META_NUM_LOCK_ON
|
||||
| KeyEvent.META_SCROLL_LOCK_ON
|
||||
| KeyEvent.META_META_MASK);
|
||||
extra_ignored = KeyEvent.META_META_MASK;
|
||||
else
|
||||
extra_ignored = 0;
|
||||
|
||||
|
@ -723,23 +720,36 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
state &= ~KeyEvent.META_ALT_MASK;
|
||||
}
|
||||
|
||||
unicode_char = getEventUnicodeChar (event, state_1);
|
||||
|
||||
/* If a NUMPAD_ key is detected for which no character is returned,
|
||||
return false without sending the key event, as this will prompt
|
||||
the system to send an event with the corresponding action
|
||||
key. */
|
||||
|
||||
if (keyCode >= KeyEvent.KEYCODE_NUMPAD_0
|
||||
&& keyCode <= KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN
|
||||
&& unicode_char == 0)
|
||||
return false;
|
||||
|
||||
synchronized (eventStrings)
|
||||
{
|
||||
serial
|
||||
= EmacsNative.sendKeyPress (this.handle,
|
||||
event.getEventTime (),
|
||||
state, keyCode,
|
||||
getEventUnicodeChar (event,
|
||||
state_1));
|
||||
unicode_char);
|
||||
|
||||
characters = event.getCharacters ();
|
||||
|
||||
if (characters != null && characters.length () > 1)
|
||||
saveUnicodeString ((int) serial, characters);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void
|
||||
public boolean
|
||||
onKeyUp (int keyCode, KeyEvent event)
|
||||
{
|
||||
int state, state_1, unicode_char, extra_ignored;
|
||||
|
@ -748,13 +758,10 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
/* Compute the event's modifier mask. */
|
||||
state = eventModifiers (event);
|
||||
|
||||
/* Num Lock, Scroll Lock and Meta aren't supported by systems older
|
||||
than Android 3.0. */
|
||||
/* Meta isn't supported by systems older than Android 3.0. */
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
|
||||
extra_ignored = (KeyEvent.META_NUM_LOCK_ON
|
||||
| KeyEvent.META_SCROLL_LOCK_ON
|
||||
| KeyEvent.META_META_MASK);
|
||||
extra_ignored = KeyEvent.META_META_MASK;
|
||||
else
|
||||
extra_ignored = 0;
|
||||
|
||||
|
@ -787,12 +794,20 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
/* If the key press's been canceled, return immediately. */
|
||||
|
||||
if ((event.getFlags () & KeyEvent.FLAG_CANCELED) != 0)
|
||||
return;
|
||||
return true;
|
||||
|
||||
/* Dispatch the key press event that was deferred till now. */
|
||||
EmacsNative.sendKeyPress (this.handle, event.getEventTime (),
|
||||
state, keyCode, unicode_char);
|
||||
}
|
||||
/* If a NUMPAD_ key is detected for which no character is returned,
|
||||
return false without sending the key event, as this will prompt
|
||||
the system to send an event with the corresponding action
|
||||
key. */
|
||||
else if (keyCode >= KeyEvent.KEYCODE_NUMPAD_0
|
||||
&& keyCode <= KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN
|
||||
&& unicode_char == 0)
|
||||
return false;
|
||||
|
||||
EmacsNative.sendKeyRelease (this.handle, event.getEventTime (),
|
||||
state, keyCode, unicode_char);
|
||||
|
@ -810,6 +825,8 @@ public final class EmacsWindow extends EmacsHandleObject
|
|||
|
||||
lastQuitKeyRelease = time;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void
|
||||
|
|
|
@ -705,7 +705,7 @@ and optionally Prolog-like definitions (first rule for a predicate or \
|
|||
function).\n\
|
||||
To enable this behavior, run etags using --declarations.";
|
||||
static bool with_mercury_definitions = false;
|
||||
float mercury_heuristics_ratio = MERCURY_HEURISTICS_RATIO;
|
||||
static float mercury_heuristics_ratio = MERCURY_HEURISTICS_RATIO;
|
||||
|
||||
static const char *Objc_suffixes [] =
|
||||
{ "lm", /* Objective lex file */
|
||||
|
|
|
@ -660,11 +660,11 @@ close_emacs_globals (ptrdiff_t num_symbols)
|
|||
printf (("};\n"
|
||||
"extern struct emacs_globals globals;\n"
|
||||
"\n"
|
||||
"#ifndef DEFINE_SYMBOLS\n"
|
||||
"extern\n"
|
||||
"#endif\n"
|
||||
"struct Lisp_Symbol lispsym[%td];\n"),
|
||||
num_symbols);
|
||||
"extern struct Lisp_Symbol lispsym[%td];\n"
|
||||
"#ifdef DEFINE_SYMBOLS\n"
|
||||
"struct Lisp_Symbol lispsym[%td];\n"
|
||||
"#endif\n"),
|
||||
num_symbols, num_symbols);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
10
lib/acl.h
10
lib/acl.h
|
@ -28,6 +28,11 @@
|
|||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
bool acl_errno_valid (int) _GL_ATTRIBUTE_CONST;
|
||||
int file_has_acl (char const *, struct stat const *);
|
||||
int qset_acl (char const *, int, mode_t);
|
||||
|
@ -36,4 +41,9 @@ int qcopy_acl (char const *, int, char const *, int, mode_t);
|
|||
int copy_acl (char const *, int, char const *, int, mode_t);
|
||||
int chmod_or_fchmod (char const *, int, mode_t);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -22,6 +22,11 @@
|
|||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* An object describing a memory allocator family. */
|
||||
|
||||
struct allocator
|
||||
|
@ -55,4 +60,9 @@ struct allocator
|
|||
/* An allocator using the stdlib functions and a null DIE function. */
|
||||
extern struct allocator const stdlib_allocator;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _GL_ALLOCATOR_H */
|
||||
|
|
|
@ -55,6 +55,11 @@ __gl_setmode (_GL_UNUSED int fd, _GL_UNUSED int mode)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Set FD's mode to MODE, which should be either O_TEXT or O_BINARY.
|
||||
Return the old mode if successful, -1 (setting errno) on failure.
|
||||
Ordinarily this function would be called 'setmode', since that is
|
||||
|
@ -74,6 +79,11 @@ set_binary_mode (int fd, int mode)
|
|||
/* This macro is obsolescent. */
|
||||
#define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY))
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
_GL_INLINE_HEADER_END
|
||||
|
||||
#endif /* _BINARY_H */
|
||||
|
|
|
@ -304,18 +304,35 @@ get_windows_boot_time (struct timespec *p_boot_time)
|
|||
Instead, on Windows, the boot time can be retrieved by looking at the
|
||||
time stamp of a file that (normally) gets touched only during the boot
|
||||
process, namely C:\pagefile.sys. */
|
||||
const char * const boot_touched_file =
|
||||
#if defined __CYGWIN__ && !defined _WIN32
|
||||
"/cygdrive/c/pagefile.sys"
|
||||
#else
|
||||
"C:\\pagefile.sys"
|
||||
#endif
|
||||
;
|
||||
struct stat statbuf;
|
||||
if (stat (boot_touched_file, &statbuf) >= 0)
|
||||
const char * const boot_touched_files[] =
|
||||
{
|
||||
*p_boot_time = get_stat_mtime (&statbuf);
|
||||
return 0;
|
||||
#if defined __CYGWIN__ && !defined _WIN32
|
||||
/* It is more portable to use /proc/cygdrive/c than /cygdrive/c. */
|
||||
"/proc/cygdrive/c/pagefile.sys",
|
||||
/* A fallback, working around a Cygwin 3.5.3 bug. It has a modification
|
||||
time about 1.5 minutes after the last boot; but that's better than
|
||||
nothing. */
|
||||
"/proc/cygdrive/c/ProgramData/Microsoft/Windows/DeviceMetadataCache/dmrc.idx"
|
||||
#else
|
||||
"C:\\pagefile.sys"
|
||||
#endif
|
||||
};
|
||||
for (idx_t i = 0; i < SIZEOF (boot_touched_files); i++)
|
||||
{
|
||||
const char *filename = boot_touched_files[i];
|
||||
struct stat statbuf;
|
||||
if (stat (filename, &statbuf) >= 0)
|
||||
{
|
||||
# if defined __CYGWIN__ && !defined _WIN32
|
||||
/* Work around a Cygwin 3.5.3 bug.
|
||||
<https://cygwin.com/pipermail/cygwin/2024-May/255931.html> */
|
||||
if (!S_ISDIR (statbuf.st_mode))
|
||||
# endif
|
||||
{
|
||||
*p_boot_time = get_stat_mtime (&statbuf);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -28,6 +28,11 @@
|
|||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
struct allocator;
|
||||
|
||||
/* Assuming the current directory is FD, get the symbolic link value
|
||||
|
@ -69,4 +74,9 @@ char *careadlinkat (int fd, char const *filename,
|
|||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _GL_CAREADLINKAT_H */
|
||||
|
|
|
@ -15,6 +15,11 @@
|
|||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Set the 'FD_CLOEXEC' flag of DESC if VALUE is true,
|
||||
or clear the flag if VALUE is false.
|
||||
Return 0 on success, or -1 on error with 'errno' set.
|
||||
|
@ -32,3 +37,8 @@ int set_cloexec_flag (int desc, bool value);
|
|||
be duplicated. */
|
||||
|
||||
int dup_cloexec (int fd);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -17,4 +17,14 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
int close_stream (FILE *stream);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -30,6 +30,11 @@ _GL_INLINE_HEADER_BEGIN
|
|||
# define _GL_EXECINFO_INLINE _GL_INLINE
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
_GL_EXECINFO_INLINE int
|
||||
backtrace (void **buffer, int size)
|
||||
{
|
||||
|
@ -54,6 +59,11 @@ backtrace_symbols_fd (void *const *buffer, int size, int fd)
|
|||
(void) fd;
|
||||
}
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
_GL_INLINE_HEADER_END
|
||||
|
||||
#endif
|
||||
|
|
|
@ -51,7 +51,8 @@
|
|||
#ifndef _@GUARD_PREFIX@_FCNTL_H
|
||||
|
||||
/* Needed before <sys/stat.h>.
|
||||
May also define off_t to a 64-bit type on native Windows. */
|
||||
May also define off_t to a 64-bit type on native Windows.
|
||||
Also defines off64_t on macOS, NetBSD, OpenBSD, MSVC, Cygwin, Haiku. */
|
||||
#include <sys/types.h>
|
||||
/* On some systems other than glibc, <sys/stat.h> is a prerequisite of
|
||||
<fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
|
||||
|
|
|
@ -27,6 +27,11 @@
|
|||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Compare strings A and B as file names containing version numbers,
|
||||
and return an integer that is negative, zero, or positive depending
|
||||
on whether A compares less than, equal to, or greater than B.
|
||||
|
@ -80,4 +85,9 @@ int filevercmp (char const *a, char const *b) _GL_ATTRIBUTE_PURE;
|
|||
int filenvercmp (char const *a, ptrdiff_t alen, char const *b, ptrdiff_t blen)
|
||||
_GL_ATTRIBUTE_PURE;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FILEVERCMP_H */
|
||||
|
|
|
@ -30,6 +30,16 @@
|
|||
# include <stdio_ext.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#if !HAVE_DECL___FPENDING
|
||||
size_t __fpending (FILE *) _GL_ATTRIBUTE_PURE;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -19,9 +19,14 @@
|
|||
/* Space usage statistics for a file system. Blocks are 512-byte. */
|
||||
|
||||
#if !defined FSUSAGE_H_
|
||||
# define FSUSAGE_H_
|
||||
#define FSUSAGE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
# include <stdint.h>
|
||||
|
||||
struct fs_usage
|
||||
{
|
||||
|
@ -36,4 +41,9 @@ struct fs_usage
|
|||
|
||||
int get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -24,6 +24,11 @@
|
|||
#include <float.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Store into BUF (of size BUFSIZE) an accurate minimal-precision
|
||||
string representation of a floating point number. FLAGS affect the
|
||||
formatting of the number. Pad the output string with spaces as
|
||||
|
@ -149,4 +154,9 @@ enum
|
|||
#define DBL_BUFSIZE_BOUND ( DBL_STRLEN_BOUND + 1)
|
||||
#define LDBL_BUFSIZE_BOUND (LDBL_STRLEN_BOUND + 1)
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _GL_FTOASTR_H */
|
||||
|
|
|
@ -618,6 +618,7 @@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@
|
|||
GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@
|
||||
GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@
|
||||
GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@
|
||||
GL_GNULIB_STRTOF = @GL_GNULIB_STRTOF@
|
||||
GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@
|
||||
GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@
|
||||
GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@
|
||||
|
@ -809,6 +810,7 @@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
|
|||
HAVE_MODULES = @HAVE_MODULES@
|
||||
HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
|
||||
HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@
|
||||
HAVE_OFF64_T = @HAVE_OFF64_T@
|
||||
HAVE_OPENAT = @HAVE_OPENAT@
|
||||
HAVE_OPENDIR = @HAVE_OPENDIR@
|
||||
HAVE_OS_H = @HAVE_OS_H@
|
||||
|
@ -872,6 +874,7 @@ HAVE_STRPBRK = @HAVE_STRPBRK@
|
|||
HAVE_STRPTIME = @HAVE_STRPTIME@
|
||||
HAVE_STRSEP = @HAVE_STRSEP@
|
||||
HAVE_STRTOD = @HAVE_STRTOD@
|
||||
HAVE_STRTOF = @HAVE_STRTOF@
|
||||
HAVE_STRTOL = @HAVE_STRTOL@
|
||||
HAVE_STRTOLD = @HAVE_STRTOLD@
|
||||
HAVE_STRTOLL = @HAVE_STRTOLL@
|
||||
|
@ -922,12 +925,10 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
|
||||
INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
|
||||
IS_D8_R8 = @IS_D8_R8@
|
||||
JARSIGNER = @JARSIGNER@
|
||||
JAVAC = @JAVAC@
|
||||
JPEG_CFLAGS = @JPEG_CFLAGS@
|
||||
JSON_CFLAGS = @JSON_CFLAGS@
|
||||
JSON_LIBS = @JSON_LIBS@
|
||||
JSON_OBJ = @JSON_OBJ@
|
||||
KQUEUE_CFLAGS = @KQUEUE_CFLAGS@
|
||||
KQUEUE_LIBS = @KQUEUE_LIBS@
|
||||
KRB4LIB = @KRB4LIB@
|
||||
|
@ -1017,9 +1018,12 @@ NDK_BUILD_ARCH = @NDK_BUILD_ARCH@
|
|||
NDK_BUILD_CC = @NDK_BUILD_CC@
|
||||
NDK_BUILD_CFLAGS = @NDK_BUILD_CFLAGS@
|
||||
NDK_BUILD_CXX = @NDK_BUILD_CXX@
|
||||
NDK_BUILD_CXX_LDFLAGS = @NDK_BUILD_CXX_LDFLAGS@
|
||||
NDK_BUILD_CXX_SHARED = @NDK_BUILD_CXX_SHARED@
|
||||
NDK_BUILD_CXX_STL = @NDK_BUILD_CXX_STL@
|
||||
NDK_BUILD_MODULES = @NDK_BUILD_MODULES@
|
||||
NDK_BUILD_NASM = @NDK_BUILD_NASM@
|
||||
NDK_BUILD_READELF = @NDK_BUILD_READELF@
|
||||
NDK_BUILD_SDK = @NDK_BUILD_SDK@
|
||||
NEXT_ASSERT_H = @NEXT_ASSERT_H@
|
||||
NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@
|
||||
|
@ -1068,6 +1072,7 @@ NS_OBJ = @NS_OBJ@
|
|||
NS_OBJC_OBJ = @NS_OBJC_OBJ@
|
||||
NTDIR = @NTDIR@
|
||||
NTLIB = @NTLIB@
|
||||
NULLPTR_T_NEEDS_STDDEF = @NULLPTR_T_NEEDS_STDDEF@
|
||||
OBJC = @OBJC@
|
||||
OBJCFLAGS = @OBJCFLAGS@
|
||||
OBJEXT = @OBJEXT@
|
||||
|
@ -1101,6 +1106,7 @@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
|
|||
QCOPY_ACL_LIB = @QCOPY_ACL_LIB@
|
||||
RALLOC_OBJ = @RALLOC_OBJ@
|
||||
RANLIB = @RANLIB@
|
||||
READELF = @READELF@
|
||||
REPLACE_ACCESS = @REPLACE_ACCESS@
|
||||
REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@
|
||||
REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@
|
||||
|
@ -1258,6 +1264,7 @@ REPLACE_STRNLEN = @REPLACE_STRNLEN@
|
|||
REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
|
||||
REPLACE_STRSTR = @REPLACE_STRSTR@
|
||||
REPLACE_STRTOD = @REPLACE_STRTOD@
|
||||
REPLACE_STRTOF = @REPLACE_STRTOF@
|
||||
REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
|
||||
REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
|
||||
REPLACE_STRTOL = @REPLACE_STRTOL@
|
||||
|
@ -1308,6 +1315,7 @@ SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
|
|||
SQLITE3_LIBS = @SQLITE3_LIBS@
|
||||
STDCKDINT_H = @STDCKDINT_H@
|
||||
STDDEF_H = @STDDEF_H@
|
||||
STDDEF_NOT_IDEMPOTENT = @STDDEF_NOT_IDEMPOTENT@
|
||||
STDINT_H = @STDINT_H@
|
||||
SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
|
||||
SYSTEM_TYPE = @SYSTEM_TYPE@
|
||||
|
@ -2195,6 +2203,7 @@ SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G
|
|||
SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t'
|
||||
|
||||
# Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that
|
||||
# is its recipe's first line if and only if @NMD@ lines are absent.
|
||||
gl_V_at = $(AM_V_GEN)
|
||||
|
||||
endif
|
||||
|
@ -3078,9 +3087,11 @@ stddef.h: stddef.in.h $(top_builddir)/config.status
|
|||
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
|
||||
-e 's|@''NULLPTR_T_NEEDS_STDDEF''@|$(NULLPTR_T_NEEDS_STDDEF)|g' \
|
||||
-e 's|@''STDDEF_NOT_IDEMPOTENT''@|$(STDDEF_NOT_IDEMPOTENT)|g' \
|
||||
-e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
|
||||
-e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \
|
||||
-e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
|
||||
-e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
|
||||
$(srcdir)/stddef.in.h > $@-t
|
||||
$(AM_V_at)mv $@-t $@
|
||||
else
|
||||
|
@ -3347,6 +3358,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
|
|||
-e 's/@''GNULIB_SECURE_GETENV''@/$(GL_GNULIB_SECURE_GETENV)/g' \
|
||||
-e 's/@''GNULIB_SETENV''@/$(GL_GNULIB_SETENV)/g' \
|
||||
-e 's/@''GNULIB_STRTOD''@/$(GL_GNULIB_STRTOD)/g' \
|
||||
-e 's/@''GNULIB_STRTOF''@/$(GL_GNULIB_STRTOF)/g' \
|
||||
-e 's/@''GNULIB_STRTOL''@/$(GL_GNULIB_STRTOL)/g' \
|
||||
-e 's/@''GNULIB_STRTOLD''@/$(GL_GNULIB_STRTOLD)/g' \
|
||||
-e 's/@''GNULIB_STRTOLL''@/$(GL_GNULIB_STRTOLL)/g' \
|
||||
|
@ -3399,6 +3411,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
|
|||
-e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \
|
||||
-e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \
|
||||
-e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
|
||||
-e 's|@''HAVE_STRTOF''@|$(HAVE_STRTOF)|g' \
|
||||
-e 's|@''HAVE_STRTOL''@|$(HAVE_STRTOL)|g' \
|
||||
-e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \
|
||||
-e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
|
||||
|
@ -3444,6 +3457,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
|
|||
-e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
|
||||
-e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \
|
||||
-e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
|
||||
-e 's|@''REPLACE_STRTOF''@|$(REPLACE_STRTOF)|g' \
|
||||
-e 's|@''REPLACE_STRTOL''@|$(REPLACE_STRTOL)|g' \
|
||||
-e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \
|
||||
-e 's|@''REPLACE_STRTOLL''@|$(REPLACE_STRTOLL)|g' \
|
||||
|
@ -3833,6 +3847,7 @@ sys/types.h: sys_types.in.h $(top_builddir)/config.status
|
|||
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
|
||||
-e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
|
||||
-e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
|
||||
-e 's|@''HAVE_OFF64_T''@|$(HAVE_OFF64_T)|g' \
|
||||
-e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \
|
||||
$(srcdir)/sys_types.in.h > $@-t
|
||||
$(AM_V_at)mv $@-t $@
|
||||
|
|
10
lib/idx.h
10
lib/idx.h
|
@ -111,6 +111,11 @@
|
|||
help producing good code and good warnings. The type 'idx_t' could
|
||||
then be typedef'ed to a range type that is signed after promotion. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* In the future, idx_t could be typedef'ed to a signed range type.
|
||||
The clang "extended integer types", supported in Clang 11 or newer
|
||||
<https://clang.llvm.org/docs/LanguageExtensions.html#extended-integer-types>,
|
||||
|
@ -131,4 +136,9 @@ typedef ptrdiff_t idx_t;
|
|||
Perhaps there should be another macro IDX_VALUE_BITS that does not
|
||||
count the sign bit and is therefore one less than PTRDIFF_WIDTH. */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _IDX_H */
|
||||
|
|
|
@ -169,7 +169,9 @@
|
|||
/* Work around GCC bug 91450. */
|
||||
# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \
|
||||
((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && _GL_EXPR_SIGNED (a) && _GL_EXPR_SIGNED (b) \
|
||||
&& _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \
|
||||
&& _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, \
|
||||
(__typeof__ (*(r))) 0, \
|
||||
(__typeof__ (*(r))) -1)) \
|
||||
? ((void) __builtin_mul_overflow (a, b, r), 1) \
|
||||
: __builtin_mul_overflow (a, b, r))
|
||||
# endif
|
||||
|
@ -183,10 +185,10 @@
|
|||
/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See:
|
||||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
|
||||
https://llvm.org/bugs/show_bug.cgi?id=25390
|
||||
For now, assume all versions of GCC-like compilers generate bogus
|
||||
For now, assume GCC < 14 and all Clang versions generate bogus
|
||||
warnings for _Generic. This matters only for compilers that
|
||||
lack relevant builtins. */
|
||||
#if __GNUC__ || defined __clang__
|
||||
#if (__GNUC__ && __GNUC__ < 14) || defined __clang__
|
||||
# define _GL__GENERIC_BOGUS 1
|
||||
#else
|
||||
# define _GL__GENERIC_BOGUS 0
|
||||
|
|
|
@ -16,11 +16,7 @@
|
|||
|
||||
#include <config.h>
|
||||
|
||||
/* memset_s need this define */
|
||||
#if HAVE_MEMSET_S
|
||||
# define __STDC_WANT_LIB_EXT1__ 1
|
||||
#endif
|
||||
|
||||
/* Specification. */
|
||||
#include <string.h>
|
||||
|
||||
/* Set S's bytes to C, where S has LEN bytes. The compiler will not
|
||||
|
|
|
@ -2809,6 +2809,7 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
|
|||
mpz_t tu, tv, s0, s1, t0, t1;
|
||||
mp_bitcnt_t uz, vz, gz;
|
||||
mp_bitcnt_t power;
|
||||
int cmp;
|
||||
|
||||
if (u->_mp_size == 0)
|
||||
{
|
||||
|
@ -2960,12 +2961,21 @@ mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v)
|
|||
mpz_tdiv_q_2exp (t0, t0, 1);
|
||||
}
|
||||
|
||||
/* Arrange so that |s| < |u| / 2g */
|
||||
/* Choose small cofactors (they should generally satify
|
||||
|
||||
|s| < |u| / 2g and |t| < |v| / 2g,
|
||||
|
||||
with some documented exceptions). Always choose the smallest s,
|
||||
if there are two choices for s with same absolute value, choose
|
||||
the one with smallest corresponding t (this asymmetric condition
|
||||
is needed to prefer s = 0, |t| = 1 when g = |a| = |b|). */
|
||||
mpz_add (s1, s0, s1);
|
||||
if (mpz_cmpabs (s0, s1) > 0)
|
||||
mpz_sub (t1, t0, t1);
|
||||
cmp = mpz_cmpabs (s0, s1);
|
||||
if (cmp > 0 || (cmp == 0 && mpz_cmpabs (t0, t1) > 0))
|
||||
{
|
||||
mpz_swap (s0, s1);
|
||||
mpz_sub (t0, t0, t1);
|
||||
mpz_swap (t0, t1);
|
||||
}
|
||||
if (u->_mp_size < 0)
|
||||
mpz_neg (s0, s0);
|
||||
|
|
|
@ -24,6 +24,11 @@
|
|||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Maximum number of bytes that it is safe to allocate as a single
|
||||
array on the stack, and that is known as a compile-time constant.
|
||||
The assumption is that we'll touch the array very quickly, or a
|
||||
|
@ -61,4 +66,9 @@ int at_func2 (int fd1, char const *file1,
|
|||
int fd2, char const *file2,
|
||||
int (*func) (char const *file1, char const *file2));
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _GL_HEADER_OPENAT_PRIV */
|
||||
|
|
10
lib/openat.h
10
lib/openat.h
|
@ -33,6 +33,11 @@
|
|||
|
||||
_GL_INLINE_HEADER_BEGIN
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#if !HAVE_OPENAT
|
||||
|
||||
int openat_permissive (int fd, char const *file, int flags, mode_t mode,
|
||||
|
@ -122,6 +127,11 @@ lstatat (int fd, char const *name, struct stat *st)
|
|||
wrappers are not provided for accessat or euidaccessat, so as to
|
||||
avoid dragging in -lgen on some platforms. */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
_GL_INLINE_HEADER_END
|
||||
|
||||
#endif /* _GL_HEADER_OPENAT */
|
||||
|
|
|
@ -19,7 +19,12 @@
|
|||
/* Written by Jim Meyering. */
|
||||
|
||||
#ifndef SAVE_CWD_H
|
||||
# define SAVE_CWD_H 1
|
||||
#define SAVE_CWD_H 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
struct saved_cwd
|
||||
{
|
||||
|
@ -31,4 +36,9 @@ int save_cwd (struct saved_cwd *cwd);
|
|||
int restore_cwd (const struct saved_cwd *cwd);
|
||||
void free_cwd (struct saved_cwd *cwd);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SAVE_CWD_H */
|
||||
|
|
|
@ -27,13 +27,21 @@
|
|||
#endif
|
||||
@PRAGMA_COLUMNS@
|
||||
|
||||
#if defined __need_wchar_t || defined __need_size_t \
|
||||
|| defined __need_ptrdiff_t || defined __need_NULL \
|
||||
|| defined __need_wint_t
|
||||
#if (defined __need_wchar_t || defined __need_size_t \
|
||||
|| defined __need_ptrdiff_t || defined __need_NULL \
|
||||
|| defined __need_wint_t) \
|
||||
/* Avoid warning triggered by "gcc -std=gnu23 -Wsystem-headers" \
|
||||
in Fedora 40 with gcc 14.0.1. \
|
||||
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114870>. */ \
|
||||
&& !@STDDEF_NOT_IDEMPOTENT@
|
||||
/* Special invocation convention inside gcc header files. In
|
||||
particular, gcc provides a version of <stddef.h> that blindly
|
||||
redefines NULL even when __need_wint_t was defined, even though
|
||||
wint_t is not normally provided by <stddef.h>. Hence, we must
|
||||
particular, <stddef.h> in some ancient versions of GCC blindly
|
||||
redefined NULL when __need_wint_t was defined, even though wint_t
|
||||
is not normally provided by <stddef.h>.
|
||||
(FIXME: It's not clear what GCC versions those were - perhaps so
|
||||
ancient that we can stop worrying about this?)
|
||||
Although glibc 2.26 (2017) and later do not use __need_wint_t,
|
||||
for portability to macOS, Cygwin, Haiku, and older Glibc + GCC,
|
||||
remember if special invocation has ever been used to obtain wint_t,
|
||||
in which case we need to clean up NULL yet again. */
|
||||
|
||||
|
@ -52,6 +60,13 @@
|
|||
# endif
|
||||
|
||||
#else
|
||||
/* For @STDDEF_NOT_IDEMPOTENT@. */
|
||||
# undef __need_wchar_t
|
||||
# undef __need_size_t
|
||||
# undef __need_ptrdiff_t
|
||||
# undef __need_NULL
|
||||
# undef __need_wint_t
|
||||
|
||||
/* Normal invocation convention. */
|
||||
|
||||
# ifndef _@GUARD_PREFIX@_STDDEF_H
|
||||
|
@ -74,6 +89,12 @@ typedef long max_align_t;
|
|||
# endif
|
||||
# endif
|
||||
|
||||
# if !defined _GCC_NULLPTR_T && !@NULLPTR_T_NEEDS_STDDEF@
|
||||
/* Suppress unwanted nullptr_t typedef. See
|
||||
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114869>. */
|
||||
# define _GCC_NULLPTR_T
|
||||
# endif
|
||||
|
||||
/* The include_next requires a split double-inclusion guard. */
|
||||
|
||||
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
|
||||
|
|
|
@ -77,7 +77,8 @@
|
|||
|
||||
/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8
|
||||
and eglibc 2.11.2.
|
||||
May also define off_t to a 64-bit type on native Windows. */
|
||||
May also define off_t to a 64-bit type on native Windows.
|
||||
Also defines off64_t on macOS, NetBSD, OpenBSD, MSVC, Cygwin, Haiku. */
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Solaris 10 and NetBSD 7.0 declare renameat in <unistd.h>, not in <stdio.h>. */
|
||||
|
@ -907,14 +908,14 @@ _GL_CXXALIAS_SYS (fwrite, size_t,
|
|||
&& !defined __cplusplus)
|
||||
# undef fwrite
|
||||
# undef fwrite_unlocked
|
||||
extern size_t __REDIRECT (rpl_fwrite,
|
||||
(const void *__restrict, size_t, size_t,
|
||||
FILE *__restrict),
|
||||
fwrite);
|
||||
extern size_t __REDIRECT (rpl_fwrite_unlocked,
|
||||
(const void *__restrict, size_t, size_t,
|
||||
FILE *__restrict),
|
||||
fwrite_unlocked);
|
||||
_GL_EXTERN_C size_t __REDIRECT (rpl_fwrite,
|
||||
(const void *__restrict, size_t, size_t,
|
||||
FILE *__restrict),
|
||||
fwrite);
|
||||
_GL_EXTERN_C size_t __REDIRECT (rpl_fwrite_unlocked,
|
||||
(const void *__restrict, size_t, size_t,
|
||||
FILE *__restrict),
|
||||
fwrite_unlocked);
|
||||
# define fwrite rpl_fwrite
|
||||
# define fwrite_unlocked rpl_fwrite_unlocked
|
||||
# endif
|
||||
|
|
|
@ -1591,6 +1591,38 @@ _GL_WARN_ON_USE (strtod, "strtod is unportable - "
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_STRTOF@
|
||||
/* Parse a float from STRING, updating ENDP if appropriate. */
|
||||
# if @REPLACE_STRTOF@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
# define strtof rpl_strtof
|
||||
# endif
|
||||
# define GNULIB_defined_strtof_function 1
|
||||
_GL_FUNCDECL_RPL (strtof, float,
|
||||
(const char *restrict str, char **restrict endp)
|
||||
_GL_ARG_NONNULL ((1)));
|
||||
_GL_CXXALIAS_RPL (strtof, float,
|
||||
(const char *restrict str, char **restrict endp));
|
||||
# else
|
||||
# if !@HAVE_STRTOF@
|
||||
_GL_FUNCDECL_SYS (strtof, float,
|
||||
(const char *restrict str, char **restrict endp)
|
||||
_GL_ARG_NONNULL ((1)));
|
||||
# endif
|
||||
_GL_CXXALIAS_SYS (strtof, float,
|
||||
(const char *restrict str, char **restrict endp));
|
||||
# endif
|
||||
# if __GLIBC__ >= 2
|
||||
_GL_CXXALIASWARN (strtof);
|
||||
# endif
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef strtof
|
||||
# if HAVE_RAW_DECL_STRTOF
|
||||
_GL_WARN_ON_USE (strtof, "strtof is unportable - "
|
||||
"use gnulib module strtof for portability");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if @GNULIB_STRTOLD@
|
||||
/* Parse a 'long double' from STRING, updating ENDP if appropriate. */
|
||||
# if @REPLACE_STRTOLD@
|
||||
|
|
|
@ -141,6 +141,15 @@ extern char *tzname[];
|
|||
? (a) >> (b) \
|
||||
: ((a) + ((a) < 0)) / (1 << (b)) - ((a) < 0))
|
||||
|
||||
enum pad_style
|
||||
{
|
||||
ZERO_PAD, /* (default) Pad with 0 unless format says otherwise. */
|
||||
ALWAYS_ZERO_PAD, /* '0' Always pad with 0. */
|
||||
SIGN_PAD, /* '+' Always output a sign. */
|
||||
SPACE_PAD, /* '_' Pad with space. */
|
||||
NO_PAD /* '-' Do not pad. */
|
||||
};
|
||||
|
||||
#define TM_YEAR_BASE 1900
|
||||
|
||||
#ifndef __isleap
|
||||
|
@ -193,7 +202,7 @@ extern char *tzname[];
|
|||
do \
|
||||
{ \
|
||||
size_t _n = (n); \
|
||||
size_t _w = pad == L_('-') || width < 0 ? 0 : width; \
|
||||
size_t _w = pad == NO_PAD || width < 0 ? 0 : width; \
|
||||
size_t _incr = _n < _w ? _w : _n; \
|
||||
if (_incr >= maxsize - i) \
|
||||
{ \
|
||||
|
@ -205,7 +214,7 @@ extern char *tzname[];
|
|||
if (_n < _w) \
|
||||
{ \
|
||||
size_t _delta = _w - _n; \
|
||||
if (pad == L_('0') || pad == L_('+')) \
|
||||
if (pad == ALWAYS_ZERO_PAD || pad == SIGN_PAD) \
|
||||
memset_zero (p, _delta); \
|
||||
else \
|
||||
memset_space (p, _delta); \
|
||||
|
@ -825,7 +834,7 @@ static CHAR_T const c_month_names[][sizeof "September"] =
|
|||
|
||||
static size_t __strftime_internal (STREAM_OR_CHAR_T *, STRFTIME_ARG (size_t)
|
||||
const CHAR_T *, const struct tm *,
|
||||
bool, int, int, bool *
|
||||
bool, enum pad_style, int, bool *
|
||||
extra_args_spec LOCALE_PARAM);
|
||||
|
||||
/* Write information from TP into S according to the format
|
||||
|
@ -841,7 +850,8 @@ my_strftime (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
{
|
||||
bool tzset_called = false;
|
||||
return __strftime_internal (s, STRFTIME_ARG (maxsize) format, tp, false,
|
||||
0, -1, &tzset_called extra_args LOCALE_ARG);
|
||||
ZERO_PAD, -1,
|
||||
&tzset_called extra_args LOCALE_ARG);
|
||||
}
|
||||
libc_hidden_def (my_strftime)
|
||||
|
||||
|
@ -853,7 +863,7 @@ static size_t
|
|||
__strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
||||
const CHAR_T *format,
|
||||
const struct tm *tp, bool upcase,
|
||||
int yr_spec, int width, bool *tzset_called
|
||||
enum pad_style yr_spec, int width, bool *tzset_called
|
||||
extra_args_spec LOCALE_PARAM)
|
||||
{
|
||||
#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
|
||||
|
@ -977,7 +987,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
|
||||
for (f = format; *f != '\0'; width = -1, f++)
|
||||
{
|
||||
int pad = 0; /* Padding for number ('_', '-', '+', '0', or 0). */
|
||||
enum pad_style pad = ZERO_PAD;
|
||||
int modifier; /* Field modifier ('E', 'O', or 0). */
|
||||
int digits = 0; /* Max digits for numeric format. */
|
||||
int number_value; /* Numeric value to be printed. */
|
||||
|
@ -1095,12 +1105,10 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
switch (*++f)
|
||||
{
|
||||
/* This influences the number formats. */
|
||||
case L_('_'):
|
||||
case L_('-'):
|
||||
case L_('+'):
|
||||
case L_('0'):
|
||||
pad = *f;
|
||||
continue;
|
||||
case L_('_'): pad = SPACE_PAD; continue;
|
||||
case L_('-'): pad = NO_PAD; continue;
|
||||
case L_('+'): pad = SIGN_PAD; continue;
|
||||
case L_('0'): pad = ALWAYS_ZERO_PAD; continue;
|
||||
|
||||
/* This changes textual output. */
|
||||
case L_('^'):
|
||||
|
@ -1336,7 +1344,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
# endif
|
||||
if (len != 0)
|
||||
{
|
||||
# if defined __NetBSD__ || defined __sun /* NetBSD, Solaris */
|
||||
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ < 31) || defined __NetBSD__ || defined __sun /* glibc < 2.31, NetBSD, Solaris */
|
||||
if (format_char == L_('c'))
|
||||
{
|
||||
/* The output of the strftime %c directive consists of the
|
||||
|
@ -1374,7 +1382,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
}
|
||||
}
|
||||
}
|
||||
# if REQUIRE_GNUISH_STRFTIME_AM_PM
|
||||
# if (defined __NetBSD__ || defined __sun) && REQUIRE_GNUISH_STRFTIME_AM_PM
|
||||
/* The output of the strftime %p and %r directives contains
|
||||
an AM/PM indicator even for locales where it is not
|
||||
suitable, such as French. Remove this indicator. */
|
||||
|
@ -1483,17 +1491,17 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
goto do_number_body;
|
||||
|
||||
do_yearish:
|
||||
if (pad == 0)
|
||||
if (pad == ZERO_PAD)
|
||||
pad = yr_spec;
|
||||
always_output_a_sign
|
||||
= (pad == L_('+')
|
||||
= (pad == SIGN_PAD
|
||||
&& ((digits == 2 ? 99 : 9999) < u_number_value
|
||||
|| digits < width));
|
||||
goto do_maybe_signed_number;
|
||||
|
||||
do_number_spacepad:
|
||||
if (pad == 0)
|
||||
pad = L_('_');
|
||||
if (pad == ZERO_PAD)
|
||||
pad = SPACE_PAD;
|
||||
|
||||
do_number:
|
||||
/* Format NUMBER_VALUE according to the MODIFIER flag. */
|
||||
|
@ -1551,8 +1559,8 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
while (u_number_value != 0 || tz_colon_mask != 0);
|
||||
|
||||
do_number_sign_and_padding:
|
||||
if (pad == 0)
|
||||
pad = L_('0');
|
||||
if (pad == ZERO_PAD)
|
||||
pad = ALWAYS_ZERO_PAD;
|
||||
if (width < 0)
|
||||
width = digits;
|
||||
|
||||
|
@ -1562,11 +1570,11 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
: 0);
|
||||
int numlen = buf + sizeof buf / sizeof buf[0] - bufp;
|
||||
int shortage = width - !!sign_char - numlen;
|
||||
int padding = pad == L_('-') || shortage <= 0 ? 0 : shortage;
|
||||
int padding = pad == NO_PAD || shortage <= 0 ? 0 : shortage;
|
||||
|
||||
if (sign_char)
|
||||
{
|
||||
if (pad == L_('_'))
|
||||
if (pad == SPACE_PAD)
|
||||
{
|
||||
if (p)
|
||||
memset_space (p, padding);
|
||||
|
@ -1584,9 +1592,9 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
case L_('F'):
|
||||
if (modifier != 0)
|
||||
goto bad_format;
|
||||
if (pad == 0 && width < 0)
|
||||
if (pad == ZERO_PAD && width < 0)
|
||||
{
|
||||
pad = L_('+');
|
||||
pad = SIGN_PAD;
|
||||
subwidth = 4;
|
||||
}
|
||||
else
|
||||
|
@ -1653,8 +1661,8 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
ndigs--, n /= 10;
|
||||
for (int j = ndigs; 0 < j; j--)
|
||||
buf[j - 1] = n % 10 + L_('0'), n /= 10;
|
||||
if (!pad)
|
||||
pad = L_('0');
|
||||
if (pad == ZERO_PAD)
|
||||
pad = ALWAYS_ZERO_PAD;
|
||||
width_cpy (0, ndigs, buf);
|
||||
width_add (width - ndigs, 0, (void) 0);
|
||||
}
|
||||
|
@ -1864,7 +1872,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
# else
|
||||
subfmt = era->era_format;
|
||||
# endif
|
||||
if (pad == 0)
|
||||
if (pad == ZERO_PAD)
|
||||
pad = yr_spec;
|
||||
goto subformat;
|
||||
}
|
||||
|
@ -1887,7 +1895,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
if (era)
|
||||
{
|
||||
int delta = tp->tm_year - era->start_date[0];
|
||||
if (pad == 0)
|
||||
if (pad == ZERO_PAD)
|
||||
pad = yr_spec;
|
||||
DO_NUMBER (2, (era->offset
|
||||
+ delta * era->absolute_direction));
|
||||
|
@ -1916,7 +1924,7 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
{
|
||||
/* The zone string is always given in multibyte form. We have
|
||||
to convert it to wide character. */
|
||||
size_t w = pad == L_('-') || width < 0 ? 0 : width;
|
||||
size_t w = pad == NO_PAD || width < 0 ? 0 : width;
|
||||
char const *z = zone;
|
||||
mbstate_t st = {0};
|
||||
size_t len = __mbsrtowcs_l (p, &z, maxsize - i, &st, loc);
|
||||
|
@ -1934,7 +1942,8 @@ __strftime_internal (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
|
|||
{
|
||||
size_t delta = w - len;
|
||||
__wmemmove (p + delta, p, len);
|
||||
wchar_t wc = pad == L_('0') || pad == L_('+') ? L'0' : L' ';
|
||||
wchar_t wc = (pad == ALWAYS_ZERO_PAD || pad == SIGN_PAD
|
||||
? L'0' : L' ');
|
||||
wmemset (p, wc, delta);
|
||||
}
|
||||
p += incr;
|
||||
|
|
|
@ -60,6 +60,15 @@
|
|||
# define _GL_WINDOWS_64_BIT_OFF_T 1
|
||||
#endif
|
||||
|
||||
/* Define the off64_t type. */
|
||||
#if !@HAVE_OFF64_T@
|
||||
# if !GNULIB_defined_off64_t
|
||||
/* Define off64_t to int64_t always. */
|
||||
typedef long long off64_t;
|
||||
# define GNULIB_defined_off64_t 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Override dev_t and ino_t if distinguishable inodes support is requested
|
||||
on native Windows. */
|
||||
#if @WINDOWS_STAT_INODES@
|
||||
|
|
10
lib/u64.h
10
lib/u64.h
|
@ -29,6 +29,11 @@ _GL_INLINE_HEADER_BEGIN
|
|||
# define _GL_U64_INLINE _GL_INLINE
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Return X rotated left by N bits, where 0 < N < 64. */
|
||||
#define u64rol(x, n) u64or (u64shl (x, n), u64shr (x, 64 - n))
|
||||
|
||||
|
@ -178,4 +183,9 @@ u64shr (u64 x, int n)
|
|||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
_GL_INLINE_HEADER_END
|
||||
|
|
|
@ -159,8 +159,9 @@
|
|||
#endif
|
||||
|
||||
/* MSVC defines off_t in <sys/types.h>.
|
||||
May also define off_t to a 64-bit type on native Windows. */
|
||||
/* Get off_t, ssize_t, mode_t. */
|
||||
May also define off_t to a 64-bit type on native Windows.
|
||||
Also defines off64_t on macOS, NetBSD, OpenBSD, MSVC, Cygwin, Haiku. */
|
||||
/* Get off_t, off64_t, ssize_t, mode_t. */
|
||||
#include <sys/types.h>
|
||||
|
||||
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
||||
|
|
|
@ -23,11 +23,22 @@
|
|||
#endif
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int fdutimens (int, char const *, struct timespec const [2]);
|
||||
int utimens (char const *, struct timespec const [2]);
|
||||
int lutimens (char const *, struct timespec const [2]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if GNULIB_FDUTIMENSAT
|
||||
|
||||
# include <fcntl.h>
|
||||
# include <sys/stat.h>
|
||||
|
||||
|
@ -36,6 +47,10 @@ _GL_INLINE_HEADER_BEGIN
|
|||
# define _GL_UTIMENS_INLINE _GL_INLINE
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int fdutimensat (int fd, int dir, char const *name, struct timespec const [2],
|
||||
int atflag);
|
||||
|
||||
|
@ -46,6 +61,10 @@ lutimensat (int dir, char const *file, struct timespec const times[2])
|
|||
return utimensat (dir, file, times, AT_SYMLINK_NOFOLLOW);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
_GL_INLINE_HEADER_END
|
||||
|
||||
#endif
|
||||
|
|
|
@ -4970,12 +4970,17 @@ if only the first line of the docstring is shown."))
|
|||
;; can cause problems when read back, so print them
|
||||
;; readably. (Bug#52554)
|
||||
(print-escape-control-characters t))
|
||||
(atomic-change-group
|
||||
(when (eobp)
|
||||
(insert ";;; -*- lexical-binding: t -*-\n"))
|
||||
(custom-save-variables)
|
||||
(custom-save-faces)
|
||||
(custom-save-icons)))
|
||||
;; Insert lexical cookie, but only if the buffer is empty.
|
||||
(save-restriction
|
||||
(widen)
|
||||
(atomic-change-group
|
||||
(when (eq (point-min) (point-max))
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(insert ";;; -*- lexical-binding: t -*-\n")))
|
||||
(custom-save-variables)
|
||||
(custom-save-faces)
|
||||
(custom-save-icons))))
|
||||
(let ((file-precious-flag t))
|
||||
(save-buffer))
|
||||
(if old-buffer
|
||||
|
|
|
@ -293,7 +293,6 @@ instead."
|
|||
(eshell-do-ls (nconc switches (list target)))))))))
|
||||
|
||||
|
||||
(declare-function eshell-extended-glob "em-glob" (glob))
|
||||
(declare-function dired-read-dir-and-switches "dired" (str))
|
||||
(declare-function dired-goto-next-file "dired" ())
|
||||
|
||||
|
|
|
@ -101,20 +101,18 @@
|
|||
;;; Code:
|
||||
|
||||
(require 'esh-util)
|
||||
(require 'eldoc)
|
||||
(require 'esh-arg)
|
||||
(require 'esh-proc)
|
||||
(require 'esh-module)
|
||||
(require 'esh-io)
|
||||
(require 'esh-ext)
|
||||
|
||||
(require 'eldoc)
|
||||
(require 'generator)
|
||||
(require 'pcomplete)
|
||||
|
||||
(eval-when-compile
|
||||
(require 'cl-lib)
|
||||
(require 'pcomplete))
|
||||
|
||||
(declare-function pcomplete--here "pcomplete"
|
||||
(&optional form stub paring form-only))
|
||||
(require 'cl-lib))
|
||||
|
||||
(defgroup eshell-cmd nil
|
||||
"Executing an Eshell command is as simple as typing it in and \
|
||||
|
|
|
@ -31,12 +31,12 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(require 'esh-util)
|
||||
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
(require 'esh-io)
|
||||
(require 'esh-arg)
|
||||
(require 'esh-opt)
|
||||
(require 'esh-proc)
|
||||
(require 'esh-util)
|
||||
|
||||
(defgroup eshell-ext nil
|
||||
"External commands are invoked when operating system executables are
|
||||
|
@ -90,10 +90,6 @@ but Eshell will be able to understand
|
|||
(setq list (cdr list)))
|
||||
file)))
|
||||
|
||||
;; This file provides itself then eval-when-compile loads files that require it.
|
||||
;; This causes spurious "might not be defined at runtime" warnings.
|
||||
(declare-function eshell-search-path "esh-ext" (name))
|
||||
|
||||
(defcustom eshell-windows-shell-file
|
||||
(if (eshell-under-windows-p)
|
||||
(if (string-match "\\(cmdproxy\\|sh\\)\\.\\(com\\|exe\\)"
|
||||
|
@ -244,8 +240,6 @@ An external command simply means external to Emacs."
|
|||
(cl-assert interp)
|
||||
(if (functionp (car interp))
|
||||
(apply (car interp) (append (cdr interp) args))
|
||||
(require 'esh-proc)
|
||||
(declare-function eshell-gather-process-output "esh-proc" (command args))
|
||||
(eshell-gather-process-output
|
||||
(car interp) (append (cdr interp) args)))))
|
||||
|
||||
|
|
|
@ -694,9 +694,6 @@ newline."
|
|||
(defun eshell-send-eof-to-process ()
|
||||
"Send EOF to the currently-running \"head\" process."
|
||||
(interactive)
|
||||
(require 'esh-mode)
|
||||
(declare-function eshell-send-input "esh-mode"
|
||||
(&optional use-region queue-p no-newline))
|
||||
(eshell-send-input nil nil t)
|
||||
(when (eshell-head-process)
|
||||
(process-send-eof (eshell-head-process))))
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
(require 'esh-io)
|
||||
(require 'esh-util)
|
||||
|
||||
(require 'pcomplete)
|
||||
|
||||
(defgroup eshell-proc nil
|
||||
"When Eshell invokes external commands, it always does so
|
||||
asynchronously, so that Emacs isn't tied up waiting for the process to
|
||||
|
|
|
@ -262,8 +262,7 @@ If DONT-POP is nil, display the buffer after setting it up."
|
|||
(setq ga
|
||||
(message-fetch-field gnus-draft-meta-information-header)))
|
||||
(insert mail-header-separator)
|
||||
(forward-line 1)
|
||||
(message-set-auto-save-file-name))))
|
||||
(forward-line 1))))
|
||||
(gnus-backlog-remove-article group narticle)
|
||||
(when (and ga
|
||||
(ignore-errors (setq ga (car (read-from-string ga)))))
|
||||
|
@ -290,30 +289,25 @@ If DONT-POP is nil, display the buffer after setting it up."
|
|||
(defun gnus-draft-check-draft-articles (articles)
|
||||
"Check whether the draft articles ARTICLES are under edit."
|
||||
(when (equal gnus-newsgroup-name "nndraft:drafts")
|
||||
(let ((buffers (buffer-list))
|
||||
file buffs buff)
|
||||
(save-current-buffer
|
||||
(while (and articles
|
||||
(not buff))
|
||||
(setq file (nndraft-article-filename (pop articles))
|
||||
buffs buffers)
|
||||
(while buffs
|
||||
(set-buffer (setq buff (pop buffs)))
|
||||
(if (and buffer-file-name
|
||||
(equal (file-remote-p file)
|
||||
(file-remote-p buffer-file-name))
|
||||
(string-equal (file-truename buffer-file-name)
|
||||
(file-truename file))
|
||||
(buffer-modified-p))
|
||||
(setq buffs nil)
|
||||
(setq buff nil)))))
|
||||
(when buff
|
||||
(let* ((window (get-buffer-window buff t))
|
||||
(frame (and window (window-frame window))))
|
||||
(if frame
|
||||
(select-frame-set-input-focus frame)
|
||||
(pop-to-buffer buff t)))
|
||||
(error "The draft %s is under edit" file)))))
|
||||
(let* ((files (mapcar #'nndraft-article-filename articles))
|
||||
(buffs (delq nil (mapcar (lambda (f)
|
||||
(find-buffer-visiting
|
||||
f (lambda (b) (buffer-modified-p b))))
|
||||
files))))
|
||||
(when buffs
|
||||
(if (= 1 (length buffs))
|
||||
;; We might have arrived here via `gnus-draft-edit-message';
|
||||
;; either way show the user the draft with unsaved changes.
|
||||
(let* ((window (get-buffer-window (car buffs) t))
|
||||
(frame (and window (window-frame window))))
|
||||
(if frame
|
||||
(select-frame-set-input-focus frame)
|
||||
(pop-to-buffer (car buffs) t))
|
||||
(error "Draft is already under edit"))
|
||||
;; Otherwise we got here from `gnus-draft-send-message', and
|
||||
;; the main thing is to interrupt the sending.
|
||||
(display-buffer (list-buffers-noselect t buffs))
|
||||
(error "Some drafts have unsaved changes: %S" buffs))))))
|
||||
|
||||
(defun gnus-draft-clear-marks ()
|
||||
(setq gnus-newsgroup-reads nil
|
||||
|
|
|
@ -32,8 +32,6 @@
|
|||
|
||||
(require 'image-dired-util)
|
||||
|
||||
(declare-function image-dired--with-marked "image-dired")
|
||||
|
||||
(defvar image-dired-dir)
|
||||
(defvar image-dired-thumbnail-storage)
|
||||
(defvar image-dired-tags-db-file)
|
||||
|
@ -156,18 +154,6 @@ With prefix ARG, tag the file at point."
|
|||
(cons x tag))
|
||||
files))))
|
||||
|
||||
(defun image-dired-tag-thumbnail ()
|
||||
"Tag current or marked thumbnails."
|
||||
(interactive nil image-dired-thumbnail-mode)
|
||||
(let ((tag (completing-read
|
||||
"Tags to add (separate tags with a semicolon): "
|
||||
image-dired-tag-history nil nil nil 'image-dired-tag-history)))
|
||||
(image-dired--with-marked
|
||||
(image-dired-write-tags
|
||||
(list (cons (image-dired-original-file-name) tag)))
|
||||
(image-dired-update-property
|
||||
'tags (image-dired-list-tags (image-dired-original-file-name))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun image-dired-delete-tag (arg)
|
||||
"Remove tag for selected file(s).
|
||||
|
@ -181,16 +167,6 @@ With prefix argument ARG, remove tag from file at point."
|
|||
(setq files (dired-get-marked-files)))
|
||||
(image-dired-remove-tag files tag)))
|
||||
|
||||
(defun image-dired-tag-thumbnail-remove ()
|
||||
"Remove tag from current or marked thumbnails."
|
||||
(interactive nil image-dired-thumbnail-mode)
|
||||
(let ((tag (completing-read "Tag to remove: " image-dired-tag-history
|
||||
nil nil nil 'image-dired-tag-history)))
|
||||
(image-dired--with-marked
|
||||
(image-dired-remove-tag (image-dired-original-file-name) tag)
|
||||
(image-dired-update-property
|
||||
'tags (image-dired-list-tags (image-dired-original-file-name))))))
|
||||
|
||||
(defun image-dired-write-comments (file-comments)
|
||||
"Write file comments specified by FILE-COMMENTS comments to database.
|
||||
FILE-COMMENTS is an alist on the following form:
|
||||
|
|
|
@ -1757,6 +1757,28 @@ Dired."
|
|||
(cons (list tag file) (cdr image-dired-tag-file-list))))
|
||||
(setq image-dired-tag-file-list (list (list tag file))))))
|
||||
|
||||
(defun image-dired-tag-thumbnail-remove ()
|
||||
"Remove tag from current or marked thumbnails."
|
||||
(interactive nil image-dired-thumbnail-mode)
|
||||
(let ((tag (completing-read "Tag to remove: " image-dired-tag-history
|
||||
nil nil nil 'image-dired-tag-history)))
|
||||
(image-dired--with-marked
|
||||
(image-dired-remove-tag (image-dired-original-file-name) tag)
|
||||
(image-dired-update-property
|
||||
'tags (image-dired-list-tags (image-dired-original-file-name))))))
|
||||
|
||||
(defun image-dired-tag-thumbnail ()
|
||||
"Tag current or marked thumbnails."
|
||||
(interactive nil image-dired-thumbnail-mode)
|
||||
(let ((tag (completing-read
|
||||
"Tags to add (separate tags with a semicolon): "
|
||||
image-dired-tag-history nil nil nil 'image-dired-tag-history)))
|
||||
(image-dired--with-marked
|
||||
(image-dired-write-tags
|
||||
(list (cons (image-dired-original-file-name) tag)))
|
||||
(image-dired-update-property
|
||||
'tags (image-dired-list-tags (image-dired-original-file-name))))))
|
||||
|
||||
(defvar image-dired-slideshow-count 0
|
||||
"Keeping track on number of images in slideshow.")
|
||||
(make-obsolete-variable 'image-dired-slideshow-count "no longer used." "29.1")
|
||||
|
|
|
@ -740,10 +740,12 @@ Return one of the entries in index-alist or nil."
|
|||
(imenu--in-alist name prepared-index-alist)
|
||||
;; Default to `name' if it's in the alist.
|
||||
name))))
|
||||
(let ((minibuffer-setup-hook minibuffer-setup-hook))
|
||||
;; Display the completion buffer.
|
||||
(if (not imenu-eager-completion-buffer)
|
||||
(add-hook 'minibuffer-setup-hook 'minibuffer-completion-help))
|
||||
;; Display the completion buffer.
|
||||
(minibuffer-with-setup-hook
|
||||
(lambda ()
|
||||
(setq-local completion-extra-properties '(:category imenu))
|
||||
(unless imenu-eager-completion-buffer
|
||||
(minibuffer-completion-help)))
|
||||
(setq name (completing-read prompt
|
||||
prepared-index-alist
|
||||
nil t nil 'imenu--history-list name)))
|
||||
|
@ -784,7 +786,7 @@ Returns t for rescan and otherwise an element or subelement of INDEX-ALIST."
|
|||
(concat prefix imenu-level-separator name)
|
||||
name))))
|
||||
(cond
|
||||
((or (markerp pos) (numberp pos))
|
||||
((not (imenu--subalist-p item))
|
||||
(list (cons new-prefix pos)))
|
||||
(t
|
||||
(imenu--flatten-index-alist pos concat-names new-prefix)))))
|
||||
|
|
|
@ -437,7 +437,9 @@ headers of the messages."
|
|||
(= (length rmail-summary-message-parents-vector)
|
||||
(1+ rmail-total-messages)))
|
||||
(rmail-summary-fill-message-parents-and-descs-vectors)))
|
||||
(let ((enc-msgs (make-bool-vector (1+ rmail-total-messages) nil)))
|
||||
(let ((enc-msgs
|
||||
(with-current-buffer rmail-buffer
|
||||
(make-bool-vector (1+ rmail-total-messages) nil))))
|
||||
(rmail-summary--walk-thread-message-recursively msgnum enc-msgs)
|
||||
(rmail-new-summary (format "thread containing message %d" msgnum)
|
||||
(list 'rmail-summary-by-thread msgnum)
|
||||
|
|
|
@ -105,14 +105,25 @@ This port is probably always 2628 so there should be no need to modify it."
|
|||
"*"
|
||||
"The dictionary which is used for searching definitions and matching.
|
||||
* and ! have a special meaning, * search all dictionaries, ! search until
|
||||
one dictionary yields matches."
|
||||
one dictionary yields matches.
|
||||
Otherwise, the value should be a string, the name of the dictionary to use.
|
||||
Dictionary names are generally specific to the servers, and are obtained
|
||||
via `dictionary-dictionaries'."
|
||||
:group 'dictionary
|
||||
:type 'string
|
||||
:version "28.1")
|
||||
|
||||
(defcustom dictionary-default-strategy
|
||||
"."
|
||||
"The default strategy for listing matching words."
|
||||
"The default strategy for listing matching words.
|
||||
The value should be a string. The special value \".\" means
|
||||
the default search strategy for `dictionary-server' in use.
|
||||
Other values are specific to servers and dictionaries.
|
||||
In a `dictionary-mode' buffer, you can use
|
||||
\\[dictionary-select-strategy] to change the buffer-local value;
|
||||
it will show the available strategies from which you can choose.
|
||||
To change the value for other buffers, customize this option
|
||||
using \\[customize-option]."
|
||||
:group 'dictionary
|
||||
:type 'string
|
||||
:version "28.1")
|
||||
|
@ -784,10 +795,10 @@ FUNCTION is the callback which is called for each search result."
|
|||
|
||||
(defun dictionary-do-search (word dictionary function &optional nomatching)
|
||||
"Search for WORD in DICTIONARY and call FUNCTION for each result.
|
||||
Optional argument NOMATCHING controls whether to suppress the display
|
||||
of matching words."
|
||||
|
||||
(insert (format-message "Searching for `%s' in `%s'\n" word dictionary))
|
||||
Optional argument NOMATCHING, if non-nil, means suppress the display
|
||||
of the \"Searching\" report and of the matching words."
|
||||
(unless nomatching
|
||||
(insert (format-message "Searching for `%s' in `%s'\n" word dictionary)))
|
||||
(dictionary-send-command (concat "define "
|
||||
(dictionary-encode-charset dictionary "")
|
||||
" \""
|
||||
|
@ -1356,11 +1367,22 @@ prompt for DICTIONARY."
|
|||
(nconc minor-mode-alist '((dictionary-tooltip-mode " Dict")))
|
||||
|
||||
(defcustom dictionary-tooltip-dictionary
|
||||
nil
|
||||
"This dictionary to lookup words for tooltips."
|
||||
t
|
||||
"The dictionary to lookup words for `dictionary-tooltip-mode'.
|
||||
If this is nil, `dictionary-tooltip-mode' is effectively disabled: no tooltips
|
||||
will be shown.
|
||||
If the value is t, `dictionary-tooltip-mode' will use the same dictionary as
|
||||
specified by `dictionary-default-dictionary'.
|
||||
Otherwise, the value should be a string, the name of a dictionary to use, and
|
||||
can use the same special values * and ! as for `dictionary-default-dictionary',
|
||||
with the same meanings.
|
||||
Dictionary names are generally specific to the servers, and are obtained
|
||||
via `dictionary-dictionaries'."
|
||||
:group 'dictionary
|
||||
:type '(choice (const :tag "None" nil) string)
|
||||
:version "28.1")
|
||||
:type '(choice (const :tag "None (disables Dictionary tooltips)" nil)
|
||||
(const :tag "Same as `dictionary-default-dictionary'" t)
|
||||
string)
|
||||
:version "30.1")
|
||||
|
||||
(defun dictionary-definition (word &optional dictionary)
|
||||
(unwind-protect
|
||||
|
@ -1377,14 +1399,20 @@ prompt for DICTIONARY."
|
|||
nil)
|
||||
|
||||
(defun dictionary-word-at-mouse-event (event)
|
||||
(with-current-buffer (tooltip-event-buffer event)
|
||||
(let ((point (posn-point (event-end event))))
|
||||
(if (use-region-p)
|
||||
(when (and (<= (region-beginning) point) (<= point (region-end)))
|
||||
(buffer-substring (region-beginning) (region-end)))
|
||||
(save-excursion
|
||||
(goto-char point)
|
||||
(current-word))))))
|
||||
(let ((buf (tooltip-event-buffer event)))
|
||||
(when (bufferp buf)
|
||||
(with-current-buffer buf
|
||||
(let ((point (posn-point (event-end event))))
|
||||
;; posn-point can return something other than buffer position when
|
||||
;; the mouse pointer is over the menu bar or tool bar or tab-bar.
|
||||
(when (number-or-marker-p point)
|
||||
(if (use-region-p)
|
||||
(when (and (<= (region-beginning) point)
|
||||
(<= point (region-end)))
|
||||
(buffer-substring (region-beginning) (region-end)))
|
||||
(save-excursion
|
||||
(goto-char point)
|
||||
(current-word)))))))))
|
||||
|
||||
(defvar dictionary-tooltip-mouse-event nil
|
||||
"Event that triggered the tooltip mode.")
|
||||
|
@ -1393,15 +1421,24 @@ prompt for DICTIONARY."
|
|||
"Search the current word in the `dictionary-tooltip-dictionary'."
|
||||
(interactive "e")
|
||||
(if (and dictionary-tooltip-mode dictionary-tooltip-dictionary)
|
||||
(let ((word (dictionary-word-at-mouse-event dictionary-tooltip-mouse-event)))
|
||||
(if word
|
||||
(let ((definition
|
||||
(dictionary-definition word dictionary-tooltip-dictionary)))
|
||||
(if definition
|
||||
(tooltip-show (dictionary-decode-charset definition
|
||||
dictionary-tooltip-dictionary)))))
|
||||
t)
|
||||
nil))
|
||||
;; This function runs from the tooltip timer. We don't want to
|
||||
;; signal errors from the timer due to "Unknown server answers",
|
||||
;; we prefer not to show anything in that case. FIXME: Perhaps
|
||||
;; use with-demoted-errors, to show the unknonw answers in the
|
||||
;; echo-area?
|
||||
(ignore-errors
|
||||
(let* ((word (dictionary-word-at-mouse-event
|
||||
dictionary-tooltip-mouse-event))
|
||||
(dict (if (eq dictionary-tooltip-dictionary t)
|
||||
dictionary-default-dictionary
|
||||
dictionary-tooltip-dictionary)))
|
||||
(if word
|
||||
(let ((definition (dictionary-definition word dict)))
|
||||
(if definition
|
||||
(tooltip-show (dictionary-decode-charset
|
||||
definition dict)))))
|
||||
t)
|
||||
nil)))
|
||||
|
||||
(defun dictionary-tooltip-track-mouse (event)
|
||||
"Called whenever a dictionary tooltip display is about to be triggered."
|
||||
|
@ -1443,6 +1480,11 @@ active it will overwrite that mode for the current buffer."
|
|||
(if on
|
||||
(local-set-key [mouse-movement] 'dictionary-tooltip-track-mouse)
|
||||
(local-set-key [mouse-movement] 'ignore))
|
||||
;; Unconditionally ignore mouse-movement events on the tool bar and
|
||||
;; tab-bar, since these are unrelated to the current buffer.
|
||||
;; FIXME: This disables help-echo for tab-bar and tool-bar buttons.
|
||||
(local-set-key [tool-bar mouse-movement] 'ignore)
|
||||
(local-set-key [tab-bar mouse-movement] 'ignore)
|
||||
on))
|
||||
|
||||
;;;###autoload
|
||||
|
@ -1536,11 +1578,18 @@ Further arguments are currently ignored."
|
|||
nil t nil 'dictionary-word-history default t)))
|
||||
|
||||
(defun dictionary-dictionaries ()
|
||||
"Return the list of dictionaries the server supports."
|
||||
"Return the list of dictionaries the server supports.
|
||||
The elements of the list have the form (NAME . DESCRIPTION),
|
||||
where NAME is the string that identifies the dictionary for
|
||||
the server, and DESCRIPTION is its more detailed description,
|
||||
which usually includes the languages it supports."
|
||||
(dictionary-send-command "show db")
|
||||
(when (and (= (read (dictionary-read-reply)) 110))
|
||||
(with-temp-buffer
|
||||
(insert (dictionary-read-answer))
|
||||
;; We query the server using 'raw-text', so decode now to present
|
||||
;; human-readable names to the user.
|
||||
(decode-coding-region (point-min) (point-max) 'utf-8)
|
||||
(goto-char (point-min))
|
||||
(let ((result '(("!" . "First matching dictionary")
|
||||
("*" . "All dictionaries"))))
|
||||
|
|
|
@ -70,12 +70,10 @@ SYNTAX can be one of the symbols `default' (default),
|
|||
;;;###tramp-autoload
|
||||
(defun tramp-list-remote-buffers ()
|
||||
"Return a list of all buffers with remote `default-directory'."
|
||||
(delq
|
||||
nil
|
||||
(mapcar
|
||||
(lambda (x)
|
||||
(when (tramp-tramp-file-p (tramp-get-default-directory x)) x))
|
||||
(buffer-list))))
|
||||
(tramp-compat-seq-keep
|
||||
(lambda (x)
|
||||
(when (tramp-tramp-file-p (tramp-get-default-directory x)) x))
|
||||
(buffer-list)))
|
||||
|
||||
;;; Cleanup
|
||||
|
||||
|
@ -567,6 +565,7 @@ For details, see `tramp-rename-files'."
|
|||
:type '(choice (const "su")
|
||||
(const "sudo")
|
||||
(const "doas")
|
||||
(const "run0")
|
||||
(const "ksu")))
|
||||
|
||||
(defun tramp-file-name-with-sudo (filename)
|
||||
|
|
|
@ -501,6 +501,24 @@ The string is used in `tramp-methods'.")
|
|||
|
||||
(tramp-set-completion-function "nc" tramp-completion-function-alist-telnet))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-enable-run0-method ()
|
||||
"Enable \"run0\" method."
|
||||
(add-to-list 'tramp-methods
|
||||
`("run0"
|
||||
(tramp-login-program "systemd-run")
|
||||
(tramp-login-args (("--uid" "%u") ("-t") ("%l")))
|
||||
(tramp-remote-shell ,tramp-default-remote-shell)
|
||||
(tramp-remote-shell-args ("-c"))
|
||||
(tramp-connection-timeout 10)
|
||||
(tramp-session-timeout 300)
|
||||
(tramp-password-previous-hop t)))
|
||||
|
||||
(add-to-list 'tramp-default-user-alist
|
||||
`(,(rx bos "run0" eos) nil ,tramp-root-id-string))
|
||||
|
||||
(tramp-set-completion-function "run0" tramp-completion-function-alist-su))
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defun tramp-enable-ksu-method ()
|
||||
"Enable \"ksu\" method."
|
||||
|
@ -2902,7 +2920,7 @@ the result will be a local, non-Tramp, file name."
|
|||
;; use a user name from the config file.
|
||||
(when (and (tramp-string-empty-or-nil-p uname)
|
||||
(string-match-p
|
||||
(rx bos (| "su" "sudo" "doas" "ksu") eos) method))
|
||||
(rx bos (| "su" "sudo" "doas" "run0" "ksu") eos) method))
|
||||
(setq uname user))
|
||||
(when (setq hname (tramp-get-home-directory v uname))
|
||||
(setq localname (concat hname fname)))))
|
||||
|
@ -5377,12 +5395,11 @@ connection if a previous connection has died for some reason."
|
|||
:host l-host :port l-port)))
|
||||
|
||||
;; Set session timeout.
|
||||
(when (tramp-get-method-parameter
|
||||
hop 'tramp-session-timeout)
|
||||
(when-let ((timeout
|
||||
(tramp-get-method-parameter
|
||||
hop 'tramp-session-timeout)))
|
||||
(tramp-set-connection-property
|
||||
p "session-timeout"
|
||||
(tramp-get-method-parameter
|
||||
hop 'tramp-session-timeout)))
|
||||
p "session-timeout" timeout))
|
||||
|
||||
;; Replace `login-args' place holders.
|
||||
(setq
|
||||
|
|
|
@ -1068,17 +1068,15 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
|
|||
|
||||
;; Filter entries.
|
||||
(setq entries
|
||||
(delq
|
||||
nil
|
||||
(if (or wildcard (string-empty-p base))
|
||||
;; Check for matching entries.
|
||||
(mapcar
|
||||
(tramp-compat-seq-keep
|
||||
(lambda (x)
|
||||
(when (string-match-p (rx bol (literal base)) (nth 0 x))
|
||||
x))
|
||||
entries)
|
||||
;; We just need the only and only entry FILENAME.
|
||||
(list (assoc base entries)))))
|
||||
(list (assoc base entries))))
|
||||
|
||||
;; Sort entries.
|
||||
(setq entries
|
||||
|
|
|
@ -2978,17 +2978,15 @@ They are collected by `tramp-completion-dissect-file-name1'."
|
|||
(regexp tramp-prefix-ipv6-regexp)
|
||||
(group (? (regexp tramp-ipv6-regexp))) eol)
|
||||
1 2 3 nil)))
|
||||
(delq
|
||||
nil
|
||||
(mapcar
|
||||
(lambda (structure) (tramp-completion-dissect-file-name1 structure name))
|
||||
(list
|
||||
tramp-completion-file-name-structure1
|
||||
tramp-completion-file-name-structure2
|
||||
tramp-completion-file-name-structure3
|
||||
tramp-completion-file-name-structure4
|
||||
tramp-completion-file-name-structure5
|
||||
tramp-completion-file-name-structure6)))))
|
||||
(tramp-compat-seq-keep
|
||||
(lambda (structure) (tramp-completion-dissect-file-name1 structure name))
|
||||
(list
|
||||
tramp-completion-file-name-structure1
|
||||
tramp-completion-file-name-structure2
|
||||
tramp-completion-file-name-structure3
|
||||
tramp-completion-file-name-structure4
|
||||
tramp-completion-file-name-structure5
|
||||
tramp-completion-file-name-structure6))))
|
||||
|
||||
(defun tramp-completion-dissect-file-name1 (structure name)
|
||||
"Return a `tramp-file-name' structure for NAME matching STRUCTURE.
|
||||
|
@ -4777,10 +4775,10 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
|
|||
vec "Method `%s' is not supported for multi-hops"
|
||||
(tramp-file-name-method item)))))
|
||||
|
||||
;; Some methods ("su", "sg", "sudo", "doas", "ksu") do not use the
|
||||
;; host name in their command template. In this case, the remote
|
||||
;; file name must use either a local host name (first hop), or a
|
||||
;; host name matching the previous hop.
|
||||
;; Some methods ("su", "sg", "sudo", "doas", "run0", "ksu") do not
|
||||
;; use the host name in their command template. In this case, the
|
||||
;; remote file name must use either a local host name (first hop),
|
||||
;; or a host name matching the previous hop.
|
||||
(let ((previous-host (or tramp-local-host-regexp "")))
|
||||
(setq choices target-alist)
|
||||
(while (setq item (pop choices))
|
||||
|
|
|
@ -502,7 +502,7 @@ Otherwise, redisplay will reset the window's vscroll."
|
|||
(defun pixel-scroll-precision-scroll-down-page (delta)
|
||||
"Scroll the current window down by DELTA pixels.
|
||||
Note that this function doesn't work if DELTA is larger than or
|
||||
equal to the height of the current window."
|
||||
equal to the text height of the current window in pixels."
|
||||
(let* ((desired-pos (posn-at-x-y 0 (+ delta
|
||||
(window-tab-line-height)
|
||||
(window-header-line-height))))
|
||||
|
|
|
@ -40,8 +40,10 @@
|
|||
(declare-function treesit-induce-sparse-tree "treesit.c")
|
||||
(declare-function treesit-node-child-by-field-name "treesit.c")
|
||||
(declare-function treesit-node-child-count "treesit.c")
|
||||
(declare-function treesit-node-eq "treesit.c")
|
||||
(declare-function treesit-node-first-child-for-pos "treesit.c")
|
||||
(declare-function treesit-node-parent "treesit.c")
|
||||
(declare-function treesit-node-prev-sibling "treesit.c")
|
||||
(declare-function treesit-node-start "treesit.c")
|
||||
(declare-function treesit-node-end "treesit.c")
|
||||
(declare-function treesit-node-type "treesit.c")
|
||||
|
|
|
@ -172,7 +172,7 @@ created in the future."
|
|||
|
||||
(defun toggle-scroll-bar (arg)
|
||||
"Toggle whether or not the selected frame has vertical scroll bars.
|
||||
With ARG, turn vertical scroll bars on if and only if ARG is positive.
|
||||
With ARG, turn on vertical scroll bars if and only if ARG is positive.
|
||||
The variable `scroll-bar-mode' controls which side the scroll bars are on
|
||||
when they are turned on; if it is nil, they go on the left."
|
||||
(interactive "P")
|
||||
|
@ -188,7 +188,7 @@ when they are turned on; if it is nil, they go on the left."
|
|||
|
||||
(defun toggle-horizontal-scroll-bar (arg)
|
||||
"Toggle whether or not the selected frame has horizontal scroll bars.
|
||||
With ARG, turn vertical scroll bars on if and only if ARG is positive."
|
||||
With ARG, turn on horizontal scroll bars if and only if ARG is positive."
|
||||
(interactive "P")
|
||||
(if (null arg)
|
||||
(setq arg
|
||||
|
|
20
lisp/subr.el
20
lisp/subr.el
|
@ -5690,13 +5690,19 @@ The SEPARATOR regexp defaults to \"\\s-+\"."
|
|||
(defun subst-char-in-string (fromchar tochar string &optional inplace)
|
||||
"Replace FROMCHAR with TOCHAR in STRING each time it occurs.
|
||||
Unless optional argument INPLACE is non-nil, return a new string."
|
||||
(let ((i (length string))
|
||||
(newstr (if inplace string (copy-sequence string))))
|
||||
(while (> i 0)
|
||||
(setq i (1- i))
|
||||
(if (eq (aref newstr i) fromchar)
|
||||
(aset newstr i tochar)))
|
||||
newstr))
|
||||
(if (and (not inplace)
|
||||
(if (multibyte-string-p string)
|
||||
(> (max fromchar tochar) 127)
|
||||
(> tochar 255)))
|
||||
;; Avoid quadratic behaviour from resizing replacement.
|
||||
(string-replace (string fromchar) (string tochar) string)
|
||||
(let ((i (length string))
|
||||
(newstr (if inplace string (copy-sequence string))))
|
||||
(while (> i 0)
|
||||
(setq i (1- i))
|
||||
(if (eq (aref newstr i) fromchar)
|
||||
(aset newstr i tochar)))
|
||||
newstr)))
|
||||
|
||||
(defun string-replace (from-string to-string in-string)
|
||||
"Replace FROM-STRING with TO-STRING in IN-STRING each time it occurs."
|
||||
|
|
|
@ -4059,6 +4059,10 @@ You can bind this to the key C-c i in GNUS or mail by adding to
|
|||
(if (re-search-forward "^Subject: *" end-of-headers t)
|
||||
(progn
|
||||
(goto-char (match-end 0))
|
||||
;; Don't spell-check Subject if it comes from a
|
||||
;; received message: "Re:" indicates this is a reply
|
||||
;; to someone else's message, "[...]" indicates this
|
||||
;; is a subject of a forwarded message.
|
||||
(if (and (not (looking-at ".*\\<Re\\>"))
|
||||
(not (looking-at "\\[")))
|
||||
(progn
|
||||
|
|
|
@ -178,7 +178,7 @@ rest are not called.")
|
|||
"Return the buffer over which event EVENT occurred.
|
||||
This might return nil if the event did not occur over a buffer."
|
||||
(let ((window (posn-window (event-end event))))
|
||||
(and window (window-buffer window))))
|
||||
(and (windowp window) (window-buffer window))))
|
||||
|
||||
|
||||
;;; Timeout for tooltip display
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# 00gnulib.m4 serial 9
|
||||
# 00gnulib.m4
|
||||
# serial 9
|
||||
dnl Copyright (C) 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
# Test for __inline keyword
|
||||
# __inline.m4
|
||||
# serial 1
|
||||
dnl Copyright 2017-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Test for __inline keyword
|
||||
|
||||
AC_DEFUN([gl___INLINE],
|
||||
[
|
||||
AC_CACHE_CHECK([whether the compiler supports the __inline keyword],
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# absolute-header.m4 serial 18
|
||||
# absolute-header.m4
|
||||
# serial 18
|
||||
dnl Copyright (C) 2006-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
11
m4/acl.m4
11
m4/acl.m4
|
@ -1,10 +1,11 @@
|
|||
# acl.m4 - check for access control list (ACL) primitives
|
||||
# acl.m4
|
||||
# serial 30
|
||||
dnl Copyright (C) 2002, 2004-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Copyright (C) 2002, 2004-2024 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Check for access control list (ACL) primitives
|
||||
|
||||
# Written by Paul Eggert and Jim Meyering.
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# alloca.m4 serial 21
|
||||
# alloca.m4
|
||||
# serial 21
|
||||
dnl Copyright (C) 2002-2004, 2006-2007, 2009-2024 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# assert-h.m4
|
||||
# assert_h.m4
|
||||
# serial 1
|
||||
dnl Copyright (C) 2011-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
dnl Check for __builtin_expect.
|
||||
|
||||
# builtin-expect.m4
|
||||
# serial 1
|
||||
dnl Copyright 2016-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Check for __builtin_expect.
|
||||
|
||||
dnl Written by Paul Eggert.
|
||||
|
||||
AC_DEFUN([gl___BUILTIN_EXPECT],
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# byteswap.m4 serial 5
|
||||
# byteswap.m4
|
||||
# serial 5
|
||||
dnl Copyright (C) 2005, 2007, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# Check for bool that conforms to C2023.
|
||||
|
||||
# c-bool.m4
|
||||
# serial 1
|
||||
dnl Copyright 2022-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Check for bool that conforms to C2023.
|
||||
|
||||
AC_DEFUN([gl_C_BOOL],
|
||||
[
|
||||
AC_CACHE_CHECK([for bool, true, false], [gl_cv_c_bool],
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# canonicalize.m4 serial 39
|
||||
# canonicalize.m4
|
||||
# serial 39
|
||||
|
||||
dnl Copyright (C) 2003-2007, 2009-2024 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# clock_time.m4 serial 14
|
||||
# clock_time.m4
|
||||
# serial 14
|
||||
dnl Copyright (C) 2002-2006, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# codeset.m4 serial 5 (gettext-0.18.2)
|
||||
# codeset.m4
|
||||
# serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2024 Free Software
|
||||
dnl Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# copy-file-range.m4 serial 5
|
||||
# copy-file-range.m4
|
||||
# serial 5
|
||||
dnl Copyright 2019-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
12
m4/d-type.m4
12
m4/d-type.m4
|
@ -1,15 +1,13 @@
|
|||
# d-type.m4
|
||||
# serial 12
|
||||
dnl Copyright (C) 1997, 1999-2004, 2006, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Jim Meyering.
|
||||
dnl
|
||||
dnl Check whether struct dirent has a member named d_type.
|
||||
dnl
|
||||
|
||||
# Copyright (C) 1997, 1999-2004, 2006, 2009-2024 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE],
|
||||
[AC_CACHE_CHECK([for d_type member in directory struct],
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# dirent_h.m4 serial 22
|
||||
# dirent_h.m4
|
||||
# serial 22
|
||||
dnl Copyright (C) 2008-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
10
m4/dirfd.m4
10
m4/dirfd.m4
|
@ -1,12 +1,12 @@
|
|||
# dirfd.m4
|
||||
# serial 30 -*- Autoconf -*-
|
||||
dnl Copyright (C) 2001-2006, 2008-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Find out how to get the file descriptor associated with an open DIR*.
|
||||
|
||||
# Copyright (C) 2001-2006, 2008-2024 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Jim Meyering
|
||||
|
||||
AC_DEFUN([gl_FUNC_DIRFD],
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# double-slash-root.m4 serial 4 -*- Autoconf -*-
|
||||
# double-slash-root.m4
|
||||
# serial 4 -*- Autoconf -*-
|
||||
dnl Copyright (C) 2006, 2008-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#serial 28
|
||||
# dup2.m4
|
||||
# serial 28
|
||||
dnl Copyright (C) 2002, 2005, 2007, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# eealloc.m4 serial 3
|
||||
# eealloc.m4
|
||||
# serial 3
|
||||
dnl Copyright (C) 2003, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# environ.m4 serial 8
|
||||
# environ.m4
|
||||
# serial 8
|
||||
dnl Copyright (C) 2001-2004, 2006-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# errno_h.m4 serial 14
|
||||
# errno_h.m4
|
||||
# serial 14
|
||||
dnl Copyright (C) 2004, 2006, 2008-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# euidaccess.m4 serial 17
|
||||
# euidaccess.m4
|
||||
# serial 17
|
||||
dnl Copyright (C) 2002-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# Check for GNU-style execinfo.h.
|
||||
|
||||
# execinfo.m4
|
||||
# serial 1
|
||||
dnl Copyright 2012-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Check for GNU-style execinfo.h.
|
||||
|
||||
AC_DEFUN([gl_EXECINFO_H],
|
||||
[
|
||||
AC_CHECK_HEADERS_ONCE([execinfo.h])
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# serial 23 -*- Autoconf -*-
|
||||
# Enable extensions on systems that normally disable them.
|
||||
# extensions.m4
|
||||
# serial 25 -*- Autoconf -*-
|
||||
dnl Copyright (C) 2003, 2006-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Copyright (C) 2003, 2006-2024 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Enable extensions on systems that normally disable them.
|
||||
|
||||
dnl Define to empty for the benefit of Autoconf 2.69 and earlier, so that
|
||||
dnl AC_USE_SYSTEM_EXTENSIONS (below) can be used unchanged from Autoconf 2.70+.
|
||||
|
@ -229,4 +230,15 @@ AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
|
|||
[Define to enable the declarations of ISO C 11 types and functions.])
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl On OpenSolaris derivatives, the include files contains a couple of
|
||||
dnl declarations that are only activated with an explicit
|
||||
dnl -D__STDC_WANT_LIB_EXT1__.
|
||||
AH_VERBATIM([USE_ISO_C_23_ANNEX_K_EXTENSIONS],
|
||||
[/* Define to enable the declarations of ISO C 23 Annex K types and functions. */
|
||||
#if !(defined __STDC_WANT_LIB_EXT1__ && __STDC_WANT_LIB_EXT1__)
|
||||
#undef/**/__STDC_WANT_LIB_EXT1__
|
||||
#define __STDC_WANT_LIB_EXT1__ 1
|
||||
#endif
|
||||
])
|
||||
])
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
dnl 'extern inline' a la ISO C99.
|
||||
|
||||
# extern-inline.m4
|
||||
# serial 1
|
||||
dnl Copyright 2012-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl 'extern inline' a la ISO C99.
|
||||
|
||||
AC_DEFUN([gl_EXTERN_INLINE],
|
||||
[
|
||||
AC_CACHE_CHECK([whether ctype.h defines __header_inline],
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
# faccessat.m4
|
||||
# serial 12
|
||||
# See if we need to provide faccessat replacement.
|
||||
|
||||
dnl Copyright (C) 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# See if we need to provide faccessat replacement.
|
||||
|
||||
# Written by Eric Blake.
|
||||
|
||||
AC_DEFUN([gl_FUNC_FACCESSAT],
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# fchmodat.m4 serial 8
|
||||
# fchmodat.m4
|
||||
# serial 8
|
||||
dnl Copyright (C) 2004-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# fcntl.m4 serial 11
|
||||
# fcntl.m4
|
||||
# serial 12
|
||||
dnl Copyright (C) 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -82,7 +83,7 @@ AC_DEFUN([gl_FUNC_FCNTL],
|
|||
esac
|
||||
|
||||
dnl Many systems lack F_DUPFD_CLOEXEC.
|
||||
dnl NetBSD 9.0 declares F_DUPFD_CLOEXEC but it works only like F_DUPFD.
|
||||
dnl NetBSD 10.0 declares F_DUPFD_CLOEXEC but it works only like F_DUPFD.
|
||||
AC_CACHE_CHECK([whether fcntl understands F_DUPFD_CLOEXEC],
|
||||
[gl_cv_func_fcntl_f_dupfd_cloexec],
|
||||
[AC_RUN_IFELSE(
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# fcntl_h.m4
|
||||
# serial 20
|
||||
# Configure fcntl.h.
|
||||
dnl Copyright (C) 2006-2007, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Configure fcntl.h.
|
||||
|
||||
dnl Written by Paul Eggert.
|
||||
|
||||
AC_DEFUN_ONCE([gl_FCNTL_H],
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
# fdopendir.m4
|
||||
# serial 15
|
||||
# See if we need to provide fdopendir.
|
||||
|
||||
dnl Copyright (C) 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# See if we need to provide fdopendir.
|
||||
|
||||
# Written by Eric Blake.
|
||||
|
||||
AC_DEFUN([gl_FUNC_FDOPENDIR],
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# filemode.m4 serial 9
|
||||
# filemode.m4
|
||||
# serial 9
|
||||
dnl Copyright (C) 2002, 2005-2006, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# flexmember.m4
|
||||
# serial 5
|
||||
# Check for flexible array member support.
|
||||
dnl Copyright (C) 2006, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Copyright (C) 2006, 2009-2024 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# Check for flexible array member support.
|
||||
|
||||
# Written by Paul Eggert.
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# fpending.m4
|
||||
# serial 23
|
||||
|
||||
# Copyright (C) 2000-2001, 2004-2024 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
dnl Copyright (C) 2000-2001, 2004-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Jim Meyering
|
||||
dnl Using code from emacs, based on suggestions from Paul Eggert
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# fpieee.m4 serial 2 -*- coding: utf-8 -*-
|
||||
# fpieee.m4
|
||||
# serial 2 -*- coding: utf-8 -*-
|
||||
dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
|
11
m4/free.m4
11
m4/free.m4
|
@ -1,8 +1,9 @@
|
|||
# free.m4 serial 6
|
||||
# Copyright (C) 2003-2005, 2009-2024 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
# free.m4
|
||||
# serial 6
|
||||
dnl Copyright (C) 2003-2005, 2009-2024 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Written by Paul Eggert and Bruno Haible.
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue