home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / update701 / install / updpkg.rc < prev    next >
Text File  |  1998-07-28  |  14KB  |  592 lines

  1. #ident  "@(#)updpkg.rc    17.2    98/07/28"
  2. #copyright    "%c%"
  3. #!/usr/bin/sh
  4.  
  5. RmExit ()
  6. {
  7.     ${BIN}/rm -rf ${UPDTMP} 2 >/dev/null
  8.     exit $1
  9. }
  10.  
  11. #
  12. # Minimize the overhead of all those DbgMsg calls...
  13. #
  14. DBG=/var/sadm/pkg/installdbg
  15. if [ -f ${DBG} ]
  16. then
  17.     DbgMsg ()
  18.     {
  19.         echo "$@" 2>&1 >> ${DBG}.log
  20.     }
  21.     DbgAddFile ()
  22.     {
  23.         if [ -r "${1}" ]
  24.         then
  25.             ${BIN}/cat ${1} 2>&1 >> ${DBG}.log
  26.         else
  27.             echo "File ${1} non-existent or unreadable" >> ${DBG}.log
  28.         fi
  29.     }
  30. else
  31.     DbgMsg ()
  32.     {
  33.         :
  34.     }
  35.     DbgAddFile ()
  36.     {
  37.         :
  38.     }
  39. fi
  40.  
  41. #
  42. # Message logger.
  43. #
  44. LogMsg ()
  45. {
  46.     echo "$@" >> ${UPDLOGFILE}
  47. }
  48.  
  49. #
  50. # Find out who the desktop owners are
  51. #
  52. GetDeskTopOwners ()
  53. {
  54.     LogMsg "GetDeskTopOwners: `GetText STARTED`"
  55.     DbgMsg "GetDeskTopOwners: STARTED"
  56.  
  57.     DeskTopOwn=""
  58.     for user in `${BIN}/grep -l owner /usr/X/desktop/LoginMgr/Users/* 2>/dev/null | ${BIN}/sed 's%.*/%%g'`
  59.     do
  60.         # Concatenate multiple desktop owners.
  61.         # Eliminates newlines between owners.
  62.         DeskTopOwn="${DeskTopOwn} ${user}"
  63.     done
  64.     DeskTopOwn=`echo ${DeskTopOwn} | ${BIN}/sed 's/^ //g'`
  65.     export DeskTopOwn
  66.  
  67.     LogMsg "GetDeskTopOwners: `GetText COMPLETED` - DeskTopOwn='${DeskTopOwn}'"
  68.     DbgMsg "GetDeskTopOwners: COMPLETED - DeskTopOwn='${DeskTopOwn}'"
  69.     return 0
  70. }
  71.  
  72. #
  73. # Stop the work menu,
  74. #
  75. WorkMenuKill ()
  76. {
  77.     DbgMsg "WorkMenuKill: STARTED"
  78.  
  79.     if [ -f ${UPDMENUDIR}/working.kill ]
  80.     then    DbgMsg "  WorkMenuKill: work menu needs kill"
  81.         . ${UPDMENUDIR}/working.kill
  82.         DbgMsg "  WorkMenuKill: work menu was killed"
  83.     else    DbgMsg "  WorkMenuKill: work menu was inactive"
  84.     fi
  85.  
  86.     DbgMsg "WorkMenuKill: COMPLETED"
  87.     return 0
  88. }
  89.  
  90. #
  91. # Clear Screen.  No args passed.
  92. #
  93. MenuClear ()
  94. {
  95.     DbgMsg "MenuClear: STARTED"
  96.     # Is working menu running, if so kill it.
  97.     WorkMenuKill
  98.  
  99.     # Clear the screen.
  100.     ${USBIN}/menu -c >${TTY}
  101.     DbgMsg "MenuClear: COMPLETED"
  102. }
  103.  
  104. #
  105. # Display and handle basic request messages
  106. #
  107. # $1 - action to perform on the message:
  108. #    1: display to terminal (interactive System msg)
  109. #    2: mail to desktop owner and root
  110. #    3: both 1 and 2 (interactive)
  111. #    4: display to terminal (non-interactive)
  112. #    5: 4 and mail to desktop owner and root
  113. # $2 - message keyword
  114. #
  115. MsgHandler ()
  116. {
  117.     DbgMsg "MsgHandler: STARTED"
  118.  
  119.     if   [ -f ${UPDINST}/msgfile.txt.${UPDLANG} ]
  120.     then
  121.         . ${UPDINST}/msgfile.txt.${UPDLANG}
  122.     else
  123.         . ${UPDINST}/msgfile.txt
  124.     fi
  125.  
  126.     # Get message text.
  127.     eval "MsgText=\${$2}"
  128.     DbgMsg "  MsgText=${MsgText}"
  129.  
  130.     # Action perform with message.
  131.     case ${1} in
  132.     0)    # just return message to caller
  133.         echo "${MsgText}"
  134.         ;;
  135.     1)      # display to terminal as System Message
  136.         # with "Strike ENTER when ready" prompt
  137.         LogMsg "${MsgText}"
  138.         MenuClear
  139.         if [ "$SILENT_INSTALL" = "true" ]
  140.         then    ${BIN}/message -d "${MsgText}" >${TTY}
  141.             ${BIN}/sleep 10
  142.         else    ${BIN}/message "${MsgText}" >${TTY}
  143.         fi
  144.         ;;
  145.     2)      # mail to desktop owner and root
  146. #        echo "${MsgText}" | ${BIN}/mailx ${DeskTopOwn} root
  147.         LogMsg "${MsgText}"
  148.         ;;
  149.     3)      # Do both 1 and 2 above
  150.         echo "${MsgText}" | ${BIN}/mailx ${DeskTopOwn} root
  151.         LogMsg "${MsgText}"
  152.         MenuClear
  153.         if [ "$SILENT_INSTALL" = "true" ]
  154.         then    ${BIN}/message -d "${MsgText}" >${TTY}
  155.             ${BIN}/sleep 10
  156.         else    ${BIN}/message "${MsgText}" >${TTY}
  157.         fi
  158.         ;;
  159.     4)    # display to terminal as a regular message
  160.         MenuClear
  161.         ${BIN}/message -d "${MsgText}" >${TTY}
  162.         ;;
  163.     5)    # Do 4 as well as mail to desktop owner and root
  164.         echo "${MsgText}" | ${BIN}/mailx ${DeskTopOwn} root
  165.         LogMsg "${MsgText}"
  166.         MenuClear
  167.         ${BIN}/message -d "${MsgText}" >${TTY}
  168.         ;;
  169.     esac
  170.     DbgMsg "MsgHandler: COMPLETED"
  171. }
  172.  
  173. #
  174. # Checks to see if package is compatible with installed OS.
  175. #
  176. OSBaseChk ()
  177. {
  178.     LogMsg "OSBaseChk: `GetText STARTED`"
  179.     DbgMsg "OSBaseChk: STARTED"
  180.  
  181. #
  182. # on UW7 uname -r -v returns 5 7
  183. # update 1 returns 5 7.0.1
  184. # on UW2.1 uname -r -v returns 4.2MP 2.1
  185. #
  186.     InstRel="`${BIN}/uname -r -v`"
  187.     DbgMsg "  OSBaseChk: IRELEASE='${IRELEASE}', InstRel='${InstRel}'"
  188.     for irel in ${IRELEASE}
  189.     do
  190.         case "${InstRel}" in
  191.         5*${irel})
  192.             # Must be a Release 5 OS with specified
  193.             # version(s) or the same, i.e. an overlay
  194.             # installation.
  195.             unset irel InstRel
  196.             LogMsg "OSBaseChk: `GetText COMPLETED`"
  197.             DbgMsg "OSBaseChk: COMPLETED - Rel is 5*${irel}"
  198.             return 0
  199.             ;;
  200.         *)
  201.             continue
  202.             ;;
  203.         esac
  204.     done
  205.     DbgMsg "OSBaseChk: COMPLETED - Rel is not 5*${irel}"
  206.  
  207.     #
  208.     # Proper Release not installed.
  209.     #
  210.     MsgHandler 3 UpdBaseMsg
  211.     LogMsg "\nUpdBaseMsg:\n${UpdBaseMsg}"
  212.     DbgMsg "OSBaseChk: Exit code - 1"
  213.     LogMsg "Request: `GetText COMPLEXIT` - 1"
  214.     RmExit 1
  215. }
  216.  
  217. #
  218. # Checks to see if the Kernel Tools are installed
  219. #
  220. KernelToolsChk ()
  221. {
  222.     LogMsg "KernelToolsChk: `GetText STARTED`"
  223.     DbgMsg "KernelToolsChk: STARTED"
  224.     CWD=`pwd`
  225.     cd ${CONFBIN}
  226.     DbgMsg "  KernelToolsChk: If idtools not executable, abort"
  227.     if [ ! -x idcheck -o ! -x idbuild -o ! -x idinstall \
  228.       -o ! -x idtune -o ! -x idval ]
  229.     then
  230.         DbgMsg "  KernelToolsChk: idtools not executable - abort"
  231.         MsgHandler 3 UpdNoToolsMsg
  232.         LogMsg "\nUpdNoToolsMsg:\n${UpdNoToolsMsg}"
  233.         LogMsg "ChkKernelTools: `GetText COMPLEXIT` - 1\n"
  234.         DbgMsg "ChkKernelTools: Exit code - 1\n"
  235.         ${BIN}/rm -f ${UPDPKGDIR}/!R-Lock!
  236.         RmExit 1
  237.     fi
  238.     cd ${CWD}
  239.     LogMsg "ChkKernelTools: `GetText COMPLETED`"
  240.     DbgMsg "ChkKernelTools: COMPLETED"
  241. }
  242.  
  243. # Menu display controller.
  244. # $1 is color
  245. # $2 is menu without ".menu" extension
  246. # $3 optional output file
  247. MenuCmd ()
  248. {
  249.     LogMsg "MenuCmd: `GetText STARTED` - ${2}"
  250.     DbgMsg "MenuCmd: STARTED with args '${1}' '${2}' '${3}'"
  251.  
  252.     # Is working menu running, if so kill it.
  253.     WorkMenuKill
  254.  
  255.     # Setup and display requested menu screen.
  256.     menu_colors ${1}
  257.     if [ -z "${3}" ]
  258.     then
  259.         OF=/dev/null
  260.     else
  261.         OF=${3}
  262.         ${BIN}/rm -f ${OF}
  263.     fi
  264.  
  265.     Menu=${UPDMENUDIR}/${2}.menu
  266.     DbgMsg "    Menu=${Menu}"
  267.     DbgMsg "    OF=${OF}"
  268.     DbgMsg "    UPDTMP=${UPDTMP}"
  269.  
  270.     if [ ! -f ${Menu} ]
  271.     then
  272.         SrcMenu=${UPDINST}/${2}.menu.${UPDLANG}.Z
  273.         [ -f ${SrcMenu} ] || SrcMenu=${UPDINST}/${2}.menu.Z
  274.         ${BIN}/zcat ${SrcMenu} | ${BIN}/sed -e '/^#ident/d' > ${Menu}
  275.         unset SrcMenu
  276.     fi
  277.  
  278. # jillp - menucmd in the locale directories doesn't display 8-bit characters correctly,
  279. # always use the /usr/sbin/menu binary
  280.  
  281. #DbgMsg "  MenuCmd: use new menucmd if available"
  282. #if [ -x ${UPDMENUDIR}/menucmd ]
  283. #then
  284. #    ${UPDMENUDIR}/menucmd -r -f ${Menu} -o ${OF} \
  285. #        1>${TTY} 2>${UPDTMP}/menu.err <${TTY}
  286. #else
  287. #    ${USBIN}/menu -r -f ${Menu} -o ${OF} \
  288. #        1>${TTY} 2>${UPDTMP}/menu.err <${TTY}
  289. #fi
  290.     DbgMsg " updpkg.rc - now using /usr/sbin/menu."
  291.  
  292.     ${USBIN}/menu -r -f ${Menu} -o ${OF} \
  293.         1>${TTY} 2>${UPDTMP}/menu.err <${TTY}
  294.  
  295.     if [ ${?} -ne 0 ]
  296.     then
  297.         MenuClear
  298.         ${BIN}/message "menu: `${BIN}/cat ${UPDTMP}/menu.err`"
  299.         LogMsg "MenuCmd: `GetText COMPLEXIT` - 1"
  300.         RmExit 1
  301.     fi
  302.     unset Menu
  303.  
  304.     LogMsg "MenuCmd: `GetText COMPLETED`"
  305.     DbgMsg "MenuCmd: COMPLETED"
  306. }
  307.  
  308.  
  309. #
  310. # Get a request for a text message, and place it on stdout
  311. #
  312. # $1 - text keyword
  313. GetText ()
  314. {
  315.     # Load appropriate message database.  Done here to get keywords
  316.     # that may be set during execution.
  317.     file=${UPDINST}/script.txt.${UPDLANG}
  318.     [ -f "${file}" ] || file=${UPDINST}/script.txt
  319.     ${BIN}/sed -n -e "s/^${1}://p" ${file} 2> /dev/null
  320.     unset file
  321. }
  322.  
  323. #
  324. # Set the locale to C, saving old values
  325. #
  326. SetCLocale ()
  327. {
  328.     LogMsg "Locale_C: `GetText STARTED`"
  329.     DbgMsg "Locale_C: STARTED"
  330.     SAV_TIME=${LC_TIME}
  331.     SAV_MESSAGES=${LC_MESSAGES}
  332.     SAV_CTYPE=${LC_CTYPE}
  333.     SAV_NUMERIC=${LC_NUMERIC}
  334.     SAV_LANG=${LANG}
  335.     LC_TIME=C
  336.     LC_MESSAGES=C
  337.     LC_CTYPE=C
  338.     LC_NUMERIC=C
  339.     LANG=C
  340.     export LANG LC_TIME LC_MESSAGES LC_CTYPE LC_NUMERIC
  341.     export SAV_LANG SAV_TIME SAV_MESSAGES SAV_CTYPE SAV_NUMERIC
  342.     LogMsg "Locale_C: `GetText COMPLETED`"
  343.     DbgMsg "Locale_C: COMPLETED"
  344.     return 0
  345. }
  346.  
  347. #
  348. # Restore the locale settings, saved during last call to Locale_C
  349. #
  350. RestoreLocale ()
  351. {
  352.     LogMsg "RestoreLocale: `GetText STARTED`"
  353.     DbgMsg "RestoreLocale: STARTED"
  354.     LC_TIME=${SAV_TIME}
  355.     LC_MESSAGES=${SAV_MESSAGES}
  356.     LC_CTYPE=${SAV_CTYPE}
  357.     LC_NUMERIC=${SAV_NUMERIC}
  358.     LANG=${SAV_LANG}
  359.     export LANG LC_TIME LC_MESSAGES LC_CTYPE LC_NUMERIC
  360.     unset SAV_TIME SAV_MESSAGES SAV_CTYPE SAV_NUMERIC SAV_LANG
  361.     LogMsg "RestoreLocale: `GetText COMPLETED`"
  362.     return 0
  363. }
  364.  
  365. #
  366. # Remove a package component
  367. #   $1 - package component
  368. #   $2 - file to read for the contents database updates
  369. #   $3 - log file information
  370. RemoveF ()
  371. {
  372.     LogMsg "RemoveF: `GetText STARTED`"
  373.     DbgMsg "RemoveF: STARTED args: '${1}' '${2}' '${3}'"
  374.     DbgMsg "    UPDTMP=${UPDTMP}"
  375.     rpkg=${1}
  376.     cfile=${2}
  377.     ofile=/dev/null
  378.     if [ -n "${3}" ]
  379.     then
  380.         ofile=${3}
  381.     fi
  382.     DbgMsg "  RemoveF: rpkg='${rpkg}', cfile='${cfile}', ofile='${ofile}'"
  383.     ${BIN}/sort -u ${cfile} | ${USBIN}/removef ${rpkg} - >${ofile} 2>${UPDTMP}/removef.err
  384.     if [ ${?} -ne 0 ]
  385.     then
  386.         LogMsg "RemoveF: ${USBIN}/removef ${rpkg} - <${cfile} >${ofile} `GetText FAILED`"
  387.         DbgMsg "  RemoveF: ${USBIN}/removef ${rpkg} - <${cfile} >${ofile} failed"
  388.         ${BIN}/cat ${cfile} >>${UPDLOGFILE}
  389.         DbgMsg "  RemoveF: ${cfile} Contents:"
  390.         DbgAddFile ${cfile}
  391.         DbgMsg "  RemoveF: ${cfile} Contents End"
  392.         ${BIN}/cat ${UPDTMP}/removef.err >>${UPDLOGFILE}
  393.         DbgMsg "  RemoveF: ${UPDTMP}/removef.err Contents:"
  394.         DbgAddFile ${UDPTMP}/removef.err
  395.         DbgMsg "  RemoveF: ${UPDTMP}/removef.err Contents End\n"
  396.     else
  397.         LogMsg "RemoveF: ${USBIN}/removef ${rpkg} - <${cfile} >${ofile} `GetText SUCCEEDED`"
  398.         DbgMsg "  RemoveF: ${USBIN}/removef ${rpkg} - <${cfile} >${ofile} succeeded"
  399.     fi
  400.     unset rpkg cfile ofile
  401.  
  402.     LogMsg "RemoveF: `GetText COMPLETED`"
  403.     DbgMsg "RemoveF: COMPLETED"
  404.     return 0
  405. }
  406.  
  407. #
  408. # Does the final remove on a package to finalize contents file
  409. #    $1 - package component
  410. #    $2 - log file info
  411. #
  412. RemoveFClose ()
  413. {
  414.     LogMsg "RemoveFClose: `GetText STARTED`"
  415.     DbgMsg "RemoveFClose: STARTED args: '${1}' '${2}'"
  416.     rpkg=${1}
  417.     ofile=/dev/null
  418.     if [ -n "${2}" ]
  419.     then
  420.         ofile=${2}
  421.     fi
  422.     DbgMsg "  RemoveFClose: rpkg='${rpkg}', ofile='${ofile}'"
  423.     ${USBIN}/removef -f ${rpkg} >${ofile} 2>${UPDTMP}/removef.err
  424.     if [ ${?} -ne 0 ]
  425.     then
  426.         LogMsg "  RemoveFClose: ${USBIN}/removef -f ${rpkg} >${ofile} `GetText FAILED`"
  427.         DbgMsg "  RemoveFClose: ${USBIN}/removef -f ${rpkg} >${ofile} failed"
  428.         ${BIN}/cat ${UPDTMP}/removef.err >>${UPDLOGFILE}
  429.         DbgMsg "  RemoveF: ${UPDTMP}/removef.err Contents:"
  430.         DbgAddFile ${UDPTMP}/removef.err
  431.         DbgMsg "  RemoveF: ${UPDTMP}/removef.err Contents End\n"
  432.     else
  433.         LogMsg "RemoveFClose: ${USBIN}/removef -f ${rpkg} >${ofile} `GetText SUCCEEDED`"
  434.         DbgMsg "RemoveFClose: ${USBIN}/removef -f ${rpkg} >${ofile} succeeded"
  435.     fi
  436.     unset rpkg ofile
  437.  
  438.     LogMsg "RemoveFClose: `GetText COMPLETED`"
  439.     DbgMsg "RemoveFClose: COMPLETED"
  440.     return 0
  441. }
  442.  
  443. #
  444. # Start or update an existing working screen display
  445. #    $1 - Package Text Message being processed
  446. #         "-d" means delete existing message file
  447. #    $2 - Percentage completed
  448. #
  449. WorkMenu ()
  450. {
  451.     LogMsg "WorkMenu: `GetText STARTED`"
  452.     DbgMsg "WorkMenu: STARTED args: '${1}' '${2}'"
  453.  
  454.     WORKING=${UPDMENUDIR}/working
  455.     [ -n "${1}" ] && MSG="${1}"
  456.     [ -n "${2}" ] && GAUGE=${2} || GAUGE=0
  457.  
  458.     [ ${GAUGE} -eq 0 ] && WorkMenuKill
  459.     echo "echo MSG=\"${MSG}\"; echo PCT=${GAUGE}%; echo GAUGE=${GAUGE}" \
  460.         >${WORKING}.sh
  461.  
  462.     [ -f ${WORKING}.kill ] || {
  463.         ${BIN}/chmod 755 ${WORKING}.sh
  464.         menu_colors regular
  465.         UPD_PKGSH="" \
  466.         ${USBIN}/menu -r -f ${UPDMENUDIR}/wrking.menu \
  467.             -o /dev/null 1>${TTY} 2>/dev/null <${TTY} &
  468.         ${BIN}/cat >${WORKING}.kill <<EOF_KILL
  469. ${BIN}/kill $! 2>/dev/null
  470. for i in 1 2 3 4
  471. do    ${BIN}/kill $! 2>/dev/null || break
  472.     ${BIN}/sleep 1
  473. done
  474. ${BIN}/rm -f ${WORKING}.kill
  475. EOF_KILL
  476.     }
  477.  
  478.     LogMsg "WorkMenu: `GetText COMPLETED` - msg=[${1}] pct=[${2}]"
  479.     DbgMsg "WorkMenu: COMPLETED - msg=[${1}] pct=[${2}]"
  480.     return 0
  481. }
  482.  
  483. #
  484. # Place perm, own, grp definitions in ${UPDTMP}/perms - only works for rwx
  485. #
  486. GetPerms () # $1 is the file to get permissions on
  487. {
  488.     DbgMsg "GetPerms: STARTED on ${1}"
  489.     line=`${BIN}/ls -l ${1} | ${BIN}/sed 's/  */ /g'`
  490.     perm=`echo "${line}" | ${BIN}/cut -d' ' -f1`
  491.     own=`echo "${line}" | ${BIN}/cut -d' ' -f3`
  492.     grp=`echo "${line}" | ${BIN}/cut -d' ' -f4`
  493.     p1=`echo "${perm}" | cut -c2-4`
  494.     p2=`echo "${perm}" | cut -c5-7`
  495.     p3=`echo "${perm}" | cut -c8-10`
  496.     nperm="0"
  497.     for part in "$p1" "$p2" "$p3"
  498.     do
  499.         num=0
  500.         [ "`echo "${part}" | grep "r"`" ] && num=`${BIN}/expr ${num} + 4`
  501.         [ "`echo "${part}" | grep "w"`" ] && num=`${BIN}/expr ${num} + 2`
  502.         [ "`echo "${part}" | grep "x"`" ] && num=`${BIN}/expr ${num} + 1`
  503.         nperm="${nperm}${num}"
  504.     done
  505.     DbgMsg "    Permissions: ${nperm} ${own} ${grp}"
  506.     echo "perm=\"${nperm}\"" > ${UPDTMP}/perms
  507.     echo "own=\"${own}\"" >> ${UPDTMP}/perms
  508.     echo "grp=\"${grp}\"" >> ${UPDTMP}/perms
  509.     DbgMsg "  GetPerms: CONTENTS of ${UPDTMP}/perms START"
  510.     DbgAddFile ${UPDTMP}/perms
  511.     DbgMsg "  GetPerms: CONTENTS of ${UPDTMP}/perms END"
  512.     DbgMsg "GetPerms: COMPLETED"
  513. }
  514.  
  515. #
  516. # Responsible for checking if there is enough space on disk, and how much
  517. # space is required in each file system.
  518. #
  519. CheckSpace ()
  520. {
  521.     # Now, create file ${UPDTMP}/fsspace with stuff to include in menu
  522.     #   Assume max of 10 chars for numbers.
  523.     printf "%11s%11s%11s%11s   %s\n" \
  524.         "${AVAILABLE_SPACE_MSG1}"  "${REQUIRED_SPACE_MSG1}" \
  525.         "${AVAILABLE_INODES_MSG1}" "${REQUIRED_INODES_MSG1}" \
  526.         "${MOUNT_POINT_MSG1}" > ${UPDTMP}/fsspace
  527.     printf "%11s%11s%11s%11s   %s\n" \
  528.         "${AVAILABLE_SPACE_MSG2}"  "${REQUIRED_SPACE_MSG2}" \
  529.         "${AVAILABLE_INODES_MSG2}" "${REQUIRED_INODES_MSG2}" \
  530.         "${MOUNT_POINT_MSG2}" >> ${UPDTMP}/fsspace
  531.  
  532.     if [ "${CLASSES}" = "" ]
  533.     then
  534.         DF=1
  535.         UPD_BKUP_KB=0
  536.         UPD_FLOPPY=0
  537.         return 0
  538.     fi
  539.  
  540.     [ -x ${UPDMENUDIR}/checkall ] || {
  541.         ${BIN}/cp ${UPDINST}/checkall ${UPDMENUDIR}/checkall
  542.         ${BIN}/chmod 555 ${UPDMENUDIR}/checkall
  543.     }
  544.     ${UPDMENUDIR}/checkall ${UPDINST}/Files ${UPDBKUPDIR}/bkupvars \
  545.         ${CLASSES} >> ${UPDTMP}/fsspace
  546.     space_status=$?
  547.     [ -s ${UPDBKUPDIR}/bkupvars ] && . ${UPDBKUPDIR}/bkupvars || DF=0
  548.     rm -f ${UPDBKUPDIR}/bkupvars
  549.  
  550.     case ${space_status} in
  551.     0)    return 0
  552.         ;;
  553.     2)    echo "\n${NO_DISK_MSG}" >> ${UPDTMP}/fsspace
  554.         return 1
  555.         ;;
  556.     3)    echo "\n${NO_INODE_MSG}" >> ${UPDTMP}/fsspace
  557.         return 1
  558.         ;;
  559.     *)    return 1
  560.         ;;
  561.     esac
  562. }
  563.  
  564. #
  565. # Remove the temporary entries specified and update the contents file
  566. #
  567. RemoveTemps ()
  568. {
  569.     DbgMsg "  RemoveTemps: Removing $1 entries"
  570.     grep "^${1}[ /]" /var/sadm/install/contents | awk '{print $1}' |
  571.         removef $PKGINST - >/dev/null 2>&1
  572.     rm -rf $1 >/dev/null 2>&1
  573.     DbgMsg "  RemoveTemps: Removing $1 entries complete"
  574. }
  575.  
  576.  
  577. MenuLang ()
  578. {
  579.     if   [ -f ${UPDINST}/menukey.txt.${UPDLANG} ]
  580.     then
  581.         . ${UPDINST}/menukey.txt.${UPDLANG}
  582.     else
  583.         . ${UPDINST}/menukey.txt
  584.     fi
  585.     if [ -f /etc/inst/locale/${UPDLANG}/menus/menu_colors.sh ]
  586.     then
  587.         . /etc/inst/locale/${UPDLANG}/menus/menu_colors.sh
  588.     else
  589.         . /etc/inst/locale/C/menus/menu_colors.sh
  590.     fi
  591. }
  592.