Whamcloud - gitweb
Land b_release_1_4_3 onto HEAD (20050619_0305)
[fs/lustre-release.git] / libsysio / src / mknod.c
index 288dcce..35ca0f9 100644 (file)
@@ -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)