Hash :
32a0b508
Author :
Date :
2024-04-18T00:28:40
Fix linkage errors when using C++.
Reported by Miro Palmu <email@miropalmu.cc> in
<https://lists.gnu.org/archive/html/bug-gnulib/2024-04/msg00274.html>.
* lib/acl.h: Add 'extern "C" {' / '}' boilerplate.
* lib/alignalloc.h: Likewise.
* lib/aligned-malloc.h: Likewise.
* lib/allocator.h: Likewise.
* lib/arcfour.h: Likewise.
* lib/arctwo.h: Likewise.
* lib/areadlink.h: Likewise.
* lib/argv-iter.h: Likewise.
* lib/argz.in.h: Likewise.
* lib/binary-io.h: Likewise.
* lib/bitrotate.h: Likewise.
* lib/bitset.h: Likewise.
* lib/bitsetv.h: Likewise.
* lib/c-strcaseeq.h: Likewise.
* lib/canon-host.h: Likewise.
* lib/careadlinkat.h: Likewise.
* lib/chdir-long.h: Likewise.
* lib/check-version.h: Likewise.
* lib/classpath.h: Likewise.
* lib/cloexec.h: Likewise.
* lib/close-stream.h: Likewise.
* lib/crc.h: Likewise.
* lib/csharpcomp.h: Likewise.
* lib/csharpexec.h: Likewise.
* lib/cycle-check.h: Likewise.
* lib/des.h: Likewise.
* lib/dev-ino.h: Likewise.
* lib/di-set.h: Likewise.
* lib/eealloc.h: Likewise.
* lib/exclude.h: Likewise.
* lib/execinfo.in.h: Likewise.
* lib/execute.h: Likewise.
* lib/exitfail.h: Likewise.
* lib/fcntl-safer.h: Likewise.
* lib/file-set.h: Likewise.
* lib/file-type.h: Likewise.
* lib/filenamecat.h: Likewise.
* lib/filevercmp.h: Likewise.
* lib/fpending.h: Likewise.
* lib/fprintftime.h: Likewise.
* lib/fpucw.h: Likewise.
* lib/fsusage.h: Likewise.
* lib/ftoastr.h: Likewise.
* lib/full-read.h: Likewise.
* lib/gc.h: Likewise.
* lib/getndelim2.h: Likewise.
* lib/getnline.h: Likewise.
* lib/getugroups.h: Likewise.
* lib/glthread/tls.h: Likewise.
* lib/hamt.h: Likewise.
* lib/hard-locale.h: Likewise.
* lib/hash-pjw-bare.h: Likewise.
* lib/hash-pjw.h: Likewise.
* lib/hash-triple.h: Likewise.
* lib/hmac.h: Likewise.
* lib/human.h: Likewise.
* lib/i-ring.h: Likewise.
* lib/idcache.h: Likewise.
* lib/idx.h: Likewise.
* lib/ino-map.h: Likewise.
* lib/inttostr.h: Likewise.
* lib/isapipe.h: Likewise.
* lib/javacomp.h: Likewise.
* lib/javaexec.h: Likewise.
* lib/jit/cache.h: Likewise.
* lib/linebuffer.h: Likewise.
* lib/localeinfo.h: Likewise.
* lib/long-options.h: Likewise.
* lib/mbchar.h: Likewise.
* lib/mbfile.h: Likewise.
* lib/mbiter.h: Likewise.
* lib/mbiterf.h: Likewise.
* lib/mbuiter.h: Likewise.
* lib/mbuiterf.h: Likewise.
* lib/mcel.h: Likewise.
* lib/memcasecmp.h: Likewise.
* lib/memcoll.h: Likewise.
* lib/memxor.h: Likewise.
* lib/mgetgroups.h: Likewise.
* lib/mkdir-p.h: Likewise.
* lib/modechange.h: Likewise.
* lib/mountlist.h: Likewise.
* lib/mpsort.h: Likewise.
* lib/msvc-nothrow.h: Likewise.
* lib/nan.h: Likewise.
* lib/openat-priv.h: Likewise.
* lib/openat.h: Likewise.
* lib/opendirat.h: Likewise.
* lib/pagealign_alloc.h: Likewise.
* lib/parse-datetime.h: Likewise.
* lib/parse-duration.h: Likewise.
* lib/physmem.h: Likewise.
* lib/posixtm.h: Likewise.
* lib/posixver.h: Likewise.
* lib/printf-frexp.h: Likewise.
* lib/printf-frexpl.h: Likewise.
* lib/priv-set.h: Likewise.
* lib/quote.h: Likewise.
* lib/quotearg.h: Likewise.
* lib/read-file.h: Likewise.
* lib/readline.h: Likewise.
* lib/readtokens.h: Likewise.
* lib/readtokens0.h: Likewise.
* lib/regex-quote.h: Likewise.
* lib/renameatu.h: Likewise.
* lib/rijndael-alg-fst.h: Likewise.
* lib/rijndael-api-fst.h: Likewise.
* lib/safe-alloc.h: Likewise.
* lib/safe-write.h: Likewise.
* lib/same-inode.h: Likewise.
* lib/same.h: Likewise.
* lib/save-cwd.h: Likewise.
* lib/savedir.h: Likewise.
* lib/savewd.h: Likewise.
* lib/selinux-at.h: Likewise.
* lib/signed-nan.h: Likewise.
* lib/signed-snan.h: Likewise.
* lib/snan.h: Likewise.
* lib/sockets.h: Likewise.
* lib/stdio-safer.h: Likewise.
* lib/stdlib-safer.h: Likewise.
* lib/streq.h: Likewise.
* lib/strerror-override.h: Likewise.
* lib/tmpdir.h: Likewise.
* lib/trim.h: Likewise.
* lib/u64.h: Likewise.
* lib/unicase/casefold.h: Likewise.
* lib/unicase/caseprop.h: Likewise.
* lib/unicase/invariant.h: Likewise.
* lib/unicase/special-casing.in.h: Likewise.
* lib/unicase/unicasemap.h: Likewise.
* lib/unicodeio.h: Likewise.
* lib/unilbrk/lbrktables.h: Likewise.
* lib/unilbrk/ulc-common.h: Likewise.
* lib/uninorm/decompose-internal.h: Likewise.
* lib/unistd-safer.h: Likewise.
* lib/unitypes.in.h: Likewise.
* lib/uniwbrk/wbrktable.h: Likewise.
* lib/unlinkdir.h: Likewise.
* lib/userspec.h: Likewise.
* lib/utimecmp.h: Likewise.
* lib/utimens.h: Likewise.
* lib/windows-spawn.h: Likewise.
* lib/write-any-file.h: Likewise.
* lib/xbinary-io.h: Likewise.
* lib/xgetcwd.h: Likewise.
* lib/xgetdomainname.h: Likewise.
* lib/xgethostname.h: Likewise.
* lib/xmemcoll.h: Likewise.
* lib/xprintf.h: Likewise.
* lib/xreadlink.h: Likewise.
* lib/xsize.h: Likewise.
* lib/xstrndup.h: Likewise.
* lib/xstrtod.h: Likewise.
* lib/xstrtol.h: Likewise.
* lib/yesno.h: Likewise.
* lib/isnand-nolibm.h (isnand): Declare with C linkage.
* lib/isnanf-nolibm.h (isnanf): Likewise.
* lib/isnanl-nolibm.h (isnanl): Likewise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
/* Determine whether two stat buffers are known to refer to the same file.
Copyright (C) 2006, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
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/>. */
#ifndef SAME_INODE_H
#define SAME_INODE_H 1
/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE. */
#if !_GL_CONFIG_H_INCLUDED
#error "Please include config.h first."
#endif
#include <sys/stat.h>
_GL_INLINE_HEADER_BEGIN
#ifndef SAME_INODE_INLINE
# define SAME_INODE_INLINE _GL_INLINE
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* True if A and B point to structs with st_dev and st_ino members
that are known to represent the same file.
Use | and ^ to shorten generated code, and to lessen the
probability of screwups if st_ino is an array. */
#if defined __VMS && __CRTL_VER < 80200000
# define PSAME_INODE(a, b) (! (((a)->st_dev ^ (b)->st_dev) \
| ((a)->st_ino[0] ^ (b)->st_ino[0]) \
| ((a)->st_ino[1] ^ (b)->st_ino[1]) \
| ((a)->st_ino[2] ^ (b)->st_ino[2])))
#elif defined _WIN32 && ! defined __CYGWIN__
/* Native Windows. */
# if _GL_WINDOWS_STAT_INODES
/* stat() and fstat() set st_dev and st_ino to 0 if information about
the inode is not available. */
# if _GL_WINDOWS_STAT_INODES == 2
# define PSAME_INODE(a, b) \
(! (! ((a)->st_dev | (a)->st_ino._gl_ino[0] | (a)->st_ino._gl_ino[1]) \
| ((a)->st_dev ^ (b)->st_dev) \
| ((a)->st_ino._gl_ino[0] ^ (b)->st_ino._gl_ino[0]) \
| ((a)->st_ino._gl_ino[1] ^ (b)->st_ino._gl_ino[1])))
# else
# define PSAME_INODE(a, b) (! (! ((a)->st_dev | (a)->st_ino) \
| ((a)->st_dev ^ (b)->st_dev) \
| ((a)->st_ino ^ (b)->st_ino)))
# endif
# else
/* stat() and fstat() set st_ino to 0 always. */
# define PSAME_INODE(a, b) 0
# endif
#else
/* POSIX. */
# define PSAME_INODE(a, b) (! (((a)->st_dev ^ (b)->st_dev) \
| ((a)->st_ino ^ (b)->st_ino)))
#endif
/* True if struct objects A and B are known to represent the same file. */
#define SAME_INODE(a, b) PSAME_INODE (&(a), &(b))
/* True if *A and *B represent the same file. Unlike PSAME_INODE,
args are evaluated once and must point to struct stat. */
SAME_INODE_INLINE bool
psame_inode (struct stat const *a, struct stat const *b)
{
return PSAME_INODE (a, b);
}
#ifdef __cplusplus
}
#endif
_GL_INLINE_HEADER_END
#endif