@@ -10,32 +10,68 @@ const {
1010}  =  require ( 'internal/validators' ) ; 
1111
1212function  setupProcessMethods ( )  { 
13+   // Non-POSIX platforms like Windows don't have certain methods. 
14+   if  ( process . setgid  !==  undefined )  { 
15+     setupPosixMethods ( ) ; 
16+   } 
17+ 
1318  const  { 
1419    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  { 
1561    initgroups : _initgroups , 
1662    setegid : _setegid , 
1763    seteuid : _seteuid , 
1864    setgid : _setgid , 
1965    setuid : _setuid , 
20-     setgroups : _setgroups , 
21-     umask : _umask , 
66+     setgroups : _setgroups 
2267  }  =  process ; 
2368
24-   process . chdir  =  chdir ; 
2569  process . initgroups  =  initgroups ; 
2670  process . setegid  =  setegid ; 
2771  process . seteuid  =  seteuid ; 
2872  process . setgid  =  setgid ; 
2973  process . setuid  =  setuid ; 
3074  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-   } 
3975
4076  function  initgroups ( user ,  extraGroup )  { 
4177    validateId ( user ,  'user' ) ; 
@@ -80,31 +116,6 @@ function setupProcessMethods() {
80116    } 
81117  } 
82118
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- 
108119  function  execId ( id ,  type ,  method )  { 
109120    validateId ( id ,  'id' ) ; 
110121    // Result is 0 on success, 1 if credential is unknown. 
0 commit comments