* ffluci/core: fs.lua: add wrapper for mkdir() to allow recursive creation of directory paths; whitespace cleanup

This commit is contained in:
Jo-Philipp Wich 2008-05-25 14:38:29 +00:00
parent e53d31062e
commit 0200ca38eb

View file

@ -12,9 +12,9 @@ Copyright 2008 Steven Barth <steven@midlink.org>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
@ -36,32 +36,32 @@ function isfile(filename)
local fp = io.open(filename, "r") local fp = io.open(filename, "r")
if fp then fp:close() end if fp then fp:close() end
return fp ~= nil return fp ~= nil
end end
-- Returns the content of file -- Returns the content of file
function readfile(filename) function readfile(filename)
local fp, err = io.open(filename) local fp, err = io.open(filename)
if fp == nil then if fp == nil then
return nil, err return nil, err
end end
local data = fp:read("*a") local data = fp:read("*a")
fp:close() fp:close()
return data return data
end end
-- Writes given data to a file -- Writes given data to a file
function writefile(filename, data) function writefile(filename, data)
local fp, err = io.open(filename, "w") local fp, err = io.open(filename, "w")
if fp == nil then if fp == nil then
return nil, err return nil, err
end end
fp:write(data) fp:write(data)
fp:close() fp:close()
return true return true
end end
@ -79,8 +79,39 @@ dirname = posix.dirname
-- dir wrapper -- dir wrapper
dir = posix.dir dir = posix.dir
-- Alias for posix.mkdir -- wrapper for posix.mkdir
mkdir = 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 -- Alias for posix.rmdir
rmdir = posix.rmdir rmdir = posix.rmdir
@ -95,4 +126,4 @@ chmod = posix.chmod
link = posix.link link = posix.link
-- Alias for posix.unlink -- Alias for posix.unlink
unlink = posix.unlink unlink = posix.unlink