From a15f693f93ea8800dcf7f55d2a5208ad6e42f77d Mon Sep 17 00:00:00 2001 From: Lisa Milne Date: Mon, 13 Nov 2023 17:00:39 +1000 Subject: [PATCH] chmod() --- clite/core.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/clite/core.js b/clite/core.js index aa0588c..6d9f653 100644 --- a/clite/core.js +++ b/clite/core.js @@ -679,8 +679,26 @@ clite.io = { return clite.io.fstat(fd); }, clite.io.fchmod = function(fd,mode) { - // TODO: actual chmod - return false; + if (fd.node.uid != clite.user.getUID()) + return false; + if (typeof mode !== 'string') + return false; + if (mode.length == 9) { + var c = fd.node.perms[0]; + fd.node.perms = c+mode; + }else if (mode.length != 10) { + return false; + } + if (fd.node.data.isdev) { + fd.node.perms = 'c'+mode.substring(1); + }else if (fd.node.data.isdir) { + fd.node.perms = 'd'+mode.substring(1); + }else if (fd.node.data.islink) { + fd.node.perms = 'l'+mode.substring(1); + }else{ + fd.node.perms = '-'+mode.substring(0); + } + return true; } clite.io.chmod = function(path,mode) { var fd = getFileDes(path,true,false); @@ -753,7 +771,7 @@ clite.vfs = { vfsdata.fs = mkNode(); vfsdata.fs.data.content = []; vfsdata.fs.data.isdir = true; - vfsdata.fs.perms[0] = 'd'; + vfsdata.fs.perms = 'drwxr-xr-x'; clite.vfs.getApi = function() { if (clite.user.getUID() == 0)