DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦2d93b84ca⟧ Ada Source

    Length: 21504 (0x5400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Ftp, pragma Module_Name 4 3538, pragma Subsystem Ftp_Interface, seg_028432

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Profile;
with Ftp_Defs;
with Ftp_Profile;
with Ftp_Name_Map;
with File_Transfer;

package Ftp is

    pragma Subsystem (Ftp_Interface, Private_Part => Closed);
    pragma Module_Name (4, 3538);

    function Profile_Get return Profile.Response_Profile renames Profile.Get;
    -- This declaration is introduced to avoid a name collision.


    ----|| non-interactive transfers ||----

    -- Move a file to some other machine:

    procedure Put (From_Local_File : String := "<IMAGE>";
                   To_Remote_File : String := "";
                   Remote_Machine : String := Ftp_Profile.Remote_Machine;
                   Username : String := Ftp_Profile.Username;
                   Password : String := Ftp_Profile.Password;
                   Account : String := Ftp_Profile.Account;
                   Remote_Directory : String := Ftp_Profile.Remote_Directory;
                   Remote_Type : Ftp_Name_Map.Machine_Type :=
                      Ftp_Profile.Remote_Type;
                   Append_To_File : Boolean := False;
                   Transfer_Type : Ftp_Defs.Type_Code :=
                      Ftp_Profile.Transfer_Type;
                   Transfer_Mode : Ftp_Defs.Mode_Code :=
                      Ftp_Profile.Transfer_Mode;
                   Transfer_Structure : Ftp_Defs.Structure_Code :=
                      Ftp_Profile.Transfer_Structure;
                   Send_Port : Boolean := Ftp_Profile.Send_Port_Enabled;
                   Response : Profile.Response_Profile := Profile.Get);


    -- Get a file from some other machine:

    procedure Get (From_Remote_File : String := "";
                   To_Local_File : String := "";
                   Remote_Machine : String := Ftp_Profile.Remote_Machine;
                   Username : String := Ftp_Profile.Username;
                   Password : String := Ftp_Profile.Password;
                   Account : String := Ftp_Profile.Account;
                   Remote_Directory : String := Ftp_Profile.Remote_Directory;
                   Remote_Type : Ftp_Name_Map.Machine_Type :=
                      Ftp_Profile.Remote_Type;
                   Append_To_File : Boolean := False;
                   Transfer_Type : Ftp_Defs.Type_Code :=
                      Ftp_Profile.Transfer_Type;
                   Transfer_Mode : Ftp_Defs.Mode_Code :=
                      Ftp_Profile.Transfer_Mode;
                   Transfer_Structure : Ftp_Defs.Structure_Code :=
                      Ftp_Profile.Transfer_Structure;
                   Send_Port : Boolean := Ftp_Profile.Send_Port_Enabled;
                   Response : Profile.Response_Profile := Ftp.Profile_Get);


    -- The following operations are more interactive, that is,
    -- they require that you first establish a connection to
    -- a remote machine, and then interact with it to transfer
    -- files.  Using FTP interactively allows you to do more
    -- things than you can do non-interactively.


    ----|| login operations ||----

    procedure Connect (To_Machine : String := Ftp_Profile.Remote_Machine;
                       Auto_Login : Boolean := Ftp_Profile.Auto_Login;
                       Username : String := Ftp_Profile.Username;
                       Password : String := Ftp_Profile.Password;
                       Account : String := Ftp_Profile.Account;
                       Remote_Directory : String :=
                          Ftp_Profile.Remote_Directory;
                       Remote_Roof : String := Ftp_Profile.Remote_Roof;
                       Remote_Type : Ftp_Name_Map.Machine_Type :=
                          Ftp_Profile.Remote_Type;
                       Transfer_Type : Ftp_Defs.Type_Code :=
                          Ftp_Profile.Transfer_Type;
                       Transfer_Mode : Ftp_Defs.Mode_Code :=
                          Ftp_Profile.Transfer_Mode;
                       Transfer_Structure : Ftp_Defs.Structure_Code :=
                          Ftp_Profile.Transfer_Structure;
                       Send_Port : Boolean := Ftp_Profile.Send_Port_Enabled;
                       Response : Profile.Response_Profile := Profile.Get);

    procedure Login (Username : String := Ftp_Profile.Username;
                     Password : String := Ftp_Profile.Password;
                     Account : String := Ftp_Profile.Account;
                     Remote_Directory : String := Ftp_Profile.Remote_Directory;
                     Remote_Roof : String := Ftp_Profile.Remote_Roof;
                     Remote_Type : Ftp_Name_Map.Machine_Type :=
                        Ftp_Profile.Remote_Type;
                     Transfer_Type : Ftp_Defs.Type_Code :=
                        Ftp_Profile.Transfer_Type;
                     Transfer_Mode : Ftp_Defs.Mode_Code :=
                        Ftp_Profile.Transfer_Mode;
                     Transfer_Structure : Ftp_Defs.Structure_Code :=
                        Ftp_Profile.Transfer_Structure;
                     Send_Port : Boolean := Ftp_Profile.Send_Port_Enabled;
                     Response : Profile.Response_Profile := Profile.Get);

    procedure Disconnect (Response : Profile.Response_Profile := Profile.Get);

    procedure Abandon (Response : Profile.Response_Profile := Profile.Get);

    -- Like Disconnect, but a bit stronger:
    -- Guaranteed to terminate the connection,
    -- even if the remote server is unresponsive.


    ----|| transfer parameter selection ||----

    -- The following procedures override the FTP_Profile values,
    -- but ONLY for the duration of the current connection.
    -- To modify the FTP_Profile values, see FTP_Profile.Set.

    procedure Use_Type (Value : Ftp_Defs.Type_Code := Ftp_Profile.Transfer_Type;
                        Response : Profile.Response_Profile := Profile.Get;
                        Account : String := Ftp_Profile.Account);

    procedure Use_Mode (Value : Ftp_Defs.Mode_Code := Ftp_Profile.Transfer_Mode;
                        Response : Profile.Response_Profile := Profile.Get;
                        Account : String := Ftp_Profile.Account);

    procedure Use_Structure (Value : Ftp_Defs.Structure_Code :=
                                Ftp_Profile.Transfer_Structure;
                             Response : Profile.Response_Profile := Profile.Get;
                             Account : String := Ftp_Profile.Account);

    procedure Use_Account (Account : String := Ftp_Profile.Account;
                           Response : Profile.Response_Profile := Profile.Get);

    procedure Send_Port (Enabled : Boolean := Ftp_Profile.Send_Port_Enabled;
                         Response : Profile.Response_Profile := Profile.Get);

    procedure Use_Remote_Type
                 (Value : Ftp_Name_Map.Machine_Type := Ftp_Profile.Remote_Type;
                  Response : Profile.Response_Profile := Profile.Get);

    procedure Use_Remote_Roof
                 (Value : String := Ftp_Profile.Remote_Roof;
                  Response : Profile.Response_Profile := Profile.Get);

    function Current_Remote_Type return Ftp_Name_Map.Machine_Type
        renames Ftp_Profile.Current_Remote_Type;
    function Current_Remote_Roof return String
        renames Ftp_Profile.Current_Remote_Roof;
    function Current_Connection return File_Transfer.Connect_Id;
    -- Returns the File_Transfer connection associated with the
    -- caller's current session.  File_Transfer operations, such
    -- as querying the outcome of the last transaction, can be
    -- performed on the resulting value.


    ----|| remote directory operations ||----

    procedure Change_Working_Directory
                 (Remote_Directory : String := Ftp_Profile.Remote_Directory;
                  Response : Profile.Response_Profile := Profile.Get;
                  Account : String := Ftp_Profile.Account);

    procedure Cwd (Remote_Directory : String := Ftp_Profile.Remote_Directory;
                   Response : Profile.Response_Profile := Profile.Get;
                   Account : String := Ftp_Profile.Account)
        renames Change_Working_Directory;

    procedure List (Remote_Pathname : String := "";
                    Verbose : Boolean := True;
                    To_Local_File : String :=
                       "";      -- default is current output
                    Response : Profile.Response_Profile := Profile.Get;
                    Account : String := Ftp_Profile.Account);

    procedure Delete (Remote_File : String;
                      Response : Profile.Response_Profile := Profile.Get;
                      Account : String := Ftp_Profile.Account);


    ----|| status operations ||----

    procedure Status (Argument : String := "";
                      Response : Profile.Response_Profile := Profile.Get);
    -- Display the status of the current connection.

    procedure Status_All (Argument : String := "";
                          Response : Profile.Response_Profile := Profile.Get);
    -- Display the status of all current connections.

    procedure Remote_Status (Argument : String := "";
                             Response : Profile.Response_Profile := Profile.Get;
                             Account : String := Ftp_Profile.Account);

    procedure Remote_Help (Argument : String := "";
                           Response : Profile.Response_Profile := Profile.Get;
                           Account : String := Ftp_Profile.Account);

    procedure Show_Profile (Response : Profile.Response_Profile := Profile.Get)
        renames Ftp_Profile.Show;
    -- Display the settings in the current profile.


    ----|| file transfer operations ||----

    procedure Store (From_Local_File : String := "<IMAGE>";
                     To_Remote_File : String := "";
                     Append_To_File : Boolean := False;
                     Response : Profile.Response_Profile := Profile.Get;
                     Remote_Type : Ftp_Name_Map.Machine_Type :=
                        Ftp.Current_Remote_Type;
                     Account : String := Ftp_Profile.Account);

    procedure Retrieve (From_Remote_File : String := "";
                        To_Local_File : String := "";
                        Append_To_File : Boolean := False;
                        Response : Profile.Response_Profile := Profile.Get;
                        Remote_Type : Ftp_Name_Map.Machine_Type :=
                           Ftp.Current_Remote_Type;
                        Account : String := Ftp_Profile.Account);


    ----|| transferring file sets ||----

    -- These operations are like their single-file cousins,
    -- above, except that they take wildcards, and move a
    -- bunch of files at a crack.  They're designed to support
    -- moving files between a subtree of the local directory
    -- system (whose root is designated by "Local_Roof"), to
    -- and from an isomorphic subtree of the remote directory
    -- system (whose root is designated by "Remote_Roof".
    -- File names are transformed between the naming conventions
    -- of the R1000 and whatever remote operating system is
    -- involved (designated by Remote_Type).  The transformation
    -- is complex: it is encapsulated in package FTP_Name_Map.

    -- If you want to flatten a file_set, that is, move files from
    -- many directories on one machine into a single directory on
    -- another, specify "" as the source roof (local_roof for Put,
    -- remote_roof for Get).

    -- Get_List and Retrieve_List retrieve files using a list
    -- stored in a file on your local machine.  This file must
    -- contain text, with one fully-qualified file name (in the
    -- form used by the REMOTE machine) per line.  No comments,
    -- no extra white space.

    -- Get_Set and Retrieve_Set depend on the remote machine to
    -- produce a list of files from the File_Set you specify:
    -- using the same primitive as List (Verbose => False).
    -- Sometimes this doesn't work, either because the wild
    -- card semantics on that machine won't stretch, or because
    -- the remote FTP server doesn't support wild cards.

    procedure Put_Set (From_Local_File_Set : String := "<IMAGE>";
                       Local_Roof : String := "$";
                       Remote_Roof : String := Ftp_Profile.Remote_Roof;
                       Remote_Machine : String := Ftp_Profile.Remote_Machine;
                       Username : String := Ftp_Profile.Username;
                       Password : String := Ftp_Profile.Password;
                       Account : String := Ftp_Profile.Account;
                       Remote_Directory : String :=
                          Ftp_Profile.Remote_Directory;
                       Remote_Type : Ftp_Name_Map.Machine_Type :=
                          Ftp_Profile.Remote_Type;
                       Append_To_File : Boolean := False;
                       Transfer_Type : Ftp_Defs.Type_Code :=
                          Ftp_Profile.Transfer_Type;
                       Transfer_Mode : Ftp_Defs.Mode_Code :=
                          Ftp_Profile.Transfer_Mode;
                       Transfer_Structure : Ftp_Defs.Structure_Code :=
                          Ftp_Profile.Transfer_Structure;
                       Send_Port : Boolean := Ftp_Profile.Send_Port_Enabled;
                       Response : Profile.Response_Profile := Profile.Get);

    procedure Get_Set (From_Remote_File_Set : String := "";
                       Local_Roof : String := "$";
                       Remote_Roof : String := Ftp_Profile.Remote_Roof;
                       Remote_Machine : String := Ftp_Profile.Remote_Machine;
                       Username : String := Ftp_Profile.Username;
                       Password : String := Ftp_Profile.Password;
                       Account : String := Ftp_Profile.Account;
                       Remote_Directory : String :=
                          Ftp_Profile.Remote_Directory;
                       Remote_Type : Ftp_Name_Map.Machine_Type :=
                          Ftp_Profile.Remote_Type;
                       Append_To_File : Boolean := False;
                       Transfer_Type : Ftp_Defs.Type_Code :=
                          Ftp_Profile.Transfer_Type;
                       Transfer_Mode : Ftp_Defs.Mode_Code :=
                          Ftp_Profile.Transfer_Mode;
                       Transfer_Structure : Ftp_Defs.Structure_Code :=
                          Ftp_Profile.Transfer_Structure;
                       Send_Port : Boolean := Ftp_Profile.Send_Port_Enabled;
                       Response : Profile.Response_Profile := Profile.Get);

    procedure Get_List (Remote_File_List : String := "";
                        Local_Roof : String := "$";
                        Remote_Roof : String := Ftp_Profile.Remote_Roof;
                        Remote_Machine : String := Ftp_Profile.Remote_Machine;
                        Username : String := Ftp_Profile.Username;
                        Password : String := Ftp_Profile.Password;
                        Account : String := Ftp_Profile.Account;
                        Remote_Directory : String :=
                           Ftp_Profile.Remote_Directory;
                        Remote_Type : Ftp_Name_Map.Machine_Type :=
                           Ftp_Profile.Remote_Type;
                        Append_To_File : Boolean := False;
                        Transfer_Type : Ftp_Defs.Type_Code :=
                           Ftp_Profile.Transfer_Type;
                        Transfer_Mode : Ftp_Defs.Mode_Code :=
                           Ftp_Profile.Transfer_Mode;
                        Transfer_Structure : Ftp_Defs.Structure_Code :=
                           Ftp_Profile.Transfer_Structure;
                        Send_Port : Boolean := Ftp_Profile.Send_Port_Enabled;
                        Response : Profile.Response_Profile := Profile.Get);

    procedure Store_Set (From_Local_File_Set : String := "<IMAGE>";
                         Local_Roof : String := "$";
                         Remote_Roof : String := Ftp.Current_Remote_Roof;
                         Remote_Type : Ftp_Name_Map.Machine_Type :=
                            Ftp.Current_Remote_Type;
                         Append_To_File : Boolean := False;
                         Response : Profile.Response_Profile := Profile.Get;
                         Account : String := Ftp_Profile.Account);

    procedure Retrieve_Set (From_Remote_File_Set : String := "";
                            Local_Roof : String := "$";
                            Remote_Roof : String := Ftp.Current_Remote_Roof;
                            Remote_Type : Ftp_Name_Map.Machine_Type :=
                               Ftp.Current_Remote_Type;
                            Append_To_File : Boolean := False;
                            Response : Profile.Response_Profile := Profile.Get;
                            Account : String := Ftp_Profile.Account);

    procedure Retrieve_List (Remote_File_List : String := "";
                             Local_Roof : String := "$";
                             Remote_Roof : String := Ftp.Current_Remote_Roof;
                             Remote_Type : Ftp_Name_Map.Machine_Type :=
                                Ftp.Current_Remote_Type;
                             Append_To_File : Boolean := False;
                             Response : Profile.Response_Profile := Profile.Get;
                             Account : String := Ftp_Profile.Account);


    ----|| constants of imported types ||----

    Ascii : constant Ftp_Defs.Type_Code := Ftp_Defs.Ascii;
    Ebcdic : constant Ftp_Defs.Type_Code := Ftp_Defs.Ebcdic;
    Image : constant Ftp_Defs.Type_Code := Ftp_Defs.Image;
    Binary : constant Ftp_Defs.Type_Code := Ftp_Defs.Binary;
    Local_Binary : constant Ftp_Defs.Type_Code := Ftp_Defs.Local_Binary;
    Local_Byte : constant Ftp_Defs.Type_Code := Ftp_Defs.Local_Byte;
    Ascii_Cc : constant Ftp_Defs.Type_Code := Ftp_Defs.Ascii_Cc;
    Ebcdic_Cc : constant Ftp_Defs.Type_Code := Ftp_Defs.Ebcdic_Cc;
    Ascii_Telnet : constant Ftp_Defs.Type_Code := Ftp_Defs.Ascii_Telnet;
    Ebcdic_Telnet : constant Ftp_Defs.Type_Code := Ftp_Defs.Ebcdic_Telnet;

    Stream : constant Ftp_Defs.Mode_Code := Ftp_Defs.Stream;
    Block : constant Ftp_Defs.Mode_Code := Ftp_Defs.Block;
    Compressed : constant Ftp_Defs.Mode_Code := Ftp_Defs.Compressed;

    File : constant Ftp_Defs.Structure_Code := Ftp_Defs.File;
    Recrd : constant Ftp_Defs.Structure_Code := Ftp_Defs.Recrd;
    Page : constant Ftp_Defs.Structure_Code := Ftp_Defs.Page;

    Rational : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Rational;
    R1000 : constant Ftp_Name_Map.Machine_Type := Rational;
    Unix : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Unix;
    Aos : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Aos;
    Mv : constant Ftp_Name_Map.Machine_Type := Aos;
    Vms : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Vms;
    Vax : constant Ftp_Name_Map.Machine_Type := Vms;
    Mvs : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Mvs;

end Ftp;

E3 Meta Data

    nblk1=14
    nid=0
    hdr6=28
        [0x00] rec0=1d rec1=00 rec2=01 rec3=02a
        [0x01] rec0=14 rec1=00 rec2=02 rec3=01c
        [0x02] rec0=12 rec1=00 rec2=03 rec3=02c
        [0x03] rec0=13 rec1=00 rec2=04 rec3=060
        [0x04] rec0=11 rec1=00 rec2=05 rec3=00c
        [0x05] rec0=17 rec1=00 rec2=06 rec3=016
        [0x06] rec0=12 rec1=00 rec2=07 rec3=000
        [0x07] rec0=17 rec1=00 rec2=08 rec3=00a
        [0x08] rec0=15 rec1=00 rec2=09 rec3=058
        [0x09] rec0=17 rec1=00 rec2=0a rec3=058
        [0x0a] rec0=14 rec1=00 rec2=0b rec3=076
        [0x0b] rec0=14 rec1=00 rec2=0c rec3=036
        [0x0c] rec0=11 rec1=00 rec2=0d rec3=00a
        [0x0d] rec0=10 rec1=00 rec2=0e rec3=056
        [0x0e] rec0=11 rec1=00 rec2=0f rec3=05a
        [0x0f] rec0=10 rec1=00 rec2=10 rec3=046
        [0x10] rec0=11 rec1=00 rec2=11 rec3=01a
        [0x11] rec0=13 rec1=00 rec2=12 rec3=016
        [0x12] rec0=11 rec1=00 rec2=13 rec3=090
        [0x13] rec0=0a rec1=00 rec2=14 rec3=000
    tail 0x21722363683c172764852 0x42a00088462060003