Merge pull request #2203 from RT-Thread/fix_romfs
[DFS][romfs] fix the mkrom issue when file/dir size zero
This commit is contained in:
commit
647852b04a
|
@ -1,10 +1,11 @@
|
|||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2019/01/13 Bernard code cleanup
|
||||
*/
|
||||
|
||||
#ifndef __DFS_ROMFS_H__
|
||||
|
@ -17,11 +18,11 @@
|
|||
|
||||
struct romfs_dirent
|
||||
{
|
||||
rt_uint32_t type; /* dirent type */
|
||||
rt_uint32_t type; /* dirent type */
|
||||
|
||||
const char *name; /* dirent name */
|
||||
const rt_uint8_t *data; /* file date ptr */
|
||||
rt_size_t size; /* file size */
|
||||
const char *name; /* dirent name */
|
||||
const rt_uint8_t *data; /* file date ptr */
|
||||
rt_size_t size; /* file size */
|
||||
};
|
||||
|
||||
int dfs_romfs_init(void);
|
||||
|
|
|
@ -40,6 +40,10 @@ class File(object):
|
|||
head = 'static const rt_uint8_t %s[] = {\n' % \
|
||||
(prefix + self.c_name)
|
||||
tail = '\n};'
|
||||
|
||||
if self.entry_size == 0:
|
||||
return ''
|
||||
|
||||
return head + ','.join(('0x%02x' % ord(i) for i in self._data)) + tail
|
||||
|
||||
@property
|
||||
|
@ -118,23 +122,31 @@ class Folder(object):
|
|||
It is recursive.'''
|
||||
# make the current dirent
|
||||
# static is good. Only root dirent is global visible.
|
||||
if self.entry_size == 0:
|
||||
return ''
|
||||
|
||||
dhead = 'static const struct romfs_dirent %s[] = {\n' % (prefix + self.c_name)
|
||||
dtail = '\n};'
|
||||
body_fmt = ' {{{type}, "{name}", (rt_uint8_t *){data}, sizeof({data})/sizeof({data}[0])}}'
|
||||
body_fmt0= ' {{{type}, "{name}", RT_NULL, 0}}'
|
||||
# prefix of children
|
||||
cpf = prefix+self.c_name
|
||||
body_li = []
|
||||
payload_li = []
|
||||
for c in self._children:
|
||||
entry_size = c.entry_size
|
||||
if isinstance(c, File):
|
||||
tp = 'ROMFS_DIRENT_FILE'
|
||||
elif isinstance(c, Folder):
|
||||
tp = 'ROMFS_DIRENT_DIR'
|
||||
else:
|
||||
assert False, 'Unkown instance:%s' % str(c)
|
||||
body_li.append(body_fmt.format(type=tp,
|
||||
name=c.name,
|
||||
data=cpf+c.c_name))
|
||||
if entry_size == 0:
|
||||
body_li.append(body_fmt0.format(type=tp, name = c.name))
|
||||
else:
|
||||
body_li.append(body_fmt.format(type=tp,
|
||||
name=c.name,
|
||||
data=cpf+c.c_name))
|
||||
payload_li.append(c.c_data(prefix=cpf))
|
||||
|
||||
# All the data we need is defined in payload so we should append the
|
Loading…
Reference in New Issue