build-sys: improve dependences for lib/procfs.c

* add #ifdefs when use statfs() and include statfs.h or vfs.h

Addresses: https://github.com/util-linux/util-linux/issues/1634
Signed-off-by: Karel Zak <kzak@redhat.com>
pull/1641/head
Karel Zak 2022-04-04 13:17:44 +02:00
parent 24f79730aa
commit 3671d4a878
4 changed files with 19 additions and 4 deletions

View File

@ -346,6 +346,7 @@ AC_CHECK_HEADERS([ \
sys/socket.h \
sys/sockio.h \
sys/stat.h \
sys/statfs.h \
sys/swap.h \
sys/syscall.h \
sys/sysmacros.h \
@ -355,6 +356,7 @@ AC_CHECK_HEADERS([ \
sys/types.h \
sys/ucred.h \
sys/un.h \
sys/vfs.h \
sys/xattr.h \
unistd.h \
utmp.h \

View File

@ -1,7 +1,9 @@
#ifndef UTIL_LINUX_STATFS_MAGIC_H
#define UTIL_LINUX_STATFS_MAGIC_H
#include <sys/statfs.h>
#ifdef HAVE_SYS_STATFS_H
# include <sys/statfs.h>
#endif
/*
* If possible then don't depend on internal libc __SWORD_TYPE type.

View File

@ -6,9 +6,13 @@
*/
#include <ctype.h>
#include <unistd.h>
#include <sys/vfs.h>
#include <errno.h>
#ifdef HAVE_SYS_VFS_H
# include <sys/vfs.h>
# include "statfs_magic.h"
#endif
#include "c.h"
#include "pathnames.h"
#include "procfs.h"
@ -16,7 +20,6 @@
#include "all-io.h"
#include "debug.h"
#include "strutils.h"
#include "statfs_magic.h"
static void procfs_process_deinit_path(struct path_cxt *pc);
@ -356,6 +359,7 @@ int procfs_dirent_match_name(DIR *procfs, struct dirent *d, const char *name)
return 0;
}
#ifdef HAVE_SYS_VFS_H
/* checks if fd is file in a procfs;
* returns 1 if true, 0 if false or couldn't determine */
int fd_is_procfs(int fd)
@ -375,7 +379,14 @@ int fd_is_procfs(int fd)
} while (ret != 0);
return st.f_type == STATFS_PROC_MAGIC;
return 0;
}
#else
int fd_is_procfs(int fd __attribute__((__unused__)))
{
return 0;
}
#endif
static char *strdup_procfs_file(pid_t pid, const char *name)
{

View File

@ -38,7 +38,7 @@
#include <ctype.h> /* tolower() */
#include <sys/ioctl.h>
#if defined(HAVE_LINUX_FIEMAP_H)
#if defined(HAVE_LINUX_FIEMAP_H) && defined(HAVE_SYS_VFS_H)
# include <linux/fs.h>
# include <linux/fiemap.h>
# ifdef FICLONE