home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / internet / netlite / NET / h / FTP < prev    next >
Text File  |  1993-04-01  |  3KB  |  71 lines

  1. #define CTLZ    26              /* EOF for CP/M systems */
  2.  
  3. extern char userfile[]; /* List of user names and permissions */
  4.  
  5. #define MAXPATH 8               /* Maximum number of path/permission pairs */
  6.  
  7. /* Per-session control block */
  8. struct ftp {
  9.         struct ftp *prev;       /* Linked list pointers */
  10.         struct ftp *next;
  11.         struct tcb *control;    /* TCP control connection */
  12.         char state;
  13. #define COMMAND_STATE           0       /* Awaiting user command */
  14. #define SENDING_FILE_STATE      1       /* Sending file data to user */
  15. #define SENDING_DATA_STATE      2       /* Sending memory data to user */
  16. #define RECEIVING_STATE         3       /* Storing data from user */
  17. #define STARTUP_STATE           4       /* Starting up autologin */
  18. #define USER_STATE              5       /* Waiting for the user name */
  19. #define PASS_STATE              6       /* Waiting for the password */
  20.  
  21.         char type;              /* Transfer type */
  22. #define IMAGE_TYPE      0
  23. #define ASCII_TYPE      1
  24.  
  25.         FILE *fp;               /* File descriptor being transferred */
  26.         char *p;                /* Data in memory being transferred */
  27.         char *cp;               /* Data in memory current position */
  28.         struct socket port;     /* Remote port for data connection */
  29.         struct tcb *data;       /* Data connection */
  30.  
  31.         /* The following are used only by the server */
  32.         char *username;         /* Arg to USER command */
  33.         char *path[MAXPATH];    /* Allowable path prefix */
  34.         char perms[MAXPATH];    /* Permission flag bits */
  35. #define FTP_READ        1       /* Read files */
  36. #define FTP_CREATE      2       /* Create new files */
  37. #define FTP_WRITE       4       /* Overwrite or delete existing files */
  38.  
  39.         char *buf;              /* Input command buffer */
  40.         char cnt;               /* Length of input buffer */
  41.         char *cd;               /* Current directory name */
  42.  
  43.         /* And this is used only by the client */
  44.         struct session *session;
  45.         time_t start;           /* Time transfer started */
  46.         int    bytes;           /* No bytes transferred */
  47.         int    hash;            /* Hash mark printing on/off */
  48.         int    bell;            /* Bell on completion */
  49. };
  50.  
  51. #define NULLFTP (struct ftp *)0
  52.  
  53. /* In FTP */
  54. void   ftpdr(struct tcb *, int16);
  55. void   ftpdt(struct tcb *, int16);
  56. struct ftp *ftp_create(unsigned int);
  57. void   ftp_delete(struct ftp *);
  58.  
  59. /* In FTPCLI */
  60. void start_ftp(void);
  61. void ftpparse(struct session *, char *, int16);
  62. int  doabort(int, char **);
  63. void ftpccr(struct tcb *, int16);
  64.  
  65. /* In FTPSERV */
  66. int  ftp1(int, char **);
  67. int  ftp0(void);
  68. void ftpsds(struct tcb *, char, char);
  69. int  permcheck(struct ftp *, int, char *);
  70.  
  71.