[lxc-devel] [PATCH] consolidate missing C library functions into utils.h
Serge Hallyn
serge.hallyn at ubuntu.com
Fri May 24 23:18:33 UTC 2013
Quoting Dwight Engen (dwight.engen at oracle.com):
> This fixes the build of lxccontainer.c on systems that have __NR_setns
> but not HAVE_SETNS.
>
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/attach.c | 34 +---------------------------------
> src/lxc/bdev.c | 15 +--------------
> src/lxc/lxccontainer.c | 17 +----------------
> src/lxc/parse.c | 8 +-------
> src/lxc/utils.h | 37 +++++++++++++++++++++++++++++++++++++
> 5 files changed, 41 insertions(+), 70 deletions(-)
>
> diff --git a/src/lxc/attach.c b/src/lxc/attach.c
> index a33d24f..5061b93 100644
> --- a/src/lxc/attach.c
> +++ b/src/lxc/attach.c
> @@ -46,42 +46,10 @@
> #include "caps.h"
> #include "config.h"
> #include "apparmor.h"
> +#include "utils.h"
>
> lxc_log_define(lxc_attach, lxc);
>
> -/* Define setns() if missing from the C library */
> -#ifndef HAVE_SETNS
> -static int setns(int fd, int nstype)
> -{
> -#ifdef __NR_setns
> -return syscall(__NR_setns, fd, nstype);
> -#else
> -errno = ENOSYS;
> -return -1;
> -#endif
> -}
> -#endif
> -
> -/* Define unshare() if missing from the C library */
> -#ifndef HAVE_UNSHARE
> -static int unshare(int flags)
> -{
> -#ifdef __NR_unshare
> -return syscall(__NR_unshare, flags);
> -#else
> -errno = ENOSYS;
> -return -1;
> -#endif
> -}
> -#endif
> -
> -/* Define getline() if missing from the C library */
> -#ifndef HAVE_GETLINE
> -#ifdef HAVE_FGETLN
> -#include <../include/getline.h>
> -#endif
> -#endif
> -
> struct lxc_proc_context_info *lxc_proc_get_context_info(pid_t pid)
> {
> struct lxc_proc_context_info *info = calloc(1, sizeof(*info));
> diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c
> index fcde16b..a0ce5f5 100644
> --- a/src/lxc/bdev.c
> +++ b/src/lxc/bdev.c
> @@ -44,23 +44,10 @@
> #include "utils.h"
> #include "namespace.h"
> #include "parse.h"
> +#include "utils.h"
>
> lxc_log_define(bdev, lxc);
>
> -/* Define unshare() if missing from the C library */
> -/* this is also in attach.c and lxccontainer.c: commonize it in utils.c */
> -#ifndef HAVE_UNSHARE
> -static int unshare(int flags)
> -{
> -#ifdef __NR_unshare
> -return syscall(__NR_unshare, flags);
> -#else
> -errno = ENOSYS;
> -return -1;
> -#endif
> -}
> -#endif
> -
> static int do_rsync(const char *src, const char *dest)
> {
> // call out to rsync
> diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
> index b2e5e36..1c0b7b2 100644
> --- a/src/lxc/lxccontainer.c
> +++ b/src/lxc/lxccontainer.c
> @@ -35,6 +35,7 @@
> #include "version.h"
> #include "log.h"
> #include "bdev.h"
> +#include "utils.h"
> #include <lxc/utils.h>
> #include <lxc/monitor.h>
> #include <sched.h>
> @@ -44,22 +45,6 @@
>
> static pthread_mutex_t thread_mutex = PTHREAD_MUTEX_INITIALIZER;
>
> -/* Define unshare() if missing from the C library */
> -/* this is also in attach.c and lxccontainer.c: commonize it in utils.c */
> -#ifndef HAVE_UNSHARE
> -static int unshare(int flags)
> -{
> -#ifdef __NR_unshare
> - return syscall(__NR_unshare, flags);
> -#else
> - errno = ENOSYS;
> - return -1;
> -#endif
> -}
> -#else
> -int unshare(int);
> -#endif
> -
> lxc_log_define(lxc_container, lxc);
>
> /* LOCKING
> diff --git a/src/lxc/parse.c b/src/lxc/parse.c
> index 4504ec2..6c2ed5a 100644
> --- a/src/lxc/parse.c
> +++ b/src/lxc/parse.c
> @@ -30,15 +30,9 @@
>
> #include "parse.h"
> #include "config.h"
> +#include "utils.h"
> #include <lxc/log.h>
>
> -/* Define getline() if missing from the C library */
> -#ifndef HAVE_GETLINE
> -#ifdef HAVE_FGETLN
> -#include <../include/getline.h>
> -#endif
> -#endif
> -
> /* Workaround for the broken signature of alphasort() in bionic.
> This was fixed upstream in 40e467ec668b59be25491bd44bf348a884d6a68d so the
> workaround can probably be dropped with the next version of the Android NDK.
> diff --git a/src/lxc/utils.h b/src/lxc/utils.h
> index d1242b1..fbfe5d3 100644
> --- a/src/lxc/utils.h
> +++ b/src/lxc/utils.h
> @@ -23,7 +23,9 @@
> #ifndef _utils_h
> #define _utils_h
>
> +#include <errno.h>
> #include <sys/types.h>
> +#include "config.h"
>
> extern int lxc_setup_fs(void);
> extern int get_u16(unsigned short *val, const char *arg, int base);
> @@ -36,6 +38,41 @@ extern const char *default_lxc_path(void);
> extern const char *default_zfs_root(void);
> extern const char *default_lvm_vg(void);
>
> +/* Define getline() if missing from the C library */
> +#ifndef HAVE_GETLINE
> +#ifdef HAVE_FGETLN
> +#include <../include/getline.h>
> +#endif
> +#endif
> +
> +/* Define setns() if missing from the C library */
> +#ifndef HAVE_SETNS
> +static inline int setns(int fd, int nstype)
> +{
> +#ifdef __NR_setns
> + return syscall(__NR_setns, fd, nstype);
> +#else
> + errno = ENOSYS;
> + return -1;
> +#endif
> +}
> +#endif
> +
> +/* Define unshare() if missing from the C library */
> +#ifndef HAVE_UNSHARE
> +static inline int unshare(int flags)
> +{
> +#ifdef __NR_unshare
> + return syscall(__NR_unshare, flags);
> +#else
> + errno = ENOSYS;
> + return -1;
> +#endif
> +}
> +#else
> +int unshare(int);
> +#endif
> +
> /**
> * BUILD_BUG_ON - break compile if a condition is true.
> * @condition: the condition which the compiler should know is false.
> --
> 1.7.1
>
>
> ------------------------------------------------------------------------------
> Try New Relic Now & We'll Send You this Cool Shirt
> New Relic is the only SaaS-based application performance monitoring service
> that delivers powerful full stack analytics. Optimize and monitor your
> browser, app, & servers with just a few lines of code. Try New Relic
> and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list