@@ -8,32 +8,38 @@ function mkdirP (p, mode, f) {
8
8
f = mode ;
9
9
mode = 0777 & ( ~ process . umask ( ) ) ;
10
10
}
11
-
11
+
12
+ // secret passalong argument.
13
+ var made = arguments [ 3 ] || null ;
14
+
12
15
var cb = f || function ( ) { } ;
13
16
if ( typeof mode === 'string' ) mode = parseInt ( mode , 8 ) ;
14
17
p = path . resolve ( p ) ;
15
18
16
19
fs . mkdir ( p , mode , function ( er ) {
17
- if ( ! er ) return cb ( ) ;
20
+ if ( ! er ) {
21
+ made = made || p ;
22
+ return cb ( null , made ) ;
23
+ }
18
24
switch ( er . code ) {
19
25
case 'ENOENT' :
20
- mkdirP ( path . dirname ( p ) , mode , function ( er ) {
21
- if ( er ) cb ( er ) ;
22
- else mkdirP ( p , mode , cb ) ;
26
+ mkdirP ( path . dirname ( p ) , mode , function ( er , made ) {
27
+ if ( er ) cb ( er , made ) ;
28
+ else mkdirP ( p , mode , cb , made ) ;
23
29
} ) ;
24
30
break ;
25
31
26
32
case 'EEXIST' :
27
33
fs . stat ( p , function ( er2 , stat ) {
28
34
// if the stat fails, then that's super weird.
29
35
// let the original EEXIST be the failure reason.
30
- if ( er2 || ! stat . isDirectory ( ) ) cb ( er )
31
- else cb ( ) ;
36
+ if ( er2 || ! stat . isDirectory ( ) ) cb ( er , made )
37
+ else cb ( null , made ) ;
32
38
} ) ;
33
39
break ;
34
40
35
41
default :
36
- cb ( er ) ;
42
+ cb ( er , made ) ;
37
43
break ;
38
44
}
39
45
} ) ;
@@ -43,18 +49,22 @@ mkdirP.sync = function sync (p, mode) {
43
49
if ( mode === undefined ) {
44
50
mode = 0777 & ( ~ process . umask ( ) ) ;
45
51
}
46
-
52
+
53
+ // secret passalong argument
54
+ var made = arguments [ 2 ] || null ;
55
+
47
56
if ( typeof mode === 'string' ) mode = parseInt ( mode , 8 ) ;
48
57
p = path . resolve ( p ) ;
49
58
50
59
try {
51
60
fs . mkdirSync ( p , mode ) ;
61
+ made = made || p ;
52
62
}
53
63
catch ( err0 ) {
54
64
switch ( err0 . code ) {
55
65
case 'ENOENT' :
56
- sync ( path . dirname ( p ) , mode ) ;
57
- sync ( p , mode ) ;
66
+ made = sync ( path . dirname ( p ) , mode , made ) ;
67
+ sync ( p , mode , made ) ;
58
68
break ;
59
69
60
70
case 'EEXIST' :
@@ -72,6 +82,6 @@ mkdirP.sync = function sync (p, mode) {
72
82
break ;
73
83
}
74
84
}
75
-
76
- return null ;
85
+
86
+ return made ;
77
87
} ;
0 commit comments