# Fixup case statements.
# Copyright (c) 1992-2012 by Hamilton Laboratories. All rights reserved.
# case word in switch (word)
# a) case "a":
# : :
# ;; break
# b|c) --> case "b":
# : case "c":
# :
# break FixBreak <-- Hand-Fixup required
# *) default:
# : :
# esac end
/^[ ]*case/,/^[ ]*esac/{
s/case[ ][ ]*\([^ ].*\)[ ][ ]*in/switch (\1)/
/^[^(]*)/{
s/\([ ]*\)\([^)]*\))/\1case "\2":
\1 /
:case
/".*|.*"/{
s/\([ ]*\)\(case "[^|]*\)|\(.*":\)/\1\2":
\1case "\3/
b case
}
}
s/case "\*":/default:/
s/break/FixBreak/
/;;/s/^\([ ]*\)\([^ ].*\);;/\1\2
\1break/
/;;/s/;;/break/
s/esac/end/
}
|