From: Ronan Le Martret Date: Tue, 8 Jul 2014 08:40:21 +0000 (+0200) Subject: Add env value SYSROOT for root fs prefix X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fsandbox%2Fkthierry%2Fdev;p=platform%2Fcore%2Fsystem%2Ftizen-platform-wrapper.git Add env value SYSROOT for root fs prefix [kevin.thierry: Make supprot for "SYSROOT" variable conditionnal. Use "--with-sysroot" configure option to enable it.] Change-Id: I5c57494317473dcd74c85cbc2bce19a6d68c2739 Signed-off-by: Ronan Le Martret Signed-off-by: Kévin THIERRY Signed-off-by: José Bollo --- diff --git a/configure.ac b/configure.ac index 3e4ad62..e871792 100644 --- a/configure.ac +++ b/configure.ac @@ -30,6 +30,16 @@ AC_FUNC_MALLOC AC_FUNC_MMAP AC_CHECK_FUNCS([dup2 endpwent munmap strndup]) +# Add option to build support for the "SYSROOT" variable +AC_ARG_WITH(SYSROOT, [--with-sysroot enable SYSROOT]) +if test "$with_sysroot" == "yes" +then + AC_DEFINE([HAVE_SYSROOT], [1], [Add SYSROOT to Tizen variables.]) + AC_MSG_NOTICE([with-sysroot=yes]) +else + AC_MSG_NOTICE([with-sysroot=no]) +fi + AC_CONFIG_FILES([ Makefile src/Makefile diff --git a/src/foreign.c b/src/foreign.c index a19f6ad..6b172b2 100644 --- a/src/foreign.c +++ b/src/foreign.c @@ -85,6 +85,11 @@ enum fkey foreign( const char *name, size_t length) default: break; } } +#if _FOREIGN_HAS_(SYSROOT) + else if (length == 7) + if (name[0]=='S' && name[1]=='Y' && name[2]=='S' && name[3]=='R' && name[4]=='O' && name[5]=='O' && name[6]=='T') + return SYSROOT; +#endif return _FOREIGN_INVALID_; } diff --git a/src/foreign.h b/src/foreign.h index 646a41d..cdd3604 100644 --- a/src/foreign.h +++ b/src/foreign.h @@ -24,26 +24,33 @@ #ifndef FOREIGN_H #define FOREIGN_H -#define _FOREIGN_MASK_HOME_ 1 -#define _FOREIGN_MASK_UID_ 2 -#define _FOREIGN_MASK_USER_ 4 -#define _FOREIGN_MASK_GID_ 8 -#define _FOREIGN_MASK_EHOME_ 16 -#define _FOREIGN_MASK_EUID_ 32 -#define _FOREIGN_MASK_EUSER_ 64 +#define _FOREIGN_MASK_HOME_ 1 +#define _FOREIGN_MASK_UID_ 2 +#define _FOREIGN_MASK_USER_ 4 +#define _FOREIGN_MASK_GID_ 8 +#define _FOREIGN_MASK_EHOME_ 16 +#define _FOREIGN_MASK_EUID_ 32 +#define _FOREIGN_MASK_EUSER_ 64 +#define _FOREIGN_MASK_SYSROOT_ 128 +#ifdef HAVE_SYSROOT +#define _FOREIGNS_TO_USE_ ( _FOREIGN_MASK_HOME_ \ + | _FOREIGN_MASK_USER_ \ + | _FOREIGN_MASK_SYSROOT_ ) +#else /* HAVE_SYSROOT */ #define _FOREIGNS_TO_USE_ ( _FOREIGN_MASK_HOME_ \ | _FOREIGN_MASK_USER_ ) +#endif /* HAVE_SYSROOT */ #define _FOREIGN_HAS_(x) (0 != ((_FOREIGNS_TO_USE_) & (_FOREIGN_MASK_##x##_))) enum fkey { - _FOREIGN_INVALID_ = -1, + _FOREIGN_INVALID_ = -1, #if _FOREIGN_HAS_(HOME) HOME, #endif #if _FOREIGN_HAS_(UID) - UID, + UID, #endif #if _FOREIGN_HAS_(USER) USER, @@ -52,13 +59,16 @@ enum fkey { GID, #endif #if _FOREIGN_HAS_(EHOME) - EHOME, + EHOME, #endif #if _FOREIGN_HAS_(EUID) - EUID, + EUID, #endif #if _FOREIGN_HAS_(EUSER) EUSER, +#endif +#if _FOREIGN_HAS_(SYSROOT) + SYSROOT, #endif _FOREIGN_COUNT_ }; diff --git a/src/init.c b/src/init.c index 76868cc..c1f648c 100644 --- a/src/init.c +++ b/src/init.c @@ -211,7 +211,7 @@ static void foreignpw( struct reading *reading) #endif /* get the foreign variable */ -static const char *foreignvar( struct reading *reading, +static const char *foreignvar( struct reading *reading, const char *name, size_t length) { enum fkey key = foreign( name, length); @@ -248,6 +248,15 @@ static const char *foreignvar( struct reading *reading, foreignid( reading); break; #endif +#if _FOREIGN_HAS_(SYSROOT) + case SYSROOT: + if (reading->dynvars[SYSROOT] == HNULL) { + const char *value; + value = getenv("SYSROOT"); + reading->dynvars[SYSROOT] = heap_strdup( &reading->context->heap, value != NULL ? value : ""); + } + break; +#endif default: return NULL; @@ -257,7 +266,7 @@ static const char *foreignvar( struct reading *reading, } /* callback for parsing errors */ -static int errcb( struct parsing *parsing, +static int errcb( struct parsing *parsing, size_t position, const char *message) { struct parsinfo info; @@ -275,7 +284,7 @@ static int errcb( struct parsing *parsing, } /* callback for solving variables */ -static const char *getcb( struct parsing *parsing, +static const char *getcb( struct parsing *parsing, const char *key, size_t length, size_t begin_pos, size_t end_pos) { @@ -312,8 +321,8 @@ static const char *getcb( struct parsing *parsing, } /* callback to define variables */ -static int putcb( struct parsing *parsing, - const char *key, size_t key_length, +static int putcb( struct parsing *parsing, + const char *key, size_t key_length, const char *value, size_t value_length, size_t begin_pos, size_t end_pos) {