1 Star 0 Fork 1

mysnapcore/mysnapd

forked from tupelo-shen/mysnapd 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
unlink.go 1.95 KB
一键复制 编辑 原始数据 按行查看 历史
tupelo-shen 提交于 3年前 . fix: osutil 4 commit
// -*- Mode: Go; indent-tabs-mode: t -*-
/*
* Copyright (C) 2018 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package osutil
import (
"os"
"syscall"
"gitee.com/mysnapcore/mysnapd/osutil/sys"
)
// UnlinkMany removes multiple files from a single directory.
//
// If dirname is not a directory, this will fail.
//
// This will abort at the first removal error (but ENOENT is ignored).
//
// Filenames must refer to files. They don't necessarily have to be
// relative paths to the given dirname, but if they aren't why are you
// using this function?
//
// Errors are *os.PathError, for convenience
func UnlinkMany(dirname string, filenames []string) error {
dirfd, err := syscall.Open(dirname, syscall.O_RDONLY|syscall.O_CLOEXEC|syscall.O_DIRECTORY|sys.O_PATH, 0)
if err != nil {
return &os.PathError{
Op: "open",
Path: dirname,
Err: err,
}
}
defer syscall.Close(dirfd)
return unlinkMany(dirfd, filenames)
}
func unlinkMany(dirfd int, filenames []string) error {
var err error
for _, filename := range filenames {
if err = sysUnlinkat(dirfd, filename); err != nil && err != syscall.ENOENT {
return &os.PathError{
Op: "remove",
Path: filename,
Err: err,
}
}
}
return nil
}
// UnlinkManyAt is like UnlinkMany but takes an open directory *os.File
// instead of a dirname.
func UnlinkManyAt(dir *os.File, filenames []string) error {
return unlinkMany(int(dir.Fd()), filenames)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/mysnapcore/mysnapd.git
git@gitee.com:mysnapcore/mysnapd.git
mysnapcore
mysnapd
mysnapd
v0.1.0

搜索帮助