; crummy multiArchive extractor : By Neil Mohr
; $VER: crummy multiLHA extractor v1 (00:28 23 October 95)

;all specified archives must be in the same directory, with lha
;start with file1, file2 .. don't intersperse entries

(complete 0)
(welcome)

(set originalDisc (getAssign (getDevice @icon) "d"))
(set @default-dest "")
(set @app-name "")
(set counter 0)
(foreach "" "#?.lha" (set counter (+ counter 1)) )
(set completeVal (+ counter 1))
(set destPrompt "Where do you want the archives extracting?")

(user 2)
(message "\n\n\nTo use this installer properly you need\na hard drive, or at "
         "least, plenty of free memory.\n\n\nAlso this icon should be in the same "
         "directory as the archives, otherwise it will not work!")

(set file1  "AppTrashcan.lha"  )
(set file2  "AutoPEG20.lha"  )
(set file3  "CPUload2.lha"  )
(set file4  "DTpref20.lha"  )
(set file5  "Hexagons2.lha"  )
(set file6  "IconCopy.lha"  )
(set file7  "Iconian2_96.lha"  )
(set file8  "MagicFrames.lha"  )
(set file9  "SFX.lha"  )
(set file10 "ArexxAssm.lha"  )

(while (OR (= (getAssign (getDevice @default-dest) "d") originalDisc )
           (= originalDisc "") )
  (set destination
    (askdir (help @askdir-help) (prompt destPrompt)
    (newpath)
    (default "RAM:")
  ))
(set destPrompt "Where do you want the archives extracting?\nBut please don't pick the coverdisc!")
(set @default-dest destination)
)

(if (NOT (= (substr @default-dest (- (strlen @default-dest) 1) 1) ":")) (set @default-dest (cat @default-dest "/")))

(if (= (getDevice @default-dest) "RAM")
  (if (< (+(dataBase "total-mem")) 1000000) (message "\n\n\nYou may not have enough memory.\n\nPress proceed to try anyway."))
  (if (< (getDiskSpace @default-dest)) 1000000 (message "\n\n\nYou may not have enough disc space.\n\nPress proceed to try anyway."))
)

(set response (askoptions (prompt "Pick which archives to extract.") (help @askoptions-help) (choices

file1
file2
file3
file4
file5
file6
file7
file8
file9
file10

)) )

(set counter (- counter 1))

(until (= counter -1)

  (if (IN response counter) ((set @app-name file10)  (set response (- response 512)) ))
  (if (IN response counter) ((set @app-name file9)  (set response (- response 256)) ))
  (if (IN response counter) ((set @app-name file8)  (set response (- response 128)) ))
  (if (IN response counter) ((set @app-name file7)  (set response (- response 64)) ))
  (if (IN response counter) ((set @app-name file6)  (set response (- response 32)) ))
  (if (IN response counter) ((set @app-name file5)  (set response (- response 16)) ))
  (if (IN response counter) ((set @app-name file4)  (set response (- response 8)) ))
  (if (IN response counter) ((set @app-name file3)  (set response (- response 4)) ))
  (if (IN response counter) ((set @app-name file2)  (set response (- response 2)) ))
  (if (IN response counter) ((set @app-name file1)  (set response (- response 1)) ))

  (if (NOT (= @app-name ""))
    ( (complete (* (- completeVal counter ) (/ 100 completeVal)) )
      (working "\n\n\nI am now extracting " @app-name " to " @default-dest ".\n\nPlease Wait.")
      (set unArc (cat "c:lha x -m -k -r -x \"" @app-name "\" \"" @default-dest "\""))
      (if (> (run unArc) 0)  (message "\n\nLha reported an error when extracting " @app-name "\n\n to the destination path " @default-dest ".\n\nPress Proceed To Continue." ))
    )
  )

  (set counter (- counter 1))
  (set @app-name "")

)

(complete 100)
(exit "\n\nHopefully all your chosen files\nhave been extracted correctly!")

