mirror of
https://github.com/AuxXxilium/eudev.git
synced 2025-03-11 17:31:10 +07:00
missing: define name_to_handle_at on our own if it is missing
This commit is contained in:
parent
438bacd18e
commit
a8348796c0
@ -154,6 +154,11 @@ CAP_LIBS="$LIBS"
|
||||
LIBS="$save_LIBS"
|
||||
AC_SUBST(CAP_LIBS)
|
||||
|
||||
AC_CHECK_FUNCS([fanotify_init fanotify_mark name_to_handle_at])
|
||||
AC_CHECK_DECLS([gettid, pivot_root], [], [], [[#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/mount.h>]])
|
||||
|
||||
# This makes sure pkg.m4 is available.
|
||||
m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
|
||||
|
||||
|
@ -43,6 +43,10 @@
|
||||
#include <getopt.h>
|
||||
#include <sys/inotify.h>
|
||||
|
||||
#ifdef HAVE_FANOTIFY_INIT
|
||||
#include <sys/fanotify.h>
|
||||
#endif
|
||||
|
||||
#include <systemd/sd-daemon.h>
|
||||
|
||||
#include "missing.h"
|
||||
|
@ -83,9 +83,11 @@
|
||||
#define IP_TRANSPARENT 19
|
||||
#endif
|
||||
|
||||
#if !HAVE_DECL_PIVOT_ROOT
|
||||
static inline int pivot_root(const char *new_root, const char *put_old) {
|
||||
return syscall(SYS_pivot_root, new_root, put_old);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __x86_64__
|
||||
# ifndef __NR_fanotify_init
|
||||
@ -126,10 +128,13 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FANOTIFY_INIT
|
||||
static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) {
|
||||
return syscall(__NR_fanotify_init, flags, event_f_flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FANOTIFY_MARK
|
||||
static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
|
||||
int dfd, const char *pathname) {
|
||||
#if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__
|
||||
@ -145,6 +150,7 @@ static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t ma
|
||||
return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef BTRFS_IOCTL_MAGIC
|
||||
#define BTRFS_IOCTL_MAGIC 0x94
|
||||
@ -175,9 +181,11 @@ struct btrfs_ioctl_vol_args {
|
||||
#define MS_PRIVATE (1 << 18)
|
||||
#endif
|
||||
|
||||
#if !HAVE_DECL_GETTID
|
||||
static inline pid_t gettid(void) {
|
||||
return (pid_t) syscall(SYS_gettid);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef SCM_SECURITY
|
||||
#define SCM_SECURITY 0x03
|
||||
@ -194,3 +202,30 @@ static inline pid_t gettid(void) {
|
||||
#ifndef PR_SET_CHILD_SUBREAPER
|
||||
#define PR_SET_CHILD_SUBREAPER 36
|
||||
#endif
|
||||
|
||||
#ifndef MAX_HANDLE_SZ
|
||||
#define MAX_HANDLE_SZ 128
|
||||
#endif
|
||||
|
||||
#ifdef __x86_64__
|
||||
# ifndef __NR_name_to_handle
|
||||
# define __NR_name_to_handle 303
|
||||
# endif
|
||||
#else
|
||||
# ifndef __NR_name_to_handle
|
||||
# define __NR_name_to_handle 341
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_NAME_TO_HANDLE_AT
|
||||
|
||||
struct file_handle {
|
||||
unsigned int handle_bytes;
|
||||
int handle_type;
|
||||
unsigned char f_handle[0];
|
||||
};
|
||||
|
||||
static inline int name_to_handle_at(int fd, const char *name, struct file_handle *handle, int *mnt_id, int flags) {
|
||||
return syscall(__NR_name_to_handle_at, fd, name, handle, mnt_id, flags);
|
||||
}
|
||||
#endif
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "log.h"
|
||||
#include "strv.h"
|
||||
#include "path-util.h"
|
||||
#include "missing.h"
|
||||
|
||||
bool path_is_absolute(const char *p) {
|
||||
return p[0] == '/';
|
||||
|
Loading…
Reference in New Issue
Block a user