Full usernames and groupnames should be used instead  of numeric ids in
meta/files/device_table-minimal.txt.

[YOCTO #1159]

Signed-off-by: Mihai Prica <mihai.pr...@intel.com>
---
 meta/files/device_table-minimal.txt                |   47 ++++++++++----------
 .../makedevs/makedevs-1.0.0/makedevs.c             |   23 ++++++++--
 2 files changed, 43 insertions(+), 27 deletions(-)

diff --git a/meta/files/device_table-minimal.txt 
b/meta/files/device_table-minimal.txt
index 02ed534..41c6e0b 100644
--- a/meta/files/device_table-minimal.txt
+++ b/meta/files/device_table-minimal.txt
@@ -1,5 +1,5 @@
-#<path>        <type> <mode>   <uid>   <gid>   <major> <minor> <start> <inc>   
<count>
-#/dev/mem    c      640      0       0       1       1       0        0        
-
+#<path>        <type> <mode>   <username>      <groupname>     <major> <minor> 
<start> <inc>   <count>
+#/dev/mem    c      640      root       root       1       1       0        0  
      -
 #
 #type can be one of: 
 #    f A regular file
@@ -8,24 +8,25 @@
 #    b Block special device file
 #    p Fifo (named pipe)
 
-/dev           d       755     0       0       -       -       -       -       
-
-/dev/initctl   p       600     0       0       -       -       -       -       
-
-/dev/apm_bios  c       660     0       46      10      134     -       -       
-
-/dev/fb0       c       600     0       0       29      0       -       -       
-
-/dev/hda       b       660     0       6       3       0       -       -       
-
-/dev/hda       b       660     0       6       3       1       1       1       
19
-/dev/kmem      c       640     0       15      1       2       -       -       
-
-/dev/kmsg      c       600     0       0       1       11      -       -       
-
-/dev/mem       c       640     0       15      1       1       -       -       
-
-/dev/null      c       666     0       0       1       3       -       -       
-
-/dev/ram       b       640     0       0       1       0       0       1       
4
-/dev/tty       c       662     0       5       5       0       -       -       
-
-/dev/tty       c       666     0       5       4       0       0       1       
9
-/dev/ttyS      c       640     0       5       4       64      0       1       
1
-/dev/ttySA     c       640     0       5       204     5       0       1       
1
-/dev/zero      c       644     0       0       1       5       -       -       
-
-/dev/mtd       c       660     0       6       90      0       0       2       
8
-/dev/mtdblock  b       640     0       0       31      0       0       1       
8
-/dev/console   c       662     0       5       5       1       -       -       
-
-/dev/random    c       644     0       0       1       8       -       -       
-
-/dev/urandom   c       644     0       0       1       9       -       -       
-
+/dev           d       755     root    root    -       -       -       -       
-
+/dev/initctl   p       600     root    root    -       -       -       -       
-
+/dev/apm_bios  c       660     root    plugdev 10      134     -       -       
-
+/dev/fb0       c       600     root    root    29      0       -       -       
-
+/dev/hda       b       660     root    disk    3       0       -       -       
-
+/dev/hda       b       660     root    disk    3       1       1       1       
20
+/dev/kmem      c       640     root    kmem    1       2       -       -       
-
+/dev/kmsg      c       600     root    root    1       11      -       -       
-
+/dev/mem       c       640     root    kmem    1       1       -       -       
-
+/dev/null      c       666     root    root    1       3       -       -       
-
+/dev/ram       b       640     root    root    1       0       0       1       
4
+/dev/tty       c       662     root    tty     5       0       -       -       
-
+/dev/tty       c       666     root    tty     4       0       0       1       
9
+/dev/ttyS      c       640     root    tty     4       64      0       1       
1
+/dev/ttySA     c       640     root    tty     204     5       0       1       
1
+/dev/zero      c       644     root    root    1       5       -       -       
-
+/dev/mtd       c       660     root    disk    90      0       0       2       
8
+/dev/mtdblock  b       640     root    root    0       31      0       0       
1       8
+/dev/console   c       662     root    root    5       1       -       -       
-
+/dev/random    c       644     root    root    1       8       -       -       
-
+/dev/urandom   c       644     root    root    1       9       -       -       
-
+
diff --git a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c 
b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
index 6c1f2fb..26bbe33 100644
--- a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
+++ b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
@@ -13,6 +13,8 @@
 #include <libgen.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <pwd.h>
+#include <grp.h>
 
 #define MINORBITS      8
 #define MKDEV(ma,mi)   (((ma) << MINORBITS) | (mi))
@@ -180,13 +182,15 @@ static void add_new_fifo(char *name, char *path, unsigned 
long uid,
 */
 static int interpret_table_entry(char *line)
 {
-       char *name;
-       char path[4096], type;
+       char *name;     
+       char path[4096], username[32], groupname[32], type;
        unsigned long mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;
        unsigned long start = 0, increment = 1, count = 0;
+       struct passwd *pw;
+       struct group *gr;
 
-       if (0 > sscanf(line, "%40s %c %lo %lu %lu %lu %lu %lu %lu %lu", path,
-                   &type, &mode, &uid, &gid, &major, &minor, &start,
+       if (0 > sscanf(line, "%40s %c %lo %s %s %lu %lu %lu %lu %lu", path,
+                   &type, &mode, &username, &groupname, &major, &minor, 
&start,        
                    &increment, &count)) 
        {
                return 1;
@@ -198,6 +202,17 @@ static int interpret_table_entry(char *line)
        name = xstrdup(path + 1);
        sprintf(path, "%s/%s", rootdir, name);
 
+       pw = getpwnam(username);
+       if (pw == NULL) {
+               error_msg_and_die("Username does not exist in the user 
database");
+       }
+       uid = pw->pw_uid;
+       gr = getgrnam(groupname);
+       if (gr == NULL) {
+               error_msg_and_die("Groupname does not exist in the group 
database ");
+       }
+       gid = gr->gr_gid;
+       
        switch (type) {
        case 'd':
                mode |= S_IFDIR;
-- 
1.7.9.5

_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to