From b710e280336f942f2298d475255b2ff21ffa16c6 Mon Sep 17 00:00:00 2001 From: kueller Date: Wed, 2 Mar 2011 15:21:21 +0000 Subject: [PATCH] Anpassung an neueste CLFS Version git-svn-id: svn://svn.compuextreme.de/Viitor/V963/ViitorMake@6011 504e572c-2e33-0410-9681-be2bf7408885 --- BaseBuild/Basesys/multiarch_wrapper | 52 ++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/BaseBuild/Basesys/multiarch_wrapper b/BaseBuild/Basesys/multiarch_wrapper index 06777e1..cbdb6ad 100644 --- a/BaseBuild/Basesys/multiarch_wrapper +++ b/BaseBuild/Basesys/multiarch_wrapper @@ -81,31 +81,53 @@ touch $LFSSOURCE/$SRCPATH/multiarch_wrapper-$VERSION.tar.bz2 premk() { mkdir -p $TMPROOT/usr/bin cat > /tmp/multiarch_wrapper.c << "EOF" -#include -#include -#include -#include +#define _GNU_SOURCE -#ifndef USE_ARCH -#define USE_ARCH "64" +#include +#include +#include +#include +#include +#include + +#ifndef DEF_SUFFIX +# define DEF_SUFFIX "64" #endif int main(int argc, char **argv) { char *filename; - char *use_arch; + char *suffix; - if(!(use_arch = getenv("USE_ARCH"))) - use_arch = USE_ARCH; + if(!(suffix = getenv("USE_ARCH"))) + if(!(suffix = getenv("BUILDENV"))) + suffix = DEF_SUFFIX; - filename = (char *) malloc(strlen(argv[0]) + strlen(use_arch) + 2); - strcpy(filename, argv[0]); - strcat(filename, "-"); - strcat(filename, use_arch); + if (asprintf(&filename, "%s-%s", argv[0], suffix) < 0) { + perror(argv[0]); + return -1; + } + + int status = EXIT_FAILURE; + pid_t pid = fork(); + + if (pid == 0) { + execvp(filename, argv); + perror(filename); + } else if (pid < 0) { + perror(argv[0]); + } else { + if (waitpid(pid, &status, 0) != pid) { + status = EXIT_FAILURE; + perror(argv[0]); + } else { + status = WEXITSTATUS(status); + } + } - execvp(filename, argv); - perror(argv[0]); free(filename); + + return status; } EOF }