luci-base: add lstat to fs
authorPaul Donald <redacted>
Tue, 10 Mar 2026 17:52:32 +0000 (18:52 +0100)
committerPaul Donald <redacted>
Tue, 10 Mar 2026 17:52:32 +0000 (18:52 +0100)
Add new user and group properties to stat result Object.

Signed-off-by: Paul Donald <redacted>
modules/luci-base/htdocs/luci-static/resources/fs.js

index 03048f4aafdfe1de8478828f0eb2670bd6fe2af6..20213bdbd37ec91fa6c8131f7a0b41ab749ba215 100644 (file)
@@ -17,6 +17,9 @@
  * @property {number} inode - Inode number
  * @property {number} uid - Numeric owner id
  * @property {number} gid - Numeric group id
+ * @property {string} user - User name of owner
+ * @property {string} group - Group name of owner
+ * @property {Object?} target - a dictionary of properties of any symlink target for `list` operation result entries
  */
 
 /**
@@ -40,6 +43,12 @@ const callFileStat = rpc.declare({
        params: [ 'path' ]
 });
 
+const callFileLStat = rpc.declare({
+       object: 'file',
+       method: 'lstat',
+       params: [ 'path' ]
+});
+
 const callFileRead = rpc.declare({
        object: 'file',
        method: 'read',
@@ -187,6 +196,23 @@ var FileSystem = baseclass.extend(/** @lends LuCI.fs.prototype */ {
                return callFileStat(path).then(handleRpcReply.bind(this, { '': {} }));
        },
 
+       /**
+        * Return symlink aware file stat information on the specified path. This
+        * call differs from stat in that it gives information about the symlink
+        * instead of following the symlink, whereby size is the length of the
+        * string of the symlink target path and file name.
+        *
+        * @param {string} path
+        * The filesystem path to lstat.
+        *
+        * @returns {Promise<LuCI.fs.FileStatEntry>}
+        * Returns a promise resolving to a stat detail object or
+        * rejecting with an error stating the failure reason.
+        */
+       lstat(path) {
+               return callFileLStat(path).then(handleRpcReply.bind(this, { '': {} }));
+       },
+
        /**
         * Read the contents of the given file and return them.
         * Note: this function is unsuitable for obtaining binary data.
git clone https://git.99rst.org/PROJECT