system/net/1.8.7/src/net inserter

Raw file
Back to index

(*************************************************************************)
(*** Insertiert alle notwendigen Pakete, die zum Betrieb des Netzes    ***)
(*** notwendig sind.                                                   ***)
(*** Berücksichtigt nur EUMEL - Versionen ab  1.8.1, sowie             ***)
(*** Multi-User-Version                                                ***)
(***                                                                   ***)
(***                                                                   ***)
(*** 23.05.87  ar                                                      ***)
(*************************************************************************)

LET netfile = "netz",
    multi files = "net files/M";


INT CONST version :: id (0);
THESAURUS VAR tesa;

head;
IF no privileged task
     THEN errorstop (name (myself) + " ist nicht privilegiert!")
  ELIF station number wrong
       THEN errorstop ("'define station' vergessen ")
FI;

IF version < 181 THEN versionsnummer zu klein
                 ELSE install net
FI.

no privileged task:
   NOT (myself < supervisor).

station number wrong:
   station (myself) < 1.

install net :
   IF NOT exists (netfile)
        THEN errorstop ("Datei " + netfile +" existiert nicht")
   FI;
   IF is multi THEN insert multi net
               ELSE errorstop ("Diese Netzversion ist nur für Multi-user Versionen freigegeben")
   FI;
   forget ("net install", quiet);
   net start.

net start :
    say line (" ");
    do ("start");
    do ("global manager (PROC (DATASPACE VAR, INT CONST, INT CONST, TASK CONST)
                         net manager)").

is multi :
   (pcb(9) AND 255) > 1.

insert multi net :
   hole dateien vom archiv;
   insert say and forget (tesa).

hole dateien vom archiv :
   fetch if necessary (multi files);
   tesa := ALL (multi files);
   forget (multi files, quiet);
   fetch if necessary (tesa - all);
   say line (" ");
   say line ("Archiv-Floppy kann entnommen werden.");
   release (archive).
   
   
head :
   IF online THEN page;
                  put center (" E U M E L  -  Netz  wird  installiert.");
                  line;
                  put center ("----------------------------------------");
                  line (2)
   FI.

versionsnummer zu klein : 
   errorstop ("Netzsoftware erst ab Version 1.8.1 insertierbar !").
 
PROC fetch if necessary (TEXT CONST datei) :
   IF NOT exists (datei) THEN say line ("Loading """ + datei + """...");
                              fetch (datei, archive)
   FI.
END PROC fetch if necessary;

PROC fetch if necessary (THESAURUS CONST tes) :
   do (PROC (TEXT CONST) fetch if necessary, tes)
END PROC fetch if necessary;

PROC insert say and forget (TEXT CONST name of packet): 
   IF online THEN INT VAR cx, cy;
                  put ("Inserting """ + name of packet + """..."); 
                  get cursor (cx, cy)
   FI;
   insert (name of packet); 
   IF online THEN cl eop (cx, cy); line FI;
   forget (name of packet, quiet)
END PROC insert say and forget;

PROC insert say and forget (THESAURUS CONST tes): 
   do (PROC (TEXT CONST) insert say and forget, tes)
END PROC insert say and forget;

PROC put center (TEXT CONST t):
   put center (t, xsize);
END PROC put center;

PROC put center (INT CONST zeile, TEXT CONST t):
   put center (zeile, t, xsize);
END PROC put center;

PROC put center (TEXT CONST t, INT CONST gesamtbreite):
   INT VAR cy;
   get cursor (cy, cy);
   put center (cy, t, gesamtbreite)
END PROC put center;

PROC put center (INT CONST zeile, TEXT CONST t, INT CONST gesamtbreite):
   cursor ((gesamtbreite - length (t)) DIV 2, zeile);
   put (t).
END PROC put center;

PROC cl eol: 
  out (""5"") 
END PROC cl eol;

PROC cl eop: 
  out (""4"") 
END PROC cl eop; 
 
PROC cl eol (INT CONST cx, cy): 
   cursor (cx, cy); 
   cl eol 
END PROC cl eol; 
 
PROC cl eop (INT CONST cx, cy): 
   cursor (cx, cy); 
   cl eop 
END PROC cl eop; 

PROC say line (TEXT CONST t):
    IF online THEN put line (t) FI
ENDPROC say line;