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

View File

@ -355,6 +355,19 @@ int main(int argc, char **argv, char **envp)
{ {
declnest = 1; 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. /* Check for a keyword indicating the beginning of a statement.