|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 7168 (0x1c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Do_Backup, seg_001bc0
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Time_Utilities; with System_Backup; with Calendar; with Profile; with Message; with Daemon; with Tape; with Log; with Io; procedure Do_Backup (Variety : System_Backup.Kind := System_Backup.Full; Starting_At : String := "") is Warning : Duration; Start_Message : Boolean; Finish_Message : Boolean; Got_Snapshot_Info : Boolean := False; Delay_For : Duration; procedure Reset_Snapshot is begin if Got_Snapshot_Info then -- Restore snapshot warning to previous setting Daemon.Snapshot_Warning_Message (Interval => Warning); Daemon.Snapshot_Start_Message (Start_Message); Daemon.Snapshot_Finish_Message (Finish_Message); end if; end Reset_Snapshot; function New_Vol_Id return String is use Calendar; Now : Calendar.Time := Calendar.Clock; Base_Time : constant String := "July 16, 1986 at 00:00:01 AM"; Base : Calendar.Time := Time_Utilities.Convert_Time (Time_Utilities.Value (Base_Time)); Time_Since : Duration := Now - Base; Digit : constant String := "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; N : Integer := Integer (Time_Since) / 2; D : Integer; Volid : String (1 .. 6) := "******"; begin -- n is the (number of seconds since the base time) / 2. -- Treating this as a base 36 value, we take the image -- of it base 36. This will yield a unique 6 character -- value consisting of an alphabetic followed by 5 alpha_numerics. -- In 99 years, the first character will become numeric, -- making these values collide with the volids -- generated by the operator interface. for I in reverse Volid'Range loop D := N mod Digit'Length; Volid (I) := Digit (D + 1); N := N / Digit'Length; end loop; if N /= 0 then Log.Put_Line ("Time since base time has overflowed 6 digits."); end if; Log.Put_Line ("The backup tape's Volid is " & Volid); return Volid; end New_Vol_Id; begin if Starting_At'Length > 0 then begin Tape.Format_Tape (Drive => 0, Vol_Id => New_Vol_Id); Delay_For := Time_Utilities.Duration_Until (Time_Utilities.Value (Starting_At)); delay Delay_For; exception when others => Log.Put_Line ("Invalid starting time value given.", Kind => Profile.Error_Msg); end; end if; -- Warn users that backup is starting Message.Send_All ("Starting system backup"); -- Save current snapshot settings and turn off snapshot warnings. Daemon.Get_Snapshot_Settings (Warning, Start_Message, Finish_Message); Got_Snapshot_Info := True; Daemon.Snapshot_Warning_Message (Interval => 0.0); Daemon.Snapshot_Start_Message; -- Do the backup System_Backup.Backup (Variety => Variety); -- Take snapshot to make full backups official; i.e. allow differentials Daemon.Run ("Snapshot"); Reset_Snapshot; exception when others => Io.Put_Line (Io.Current_Error, "Backup failed with an unhandled exception."); Reset_Snapshot; end Do_Backup; pragma Main;
nblk1=6 nid=0 hdr6=c [0x00] rec0=23 rec1=00 rec2=01 rec3=032 [0x01] rec0=00 rec1=00 rec2=05 rec3=026 [0x02] rec0=12 rec1=00 rec2=06 rec3=050 [0x03] rec0=02 rec1=00 rec2=02 rec3=044 [0x04] rec0=1c rec1=00 rec2=03 rec3=014 [0x05] rec0=12 rec1=00 rec2=04 rec3=000 tail 0x20100f1ee7da18d656bc9 0x42a00088462065003