From: Jaeyoon Jung <jaeyoon.j...@lge.com>

Treating rootdir "/" as "" leads an error in parse_devtable(). Preserve
it as it is given and use a separate variable for path name prepending.
Another minor fix is to add a return statement at the end of
convert2guid() to avoid an error with -Werror=return-type.

Signed-off-by: Jaeyoon Jung <jaeyoon.j...@lge.com>
Signed-off-by: Alexandre Belloni <alexandre.bell...@bootlin.com>
Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org>
(cherry picked from commit 4d52e6276c687a8950bde21850072ddf14893fb2)
Signed-off-by: Steve Sakoman <st...@sakoman.com>
---
 .../makedevs/makedevs/makedevs.c              | 21 +++++++++++--------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/meta/recipes-devtools/makedevs/makedevs/makedevs.c 
b/meta/recipes-devtools/makedevs/makedevs/makedevs.c
index df2e3cfad5..2254b54891 100644
--- a/meta/recipes-devtools/makedevs/makedevs/makedevs.c
+++ b/meta/recipes-devtools/makedevs/makedevs/makedevs.c
@@ -36,6 +36,7 @@ static const char *const app_name = "makedevs";
 static const char *const memory_exhausted = "memory exhausted";
 static char default_rootdir[]=".";
 static char *rootdir = default_rootdir;
+static char *rootdir_prepend = default_rootdir;
 static int trace = 0;
 
 struct name_id {
@@ -217,6 +218,9 @@ static unsigned long convert2guid(char *id_buf, struct 
name_id *search_list)
                }
                error_msg_and_die("No entry for %s in search list", id_buf);
        }
+
+       // Unreachable, but avoid an error with -Werror=return-type
+       return 0;
 }
 
 static void free_list(struct name_id *list)
@@ -379,8 +383,8 @@ static int interpret_table_entry(char *line)
                error_msg_and_die("Device table entries require absolute 
paths");
        }
        name = xstrdup(path + 1);
-       /* prefix path with rootdir */
-       sprintf(path, "%s/%s", rootdir, name);
+       /* prefix path with rootdir_prepend */
+       sprintf(path, "%s/%s", rootdir_prepend, name);
 
        /* XXX Why is name passed into all of the add_new_*() routines? */
        switch (type) {
@@ -406,11 +410,11 @@ static int interpret_table_entry(char *line)
 
                        for (i = start; i < start + count; i++) {
                                sprintf(buf, "%s%d", name, i);
-                               sprintf(path, "%s/%s%d", rootdir, name, i);
+                               sprintf(path, "%s/%s%d", rootdir_prepend, name, 
i);
                                /* FIXME:  MKDEV uses illicit insider knowledge 
of kernel
                                 * major/minor representation...  */
                                rdev = MKDEV(major, minor + (i - start) * 
increment);
-                               sprintf(path, "%s/%s\0", rootdir, buf);
+                               sprintf(path, "%s/%s\0", rootdir_prepend, buf);
                                add_new_device(buf, path, uid, gid, mode, rdev);
                        }
                } else {
@@ -541,12 +545,11 @@ int main(int argc, char **argv)
                        } else {
                                closedir(dir);
                        }
-                       /* If "/" is specified, use "" because rootdir is 
always prepended to a
-                        * string that starts with "/" */
-                       if (0 == strcmp(optarg, "/"))
-                               rootdir = xstrdup("");
+                       rootdir = xstrdup(optarg);
+                       if (0 == strcmp(rootdir, "/"))
+                               rootdir_prepend = xstrdup("");
                        else
-                               rootdir = xstrdup(optarg);
+                               rootdir_prepend = xstrdup(rootdir);
                        break;
 
                case 't':
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#205089): 
https://lists.openembedded.org/g/openembedded-core/message/205089
Mute This Topic: https://lists.openembedded.org/mt/108728943/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to