;
; $VER: InstallAFinder 1.3 (25.01.94)
; script to install ARTIKELFinder


(set AFinder_dest "dh0:Artikel-Finder")
(set @default-dest "")

(set p_pfad   "ARTIKELFinder")
(set pd_pfad "ARTIKELFinder_PD")
(set pddisk (cat pd_pfad ":"))
(set p_name  "ARTIKEL-Finder")
(set pd_name  "ARTIKEL-Finder_PD")

(set spfad0 "ARTIKELFinder_A")
(set spfad1 "ARTIKELFinder_D")
(set spfad2 "ARTIKELFinder_P")
(set spfad3 "ARTIKELFinder_S")
(set spfad4 "ARTIKELFinder_X")
(set spfad5 "ARTIKELFinder_K")

(set dbsnum 7)

(set dname0 "Amiga")
(set dname1 "AmigaDOS")
(set dname2 "AmigaPlus")
(set dname3 "AmigaSpecial")
(set dname4 "AmigaExtra")
(set dname5 "Kickstart")
(set dname6 "Artikel")

(set ndisk0 2)
(set ndisk1 1)
(set ndisk2 1)
(set ndisk3 1)
(set ndisk4 1)
(set ndisk5 1)
(set ndisk6 1)

(set runpd 0)

(set overwrite-help "Wenn Sie diesen Requester mit 'Ja' beantworten, wird ein eventuell schon vorhandener Datenbestand berschrieben!")

(set olduser @user-level)

(procedure copyMain
   (set ppart_1 "Hauptprogramm")
   (set ppart_2 "Hauptprogramms")
   (chooseDir)

   (if (exists pddisk (noreq))
      (
         (set runpd 1)
         (set prog_pfad pd_pfad)
         (set prog_name pd_name)
      )
      (
         (set prog_pfad p_pfad)
         (set prog_name p_name)
      )
   )

   (set source_disk prog_pfad)
   (getDisk)

   (set file (cat prog_pfad ":"))
   (set file (tackon file prog_name))

   (set dfile (tackon @default-dest prog_name))
   (if (= (exists dfile) 1)
      (
            
         (set ver_source (getversion file))
         (set ver_s (/ ver_source 65536))
         (set rev_s (- ver_source (* ver_s 65536)))
            
         (set ver_dest (getversion dfile))
         (set ver_d (/ ver_dest 65536))
         (set rev_d (- ver_dest (* ver_d 65536)))

         (if (= ver_source ver_dest)
            (
               (set docopy
                  (askbool
                     (prompt  "Die Version "ver_s"."rev_s" des Programmes \""
                              prog_name"\" ist vermutlich schon komplett in dem "
                              "angegebenen Zielverzeichnis installiert.\n"
                              "Wollen sie das Hauptprogramm erneut "
                              "installieren?")
                     (help    "Wenn Sie diesen Requester mit 'Ja' "
                              "beantworten, wird eine eventuell schon "
                              "vorhandene Version berschrieben!")
                     (choices "Ja" "Nein")
                  )
               )
               (if (= @user-level 0) (set docopy 1))
            )
         )
         (if (< ver_source ver_dest)
            (
               (set docopy
                  (askbool
                     (prompt  "ACHTUNG! In dem angegebenen Zielverzeichnis "
                              "befindet sich bereits die Version "
                              ver_d"."rev_d" des Programmes \""prog_name"\".\n"
                              "Wollen sie das Hauptprogramm mit der Version "
                              ver_s"."rev_s" erneut installieren?")
                     (help    "Wenn Sie diesen Requester mit 'Ja' "
                              "beantworten, wird eine eventuell schon "
                              "vorhandene neuere Version berschrieben!")
                     (choices "Ja" "Nein")
                  )
               )
               (if (= @user-level 0) (set docopy 0))
            )
         )
         (if (> ver_source ver_dest)
            (
               (set docopy
                  (askbool
                     (prompt  "In dem angegebenen Zielverzeichnis "
                              "befindet sich die Version "
                              ver_d"."rev_d" des Programmes \""prog_name"\".\n"
                              "Wollen sie das Hauptprogramm mit der Version "
                              ver_s"."rev_s" installieren?")
                     (help    "Wenn Sie diesen Requester mit 'Ja' "
                              "beantworten, wird eine eventuell schon "
                              "vorhandene ltere Version berschrieben!")
                     (choices "Ja" "Nein")
                  )
               )
               (if (= @user-level 0) (set docopy 1))
            )
         )
      )

      (
         (set docopy 1)
      )
   )

   (if (= docopy 1)
      (
         (set pcount 3)
         (set acount 0)
         (complete (/ (* (/ 10000 (+ pcount dbscount)) acount) 100) )
         (copyfiles
            (source  file)
            (dest    AFinder_dest)
            (infos)
         )
         (set acount 2)
         (complete (/ (* (/ 10000 (+ pcount dbscount)) acount) 100) )
         (if runpd
            (
               (set file (cat prog_pfad ":"))
               (set file (tackon file p_name))
            )
         )
         (set file (cat file ".img"))
         (copyfiles
            (source  file)
            (dest    AFinder_dest)
         )
         (if (<> dbscount 0)
            (
               (set acount 3)
               (complete (/ (* (/ 10000 (+ pcount dbscount)) acount) 100) )
            )
            (complete 100)
         )
      )
   )
)

