|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: F T
Length: 111864 (0x1b4f8)
Types: TextFile
Names: »FTP_HELP«
└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS
└─⟦91c658230⟧ »DATA«
└─⟦f6fec0485⟧
└─⟦this⟧
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3
└─⟦fc9b38f02⟧ »DATA«
└─⟦f95d63c89⟧
└─⟦this⟧
@node !Tools.Networking.File_Transfer
Package File_Transfer provides a programmatic interface for
carrying out file transfers using the File Transfer Protocol (FTP).
This package manages the state associated with the connection and
carries out the transfer of files and other information. The user
acquires resources by opening a connection that is identified by
the handle. This handle is used in subsequent commands to identify
the connection and its resources.
To use FTP, the user first opens a command connection between
the local machine and an FTP server on some remote machine. This
connection is used to communicate requests and status between the
two machines. Requests are sent across the command connection to
the remote server. These requests consist of commands followed
by optional arguments. The remote server reads these commands,
processes them, and then sends back a response informing the
host machine of the outcome of the command. The remote server
could have successfully processed the command, unsuccessfully
processed it, or not supported the command or some of its options.
In general, the communication is in the form of a negotiation
in which the local client makes a request and the remote server
responds as to whether it has accepted or rejected the request.
Each response sent back contains a three-digit number and some
text. The number is used by the local client to determine the
outcome of the latest request. The text is intended for the
user. The user can use the Read_Response procedure to read these
responses.
Both the remote and the local machines maintain information about
the various FTP options. When the user wants to change one of
these options, a negotiation takes place. If both machines support
the option, then the new value takes effect. If one or both of
the machines does not support the requested option, the old value
remains unchanged.
For the transfer of files, a second connection is used. This
connection is formed between the two machines when each file
transfer is invoked. The connection is formed by the remote server
and requires no special commands from the user. The protocol is
that the local client selects a connection and listens on it,
waiting for the remote server to connect. A transfer command, such
as Ftp.Store, is sent to the remote server, telling it the file
to transfer and that a connection is waiting. The remote server
connects to the local client and the file transfer occurs. The
specification for FTP defines the location of this data connection
relative to the command connection so that the remote server knows
where the host server will be listening. There is also a command
that can be sent to identify this connection. This command allows
the local client to clarify the identity of the connection; in
some cases, the local client can use a connection other than the
specified standard connection.
Several options control the transfer of data between the machines.
These options include Mode, which specifies how the bits of data
are to be transmitted, and Structure and Type, which define the
way in which the file is to be represented. The user can select
these options by using the Set_Mode, Set_Structure, and Set_Type
commands. There are multiple values for each of these options.
The reading and writing of the local files is carried out by using
one of two nonbyte-aligned input/output packages. If the user
has set the transfer type to Binary or Local_Binary, the local
client assumes that the file contains nonbyte-aligned data and
uses package !Io.Polymorphic_Io when manipulating the file. If
the user has set the transfer type to Ascii, Ebcdic, Image, or any
of the other types, then the file is manipulated using package
!Io.Device_Independent_Io.
Each implementation of FTP need not support all FTP options. The
local client itself supports only a subset of the options. When a
user selects a value for one of these options, the local client
first determines whether it can support that option. If the
local client does not support the new value, a status code of
No_Local_Support is returned and the setting is left at its old
value. If the local client does support the requested value, it
then sends a command to the remote server requesting that it update
its setting for that option to the new value. If the remote server
supports the option, it updates its setting and returns a response
indicating that it has done so. If it does not support the new
value, it returns a response indicating that the value has not been
changed. The local client processes the response and, if it was a
positive response, updates its local copy of the option to the new
value. If a negative response is received, the local copy remains
at its old setting. The status code for the command indicates the
outcome of each of these transactions.
Once the options have been agreed upon, the file transfer can
occur. When the user invokes a transfer command, the local
client prepares the second connection over which the file will
be transferred. The request is then sent to the remote machine
either to receive a file, writing it to the specified location, or
to send a copy of the specified file back to the local host. In
either case, the remote server initiates the connection for the
data connection and the file is transferred.
In addition to the file transfer commands, other FTP commands give
the user the ability to query the remote machine for status or
help information, get directory listings, or manipulate files on
the remote machines. Again, some of these commands are optional
for server implementations, and the user may receive a response
indicating that the command is not implemented.
@node !Tools.Networking.File_Transfer.Close
procedure Close (Connection : Connect_Id);
Closes the given connection.
The underlying resources associated with the connection are
released and made available for use by other connections.
If the given connection is connected, it is disconnected. If the
given connection is already closed or has never been opened, this
procedure does nothing.
@node !Tools.Networking.File_Transfer.Command_Is_Active
function Command_Is_Active (Connection : Connect_Id) return Boolean;
Indicates whether a command is currently being processed on the
given connection.
A command starts with the sending of the request to the remote
machine; it is complete when the completion response is received
from the remote machine.
If the connection is not open or is not connected, false is
returned.
@node !Tools.Networking.File_Transfer.Command_Status
procedure Command_Status (Connection : Connect_Id;
Status : out Ftp_Defs.Status_Code);
Returns the final status of the last operation performed.
If the connection is closed, or has never been opened, a status of
Ftp_Defs.Status_Code.Invalid_Use is returned. If the connection
is no longer connected to a remote machine, or was never connected,
then a status of Ftp_Defs.Status_Code.Network_Error is returned.
If the command is still in progress, this command blocks until the
command completes. Also, all remaining responses are ignored.
@node !Tools.Networking.File_Transfer.Connect
procedure Connect (Connection : Connect_Id;
To_Remote_Host : Transport_Defs.Host_Id;
Remote_Socket : Transport_Defs.Socket_Id :=
Default_Ftp_Socket);
Connects to an FTP server on some remote machine.
The user first must have executed the Open procedure to allocate
local resources. If the connection has not been opened, the
Connect procedure fails and the Command_Status procedure returns
Ftp_Defs.Status_Code.Invalid_Use.
@node !Tools.Networking.File_Transfer.Connect_Id
type Connect_Id is private;
Specifies the resources in this machine associated with the FTP
connection.
@node !Tools.Networking.File_Transfer.Current_Mode
function Current_Mode (Connection : Connect_Id) return Ftp_Defs.Mode_Code;
Returns the current transfer mode setting for the given connection.
If the connection is not open, the default mode
(Ftp_Defs.Default_Mode) is returned.
@node !Tools.Networking.File_Transfer.Current_Structure
function Current_Structure (Connection : Connect_Id)
return Ftp_Defs.Structure_Code;
Returns the current transfer structure setting for the given
connection.
If the connection is not open or is not connected, the default
structure (Ftp_Defs.Default_Structure) is returned.
@node !Tools.Networking.File_Transfer.Current_Type
function Current_Type (Connection : Connect_Id) return Ftp_Defs.Type_Code;
Returns the current transfer type setting for the given connection.
If the connection is not open or is not connected, the default type
(Ftp_Defs.Default_Type) is returned.
@node !Tools.Networking.File_Transfer.Data_Host_Id
function Data_Host_Id (Connection : Connect_Id)
return Transport_Defs.Host_Id;
Returns the local Host_Id for the transport connection that is used
to transfer the file data.
The value is the host identifier for the host machine.
@node !Tools.Networking.File_Transfer.Data_Socket_Id
function Data_Socket_Id (Connection : Connect_Id)
return Transport_Defs.Socket_Id;
Returns the local Socket_Id for the transport connection that is
used for the transfer of file data.
@node !Tools.Networking.File_Transfer.Default_Ftp_Socket
Default_Ftp_Socket : constant Transport_Defs.Socket_Id :=
(1 => 0, 2 => Socket_21);
Defines a constant for the Socket_Id for FTP servers.
@node !Tools.Networking.File_Transfer.Dio_File_Of
function Dio_File_Of (Connection : Connect_Id) return Ftp_Defs.Dio_Pointer;
Returns access to the file handle used internally by the FTP
transfer service when reading or writing files.
When carrying out nonbinary transfers, the local file transfer
server uses a specific file handle when reading from or writing
into a local file. These operations are done using package
!Io.Device_Independent_Io.
In some cases, a user may want to share access to this file handle.
An example could be that the user wants to have a program generate
data into a local file and then transfer that file across the
network. One way would be to write the data into a named file and
then request a file transfer to transfer the file given its name.
Another method would be to open this local file using the file
handle from package File_Transfer, write the information into the
file, and then reset the file for reading. File transfer is then
requested to transfer with no local filename given that informs
it that the file handle is already open. If the form expressing a
local filename is used, an error occurs because the local server
tries to open the named file using the handle that the user already
has in use.
@node !Tools.Networking.File_Transfer.Disconnect
procedure Disconnect (Connection : Connect_Id);
Disconnects the current command connection to the remote host.
If no connection exists, nothing happens.
@node !Tools.Networking.File_Transfer.End_Of_Line
function End_Of_Line (Connection : Connect_Id) return Boolean;
Returns true when the end of line of a response on the command
connection has been reached.
If no command is active and the function is called, then true is
returned.
@node !Tools.Networking.File_Transfer.End_Of_Response
function End_Of_Response (Connection : Connect_Id) return Boolean;
Returns true when there are no further responses to the current
command.
If no command is active, true is returned.
@node !Tools.Networking.File_Transfer.File_Transfer_Status
procedure File_Transfer_Status (Connection : Connect_Id;
Status : out Ftp_Defs.Transfer_Status);
Returns the current status of the most recent data transfer
request.
If the trans-
fer is active, the status Ftp_Defs.Transfer_Status.In_Progress
is returned. If the transfer is complete, the final outcome of the
transfer is returned.
@node !Tools.Networking.File_Transfer.Get_Owner
procedure Get_Owner (Connection : Connect_Id;
Owner : out Machine.Job_Id);
Returns the owner of the connection.
@node !Tools.Networking.File_Transfer.Is_Connected
function Is_Connected (Connection : Connect_Id) return Boolean;
Determines whether the specified connection is connected to a
remote machine.
@node !Tools.Networking.File_Transfer.Is_Logged_In
function Is_Logged_In (Connection : Connect_Id) return Boolean;
Returns, for the given connection, that the user has been
successfully logged into the remote host.
@node !Tools.Networking.File_Transfer.Is_Open
function Is_Open (Connection : Connect_Id) return Boolean;
Checks whether the specified connection is currently open.
If the connection is closed or has never been opened, false is
returned.
@node !Tools.Networking.File_Transfer.Last_Transfer_Length
function Last_Transfer_Length (Connection : Connect_Id) return Natural;
Returns a count of the number of bytes sent or received during the
last file transfer.
@node !Tools.Networking.File_Transfer.Last_Transfer_Time
function Last_Transfer_Time (Connection : Connect_Id) return Duration;
Returns the time taken to complete the last file transfer.
@node !Tools.Networking.File_Transfer.Most_Recent_Command
function Most_Recent_Command (Connection : Connect_Id)
return Ftp_Defs.Ftp_Commands;
Indicates which command was last executed.
This can be an active command or the last-finished command.
@node !Tools.Networking.File_Transfer.Most_Recent_Command_Status
function Most_Recent_Command_Status (Connection : Connect_Id)
return Ftp_Defs.Status_Code;
Returns the status value for the command most recently processed.
If the command is currently active, the status
Ftp_Defs.Status_Code.Command_In_Progress is returned.
@node !Tools.Networking.File_Transfer.Most_Recent_Response_Code
function Most_Recent_Response_Code (Connection : Connect_Id)
return Natural;
Returns the response code from the most recent response.
FTP responses from the remote host have a three-digit code number
at the beginning intended for use by a program to determine the
next processing step. This function makes those values visible to
the user.
@node !Tools.Networking.File_Transfer.Most_Recent_Transfer_Status
function Most_Recent_Transfer_Status (Connection : Connect_Id)
return Ftp_Defs.Transfer_Status;
Returns the current status of the most recent file transfer.
If the transfer is still active, the value
Ftp_Defs.Transfer_Status.In_Progress is returned.
@node !Tools.Networking.File_Transfer.Null_Connect_Id
Null_Connect_Id : constant Connect_Id;
Defines a constant representing the value for the socket number on
which the FTP server waits for a command connection.
@node !Tools.Networking.File_Transfer.Open
procedure Open (Connection : out Connect_Id;
Status : out Transport_Defs.Status_Code);
Allocates the resources required to form a connection.
Once opened, the connection can be connected and disconnected
many times. It continues to be associated with the same local
resources.
@node !Tools.Networking.File_Transfer.Pasv_Data_Host
function Pasv_Data_Host (Connection : Connect_Id)
return Transport_Defs.Host_Id;
Returns the Host_Id associated with the data connection the remote
user is waiting on after the Send_Pasv procedure has successfully
executed.
This function is used for third-party transfers (transfer of a file
between two remote machines, directed by the user's local machine).
@node !Tools.Networking.File_Transfer.Pasv_Data_Socket
function Pasv_Data_Socket (Connection : Connect_Id)
return Transport_Defs.Socket_Id;
Returns the Socket_Id associated with the data link being listened
to by the remote machine after the Send_Pasv procedure has
successfully executed.
@node !Tools.Networking.File_Transfer.Pio_File_Of
function Pio_File_Of (Connection : Connect_Id) return Ftp_Defs.Pio_Pointer;
Returns access to the file handle used internally by the FTP
transfer service when reading or writing binary files.
This function gives the user visibility to this handle so that a
user program can open and manipulate the file used by the transfer
service.
When transferring files, the transfer service uses a specific file
handle for access to the file being transferred. This function
allows a user program to share access to this handle. In this way,
a user can retrieve data into a local file and still have control
over the file.
It is important that the user not manipulate the file handle while
the file transfer is in progress. Also, once the transfer has
completed, the user must close the file handle. If the user has
this handle still open, the server is unable to open the new file.
@node !Tools.Networking.File_Transfer.Read_Response
procedure Read_Response (Connection : Connect_Id;
Message : out String;
Count : out Natural);
Returns the text messages received from the FTP server on the
remote host.
The messages still contain the code values found at the start of
the messages. The messages are line-oriented.
@node !Tools.Networking.File_Transfer.Remote_Host_Id
function Remote_Host_Id (Connection : Connect_Id)
return Transport_Defs.Host_Id;
Returns the Host_Id for the remote server to which the connection
is currently connected.
@node !Tools.Networking.File_Transfer.Send_Account
procedure Send_Account (Connection : Connect_Id;
Account : String);
Transmits account information to the remote host that may be
required for login or file access.
@node !Tools.Networking.File_Transfer.Send_Cwd
procedure Send_Cwd (Connection : Connect_Id;
Remote_Pathname : String);
Sends a request for the remote server to change the default
directory to that specified by the Remote_Pathname parameter.
@node !Tools.Networking.File_Transfer.Send_Data_Port
procedure Send_Data_Port (Connection : Connect_Id;
Host : Transport_Defs.Host_Id;
Socket : Transport_Defs.Socket_Id);
Transmits the identity of the local data link to the remote server.
In normal use, the user supplies the host and socket information
through the Data_Host_Id and Data_Socket_Id functions. There are
cases, however, in which a user may be using the local server as
an intermediary for communications between two remote servers. In
this case, the data port sent is for one of the remote machines.
@node !Tools.Networking.File_Transfer.Send_Delete
procedure Send_Delete (Connection : Connect_Id;
Remote_Filename : String);
Sends a request for the remote server to delete the specified file.
@node !Tools.Networking.File_Transfer.Send_Help_Request
procedure Send_Help_Request (Connection : Connect_Id;
Help_On : String := "");
Requests the server to send helpful information regarding its
implementation status over the command connection.
The response to the command is read using the Read_Response
procedure.
@node !Tools.Networking.File_Transfer.Send_Password
procedure Send_Password (Connection : Connect_Id;
Password : String);
Sends the password associated with the username previously sent.
This procedure must immediately follow the Send_Username procedure
when sent. A command status of Ftp_Defs.Status_Code.Need_Password
following Send_Username indicates that the password is needed.
@node !Tools.Networking.File_Transfer.Send_Pasv
procedure Send_Pasv (Connection : Connect_Id);
Requests the remote server to go into passive mode on its data
port.
This procedure is used in third-party transfers to put one of
the servers into the passive mode. The returned port identity is
sent to the partner server to complete the connection using the
Send_Data_Port procedure call. The remote returns the identity of
this port and the local server attempts to read this information.
If successful, the Pasv_Data_Host and Pasv_Data_Socket functions
return the Internet address for the remote data port. A command
status of Local_Pasv_Error indicates that the remote server acted
on the request but encountered problems trying to interpret the
response.
For a discussion of third-party transfers, see the ARPA RFC-765
documentation for the File Transfer Protocol Specification.
@node !Tools.Networking.File_Transfer.Send_Quit
procedure Send_Quit (Connection : Connect_Id);
Sends a request to log out the session from the remote server.
If the remote server accepts and processes this command, it
disconnects the command connection from its side after sending
the response. After reading the responses, the user should use the
Is_Connected function to determine that the line was successfully
disconnected.
@node !Tools.Networking.File_Transfer.Send_Site_Command
procedure Send_Site_Command (Connection : Connect_Id;
Argument : String);
Sends a site-specific request to the remote server.
Extensions and site-specific operations are performed using the
FTP protocol "SITE" command.
@node !Tools.Networking.File_Transfer.Send_Status_Request
procedure Send_Status_Request (Connection : Connect_Id;
Status_On : String := "");
Sends a request for the status of the remote server process.
@node !Tools.Networking.File_Transfer.Send_Username
procedure Send_Username (Connection : Connect_Id;
Username : String);
Sends username information to the remote FTP server.
This is the first command to be sent after a successful connection
has been made.
@node !Tools.Networking.File_Transfer.Send_Verbatim
procedure Send_Verbatim (Connection : Connect_Id;
Command : String);
Sends an arbitrary FTP protocol command.
The Command parameter is sent across the command connection
unchanged. This command must be a simple command that has no
side effects, such as causing the server to try to transfer a file.
The local client does not act on the responses but merely passes
them to the user.
@node !Tools.Networking.File_Transfer.Set_Allocation
procedure Set_Allocation (Connection : Connect_Id;
Pages : Natural;
Records : Natural);
Reserves storage space for the next file to be stored.
This command may be required by some servers to reserve sufficient
storage to accommodate the new file to be transferred. The
argument specifies the number of bytes to be reserved. This
command is not needed for Rational machines.
@node !Tools.Networking.File_Transfer.Set_Mode
procedure Set_Mode (Connection : Connect_Id;
New_Mode : Ftp_Defs.Mode_Code);
Sends a request for the transfer mode setting to be changed to a
specified value.
The local server first checks to see that it supports the mode; if
it does, the request is sent to the remote server. If a positive
response is received, the local setting is updated. If either
server does not support the new option, the current value is left
unchanged.
A command status of Ftp_Defs.Status_Code.No_Local_Support
indicates that the local server does not support the option.
A status of Command_Not_Implemented or Param_Not_Implemented
indicates that the remote server does not support the option.
@node !Tools.Networking.File_Transfer.Set_Owner
procedure Set_Owner (Connection : in Connect_Id;
Owner : Machine.Job_Id);
Sets the owner of a connection.
Each connection is owned by some job. When a job terminates, all
connections owned by it are closed automatically.
By default, a connection is owned by the job that owned it.
@node !Tools.Networking.File_Transfer.Set_Structure
procedure Set_Structure (Connection : Connect_Id;
New_Structure : Ftp_Defs.Structure_Code);
Sends a request for the transfer structure setting to be changed to
a specified value.
The local server first checks to see that it supports the mode; if
it does, the request is sent to the remote server. If a positive
response is received, the local setting is updated. If either
server does not support the new option, the current value is left
unchanged.
A command status of Ftp_Defs.Status_Code.No_Local_Support
indicates that the local server does not support the option.
A status of Command_Not_Implemented or Param_Not_Implemented
indicates that the remote server does not support the option.
@node !Tools.Networking.File_Transfer.Set_Type
procedure Set_Type (Connection : Connect_Id;
New_Type : Ftp_Defs.Type_Code);
Sends a request for the transfer type setting to be changed to a
specified value.
The local server first checks to see that it supports the mode; if
it does, the request is sent to the remote server. If a positive
response is received, the local setting is updated. If either
server does not support the new option, the current value is left
unchanged.
A command status of Ftp_Defs.Status_Code.No_Local_Support
indicates that the local server does not support the option.
A status of Command_Not_Implemented or Param_Not_Implemented
indicates that the remote server does not support the option.
@node !Tools.Networking.File_Transfer.Socket_21
Socket_21 : constant := 21;
Defines a constant representing the value for the socket number on
which the FTP server waits for a command connection.
@node !Tools.Networking.File_Transfer.Start_Directory_List
procedure Start_Directory_List (Connection : Connect_Id;
Remote_Pathname : String;
Verbose : Boolean := False);
procedure Start_Directory_List (Connection : Connect_Id;
Local_Filename : String;
Remote_Pathname : String;
Verbose : Boolean := False);
Sends a request for the remote server to transfer a copy of the
directory listing associated with the Remote_Pathname parameter as
a file transfer.
The first form assumes that the user has already opened the file
handle with a call to !Io.Device_Independent_Io.Open, using
Dio_File_Of(Connection).All to denote the file handle.
The second form opens the file and writes the contents of the
transfer into the file named by the Local_Filename parameter.
In both cases, the local server copies the data transferred into
the local file.
@node !Tools.Networking.File_Transfer.Start_Retrieve
procedure Start_Retrieve (Connection : Connect_Id;
Remote_Filename : String);
procedure Start_Retrieve (Connection : Connect_Id;
Local_Filename : String;
Remote_Filename : String;
Append : Boolean := False);
Sends a request for the remote server to transfer a copy of the
file specified by the Remote_Filename parameter to the local
server.
The first form assumes that the user has opened the file handle
for output using the appropriate open (Binary and Local_Binary
transfers use package !Io.Polymorphic_Io; the remainder use
package !Io.Device_Independent_Io).
In the second form, the local server stores the data in the file
specified by Local_Filename.
In both cases, the local server copies the data transferred into
the local file.
For multiple retrieves, the user should use the Send_Data_Port
command with the parameter values Null_Host_Id and Null_Socket_Id.
This will assign new sockets for the transfer.
@node !Tools.Networking.File_Transfer.Start_Store
procedure Start_Store (Connection : Connect_Id;
Remote_Filename : String;
Append : Boolean := False);
procedure Start_Store (Connection : Connect_Id;
Local_Filename : String;
Remote_Filename : String;
Append : Boolean := False);
Sends a request for the remote server to accept a copy of the file
specified by the Remote_Filename parameter transferred from the
local server.
The first form assumes that the user has opened the file handle
for input using the appropriate open (Binary and Local_Binary
transfers use package !Io.Polymorphic_Io; the remainder use
package !Io.Device_Independent_Io).
In the second form, the local server reads the contents of the
file specified by the Local_Filename parameter for transfer to the
remote server.
For multiple stores, the user should use the Send_Data_Port command
with the parameter values Null_Host_Id and Null_Socket_Id. This
will assign new sockets for the transfer.
@node !Tools.Networking.File_Transfer.Transfer_Is_Active
function Transfer_Is_Active (Connection : Connect_Id) return Boolean;
Returns true if a file transfer is currently active.
@node !Commands.Ftp
Package Ftp provides commands for carrying out file transfer to
and from remote machines, using the U.S. Department of Defense File
Transfer Protocol (FTP).
FTP is an interactive, session-oriented transfer protocol.
The user carries out a file transfer by first establishing a
connection to the remote machine over which requests are sent
and responses returned. Once this connection has been formed, the
remote server usually requires that the user supply username and
password information, much as if the user were logging onto the
machine itself. Some machines may require additional information
associating the user with a given account on the remote machine.
When the user has gained access to the remote machine, file
transfers can then take place. These transfers occur over a second
connection formed between the two machines when each file transfer
is invoked.
Several options control the transfer of data between the machines.
These options include Mode, which specifies how the bits of the
data are to be transmitted, and Structure and Type, which are used
to define the way in which the file is to be represented. The
user can select these options as parameters to various commands
or by using the specific Use_Mode, Use_Structure, and Use_Type
commands. There are multiple values for each of these options.
Each implementation of FTP need not support all of the choices.
The R1000 implementation, for example, supports only a subset of
the options. When a user selects a value for one of these options,
the client software first determines whether it can support that
option. If the client software does not support the new value,
the user is informed and the setting is left at its old value. If
the local client software does support the requested value, it
sends a command to the remote server requesting that it update its
setting for that option to the new value. If the remote server
supports the option, it updates its setting and returns a response
indicating that it has done so. If it does not support the new
value, it returns a response indicating that the value has not been
changed. The local client processes the response and, if it was a
positive response, updates its local copy of the option to the new
value. If a negative response is received, the local copy remains
at its old setting. The user receives log information indicating
the outcome of each of these transactions.
Once the options have been agreed upon, the file transfer can
occur. When the user invokes a transfer command, the server
prepares the second connection, over which the file will be
transferred. The request is then sent to the remote machine either
to receive a file, writing it into the specified location, or
to send a copy of the specified file back to the local host. In
either case, the remote server connects the data connection and the
file is transferred.
In addition to the file transfer commands, other commands
in package Ftp query the remote machine for status or help
information, get directory listings, or manipulate files on
the remote machine. Again, some of these commands are optional
for server implementations, and the user may receive a response
indicating that the command is not implemented.
Some commands (Get, Get_List, Get_Set, Put, Put_Set) bundle
several operations into one command. These commands go through
the complete cycle of connecting to the remote machine, logging
in, transferring files, and finally disconnecting from the remote
server. These commands allow the user to carry out all the steps
for a file transfer in one command.
Some of the transfer commands can move many files at a time
(Get_List, Get_Set, Put_Set, Retrieve_List, Retrieve_Set, and
Store_Set). The _Set commands accept a source filename with
wildcards, resolve that name on the source machine, and move all
the files to which the wildcard expands. The _List commands read a
list of remote filenames from a local file and transfer all of the
named files.
@node !Commands.Ftp.Abandon
procedure Abandon (Response : Profile.Response_Profile := Profile.Get);
Causes the connection to the remote host to be broken and local
resources freed.
This procedure is used when the remote server has become
unresponsive.
@node !Commands.Ftp.Aos
Aos : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Aos;
Defines a constant for a Unix machine that imports the Machine_Type
value of Aos from Ftp_Name_Map.
This constant is used to indicate that the transfer is to/from a
Data General computer using the AOS operating system.
@node !Commands.Ftp.Ascii
Ascii : constant Ftp_Defs.Type_Code := Ftp_Defs.Ascii;
Defines a constant that imports the Type_Code value of Ascii from
Ftp_Defs.
This constant is used to indicate that the file being transferred
is an ASCII text file.
@node !Commands.Ftp.Ascii_Cc
Ascii_Cc : constant Ftp_Defs.Type_Code := Ftp_Defs.Ascii_Cc;
Defines a constant that imports the Type_Code value of Ascii_Cc
from Ftp_Defs.
This constant is used to indicate that the file being transferred
is an ASCII text file with ASA (FORTRAN) vertical format control.
@node !Commands.Ftp.Ascii_Telnet
Ascii_Telnet : constant Ftp_Defs.Type_Code := Ftp_Defs.Ascii_Telnet;
Defines a constant that imports the Type_Code value of Ascii_Telnet
from Ftp_Defs.
This constant is used to indicate that the file being transferred
is an ASCII text file with Telnet vertical format control.
@node !Commands.Ftp.Binary
Binary : constant Ftp_Defs.Type_Code := Ftp_Defs.Binary;
Defines a constant that imports the Type_Code value of Binary from
Ftp_Defs.
This constant is used to indicate that the file being transferred
is binary data that are not byte-aligned.
@node !Commands.Ftp.Block
Block : constant Ftp_Defs.Mode_Code := Ftp_Defs.Block;
Defines a constant that imports the Mode_Code value of Block from
Ftp_Defs.
This constant is used to indicate that the file is transmitted as a
series of data blocks preceded by one or more header bytes.
@node !Commands.Ftp.Change_Working_Directory
procedure Change_Working_Directory
(Remote_Directory : String :=
Ftp_Profile.Remote_Directory;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Sets the user's working context on the remote machine.
@node !Commands.Ftp.Compressed
Compressed : constant Ftp_Defs.Mode_Code := Ftp_Defs.Compressed;
Defines a constant that imports the Mode_Code value of Compressed
from Ftp_Defs.
This constant is used to indicate that the file is compressed.
It sends replication of bytes and filler as control information
describing the number of repetitions of a given byte or filler.
@node !Commands.Ftp.Connect
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);
Forms a connection to a remote machine for an FTP file transfer
session.
If the user has specified automatic login, the username, password,
and account information are used to log onto the remote server.
If the user specifies that automatic login is not to occur, only
the connection is formed, and the user must supply the login
information later.
@node !Commands.Ftp.Current_Connection
function Current_Connection return File_Transfer.Connect_Id;
Returns the connection identification number for the current
connection.
@node !Commands.Ftp.Current_Remote_Roof
function Current_Remote_Roof return String
renames Ftp_Profile.Current_Remote_Roof;
Returns the current roof value for the remote host.
This value is used when moving multiple files to or from the remote
host to indicate the outermost point in the directory structure.
@node !Commands.Ftp.Current_Remote_Type
function Current_Remote_Type return Ftp_Name_Map.Machine_Type
renames Ftp_Profile.Current_Remote_Type;
Returns a value indicating the type of machine currently specified
for the remote host.
This information is used during automatic generation of remote
filenames to determine any translations needed for pathname
characters marking directory structure information.
@node !Commands.Ftp.Cwd
procedure Cwd
(Remote_Directory : String :=
Ftp_Profile.Remote_Directory;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account)
renames Ftp.Change_Working_Directory;
Sets the user's working context on the remote machine to be that
specified by the Remote_Directory parameter.
@node !Commands.Ftp.Delete
procedure Delete
(Remote_File : String;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Sends a request for the remote host to delete a file.
@node !Commands.Ftp.Disconnect
procedure Disconnect (Response : Profile.Response_Profile := Profile.Get);
Disconnects the current session from the remote machine.
This procedure sends the FTP protocol "QUIT" command and then
disconnects the network connection, freeing local resources.
If the user is not connected, nothing is done and an error message
is written into the log file.
@node !Commands.Ftp.Ebcdic
Ebcdic : constant Ftp_Defs.Type_Code := Ftp_Defs.Ebcdic;
Defines a constant that imports the Type_Code value of Ebcdic from
Ftp_Defs.
This constant indicates that the file being transferred uses the
eight-bit EBCDIC character representation.
@node !Commands.Ftp.Ebcdic_Cc
Ebcdic_Cc : constant Ftp_Defs.Type_Code := Ftp_Defs.Ebcdic_Cc;
Defines a constant that imports the Type_Code value of
Ebcdic_Telnet from Ftp_Defs.
This constant indicates that the file being transferred uses the
eight-bit EBCDIC character representation with ASA (FORTRAN)
vertical control.
@node !Commands.Ftp.Ebcdic_Telnet
Ebcdic_Telnet : constant Ftp_Defs.Type_Code := Ftp_Defs.Ebcdic_Telnet
Defines a constant that imports the Type_Code value of
Ebcdic_Telnet from Ftp_Defs.
This constant indicates that the file being transferred uses the
eight-bit EBCDIC character representation with Telnet vertical
control.
@node !Commands.Ftp.File
File : constant Ftp_Defs.Structure_Code := Ftp_Defs.File;
Defines a constant that imports the Structure_Code value of File
from Ftp_Defs.
This constant indicates that the file being transmitted is a
continuous sequence of data bytes.
@node !Commands.Ftp.Get
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);
Retrieves a file from a remote host.
This procedure is used as a one-step operation to retrieve a file
from a remote host. It forms a connection that logs in the user
and retrieves the file. At the end of the transfer, the connection
is disconnected.
@node !Commands.Ftp.Get_List
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);
Retrieves multiple files from a remote host.
This procedure is used as a one-step operation to retrieve multiple
files from a remote host. A connection is formed to the specified
machine. The connection is logged in using the user information
supplied. Files specified in the Remote_File_List parameter
are retrieved. At the end of the transfer, the connection is
disconnected.
The names of the local files are generated algorithmically from the
names of the remote files, using the Ftp_Name_Map.Remote_To_Local
function. The Local_Roof, Remote_Roof, and Remote_Type parameters
are used in this conversion.
@node !Commands.Ftp.Get_Set
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);
Retrieves multiple files from a remote host.
This procedure is used as a one-step operation to retrieve multiple
files from a remote host. A connection is formed to the specified
machine. The connection is logged in using the user information
supplied. Files matching the template From_Remote_File_Set are
retrieved and placed in the context indicated by the Local_Roof
parameter. At the end of the transfer, the connection is
disconnected.
The names of the local files are generated algorithmically from the
names of the remote files, using the Ftp_Name_Map.Remote_To_Local
function. The Local_Roof, Remote_Roof, and Remote_Type parameters
are used in this conversion.
@node !Commands.Ftp.Image
Image : constant Ftp_Defs.Type_Code := Ftp_Defs.Image;
Defines a constant that imports the Type_Code value of Image from
Ftp_Defs.
This constant indicates that binary data are transferred as
contiguous bits of eight-bit transfer bytes.
@node !Commands.Ftp.List
procedure List
(Remote_Pathname : String := "";
Verbose : Boolean := True;
To_Local_File : String := "";
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Produces a directory listing from the remote host.
@node !Commands.Ftp.Local_Binary
Local_Binary : constant Ftp_Defs.Type_Code := Ftp_Defs.Local_Binary;
Defines a constant that imports the Type_Code value of Local_Binary
from Ftp_Defs.
This constant indicates that the data transferred are not byte-
aligned or are from a server that does not support binary mode.
@node !Commands.Ftp.Local_Byte
Local_Byte : constant Ftp_Defs.Type_Code := Ftp_Defs.Local_Byte;
Defines a constant that imports the Type_Code value of Local_Byte
from Ftp_Defs.
This constant indicates that the data are transferred in logical
bytes of the size specified with the type.
@node !Commands.Ftp.Login
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);
Performs login procedures for the current connection.
This command is used when the Auto_Login feature of the Connect
procedure is not used.
@node !Commands.Ftp.Mv
Mv : constant Ftp_Name_Map.Machine_Type := Aos;
Defines a constant that imports a Machine_Type value of Aos from
Ftp_Name_Map.
This constant is used to indicate that the transfer is to/from a
Data General computer using the AOS operating system.
@node !Commands.Ftp.Mvs
Mvs : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Mvs;
Defines a constant that imports the Machine_Type value of Mvs from
Ftp_Name_Map.
This constant is used to indicate that the transfer is to/from an
IBM computer using the MVS operating system. It is not supported.
@node !Commands.Ftp.Page
Page : constant Ftp_Defs.Structure_Code := Ftp_Defs.Page;
Defines a constant that imports the Structure_Code value of Page
from Ftp_Defs.
This constant is used to indicate that the file consists of
independent, indexed pages.
@node !Commands.Ftp.Profile_Get
function Profile_Get return Profile.Response_Profile renames Profile.Get;
Returns the current response profile for the current job.
This function is used as a parameter to commands in the Environment
to supply the current response profile to those commands. The
function returns the response profile for the current job. If
a profile for the job has not been defined, the session default
profile is returned.
@node !Commands.Ftp.Put
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);
Stores a file onto a remote host.
This procedure is used as a one-step operation to store a file onto
a remote host. A connection is formed to the specified machine.
The connection is logged in using the user information supplied.
The local file is transferred to the remote machine and placed in
the remote file. At the end of the transfer, the connection is
disconnected.
@node !Commands.Ftp.Put_Set
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);
Stores multiple files onto a remote host.
This procedure is used as a one-step operation to store multiple
files onto a remote host. A connection is formed to the specified
machine. The connection is logged in using the user information
supplied. Files matching the template for the From_Local_File_Set
parameter are stored in the context indicated by the Remote_Roof
parameter. At the end of the transfer, the connection is
disconnected.
@node !Commands.Ftp.Rational
Rational : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Rational;
Defines a constant that imports the Machine_Type value of Rational
from Ftp_Name_Map.
This constant is used to denote a machine running the Rational
Environment.
@node !Commands.Ftp.R1000
R1000 : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Rational;
Defines a constant that imports the Machine_Type value of R1000
from Ftp_Name_Map.
This constant is used to denote a machine running the Rational
Environment.
@node !Commands.Ftp.Recrd
Recrd : constant Ftp_Defs.Structure_Code := Ftp_Defs.Recrd;
Defines a constant that imports the Structure_Code value of Recrd
from Ftp_Defs.
This constant is used to indicate that the file consists of
sequential records.
@node !Commands.Ftp.Remote_Help
procedure Remote_Help
(Argument : String := "";
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Requests help information from the remote server for commands.
@node !Commands.Ftp.Remote_Status
procedure Remote_Status
(Argument : String := "";
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Requests status information from the remote server.
The information returned varies from machine to machine. If an
argument is supplied, directory/file information is returned for
the file(s) specified by the argument.
@node !Commands.Ftp.Retrieve
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);
Retrieves a copy of a file from a remote machine.
The user session must already be connected and logged into the
remote machine.
@node !Commands.Ftp.Retrieve_List
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);
Retrieves multiple files from a remote machine, using a list of
remote filenames stored in a file on the local machine.
The files are stored on the local machine with names mapped
from the remote filenames. The names of the local files are
generated algorithmically from the names of the remote files,
using the Ftp_Name_Map.Remote_To_Local function. The Local_Roof,
Remote_Roof, and Remote_Type parameters are used in this
conversion.
@node !Commands.Ftp.Retrieve_Set
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);
Retrieves multiple files from a remote machine.
The names of the local files are generated algorithmically from the
names of the remote files, using the Ftp_Name_Map.Remote_To_Local
function. The Local_Roof, Remote_Roof, and Remote_Type parameters
are used in this conversion.
@node !Commands.Ftp.Send_Port
procedure Send_Port
(Enabled : Boolean := Ftp_Profile.Send_Port_Enabled;
Response : Profile.Response_Profile := Profile.Get);
Enables or disables the sending of port information to the remote
server.
To ensure that both the local and the remote server are consistent,
the FTP protocol supports an option to send the identity of the
data connection it will use during a file transfer. This command
allows the user to specify whether this option should be active.
If Send_Port is enabled, the host identifier and socket number
of the local data connection is sent to the remote server before
each transfer. The parameter should be set to true for transfer of
multiple files.
@node !Commands.Ftp.Show_Profile
procedure Show_Profile (Response : Profile.Response_Profile := Profile.Get)
renames Ftp_Profile.Show;
Displays the various package Ftp parameters in the session switch
file.
@node !Commands.Ftp.Status
procedure Status (Argument : String := "";
Response : Profile.Response_Profile := Profile.Get);
Displays local status such as the condition of the connection and
whether any command is active.
@node !Commands.Ftp.Status_All
procedure Status_All (Argument : String := "";
Response : Profile.Response_Profile := Profile.Get);
Displays information for all package Ftp connections originating
from this machine.
@node !Commands.Ftp.Store
procedure Store
(From_Local_File : String := "<IMAGE>";
To_Remote_File : String := "";
Append_To_File : Boolean := False;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Stores a copy of the local file onto the remote machine to which
the session is currently connected.
The transfer is conducted in accordance with all other separately
specified parameters (Text, Image, Block, and so on). The user
session must already be connected and logged into the remote
machine.
@node !Commands.Ftp.Store_Set
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);
Stores multiple files from the local machine onto the currently
connected remote machine.
The transfer is conducted in accordance with all other separately
specified parameters (Text, Image, Block, and so on).
@node !Commands.Ftp.Stream
Stream : constant Ftp_Defs.Mode_Code := Ftp_Defs.Stream;
Defines a constant that imports the Mode_Code value of Stream from
Ftp_Defs.
This constant is used to indicate that the data are transmitted as
a stream of bytes.
@node !Commands.Ftp.Unix
Unix : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Unix;
Defines a constant that imports the Machine_Type value of Unix from
Ftp_Name_Map.
This constant is used to denote a machine running under the UNIX
operating system.
@node !Commands.Ftp.Use_Account
procedure Use_Account
(Account : String := Ftp_Profile.Account;
Response : Profile.Response_Profile := Profile.Get);
Sends a request for the account setting to be changed to the
specified value.
@node !Commands.Ftp.Use_Mode
procedure Use_Mode
(Value : Ftp_Defs.Mode_Code := Ftp_Profile.Transfer_Mode;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Sends a request for the transfer mode setting to be changed to the
specified value.
The client first determines whether it supports the transfer
mode; if it does, the request is sent to the remote server. If
a positive response is received, the local setting is updated.
@node !Commands.Ftp.Use_Remote_Roof
procedure Use_Remote_Roof
(Value : String := Ftp_Profile.Remote_Roof;
Response : Profile.Response_Profile := Profile.Get);
Specifies the roof value to be used for the remote machine.
@node !Commands.Ftp.Use_Remote_Type
procedure Use_Remote_Type
(Value : Ftp_Name_Map.Machine_Type := Ftp_Profile.Remote_Type;
Response : Profile.Response_Profile := Profile.Get);
Specifies the machine type for the current connection.
This information is used when resolving differences in the
directory-naming conventions. When a connection is formed to a
remote machine, the service has no knowledge of the type of machine
to which it is connected. Therefore, the type must be specified
either through this command or as a parameter to the transfer
commands.
@node !Commands.Ftp.Use_Structure
procedure Use_Structure
(Value : Ftp_Defs.Structure_Code := Ftp_Profile.Transfer_Structure;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Sends a request for the transfer structure setting to be changed to
the specified value.
The client first determines whether it supports the structure; if
it does, the request is sent to the remote server. If a positive
response is received, the local setting is updated.
@node !Commands.Ftp.Use_Type
procedure Use_Type
(Value : Ftp_Defs.Type_Code := Ftp_Profile.Transfer_Type;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Sends a request for the transfer type setting to be changed to the
specified value.
The client first determines whether it supports the structure; if
it does, the request is sent to the remote server. If a positive
response is received, the local setting is updated.
@node !Commands.Ftp.Vax
Vax : constant Ftp_Name_Map.Machine_Type := Vms;
Defines a constant that imports a Machine_Type value of Vms from
Ftp_Name_Map.
This constant is used to denote a DEC machine using the VMS
operating system.
@node !Commands.Ftp.Vms
Vms : constant Ftp_Name_Map.Machine_Type := Ftp_Name_Map.Vms;
Defines a constant that imports a Machine_Type value of Vms from
Ftp_Name_Map.
This constant is used to denote a DEC machine using the VMS
operating system.
@node !Tools.Networking.Ftp_Defs
Package Ftp_Defs provides types that are used by packages Ftp and
File_Transfer and other networking software.
@node !Tools.Networking.Ftp_Defs.Default_Mode
Default_Mode : Mode_Code := Stream;
Specifies the default transfer mode used by the FTP protocol.
@node !Tools.Networking.Ftp_Defs.Default_Structure
Default_Structure : Structure_Code := File;
Specifies the default transfer structure used by the FTP protocol.
@node !Tools.Networking.Ftp_Defs.Default_Type
Default_Type : Type_Code := Ascii;
Specifies the default transfer type used by the FTP protocol.
@node !Tools.Networking.Ftp_Defs.Dio_Pointer
type Dio_Pointer is access Device_Independent_Io.File_Type;
Defines access to the type of file used during package Ftp transfer
operations.
This command allows the user to share access to the transfer file
with the package Ftp programmatic interface. In carrying out
nonbinary transfers, the local file transfer server uses a specific
file handle when reading from or writing into a local file. These
operations are done using package !Io.Device_Independent_Io. In
some cases, a user may want to share access to this file handle.
For example, a user may want to have a program generate data into
a local file and then transfer that file across the network. One
way would be to write the data into a named file and then request
file transfer to transfer the file given its name. Another method
would be to open this local file using the file handle from package
File_Transfer, write the information into the file, and then reset
the file for reading. File transfer is then requested to transfer
the file.
@node !Tools.Networking.Ftp_Defs.Ftp_Commands
type Ftp_Commands is (Login, Set_User, Set_Pass, Set_Account, Set_Type,
Set_Stru, Set_Mode, Set_Allocation, Send_File,
Send_File_Append, Retr_File, List_Directory,
Nlst_Directory, Do_Cwd, Do_Delete, Do_Help, Do_Stat,
Do_Port, Do_Pasv, Do_Site, Verbatim, Do_Quit, Noop);
Specifies the various operations performed by the FTP service.
Of interest when working with the programmatic interface, these
operations give the user the ability to check the current command
status.
Do_Cwd
Changes remote current working directory.
Do_Delete
Deletes file at remote host.
Do_Help
Gets help from remote.
Do_Pasv
Requests passive data operation.
Do_Port
Sends data port information.
Do_Quit
Logs off.
Do_Site
Sends FTP protocol "SITE" command.
Do_Stat
Gets status from remote.
List_Directory
Gets verbose directory listing.
Login
Forms the initial connection.
Nlst_Directory
Gets name list of directory.
Noop
Has no effect.
Retr_File
Retrieves file from remote.
Send_File
Sends file to remote.
Send_File_Append
Sends file and appends to remote file.
Set_Account
Sets account information.
Set_Allocation
Sets space allocation.
Set_Mode
Sets transfer mode information.
Set_Pass
Sets password information.
Set_Stru
Sets transfer structure information.
Set_Type
Sets transfer type information.
Set_User
Sets user information.
Verbatim
Sends an arbitrary FTP protocol command.
@node !Tools.Networking.Ftp_Defs.Ftp_Product_Is_Installed
function Ftp_Product_Is_Installed return Boolean;
Determines whether the FTP utility is installed on the user's
system.
@node !Tools.Networking.Ftp_Defs.Mode_Code
type Mode_Code is (Stream, Block, Compressed);
Defines the transmission modes for the transfer of data over the
FTP data connection.
Block
Transmits a file as a series of data blocks preceded by one or
more header bytes. The header bytes contain a count field and a
descriptor code. The count field indicates the total length of the
data block in bytes. The descriptor code indicates structure items
such as End_Of_File and End_Of_Record.
Compressed
Compresses and sends replications of bytes and filler as control
information describing the number of repetitions of a given byte or
filler.
Stream
Transmits data as a stream of bytes. There is no restriction on
the representation type used.
@node !Tools.Networking.Ftp_Defs.Pio_Handle
type Pio_Handle is
record
File_Handle : Polymorphic_Io.Handle;
Position : Polymorphic_Io.File_Position;
end record;
Defines the components of the file handle used when dealing with
binary transfers of data.
This command is used in the transfer of nonbyte-aligned data.
@node !Tools.Networking.Ftp_Defs.Pio_Pointer
type Pio_Pointer is access Pio_Handle;
Defines access to the type of file used during a binary transfer
operation.
This type allows the user to share access to the transfer file with
the package Ftp programmatic interface.
@node !Tools.Networking.Ftp_Defs.Status_Code
type Status_Code is (Command_In_Progress, Successful, Need_Password,
Need_Account, Not_Used, Transfer_Started,
Transfer_Complete, Transfer_Failed, Not_Logged_In,
Syntax_Error, Bad_Sequence, No_Local_Support,
Command_Not_Implemented, Param_Not_Implemented,
Local_Pasv_Error, Remote_Directory_Error, Timed_Out,
Network_Error, Invalid_Use, Unknown_Error);
Specifies the status of the current FTP operation.
Bad_Sequence
Indicates that sequenced commands (that is, username followed by
password) were done out of sequence.
Command_In_Progress
Indicates that the command is active pending a response.
Command_Not_Implemented
Indicates that the remote server does not implement the requested
command.
Invalid_Use
Indicates that the connection is not open or the caller is not a
valid user of the connection.
Local_Pasv_Error
Indicates that a Send_Pasv request got a successful response from
the remote server but the local server could not interpret the
returned port information.
Need_Account
Indicates that account information is needed to proceed.
Need_Password
Indicates that the command has completed successfully and the
password is needed next.
Network_Error
Indicates that some problem has occurred on the network. The
connection may have been lost.
No_Local_Support
Indicates that the local transfer worker has no local support for
the requested option.
Not_Logged_In
Indicates that the command failed because the user login procedure
failed or the user never logged in.
Not_Used
Indicates that the command is not needed at the remote server (that
is, no account is needed).
Param_Not_Implemented
Indicates that the remote server does not support the specified
option for the command (that is, the page structure transfer may
not be supported).
Remote_Directory_Error
Indicates a file or directory access error.
Successful
Indicates that the command has completed successfully.
Syntax_Error
Indicates a command syntax error (that is, the line is too long).
Timed_Out
Indicates that no response was received by the local server from
the last request sent.
Transfer_Complete
Indicates that the transfer has completed successfully.
Transfer_Failed
Indicates that the transfer failed. Refer to Transfer_Status type
to determine the reason for the failure.
Transfer_Started
Indicates that the transfer of data is currently being performed.
Unknown_Error
Indicates that an error response that could not be classified was
received.
@node !Tools.Networking.Ftp_Defs.Structure_Code
type Structure_Code is (File, Recrd, Page);
Defines the various representations for the structure of the file
during the transfer.
File
Indicates that the file is a continuous sequence of data bytes.
Page
Indicates that the file is made up of independent, indexed pages.
Recrd
Indicates that the file is made up of sequential records.
@node !Tools.Networking.Ftp_Defs.Transfer_Status
type Transfer_Status is (In_Progress, Ok, Local_Error, File_Error,
Line_Error, Open_Failed, Transfer_Abort,
Remote_File_Unavailable, Remote_File_Error,
Storage_Error, Unknown_Page_Type, Filename_Bad,
Comm_Line_Error, Unknown_Error);
Defines the various status codes associated with data transfers.
These status values are meaningful only after a data transfer has
been performed.
Comm_Line_Error
Indicates that the command link was lost during the data transfer,
which means that the outcome of the data transfer could not be
determined.
File_Error
Indicates that a transfer failed because of a local file error.
Filename_Bad
Indicates that the filename specified for the remote machine was
not allowed.
In_Progress
Indicates that a transfer is currently active.
Line_Error
Indicates a problem with the data line; the transfer could not be
completed.
Local_Error
Indicates that the transfer failed because of a local error in
processing.
Ok
Indicates that a transfer has successfully completed.
Open_Failed
Indicates that a data connection could not be opened to start the
transfer.
Remote_File_Error
Indicates that a file error occurred at the remote machine.
Remote_File_Unavailable
Indicates that the file was unavailable at the remote site.
Storage_Error
Indicates that the transfer failed because of storage limitations
at the remote machine.
Transfer_Abort
Indicates that the file transfer has been aborted.
Unknown_Error
Indicates that an error response that could not be classified was
received for the last transfer.
Unknown_Page_Type
Indicates that the remote machine did not recognize the page
structure used for data transfer.
@node !Tools.Networking.Ftp_Defs.Type_Code
type Type_Code is (Ascii, Ebcdic, Image, Binary, Local_Binary, Local_Byte,
Ascii_Cc, Ebcdic_Cc, Ascii_Telnet, Ebcdic_Telnet);
Defines the data representation for information transfer over the
data connection during FTP file transfers.
Ascii
Transfers text files. This is the default type for data transfer
and is intended for the transfer of text files. The data are
transmitted using the standard eight-bit NVT-ASCII representation
for the characters.
Ascii_Cc
Transfers ASCII type with ASA (FORTRAN) vertical format control.
Currently not supported by the Rational implementation.
Ascii_Telnet
Transfers ASCII type with Telnet vertical format control.
Currently not supported by the Rational implementation.
Binary
Transmits binary data that are not byte-aligned. This type is
similar to Image, but it is intended for true binary transfer
of data. This type is supported only by Rational FTP protocol
implementation. Binary data are sent with the final bits padded to
a byte boundary. An additional final byte specifies the number of
bits of padding added. The receiving server uses this information
to remove the padded bits and to store only the bits from the
original file.
Ebcdic
Transmits text files using eight-bit EBCDIC character
representation.
Ebcdic_Cc
Transfers EBCDIC type with ASA (FORTRAN) vertical format control.
Currently not supported by the Rational implementation.
Ebcdic_Telnet
Transfers EBCDIC type with Telnet vertical format control.
Currently not supported by the Rational implementation.
Image
Transmits binary data as contiguous bits of eight-bit transfer
bytes. The receiving site stores the data as contiguous bytes. It
should be noted that the transfer is in bytes.
Local_Binary
Transmits binary data that are not byte-aligned to or from a
server that does not support the Binary mode. Data are sent with
the final byte padded and the padding information added. The
receiving server does not remove them but instead stores all the
bytes sent. If a file with this padding information is retrieved
using Local_Binary, the padding information is removed and only the
binary image is stored in the local file. This mode allows storing
of binary files on non-Rational systems to be processed there or
later retrieved.
Local_Byte
Transfers data in logical bytes of the size specified with the
type. Currently not supported by the Rational implementation.
@node !Tools.Networking.Ftp_Name_Map
Package Ftp_Name_Map defines mappings between Rational object
names and filenames on other machines. When package Ftp is used
to transfer a set of files between machines, the package uses
these mappings to convert filenames. The mappings are intended to
preserve the information in filenames and to produce legal names on
the target machine. Directory names are mapped to directory names,
and filenames are mapped to filenames. Punctuation characters are
mapped to legal values.
The mapping functions are built around the idea of a roof.
Basically, a roof is an ancestor directory of the file being
transferred; that is, it contains the file or it contains a
directory that contains the file, and so on. For each set of
transferred files, the user specifies a Local_Roof (an ancestor
directory on the local machine) and a Remote_Roof (an ancestor
directory on the remote machine). Filenames are mapped on the
assumption that the directory subtrees under the two roofs are
isomorphic; that is, each directory under the local roof has a
correspondingly named directory under the remote roof. This is
intended to help the user maintain copies of the same objects on
two machines.
If the source file is immediately within the directory named by
the source roof, the target filename is immediately within the
directory named by the target roof. If there are directory levels
between the source roof and the source filename, the corresponding
directory levels are interposed between the target roof and the
target filename. If a source name is outside the source roof (that
is, the source roof does not identify a parent directory of the
source file), the target filename is immediately under the target
roof, with a simple name derived from the simple filename of the
source file.
To flatten a file set (that is, to transfer files from many
directories on the source machine into a single directory on the
target machine), the user specifies a null source roof ("").
This causes the mapping functions to map all filenames into the
directory identified by the target roof, with simple names mapped
from their source simple names.
The mappings are not invertible; mapping to a remote filename and
then mapping back does not always result in the same filename.
The mappings differ for various types of remote machines. The
differences primarily concern punctuation and restrictions on
names.
For Rational objects other than files, the mapping functions try
to put information about the type of the file in the filename.
For example, an Ada unit named My_Program will be mapped to the
filename My_Program.Ada or My_Program_Ada. This is useful because
Ada units are transferred as text. When a transferred unit arrives
at its destination, it will be Ada source, even though it may have
been a compiled program originally.
@node !Tools.Networking.Ftp_Name_Map.Local_To_Remote
function Local_To_Remote (File_Name : String;
Local_Roof : String;
Remote_Roof : String;
Remote_Type : Machine_Type) return String;
Maps the name of a local object to its remote form.
This function converts the filename on the local machine to a legal
filename on the target host. Directory names are converted to
legal directory names on the target host. Punctuation characters
in the host filenames and directories are converted to legal values
on the target host.
The function attempts to resolve the file and directory names
in their context. If it cannot resolve the names, the function
returns the best resolution possible.
This function can be used to ascertain the mappings before the file
is sent to the target host.
@node !Tools.Networking.Ftp_Name_Map.Machine_Type
type Machine_Type is new String;
Rational : constant Machine_Type := "Rational";
Unix : constant Machine_Type := "Unix";
Aos : constant Machine_Type := "Aos";
Vms : constant Machine_Type := "Vms";
Mvs : constant Machine_Type := "Mvs";
Specifies the types of remote machines supported by the mapping
functions.
Name mappings differ for various types of remote machines. The
differences primarily concern punctuation and restrictions on
names.
"Rational" denotes a machine running the Rational Environment.
Rational pathnames use the exclamation mark (!) to denote the root
and the period (.) to separate the simple names of directories.
Simple names are Ada simple names.
"Unix" denotes a machine running the UNIX operating system. UNIX
pathnames use the slash (/) to denote the root and to separate
the simple names of directories. The period (.) is commonly used
within a simple name to separate the object name and object class.
"Aos" denotes a machine running the Data General AOS operating
system. AOS pathnames use the colon (:) to denote the root and
to separate the simple names of directories. The period (.) is
commonly used within a simple name to separate the object name and
object class.
"Vms" denotes a machine running the DEC VMS operating system.
VMS pathnames use brackets ([]) to enclose directory pathnames.
Within the brackets, a period (.) separates the simple names of
directories. The period is also used within a simple filename to
separate the object name and object class.
"Mvs" denotes a machine running the IBM MVS operating system.
"Mvs" is not currently supported.
@node !Tools.Networking.Ftp_Name_Map.Remote_To_Local
function Remote_To_Local (File_Name : String;
Local_Roof : String;
Remote_Roof : String;
Remote_Type : Machine_Type) return String;
Maps the name of a remote file to its local form.
This function converts the filename on the remote machine to a
legal filename on the local host. Directory names are converted to
legal directory names on the local host. Punctuation characters in
the host filenames and directories are converted to legal values on
the local host.
The function attempts to resolve the file and directory names
in their context. If it cannot resolve the names, the function
returns the best resolution possible.
This function can be used to ascertain the mappings before the file
is sent to the local host.
@node !Tools.Networking.Ftp_Product
Package Ftp_Product provides a way to check whether the FTP product
has been installed on your machine.
@node !Tools.Networking.Ftp_Product.Is_Installed
function Is_Installed return Boolean;
Returns true if the FTP product has been installed on your machine.
@node !Tools.Networking.Ftp_Product.Is_Not_Installed
Is_Not_Installed : exception;
Defines an exception that is raised when an FTP subprogram is
called if the FTP product is not installed on your machine.
@node !Tools.Networking.Ftp_Profile
The main purpose of this package is to provide default values for
the FTP user interface (package Ftp).
Many parameter values are virtually constant for a given user. For
common applications, it is much easier to have the values of these
parameters automatically set to the commonly used values rather
than to specify parameter values each time the command is used.
The Rational Environment supplies two types of switches to do this:
o The session switches set parameter values at login. FTP uses
these session values for the duration of the login session.
o The library switches set parameter values for a given library.
For transfers done from a Command window inside a given library,
FTP uses the switch values associated with that library.
Switches are stored in files. The user can edit the switch values
in these files by means of the switch file object editor. The
!Commands.Switches.Edit command edits library switch files.
The !Commands.Switches.Edit_Session_Attributes command edits
session switch files. Refer to the Session and Job Management
(SJM) and Library Management (LM) books of the Rational Environment
Reference Manual for further information on switches.
There is a switch to provide a value for most FTP parameters. If
the user does not give the file transfer command a parameter value
in the FTP Command window:
1. FTP tries to get a value from the appropriate library switch
file.
2. If no value has been explicitly set for the library switch, FTP
tries to take the parameter value from the user's session switch
file.
3. If no value has been set for the session switch, FTP tries to
take the parameter value from one of the following files:
o Remote password file for username or password
o Remote session file for account name
4. If no value has been set in the remote files, FTP takes the
standard default.
By keeping this search sequence in mind, the user can set a
combination of library, session, and standard values for FTP's
parameter values. These values are available through package
Ftp_Profile.
The Rational Environment supports the following switches for FTP:
Account Auto_Login
Password Prompt_For_Account
Prompt_For_Password Remote_Directory
Remote_Machine Remote_Roof
Remote_Type Send_Port_Enabled
Transfer_Mode Transfer_Structure
Transfer_Type Username
@node !Tools.Networking.Ftp_Profile.Account
function Account return String;
Specifies the account information from the current switch files.
This information is supplied to the remote host when it requires
account information for login or file access. The default value is
the null string.
@node !Tools.Networking.Ftp_Profile.Auto_Login
function Auto_Login return Boolean;
Specifies the current setting from the current switch files,
indicating whether automatic login should occur when the user
connects to a remote machine.
The default value is false.
@node !Tools.Networking.Ftp_Profile.Current_Remote_Roof
function Current_Remote_Roof return String;
Returns the current roof value for the remote host.
This value is used when moving multiple files to or from the remote
host to indicate the outermost point in the directory structure.
@node !Tools.Networking.Ftp_Profile.Current_Remote_Type
function Current_Remote_Type return Ftp_Name_Map.Machine_Type;
Returns a value indicating the type of machine currently specified
for the remote host.
This information is used during automatic generation of remote
filenames to determine any translations needed for pathname
characters marking directory structure information.
@node !Tools.Networking.Ftp_Profile.Password
function Password return String;
Specifies the password information from the current switch files.
This information is supplied to the remote host when required for
login. The default value is the null string.
@node !Tools.Networking.Ftp_Profile.Prompt_For_Account
function Prompt_For_Account return Boolean;
Prompts for account information.
If the user has not already supplied account information and if
Prompt_For_Account is set to true, FTP will request that an account
be supplied. FTP will not echo the account string.
@node !Tools.Networking.Ftp_Profile.Prompt_For_Password
function Prompt_For_Password return Boolean;
Prompts for a password.
If the user has not already supplied a password and if
Prompt_For_Password is set to true, FTP will request that a
password be supplied. FTP will not echo the password.
@node !Tools.Networking.Ftp_Profile.Remote_Directory
function Remote_Directory return String;
Specifies the directory pathname from the current switch files to
be used when setting the context on the remote machine.
The default value is the null string.
@node !Tools.Networking.Ftp_Profile.Remote_Machine
function Remote_Machine return String;
Specifies the current machine name from the current switch files,
indicating to which machine an FTP connection should occur.
The default value is the null string.
@node !Tools.Networking.Ftp_Profile.Remote_Roof
function Remote_Roof return String;
Sets the remote roof directory to be used when transferring to or
from the remote machine.
The default value is the null string, which usually indicates the
current working directory.
@node !Tools.Networking.Ftp_Profile.Remote_Type
function Remote_Type return Ftp_Name_Map.Machine_Type;
Specifies the machine type for the remote machine.
The default value is Ftp_Name_Map.Rational.
@node !Tools.Networking.Ftp_Profile.Send_Port_Enabled
function Send_Port_Enabled return Boolean;
Specifies the current setting from the current switch files,
indicating whether the data port identifier command should be
sent before each transfer.
The default value is true.
@node !Tools.Networking.Ftp_Profile.Transfer_Mode
function Transfer_Mode return Ftp_Defs.Mode_Code;
Specifies the current setting from the current switch files,
indicating the mode of transfer to be used during file transfers.
The default value is Ftp_Defs.Default_Mode.
@node !Tools.Networking.Ftp_Profile.Transfer_Structure
function Transfer_Structure return Ftp_Defs.Structure_Code;
Specifies the current setting from the current switch files,
indicating the structure of transfer to be used during file
transfers.
The default value is Ftp_Defs.Default_Structure.
@node !Tools.Networking.Ftp_Profile.Transfer_Type
function Transfer_Type return Ftp_Defs.Type_Code;
Specifies the current setting from the current switch files,
indicating the type of transfer to be used during file transfers.
The default value is Ftp_Defs.Default_Type.
@node !Tools.Networking.Ftp_Profile.Username
function Username return String;
Specifies the current value for the current switch files,
indicating the username to be used for login to a remote FTP
server.
The default value is the username of the current session.
@node !Tools.Networking.Transfer_Generic
Package Transfer_Generic, a generic version of package Ftp, is used
with remote machines whose naming conventions are not supported by
package Ftp_Name_Map. Users can supply their own customized name-
mapping functions (as generic parameters) to replace the standard
name mappings provided by package Ftp_Name_Map.
with Ftp_Name_Map; ...
generic
with function Local_To_Remote (File_Name : String;
Local_Roof : String;
Remote_Roof : String;
Remote_Type : Ftp_Name_Map.Machine_Type)
return String;
with function Remote_To_Local (File_Name : String;
Local_Roof : String;
Remote_Roof : String;
Remote_Type : Ftp_Name_Map.Machine_Type)
return String;
package Transfer_Generic is
procedure Put (From_Local_File : String := ""; ...);
procedure Get (From_Remote_File : String := ""; ...);
procedure Store (From_Local_File : String := ""; ... );
procedure Retrieve (From_Remote_File : String := ""; ...);
procedure Put_Set (From_Local_File_Set : String := ""; ... );
procedure Get_Set (From_Remote_File_Set : String := ""; ... );
procedure Get_List (Remote_File_List : String := ""; ... );
procedure Store_Set (From_Local_File_Set : String := ""; ... );
procedure Retrieve_Set (From_Remote_File_Set : String := ""; ... );
procedure Retrieve_List (Remote_File_List : String := ""; ... );
end Transfer_Generic;
The behavior of the Transfer_Generic procedures is like that of
the correspondingly named procedures in package Ftp, except that
filenames are mapped using the generic formals. In fact, the
Ftp procedures are implemented as calls to an instantiation of
Transfer_Generic on the standard Ftp_Name_Map functions.
Ftp commands that do not map filenames do not have corresponding
commands in package Transfer_Generic.
@node !Tools.Networking.Transfer_Generic.Get
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 := Profile.Get);
Retrieves a file from a remote host.
This procedure is used as a one-step operation to retrieve a file
from a remote host. It forms a connection that logs in the user
and retrieves the file. At the end of the transfer, the connection
is disconnected.
@node !Tools.Networking.Transfer_Generic.Get_List
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);
Retrieves multiple files from a remote host.
This procedure is used as a one-step operation to retrieve multiple
files from a remote host. A connection is formed to the specified
machine. The connection is logged in using the user information
supplied. Files specified in the Remote_File_List parameter
are retrieved. At the end of the transfer, the connection is
disconnected.
The names of the local files are generated algorithmically from the
names of the remote files, using the Remote_To_Local function. The
Local_Roof, Remote_Roof, and Remote_Type parameters are used in
this conversion.
@node !Tools.Networking.Transfer_Generic.Get_Set
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);
Retrieves multiple files from a remote host.
This procedure is used as a one-step operation to retrieve multiple
files from a remote host. A connection is formed to the specified
machine. The connection is logged in using the user information
supplied. Files specified by the From_Remote_File_Set parameter
are retrieved and placed in the context indicated by Local_Roof.
At the end of the transfer, the connection is disconnected.
The names of the local files are generated algorithmically from the
names of the remote files, using the Remote_To_Local function. The
Local_Roof, Remote_Roof, and Remote_Type parameters are used in
this conversion.
@node !Tools.Networking.Transfer_Generic.Local_To_Remote
with function Local_To_Remote (File_Name : String;
Local_Roof : String;
Remote_Roof : String;
Remote_Type : Ftp_Name_Map.Machine_Type)
return String;
Returns the remote filename corresponding to the given local
filename.
It is recommended that this function call the
Ftp_Name_Map.Local_To_Remote function for any Remote_Type value
it does not support. In this way, the instantiation of Trans-
fer_Generic will be upwardly compatible with package Ftp.
@node !Tools.Networking.Transfer_Generic.Put
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);
Stores a file onto a remote host.
This procedure is used as a one-step operation to store a file onto
a remote host. A connection is formed to the specified machine.
The connection is logged in using the user information supplied.
The local file is transferred to the remote machine and placed in
the remote file. At the end of the transfer, the connection is
disconnected.
@node !Tools.Networking.Transfer_Generic.Put_Set
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);
Stores multiple files onto a remote host.
This procedure is used as a one-step operation to store multiple
files onto a remote host. A connection is formed to the specified
machine. The connection is logged in using the user information
supplied. Files specified by the From_Local_File_Set parameter
are stored in the context indicated by the Remote_Roof parameter.
At the end of the transfer, the connection is disconnected.
@node !Tools.Networking.Transfer_Generic.Remote_To_Local
with function Remote_To_Local (File_Name : String;
Local_Roof : String;
Remote_Roof : String;
Remote_Type : Ftp_Name_Map.Machine_Type)
return String;
Returns the local filename corresponding to the given remote
filename.
It is recommended that this function call the
Ftp_Name_Map.Remote_To_Local function for any Remote_Type value
it does not support. In this way, the instantiation of Trans-
fer_Generic will be upwardly compatible with package Ftp.
@node !Tools.Networking.Transfer_Generic.Retrieve
procedure Retrieve
(From_Remote_File : String := "";
To_Local_File : String := "";
Remote_Type : Ftp_Name_Map.Machine_Type :=
Ftp_Profile.Current_Remote_Type;
Append_To_File : Boolean := False;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Retrieves a copy of a file from a remote machine.
The user session must already be connected and logged into the
remote machine.
@node !Tools.Networking.Transfer_Generic.Retrieve_List
procedure Retrieve_List
(Remote_File_List : String := "";
Local_Roof : String := "$";
Remote_Roof : String :=
Ftp_Profile.Current_Remote_Roof;
Remote_Type : Ftp_Name_Map.Machine_Type :=
Ftp_Profile.Current_Remote_Type;
Append_To_File : Boolean := False;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Retrieves multiple files from a remote machine, using a list of
remote filenames stored in a file on this machine.
The files are stored on the local machine with names mapped from
the remote filenames. The names of the local files are generated
algorithmically from the names of the remote files, using the
Remote_To_Local function. The Local_Roof, Remote_Roof, and
Remote_Type parameters are used in this conversion.
@node !Tools.Networking.Transfer_Generic.Retrieve_Set
procedure Retrieve_Set
(From_Remote_File_Set : String := "";
Local_Roof : String := "$";
Remote_Roof : String :=
Ftp_Profile.Current_Remote_Roof;
Remote_Type : Ftp_Name_Map.Machine_Type :=
Ftp_Profile.Current_Remote_Type;
Append_To_File : Boolean := False;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Retrieves multiple files from a remote machine.
The names of the local files are generated algorithmically from the
names of the remote files, using the Remote_To_Local function. The
Local_Roof, Remote_Roof, and Remote_Type parameters are used in
this conversion.
@node !Tools.Networking.Transfer_Generic.Store
procedure Store
(From_Local_File : String := "<IMAGE>";
To_Remote_File : String := "";
Remote_Type : Ftp_Name_Map.Machine_Type :=
Ftp_Profile.Current_Remote_Type;
Append_To_File : Boolean := False;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Stores a copy of the local file onto the remote machine to which
the session is currently connected.
The transfer is conducted in accordance with all other separately
specified parameters (Text, Image, Block, and so on).
The user session must already be connected and logged into the
remote machine.
@node !Tools.Networking.Transfer_Generic.Store_Set
procedure Store_Set
(From_Local_File_Set : String := "<IMAGE>";
Local_Roof : String := "$";
Remote_Roof : String :=
Ftp_Profile.Current_Remote_Roof;
Remote_Type : Ftp_Name_Map.Machine_Type :=
Ftp_Profile.Current_Remote_Type;
Append_To_File : Boolean := False;
Response : Profile.Response_Profile := Profile.Get;
Account : String := Ftp_Profile.Account);
Stores multiple files from the local machine onto the currently
connected remote machine.
The transfer is conducted in accordance with all other separately
specified parameters (Text, Image, Block, and so on).