Source Code Reformat

We have previously announced our intention to reformat the entire codebase into a more consistent style (see our roadmap document here: https://www.openssl.org/policies/roadmap.html)

Since then we have been busy working towards doing that. I’d like to make available for comment a sample reformat. So far I’ve run it for master and 1.0.2, but the current thinking is that this will also be applied to 1.0.1, 1.0.0 and 0.9.8 (this is necessary to significantly ease the maintenance overhead)

I’ve put the results of the reformat up on my github account here

The reformat of master is on the “sample-master-reformat” branch, and the 1.0.2 reformat is on “sample-1.0.2-reformat”.

The style itself is heavily influenced by the Linux Kernel Coding style.

Although there are some significant differences - most notably that we are using spaces not tabs for indents, and the indent depth is 4 characters not 8. We will be publishing our own style guide in due course.

I’m not looking to open any religious wars here - so I’m not looking for comments on the style itself (e.g. debates about whether 2, 4 or 8 character indents are better (we’ve already had those!)) - but I’m mainly seeking feedback on anywhere where the reformatting has failed. We’ve already looked of course…but sometimes many sets of eyes are better!

I’ve also made available the script that was used to do the reformatting. The script is called openssl-format-source and is in the util directory of the branches mentioned above. This script depends on GNU indent being available. It should be executed from the root of the source tree as follows:

util/openssl-format-source -v -c .

There are also some one-off manual tweaks (both before and after running the script) that need to be done which are present in the sample reformat branches. These are related to multi-line comments which have their own internal formatting - these aren’t handled too well. The manual steps should be a one-off exercise though. The hope is that we will be able to re-run the script at regular intervals.