Hamilton LaboratoriesHamilton C shell 2012User guideSamplessh2csh.csh

case.sed

Oregon Coast

case.sed
Previous | Next

#  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/
   }

Previous | Next