X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fcore%2Fluasrc%2Ffs.lua;fp=libs%2Fcore%2Fluasrc%2Ffs.lua;h=5c1f2a051b4ad1d2bdd63c0615c0fcc56d25a747;hp=0000000000000000000000000000000000000000;hb=d35a620e9f5665a94967f4bd02c93581a1dd7e00;hpb=5df565faba5eb0c26a7ce0e2d6e9092bf71cb1e8 diff --git a/libs/core/luasrc/fs.lua b/libs/core/luasrc/fs.lua new file mode 100644 index 000000000..5c1f2a051 --- /dev/null +++ b/libs/core/luasrc/fs.lua @@ -0,0 +1,129 @@ +--[[ +LuCI - Filesystem tools + +Description: +A module offering often needed filesystem manipulation functions + +FileId: +$Id$ + +License: +Copyright 2008 Steven Barth + +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. + +]]-- + +module("luci.fs", package.seeall) + +require("posix") + +-- Glob +glob = posix.glob + +-- Checks whether a file exists +function isfile(filename) + local fp = io.open(filename, "r") + if fp then fp:close() end + return fp ~= nil +end + +-- Returns the content of file +function readfile(filename) + local fp, err = io.open(filename) + + if fp == nil then + return nil, err + end + + local data = fp:read("*a") + fp:close() + return data +end + +-- Writes given data to a file +function writefile(filename, data) + local fp, err = io.open(filename, "w") + + if fp == nil then + return nil, err + end + + fp:write(data) + fp:close() + + return true +end + +-- Returns the file modification date/time of "path" +function mtime(path) + return posix.stat(path, "mtime") +end + +-- basename wrapper +basename = posix.basename + +-- dirname wrapper +dirname = posix.dirname + +-- dir wrapper +dir = posix.dir + +-- wrapper for posix.mkdir +function mkdir(path, recursive) + if recursive then + local base = "." + + if path:sub(1,1) == "/" then + base = "" + path = path:gsub("^/+","") + end + + for elem in path:gmatch("([^/]+)/*") do + base = base .. "/" .. elem + + local stat = posix.stat( base ) + + if not stat then + local stat, errmsg, errno = posix.mkdir( base ) + + if type(stat) ~= "number" or stat ~= 0 then + return stat, errmsg, errno + end + else + if stat.type ~= "directory" then + return nil, base .. ": File exists", 17 + end + end + end + + return 0 + else + return posix.mkdir( path ) + end +end + +-- Alias for posix.rmdir +rmdir = posix.rmdir + +-- Alias for posix.stat +stat = posix.stat + +-- Alias for posix.chmod +chmod = posix.chmod + +-- Alias for posix.link +link = posix.link + +-- Alias for posix.unlink +unlink = posix.unlink