Date: Tue, 18 Jul 2017 05:02:16 -0000 Options are now categorized explicitly into 2 groups:
* Customizable options -------------------- These are the object-like macros in `default_options.h.in'; they are given the prefix `CUSTOM_', and they can be overriden by the definitions provided by `custom_options.h' in the build directory. * Constant options ---------------- These are the object-like macros in `constant_options.h' and elsewhere; they are given the prefix `DROPBEAR_', and they are intended never to be overriden. In this way, it becomes very easy to identify the nature of the option, where it may or should be defined, and how it should be used. This refactoring can be accomplished entirely programmatically, by running the following shell commands: clean() { awk '{print $2}' | sort -u; } filter_options() { git grep -P "^#define\s+$1" "$2" | clean; } filter_defaults() { filter_options "$1" default_options.h.in; } initial_case() { read o; printf %s "$o"; } other_cases() { while read o; do printf '\|%s' "$o"; done; } cases() { initial_case; other_cases; } pattern='DROPBEAR_(?!DEFAULT_OPTIONS_H_)' options=$(filter_defaults "$pattern" | cut -c 10- | cases) script="s/\bDROPBEAR_\($options\)\b/CUSTOM_\1/g" options=$(filter_defaults '(?!DROPBEAR_|_)' | cases) script+=";s/\b\($options\)\b/CUSTOM_&/g" script+=';s/\b_PATH_\(TTY\|CP\)\b/CUSTOM_PATH_\1/g' pattern='(?!DROPBEAR_|LTM|IS)' options=$(filter_options "$pattern" constant_options.h | cases) script+=";s/\b\($options\)\b/DROPBEAR_&/g" script+=';s/\bIS_DROPBEAR_\(SERVER\|CLIENT\)\b/DROPBEAR_IS_\1/g' git ls-files | grep -v CHANGES | xargs sed -i "$script" get_whitespace_errors() { git diff --check | grep -v '^+'; } tab=$(printf \\t) fix() { sed -i "$2{s/[ ]*$tab/$tab/g;s/[ $tab]\{1,\}\$//}" "$1"; } parse() { while IFS=: read file line _; do fix "$file" "$line"; done; } get_whitespace_errors | parse It's way too much to check manually: $ git diff --shortstat 67 files changed, 763 insertions(+), 763 deletions(-) However, everything seems to build just fine! --- agentfwd.h | 8 +- algo.h | 8 +- buffer.c | 4 +- chansession.h | 6 +- cli-agentfwd.c | 4 +- cli-auth.c | 40 ++--- cli-authinteract.c | 10 +- cli-authpasswd.c | 12 +- cli-authpubkey.c | 14 +- cli-chansession.c | 4 +- cli-kex.c | 14 +- cli-main.c | 8 +- cli-runopts.c | 104 ++++++------ cli-session.c | 20 +-- cli-tcpfwd.c | 12 +- common-algo.c | 132 +++++++-------- common-channel.c | 18 +- common-kex.c | 48 +++--- common-runopts.c | 4 +- common-session.c | 36 ++-- constant_options.h | 98 +++++------ crypto_desc.c | 6 +- dbrandom.c | 12 +- dbutil.c | 4 +- dbutil.h | 2 +- default_options.h.in | 264 +++++++++++++++--------------- dh_groups.c | 8 +- dh_groups.h | 4 +- dropbear.8 | 2 +- dropbearkey.c | 24 +-- dss.c | 28 ++-- dss.h | 4 +- ecdsa.c | 4 +- ecdsa.h | 2 +- gendss.c | 4 +- gendss.h | 4 +- genrsa.c | 4 +- genrsa.h | 4 +- gensignkey.c | 16 +- kex.h | 8 +- keyimport.c | 30 ++-- libtomcrypt/src/headers/tomcrypt_custom.h | 8 +- netio.c | 10 +- netio.h | 2 +- packet.c | 24 +-- rsa.c | 16 +- rsa.h | 4 +- runopts.h | 32 ++-- scp.c | 4 +- session.h | 8 +- signkey.c | 80 ++++----- signkey.h | 14 +- sshpty.c | 6 +- svr-agentfwd.c | 2 +- svr-auth.c | 10 +- svr-authpam.c | 4 +- svr-authpasswd.c | 2 +- svr-authpubkey.c | 2 +- svr-authpubkeyoptions.c | 6 +- svr-chansession.c | 38 ++--- svr-kex.c | 28 ++-- svr-main.c | 40 ++--- svr-runopts.c | 110 ++++++------- svr-session.c | 4 +- svr-tcpfwd.c | 22 +-- svr-x11fwd.c | 8 +- x11fwd.h | 4 +- 67 files changed, 763 insertions(+), 763 deletions(-) The patch has been compressed with `bzip2' and added as an attachment. Save the attachment to `/path/to/refactor.patch.bz2', and then apply it: bzcat /path/to/refactor.patch.bz2 | git am
refactor.patch.bz2
Description: BZip2 compressed data