1 From 3f698caea8b6e35f89963e8ad633a9f6ca8f4970 Mon Sep 17 00:00:00 2001
2 From: Ronan Le Martret <ronan@fridu.net>
3 Date: Tue, 08 Jul 2014 10:40:21 +0200
4 Subject: [PATCH] Add env value SYSROOT for root fs prefix
6 Change-Id: I5c57494317473dcd74c85cbc2bce19a6d68c2739
7 Signed-off-by: Ronan Le Martret <ronan@fridu.net>
10 diff --git a/src/foreign.c b/src/foreign.c
11 index a19f6ad..6b172b2 100644
18 +#if _FOREIGN_HAS_(SYSROOT)
19 + else if (length == 7)
20 + if (name[0]=='S' && name[1]=='Y' && name[2]=='S' && name[3]=='R' && name[4]=='O' && name[5]=='O' && name[6]=='T')
23 return _FOREIGN_INVALID_;
26 diff --git a/src/foreign.h b/src/foreign.h
27 index 646a41d..6b1ea06 100644
34 -#define _FOREIGN_MASK_HOME_ 1
35 -#define _FOREIGN_MASK_UID_ 2
36 -#define _FOREIGN_MASK_USER_ 4
37 -#define _FOREIGN_MASK_GID_ 8
38 -#define _FOREIGN_MASK_EHOME_ 16
39 -#define _FOREIGN_MASK_EUID_ 32
40 -#define _FOREIGN_MASK_EUSER_ 64
41 +#define _FOREIGN_MASK_HOME_ 1
42 +#define _FOREIGN_MASK_UID_ 2
43 +#define _FOREIGN_MASK_USER_ 4
44 +#define _FOREIGN_MASK_GID_ 8
45 +#define _FOREIGN_MASK_EHOME_ 16
46 +#define _FOREIGN_MASK_EUID_ 32
47 +#define _FOREIGN_MASK_EUSER_ 64
48 +#define _FOREIGN_MASK_SYSROOT_ 128
50 #define _FOREIGNS_TO_USE_ ( _FOREIGN_MASK_HOME_ \
51 - | _FOREIGN_MASK_USER_ )
52 + | _FOREIGN_MASK_USER_ \
53 + | _FOREIGN_MASK_SYSROOT_)
55 #define _FOREIGN_HAS_(x) (0 != ((_FOREIGNS_TO_USE_) & (_FOREIGN_MASK_##x##_)))
58 - _FOREIGN_INVALID_ = -1,
59 + _FOREIGN_INVALID_ = -1,
60 #if _FOREIGN_HAS_(HOME)
63 #if _FOREIGN_HAS_(UID)
67 #if _FOREIGN_HAS_(USER)
72 #if _FOREIGN_HAS_(EHOME)
76 #if _FOREIGN_HAS_(EUID)
80 #if _FOREIGN_HAS_(EUSER)
83 +#if _FOREIGN_HAS_(SYSROOT)
89 diff --git a/src/init.c b/src/init.c
90 index 76868cc..9d16d86 100644
95 #define _HAS_IDS_ ( _FOREIGN_HAS_(UID) \
96 || _FOREIGN_HAS_(EUID) \
97 - || _FOREIGN_HAS_(GID) )
98 + || _FOREIGN_HAS_(GID) \
99 + || _FOREIGN_HAS_(SYSROOT) )
101 #define _HAS_PWS_ ( _FOREIGN_HAS_(HOME) \
102 || _FOREIGN_HAS_(USER) \
106 /* callback for solving variables */
107 -static const char *getcb( struct parsing *parsing,
108 +static const char *getcb( struct parsing *parsing,
109 const char *key, size_t length,
110 size_t begin_pos, size_t end_pos)
114 struct reading *reading = parsing->data;
118 + if (strncmp( key, "SYSROOT", 7) == 0) {
119 + res_sysroot = getenv("SYSROOT");
120 + if (res_sysroot == NULL)
123 + return res_sysroot;
126 /* try to find a tzplatform variable */
127 id = hashid(key, length);