4
4
// found in the LICENSE file.
5
5
6
6
mergeInto ( LibraryManager . library , {
7
- $NODEFS__deps : [ '$FS' , '$PATH' ] ,
7
+ $NODEFS__deps : [ '$FS' , '$PATH' , '$ERRNO_CODES' ] ,
8
8
$NODEFS__postset : 'if (ENVIRONMENT_HAS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); }' ,
9
9
$NODEFS : {
10
10
isWindows : false ,
@@ -32,6 +32,11 @@ mergeInto(LibraryManager.library, {
32
32
// Buffer.alloc has been added with Buffer.from together, so check it instead
33
33
return Buffer [ "alloc" ] ? Buffer . from ( arrayBuffer ) : new Buffer ( arrayBuffer ) ;
34
34
} ,
35
+ convertNodeCode : function ( e ) {
36
+ var code = e . code ;
37
+ assert ( code in ERRNO_CODES ) ;
38
+ return ERRNO_CODES [ code ] ;
39
+ } ,
35
40
mount : function ( mount ) {
36
41
assert ( ENVIRONMENT_HAS_NODE ) ;
37
42
return NODEFS . createNode ( null , '/' , NODEFS . getMode ( mount . opts . root ) , 0 ) ;
@@ -56,7 +61,7 @@ mergeInto(LibraryManager.library, {
56
61
}
57
62
} catch ( e ) {
58
63
if ( ! e . code ) throw e ;
59
- throw new FS . ErrnoError ( - e . errno ) ; // syscall errnos are negated, node's are not
64
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
60
65
}
61
66
return stat . mode ;
62
67
} ,
@@ -99,7 +104,7 @@ mergeInto(LibraryManager.library, {
99
104
stat = fs . lstatSync ( path ) ;
100
105
} catch ( e ) {
101
106
if ( ! e . code ) throw e ;
102
- throw new FS . ErrnoError ( - e . errno ) ;
107
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
103
108
}
104
109
// node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
105
110
// See http://support.microsoft.com/kb/140365
@@ -142,7 +147,7 @@ mergeInto(LibraryManager.library, {
142
147
}
143
148
} catch ( e ) {
144
149
if ( ! e . code ) throw e ;
145
- throw new FS . ErrnoError ( - e . errno ) ;
150
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
146
151
}
147
152
} ,
148
153
lookup : function ( parent , name ) {
@@ -162,7 +167,7 @@ mergeInto(LibraryManager.library, {
162
167
}
163
168
} catch ( e ) {
164
169
if ( ! e . code ) throw e ;
165
- throw new FS . ErrnoError ( - e . errno ) ;
170
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
166
171
}
167
172
return node ;
168
173
} ,
@@ -173,7 +178,7 @@ mergeInto(LibraryManager.library, {
173
178
fs . renameSync ( oldPath , newPath ) ;
174
179
} catch ( e ) {
175
180
if ( ! e . code ) throw e ;
176
- throw new FS . ErrnoError ( - e . errno ) ;
181
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
177
182
}
178
183
} ,
179
184
unlink : function ( parent , name ) {
@@ -182,7 +187,7 @@ mergeInto(LibraryManager.library, {
182
187
fs . unlinkSync ( path ) ;
183
188
} catch ( e ) {
184
189
if ( ! e . code ) throw e ;
185
- throw new FS . ErrnoError ( - e . errno ) ;
190
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
186
191
}
187
192
} ,
188
193
rmdir : function ( parent , name ) {
@@ -191,7 +196,7 @@ mergeInto(LibraryManager.library, {
191
196
fs . rmdirSync ( path ) ;
192
197
} catch ( e ) {
193
198
if ( ! e . code ) throw e ;
194
- throw new FS . ErrnoError ( - e . errno ) ;
199
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
195
200
}
196
201
} ,
197
202
readdir : function ( node ) {
@@ -200,7 +205,7 @@ mergeInto(LibraryManager.library, {
200
205
return fs . readdirSync ( path ) ;
201
206
} catch ( e ) {
202
207
if ( ! e . code ) throw e ;
203
- throw new FS . ErrnoError ( - e . errno ) ;
208
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
204
209
}
205
210
} ,
206
211
symlink : function ( parent , newName , oldPath ) {
@@ -209,7 +214,7 @@ mergeInto(LibraryManager.library, {
209
214
fs . symlinkSync ( oldPath , newPath ) ;
210
215
} catch ( e ) {
211
216
if ( ! e . code ) throw e ;
212
- throw new FS . ErrnoError ( - e . errno ) ;
217
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
213
218
}
214
219
} ,
215
220
readlink : function ( node ) {
@@ -220,7 +225,7 @@ mergeInto(LibraryManager.library, {
220
225
return path ;
221
226
} catch ( e ) {
222
227
if ( ! e . code ) throw e ;
223
- throw new FS . ErrnoError ( - e . errno ) ;
228
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
224
229
}
225
230
} ,
226
231
} ,
@@ -233,7 +238,7 @@ mergeInto(LibraryManager.library, {
233
238
}
234
239
} catch ( e ) {
235
240
if ( ! e . code ) throw e ;
236
- throw new FS . ErrnoError ( - e . errno ) ;
241
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
237
242
}
238
243
} ,
239
244
close : function ( stream ) {
@@ -243,7 +248,7 @@ mergeInto(LibraryManager.library, {
243
248
}
244
249
} catch ( e ) {
245
250
if ( ! e . code ) throw e ;
246
- throw new FS . ErrnoError ( - e . errno ) ;
251
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
247
252
}
248
253
} ,
249
254
read : function ( stream , buffer , offset , length , position ) {
@@ -252,14 +257,14 @@ mergeInto(LibraryManager.library, {
252
257
try {
253
258
return fs . readSync ( stream . nfd , NODEFS . bufferFrom ( buffer . buffer ) , offset , length , position ) ;
254
259
} catch ( e ) {
255
- throw new FS . ErrnoError ( - e . errno ) ;
260
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
256
261
}
257
262
} ,
258
263
write : function ( stream , buffer , offset , length , position ) {
259
264
try {
260
265
return fs . writeSync ( stream . nfd , NODEFS . bufferFrom ( buffer . buffer ) , offset , length , position ) ;
261
266
} catch ( e ) {
262
- throw new FS . ErrnoError ( - e . errno ) ;
267
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
263
268
}
264
269
} ,
265
270
llseek : function ( stream , offset , whence ) {
@@ -272,7 +277,7 @@ mergeInto(LibraryManager.library, {
272
277
var stat = fs . fstatSync ( stream . nfd ) ;
273
278
position += stat . size ;
274
279
} catch ( e ) {
275
- throw new FS . ErrnoError ( - e . errno ) ;
280
+ throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
276
281
}
277
282
}
278
283
}
0 commit comments