NAME
knfmt —
    kernel normal form formatter
SYNOPSIS
knfmt | 
    [-dis] [file ...] | 
  
knfmt | 
    [-Ddis] | 
  
DESCRIPTION
The knfmt utility formats source code
    files to conform to the Kernel Normal Form (KNF) in a best effort fashion,
    see style(9).
The options are as follows:
-D- Only format changed lines extracted from a unified diff read from standard input.
 -d- Produce a diff for each given file.
 -i- In place edit of file.
 -s- Simplify the source code.
 - file
 - One or many files to format. If omitted, defaults to reading from standard input.
 
In addition, knfmt is also interoperable
    with clang-format. A subset of the available style options found in a
    .clang-format file located in any directory along
    the current working directory is honored. Some style options are exclusive
    to knfmt and not supported by clang-format,
    annotated as extensions. The supported style options and corresponding
    values are as follows:
AlignAfterOpenBracket- Horizontally align arguments enclosed in parenthesis.
    
Align- Align arguments enclosed in parenthesis.
        
some_long_function(argument1, argument2);
 DontAlign- Do not align, instead indent arguments using
          
ContinuationIndentWidth. (default)some_long_function(argument1, argument2); AlwaysBreak- Not supported, interpreted as 
DontAlign. BlockIndent- Not supported, interpreted as 
DontAlign. 
 AlignEscapedNewlines- Align backslashes in preprocessor macro definitions spanning multiple
      lines.
    
DontAlign- Do not align backslashes.
        
#define A \ int x; \ int y
 Left- Not supported, interpreted as 
DontAlign. Right- Align backslashes to the right-most column with respect to
          
ColumnLimit. (default)#define A \ int x; \ int y
 
 AlignOperands- Horizontally align operands of binary and ternary expressions.
    
DontAlign- Do not align, instead indent arguments using
          
ContinuationIndentWidth. (default)int x = 11111111 + 22222222; Align- Align operands of binary and ternary expressions.
        
int x = 11111111 + 22222222;When
BreakBeforeBinaryOperatorsequalsNonAssignment, the operator is aligned with the operand on the previous line.int x = 11111111 + 22222222; AlignAfterOperator- Not supported, interpreted as 
DontAlign. 
 AlwaysBreakAfterReturnType- Break after the return type for function prototypes and definitions.
    
None- Never break after the function return type.
        
void prototype(void); void definition(void) { } All- Always break after the function return type.
        
void prototype(void); void definition(void) { } TopLevel- Not supported, interpreted as 
All. AllDefinitions- Always break after the return type for function definitions. (default)
        
void prototype(void); int definition(void) { } TopLevelDefinitions- Not supported, interpreted as
        
AllDefinitions. 
 BitFieldColonSpacing- Insert spaces around bitfields.
    
Both- Add spaces on each side of the colon.
        
unsigned int field : 1;
 None- Do not insert spaces. (default)
        
unsigned int field:1;
 Before- Add space before the colon.
        
unsigned int field :1;
 After- Add space after the colon.
        
unsigned int field: 1;
 
 BraceWrapping- Break before or after braces in certain contexts. The supported nested
      options are as follows:
    
AfterEnum- Break before braces in enum definitions.
        
true- 
            
enum e { } false- 
            
enum e { } 
 AfterFunction- Break before braces in function definitions.
        
true- 
            
int main(void) { } false- 
            
int main(void) { } 
 AfterStruct- Break before braces in struct definitions.
        
true- 
            
struct s { } false- 
            
struct s { } 
 AfterUnion- Break before braces in union definitions.
        
true- 
            
union u { } false- 
            
union u { } 
 AfterCaseLabel AfterClass AfterControlStatement AfterEnumAfterExternBlock AfterFunction AfterNamespace AfterObjCDeclarationAfterStruct AfterUnion BeforeCatch BeforeElse BeforeLambdaBody BeforeWhileIndentBraces SplitEmptyFunction SplitEmptyNamespace SplitEmptyRecord- Not supported.
 
 BreakBeforeBinaryOperators- Break before or after binary operators.
    
None- Break after binary operators. (default)
        
int x = 11111111 + 22222222; NonAssignment- Break before non assignment operators.
        
int x = 11111111 + 22222222; All- Break before all binary operators.
        
int x = 11111111 + 22222222; 
 BreakBeforeBraces- Brace break style.
    
Linux- Enables 
AfterFunction, seeBraceWrapping. (default) Custom- Breaks dictated by 
BraceWrapping. Allman Attach GNU Mozilla Stroustrup WebKit Whitesmiths- Not supported, interpreted as 
Custom. 
 BreakBeforeTernaryOperators- Break before or after ternary operators.
    
true- Break before ternary operators.
        
condition ? true : false; false- Break after ternary operators. (default)
        
condition ? true : false; 
 ColumnLimit- Maximum number of allowed columns per line. (default 80)
 ContinuationIndentWidth- Indentation width for line continuations. (default 4)
 IncludeBlocks- Treatment of blocks of includes.
    
Merge- Not supported.
 Preserve- Preserve blocks of includes. (default)
 Regroup- Regroup blocks of includes according to
          
IncludeCategories. 
 IncludeCategories- Rules used to group includes into blocks.
 IncludeGuards(extension)- List of headers in which include guards must be present. The supported
      nested options are as follows:
    
Regex- Extended regular expression used to determine if file denotes a header, see regex(3).
 PathComponents- Number of path components used to construct header include guards.
        
>0- 
            
$ cat libks/vector.h #ifndef LIBKS_VECTOR_H #define LIBKS_VECTOR_H #endif /* !LIBKS_VECTOR_H */
 1- (default)
            
$ cat libks/vector.h #ifndef VECTOR_H #define VECTOR_H #endif /* !VECTOR_H */
 
 
 IndentWidth- Indentation width. (default 8)
 SortIncludes- Sort blocks of preprocessor include directives.
    
Never- Do not sort includes. (default)
 CaseSensitive- Sort includes in a case sensitive manner.
 CaseInsensitive- Not supported, interpreted as 
Never. 
 UseTab- Use tabs for indentation.
    
Never- Do not use tabs for indentation.
 ForIndentation- Not supported, interpreted as 
Always. ForContinuationAndIndentation- Not supported, interpreted as 
Always. AlignWithSpaces- Not supported, interpreted as 
Always. Always- Use tabs for indentation. (default)
 
 
DIAGNOSTICS
The knfmt utility exits 0 on
    success, and >0 if an error occurs.
SEE ALSO
AUTHORS
Anton Lindqvist <anton@basename.se>