full version of init

This commit is contained in:
overflowerror 2013-10-05 20:22:03 +02:00
parent a8925f7811
commit 1b5b392148
2 changed files with 29 additions and 8 deletions

View file

@ -980,17 +980,18 @@ Kernel.Filesystem.vfs.getFileByPath = function (path) {
}
Kernel.Filesystem.vfs.createFile = function (path) {
var paths = path.split("/");
var pathss = paths.splice(paths.length - 1, 1);
pathss = pathss.join("/");
var parent = Kernel.Filesystem.vfs.getFileByPath(pathss);
var pathss = path.split("/");
paths.splice(paths.length - 1, 1);
paths = paths.join("/");
var parent = Kernel.Filesystem.vfs.getFileByPath(paths);
if (!parent)
throw("no such file or directory: " + pathss);
var timestampOfCreattion = (new Date()).getTime();
throw("no such file or directory: " + paths);
var timestampOfCreation = (new Date()).getTime();
file = new InnerFile();
file.name = paths[paths.length - 1];
file.name = pathss[pathss.length - 1];
file.id = Kernel.Filesystem.vfs.index++;
var uid = Kernel.ProcessManager.getUserByPID(Kernel.ProcessManager.getCurrentPID());
var gid = Kernel.ProcessManager.getUserById(uid).group;
var gid = Kernel.UserManager.getUserById(uid).group;
file.ownerID = uid;
file.groupID = gid;
file.parent = parent.id;

View file

@ -18,7 +18,27 @@ InitClass.prototype.main = function(args) {
Emulator.output("\n adding to scheduler job list");
Kernel.Scheduler.add(this);
} else {
var uid = Kernel.ProcessManager.getUserByPID(this.pid);
if (uid != 0) {
this.files['stdout'].write("init: need to be root\n");
this.exit(1);
}
if (args.length != 2) {
this.files['stdout'].write("init: missing runlevel\n");
this.exit(1);
}
if (!isNumber(args[1])) {
this.files['stdout'].write("init: illegal runlevel\n");
this.exit(1);
}
var tmp = new File("/tmp/destLevel.1");
tmp.writeMode = MODE_OVRWD;
tmp.notExistsMode = MODE_CREATE;
tmp.write(parseInt(args[1]));
tmp.close();
var init = Kernel.ProcessManager.getProcess(1); // init has pid 1
init.signalHandler(SIGUSR1);
this.exit(0);
}
}
InitClass.prototype.tick = function() {