  
  #define _FOREIGN_HAS_(x)  (0 != ((_FOREIGNS_TO_USE_) & (_FOREIGN_MASK_##x##_)))
  
-@@ -60,6 +62,9 @@ enum fkey {
+ 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

From e2f6f775f696bebf5acad2c424bc1fde5ce7e0c0 Mon Sep 17 00:00:00 2001
From: Ronan Le Martret <ronan@fridu.net>
Date: Tue, 8 Jul 2014 10:40:21 +0200
Subject: [PATCH 1/1] Add env value SYSROOT for root fs prefix.

Change-Id: I5c57494317473dcd74c85cbc2bce19a6d68c2739
Signed-off-by: Ronan Le Martret <ronan@fridu.net>
---
 src/foreign.c           |  5 +++++
 src/foreign.h           |  7 ++++++-
 src/tzplatform_config.c | 14 +++++++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/foreign.c b/src/foreign.c
index dab1c21..b700274 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 && 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/

index 3c9066f..a918bd8 100644
--- a/src/foreign.h
+++ b/src/foreign.h
@@ -31,9 +31,11 @@
 #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_  \

 
 #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);
