mirror of
https://github.com/sheumann/hush.git
synced 2024-08-20 04:28:57 +00:00
Script that generates a script that will convert oddball variable names to K&R
style.
This commit is contained in:
parent
1ef92685cf
commit
bac75ac2d5
76
examples/mk2knr.pl
Executable file
76
examples/mk2knr.pl
Executable file
@ -0,0 +1,76 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# @(#) mk2knr.pl - generates a perl script that converts lexemes to K&R-style
|
||||
#
|
||||
# How to use this script:
|
||||
# - In the busybox directory type 'scripts/mk2knr.pl files-you-want-to-convert'
|
||||
# - Review the 'convertme.pl' script generated and remove / edit any of the
|
||||
# substitutions in there (please especially check for false positives)
|
||||
# - Type './convertme.pl same-files-as-before'
|
||||
# - Compile and see if it works
|
||||
#
|
||||
# BUGS: This script does not ignore strings inside comments or strings inside
|
||||
# quotes (it probably should).
|
||||
|
||||
# set this to something else if you want
|
||||
$convertme = 'convertme.pl';
|
||||
|
||||
# internal-use variables (don't touch)
|
||||
$convert = 0;
|
||||
%converted = ();
|
||||
|
||||
|
||||
# prepare the "convert me" file
|
||||
open(CM, ">$convertme") or die "convertme.pl $!";
|
||||
print CM "#!/usr/bin/perl -p -i\n\n";
|
||||
|
||||
# process each file passed on the cmd line
|
||||
while (<>) {
|
||||
|
||||
# if the line says "getopt" in it anywhere, we don't want to muck with it
|
||||
# because option lists tend to include strings like "cxtzvOf:" which get
|
||||
# matched by the javaStyle / Hungarian and PascalStyle regexps below
|
||||
next if /getopt/;
|
||||
|
||||
# tokenize the string into just the variables
|
||||
while (/([a-zA-Z_][a-zA-Z0-9_]*)/g) {
|
||||
$var = $1;
|
||||
|
||||
# ignore the word "BusyBox"
|
||||
next if ($var =~ /BusyBox/);
|
||||
|
||||
# this checks for javaStyle or szHungarianNotation
|
||||
$convert++ if ($var =~ /^[a-z]+[A-Z][a-z]+/);
|
||||
|
||||
# this checks for PascalStyle
|
||||
$convert++ if ($var =~ /^[A-Z][a-z]+[A-Z][a-z]+/);
|
||||
|
||||
if ($convert) {
|
||||
$convert = 0;
|
||||
|
||||
# skip ahead if we've already dealt with this one
|
||||
next if ($converted{$var});
|
||||
|
||||
# record that we've dealt with this var
|
||||
$converted{$var} = 1;
|
||||
|
||||
print CM "s/\\b$var\\b/"; # more to come in just a minute
|
||||
|
||||
# change the first letter to lower-case
|
||||
$var = lcfirst($var);
|
||||
|
||||
# put underscores before all remaining upper-case letters
|
||||
$var =~ s/([A-Z])/_$1/g;
|
||||
|
||||
# now change the remaining characters to lower-case
|
||||
$var = lc($var);
|
||||
|
||||
print CM "$var/g;\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# tidy up and make the $convertme script executable
|
||||
close(CM);
|
||||
chmod 0755, $convertme;
|
||||
|
76
scripts/mk2knr.pl
Executable file
76
scripts/mk2knr.pl
Executable file
@ -0,0 +1,76 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# @(#) mk2knr.pl - generates a perl script that converts lexemes to K&R-style
|
||||
#
|
||||
# How to use this script:
|
||||
# - In the busybox directory type 'scripts/mk2knr.pl files-you-want-to-convert'
|
||||
# - Review the 'convertme.pl' script generated and remove / edit any of the
|
||||
# substitutions in there (please especially check for false positives)
|
||||
# - Type './convertme.pl same-files-as-before'
|
||||
# - Compile and see if it works
|
||||
#
|
||||
# BUGS: This script does not ignore strings inside comments or strings inside
|
||||
# quotes (it probably should).
|
||||
|
||||
# set this to something else if you want
|
||||
$convertme = 'convertme.pl';
|
||||
|
||||
# internal-use variables (don't touch)
|
||||
$convert = 0;
|
||||
%converted = ();
|
||||
|
||||
|
||||
# prepare the "convert me" file
|
||||
open(CM, ">$convertme") or die "convertme.pl $!";
|
||||
print CM "#!/usr/bin/perl -p -i\n\n";
|
||||
|
||||
# process each file passed on the cmd line
|
||||
while (<>) {
|
||||
|
||||
# if the line says "getopt" in it anywhere, we don't want to muck with it
|
||||
# because option lists tend to include strings like "cxtzvOf:" which get
|
||||
# matched by the javaStyle / Hungarian and PascalStyle regexps below
|
||||
next if /getopt/;
|
||||
|
||||
# tokenize the string into just the variables
|
||||
while (/([a-zA-Z_][a-zA-Z0-9_]*)/g) {
|
||||
$var = $1;
|
||||
|
||||
# ignore the word "BusyBox"
|
||||
next if ($var =~ /BusyBox/);
|
||||
|
||||
# this checks for javaStyle or szHungarianNotation
|
||||
$convert++ if ($var =~ /^[a-z]+[A-Z][a-z]+/);
|
||||
|
||||
# this checks for PascalStyle
|
||||
$convert++ if ($var =~ /^[A-Z][a-z]+[A-Z][a-z]+/);
|
||||
|
||||
if ($convert) {
|
||||
$convert = 0;
|
||||
|
||||
# skip ahead if we've already dealt with this one
|
||||
next if ($converted{$var});
|
||||
|
||||
# record that we've dealt with this var
|
||||
$converted{$var} = 1;
|
||||
|
||||
print CM "s/\\b$var\\b/"; # more to come in just a minute
|
||||
|
||||
# change the first letter to lower-case
|
||||
$var = lcfirst($var);
|
||||
|
||||
# put underscores before all remaining upper-case letters
|
||||
$var =~ s/([A-Z])/_$1/g;
|
||||
|
||||
# now change the remaining characters to lower-case
|
||||
$var = lc($var);
|
||||
|
||||
print CM "$var/g;\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# tidy up and make the $convertme script executable
|
||||
close(CM);
|
||||
chmod 0755, $convertme;
|
||||
|
Loading…
Reference in New Issue
Block a user