From 3f698caea8b6e35f89963e8ad633a9f6ca8f4970 Mon Sep 17 00:00:00 2001 From: Ronan Le Martret Date: Tue, 08 Jul 2014 10:40:21 +0200 Subject: [PATCH] Add env value SYSROOT for root fs prefix Change-Id: I5c57494317473dcd74c85cbc2bce19a6d68c2739 Signed-off-by: Ronan Le Martret --- 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 @@ 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..6b1ea06 100644 --- a/src/foreign.h +++ b/src/foreign.h @@ -24,26 +24,28 @@ #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 #define _FOREIGNS_TO_USE_ ( _FOREIGN_MASK_HOME_ \ - | _FOREIGN_MASK_USER_ ) + | _FOREIGN_MASK_USER_ \ + | _FOREIGN_MASK_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,14 +54,17 @@ 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..9d16d86 100644 --- a/src/init.c +++ b/src/init.c @@ -63,7 +63,8 @@ #define _HAS_IDS_ ( _FOREIGN_HAS_(UID) \ || _FOREIGN_HAS_(EUID) \ - || _FOREIGN_HAS_(GID) ) + || _FOREIGN_HAS_(GID) \ + || _FOREIGN_HAS_(SYSROOT) ) #define _HAS_PWS_ ( _FOREIGN_HAS_(HOME) \ || _FOREIGN_HAS_(USER) \ @@ -275,7 +276,7 @@ } /* 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) { @@ -284,6 +285,15 @@ size_t offset; struct reading *reading = parsing->data; int id; + char *res_sysroot; + + if (strncmp( key, "SYSROOT", 7) == 0) { + res_sysroot = getenv("SYSROOT"); + if (res_sysroot == NULL) + return ""; + else + return res_sysroot; + } /* try to find a tzplatform variable */ id = hashid(key, length);