---
name: "ansi2knr"
section: "1"
platform: "linux"
package: "dgs"
version: "0.5.9.1+000216-6"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/ansi2knr"
---

# ansi2knr(1)

convert ANSI C to Kernighan & Ritchie C

## NAME

ansi2knr - convert ANSI C to Kernighan & Ritchie C

## SYNOPSIS

**ansi2knr** \[**--filename** *filename*\] \[*input\_file* \[*output\_file*\]\]\

## DESCRIPTION

**--filename** provides the file name for the #line directive in the output, overriding *input\_file* (if present).

If no *input\_file* is supplied, input is read from stdin.

If no *output\_file* is supplied, output goes to stdout.

There are no error messages.

**ansi2knr** recognizes function definitions by seeing a non-keyword identifier at the left margin, followed by a left parenthesis, with a right parenthesis as the last character on the line, and with a left brace as the first token on the following line (ignoring possible intervening comments).  It will recognize a multi-line header provided that no intervening line ends with a left or right brace or a semicolon.  These algorithms ignore whitespace and comments, except that the function name must be the first thing on the line.

The following constructs will confuse it:\
\
      \- Any other construct that starts at the left margin and follows the above syntax (such as a macro or function call).\
\
      \- Some macros that tinker with the syntax of the function header.

The --varargs switch is obsolete, and is recognized only for backwards compatibility.  The present version of **ansi2knr** will always attempt to convert a ... argument to va\_alist and va\_dcl.

## AUTHOR

L. Peter Deutsch \<ghost@aladdin.com\> wrote the original ansi2knr and continues to maintain the current version; most of the code in the current version is his work.  ansi2knr also includes contributions by Francois Pinard \<pinard@iro.umontreal.ca\> and Jim Avera \<jima@netcom.com\>.
