From faeac6115689ab87067e90058a3d5ad249898451 Mon Sep 17 00:00:00 2001 From: phil Date: Fri, 20 May 2005 22:55:11 +0000 Subject: [PATCH] b=3359 r=lee@sandia.gov libsysio fixes which always apply the umask before calling liblustre. With these changes, liblustre can stop worrying about the umask entirely. --- libsysio/src/mkdir.c | 2 ++ libsysio/src/mknod.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libsysio/src/mkdir.c b/libsysio/src/mkdir.c index 1d89acd..ee59348 100644 --- a/libsysio/src/mkdir.c +++ b/libsysio/src/mkdir.c @@ -76,6 +76,8 @@ SYSIO_INTERFACE_NAME(mkdir)(const char *path, mode_t mode) err = -EROFS; goto error; } + mode |= S_IFDIR; + mode &= ~(_sysio_umask & 0777); /* apply umask */ err = (*pno->p_parent->p_base->pb_ino->i_ops.inop_mkdir)(pno, mode); error: P_RELE(pno); diff --git a/libsysio/src/mknod.c b/libsysio/src/mknod.c index 288dcce..35ca0f9 100644 --- a/libsysio/src/mknod.c +++ b/libsysio/src/mknod.c @@ -80,13 +80,17 @@ PREPEND(__, SYSIO_INTERFACE_NAME(xmknod))(int __ver, } /* - * Support only character-special and fifos right now. + * Support only regular, character-special and fifos right now. + * (mode & S_IFMT) == 0 is the same as S_IFREG. */ - if (!(S_ISCHR(mode) || S_ISFIFO(mode))) { + if ((mode & S_IFMT) && + !(S_ISREG(mode) || S_ISCHR(mode) || S_ISFIFO(mode))) { err = -EINVAL; goto out; } + mode &= ~(_sysio_umask & 0777); /* apply umask */ + INTENT_INIT(&intent, INT_CREAT, &mode, NULL); err = _sysio_namei(_sysio_cwd, path, ND_NEGOK, &intent, &pno); if (err) -- 1.8.3.1