1*4bdff4beSrobert#!/usr/bin/env bash
2*4bdff4beSrobert#
3*4bdff4beSrobert# Script to rename DLL name within side deck.
4*4bdff4beSrobert#
5*4bdff4beSrobert
6*4bdff4beSrobert# Stops execution if a command or pipeline has an error.
7*4bdff4beSrobertset -e
8*4bdff4beSrobert
9*4bdff4beSrobertsidedeck=$1
10*4bdff4beSrobertold_dll_name=$2
11*4bdff4beSrobertnew_dll_name=$3
12*4bdff4beSrobert
13*4bdff4beSrobertfunction error() {
14*4bdff4beSrobert  printf "ERROR: %s\n" "$*"
15*4bdff4beSrobert  exit 1
16*4bdff4beSrobert}
17*4bdff4beSrobert
18*4bdff4beSrobertfunction usage() {
19*4bdff4beSrobertcat <<EOF
20*4bdff4beSrobertUsage: $(basename $0) <side deck file> <old dll name> <new dll name>:
21*4bdff4beSrobert          [-h|--help] Display this help and exit.
22*4bdff4beSrobertEOF
23*4bdff4beSrobert}
24*4bdff4beSrobert
25*4bdff4beSrobertrename_dll_name_inside_side_deck() {
26*4bdff4beSrobert
27*4bdff4beSrobertif [[ -z "$sidedeck" || -z "$old_dll_name" || -z "$new_dll_name" ]]; then
28*4bdff4beSrobert  usage
29*4bdff4beSrobert  error "All 3 parameters must be specified."
30*4bdff4beSrobertfi
31*4bdff4beSrobert
32*4bdff4beSrobert[[ -f "$sidedeck" ]] || error "The '$sidedeck' file must exists."
33*4bdff4beSrobert
34*4bdff4beSrobertold_len=${#old_dll_name}
35*4bdff4beSrobertnew_len=${#new_dll_name}
36*4bdff4beSrobert
37*4bdff4beSrobertif (( $new_len > $old_len )); then
38*4bdff4beSrobert  error "New DLL name $new_dll_name must have $old_len characters or less."
39*4bdff4beSrobertfi
40*4bdff4beSrobert
41*4bdff4beSrobertif ((padding_len=$old_len-$new_len )); then
42*4bdff4beSrobert  pad=$(printf "%*s" $padding_len "")
43*4bdff4beSrobertfi
44*4bdff4beSrobert
45*4bdff4beSrobert# Touch the temp. file and set the tag to 1047 first so the redirecting statement
46*4bdff4beSrobert# will write in 1047 and not 819 encoding.
47*4bdff4beSroberttouch $sidedeck.tmp; chtag -tc1047 $sidedeck.tmp
48*4bdff4beSrobertsed "/ IMPORT /s/'$old_dll_name/$pad'$new_dll_name/g" $sidedeck > $sidedeck.tmp
49*4bdff4beSrobertmv $sidedeck.tmp $sidedeck
50*4bdff4beSrobert}
51*4bdff4beSrobert
52*4bdff4beSrobertfunction main() {
53*4bdff4beSrobert  rename_dll_name_inside_side_deck
54*4bdff4beSrobert}
55*4bdff4beSrobert
56*4bdff4beSrobertmain "$@"
57*4bdff4beSrobert
58