/*
    $VER: Compare.zprx V2.0 (16.1.97) © by Nils Görs


   Funktionsbeschreibung:

    Dieses Skript vergleicht die tatsächliche  Verzeichnisstruktur mit
    der Brettliste von Zodiac's Point. Findet das Skript Verzeichnisse
    die nicht in der  Brettliste vorhanden  sind werden diese in einem
    Fenster aufgelistet und können dann, auf Wunsch, gelöscht werden.
    Viel Spaß beim aufräumen ;-)


   Installation:

    Kopieren sie dieses Skript in  das  Rexx-Verzeichnis  von  ZP  und
    fügen  sie  danach  der  Datei  'fkeys.zp'  auf Wunsch den Eintrag
    "F1:SYS:Rexxc/RX ZPOINT:Rexx/Compare.zprx %s" hinzu.

    Alternativ hierzu können Sie auch folgende  Zeilen  in  die  Datei
    usermenus.zp einfügen:

    *Brettstruktur abgleichen
    SYS:Rexxc/RX Zodiac:Rexx/Compare.zprx %s


   Autor dieses Skripts:

       Nils Görs              Tel. : +49 (0)202 78xxxx
       Kaiserstr. 97a         EMail: N.Goers@Art-Line.de
       42329 Wuppertal          oder über das ZP-Support-Brett.

   Verwenden Sie bitte nach Möglichkeit elektronische Post!
*/

/*
*** Wie breit bzw. hoch soll das Fenster sein ? (0 = default)
*/
Fensterbreite = 600
Fensterhoehe  = 400

/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 *      Bitte geben Sie hier ihre Präferenzen ein !                *
 *******************************************************************/
 
/*******************************************************************
 *      Bitte unterhalb dieser Zeile nichts mehr verändern!        *
 *******************************************************************/
OPTIONS RESULTS
NL = '0a'x

/* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
PARSE ARG zpPort
IF zpPort == "" THEN
   zpPort = "ZPoint"
ADDRESS VALUE zpPort


PATHINFO HOME
Path = result
File = Path||"/boardlist.zp"

/*
** Open libs
*/

IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
   IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
      quit('Cannot open rexxtricks.library!',10)

/*
*** Erstellt eine Liste der Brettstruktur
*/
'GUILOCK text="Bitte haben Sie etwas Geduld..."'

ADDRESS COMMAND "list" Path "LFORMAT=%S%S ALL DIRS SORT=N >t:BrettStruktur"
 CALL RXTR_READFILE("t:BrettStruktur",BrettStruktur)

DO i = 1 to BrettStruktur.0
  Num=INDEX(BrettStruktur.i,":")+1
  BrettStruktur.i = SUBSTR(BrettStruktur.i,Num)
END

ADDRESS COMMAND "Delete t:BrettStruktur QUIET"

/*
*** hole die Pfadzuweisungen
*/
CALL OPEN(OFile,File,"Read")

i = 1

DO UNTIL EOF(OFile)
  Line = READLN(OFile)
   IF ABBREV(Line,"P:") THEN DO
     Line = SUBSTR(Line,3)
      Num=INDEX(Line,":")+1
      Pfad.i = SUBSTR(Line,Num)
     i = i+1
   END
END
CALL CLOSE(OFile)

Brettliste.0 = 0
Pfad.0 = i-1
k = 0

Num=INDEX(Path,":")
OrigPath=LEFT(Path,Num)

'GUILOCK text="Vergleiche nun Brettstruktur mit den Pfadzuweisungen der Brettliste..."'

DO i = BrettStruktur.0 TO 1 BY -1
   Nummer=RXTR_LSEARCH(BrettStruktur.i||'#?',Pfad,,,'PATTERN')
    IF nummer == -1 THEN DO
         ADDRESS COMMAND "List" OrigPath||BrettStruktur.i "NOHEAD ALL >NIL:"
          IF (rc) == 0 THEN DO
		k = k+1
		Brettliste.k = OrigPath||BrettStruktur.i
          END
    END
END

Brettliste.0 = k

IF Brettliste.0 = 0 THEN DO
 requestnotify "Es wurden keine Verzeichnisse",
             NL"gefunden die nicht genutzt werden."
EXIT(0)
END

fenster.title     = 'Bitte wählen Sie die Verzeichnisse aus, die gelöscht werden sollen.'
fenster.gadgettext= '_Löschen|_Abbrechen'
fenster.height	  = fensterhoehe
fenster.width     = fensterbreite
fenster.font      = 'SCREEN'
fenster.sort      = 'TRUE'
fenster.pubscreen = zpPort

'GUILOCK text="Compare.zprx läuft..."'

IF RXTR_VIEWLIST(Brettliste,fenster,destvar) THEN DO
 requestresponse "Verzeichnisse wirklich löschen?"
  IF (rc) = 0 THEN BREAK
'GUILOCK text="lösche Verzeichnisse..."'
 DO i = destvar.0 to 1 BY -1
   ADDRESS COMMAND "Delete" destvar.i "ALL QUIET"
 END
END
GUILOCK OFF
EXIT(0)
/*EOS*/