(procedure copyDBS
   (set ppart_1 "Datenbestnde")
   (set ppart_2 "Datenbestandes")

   (chooseDir)

   (set a 0)
   (set b 0)

   (while (< a dbscount)

      (complete (/ (* (/ 10000 (+ dbscount pcount)) (+ a acount)) 100) )

      (until (BITAND 1 (shiftright answer2 b)) (set b (+ b 1)) )
      (set dbs b) 
      ( if ( = runpd 0 ) (set dbs (+ dbs 1)) )

      (select dbs
         (
            (set spfad pd_pfad)
            (set fname dname6)
            (set ndisk ndisk6)
         )
         (
            (set spfad spfad0)
            (set fname dname0)
            (set ndisk ndisk0)
         )
         (
            (set spfad spfad1)
            (set fname dname1)
            (set ndisk ndisk1)
         )
         (
            (set spfad spfad2)
            (set fname dname2)
            (set ndisk ndisk2)
         )
         (
            (set spfad spfad3)
            (set fname dname3)
            (set ndisk ndisk3)
         )
         (
            (set spfad spfad4)
            (set fname dname4)
            (set ndisk ndisk4)
         )
         (
            (set spfad spfad5)
            (set fname dname5)
            (set ndisk ndisk5)
         )
      )

      (set c 0)
         
      (while (< c ndisk)
         (set ofile spfad)
         (if (> ndisk 1) (set ofile (cat ofile (+ c 1))) )
         (set file ofile)
         (set file (cat file ":"))

         (set source_disk ofile)
         (getDisk)

         (set dname fname)
         (set dfile (tackon @default-dest dname))
         (if (= (exists dfile) 1)
            (
               (set sfile (tackon file dname))
                  
               (set check_s (getsize sfile))
               (set check_d (getsize dfile))
                  
               (if (= check_s check_d)
                  (
                     (set docopy
                        (askbool
                           (prompt  "Der Datenbestand \""dname"\" ist "
                              "vermutlich schon komplett in dem angegebenen "
                              "Zielverzeichnis installiert.\nWollen sie "
                              "den Datenbestand erneut installieren?")
                           (help    overwrite-help)
                           (choices "Ja" "Nein")
                        )
                     )
                     (if (= @user-level 0) (set docopy 1))

                  )
                        
                  (
                     (if (earlier sfile dfile)
                        (
                           (set docopy
                             (askbool
                               (prompt  "Der Datenbestand \""dname"\" ist "
                                 "vermutlich bereits in einer neueren "
                                 "Version in dem angegebenen "
                                 "Zielverzeichnis installiert.\nWollen sie "
                                 "den Datenbestand trotzdem installieren?")
                               (help    overwrite-help)
                               (choices "Ja" "Nein")
                             )
                           )
                           (if (= @user-level 0) (set docopy 0))
                        )

                        (
                           (set docopy
                             (askbool
                               (prompt  "Der Datenbestand \""dname"\" ist "
                                 "vermutlich in einer lteren Version in "
                                 "dem angegebenen Zielverzeichnis bereits "
                                 "installiert.\nWollen sie den neuen "
                                 "Datenbestand installieren?")
                               (help    overwrite-help)
                               (choices "Ja" "Nein")
                             )
                           )
                           (if (= @user-level 0) (set docopy 1))
                        )
                     )
                  )
               )
            )
            (
               (set docopy 1)
            )
         )

         (if (= docopy 1)
            (
               (if runpd
                  (
                     (copyfiles
                        (source  (cat file fname))
                        (dest    AFinder_dest)
                        (files)
                     )
                     (set fname (cat fname ".#?"))
                     (copyfiles
                        (source  file)
                        (dest    AFinder_dest)
                        (pattern fname)
                        (files)
                     )
                  )
                  (
                     (set fname (cat fname "#?"))
                     (copyfiles
                        (source  file)
                        (dest    AFinder_dest)
                        (pattern fname)
                        (files)
                     )
                  )
               )
            )
         )

         (set c (+ c 1))
      )

      (set a (+ a 1))
      (set b (+ b 1))

   )
   (complete 100)
)

