diff options
| author | Saul Wold <sgw@linux.intel.com> | 2013-10-01 16:57:52 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-10-01 22:56:03 +0100 |
| commit | b618f74d6e87ac36ca7dad25c830fa8526614320 (patch) | |
| tree | 69c5b40296b63abb9465ae3f4db4e8a6f0f0f83d | |
| parent | d80472c4e3c8110bdc441a8d6f5b27d9c25c6432 (diff) | |
| download | poky-b618f74d6e87ac36ca7dad25c830fa8526614320.tar.gz | |
makedevs: Do not return error if the fifo exisits
This ensures that makedevs will not cause image creation failures
when it encounters a pipe (fifo) that exists from a previous image.
This handles mode changes and it will correctly fail for dangling
symlinks.
[YOCTO #5288]
(From OE-Core rev: 3a4b0e7973bef43f16058137e64600e2f890b117)
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c | 16 |
1 files changed, 14 insertions, 2 deletions
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 5d2c45b310..53700c687f 100644 --- a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c +++ b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c | |||
| @@ -274,8 +274,20 @@ static void add_new_file(char *name, char *path, unsigned long uid, | |||
| 274 | static void add_new_fifo(char *name, char *path, unsigned long uid, | 274 | static void add_new_fifo(char *name, char *path, unsigned long uid, |
| 275 | unsigned long gid, unsigned long mode) | 275 | unsigned long gid, unsigned long mode) |
| 276 | { | 276 | { |
| 277 | if (mknod(path, mode, 0)) | 277 | int status; |
| 278 | error_msg_and_die("%s: file can not be created with mknod!", path); | 278 | struct stat sb; |
| 279 | |||
| 280 | memset(&sb, 0, sizeof(struct stat)); | ||
| 281 | status = stat(path, &sb); | ||
| 282 | |||
| 283 | |||
| 284 | /* Update the mode if we exist and are a fifo already */ | ||
| 285 | if (status >= 0 && S_ISFIFO(sb.st_mode)) { | ||
| 286 | chmod(path, mode); | ||
| 287 | } else { | ||
| 288 | if (mknod(path, mode, 0)) | ||
| 289 | error_msg_and_die("%s: file can not be created with mknod!", path); | ||
| 290 | } | ||
| 279 | chown(path, uid, gid); | 291 | chown(path, uid, gid); |
| 280 | // printf("File: %s %s UID: %ld GID: %ld MODE: %04lo\n", | 292 | // printf("File: %s %s UID: %ld GID: %ld MODE: %04lo\n", |
| 281 | // path, name, gid, uid, mode); | 293 | // path, name, gid, uid, mode); |
