update 04-11 12:04
This commit is contained in:
parent
8bdd670389
commit
fd31f680e7
|
@ -0,0 +1,49 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=luci-lib-fs
|
||||||
|
PKG_VERSION:=1.0
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/luci-lib-fs
|
||||||
|
SUBMENU:=Lua
|
||||||
|
SECTION:=lang
|
||||||
|
CATEGORY:=Languages
|
||||||
|
TITLE:=luci-lib-fs
|
||||||
|
PKGARCH:=all
|
||||||
|
URL:=https://github.com/lbthomsen/openwrt-luci
|
||||||
|
DEPENDS:=+luci +luci-lib-nixio
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/luci-lib-fs/description
|
||||||
|
luci-lib-fs
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Configure
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Install
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
define Package/luci-lib-fs/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/lua/luci
|
||||||
|
$(CP) ./files/*.lua $(1)/usr/lib/lua/luci
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,luci-lib-fs))
|
|
@ -0,0 +1,244 @@
|
||||||
|
--[[
|
||||||
|
LuCI - Filesystem tools
|
||||||
|
|
||||||
|
Description:
|
||||||
|
A module offering often needed filesystem manipulation functions
|
||||||
|
|
||||||
|
FileId:
|
||||||
|
$Id$
|
||||||
|
|
||||||
|
License:
|
||||||
|
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local io = require "io"
|
||||||
|
local os = require "os"
|
||||||
|
local ltn12 = require "luci.ltn12"
|
||||||
|
local fs = require "nixio.fs"
|
||||||
|
local nutil = require "nixio.util"
|
||||||
|
|
||||||
|
local type = type
|
||||||
|
|
||||||
|
--- LuCI filesystem library.
|
||||||
|
module "luci.fs"
|
||||||
|
|
||||||
|
--- Test for file access permission on given path.
|
||||||
|
-- @class function
|
||||||
|
-- @name access
|
||||||
|
-- @param str String value containing the path
|
||||||
|
-- @return Number containing the return code, 0 on sucess or nil on error
|
||||||
|
-- @return String containing the error description (if any)
|
||||||
|
-- @return Number containing the os specific errno (if any)
|
||||||
|
access = fs.access
|
||||||
|
|
||||||
|
--- Evaluate given shell glob pattern and return a table containing all matching
|
||||||
|
-- file and directory entries.
|
||||||
|
-- @class function
|
||||||
|
-- @name glob
|
||||||
|
-- @param filename String containing the path of the file to read
|
||||||
|
-- @return Table containing file and directory entries or nil if no matches
|
||||||
|
-- @return String containing the error description (if no matches)
|
||||||
|
-- @return Number containing the os specific errno (if no matches)
|
||||||
|
function glob(...)
|
||||||
|
local iter, code, msg = fs.glob(...)
|
||||||
|
if iter then
|
||||||
|
return nutil.consume(iter)
|
||||||
|
else
|
||||||
|
return nil, code, msg
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Checks wheather the given path exists and points to a regular file.
|
||||||
|
-- @param filename String containing the path of the file to test
|
||||||
|
-- @return Boolean indicating wheather given path points to regular file
|
||||||
|
function isfile(filename)
|
||||||
|
return fs.stat(filename, "type") == "reg"
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Checks wheather the given path exists and points to a directory.
|
||||||
|
-- @param dirname String containing the path of the directory to test
|
||||||
|
-- @return Boolean indicating wheather given path points to directory
|
||||||
|
function isdirectory(dirname)
|
||||||
|
return fs.stat(dirname, "type") == "dir"
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Read the whole content of the given file into memory.
|
||||||
|
-- @param filename String containing the path of the file to read
|
||||||
|
-- @return String containing the file contents or nil on error
|
||||||
|
-- @return String containing the error message on error
|
||||||
|
readfile = fs.readfile
|
||||||
|
|
||||||
|
--- Write the contents of given string to given file.
|
||||||
|
-- @param filename String containing the path of the file to read
|
||||||
|
-- @param data String containing the data to write
|
||||||
|
-- @return Boolean containing true on success or nil on error
|
||||||
|
-- @return String containing the error message on error
|
||||||
|
writefile = fs.writefile
|
||||||
|
|
||||||
|
--- Copies a file.
|
||||||
|
-- @param source Source file
|
||||||
|
-- @param dest Destination
|
||||||
|
-- @return Boolean containing true on success or nil on error
|
||||||
|
copy = fs.datacopy
|
||||||
|
|
||||||
|
--- Renames a file.
|
||||||
|
-- @param source Source file
|
||||||
|
-- @param dest Destination
|
||||||
|
-- @return Boolean containing true on success or nil on error
|
||||||
|
rename = fs.move
|
||||||
|
|
||||||
|
--- Get the last modification time of given file path in Unix epoch format.
|
||||||
|
-- @param path String containing the path of the file or directory to read
|
||||||
|
-- @return Number containing the epoch time or nil on error
|
||||||
|
-- @return String containing the error description (if any)
|
||||||
|
-- @return Number containing the os specific errno (if any)
|
||||||
|
function mtime(path)
|
||||||
|
return fs.stat(path, "mtime")
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Set the last modification time of given file path in Unix epoch format.
|
||||||
|
-- @param path String containing the path of the file or directory to read
|
||||||
|
-- @param mtime Last modification timestamp
|
||||||
|
-- @param atime Last accessed timestamp
|
||||||
|
-- @return 0 in case of success nil on error
|
||||||
|
-- @return String containing the error description (if any)
|
||||||
|
-- @return Number containing the os specific errno (if any)
|
||||||
|
function utime(path, mtime, atime)
|
||||||
|
return fs.utimes(path, atime, mtime)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Return the last element - usually the filename - from the given path with
|
||||||
|
-- the directory component stripped.
|
||||||
|
-- @class function
|
||||||
|
-- @name basename
|
||||||
|
-- @param path String containing the path to strip
|
||||||
|
-- @return String containing the base name of given path
|
||||||
|
-- @see dirname
|
||||||
|
basename = fs.basename
|
||||||
|
|
||||||
|
--- Return the directory component of the given path with the last element
|
||||||
|
-- stripped of.
|
||||||
|
-- @class function
|
||||||
|
-- @name dirname
|
||||||
|
-- @param path String containing the path to strip
|
||||||
|
-- @return String containing the directory component of given path
|
||||||
|
-- @see basename
|
||||||
|
dirname = fs.dirname
|
||||||
|
|
||||||
|
--- Return a table containing all entries of the specified directory.
|
||||||
|
-- @class function
|
||||||
|
-- @name dir
|
||||||
|
-- @param path String containing the path of the directory to scan
|
||||||
|
-- @return Table containing file and directory entries or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
function dir(...)
|
||||||
|
local iter, code, msg = fs.dir(...)
|
||||||
|
if iter then
|
||||||
|
local t = nutil.consume(iter)
|
||||||
|
t[#t+1] = "."
|
||||||
|
t[#t+1] = ".."
|
||||||
|
return t
|
||||||
|
else
|
||||||
|
return nil, code, msg
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Create a new directory, recursively on demand.
|
||||||
|
-- @param path String with the name or path of the directory to create
|
||||||
|
-- @param recursive Create multiple directory levels (optional, default is true)
|
||||||
|
-- @return Number with the return code, 0 on sucess or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
function mkdir(path, recursive)
|
||||||
|
return recursive and fs.mkdirr(path) or fs.mkdir(path)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Remove the given empty directory.
|
||||||
|
-- @class function
|
||||||
|
-- @name rmdir
|
||||||
|
-- @param path String containing the path of the directory to remove
|
||||||
|
-- @return Number with the return code, 0 on sucess or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
rmdir = fs.rmdir
|
||||||
|
|
||||||
|
local stat_tr = {
|
||||||
|
reg = "regular",
|
||||||
|
dir = "directory",
|
||||||
|
lnk = "link",
|
||||||
|
chr = "character device",
|
||||||
|
blk = "block device",
|
||||||
|
fifo = "fifo",
|
||||||
|
sock = "socket"
|
||||||
|
}
|
||||||
|
--- Get information about given file or directory.
|
||||||
|
-- @class function
|
||||||
|
-- @name stat
|
||||||
|
-- @param path String containing the path of the directory to query
|
||||||
|
-- @return Table containing file or directory properties or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
function stat(path, key)
|
||||||
|
local data, code, msg = fs.stat(path)
|
||||||
|
if data then
|
||||||
|
data.mode = data.modestr
|
||||||
|
data.type = stat_tr[data.type] or "?"
|
||||||
|
end
|
||||||
|
return key and data and data[key] or data, code, msg
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Set permissions on given file or directory.
|
||||||
|
-- @class function
|
||||||
|
-- @name chmod
|
||||||
|
-- @param path String containing the path of the directory
|
||||||
|
-- @param perm String containing the permissions to set ([ugoa][+-][rwx])
|
||||||
|
-- @return Number with the return code, 0 on sucess or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
chmod = fs.chmod
|
||||||
|
|
||||||
|
--- Create a hard- or symlink from given file (or directory) to specified target
|
||||||
|
-- file (or directory) path.
|
||||||
|
-- @class function
|
||||||
|
-- @name link
|
||||||
|
-- @param path1 String containing the source path to link
|
||||||
|
-- @param path2 String containing the destination path for the link
|
||||||
|
-- @param symlink Boolean indicating wheather to create a symlink (optional)
|
||||||
|
-- @return Number with the return code, 0 on sucess or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
function link(src, dest, sym)
|
||||||
|
return sym and fs.symlink(src, dest) or fs.link(src, dest)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Remove the given file.
|
||||||
|
-- @class function
|
||||||
|
-- @name unlink
|
||||||
|
-- @param path String containing the path of the file to remove
|
||||||
|
-- @return Number with the return code, 0 on sucess or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
unlink = fs.unlink
|
||||||
|
|
||||||
|
--- Retrieve target of given symlink.
|
||||||
|
-- @class function
|
||||||
|
-- @name readlink
|
||||||
|
-- @param path String containing the path of the symlink to read
|
||||||
|
-- @return String containing the link target or nil on error
|
||||||
|
-- @return String containing the error description on error
|
||||||
|
-- @return Number containing the os specific errno on error
|
||||||
|
readlink = fs.readlink
|
Loading…
Reference in New Issue