(procedure getMags
   (if (< @user-level 1) (set olduser (user 1)) )

   (if (exists pddisk (noreq))
      (
         (set runpd 1)
         (set def 1)
      )
      (
         (set def 0)
      )
   )

   (set answer2
      (askoptions
         (prompt  "Welche Datenbestnde sollen installiert werden?")
         (help    "Whlen Sie die Datenbestnde aus, die sie installieren "
                  "mchten.\nEs knnen dabei mehrere Datenbestnde auf "
                  "einmal ausgewhlt werden.")
         (if runpd
            (choices "PD-Datenbestand" "Amiga-Magazin" "AmigaDOS" "AmigaPlus"
                     "AmigaSpecial" "AmigaSpecial Extra" "Kickstart")
            (choices "Amiga-Magazin" "AmigaDOS" "AmigaPlus" "AmigaSpecial"
                     "AmigaSpecial Extra" "Kickstart")
         )
         (default def)
      )
   )

   (user olduser)

   (set a 0)
   (set dbscount 0)
   (while (< a dbsnum)
      (if (BITAND 1 (shiftright answer2 a)) (set dbscount (+ dbscount 1)) )
      (set a (+ a 1))
   )
)

(procedure chooseDir
   (set ptext ("Bitte Verzeichnis fr \n%s auswhlen" ppart_1))

   (if (= @user-level 0) 
      (if (= (exists AFinder_dest (noreq)) 0)
         (user 1)
      )
   )

   (set AFinder_dest
      (askdir
         (prompt  ptext)
         (help    "Sie mssen zunchst den Pfad des Verzeichnisses angeben, "
                  "in das die Dateien kopiert werden sollen.\n"
                  "Noch nicht vorhandene Verzeichnisse knnen von diesem "
                  "Installationprogramm aus angelegt werden und "
                  "mit einem Schubladen-Icon versehen werden.")
         (default AFinder_dest)
         (newpath)
      )
   )
   (set @default-dest AFinder_dest)

   (user olduser)

)

(procedure getDisk
   (set disk-help ("Die Diskette \"%s\" wird bentigt, damit alle Dateien des %s in das angegebene Zielverzeichnis kopiert werden knnen." source_disk ppart_2))

   (askdisk
      (prompt  "Bitte legen sie die Diskette \""source_disk"\" in ein "
               "Laufwerk.")
      (help    disk-help)
      (dest    source_disk)
   )
)

(if (< @user-level 1) (set olduser (user 1)) )
(if (exists pddisk (noreq))
   (set def 2)
   (set def 0)
)
(set answer1
   (askchoice
      (prompt  "Welche Dateien sollen installiert werden?")
      (help    "Sie knnen entweder das Hauptprogramm, einzelne "
               "Datenbestnde oder beides installieren.")
      (choices "ARTIKELFinder" "Datenbestnde" "Beides")
      (default def)
   )
)
(user olduser)

(select answer1
   (
      (copyMain)
   )
   (
      (getMags)
      (copyDBS)
   )
   (
      (getMags)
      (copyMain)
      (copyDBS)
   )
)

(exit "Installationsvorgang beendet.")
