Skip to content
Snippets Groups Projects
Commit 136d7cdc authored by rswindell's avatar rswindell
Browse files

Fix the export of user avatars (broken in last commit) objects don't have

a length property (normally).
Change the command-line usage: one command per invocation, but multiple
files possible (e.g. with "export" and "verify" commands).
You don't need the '-file' or '-users' arguments anymore.
parent eff6d018
No related branches found
No related tags found
No related merge requests found
...@@ -259,6 +259,7 @@ function export_users(msgbase, realnames) ...@@ -259,6 +259,7 @@ function export_users(msgbase, realnames)
{ {
var last_user = system.lastuser; var last_user = system.lastuser;
var list = {}; var list = {};
var exported = 0;
for(var n = 1; n <= last_user && !js.terminated; n++) { for(var n = 1; n <= last_user && !js.terminated; n++) {
if(!file_exists(lib.localuser_fname(n))) if(!file_exists(lib.localuser_fname(n)))
...@@ -277,8 +278,9 @@ function export_users(msgbase, realnames) ...@@ -277,8 +278,9 @@ function export_users(msgbase, realnames)
list[data].push(u.alias); list[data].push(u.alias);
if(realnames) if(realnames)
list[data].push(u.name); list[data].push(u.name);
exported++;
} }
if(!list.length) if(!exported)
return true; // Nothing to export return true; // Nothing to export
for(var i in list) for(var i in list)
list[i].sort(); list[i].sort();
...@@ -313,15 +315,14 @@ function export_file(msgbase, filename) ...@@ -313,15 +315,14 @@ function export_file(msgbase, filename)
function main() function main()
{ {
var optval={}; var optval={};
var cmds=[]; var cmd;
var i; var i;
var filename;
var offset; var offset;
var realnames = false; var realnames = false;
var ptr; var ptr;
var limit; var limit;
var all; var all;
var users = false; var files = [];
for(i in argv) { for(i in argv) {
var arg = argv[i]; var arg = argv[i];
...@@ -336,14 +337,11 @@ function main() ...@@ -336,14 +337,11 @@ function main()
switch(arg) { switch(arg) {
case '-file': case '-file':
filename = val; files.push(val);
break; break;
case '-offset': case '-offset':
offset = val; offset = val;
break; break;
case '-users':
users = true;
break;
case '-realnames': case '-realnames':
realnames = true; realnames = true;
break; break;
...@@ -353,98 +351,109 @@ function main() ...@@ -353,98 +351,109 @@ function main()
case "-all": case "-all":
all = true; all = true;
break; break;
case "import":
case "export":
case "dump":
case "draw":
case "show":
case "verify":
case "enable":
case "disable":
case "remove":
cmd = arg;
break;
default: default:
if(parseInt(arg) < 0) if(parseInt(arg) < 0)
limit = -parseInt(arg); limit = -parseInt(arg);
else else if(arg.charAt(0) != '-')
cmds.push(arg); files.push(arg);
break; break;
} }
} }
mkdir(lib.local_library()); mkdir(lib.local_library());
for(var c in cmds) { switch(cmd) {
var cmd = cmds[c].toLowerCase(); case "import":
switch(cmd) { if(files.length && parseInt(optval[cmd])) {
case "import": printf("Importing %s for user #%u\r\n", files[0], optval[cmd]);
if(filename && parseInt(optval[cmd])) { var success = lib.import_file(optval[cmd], files[0], offset);
printf("Importing %s for user #%u\r\n", filename, optval[cmd]); printf("%s\r\n", success ? "Successful" : "FAILED!");
var success = lib.import_file(optval[cmd], filename, offset);
printf("%s\r\n", success ? "Successful" : "FAILED!");
break;
}
var msgbase = new MsgBase(optval[cmd]);
print("Opening msgbase " + msgbase.file);
if(!msgbase.open()) {
alert("Error " + msgbase.error + " opening msgbase: " + msgbase.file);
exit(-1);
}
import_from_msgbase(msgbase, ptr, limit, all);
msgbase.close();
break;
case "export":
var msgbase = new MsgBase(optval[cmd]);
print("Opening msgbase " + msgbase.file);
if(!msgbase.open()) {
alert("Error " + msgbase.error + " opening msgbase: " + msgbase.file);
exit(-1);
}
var success = true;
if(users) {
printf("Exporting user avatars\n");
success = export_users(msgbase, realnames);
}
if(success && filename) {
printf("Exporting avatar file: %s\n", filename);
if(!valid_shared_file(filename))
success = false;
else
success = export_file(msgbase, filename);
}
printf("%s\r\n", success ? "Successful" : "FAILED: " + msgbase.last_error);
break;
case "dump":
var usernum = optval[cmd];
if(!usernum)
usernum = user.number;
var obj = lib.read_localuser(usernum);
print(JSON.stringify(obj));
break;
case "draw": // Uses Graphic.draw()
var usernum = optval[cmd];
if(!usernum)
usernum = user.number;
console.clear();
var obj = lib.draw(usernum);
break; break;
case "show": // Uses console.write() }
var usernum = optval[cmd]; var msgbase = new MsgBase(optval[cmd]);
if(!usernum) print("Opening msgbase " + msgbase.file);
usernum = user.number; if(!msgbase.open()) {
var obj = lib.show(usernum); alert("Error " + msgbase.error + " opening msgbase: " + msgbase.file);
break; exit(-1);
case "verify": }
if(filename) { import_from_msgbase(msgbase, ptr, limit, all);
var success = valid_shared_file(filename); msgbase.close();
print(success ? "Successful" : "FAILED"); break;
} case "export":
break; var msgbase = new MsgBase(optval[cmd]);
case "remove": print("Opening msgbase " + msgbase.file);
var usernum = parseInt(optval[cmd]); if(!msgbase.open()) {
if(usernum) { alert("Error " + msgbase.error + " opening msgbase: " + msgbase.file);
printf("Removing user #%u avatar\n", usernum); exit(-1);
var success = lib.remove_localuser(usernum); }
print(success ? "Successful" : "FAILED"); var success = true;
} if(!files.length) {
break; printf("Exporting user avatars\n");
case "enable": success = export_users(msgbase, realnames);
case "disable": }
var usernum = parseInt(optval[cmd]); for(var i in files) {
if(usernum) { printf("Exporting avatar file: %s\n", files[i]);
var success = lib.enable_localuser(usernum, cmd == "enable"); if(!valid_shared_file(files[i])) {
print(success ? "Successful" : "FAILED"); success = false;
break;
} }
break; else
} success = export_file(msgbase, files[i]);
}
printf("%s\r\n", success ? "Successful" : "FAILED: " + msgbase.last_error);
break;
case "dump":
var usernum = optval[cmd];
if(!usernum)
usernum = user.number;
var obj = lib.read_localuser(usernum);
print(JSON.stringify(obj));
break;
case "draw": // Uses Graphic.draw()
var usernum = optval[cmd];
if(!usernum)
usernum = user.number;
console.clear();
var obj = lib.draw(usernum);
break;
case "show": // Uses console.write()
var usernum = optval[cmd];
if(!usernum)
usernum = user.number;
var obj = lib.show(usernum);
break;
case "verify":
for(var i in files) {
printf("%s: ", file_getname(files[i]));
var success = valid_shared_file(files[i]);
print(success ? "Successful" : "FAILED");
}
break;
case "remove":
var usernum = parseInt(optval[cmd]);
if(usernum) {
printf("Removing user #%u avatar\n", usernum);
var success = lib.remove_localuser(usernum);
print(success ? "Successful" : "FAILED");
}
break;
case "enable":
case "disable":
var usernum = parseInt(optval[cmd]);
if(usernum) {
var success = lib.enable_localuser(usernum, cmd == "enable");
print(success ? "Successful" : "FAILED");
}
break;
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment