Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/curl/lib/ftp.h @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 #ifndef HEADER_CURL_FTP_H | |
| 2 #define HEADER_CURL_FTP_H | |
| 3 /*************************************************************************** | |
| 4 * _ _ ____ _ | |
| 5 * Project ___| | | | _ \| | | |
| 6 * / __| | | | |_) | | | |
| 7 * | (__| |_| | _ <| |___ | |
| 8 * \___|\___/|_| \_\_____| | |
| 9 * | |
| 10 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. | |
| 11 * | |
| 12 * This software is licensed as described in the file COPYING, which | |
| 13 * you should have received as part of this distribution. The terms | |
| 14 * are also available at https://curl.haxx.se/docs/copyright.html. | |
| 15 * | |
| 16 * You may opt to use, copy, modify, merge, publish, distribute and/or sell | |
| 17 * copies of the Software, and permit persons to whom the Software is | |
| 18 * furnished to do so, under the terms of the COPYING file. | |
| 19 * | |
| 20 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | |
| 21 * KIND, either express or implied. | |
| 22 * | |
| 23 ***************************************************************************/ | |
| 24 | |
| 25 #include "pingpong.h" | |
| 26 | |
| 27 #ifndef CURL_DISABLE_FTP | |
| 28 extern const struct Curl_handler Curl_handler_ftp; | |
| 29 | |
| 30 #ifdef USE_SSL | |
| 31 extern const struct Curl_handler Curl_handler_ftps; | |
| 32 #endif | |
| 33 | |
| 34 CURLcode Curl_ftpsend(struct connectdata *, const char *cmd); | |
| 35 CURLcode Curl_GetFTPResponse(ssize_t *nread, struct connectdata *conn, | |
| 36 int *ftpcode); | |
| 37 #endif /* CURL_DISABLE_FTP */ | |
| 38 | |
| 39 /**************************************************************************** | |
| 40 * FTP unique setup | |
| 41 ***************************************************************************/ | |
| 42 typedef enum { | |
| 43 FTP_STOP, /* do nothing state, stops the state machine */ | |
| 44 FTP_WAIT220, /* waiting for the initial 220 response immediately after | |
| 45 a connect */ | |
| 46 FTP_AUTH, | |
| 47 FTP_USER, | |
| 48 FTP_PASS, | |
| 49 FTP_ACCT, | |
| 50 FTP_PBSZ, | |
| 51 FTP_PROT, | |
| 52 FTP_CCC, | |
| 53 FTP_PWD, | |
| 54 FTP_SYST, | |
| 55 FTP_NAMEFMT, | |
| 56 FTP_QUOTE, /* waiting for a response to a command sent in a quote list */ | |
| 57 FTP_RETR_PREQUOTE, | |
| 58 FTP_STOR_PREQUOTE, | |
| 59 FTP_POSTQUOTE, | |
| 60 FTP_CWD, /* change dir */ | |
| 61 FTP_MKD, /* if the dir didn't exist */ | |
| 62 FTP_MDTM, /* to figure out the datestamp */ | |
| 63 FTP_TYPE, /* to set type when doing a head-like request */ | |
| 64 FTP_LIST_TYPE, /* set type when about to do a dir list */ | |
| 65 FTP_RETR_TYPE, /* set type when about to RETR a file */ | |
| 66 FTP_STOR_TYPE, /* set type when about to STOR a file */ | |
| 67 FTP_SIZE, /* get the remote file's size for head-like request */ | |
| 68 FTP_RETR_SIZE, /* get the remote file's size for RETR */ | |
| 69 FTP_STOR_SIZE, /* get the size for STOR */ | |
| 70 FTP_REST, /* when used to check if the server supports it in head-like */ | |
| 71 FTP_RETR_REST, /* when asking for "resume" in for RETR */ | |
| 72 FTP_PORT, /* generic state for PORT, LPRT and EPRT, check count1 */ | |
| 73 FTP_PRET, /* generic state for PRET RETR, PRET STOR and PRET LIST/NLST */ | |
| 74 FTP_PASV, /* generic state for PASV and EPSV, check count1 */ | |
| 75 FTP_LIST, /* generic state for LIST, NLST or a custom list command */ | |
| 76 FTP_RETR, | |
| 77 FTP_STOR, /* generic state for STOR and APPE */ | |
| 78 FTP_QUIT, | |
| 79 FTP_LAST /* never used */ | |
| 80 } ftpstate; | |
| 81 | |
| 82 struct ftp_parselist_data; /* defined later in ftplistparser.c */ | |
| 83 | |
| 84 struct ftp_wc { | |
| 85 struct ftp_parselist_data *parser; | |
| 86 | |
| 87 struct { | |
| 88 curl_write_callback write_function; | |
| 89 FILE *file_descriptor; | |
| 90 } backup; | |
| 91 }; | |
| 92 | |
| 93 typedef enum { | |
| 94 FTPFILE_MULTICWD = 1, /* as defined by RFC1738 */ | |
| 95 FTPFILE_NOCWD = 2, /* use SIZE / RETR / STOR on the full path */ | |
| 96 FTPFILE_SINGLECWD = 3 /* make one CWD, then SIZE / RETR / STOR on the | |
| 97 file */ | |
| 98 } curl_ftpfile; | |
| 99 | |
| 100 /* This FTP struct is used in the Curl_easy. All FTP data that is | |
| 101 connection-oriented must be in FTP_conn to properly deal with the fact that | |
| 102 perhaps the Curl_easy is changed between the times the connection is | |
| 103 used. */ | |
| 104 struct FTP { | |
| 105 char *user; /* user name string */ | |
| 106 char *passwd; /* password string */ | |
| 107 char *path; /* points to the urlpieces struct field */ | |
| 108 char *pathalloc; /* if non-NULL a pointer to an allocated path */ | |
| 109 | |
| 110 /* transfer a file/body or not, done as a typedefed enum just to make | |
| 111 debuggers display the full symbol and not just the numerical value */ | |
| 112 curl_pp_transfer transfer; | |
| 113 curl_off_t downloadsize; | |
| 114 }; | |
| 115 | |
| 116 | |
| 117 /* ftp_conn is used for struct connection-oriented data in the connectdata | |
| 118 struct */ | |
| 119 struct ftp_conn { | |
| 120 struct pingpong pp; | |
| 121 char *entrypath; /* the PWD reply when we logged on */ | |
| 122 char **dirs; /* realloc()ed array for path components */ | |
| 123 int dirdepth; /* number of entries used in the 'dirs' array */ | |
| 124 int diralloc; /* number of entries allocated for the 'dirs' array */ | |
| 125 char *file; /* decoded file */ | |
| 126 bool dont_check; /* Set to TRUE to prevent the final (post-transfer) | |
| 127 file size and 226/250 status check. It should still | |
| 128 read the line, just ignore the result. */ | |
| 129 bool ctl_valid; /* Tells Curl_ftp_quit() whether or not to do anything. If | |
| 130 the connection has timed out or been closed, this | |
| 131 should be FALSE when it gets to Curl_ftp_quit() */ | |
| 132 bool cwddone; /* if it has been determined that the proper CWD combo | |
| 133 already has been done */ | |
| 134 int cwdcount; /* number of CWD commands issued */ | |
| 135 bool cwdfail; /* set TRUE if a CWD command fails, as then we must prevent | |
| 136 caching the current directory */ | |
| 137 bool wait_data_conn; /* this is set TRUE if data connection is waited */ | |
| 138 char *prevpath; /* conn->path from the previous transfer */ | |
| 139 curl_ftpfile prevmethod; /* ftp method in previous transfer */ | |
| 140 char transfertype; /* set by ftp_transfertype for use by Curl_client_write()a | |
| 141 and others (A/I or zero) */ | |
| 142 int count1; /* general purpose counter for the state machine */ | |
| 143 int count2; /* general purpose counter for the state machine */ | |
| 144 int count3; /* general purpose counter for the state machine */ | |
| 145 ftpstate state; /* always use ftp.c:state() to change state! */ | |
| 146 ftpstate state_saved; /* transfer type saved to be reloaded after | |
| 147 data connection is established */ | |
| 148 curl_off_t retr_size_saved; /* Size of retrieved file saved */ | |
| 149 char *server_os; /* The target server operating system. */ | |
| 150 curl_off_t known_filesize; /* file size is different from -1, if wildcard | |
| 151 LIST parsing was done and wc_statemach set | |
| 152 it */ | |
| 153 /* newhost is the (allocated) IP addr or host name to connect the data | |
| 154 connection to */ | |
| 155 char *newhost; /* this is the pair to connect the DATA... */ | |
| 156 unsigned short newport; /* connection to */ | |
| 157 | |
| 158 }; | |
| 159 | |
| 160 #define DEFAULT_ACCEPT_TIMEOUT 60000 /* milliseconds == one minute */ | |
| 161 | |
| 162 #endif /* HEADER_CURL_FTP_H */ |
