diff options
author | Anthony Pesch <inolen@gmail.com> | 2014-01-30 02:43:10 -0800 |
---|---|---|
committer | Anthony Pesch <inolen@gmail.com> | 2014-01-30 09:47:21 -0800 |
commit | 65184b40ecf8c44c7b30d77419f620966ec1ff1f (patch) | |
tree | ae7caed15d030953028e7ce2aa6e33b14920475f /src/library_fs.js | |
parent | 25252c1c65d622e84fb8ae646f90440b6587ea10 (diff) |
don't leak streams in readFile and writeFile
don't invoke multiple callbacks when idbfs sync errors
added canOwn option to writeFile
updated idbfs sync to specify canOwn when writing to the local fs
reworked idbfs sync to use an index with openKeyCursor to avoid deserializing all values when getting the set members
Diffstat (limited to 'src/library_fs.js')
-rw-r--r-- | src/library_fs.js | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/library_fs.js b/src/library_fs.js index e6b060f6..3e1eb6e2 100644 --- a/src/library_fs.js +++ b/src/library_fs.js @@ -975,6 +975,9 @@ mergeInto(LibraryManager.library, { opts = opts || {}; opts.flags = opts.flags || 'r'; opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } var ret; var stream = FS.open(path, opts.flags); var stat = FS.stat(path); @@ -989,8 +992,6 @@ mergeInto(LibraryManager.library, { } } else if (opts.encoding === 'binary') { ret = buf; - } else { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); } FS.close(stream); return ret; @@ -999,15 +1000,16 @@ mergeInto(LibraryManager.library, { opts = opts || {}; opts.flags = opts.flags || 'w'; opts.encoding = opts.encoding || 'utf8'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } var stream = FS.open(path, opts.flags, opts.mode); if (opts.encoding === 'utf8') { var utf8 = new Runtime.UTF8Processor(); var buf = new Uint8Array(utf8.processJSString(data)); - FS.write(stream, buf, 0, buf.length, 0); + FS.write(stream, buf, 0, buf.length, 0, opts.canOwn); } else if (opts.encoding === 'binary') { - FS.write(stream, data, 0, data.length, 0); - } else { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); + FS.write(stream, data, 0, data.length, 0, opts.canOwn); } FS.close(stream); }, |