Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos A
提交
5db839ac
K
Kernel Liteos A
项目概览
OpenHarmony
/
Kernel Liteos A
1 年多 前同步成功
通知
461
Star
414
Fork
55
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos A
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5db839ac
编写于
6月 25, 2021
作者:
O
openharmony_ci
提交者:
Gitee
6月 25, 2021
浏览文件
操作
浏览文件
下载
差异文件
!362 修复在Liteos-a在FATFS中创建的文件夹在Ubuntu中不可见的BUG
Merge pull request !362 from Far/fatfs
上级
f4626985
a9fc1e0e
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
45 addition
and
15 deletion
+45
-15
fs/fat/os_adapt/fatfs.c
fs/fat/os_adapt/fatfs.c
+45
-15
未找到文件。
fs/fat/os_adapt/fatfs.c
浏览文件 @
5db839ac
...
...
@@ -251,11 +251,13 @@ static enum VnodeType fatfstype_2_vnodetype(BYTE type) {
}
}
static
FRESULT
init_cluster
(
DIR
*
dp_new
,
FATFS
*
fs
,
int
type
,
const
char
*
target
,
DWORD
*
clust
)
#define DIR_SIZE 32
static
FRESULT
init_cluster
(
DIR_FILE
*
pdfp
,
DIR
*
dp_new
,
FATFS
*
fs
,
int
type
,
const
char
*
target
,
DWORD
*
clust
)
{
FRESULT
result
;
BYTE
*
dir
=
NULL
;
QWORD
sect
;
DWORD
pclust
;
UINT
n
;
/* Allocate a new cluster */
...
...
@@ -285,8 +287,39 @@ static FRESULT init_cluster(DIR *dp_new, FATFS *fs, int type, const char *target
if
(
type
==
AM_LNK
&&
target
)
{
/* Write target to symlink */
strcpy_s
((
char
*
)
dir
,
SS
(
fs
),
target
);
}
else
{
/* Write the dir cluster */
mem_set
(
dir
,
0
,
SS
(
fs
));
mem_set
(
dir
+
DIR_Name
,
' '
,
11
);
/* Create "." entry */
dir
[
DIR_Name
]
=
'.'
;
dir
[
DIR_Attr
]
=
AM_DIR
;
st_clust
(
fs
,
dir
,
*
clust
);
mem_cpy
(
dir
+
DIR_SIZE
,
dir
,
DIR_SIZE
);
/* Create ".." entry */
dir
[
DIR_SIZE
+
1
]
=
'.'
;
/* Add extra "." */
pclust
=
pdfp
->
fno
.
sclst
;
if
(
fs
->
fs_type
==
FS_FAT32
&&
pclust
==
fs
->
dirbase
)
{
pclust
=
0
;
}
for
(
n
=
fs
->
csize
;
n
>
0
;
n
--
)
{
st_clust
(
fs
,
dir
+
DIR_SIZE
,
pclust
);
}
#ifndef LOSCFG_FS_FAT_VIRTUAL_PARTITION
fs
->
winsect
=
sect
++
;
fs
->
wflag
=
1
;
#else
PARENTFS
(
fs
)
->
winsect
=
sect
++
;
PARENTFS
(
fs
)
->
wflag
=
1
;
#endif
result
=
sync_window
(
fs
);
if
(
result
!=
FR_OK
)
{
remove_chain
(
&
(
dp_new
->
obj
),
*
clust
,
0
);
return
result
;
}
/* Rest of directory cluster should set to be zero */
if
(
type
==
AM_DIR
)
{
mem_set
(
dir
,
0
,
SS
(
fs
));
for
(
n
=
fs
->
csize
-
1
;
n
>
0
;
n
--
)
{
#ifndef LOSCFG_FS_FAT_VIRTUAL_PARTITION
fs
->
winsect
=
sect
++
;
fs
->
wflag
=
1
;
...
...
@@ -299,9 +332,6 @@ static FRESULT init_cluster(DIR *dp_new, FATFS *fs, int type, const char *target
remove_chain
(
&
(
dp_new
->
obj
),
*
clust
,
0
);
return
result
;
}
if
(
type
==
AM_LNK
)
{
/* No need to clean the rest sectors of the cluster for symlink */
break
;
}
}
...
...
@@ -366,7 +396,7 @@ static int fatfs_create_obj(struct Vnode *parent, const char *name, int mode, st
}
if
(
type
==
AM_DIR
||
type
==
AM_LNK
)
{
result
=
init_cluster
(
dp_new
,
fs
,
type
,
target
,
&
clust
);
result
=
init_cluster
(
d
fp
,
d
p_new
,
fs
,
type
,
target
,
&
clust
);
if
(
result
!=
FR_OK
)
{
goto
ERROR_UNLOCK
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录