home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 10 / Fresh_Fish_10_2352.bin / new / dev / obero / oberon / projectoberonsrc / backup.mod (.txt) < prev    next >
Oberon Text  |  1994-10-17  |  5KB  |  131 lines

  1. Syntax10.Scn.Fnt
  2. MODULE Backup; (*JG 26.8.90*)
  3.     IMPORT Diskette, Viewers, MenuViewers, Oberon, Texts, TextFrames;
  4.     CONST StandardMenu = "System.Close System.Copy System.Grow Edit.Search Edit.Store";
  5.     VAR T: Texts.Text; W: Texts.Writer; diroption: CHAR;
  6.     PROCEDURE Format*;
  7.     BEGIN
  8.         Texts.WriteString(W, "Backup.Format"); Texts.WriteLn(W);
  9.         Texts.Append(Oberon.Log, W.buf);
  10.         Diskette.Format; Diskette.InitDir; Diskette.WriteDir
  11.     END Format;
  12.     PROCEDURE Init*;
  13.     BEGIN
  14.         Texts.WriteString(W, "Backup.Init"); Texts.WriteLn(W);
  15.         Texts.Append(Oberon.Log, W.buf);
  16.         Diskette.InitDir; Diskette.WriteDir
  17.     END Init;
  18.     PROCEDURE List (name: ARRAY OF CHAR; date, time: LONGINT; size: LONGINT);
  19.     BEGIN
  20.         Texts.WriteString(W, name);
  21.         IF diroption = "d" THEN
  22.             Texts.WriteDate(W, time, date); Texts.Write(W, " "); Texts.WriteInt(W, size, 1)
  23.         END;
  24.         Texts.WriteLn(W)
  25.     END List;
  26.     PROCEDURE Directory*;
  27.         VAR par: Oberon.ParList; R: Texts.Reader; V: Viewers.Viewer;
  28.           date, time: LONGINT; nofEntries, nofClusters, X, Y: INTEGER; ch: CHAR;
  29.     BEGIN
  30.         par := Oberon.Par;
  31.         Texts.OpenReader(R, par.text, par.pos); Texts.Read(R, ch);
  32.         WHILE ch = " " DO Texts.Read(R, ch) END;
  33.         IF ch = "/" THEN Texts.Read(R, diroption) ELSE diroption := 0X END;
  34.         T := TextFrames.Text("");
  35.         Oberon.AllocateSystemViewer(Oberon.Par.vwr.X, X, Y);
  36.         V := MenuViewers.New(
  37.           TextFrames.NewMenu("Backup.Directory", StandardMenu),
  38.           TextFrames.NewText(T, 0),
  39.           TextFrames.menuH,
  40.           X, Y);
  41.         Diskette.ReadDir; Diskette.GetData(date, time, nofEntries, nofClusters);
  42.         Texts.WriteInt(W, nofEntries, 1); Texts.WriteString(W, " entries/ ");
  43.         Texts.WriteInt(W, nofClusters, 1); Texts.WriteString(W, " clusters");
  44.         Texts.WriteLn(W);
  45.         Diskette.Enumerate(List);
  46.         Texts.Append(T, W.buf)
  47.     END Directory;
  48.     PROCEDURE ReadAll*;
  49.     BEGIN
  50.         Texts.WriteString(W, "Backup.ReadAll reading"); Texts.WriteLn(W);
  51.         Texts.Append(Oberon.Log, W.buf);
  52.         Diskette.ReadAll
  53.     END ReadAll;
  54.     PROCEDURE ReadFile (VAR name: ARRAY OF CHAR);
  55.     BEGIN
  56.         Texts.WriteString(W, name); Texts.WriteString(W, " reading");
  57.         Texts.Append(Oberon.Log, W.buf);
  58.         Diskette.ReadFile(name);
  59.         IF Diskette.res # 0 THEN Texts.WriteString(W, " failed") END;
  60.         Texts.WriteLn(W);
  61.         Texts.Append(Oberon.Log, W.buf)
  62.     END ReadFile;
  63.     PROCEDURE ReadFiles*;
  64.         VAR par: Oberon.ParList; S: Texts.Scanner; T: Texts.Text; beg, end, time: LONGINT;
  65.     BEGIN
  66.         par := Oberon.Par;
  67.         Texts.WriteString(W, "Backup.ReadFiles"); Texts.WriteLn(W);
  68.         Texts.Append(Oberon.Log, W.buf);
  69.         Diskette.ReadDir;
  70.         par := Oberon.Par;
  71.         Texts.OpenScanner(S, par.text, par.pos); Texts.Scan(S);
  72.         WHILE S.class = Texts.Name DO ReadFile(S.s); Texts.Scan(S) END;
  73.         IF (S.class = Texts.Char) & (S.c = "^") THEN Oberon.GetSelection(T, beg, end, time);
  74.           IF time >= 0 THEN Texts.OpenScanner(S, T, beg); Texts.Scan(S);
  75.             IF S.class = Texts.Name THEN ReadFile(S.s) END
  76.           END
  77.         END
  78.     END ReadFiles;
  79.     PROCEDURE WriteFile (VAR name: ARRAY OF CHAR);
  80.     BEGIN
  81.         Texts.WriteString(W, name); Texts.WriteString(W, " writing");
  82.         Texts.Append(Oberon.Log, W.buf);
  83.         Diskette.WriteFile(name);
  84.         IF Diskette.res # 0 THEN Texts.WriteString(W, " failed") END;
  85.         Texts.WriteLn(W);
  86.         Texts.Append(Oberon.Log, W.buf)
  87.     END WriteFile;
  88.     PROCEDURE WriteFiles*;
  89.         VAR par: Oberon.ParList; S: Texts.Scanner; T: Texts.Text; beg, end, time: LONGINT;
  90.     BEGIN
  91.         par := Oberon.Par;
  92.         Texts.WriteString(W, "Backup.WriteFiles"); Texts.WriteLn(W);
  93.         Texts.Append(Oberon.Log, W.buf);
  94.         Diskette.ReadDir;
  95.         Texts.OpenScanner(S, par.text, par.pos); Texts.Scan(S);
  96.         WHILE S.class = Texts.Name DO WriteFile(S.s); Texts.Scan(S) END;
  97.         IF (S.class = Texts.Char) & (S.c = "^") THEN Oberon.GetSelection(T, beg, end, time);
  98.           IF time >= 0 THEN Texts.OpenScanner(S, T, beg); Texts.Scan(S);
  99.             IF S.class = Texts.Name THEN WriteFile(S.s) END
  100.           END
  101.         END;
  102.         Diskette.WriteDir
  103.     END WriteFiles;
  104.     PROCEDURE DeleteFile (VAR name: ARRAY OF CHAR);
  105.     BEGIN
  106.         Texts.WriteString(W, name); Texts.WriteString(W, " deleting");
  107.         Texts.Append(Oberon.Log, W.buf);
  108.         Diskette.DeleteFile(name);
  109.         IF Diskette.res # 0 THEN Texts.WriteString(W, " failed") END;
  110.         Texts.WriteLn(W);
  111.         Texts.Append(Oberon.Log, W.buf)
  112.     END DeleteFile;
  113.     PROCEDURE DeleteFiles*;
  114.         VAR par: Oberon.ParList; S: Texts.Scanner; beg, end, time: LONGINT;
  115.     BEGIN
  116.         par := Oberon.Par;
  117.         Texts.WriteString(W, "Backup.DeleteFiles"); Texts.WriteLn(W);
  118.         Texts.Append(Oberon.Log, W.buf);
  119.         Diskette.ReadDir;
  120.         Texts.OpenScanner(S, par.text, par.pos); Texts.Scan(S);
  121.         WHILE S.class = Texts.Name DO DeleteFile(S.s); Texts.Scan(S) END;
  122.         IF (S.class = Texts.Char) & (S.c = "^") THEN Oberon.GetSelection(T, beg, end, time);
  123.           IF time >= 0 THEN Texts.OpenScanner(S, T, beg); Texts.Scan(S);
  124.             IF S.class = Texts.Name THEN DeleteFile(S.s) END
  125.           END
  126.         END;
  127.         Diskette.WriteDir
  128.     END DeleteFiles;
  129. BEGIN Texts.OpenWriter(W); Diskette.Reset
  130. END Backup.
  131.