; ImageFX-EGS Patch Installer Utility
;
; Written by Thomas Krehbiel (7/28/94)
;
; Copyright © 1994 Nova Design, Inc.
; All Rights Reserved

(

   ;-------------------------------------------------------------------
   ; Setup

   (set initialdir @default-dest)

   ; Ask where to install it...
   (set wheredir
      (askdir
         (prompt "Select the drawer where your current version "
                 "of ImageFX-EGS is located.")
         (help "Sure.")
         (default initialdir)
      )
   )

   (message "The ImageFX-EGS patch will be applied to the `" wheredir
            "' directory.  Is this correct?")

   (set @default-dest wheredir)

   ;-------------------------------------------------------------------
   ; See if we can determine what blasted version of the software
   ; we're patching over.

   (set programname (tackon wheredir "EGS-ImageFX"))
   (if (= 0 (exists programname))
      (
         (set programname (tackon wheredir "ImageFX-EGS"))
         (if (= 0 (exists programname))
            (
               (set programname (tackon wheredir "EFX"))
               (if (= 0 (exists programname))
                  (
                     (abort "Cannot locate ImageFX-EGS executable.")
                  )
               )
            )
         )
      )
   )

   ; Checksums:
   ;
   ; 1.6.447: sum = 254076085, size = 539548, date = 21-Apr-94
   ; 1.6.453: sum = 192611338, size = 539844, date = 06-May-94
   ;

   (working ("Calculating checksum for `%ls' (this may take a while)..." programname))
   (set checksum (getsum programname))

   (set patchname "")

   ;(if (= checksum 254076085)
   ;   (
   ;      (set patchname "EFX_1.6.447.pch")
   ;   )
   ;)
   (if (= checksum 192611338)
      (
         (set patchname "EFX_1.6.453.pch")
      )
   )

   (if (= patchname "")
      (
         (abort "This patch cannot be applied to this version of ImageFX-EGS.  "
                "No changes were made.")
      )
   )

   ;-------------------------------------------------------------------
   ; Apply the patches

   (working ("Patching %ls..." programname))

   ; run the patch
   (set errorcode
      (run
         ("spatch -o%ls -p%ls %ls"
            (tackon wheredir "EFX.new")
            patchname
            programname
         )
      )
   )
   (if (<> 0 errorcode)
      (
         (abort "Patch failed - no changes made.")
      )
   )

   ; delete any existing 'old' version
   (delete
      (tackon wheredir "EFX.old")
   )
   ; rename current version as old version
   (rename
      programname
      (tackon wheredir "EFX.old")
   )
   ; rename new version as current version
   (rename
      (tackon wheredir "EFX.new")
      programname
   )

   (message "Your old version of `" programname "' has been "
            "renamed and saved as `EFX.old'.")

   ; Installation complete!
)
