Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
47812782
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
9 个月 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
47812782
编写于
12月 03, 2021
作者:
O
openharmony_ci
提交者:
Gitee
12月 03, 2021
浏览文件
操作
浏览文件
下载
差异文件
!165 新增musl c库的realpath实现
Merge pull request !165 from SimonLi/master
上级
9b3c8ab0
94ec9673
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
86 addition
and
0 deletion
+86
-0
porting/liteos_m/kernel/BUILD.gn
porting/liteos_m/kernel/BUILD.gn
+1
-0
porting/liteos_m/kernel/src/misc/realpath.c
porting/liteos_m/kernel/src/misc/realpath.c
+85
-0
未找到文件。
porting/liteos_m/kernel/BUILD.gn
浏览文件 @
47812782
...
...
@@ -61,6 +61,7 @@ static_library(libc) {
"src/locale/c_locale.c",
"src/locale/langinfo.c",
"src/misc/dirname.c",
"src/misc/realpath.c",
"src/multibyte/internal.c",
"src/multibyte/mbtowc.c",
"src/multibyte/wcrtomb.c",
...
...
porting/liteos_m/kernel/src/misc/realpath.c
0 → 100755
浏览文件 @
47812782
/*
* Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
* Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <limits.h>
#include <errno.h>
#include <sys/stat.h>
/*
* LiteOS-M file system uses abs path
*/
static
unsigned
int
vfs_strnlen
(
const
char
*
str
,
size_t
maxlen
)
{
const
char
*
p
=
NULL
;
for
(
p
=
str
;
((
maxlen
--
!=
0
)
&&
(
*
p
!=
'\0'
));
++
p
)
{}
return
p
-
str
;
}
char
*
realpath
(
const
char
*
__restrict
path
,
char
*
__restrict
resolved_path
)
{
int
namelen
;
int
res
;
struct
stat
st
;
if
(
!*
path
)
{
errno
=
ENOENT
;
return
NULL
;
}
namelen
=
vfs_strnlen
(
path
,
PATH_MAX
);
if
(
!
namelen
)
{
errno
=
EINVAL
;
return
NULL
;
}
else
if
(
namelen
>=
PATH_MAX
)
{
errno
=
ENAMETOOLONG
;
return
NULL
;
}
// LiteOS-M file system uses abs path, so we just stat path and strcpy it.
if
(
stat
(
path
,
&
st
)
<
0
)
{
errno
=
EINVAL
;
return
NULL
;
}
res
=
strcpy_s
(
resolved_path
,
PATH_MAX
,
path
);
if
(
res
!=
0
)
{
errno
=
EINVAL
;
return
NULL
;
}
else
{
return
resolved_path
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录