771 lines
17 KiB
Bash
Executable File
771 lines
17 KiB
Bash
Executable File
#!/bin/sh
|
|
set -h
|
|
|
|
###############################################################################
|
|
#
|
|
# Set up shell traps
|
|
#
|
|
###############################################################################
|
|
|
|
USERPATH=$PATH
|
|
PATH=/bin:/usr/bin:/usr/sbin
|
|
RETCODE=0
|
|
|
|
trap '\
|
|
RETCODE=${RETCODE:-$?} ;\
|
|
/bin/rm -rf $BogusInfoLibDir ;\
|
|
/bin/rm -f $SRCLIBPATH/$MMDBMAP.1.$$ ;\
|
|
/bin/rm -f $SRCLIBPATH/$MMDBMAP.2.$$ ;\
|
|
exit $RETCODE \
|
|
' 0 1 2 3 4 5 6 7 8 10 12 15
|
|
|
|
###############################################################################
|
|
|
|
ECHOCMD="echo"
|
|
ECHOSUF='\\c'
|
|
|
|
if [ -n "`eval $ECHOCMD $ECHOSUF`" ]; then
|
|
ECHOCMD="echo -n"
|
|
ECHOSUF=""
|
|
fi
|
|
|
|
|
|
echo_f() {
|
|
eval $ECHOCMD "$1$ECHOSUF"
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
confirm_f() {
|
|
|
|
YorN=
|
|
echo ""
|
|
echo_f "\ \ \ \ Is \[$1] correct? \[ynq\]\ "
|
|
read YorN
|
|
|
|
if [ "$YorN" = "q" -o "$YorN" = "Q" ] ; then
|
|
exit 0
|
|
fi
|
|
if [ -z "$YorN" -o "$YorN" = "y" -o "$YorN" = "Y" ] ; then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
read_f() {
|
|
|
|
ANSWER=
|
|
read ANSWER
|
|
if [ "$ANSWER" = "q" -o "$ANSWER" = "Q" ] ; then
|
|
exit 0
|
|
fi
|
|
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
DisplayMenu() {
|
|
clear
|
|
|
|
echo "
|
|
1) List bookcases in a library
|
|
2) Copy a bookcase from another library
|
|
3) Rename a bookcase
|
|
4) Rearrange bookcases in a library
|
|
5) Remove a bookcase
|
|
6) Exit
|
|
"
|
|
|
|
echo_f "Please enter your choice \[1-6\]\ "
|
|
|
|
}
|
|
|
|
###############################################################################
|
|
### Listing of all bookcases available in $1
|
|
|
|
ListCatalog () {
|
|
|
|
# list all the bookcases available in the infolib parameter
|
|
echo "
|
|
The bookcases available in [$1] are:
|
|
"
|
|
awk 'BEGIN { FS="\t" }
|
|
{ if (NR > 1) printf (" %d) %s\t[%s]\n", NR-1, $1, $2 ) }' \
|
|
< $1/$MMDBMAP
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
MoveCatalog () {
|
|
|
|
# list all the bookcases available in the infolib parameter
|
|
echo "
|
|
The order of the bookcase(s) without [$BOOKCASENAME1] is:
|
|
"
|
|
awk 'BEGIN { FS="\t" }
|
|
{ if (NR > 1) printf (" %d) %s\t[%s]\n", NR-1, $1, $2 ) }' \
|
|
< $1
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
ValidateInfolibPath () {
|
|
INFOLIB=$1
|
|
if [ -z "$INFOLIB" -o ! -d $INFOLIB ] ; then
|
|
echo "(ERROR) $INFOLIB is not a valid information library" >&2
|
|
INFOLIB=""
|
|
return
|
|
fi
|
|
|
|
cd $INFOLIB
|
|
INFOLIB=`pwd`
|
|
cd $CURDIR
|
|
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
ListLibrary() {
|
|
|
|
SRCLIBPATH=
|
|
while [ -z "$SRCLIBPATH" ] ; do
|
|
|
|
echo "
|
|
Enter the path for the library to view.
|
|
This can be a relative or absolute path, or to exit, type 'q'."
|
|
echo_f "\ \ \ \ --\>\ "
|
|
read_f
|
|
|
|
ValidateInfolibPath $ANSWER
|
|
SRCLIBPATH=$INFOLIB
|
|
|
|
done
|
|
|
|
|
|
### prompt for name of bookcase that is going to be installed ###
|
|
LIBDESC=`awk 'BEGIN { FS="\t" }
|
|
{ if (NR == 1) print ($1) }' \
|
|
< $SRCLIBPATH/$MMDBMAP`
|
|
|
|
echo ""
|
|
echo " Description: [$LIBDESC]"
|
|
|
|
ListCatalog $SRCLIBPATH
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo_f "\ \ \ \ Hit any key to continue or type 'q' to quit\ "
|
|
read_f
|
|
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
CopyBookcase() {
|
|
|
|
### prompt for infolib and bookcase ###
|
|
|
|
SRCLIBPATH=
|
|
while [ -z "$SRCLIBPATH" ] ; do
|
|
|
|
echo "
|
|
Enter the path for the library from which you want to copy a bookcase.
|
|
This can be a relative or absolute path, or to exit, type 'q'."
|
|
echo_f "\ \ \ \ --\>\ "
|
|
|
|
read_f
|
|
SRCLIBPATH=$ANSWER
|
|
|
|
ValidateInfolibPath $SRCLIBPATH
|
|
SRCLIBPATH=$INFOLIB
|
|
|
|
done
|
|
|
|
|
|
BOOKCASENAME=
|
|
while [ -z "$BOOKCASENAME" ] ; do
|
|
|
|
### prompt for name of bookcase that is going to be installed ###
|
|
ListCatalog $SRCLIBPATH
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
SRCBOOKCASELIST=`awk '{ if (NR > 1) print $1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
NUMPOS=`awk 'END { print NR-1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
echo "(ERROR) Cannot display bookcase #" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo_f "\ \ \ \ Enter the number of the bookcase to copy \[1-$NUMPOS\]\ "
|
|
read_f
|
|
POSITION=$ANSWER
|
|
|
|
if [ -z "$POSITION" ] ; then
|
|
continue
|
|
fi
|
|
|
|
if [ "$POSITION" -lt 1 -o "$POSITION" -gt "$NUMPOS" ]; then
|
|
echo "(ERROR) Invalid choice [$POSITION], please try again"
|
|
sleep 2
|
|
continue
|
|
fi
|
|
|
|
### Confirm the selection with the user
|
|
|
|
BOOKCASENAME=`awk '{
|
|
if ( NR == position+1 ) { print $1 }
|
|
}' position=$POSITION < $SRCLIBPATH/$MMDBMAP`
|
|
|
|
confirm_f "$BOOKCASENAME"
|
|
if [ $? -eq 0 ] ; then
|
|
BOOKCASENAME=""
|
|
fi
|
|
done
|
|
|
|
DESTLIBPATH=
|
|
while [ -z "$DESTLIBPATH" ] ; do
|
|
|
|
echo "
|
|
Enter the path for the destination library.
|
|
This can be a relative or absolute path, or to exit, type 'q'."
|
|
echo_f "\ \ \ \ --\>\ "
|
|
|
|
read_f
|
|
DESTLIBPATH=$ANSWER
|
|
|
|
ValidateInfolibPath $DESTLIBPATH
|
|
DESTLIBPATH=$INFOLIB
|
|
|
|
### Check if BookCaseName already exists ###
|
|
|
|
TSTSTRING=
|
|
TSTSTRING=`awk '{
|
|
if ( $1 == bcname ) { print $1 }
|
|
}' bcname=$BOOKCASENAME < $DESTLIBPATH/$MMDBMAP`
|
|
|
|
if [ -n "$TSTSTRING" ] ; then
|
|
|
|
echo "\ \ \ \ $BOOKCASENAME already exists in $DESTLIBPATH"
|
|
echo_f "\ \ \ \ Do you want to override it? \[ynq\]\ "
|
|
read_f
|
|
|
|
RESPONSE=$ANSWER
|
|
OVERRIDE=
|
|
if [ "$RESPONSE" = "y" ] ; then
|
|
|
|
OVERRIDE=-i
|
|
DeInstallBase $BOOKCASENAME $DESTLIBPATH
|
|
if [ $? -ne 0 ] ; then
|
|
echo "(ERROR) Unable to remove $BOOKCASENAME from $DESTLIBPATH"
|
|
exit 1
|
|
fi
|
|
elif [ "$RESPONSE" = "n" ]; then
|
|
break
|
|
fi
|
|
fi
|
|
|
|
done
|
|
|
|
### Prompt for parameter verification ###
|
|
echo "
|
|
You specified this information.
|
|
|
|
Copy [$BOOKCASENAME] from: $SRCLIBPATH
|
|
to : $DESTLIBPATH
|
|
"
|
|
echo_f "\ \ \ \ Is this correct? [ynq]\ "
|
|
read_f
|
|
echo ""
|
|
|
|
RESPONSE=$ANSWER
|
|
|
|
if [ "$RESPONSE" = "n" ]; then
|
|
return
|
|
fi
|
|
|
|
### Grab the bookcase entry line
|
|
BCENTRY=`awk '{
|
|
if ( NR > 1 && $1 == bookcasename ) { print $0 }
|
|
}' bookcasename=$BOOKCASENAME $SRCLIBPATH/$MMDBMAP`
|
|
|
|
if [ -z "$BCENTRY" ]; then
|
|
echo "(ERROR) $BOOKCASENAME does not exist in $SRCLIBPATH"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if [ ! -d $BogusInfoLibDir ]; then
|
|
mkdir -p $BogusInfoLibDir
|
|
else
|
|
echo "(ERROR) $BogusInfoLibDir already exists, cannot proceed" >&2
|
|
exit 1
|
|
fi
|
|
cd $BogusInfoLibDir
|
|
MMDB_PATH=$BogusInfoLibDir
|
|
|
|
### set up the bogus link to fool MMDB into believing that
|
|
### it is an info-lib
|
|
DESTBCLIST=`awk '{ if (NR > 1) print $1 }' < $DESTLIBPATH/$MMDBMAP `
|
|
for CurBookCase in $DESTBCLIST; do
|
|
ln -s $DESTLIBPATH/$CurBookCase $CurBookCase
|
|
done
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "(ERROR) Failed to link bookcases from $DESTLIBPATH" >&2
|
|
exit 1
|
|
fi
|
|
|
|
### Link the new bookcase to be installed ###
|
|
ln -s $SRCLIBPATH/$BOOKCASENAME $BOOKCASENAME
|
|
cp $DESTLIBPATH/$MMDBMAP $MMDBMAP
|
|
|
|
### Update the new $MMDBMAP file with the new entry
|
|
echo "$BCENTRY" >> $MMDBMAP
|
|
|
|
### actually perform the validation ###
|
|
|
|
echo " Validating bookcases...please wait"
|
|
|
|
### Generate the BookCaseList ###
|
|
BookCaseList=`awk '{if (NR > 1) print $1 }' < $MMDBMAP`
|
|
|
|
for CurBookCase in $BookCaseList; do
|
|
|
|
if [ "$BOOKCASENAME" != "$CurBookCase" ]; then
|
|
echo " ...Validating $BOOKCASENAME against $CurBookCase"
|
|
valBase $BOOKCASENAME $CurBookCase
|
|
fi
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "(ERROR) No copying is performed because of errors found in validation" >&2
|
|
rm -rf $BogusInfoLibDir
|
|
sleep 2
|
|
return
|
|
fi
|
|
|
|
done
|
|
|
|
echo " Validation complete."
|
|
|
|
### clean up the bogus infolib directory ###
|
|
cd $CURDIR
|
|
rm -r $BogusInfoLibDir
|
|
|
|
echo "
|
|
Copying bookcase... please wait
|
|
"
|
|
|
|
cd $DESTLIBPATH
|
|
(cd $SRCLIBPATH ; tar cf - $BOOKCASENAME) | tar xpf -
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "(ERROR) Copying failed" >&2
|
|
exit 1
|
|
fi
|
|
echo "$BCENTRY" >> $MMDBMAP
|
|
echo " Bookcase copied."
|
|
echo ""
|
|
echo_f "\ \ \ \ Hit any key to continue or type 'q' to quit\ "
|
|
read_f
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
RenameBookcase() {
|
|
### prompt for bookcase to be renamed ###
|
|
|
|
SRCLIBPATH=
|
|
while [ -z "$SRCLIBPATH" ] ; do
|
|
|
|
echo "
|
|
Enter the path for the library to modify.
|
|
This can be a relative or absolute path, or to exit, type 'q'."
|
|
echo_f "\ \ \ \ --\>\ "
|
|
read_f
|
|
|
|
ValidateInfolibPath $ANSWER
|
|
SRCLIBPATH=$INFOLIB
|
|
|
|
done
|
|
|
|
BOOKCASENAME=
|
|
while [ -z "$BOOKCASENAME" ] ; do
|
|
|
|
### prompt for name of bookcase that is going to be installed ###
|
|
ListCatalog $SRCLIBPATH
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
SRCBOOKCASELIST=`awk '{ if (NR > 1) print $1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
NUMPOS=`awk 'END { print NR-1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
echo "(ERROR) Cannot display bookcase #" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo_f "\ \ \ \ Enter the number of the bookcase to rename \[1-$NUMPOS\]\ "
|
|
read_f
|
|
POSITION=$ANSWER
|
|
|
|
if [ -z "$POSITION" ] ; then
|
|
continue
|
|
fi
|
|
|
|
if [ "$POSITION" -lt 1 -o "$POSITION" -gt "$NUMPOS" ]; then
|
|
echo "(ERROR) Invalid choice [$POSITION], please try again"
|
|
sleep 2
|
|
continue
|
|
fi
|
|
|
|
### Confirm the selection with the user
|
|
|
|
BOOKCASENAME=`awk '{
|
|
if ( NR == position+1 ) { print $1 }
|
|
}' position=$POSITION < $SRCLIBPATH/$MMDBMAP`
|
|
|
|
confirm_f "$BOOKCASENAME"
|
|
if [ $? -eq 0 ] ; then
|
|
BOOKCASENAME=""
|
|
fi
|
|
done
|
|
|
|
BookCaseTitle=""
|
|
while [ -z "$BookCaseTitle" ] ; do
|
|
|
|
echo "
|
|
Enter the new description for $BOOKCASENAME, or type 'q' to quit."
|
|
echo_f "\ \ \ \ --\>\ "
|
|
read_f
|
|
BookCaseTitle=$ANSWER
|
|
|
|
### Confirm the title with the user ###
|
|
confirm_f "$BookCaseTitle"
|
|
if [ $? -eq 0 ] ; then
|
|
BOOKCASENAME=""
|
|
continue
|
|
fi
|
|
|
|
ChangeCaseTitle $SRCLIBPATH $BOOKCASENAME "$BookCaseTitle"
|
|
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
done
|
|
echo " Bookcase renamed."
|
|
echo ""
|
|
echo_f "\ \ \ \ Hit any key to continue or type 'q' to quit\ "
|
|
read_f
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
RearrangeBookcase() {
|
|
### prompt for source information library ###
|
|
|
|
SRCLIBPATH=
|
|
while [ -z "$SRCLIBPATH" ] ; do
|
|
|
|
echo "
|
|
Enter the path for the library to modify.
|
|
This can be a relative or absolute path, or to exit, type 'q'."
|
|
echo_f "\ \ \ \ --\>\ "
|
|
read_f
|
|
|
|
ValidateInfolibPath $ANSWER
|
|
SRCLIBPATH=$INFOLIB
|
|
|
|
done
|
|
|
|
BOOKCASENAME1=
|
|
while [ -z "$BOOKCASENAME1" ] ; do
|
|
|
|
SRCBOOKCASELIST=`awk '{ if (NR > 1) print $1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
NUMPOS=`awk 'END { print NR-1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
|
|
if [ $NUMPOS -lt 2 ] ; then
|
|
echo " No bookcases to rearrange only $NUMPOS available."
|
|
sleep 2
|
|
return
|
|
fi
|
|
|
|
### prompt for name of bookcase that is going to be moved ###
|
|
ListCatalog $SRCLIBPATH
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo_f "\ \ \ \ Enter the number of the bookcase to move \[1-$NUMPOS\]\ "
|
|
read_f
|
|
POSITION=$ANSWER
|
|
|
|
if [ -z "$POSITION" ] ; then
|
|
continue
|
|
fi
|
|
|
|
if [ "$POSITION" -lt 1 -o "$POSITION" -gt "$NUMPOS" ]; then
|
|
echo "(ERROR) Invalid choice [$POSITION], please try again"
|
|
sleep 2
|
|
continue
|
|
fi
|
|
|
|
### Confirm the selection with the user
|
|
|
|
BOOKCASENAME1=`awk '{
|
|
if ( NR == position+1 ) { print $1 }
|
|
}' position=$POSITION < $SRCLIBPATH/$MMDBMAP`
|
|
|
|
confirm_f "$BOOKCASENAME1"
|
|
if [ $? -eq 0 ] ; then
|
|
BOOKCASENAME1=""
|
|
fi
|
|
done
|
|
|
|
### Grab the entry line for the bookcase
|
|
BCENTRY=`awk '{
|
|
if ( NR > 1 && $1 == bookcasename ) { print $0 }
|
|
}' bookcasename=$BOOKCASENAME1 $SRCLIBPATH/$MMDBMAP`
|
|
|
|
if [ -z "$BCENTRY" ]; then
|
|
echo "(ERROR) $BOOKCASENAME1 does not exist in $SRCLIBPATH"
|
|
exit 1
|
|
fi
|
|
|
|
### Prepare $MMDBMAP for rearrangement ###
|
|
awk '{
|
|
if ( NR == 1 || $1 != BookCaseName ) { print $0 }
|
|
}' BookCaseName=$BOOKCASENAME1 \
|
|
< $SRCLIBPATH/$MMDBMAP > $SRCLIBPATH/$MMDBMAP.1.$$
|
|
|
|
POSITION=
|
|
while [ -z "$POSITION" ] ; do
|
|
MoveCatalog $SRCLIBPATH/$MMDBMAP.1.$$
|
|
|
|
echo "
|
|
|
|
Enter the number corresponding to the position you want [$BOOKCASENAME1]
|
|
to occupy. If another bookcase already occupies the position you
|
|
choose, the bookcase you are moving takes its place, and the original
|
|
bookcase moves one place down in the list."
|
|
|
|
echo_f "\ \ \ \ Default is $NUMPOS, or type 'q' to quit. \[1-$NUMPOS\]\ "
|
|
read_f
|
|
POSITION=$ANSWER
|
|
if [ -z "$POSITION" ] ; then
|
|
POSITION=$NUMPOS
|
|
fi
|
|
|
|
if [ $POSITION -lt 1 -o $POSITION -gt $NUMPOS ]; then
|
|
echo "(ERROR) Invalid choice [$POSITION], try again"
|
|
continue
|
|
fi
|
|
|
|
|
|
### Prompt for parameter verification ###
|
|
echo "
|
|
You specified this order for the bookcases :
|
|
"
|
|
if [ "$POSITION" != "$NUMPOS" ]; then
|
|
awk ' {
|
|
if ( NR != POSITION+1 ) { print $0 }
|
|
if ( NR == POSITION+1 ) { print BookCaseEntry; print $0 }
|
|
}' POSITION="$POSITION" BookCaseEntry="$BCENTRY" < \
|
|
$SRCLIBPATH/$MMDBMAP.1.$$ > $SRCLIBPATH/$MMDBMAP.2.$$
|
|
else
|
|
cp $SRCLIBPATH/$MMDBMAP.1.$$ $SRCLIBPATH/$MMDBMAP.2.$$
|
|
echo "$BCENTRY" >> $SRCLIBPATH/$MMDBMAP.2.$$
|
|
fi
|
|
|
|
awk 'BEGIN { FS="\t" }
|
|
{ if (NR > 1) {printf(" %d) %s\t[%s]\n", NR-1, $1, $2); }}
|
|
' < $SRCLIBPATH/$MMDBMAP.2.$$
|
|
echo ""
|
|
|
|
echo_f "\ \ \ \ Is this correct? \[ynq\]\ "
|
|
read_f
|
|
Response=$ANSWER
|
|
if [ "$Response" = "n" ]; then
|
|
POSITION=
|
|
continue
|
|
fi
|
|
|
|
## move the file with new order to $MMDBMAP ###
|
|
mv $SRCLIBPATH/$MMDBMAP.2.$$ $SRCLIBPATH/$MMDBMAP
|
|
rm -f $SRCLIBPATH/$MMDBMAP.1.$$
|
|
done
|
|
|
|
echo " Bookcase rearranged."
|
|
echo ""
|
|
echo_f "\ \ \ \ Hit any key to continue or type 'q' to quit\ "
|
|
read_f
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
RemoveBookcase() {
|
|
### prompt for bookcase to be removed ###
|
|
|
|
SRCLIBPATH=
|
|
while [ -z "$SRCLIBPATH" ] ; do
|
|
|
|
echo "
|
|
Enter the path for the library to modify.
|
|
This can be a relative or absolute path, or to exit, type 'q'."
|
|
echo_f "\ \ \ \ --\>\ "
|
|
read_f
|
|
|
|
ValidateInfolibPath $ANSWER
|
|
SRCLIBPATH=$INFOLIB
|
|
|
|
done
|
|
|
|
BOOKCASENAME=
|
|
while [ -z "$BOOKCASENAME" ] ; do
|
|
|
|
### prompt for name of bookcase that is going to be installed ###
|
|
ListCatalog $SRCLIBPATH
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
SRCBOOKCASELIST=`awk '{ if (NR > 1) print $1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
NUMPOS=`awk 'END { print NR-1 }' < $SRCLIBPATH/$MMDBMAP `
|
|
|
|
if [ $? -ne 0 ] ; then
|
|
echo "(ERROR) Cannot display bookcase #" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo_f "\ \ \ \ Enter the number of the bookcase to remove \[1-$NUMPOS\]\ "
|
|
read_f
|
|
POSITION=$ANSWER
|
|
|
|
if [ -z "$POSITION" ] ; then
|
|
continue
|
|
fi
|
|
|
|
if [ "$POSITION" -lt 1 -o "$POSITION" -gt "$NUMPOS" ]; then
|
|
echo "(ERROR) Invalid choice [$POSITION], please try again"
|
|
sleep 2
|
|
continue
|
|
fi
|
|
|
|
### Confirm the selection with the user
|
|
|
|
BOOKCASENAME=`awk '{
|
|
if ( NR == position+1 ) { print $1 }
|
|
}' position=$POSITION < $SRCLIBPATH/$MMDBMAP`
|
|
|
|
confirm_f "$BOOKCASENAME"
|
|
if [ $? -eq 0 ] ; then
|
|
BOOKCASENAME=""
|
|
fi
|
|
done
|
|
|
|
|
|
### Actually perform the de-installation ###
|
|
echo " Removing $BOOKCASENAME...please wait"
|
|
|
|
DeInstallBase $BOOKCASENAME $SRCLIBPATH
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
echo "(ERROR) Bookcase is not removed because of errors found in De-Installation utility" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo " Bookcase removed."
|
|
echo ""
|
|
echo_f "\ \ \ \ Hit any key to continue or type 'q' to quit\ "
|
|
read_f
|
|
}
|
|
|
|
###############################################################################
|
|
|
|
CURDIR=`pwd`
|
|
if [ -z "$OLIASDDKBIN" ]; then
|
|
NewDir=`dirname $0`
|
|
cd $NewDir
|
|
OLIASDDKBIN=`pwd`
|
|
cd $CURDIR
|
|
fi
|
|
|
|
export MMDB_PATH PATH TMPDIR
|
|
TMPDIR=${TMPDIR:-/usr/tmp}
|
|
PATH=/bin:/usr/bin:/usr/sbin:${OLIASDDKBIN}
|
|
MMDBMAP=bookcase.map
|
|
|
|
### set up bogus info-lib directory for validation
|
|
BogusInfoLibDir=$TMPDIR/infolib$$
|
|
|
|
###############################################################################
|
|
|
|
## Get the task option ###
|
|
|
|
CHOICE=
|
|
while [ -z "$CHOICE" ] ; do
|
|
|
|
DisplayMenu
|
|
|
|
read CHOICE
|
|
|
|
case "$CHOICE" in
|
|
|
|
1)
|
|
ListLibrary
|
|
;;
|
|
|
|
2)
|
|
CopyBookcase
|
|
;;
|
|
|
|
3)
|
|
RenameBookcase
|
|
;;
|
|
|
|
4)
|
|
RearrangeBookcase
|
|
;;
|
|
|
|
5)
|
|
RemoveBookcase
|
|
;;
|
|
|
|
q|Q|6)
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
echo "
|
|
*** Invalid choice, please try again ***
|
|
" >&2
|
|
sleep 2
|
|
;;
|
|
|
|
esac
|
|
cd $CURDIR
|
|
CHOICE=
|
|
|
|
done
|
|
|