Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
09d35afd
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
09d35afd
编写于
9月 12, 2018
作者:
S
Shi Lei
提交者:
Michal Privoznik
9月 12, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
util: file: introduce VIR_AUTOCLOSE macro to close fd of the file automatically
Signed-off-by:
N
Shi Lei
<
shi_lei@massclouds.com
>
上级
7ea73429
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
2 deletion
+16
-2
src/util/virfile.h
src/util/virfile.h
+16
-2
未找到文件。
src/util/virfile.h
浏览文件 @
09d35afd
...
...
@@ -54,6 +54,11 @@ int virFileClose(int *fdptr, virFileCloseFlags flags)
int
virFileFclose
(
FILE
**
file
,
bool
preserve_errno
)
ATTRIBUTE_RETURN_CHECK
;
FILE
*
virFileFdopen
(
int
*
fdptr
,
const
char
*
mode
)
ATTRIBUTE_RETURN_CHECK
;
static
inline
void
virForceCloseHelper
(
int
*
fd
)
{
ignore_value
(
virFileClose
(
fd
,
VIR_FILE_CLOSE_PRESERVE_ERRNO
));
}
/* For use on normal paths; caller must check return value,
and failure sets errno per close. */
# define VIR_CLOSE(FD) virFileClose(&(FD), 0)
...
...
@@ -64,8 +69,7 @@ FILE *virFileFdopen(int *fdptr, const char *mode) ATTRIBUTE_RETURN_CHECK;
/* For use on cleanup paths; errno is unaffected by close,
and no return value to worry about. */
# define VIR_FORCE_CLOSE(FD) \
ignore_value(virFileClose(&(FD), VIR_FILE_CLOSE_PRESERVE_ERRNO))
# define VIR_FORCE_CLOSE(FD) virForceCloseHelper(&(FD))
# define VIR_FORCE_FCLOSE(FILE) ignore_value(virFileFclose(&(FILE), true))
/* Similar VIR_FORCE_CLOSE() but ignores EBADF errors since they are expected
...
...
@@ -80,6 +84,16 @@ FILE *virFileFdopen(int *fdptr, const char *mode) ATTRIBUTE_RETURN_CHECK;
VIR_FILE_CLOSE_PRESERVE_ERRNO | \
VIR_FILE_CLOSE_DONT_LOG))
/**
* VIR_AUTOCLOSE:
*
* Macro to automatically force close the fd by calling virForceCloseHelper
* when the fd goes out of scope. It's used to eliminate VIR_FORCE_CLOSE
* in cleanup sections.
*/
# define VIR_AUTOCLOSE __attribute__((cleanup(virForceCloseHelper))) int
/* Opaque type for managing a wrapper around a fd. */
struct
_virFileWrapperFd
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录