@@ -10,32 +10,68 @@ const {
10
10
} = require ( 'internal/validators' ) ;
11
11
12
12
function setupProcessMethods ( ) {
13
+ // Non-POSIX platforms like Windows don't have certain methods.
14
+ if ( process . setgid !== undefined ) {
15
+ setupPosixMethods ( ) ;
16
+ }
17
+
13
18
const {
14
19
chdir : _chdir ,
20
+ umask : _umask ,
21
+ } = process ;
22
+
23
+ process . chdir = chdir ;
24
+ process . umask = umask ;
25
+
26
+ function chdir ( directory ) {
27
+ if ( typeof directory !== 'string' ) {
28
+ throw new ERR_INVALID_ARG_TYPE ( 'directory' , 'string' , directory ) ;
29
+ }
30
+ return _chdir ( directory ) ;
31
+ }
32
+
33
+ const octalReg = / ^ [ 0 - 7 ] + $ / ;
34
+ function umask ( mask ) {
35
+ if ( typeof mask === 'undefined' ) {
36
+ return _umask ( mask ) ;
37
+ }
38
+
39
+ if ( typeof mask === 'number' ) {
40
+ validateUint32 ( mask , 'mask' ) ;
41
+ return _umask ( mask ) ;
42
+ }
43
+
44
+ if ( typeof mask === 'string' ) {
45
+ if ( ! octalReg . test ( mask ) ) {
46
+ throw new ERR_INVALID_ARG_VALUE ( 'mask' , mask ,
47
+ 'must be an octal string' ) ;
48
+ }
49
+ const octal = Number . parseInt ( mask , 8 ) ;
50
+ validateUint32 ( octal , 'mask' ) ;
51
+ return _umask ( octal ) ;
52
+ }
53
+
54
+ throw new ERR_INVALID_ARG_TYPE ( 'mask' , [ 'number' , 'string' , 'undefined' ] ,
55
+ mask ) ;
56
+ }
57
+ }
58
+
59
+ function setupPosixMethods ( ) {
60
+ const {
15
61
initgroups : _initgroups ,
16
62
setegid : _setegid ,
17
63
seteuid : _seteuid ,
18
64
setgid : _setgid ,
19
65
setuid : _setuid ,
20
- setgroups : _setgroups ,
21
- umask : _umask ,
66
+ setgroups : _setgroups
22
67
} = process ;
23
68
24
- process . chdir = chdir ;
25
69
process . initgroups = initgroups ;
26
70
process . setegid = setegid ;
27
71
process . seteuid = seteuid ;
28
72
process . setgid = setgid ;
29
73
process . setuid = setuid ;
30
74
process . setgroups = setgroups ;
31
- process . umask = umask ;
32
-
33
- function chdir ( directory ) {
34
- if ( typeof directory !== 'string' ) {
35
- throw new ERR_INVALID_ARG_TYPE ( 'directory' , 'string' , directory ) ;
36
- }
37
- return _chdir ( directory ) ;
38
- }
39
75
40
76
function initgroups ( user , extraGroup ) {
41
77
validateId ( user , 'user' ) ;
@@ -80,31 +116,6 @@ function setupProcessMethods() {
80
116
}
81
117
}
82
118
83
- const octalReg = / ^ [ 0 - 7 ] + $ / ;
84
- function umask ( mask ) {
85
- if ( typeof mask === 'undefined' ) {
86
- return _umask ( mask ) ;
87
- }
88
-
89
- if ( typeof mask === 'number' ) {
90
- validateUint32 ( mask , 'mask' ) ;
91
- return _umask ( mask ) ;
92
- }
93
-
94
- if ( typeof mask === 'string' ) {
95
- if ( ! octalReg . test ( mask ) ) {
96
- throw new ERR_INVALID_ARG_VALUE ( 'mask' , mask ,
97
- 'must be an octal string' ) ;
98
- }
99
- const octal = Number . parseInt ( mask , 8 ) ;
100
- validateUint32 ( octal , 'mask' ) ;
101
- return _umask ( octal ) ;
102
- }
103
-
104
- throw new ERR_INVALID_ARG_TYPE ( 'mask' , [ 'number' , 'string' , 'undefined' ] ,
105
- mask ) ;
106
- }
107
-
108
119
function execId ( id , type , method ) {
109
120
validateId ( id , 'id' ) ;
110
121
// Result is 0 on success, 1 if credential is unknown.
0 commit comments