tools/nxstyle.c: Add check for multiple definitions of local variables on a line.

This commit is contained in:
Gregory Nutt 2019-02-14 18:33:23 -06:00
parent ee8b0a076c
commit b5e6af60ac
2 changed files with 25 additions and 10 deletions

View file

@ -148,14 +148,14 @@ int nx_vopen(FAR const char *path, int oflags, va_list ap)
#if !defined(CONFIG_DISABLE_MOUNTPOINT) && \
!defined(CONFIG_DISABLE_PSEUDOFS_OPERATIONS)
/* If the inode is block driver, then we may return a character driver
* proxy for the block driver. block_proxy() will instantiate a BCH
* character driver wrapper around the block driver, open(), then
* unlink() the character driver. On success, block_proxy() will
* return the file descriptor of the opened character driver.
*
* NOTE: This will recurse to open the character driver proxy.
*/
/* If the inode is block driver, then we may return a character driver
* proxy for the block driver. block_proxy() will instantiate a BCH
* character driver wrapper around the block driver, open(), then
* unlink() the character driver. On success, block_proxy() will
* return the file descriptor of the opened character driver.
*
* NOTE: This will recurse to open the character driver proxy.
*/
if (INODE_IS_BLOCK(inode) || INODE_IS_MTD(inode))
{
@ -186,7 +186,8 @@ int nx_vopen(FAR const char *path, int oflags, va_list ap)
*/
#ifndef CONFIG_DISABLE_MOUNTPOINT
if ((!INODE_IS_DRIVER(inode) && !INODE_IS_MOUNTPT(inode)) || !inode->u.i_ops)
if ((!INODE_IS_DRIVER(inode) && !INODE_IS_MOUNTPT(inode)) ||
!inode->u.i_ops)
#else
if (!INODE_IS_DRIVER(inode) || !inode->u.i_ops)
#endif
@ -272,7 +273,8 @@ int nx_vopen(FAR const char *path, int oflags, va_list ap)
*/
fd = (int)OPEN_GETFD(ret);
DEBUGASSERT((unsigned)fd < (CONFIG_NFILE_DESCRIPTORS + CONFIG_NSOCKET_DESCRIPTORS));
DEBUGASSERT((unsigned)fd < (CONFIG_NFILE_DESCRIPTORS +
CONFIG_NSOCKET_DESCRIPTORS));
}
#endif

View file

@ -355,6 +355,19 @@ int main(int argc, char **argv, char **envp)
{
declnest = 1;
}
/* Check for multiple definitions of local variables on the line.
* NOTE: Will miss multiple global variable definitions on a line,
* but this is because the heuristic is not smart enough to
* distingush a global variable from a function prototype.
*/
if (indent > 0 && strchr(&line[indent], ',') != NULL)
{
fprintf(stderr,
"Multiple data definitions on line %d\n",
lineno);
}
}
/* Check for a keyword indicating the beginning of a statement.