From 40ba2786d24f8196991e77980726d5eecae7eb40 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Thu, 7 Mar 2019 10:21:20 +0100 Subject: [PATCH 1/3] build: provide replacement for error(3) if not present Signed-off-by: Giuseppe Scrivano --- configure.ac | 2 +- main.c | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 6b64488..749a445 100644 --- a/configure.ac +++ b/configure.ac @@ -32,7 +32,7 @@ PKG_CHECK_MODULES([FUSE], [fuse3 >= 3.2.1], [AC_DEFINE([HAVE_FUSE], 1, [Define i AC_FUNC_ERROR_AT_LINE AC_FUNC_MALLOC -AC_CHECK_FUNCS([memset strdup]) +AC_CHECK_FUNCS([error memset strdup]) AC_CONFIG_FILES([Makefile lib/Makefile]) AC_OUTPUT diff --git a/main.c b/main.c index 713cf4d..dd92cbe 100644 --- a/main.c +++ b/main.c @@ -36,7 +36,23 @@ #include #include #include -#include + +#ifdef HAVE_ERROR_H +# include +#else +# define error(status, errno, fmt, ...) do { \ + if (errno == 0) \ + fprintf (stderr, "crun: " fmt "\n", ##__VA_ARGS__); \ + else \ + { \ + fprintf (stderr, "crun: " fmt, ##__VA_ARGS__); \ + fprintf (stderr, ": %s\n", strerror (errno)); \ + } \ + if (status) \ + exit (status); \ + } while(0) +#endif + #include #include #include From 57b1e98d691bff6676f3970e782e80505a52c3d5 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Thu, 7 Mar 2019 10:22:12 +0100 Subject: [PATCH 2/3] build: provide replacement for open_by_handle_at(2) if not present Signed-off-by: Giuseppe Scrivano --- configure.ac | 2 +- main.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 749a445..81fab2f 100644 --- a/configure.ac +++ b/configure.ac @@ -32,7 +32,7 @@ PKG_CHECK_MODULES([FUSE], [fuse3 >= 3.2.1], [AC_DEFINE([HAVE_FUSE], 1, [Define i AC_FUNC_ERROR_AT_LINE AC_FUNC_MALLOC -AC_CHECK_FUNCS([error memset strdup]) +AC_CHECK_FUNCS([open_by_handle_at error memset strdup]) AC_CONFIG_FILES([Makefile lib/Makefile]) AC_OUTPUT diff --git a/main.c b/main.c index dd92cbe..da857c4 100644 --- a/main.c +++ b/main.c @@ -73,6 +73,22 @@ #include +#ifndef HAVE_OPEN_BY_HANDLE_AT +struct file_handle +{ + unsigned int handle_bytes; /* Size of f_handle [in, out] */ + int handle_type; /* Handle type [out] */ + unsigned char f_handle[0]; /* File identifier (sized by + caller) [out] */ +}; + +int +open_by_handle_at (int mount_fd, struct file_handle *handle, int flags) +{ + return syscall (SYS_open_by_handle_at, mount_fd, handle, flags); +} +#endif + #ifndef RENAME_EXCHANGE # define RENAME_EXCHANGE (1 << 1) # define RENAME_NOREPLACE (1 << 2) From f17f15a48bebdc07f565def795562ddc57c7166c Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Thu, 7 Mar 2019 10:22:26 +0100 Subject: [PATCH 3/3] build: provide replacement for TEMP_FAILURE_RETRY if not present Signed-off-by: Giuseppe Scrivano --- main.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main.c b/main.c index da857c4..2fab283 100644 --- a/main.c +++ b/main.c @@ -73,6 +73,16 @@ #include +#ifndef TEMP_FAILURE_RETRY +#define TEMP_FAILURE_RETRY(expression) \ + (__extension__ \ + ({ long int __result; \ + do __result = (long int) (expression); \ + while (__result == -1L && errno == EINTR); \ + __result; })) +#endif + + #ifndef HAVE_OPEN_BY_HANDLE_AT struct file_handle {