mirror of
https://github.com/Ponce/slackbuilds
synced 2024-12-05 00:55:44 +01:00
50 lines
1.1 KiB
Diff
50 lines
1.1 KiB
Diff
|
--- ksh-openbsd_cvs/c_sh.c 2010-03-27 17:25:30.000000000 +0100
|
||
|
+++ ksh-openbsd_cvs.new/c_sh.c 2010-04-01 21:01:24.132137763 +0200
|
||
|
@@ -837,19 +837,13 @@ c_mknod(char **wp)
|
||
|
{
|
||
|
int argc, optc, ismkfifo = 0, ret;
|
||
|
char **argv;
|
||
|
- void *set = NULL;
|
||
|
- mode_t mode = 0, oldmode = 0;
|
||
|
+ mode_t mode = 0, old_umask = -1;
|
||
|
|
||
|
while ((optc = ksh_getopt(wp, &builtin_opt, "m:")) != -1) {
|
||
|
switch (optc) {
|
||
|
case 'm':
|
||
|
- set = setmode(builtin_opt.optarg);
|
||
|
- if (set == NULL) {
|
||
|
- bi_errorf("invalid file mode");
|
||
|
- return 1;
|
||
|
- }
|
||
|
- mode = getmode(set, DEFFILEMODE);
|
||
|
- free(set);
|
||
|
+ old_umask = umask(0);
|
||
|
+ mode |= strtoul(builtin_opt.optarg, NULL, 8);
|
||
|
break;
|
||
|
default:
|
||
|
goto usage;
|
||
|
@@ -866,18 +860,17 @@ c_mknod(char **wp)
|
||
|
} else if (argc != 4)
|
||
|
goto usage;
|
||
|
|
||
|
- if (set)
|
||
|
- oldmode = umask(0);
|
||
|
- else
|
||
|
- mode = DEFFILEMODE;
|
||
|
+ if (old_umask == -1)
|
||
|
+ mode |= DEFFILEMODE;
|
||
|
|
||
|
if (ismkfifo)
|
||
|
ret = domkfifo(argc, argv, mode);
|
||
|
else
|
||
|
ret = domknod(argc, argv, mode);
|
||
|
|
||
|
- if (set)
|
||
|
- umask(oldmode);
|
||
|
+ if (old_umask != -1)
|
||
|
+ umask(old_umask);
|
||
|
+
|
||
|
return ret;
|
||
|
usage:
|
||
|
builtin_argv0 = NULL;
|