[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH] libxenlight: correct broken osdeps.[ch]
I wrote: > libxenlight: Clean up logging arrangements Here is a follow-on patch, which may not apply cleanly without the logging arrangements patch applied first. libxenlight: correct broken osdeps.[ch] and make #includes consistent osdep.[hc] previously mistakenly declared and defined [v]asprintf. These functions are available in the libc on most platforms. So now, instead: * _GNU_SOURCE is #defined in osdep.h so that we get the system [v]asprintf (and various other functions) * osdep.h is included first in every libxl*.c file (it needs to be before any system headers so that _GNU_SOURCE) takes effect. * osdep.[hc] only provide their own reimplementation of [v]asprintf if NEED_OWN_ASPRINTF is defined. Currently it is not ever defined but this is provided for any platform which needs it. * While I was editing the #includes in each .c file, I put them all into the same order: "osdep.h", then system headers, then local headers. Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile index 492d6d9..0358cea 100644 --- a/tools/libxl/Makefile +++ b/tools/libxl/Makefile @@ -23,8 +23,7 @@ LIBCONFIG_URL ?= http://www.hyperrealm.com/libconfig LIBCONFIG_SOURCE = libconfig-1.3.2 LIBCONFIG_OUTPUT = $(LIBCONFIG_SOURCE)/.libs -LIBXL_OBJS-y = -LIBXL_OBJS-$(CONFIG_Linux) += osdeps.o +LIBXL_OBJS-y = osdeps.o LIBXL_OBJS = flexarray.o libxl.o libxl_dom.o libxl_exec.o libxl_xshelp.o libxl_device.o libxl_internal.o xenguest.o libxl_utils.o $(LIBXL_OBJS-y) CLIENTS = xl diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 5e2f23b..6009dc1 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -14,6 +14,8 @@ * GNU Lesser General Public License for more details. */ +#include "osdep.h" + #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -25,6 +27,7 @@ #include <unistd.h> /* for write, unlink and close */ #include <stdint.h> #include <inttypes.h> + #include "libxl.h" #include "libxl_utils.h" #include "libxl_internal.h" diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index 82a2a30..585e676 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -14,15 +14,18 @@ * GNU Lesser General Public License for more details. */ +#include "osdep.h" + #include <string.h> #include <stdio.h> -#include "libxl.h" -#include "libxl_internal.h" #include <sys/time.h> /* for struct timeval */ #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> +#include "libxl.h" +#include "libxl_internal.h" + char *string_of_kinds[] = { [DEVICE_VIF] = "vif", [DEVICE_VBD] = "vbd", diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index eaea6f3..2437a51 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -13,8 +13,8 @@ * GNU Lesser General Public License for more details. */ -#include "libxl.h" -#include "libxl_internal.h" +#include "osdep.h" + #include <stdio.h> #include <inttypes.h> #include <xenguest.h> @@ -24,6 +24,9 @@ #include <sys/time.h> /* for struct timeval */ #include <unistd.h> /* for sleep(2) */ +#include "libxl.h" +#include "libxl_internal.h" + int is_hvm(struct libxl_ctx *ctx, uint32_t domid) { xc_domaininfo_t info; diff --git a/tools/libxl/libxl_exec.c b/tools/libxl/libxl_exec.c index 8a589b6..7061a1b 100644 --- a/tools/libxl/libxl_exec.c +++ b/tools/libxl/libxl_exec.c @@ -15,9 +15,12 @@ * GNU Lesser General Public License for more details. */ +#include "osdep.h" + #include <stdio.h> #include <unistd.h> #include <stdlib.h> + #include "libxl.h" #include "libxl_internal.h" diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c index 7ba0c97..966ac3b 100644 --- a/tools/libxl/libxl_internal.c +++ b/tools/libxl/libxl_internal.c @@ -12,13 +12,17 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. */ -#include "libxl.h" -#include "libxl_internal.h" -#include "libxl_utils.h" + +#include "osdep.h" + #include <stdio.h> #include <stdarg.h> #include <string.h> +#include "libxl.h" +#include "libxl_internal.h" +#include "libxl_utils.h" + int libxl_error_set(struct libxl_ctx *ctx, int code) { return 0; diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index 5048fd0..50e1b18 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -13,8 +13,8 @@ * GNU Lesser General Public License for more details. */ -#include "libxl_utils.h" -#include "libxl_internal.h" +#include "osdep.h" + #include <stdio.h> #include <stdlib.h> #include <stdint.h> @@ -24,6 +24,8 @@ #include <ctype.h> #include <errno.h> +#include "libxl_utils.h" +#include "libxl_internal.h" unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned int smp_cpus) diff --git a/tools/libxl/libxl_xshelp.c b/tools/libxl/libxl_xshelp.c index f59eee7..b280d69 100644 --- a/tools/libxl/libxl_xshelp.c +++ b/tools/libxl/libxl_xshelp.c @@ -13,13 +13,16 @@ * GNU Lesser General Public License for more details. */ +#include "osdep.h" + #include <string.h> #include <stddef.h> -#include "libxl.h" -#include "libxl_internal.h" #include <stdio.h> #include <stdarg.h> +#include "libxl.h" +#include "libxl_internal.h" + char **libxl_xs_kvs_of_flexarray(struct libxl_ctx *ctx, flexarray_t *array, int length) { char **kvs; diff --git a/tools/libxl/osdeps.c b/tools/libxl/osdeps.c index 81175aa..ad96480 100644 --- a/tools/libxl/osdeps.c +++ b/tools/libxl/osdeps.c @@ -19,6 +19,8 @@ #include <sys/time.h> #include <stdlib.h> +#ifdef NEED_OWN_ASPRINTF + int vasprintf(char **buffer, const char *fmt, va_list ap) { int size = 0; @@ -60,3 +62,5 @@ int asprintf(char **buffer, char *fmt, ...) va_end (ap); return status; } + +#endif diff --git a/tools/libxl/osdeps.h b/tools/libxl/osdeps.h index 5391727..984b6f1 100644 --- a/tools/libxl/osdeps.h +++ b/tools/libxl/osdeps.h @@ -13,12 +13,19 @@ * GNU Lesser General Public License for more details. */ +/* + * This header must be included first, before any system headers, + * so that _GNU_SOURCE takes effect properly. + */ + #ifndef LIBXL_OSDEP #define LIBXL_OSDEP +#define _GNU_SOURCE + +#ifdef NEED_OWN_ASPRINTF #include <stdarg.h> -#if defined(__linux__) int asprintf(char **buffer, char *fmt, ...); int vasprintf(char **buffer, const char *fmt, va_list ap); #endif diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c index 3b735ec..444d9a1 100644 --- a/tools/libxl/xl.c +++ b/tools/libxl/xl.c @@ -14,8 +14,6 @@ * GNU Lesser General Public License for more details. */ -#include "libxl.h" -#include "libxl_utils.h" #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -29,6 +27,9 @@ #include <arpa/inet.h> #include <xenctrl.h> +#include "libxl.h" +#include "libxl_utils.h" + void log_callback(void *userdata, int loglevel, const char *file, int line, const char *func, char *s) { fprintf(stderr, "[%d] %s:%d:%s: %s\n", loglevel, file, line, func, s); _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |