This is ftplib.h in view mode; [Download] [Up]
/*
* ftplib.h : Low-level routines for opening and using ftp connections.
*
* George Ferguson, ferguson@cs.rochester.edu, 29 Nov 1992.
*
* Based on ftplib by Amos Shapira (amoss@cs.huji.ac.il) and code
* from Alan Emtage (bajan@bunyip.com) and RFC 959.
*
Modified for use with the Object(FTPDaemon) category.
Scott Stark, stark@superc.che.udel.edu, Sat Jan 30 22:58:50 EST 1993
*/
#ifndef FTPLIB_H
#define FTPLIB_H
#include <sys/types.h>
#include <netinet/in.h>
typedef struct ftps
{
int socket_fd; /* socket descriptor of control connection */
FILE *ftpOut; /* output FILE pointer (of CTRL connection) */
int code; /* code of last reply */
struct sockaddr_in addr; /* address of the control connection */
int port_socket; /* the socket created for the PORT command */
int data_fd; /* a data connection established */
int transferType; /* current transfer mode */
int removeCR; /* 1 if want to remove CR from ASCII files */
id ftpConsole; // A Text(Console) for the control connection
BOOL connectTimedOut; // A flag indicating if connect() should timeout
char *replyBuffer; // A pointer to the reply message text
} FTPInfo, *FTPInfoPtr;
# include <arpa/ftp.h>
# include <arpa/telnet.h>
/*
* FTP reply codes, per RFC 959
*/
/* First digit */
#define FTP_REPLY_TYPE(X) (X/100)
#define FTP_REPLY_PRELIM(X) (FTP_REPLY_TYPE(X) == 1) /* +ve preliminary */
#define FTP_REPLY_COMPLETE(X) (FTP_REPLY_TYPE(X) == 2) /* +ve complete */
#define FTP_REPLY_CONTINUE(X) (FTP_REPLY_TYPE(X) == 3) /* +ve intermediate */
#define FTP_REPLY_TRANSIENT(X) (FTP_REPLY_TYPE(X) == 4) /* -ve transient */
#define FTP_REPLY_ERROR(X) (FTP_REPLY_TYPE(X) == 5) /* -ve permanent */
#define FTP_REPLY_OK(X) (X < 400)
#define FTP_REPLY_ERR(X) (X >= 400)
/* Second digit */
#define FTP_REPLY_FUNCTION(X) ((X%100)/10)
#define FTP_REPLY_SYNTAX(X) (FTP_REPLY_FUNCTION(X) == 0) /* syntax */
#define FTP_REPLY_INFO(X) (FTP_REPLY_FUNCTION(X) == 1) /* information */
#define FTP_REPLY_CONN(X) (FTP_REPLY_FUNCTION(X) == 2) /* connections */
#define FTP_REPLY_AUTH(X) (FTP_REPLY_FUNCTION(X) == 3) /*authentication*/
#define FTP_REPLY_UNSPEC(X) (FTP_REPLY_FUNCTION(X) == 4) /* unspecified */
#define FTP_REPLY_FILE(X) (FTP_REPLY_FUNCTION(X) == 5) /* file system */
/* Third digit */
#define FTP_REPLY_SPECIFIC(X) (X%10)
/* Reply Codes by Function Groups (comment text from RFC959) */
#define FTP_COMMAND_OK 200 /* Command okay. */
#define FTP_SYNTAX_ERROR 500 /* Syntax error, command unrecognized.
This may include errors such as
command line too long. */
#define FTP_PARM_SYNTAX_ERROR 501 /* Syntax error in parameters or
arguments. */
#define FTP_CMD_NOT_NEEDED 202 /* Command not implemented, superfluous
at this site. */
#define FTP_CMD_NOT_IMPL 502 /* Command not implemented. */
#define FTP_BAD_CMD_SEQ 503 /* Bad sequence of commands. */
#define FTP_CMD_PARM_NOT_IMPL 504 /* Command not implemented for that
parameter. */
#define FTP_RESTART_MARKER 110 /* Restart marker reply.
In this case, the text is exact and not
left to the particular implementation;
it must read:
MARK yyyy = mmmm
Where yyyy is User-process data stream
marker, and mmmm server's equivalent
marker (note the spaces between markers
and "="). */
#define FTP_SYS_STATUS 211 /* System status, or system help reply. */
#define FTP_DIR_STATUS 212 /* Directory status. */
#define FTP_FILE_STATUS 213 /* File status. */
#define FTP_HELP_MSG 214 /* Help message.
On how to use the server or the meaning
of a particular non-standard command.
This reply is useful only to the human
user. */
#define FTP_SYS_NAME 215 /* NAME system type.
Where NAME is an official system name
from the list in the Assigned Numbers
document. */
#define FTP_SERVICE_RDY_TIME 120 /* Service ready in nnn minutes. */
#define FTP_SERVICE_RDY_USER 220 /* Service ready for new user. */
#define FTP_SERVICE_CLOSING 221 /* Service closing control connection.
Logged out if appropriate. */
#define FTP_SERVICE_UNAVAILABLE 421 /* Service not available, closing control
connection. This may be a reply to any
command if the service knows it must
shut down. */
#define FTP_TRANSFER_STARTING 125 /* Data connection already open; transfer
starting. */
#define FTP_DATA_OPEN 225 /* Data connection open; no transfer in
progress. */
#define FTP_DATA_FAILED 425 /* Can't open data connection. */
#define FTP_DATA_CLOSE_OK 226 /* Closing data connection.
Requested file action successful (for
example, file transfer or file abort).*/
#define FTP_DATA_CLOSE_ABORT 426 /* Connection closed; transfer aborted. */
#define FTP_ENTERING_PASSIVE 227 /* Entering Passive Mode
(h1,h2,h3,h4,p1,p2). */
#define FTP_LOGIN_OK 230 /* User logged in, proceed. */
#define FTP_LOGIN_ERR 530 /* Not logged in. */
#define FTP_LOGIN_NEED_PASSWD 331 /* User name okay, need password. */
#define FTP_LOGIN_NEED_ACCT 332 /* Need account for login. */
#define FTP_FILE_NEED_ACCT 532 /* Need account for storing files. */
#define FTP_DATACONN_OPEN 150 /* File status okay; about to open data
connection. */
#define FTP_FILE_ACTION_OK 250 /* Requested file action okay, completed.*/
#define FTP_PATHNAME_CREATED 257 /* "PATHNAME" created. */
#define FTP_FILE_ACTION_PENDING 350 /* Requested file action pending further
information. */
#define FTP_FILE_UNAVAILABLE 450 /* Requested file action not taken.
File unavailable (e.g., file busy). */
#define FTP_ACTION_NOT_TAKEN 550 /* Requested action not taken.
File unavailable (e.g., file not found,
no access). */
#define FTP_ABORTED_LOCAL_ERR 451 /* Requested action aborted. Local error
in processing. */
#define FTP_ABORTED_PAGE_TYPE 551 /* Requested action aborted. Page type
unknown. */
#define FTP_INSUFFICIENT_SPACE 452 /* Requested action not taken.
Insufficient storage space in system.*/
#define FTP_EXCEEDED_ALLOCATION 552 /* Requested file action aborted.
Exceeded storage allocation (for
current directory or dataset). */
#define FTP_BAD_FILENAME 553 /* Requested action not taken.
File name not allowed. */
#endif FTPLIB_H
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.