Changeset 3389 for trunk/src/kmk/kmkbuiltin/mkdir.c
- Timestamp:
- Jun 26, 2020, 7:16:26 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/mkdir.c
r3215 r3389 49 49 #include "err.h" 50 50 #include <errno.h> 51 #include <assert.h> 51 52 #ifndef _MSC_VER 52 53 # include <libgen.h> … … 80 81 }; 81 82 83 extern mode_t g_fUMask; 82 84 83 85 extern void * bsd_setmode(const char *p); … … 167 169 168 170 #ifdef KMK_BUILTIN_STANDALONE 171 mode_t g_fUMask; 169 172 int main(int argc, char **argv, char **envp) 170 173 { 171 174 KMKBUILTINCTX Ctx = { "kmk_mkdir", NULL }; 175 umask(g_fUMask = umask(0077)); 172 176 return kmk_builtin_mkdir(argc, argv, envp, &Ctx); 173 177 } … … 240 244 * instead of doing chmod's. 241 245 */ 242 oumask = umask(0); 246 #ifdef KMK_BUILTIN_STANDALONE 247 oumask = umask(0077); 248 #else 249 oumask = g_fUMask; 250 assert(oumask == umask(g_fUMask)); 251 #endif 243 252 numask = oumask & ~(S_IWUSR | S_IXUSR); 244 (void)umask(numask); 253 if (numask != oumask) 254 (void)umask(numask); 245 255 first = 0; 246 256 } 247 if (last )257 if (last && oumask != numask) 248 258 (void)umask(oumask); 249 259 if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) { … … 255 265 retval = 1; 256 266 break; 257 } else if (!S_ISDIR(sb.st_mode)) { 267 } 268 if (!S_ISDIR(sb.st_mode)) { 258 269 if (last) 259 270 errno = EEXIST; … … 274 285 *p = '/'; 275 286 } 276 if (!first && !last )287 if (!first && !last && oumask != numask) 277 288 (void)umask(oumask); 278 289 return (retval);
Note:
See TracChangeset
for help on using the changeset viewer.