inotify-tools: Fix build on musl and lfs64

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj 2022-12-20 11:27:17 -08:00
parent a71c6b16b6
commit 562413e686
3 changed files with 150 additions and 1 deletions

View File

@ -0,0 +1,28 @@
From 6a57ff26d695aaad096b798879a5dbc5af2cedf5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 20 Dec 2022 10:46:50 -0800
Subject: [PATCH] configure: Add AC_SYS_LARGEFILE autoconf macro
This will define _FILE_OFFSET_BITS to be 64 if off_t is 64bit
and we do not need to define lfs64 functions
Upstream-Status: Submitted [https://github.com/inotify-tools/inotify-tools/pull/174]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
configure.ac | 3 +++
1 file changed, 3 insertions(+)
diff --git a/configure.ac b/configure.ac
index bddf14d..b89a266 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,6 +17,9 @@ AC_PROG_CC
AM_INIT_AUTOMAKE
LT_INIT
+# Add option for largefile support
+AC_SYS_LARGEFILE
+
AC_PATH_PROG(DOXYGEN, doxygen, NO_DOXYGEN)
AC_ARG_ENABLE(doxygen,

View File

@ -0,0 +1,119 @@
From c6093ad63b92f5d25e6826d1c49dc7cee86d3747 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 20 Dec 2022 10:48:10 -0800
Subject: [PATCH] replace stat64/lstat64 with stat/lstat
lfs64 functions are not needed when off_t is 64-bit
Additionally this fixes build with musl which does not
export these functions without defining _LARGEFILE64_SOURCE
Upstream-Status: Submitted [https://github.com/inotify-tools/inotify-tools/pull/174]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
libinotifytools/src/inotifytools.c | 8 ++++----
libinotifytools/src/inotifytools/inotify-nosys.h | 5 -----
libinotifytools/src/inotifytools/inotifytools.h | 5 -----
src/common.c | 4 ++--
src/common.h | 6 +-----
5 files changed, 7 insertions(+), 21 deletions(-)
diff --git a/libinotifytools/src/inotifytools.c b/libinotifytools/src/inotifytools.c
index 50f6135..3e17ac6 100644
--- a/libinotifytools/src/inotifytools.c
+++ b/libinotifytools/src/inotifytools.c
@@ -1750,14 +1750,14 @@ int inotifytools_watch_recursively_with_exclude(char const* path,
static struct dirent * ent;
char * next_file;
- static struct stat64 my_stat;
+ static struct stat my_stat;
ent = readdir( dir );
// Watch each directory within this directory
while ( ent ) {
if ( (0 != strcmp( ent->d_name, "." )) &&
(0 != strcmp( ent->d_name, ".." )) ) {
nasprintf(&next_file,"%s%s", my_path, ent->d_name);
- if ( -1 == lstat64( next_file, &my_stat ) ) {
+ if ( -1 == lstat( next_file, &my_stat ) ) {
error = errno;
free( next_file );
if ( errno != EACCES ) {
@@ -1840,9 +1840,9 @@ int inotifytools_error() {
* @internal
*/
static int isdir( char const * path ) {
- static struct stat64 my_stat;
+ static struct stat my_stat;
- if ( -1 == lstat64( path, &my_stat ) ) {
+ if ( -1 == lstat( path, &my_stat ) ) {
if (errno == ENOENT) return 0;
fprintf(stderr, "Stat failed on %s: %s\n", path, strerror(errno));
return 0;
diff --git a/libinotifytools/src/inotifytools/inotify-nosys.h b/libinotifytools/src/inotifytools/inotify-nosys.h
index 01aa45e..97166d4 100644
--- a/libinotifytools/src/inotifytools/inotify-nosys.h
+++ b/libinotifytools/src/inotifytools/inotify-nosys.h
@@ -13,11 +13,6 @@
#include <sys/syscall.h>
#include <unistd.h>
-#ifdef __FreeBSD__
-#define stat64 stat
-#define lstat64 lstat
-#endif
-
/*
* struct inotify_event - structure read from the inotify device for each event
*
diff --git a/libinotifytools/src/inotifytools/inotifytools.h b/libinotifytools/src/inotifytools/inotifytools.h
index 49936ae..2ec4358 100644
--- a/libinotifytools/src/inotifytools/inotifytools.h
+++ b/libinotifytools/src/inotifytools/inotifytools.h
@@ -1,11 +1,6 @@
#ifndef _inotifytools_H
#define _inotifytools_H
-#ifdef __FreeBSD__
-#define stat64 stat
-#define lstat64 lstat
-#endif
-
#ifdef __cplusplus
extern "C"
{
diff --git a/src/common.c b/src/common.c
index 5a6fda1..885286e 100644
--- a/src/common.c
+++ b/src/common.c
@@ -45,9 +45,9 @@ void print_event_descriptions() {
}
int isdir(char const *path) {
- static struct stat64 my_stat;
+ static struct stat my_stat;
- if (-1 == lstat64(path, &my_stat)) {
+ if (-1 == lstat(path, &my_stat)) {
if (errno == ENOENT)
return 0;
fprintf(stderr, "Stat failed on %s: %s\n", path, strerror(errno));
diff --git a/src/common.h b/src/common.h
index 12d3dde..7f1e34a 100644
--- a/src/common.h
+++ b/src/common.h
@@ -1,13 +1,9 @@
#ifndef COMMON_H
#define COMMON_H
-#ifdef __FreeBSD__
-#define stat64 stat
-#define lstat64 lstat
-#ifdef ENABLE_FANOTIFY
+#if defined(__FreeBSD__) && defined(ENABLE_FANOTIFY)
#error "FreeBSD does not support fanotify"
#endif
-#endif
#include <stdbool.h>

View File

@ -9,7 +9,9 @@ SRCREV = "c8bdbc0a2ed822fc7c67c5c3e102d89fe27fb2d0"
SRC_URI = "git://github.com/${BPN}/${BPN};branch=master;protocol=https \
file://0002-libinotifytools-Bridge-differences-between-musl-glib.patch \
"
file://0002-configure-Add-AC_SYS_LARGEFILE-autoconf-macro.patch \
file://0003-replace-stat64-lstat64-with-stat-lstat.patch \
"
S = "${WORKDIR}/git"