mirror of
https://codeberg.org/scip/digiproof.git
synced 2025-12-16 20:21:00 +01:00
initial commit
This commit is contained in:
275
js/fs.js
Executable file
275
js/fs.js
Executable file
@@ -0,0 +1,275 @@
|
||||
|
||||
//--
|
||||
//-- Filesystem code from TiddlyWiki
|
||||
//--
|
||||
|
||||
function convertUTF8ToUnicode(u)
|
||||
{
|
||||
return window.netscape == undefined ? manualConvertUTF8ToUnicode(u) : mozConvertUTF8ToUnicode(u);
|
||||
}
|
||||
|
||||
function manualConvertUTF8ToUnicode(utf)
|
||||
{
|
||||
var uni = utf;
|
||||
var src = 0;
|
||||
var dst = 0;
|
||||
var b1, b2, b3;
|
||||
var c;
|
||||
while(src < utf.length) {
|
||||
b1 = utf.charCodeAt(src++);
|
||||
if(b1 < 0x80) {
|
||||
dst++;
|
||||
} else if(b1 < 0xE0) {
|
||||
b2 = utf.charCodeAt(src++);
|
||||
c = String.fromCharCode(((b1 & 0x1F) << 6) | (b2 & 0x3F));
|
||||
uni = uni.substring(0,dst++).concat(c,utf.substr(src));
|
||||
} else {
|
||||
b2 = utf.charCodeAt(src++);
|
||||
b3 = utf.charCodeAt(src++);
|
||||
c = String.fromCharCode(((b1 & 0xF) << 12) | ((b2 & 0x3F) << 6) | (b3 & 0x3F));
|
||||
uni = uni.substring(0,dst++).concat(c,utf.substr(src));
|
||||
}
|
||||
}
|
||||
return uni;
|
||||
}
|
||||
|
||||
function mozConvertUTF8ToUnicode(u)
|
||||
{
|
||||
try {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
|
||||
converter.charset = "UTF-8";
|
||||
} catch(ex) {
|
||||
return manualConvertUTF8ToUnicode(u);
|
||||
} // fallback
|
||||
var s = converter.ConvertToUnicode(u);
|
||||
var fin = converter.Finish();
|
||||
return (fin.length > 0) ? s+fin : s;
|
||||
}
|
||||
|
||||
function convertUnicodeToUTF8(s)
|
||||
{
|
||||
if(window.netscape == undefined)
|
||||
return manualConvertUnicodeToUTF8(s);
|
||||
else
|
||||
return mozConvertUnicodeToUTF8(s);
|
||||
}
|
||||
|
||||
|
||||
function manualConvertUnicodeToUTF8(s)
|
||||
{
|
||||
var re = /[^\u0000-\u007F]/g ;
|
||||
return s.replace(re,function($0) {return "&#" + $0.charCodeAt(0).toString() + ";";});
|
||||
}
|
||||
|
||||
function mozConvertUnicodeToUTF8(s)
|
||||
{
|
||||
try {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
|
||||
converter.charset = "UTF-8";
|
||||
} catch(ex) {
|
||||
return manualConvertUnicodeToUTF8(s);
|
||||
} // fallback
|
||||
var u = converter.ConvertFromUnicode(s);
|
||||
var fin = converter.Finish();
|
||||
return fin.length > 0 ? u + fin : u;
|
||||
}
|
||||
|
||||
function convertUriToUTF8(uri,charSet)
|
||||
{
|
||||
if(window.netscape == undefined || charSet == undefined || charSet == "")
|
||||
return uri;
|
||||
try {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var converter = Components.classes["@mozilla.org/intl/utf8converterservice;1"].getService(Components.interfaces.nsIUTF8ConverterService);
|
||||
} catch(ex) {
|
||||
return uri;
|
||||
}
|
||||
return converter.convertURISpecToUTF8(uri,charSet);
|
||||
}
|
||||
|
||||
function saveFile(fileUrl,content)
|
||||
{
|
||||
var r = mozillaSaveFile(fileUrl,content);
|
||||
if(!r)
|
||||
r = ieSaveFile(fileUrl,content);
|
||||
if(!r)
|
||||
r = javaSaveFile(fileUrl,content);
|
||||
return r;
|
||||
}
|
||||
|
||||
function loadFile(fileUrl)
|
||||
{
|
||||
var r = mozillaLoadFile(fileUrl);
|
||||
if((r == null) || (r == false))
|
||||
r = ieLoadFile(fileUrl);
|
||||
if((r == null) || (r == false))
|
||||
r = javaLoadFile(fileUrl);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
function ieCreatePath(path)
|
||||
{
|
||||
try {
|
||||
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||||
} catch(ex) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var pos = path.lastIndexOf("\\");
|
||||
if(pos!=-1)
|
||||
path = path.substring(0, pos+1);
|
||||
|
||||
var scan = [];
|
||||
scan.push(path);
|
||||
var i = 0;
|
||||
do {
|
||||
var parent = fso.GetParentFolderName(scan[i++]);
|
||||
if (fso.FolderExists(parent))
|
||||
break;
|
||||
scan.push(parent);
|
||||
} while(true);
|
||||
|
||||
for(i=scan.length-1;i>=0;i--) {
|
||||
if (!fso.FolderExists(scan[i]))
|
||||
fso.CreateFolder(scan[i]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Returns null if it can't do it, false if there's an error, true if it saved OK
|
||||
function ieSaveFile(filePath,content)
|
||||
{
|
||||
ieCreatePath(filePath);
|
||||
try {
|
||||
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||||
} catch(ex) {
|
||||
return null;
|
||||
}
|
||||
var file = fso.OpenTextFile(filePath,2,-1,0);
|
||||
file.Write(content);
|
||||
file.Close();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Returns null if it can't do it, false if there's an error, or a string of the content if successful
|
||||
function ieLoadFile(filePath)
|
||||
{
|
||||
try {
|
||||
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||||
var file = fso.OpenTextFile(filePath,1);
|
||||
var content = file.ReadAll();
|
||||
file.Close();
|
||||
} catch(ex) {
|
||||
return null;
|
||||
}
|
||||
return content;
|
||||
}
|
||||
|
||||
function ieCopyFile(dest,source)
|
||||
{
|
||||
ieCreatePath(dest);
|
||||
try {
|
||||
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
||||
fso.GetFile(source).Copy(dest);
|
||||
} catch(ex) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Returns null if it can't do it, false if there's an error, true if it saved OK
|
||||
function mozillaSaveFile(filePath,content)
|
||||
{
|
||||
if(window.Components) {
|
||||
try {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||
file.initWithPath(filePath);
|
||||
if(!file.exists())
|
||||
file.create(0,0664);
|
||||
var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
|
||||
out.init(file,0x20|0x02,00004,null);
|
||||
out.write(content,content.length);
|
||||
out.flush();
|
||||
out.close();
|
||||
return true;
|
||||
} catch(ex) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Returns null if it can't do it, false if there's an error, or a string of the content if successful
|
||||
function mozillaLoadFile(filePath)
|
||||
{
|
||||
if(window.Components) {
|
||||
try {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
|
||||
file.initWithPath(filePath);
|
||||
if(!file.exists())
|
||||
return null;
|
||||
var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
|
||||
inputStream.init(file,0x01,00004,null);
|
||||
var sInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
|
||||
sInputStream.init(inputStream);
|
||||
return sInputStream.read(sInputStream.available());
|
||||
} catch(ex) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function javaUrlToFilename(url)
|
||||
{
|
||||
var f = "//localhost";
|
||||
if(url.indexOf(f) == 0)
|
||||
return url.substring(f.length);
|
||||
var i = url.indexOf(":");
|
||||
if(i > 0)
|
||||
return url.substring(i-1);
|
||||
return url;
|
||||
}
|
||||
|
||||
function javaSaveFile(filePath,content)
|
||||
{
|
||||
try {
|
||||
if(document.applets["TiddlySaver"])
|
||||
return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content);
|
||||
} catch(ex) {
|
||||
}
|
||||
try {
|
||||
var s = new java.io.PrintStream(new java.io.FileOutputStream(javaUrlToFilename(filePath)));
|
||||
s.print(content);
|
||||
s.close();
|
||||
} catch(ex) {
|
||||
return null;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function javaLoadFile(filePath)
|
||||
{
|
||||
try {
|
||||
if(document.applets["TiddlySaver"])
|
||||
return String(document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8"));
|
||||
} catch(ex) {
|
||||
}
|
||||
var content = [];
|
||||
try {
|
||||
var r = new java.io.BufferedReader(new java.io.FileReader(javaUrlToFilename(filePath)));
|
||||
var line;
|
||||
while((line = r.readLine()) != null)
|
||||
content.push(new String(line));
|
||||
r.close();
|
||||
} catch(ex) {
|
||||
return null;
|
||||
}
|
||||
return content.join("\n");
|
||||
}
|
||||
Reference in New Issue
Block a user