aboutsummaryrefslogtreecommitdiff
path: root/src/library_fs.js
diff options
context:
space:
mode:
authorAnthony Pesch <inolen@gmail.com>2014-01-30 02:43:10 -0800
committerAnthony Pesch <inolen@gmail.com>2014-01-30 09:47:21 -0800
commit65184b40ecf8c44c7b30d77419f620966ec1ff1f (patch)
treeae7caed15d030953028e7ce2aa6e33b14920475f /src/library_fs.js
parent25252c1c65d622e84fb8ae646f90440b6587ea10 (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.js14
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);
},