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>
This commit is contained in:
parent
d80472c4e3
commit
b618f74d6e
|
@ -274,8 +274,20 @@ static void add_new_file(char *name, char *path, unsigned long uid,
|
||||||
static void add_new_fifo(char *name, char *path, unsigned long uid,
|
static void add_new_fifo(char *name, char *path, unsigned long uid,
|
||||||
unsigned long gid, unsigned long mode)
|
unsigned long gid, unsigned long mode)
|
||||||
{
|
{
|
||||||
if (mknod(path, mode, 0))
|
int status;
|
||||||
error_msg_and_die("%s: file can not be created with mknod!", path);
|
struct stat sb;
|
||||||
|
|
||||||
|
memset(&sb, 0, sizeof(struct stat));
|
||||||
|
status = stat(path, &sb);
|
||||||
|
|
||||||
|
|
||||||
|
/* Update the mode if we exist and are a fifo already */
|
||||||
|
if (status >= 0 && S_ISFIFO(sb.st_mode)) {
|
||||||
|
chmod(path, mode);
|
||||||
|
} else {
|
||||||
|
if (mknod(path, mode, 0))
|
||||||
|
error_msg_and_die("%s: file can not be created with mknod!", path);
|
||||||
|
}
|
||||||
chown(path, uid, gid);
|
chown(path, uid, gid);
|
||||||
// printf("File: %s %s UID: %ld GID: %ld MODE: %04lo\n",
|
// printf("File: %s %s UID: %ld GID: %ld MODE: %04lo\n",
|
||||||
// path, name, gid, uid, mode);
|
// path, name, gid, uid, mode);
|
||||||
|
|
Loading…
Reference in New Issue