Skip to content

Commit

Permalink
Don't re-define strlcpy/strlcat with >=glibc-2.38
Browse files Browse the repository at this point in the history
>=glibc-2.38 implements strlcpy, strlcat, etc so check for those functions
with Meson and don't provide conflicting prototypes.

Technically, it doesn't need _GNU_SOURCE, but it's easier because it's not
clear right now what glibc wants to guard it with. Note that these are in
POSIX next anyway.

Fixes: #643
Signed-off-by: Sam James <[email protected]>
  • Loading branch information
thesamesam committed Aug 30, 2023
1 parent 86efc43 commit 2b6e46e
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 7 deletions.
4 changes: 4 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ if cc.has_function('close_range', prefix: '#define _GNU_SOURCE\n#include <unistd
add_project_arguments('-DHAVE_CLOSE_RANGE_CLOEXEC', language: 'c')
endif

if cc.has_function('strlcpy', prefix: '#define _GNU_SOURCE\n#include <string.h>')
add_project_arguments('-DHAVE_STRLCPY', language: 'c')
endif

incdir = include_directories('src/shared')
einfo_incdir = include_directories('src/libeinfo')
rc_incdir = include_directories('src/librc')
Expand Down
5 changes: 1 addition & 4 deletions src/libeinfo/libeinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,7 @@ static const char *const color_terms[] = {
};
#endif

/* strlcat and strlcpy are nice, shame glibc does not define them */
#ifdef __GLIBC__
# if !defined (__UCLIBC__) && !defined (__dietlibc__)
#ifndef HAVE_STRLCPY
static size_t
strlcat(char *dst, const char *src, size_t size)
{
Expand Down Expand Up @@ -176,7 +174,6 @@ strlcat(char *dst, const char *src, size_t size)

return dst_n + (s - src);
}
# endif
#endif

static bool
Expand Down
4 changes: 1 addition & 3 deletions src/shared/helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,8 @@

#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))

#ifdef __GLIBC__
# if !defined (__UCLIBC__) && !defined (__dietlibc__)
#ifndef HAVE_STRLCPY
# define strlcpy(dst, src, size) snprintf(dst, size, "%s", src)
# endif
#endif

#ifndef timespecsub
Expand Down

0 comments on commit 2b6e46e

Please sign in to comment.