Add env value SYSROOT for root fs prefix sandbox/kthierry/dev
authorRonan Le Martret <ronan@fridu.net>
Tue, 8 Jul 2014 08:40:21 +0000 (10:40 +0200)
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Mon, 20 Oct 2014 09:21:36 +0000 (11:21 +0200)
[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 <ronan@fridu.net>
Signed-off-by: Kévin THIERRY <kevin.thierry@open.eurogiciel.org>
Signed-off-by: José Bollo <jose.bollo@open.eurogiciel.org>
configure.ac
src/foreign.c
src/foreign.h
src/init.c

index 3e4ad62332dd196662e4093e8f0b61c696608d88..e871792692ed124bcc9c9cbd11e559882f991ac6 100644 (file)
@@ -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
index a19f6ad865e70000062efa98e289f696e568a3fd..6b172b2295ee175c1c9f118ad41727a4226dec2a 100644 (file)
@@ -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_;
 }
 
index 646a41dff4bb7751024a63ae6b108edb9bb82c83..cdd3604ea33b663fba0e1fc54cbb0be5d0471087 100644 (file)
 #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_
 };
index 76868cc11da1d31565cb76a9a43068738b51f0e0..c1f648c591d59458eeb8b68053b44663cbb730cc 100644 (file)
@@ -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)
 {