- Timestamp:
- Jun 26, 2020 5:16:26 PM (5 years ago)
- Location:
- trunk/src/kmk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/function.c
r3359 r3389 5665 5665 } 5666 5666 5667 u = umask (002);5668 umask (u);5667 u = g_fUMask; 5668 assert (u == umask (g_fUMask)); 5669 5669 5670 5670 if (symbolic) … … 5734 5734 if (argv[1] != NULL) 5735 5735 OS (error, reading_file, _("$(%s ) too many arguments for octal mode"), funcname); 5736 5737 umask (u); 5738 g_fUMask = u; 5736 5739 } 5737 5740 else 5738 5741 { 5739 u = umask(0);5740 umask(u);5741 5742 OS (error, reading_file, _("$(%s ) symbol mode is not implemented"), funcname); 5742 5743 } 5743 5744 umask(u);5745 5744 5746 5745 return o; -
trunk/src/kmk/kmkbuiltin.c
r3352 r3389 402 402 { 403 403 /* 404 * Call the worker function , making sure to preserve umask.404 * Call the worker function. 405 405 */ 406 406 #ifdef CONFIG_WITH_KMK_BUILTIN_STATS … … 408 408 #endif 409 409 KMKBUILTINCTX Ctx; 410 int const iUmask = umask(0); /* save umask */ 411 umask(iUmask); 410 assert(g_fUMask == umask(g_fUMask)); 412 411 413 412 Ctx.pszProgName = pEntry->uName.s.sz; … … 448 447 rc = 99; 449 448 450 umask(iUmask); /* restore it*/449 assert(g_fUMask == umask(g_fUMask)); /* builtin command must preserve umask! */ 451 450 452 451 #ifdef CONFIG_WITH_KMK_BUILTIN_STATS -
trunk/src/kmk/kmkbuiltin/chmod.c
r3220 r3389 278 278 279 279 #ifdef KMK_BUILTIN_STANDALONE 280 mode_t g_fUMask; 280 281 int main(int argc, char **argv, char **envp) 281 282 { 282 283 KMKBUILTINCTX Ctx = { "kmk_chmod", NULL }; 284 umask(g_fUMask = umask(0077)); 283 285 return kmk_builtin_chmod(argc, argv, envp, &Ctx); 284 286 } -
trunk/src/kmk/kmkbuiltin/cp.c
r3221 r3389 69 69 #include <sys/stat.h> 70 70 71 #include <assert.h> 71 72 #include "err.h" 72 73 #include <errno.h> … … 175 176 volatile sig_atomic_t g_cp_info; 176 177 #endif 178 179 extern mode_t g_fUMask; 177 180 178 181 … … 423 426 424 427 #ifdef KMK_BUILTIN_STANDALONE 428 mode_t g_fUMask; 425 429 int main(int argc, char **argv, char **envp) 426 430 { 427 431 KMKBUILTINCTX Ctx = { "kmk_cp", NULL }; 432 umask(g_fUMask = umask(0077)); 428 433 return kmk_builtin_cp(argc, argv, envp, &Ctx); 429 434 } … … 445 450 * permissions on created directories when not using -p. 446 451 */ 447 mask = ~umask(0777); 448 umask(~mask); 452 mask = g_fUMask; 453 assert(mask == umask(mask)); 454 mask = ~mask; 449 455 450 456 if ((ftsp = fts_open(argv, fts_options, mastercmp)) == NULL) -
trunk/src/kmk/kmkbuiltin/install.c
r3241 r3389 396 396 397 397 #ifdef KMK_BUILTIN_STANDALONE 398 mode_t g_fUMask; 398 399 int main(int argc, char **argv, char **envp) 399 400 { 400 401 KMKBUILTINCTX Ctx = { "kmk_install", NULL }; 402 umask(g_fUMask = umask(0077)); 401 403 return kmk_builtin_install(argc, argv, envp, &Ctx); 402 404 } -
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); -
trunk/src/kmk/kmkbuiltin/setmode.c
r2113 r3389 100 100 #endif /* !S_ISTXT */ 101 101 102 extern mode_t g_fUMask; /* Initialize in main() and keep up to date. */ 103 104 102 105 /* 103 106 * Given the old mode and an array of bitcmd structures, apply the operations … … 223 226 (void)sigprocmask(SIG_BLOCK, &signset, &sigoset); 224 227 #endif 225 (void)umask(mask = umask(0)); 228 mask = g_fUMask; 229 assert(mask == umask(g_fUMask)); 226 230 mask = ~mask; 227 231 #ifndef _MSC_VER -
trunk/src/kmk/main.c
r3357 r3389 821 821 struct output make_sync; 822 822 823 #ifdef KMK 824 /** Current umask() value. */ 825 mode_t g_fUMask = 0022; 826 #endif 827 823 828 824 829 … … 1769 1774 #endif 1770 1775 1776 #ifdef KMK 1777 /* Get the incoming umask so we don't have to modify it later to get it. */ 1778 umask(g_fUMask = umask(0077)); 1779 #endif 1780 1771 1781 #ifdef CONFIG_NEW_WIN32_CTRL_EVENT 1772 1782 /* bird: dispatch signals in our own way to try avoid deadlocks. */ -
trunk/src/kmk/makeint.h
r3359 r3389 1189 1189 #endif 1190 1190 1191 #ifdef KMK 1192 /* main.c */ 1193 extern mode_t g_fUMask; 1194 #endif
Note:
See TracChangeset
for help on using the changeset viewer.