diff --git a/tools/nxstyle.c b/tools/nxstyle.c index 2c736b9146..358aefa9e7 100644 --- a/tools/nxstyle.c +++ b/tools/nxstyle.c @@ -1084,6 +1084,7 @@ int main(int argc, char **argv, char **envp) bool bfunctions; /* True: In private or public functions */ bool bstatm; /* True: This line is beginning of a statement */ bool bfor; /* True: This line is beginning of a 'for' statement */ + bool bif; /* True: This line is beginning of a 'if' statement */ bool bswitch; /* True: Within a switch statement */ bool bstring; /* True: Within a string */ bool bquote; /* True: Backslash quoted character next */ @@ -1256,6 +1257,7 @@ int main(int argc, char **argv, char **envp) bstatm = false; /* True: This line is beginning of a * statement */ bfor = false; /* REVISIT: Implies for() is all on one line */ + bif = false; /* True: This line is beginning of a 'if' statement */ /* If we are not in a comment, then this certainly is not a right-hand * comment. @@ -1772,7 +1774,10 @@ int main(int argc, char **argv, char **envp) /* Check for a single line comment */ linelen = strlen(line); - if (linelen >= 5) /* Minimum is slash, star, star, slash, newline */ + + /* Minimum is slash, star, star, slash, newline */ + + if (linelen >= 5) { lptr = strstr(line, "*/"); if (line[indent] == '/' && line[indent + 1] == '*' && @@ -1964,7 +1969,6 @@ int main(int argc, char **argv, char **envp) strncmp(&line[indent], "do ", 3) == 0 || strncmp(&line[indent], "else ", 5) == 0 || strncmp(&line[indent], "goto ", 5) == 0 || - strncmp(&line[indent], "if ", 3) == 0 || strncmp(&line[indent], "return ", 7) == 0 || #if 0 /* Doesn't follow pattern */ strncmp(&line[indent], "switch ", 7) == 0 || @@ -1974,6 +1978,12 @@ int main(int argc, char **argv, char **envp) bstatm = true; } + else if(strncmp(&line[indent], "if ", 3) == 0) + { + bif = true; + bstatm = true; + } + /* Spacing works a little differently for and switch statements */ else if (strncmp(&line[indent], "for ", 4) == 0) @@ -1989,12 +1999,17 @@ int main(int argc, char **argv, char **envp) /* Also check for C keywords with missing white space */ else if (strncmp(&line[indent], "do(", 3) == 0 || - strncmp(&line[indent], "if(", 3) == 0 || strncmp(&line[indent], "while(", 6) == 0) { ERROR("Missing whitespace after keyword", lineno, n); bstatm = true; } + else if (strncmp(&line[indent], "if(", 3) == 0) + { + ERROR("Missing whitespace after keyword", lineno, n); + bif = true; + bstatm = true; + } else if (strncmp(&line[indent], "for(", 4) == 0) { ERROR("Missing whitespace after keyword", lineno, n); @@ -2584,7 +2599,7 @@ int main(int argc, char **argv, char **envp) /* Check for inappropriate space around parentheses */ - if (line[n + 1] == ' ') /* && !bfor */ + if (line[n + 1] == ' ') { ERROR("Space follows left parenthesis", lineno, n); } @@ -2596,11 +2611,11 @@ int main(int argc, char **argv, char **envp) /* Decrease the parenthetical nesting level */ if (pnest < 1) - { - ERROR("Unmatched right parentheses", lineno, n); - pnest = 0; - } - else + { + ERROR("Unmatched right parentheses", lineno, n); + pnest = 0; + } + else { pnest--; } @@ -2611,7 +2626,12 @@ int main(int argc, char **argv, char **envp) if (n > 0 && n != indent && line[n - 1] == ' ' && !bfor) { - ERROR("Space precedes right parenthesis", lineno, n); + ERROR("Space precedes right parenthesis", lineno, n); + } + + if (bif == true && pnest == 0 && line[n + 1] != '\n') + { + ERROR("If statement followed by garbage", lineno, n); } } break;