]> git.saurik.com Git - apple/system_cmds.git/blobdiff - mkfile.tproj/mkfile.c
system_cmds-431.tar.gz
[apple/system_cmds.git] / mkfile.tproj / mkfile.c
index 4aff54858204b864ec810dde4872d610b8484a6d..0965ef5bcfb4f58846a8304846461042edb47eb3 100644 (file)
@@ -41,6 +41,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <ctype.h>
+#include <err.h>
 
 #define BF_SZ  512     /* Size of write chunks */
 
@@ -142,9 +143,12 @@ create_file(file_name, size, empty, verbose)
        char buff[BF_SZ];
        int fd, bytes_written = BF_SZ;
        quad_t i;
-    mode_t     mode;
+       mode_t mode = S_IRUSR | S_IWUSR;
 
-       if ((fd = open(file_name, O_RDWR | O_CREAT | O_TRUNC )) == -1)
+       /* If superuser, then set sticky bit */
+       if (!geteuid()) mode |= S_ISVTX;
+
+       if ((fd = open(file_name, O_RDWR | O_CREAT | O_TRUNC, mode)) == -1)
                 err(1, NULL);
 
 
@@ -176,17 +180,11 @@ create_file(file_name, size, empty, verbose)
                }
        }
 
+       if (fchmod(fd, mode))   /* Change permissions */
+               err_rm(file_name, NULL);
 
-       mode = S_IRUSR | S_IWUSR;
-       /* If superuser, then set sticky bit */
-    if (! geteuid())
-               mode |= S_ISVTX;
-
-    if (fchmod(fd, mode))      /* Change permissions */
-        err_rm(file_name, NULL);
-
-    if ((close(fd)) == -1)
-            err_rm(file_name, NULL);
+       if ((close(fd)) == -1)
+               err_rm(file_name, NULL);
 
        if (verbose)
                (void)fprintf(stderr, "%s %qd bytes\n", file_name, size);