window.addEventListener("load", function() { listener.init(); }, false);
var listener = {
fileOut : "",
filePath : "/home/omar/6s_list.xml",
init: function() {
var appcontent = document.getElementById("appcontent"); // browser
if(appcontent)
appcontent.addEventListener("DOMContentLoaded", this.onPageLoad, true);
},
writeVisit : function(string) {
wr=FileIO.write(this.fileOut, ""+string+"");
},
onPageLoad: function(aEvent) {
var doc = aEvent.originalTarget;
this.fileOut = FileIO.open('/home/omar/6s_list.xml');
this.writeVisit("reddit.com");
},
open: function() {
wr=FileIO.write(this.fileOut,"");
},
writeLine: function(string) {
wr=FileIO.write(this.fileOut,string);
},
close: function() {
wr=FileIO.write(this.fileOut, "");
wr=FileIO.unlink(this.fileOut);
alert("unlinked: "+wr);
}
}
/* No need to modify past this line, as it's all worked out in the javascript IO library. */
var FileIO = {
localfileCID : '@mozilla.org/file/local;1',
localfileIID : Components.interfaces.nsILocalFile,
finstreamCID : '@mozilla.org/network/file-input-stream;1',
finstreamIID : Components.interfaces.nsIFileInputStream,
foutstreamCID : '@mozilla.org/network/file-output-stream;1',
foutstreamIID : Components.interfaces.nsIFileOutputStream,
sinstreamCID : '@mozilla.org/scriptableinputstream;1',
sinstreamIID : Components.interfaces.nsIScriptableInputStream,
suniconvCID : '@mozilla.org/intl/scriptableunicodeconverter',
suniconvIID : Components.interfaces.nsIScriptableUnicodeConverter,
open : function(path) {
try {
var file = Components.classes[this.localfileCID]
.createInstance(this.localfileIID);
file.initWithPath(path);
return file;
}
catch(e) {
return false;
}
},
read : function(file, charset) {
try {
var data = new String();
var fiStream = Components.classes[this.finstreamCID]
.createInstance(this.finstreamIID);
var siStream = Components.classes[this.sinstreamCID]
.createInstance(this.sinstreamIID);
fiStream.init(file, 1, 0, false);
siStream.init(fiStream);
data += siStream.read(-1);
siStream.close();
fiStream.close();
if (charset) {
data = this.toUnicode(charset, data);
}
return data;
}
catch(e) {
return false;
}
},
write : function(file, data, mode, charset) {
try {
var foStream = Components.classes[this.foutstreamCID]
.createInstance(this.foutstreamIID);
if (charset) {
data = this.fromUnicode(charset, data);
}
var flags = 0x02 | 0x08 | 0x20; // wronly | create | truncate
if (mode == 'a') {
flags = 0x02 | 0x10; // wronly | append
}
foStream.init(file, flags, 0664, 0);
foStream.write(data, data.length);
// foStream.flush();
foStream.close();
return true;
}
catch(e) {
return false;
}
},
create : function(file) {
try {
file.create(0x00, 0664);
return true;
}
catch(e) {
return false;
}
},
unlink : function(file) {
try {
file.remove(false);
return true;
}
catch(e) {
return false;
}
},
path : function(file) {
try {
return 'file:///' + file.path.replace(/\\/g, '\/')
.replace(/^\s*\/?/, '').replace(/\ /g, '%20');
}
catch(e) {
return false;
}
},
toUnicode : function(charset, data) {
try{
var uniConv = Components.classes[this.suniconvCID]
.createInstance(this.suniconvIID);
uniConv.charset = charset;
data = uniConv.ConvertToUnicode(data);
}
catch(e) {
// foobar!
}
return data;
},
fromUnicode : function(charset, data) {
try {
var uniConv = Components.classes[this.suniconvCID]
.createInstance(this.suniconvIID);
uniConv.charset = charset;
data = uniConv.ConvertFromUnicode(data);
// data += uniConv.Finish();
}
catch(e) {
// foobar!
}
return data;
}
}