Lines Matching refs:ftp

84 static int		ftp_putcmd(	ftpbuf_t *ftp,
89 static int my_send(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len);
90 static int my_recv(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len);
91 static int my_accept(ftpbuf_t *ftp, php_socket_t s, struct sockaddr *addr, socklen_t *addrlen);
94 static int ftp_readline(ftpbuf_t *ftp);
97 static int ftp_getresp(ftpbuf_t *ftp);
100 static int ftp_type(ftpbuf_t *ftp, ftptype_t type);
103 static databuf_t* ftp_getdata(ftpbuf_t *ftp TSRMLS_DC);
106 static databuf_t* data_accept(databuf_t *data, ftpbuf_t *ftp TSRMLS_DC);
109 static databuf_t* data_close(ftpbuf_t *ftp, databuf_t *data);
112 static char** ftp_genlist(ftpbuf_t *ftp, const char *cmd, const char *path TSRMLS_DC);
126 ftpbuf_t *ftp; in ftp_open() local
132 ftp = ecalloc(1, sizeof(*ftp)); in ftp_open()
137 ftp->fd = php_network_connect_socket_to_host(host, in ftp_open()
140 if (ftp->fd == -1) { in ftp_open()
145 ftp->timeout_sec = timeout_sec; in ftp_open()
146 ftp->nb = 0; in ftp_open()
148 size = sizeof(ftp->localaddr); in ftp_open()
149 memset(&ftp->localaddr, 0, size); in ftp_open()
150 if (getsockname(ftp->fd, (struct sockaddr*) &ftp->localaddr, &size) != 0) { in ftp_open()
155 if (!ftp_getresp(ftp) || ftp->resp != 220) { in ftp_open()
159 return ftp; in ftp_open()
162 if (ftp->fd != -1) { in ftp_open()
163 closesocket(ftp->fd); in ftp_open()
165 efree(ftp); in ftp_open()
173 ftp_close(ftpbuf_t *ftp) in ftp_close() argument
175 if (ftp == NULL) { in ftp_close()
178 if (ftp->data) { in ftp_close()
179 data_close(ftp, ftp->data); in ftp_close()
181 if (ftp->stream && ftp->closestream) { in ftp_close()
183 php_stream_close(ftp->stream); in ftp_close()
185 if (ftp->fd != -1) { in ftp_close()
187 if (ftp->ssl_active) { in ftp_close()
188 SSL_shutdown(ftp->ssl_handle); in ftp_close()
189 SSL_free(ftp->ssl_handle); in ftp_close()
192 closesocket(ftp->fd); in ftp_close()
194 ftp_gc(ftp); in ftp_close()
195 efree(ftp); in ftp_close()
203 ftp_gc(ftpbuf_t *ftp) in ftp_gc() argument
205 if (ftp == NULL) { in ftp_gc()
208 if (ftp->pwd) { in ftp_gc()
209 efree(ftp->pwd); in ftp_gc()
210 ftp->pwd = NULL; in ftp_gc()
212 if (ftp->syst) { in ftp_gc()
213 efree(ftp->syst); in ftp_gc()
214 ftp->syst = NULL; in ftp_gc()
222 ftp_quit(ftpbuf_t *ftp) in ftp_quit() argument
224 if (ftp == NULL) { in ftp_quit()
228 if (!ftp_putcmd(ftp, "QUIT", NULL)) { in ftp_quit()
231 if (!ftp_getresp(ftp) || ftp->resp != 221) { in ftp_quit()
235 if (ftp->pwd) { in ftp_quit()
236 efree(ftp->pwd); in ftp_quit()
237 ftp->pwd = NULL; in ftp_quit()
247 ftp_login(ftpbuf_t *ftp, const char *user, const char *pass TSRMLS_DC) in ftp_login() argument
253 if (ftp == NULL) { in ftp_login()
258 if (ftp->use_ssl && !ftp->ssl_active) { in ftp_login()
259 if (!ftp_putcmd(ftp, "AUTH", "TLS")) { in ftp_login()
262 if (!ftp_getresp(ftp)) { in ftp_login()
266 if (ftp->resp != 234) { in ftp_login()
267 if (!ftp_putcmd(ftp, "AUTH", "SSL")) { in ftp_login()
270 if (!ftp_getresp(ftp)) { in ftp_login()
274 if (ftp->resp != 334) { in ftp_login()
277 ftp->old_ssl = 1; in ftp_login()
278 ftp->use_ssl_for_data = 1; in ftp_login()
293 ftp->ssl_handle = SSL_new(ctx); in ftp_login()
294 if (ftp->ssl_handle == NULL) { in ftp_login()
300 SSL_set_fd(ftp->ssl_handle, ftp->fd); in ftp_login()
302 if (SSL_connect(ftp->ssl_handle) <= 0) { in ftp_login()
304 SSL_shutdown(ftp->ssl_handle); in ftp_login()
305 SSL_free(ftp->ssl_handle); in ftp_login()
309 ftp->ssl_active = 1; in ftp_login()
311 if (!ftp->old_ssl) { in ftp_login()
314 if (!ftp_putcmd(ftp, "PBSZ", "0")) { in ftp_login()
317 if (!ftp_getresp(ftp)) { in ftp_login()
322 if (!ftp_putcmd(ftp, "PROT", "P")) { in ftp_login()
325 if (!ftp_getresp(ftp)) { in ftp_login()
329 ftp->use_ssl_for_data = (ftp->resp >= 200 && ftp->resp <=299); in ftp_login()
334 if (!ftp_putcmd(ftp, "USER", user)) { in ftp_login()
337 if (!ftp_getresp(ftp)) { in ftp_login()
340 if (ftp->resp == 230) { in ftp_login()
343 if (ftp->resp != 331) { in ftp_login()
346 if (!ftp_putcmd(ftp, "PASS", pass)) { in ftp_login()
349 if (!ftp_getresp(ftp)) { in ftp_login()
352 return (ftp->resp == 230); in ftp_login()
359 ftp_reinit(ftpbuf_t *ftp) in ftp_reinit() argument
361 if (ftp == NULL) { in ftp_reinit()
365 ftp_gc(ftp); in ftp_reinit()
367 ftp->nb = 0; in ftp_reinit()
369 if (!ftp_putcmd(ftp, "REIN", NULL)) { in ftp_reinit()
372 if (!ftp_getresp(ftp) || ftp->resp != 220) { in ftp_reinit()
383 ftp_syst(ftpbuf_t *ftp) in ftp_syst() argument
387 if (ftp == NULL) { in ftp_syst()
392 if (ftp->syst) { in ftp_syst()
393 return ftp->syst; in ftp_syst()
395 if (!ftp_putcmd(ftp, "SYST", NULL)) { in ftp_syst()
398 if (!ftp_getresp(ftp) || ftp->resp != 215) { in ftp_syst()
401 syst = ftp->inbuf; in ftp_syst()
408 ftp->syst = estrdup(syst); in ftp_syst()
412 return ftp->syst; in ftp_syst()
419 ftp_pwd(ftpbuf_t *ftp) in ftp_pwd() argument
423 if (ftp == NULL) { in ftp_pwd()
428 if (ftp->pwd) { in ftp_pwd()
429 return ftp->pwd; in ftp_pwd()
431 if (!ftp_putcmd(ftp, "PWD", NULL)) { in ftp_pwd()
434 if (!ftp_getresp(ftp) || ftp->resp != 257) { in ftp_pwd()
438 if ((pwd = strchr(ftp->inbuf, '"')) == NULL) { in ftp_pwd()
444 ftp->pwd = estrndup(pwd, end - pwd); in ftp_pwd()
446 return ftp->pwd; in ftp_pwd()
453 ftp_exec(ftpbuf_t *ftp, const char *cmd) in ftp_exec() argument
455 if (ftp == NULL) { in ftp_exec()
458 if (!ftp_putcmd(ftp, "SITE EXEC", cmd)) { in ftp_exec()
461 if (!ftp_getresp(ftp) || ftp->resp != 200) { in ftp_exec()
472 ftp_raw(ftpbuf_t *ftp, const char *cmd, zval *return_value) in ftp_raw() argument
474 if (ftp == NULL || cmd == NULL) { in ftp_raw()
477 if (!ftp_putcmd(ftp, cmd, NULL)) { in ftp_raw()
481 while (ftp_readline(ftp)) { in ftp_raw()
482 add_next_index_string(return_value, ftp->inbuf, 1); in ftp_raw()
483 …if (isdigit(ftp->inbuf[0]) && isdigit(ftp->inbuf[1]) && isdigit(ftp->inbuf[2]) && ftp->inbuf[3] ==… in ftp_raw()
493 ftp_chdir(ftpbuf_t *ftp, const char *dir) in ftp_chdir() argument
495 if (ftp == NULL) { in ftp_chdir()
499 if (ftp->pwd) { in ftp_chdir()
500 efree(ftp->pwd); in ftp_chdir()
501 ftp->pwd = NULL; in ftp_chdir()
504 if (!ftp_putcmd(ftp, "CWD", dir)) { in ftp_chdir()
507 if (!ftp_getresp(ftp) || ftp->resp != 250) { in ftp_chdir()
517 ftp_cdup(ftpbuf_t *ftp) in ftp_cdup() argument
519 if (ftp == NULL) { in ftp_cdup()
523 if (ftp->pwd) { in ftp_cdup()
524 efree(ftp->pwd); in ftp_cdup()
525 ftp->pwd = NULL; in ftp_cdup()
528 if (!ftp_putcmd(ftp, "CDUP", NULL)) { in ftp_cdup()
531 if (!ftp_getresp(ftp) || ftp->resp != 250) { in ftp_cdup()
541 ftp_mkdir(ftpbuf_t *ftp, const char *dir) in ftp_mkdir() argument
545 if (ftp == NULL) { in ftp_mkdir()
548 if (!ftp_putcmd(ftp, "MKD", dir)) { in ftp_mkdir()
551 if (!ftp_getresp(ftp) || ftp->resp != 257) { in ftp_mkdir()
555 if ((mkd = strchr(ftp->inbuf, '"')) == NULL) { in ftp_mkdir()
573 ftp_rmdir(ftpbuf_t *ftp, const char *dir) in ftp_rmdir() argument
575 if (ftp == NULL) { in ftp_rmdir()
578 if (!ftp_putcmd(ftp, "RMD", dir)) { in ftp_rmdir()
581 if (!ftp_getresp(ftp) || ftp->resp != 250) { in ftp_rmdir()
591 ftp_chmod(ftpbuf_t *ftp, const int mode, const char *filename, const int filename_len) in ftp_chmod() argument
595 if (ftp == NULL || filename_len <= 0) { in ftp_chmod()
601 if (!ftp_putcmd(ftp, "SITE", buffer)) { in ftp_chmod()
608 if (!ftp_getresp(ftp) || ftp->resp != 200) { in ftp_chmod()
619 ftp_alloc(ftpbuf_t *ftp, const long size, char **response) in ftp_alloc() argument
623 if (ftp == NULL || size <= 0) { in ftp_alloc()
629 if (!ftp_putcmd(ftp, "ALLO", buffer)) { in ftp_alloc()
633 if (!ftp_getresp(ftp)) { in ftp_alloc()
638 *response = estrdup(ftp->inbuf); in ftp_alloc()
641 if (ftp->resp < 200 || ftp->resp >= 300) { in ftp_alloc()
652 ftp_nlist(ftpbuf_t *ftp, const char *path TSRMLS_DC) in ftp_nlist() argument
654 return ftp_genlist(ftp, "NLST", path TSRMLS_CC); in ftp_nlist()
661 ftp_list(ftpbuf_t *ftp, const char *path, int recursive TSRMLS_DC) in ftp_list() argument
663 return ftp_genlist(ftp, ((recursive) ? "LIST -R" : "LIST"), path TSRMLS_CC); in ftp_list()
670 ftp_type(ftpbuf_t *ftp, ftptype_t type) in ftp_type() argument
674 if (ftp == NULL) { in ftp_type()
677 if (type == ftp->type) { in ftp_type()
687 if (!ftp_putcmd(ftp, "TYPE", typechar)) { in ftp_type()
690 if (!ftp_getresp(ftp) || ftp->resp != 200) { in ftp_type()
693 ftp->type = type; in ftp_type()
702 ftp_pasv(ftpbuf_t *ftp, int pasv) in ftp_pasv() argument
711 if (ftp == NULL) { in ftp_pasv()
714 if (pasv && ftp->pasv == 2) { in ftp_pasv()
717 ftp->pasv = 0; in ftp_pasv()
721 n = sizeof(ftp->pasvaddr); in ftp_pasv()
722 memset(&ftp->pasvaddr, 0, n); in ftp_pasv()
723 sa = (struct sockaddr *) &ftp->pasvaddr; in ftp_pasv()
726 if (getpeername(ftp->fd, sa, &n) < 0) { in ftp_pasv()
734 if (!ftp_putcmd(ftp, "EPSV", NULL)) { in ftp_pasv()
737 if (!ftp_getresp(ftp)) { in ftp_pasv()
740 if (ftp->resp == 229) { in ftp_pasv()
742 for (ptr = ftp->inbuf; *ptr && *ptr != '('; ptr++); in ftp_pasv()
757 ftp->pasv = 2; in ftp_pasv()
765 if (!ftp_putcmd(ftp, "PASV", NULL)) { in ftp_pasv()
768 if (!ftp_getresp(ftp) || ftp->resp != 227) { in ftp_pasv()
772 for (ptr = ftp->inbuf; *ptr && !isdigit(*ptr); ptr++); in ftp_pasv()
785 ftp->pasv = 2; in ftp_pasv()
794 ftp_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, ftptype_t type, long resumepos TSRM… in ftp_get() argument
801 if (ftp == NULL) { in ftp_get()
804 if (!ftp_type(ftp, type)) { in ftp_get()
808 if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { in ftp_get()
812 ftp->data = data; in ftp_get()
816 if (!ftp_putcmd(ftp, "REST", arg)) { in ftp_get()
819 if (!ftp_getresp(ftp) || (ftp->resp != 350)) { in ftp_get()
824 if (!ftp_putcmd(ftp, "RETR", path)) { in ftp_get()
827 if (!ftp_getresp(ftp) || (ftp->resp != 150 && ftp->resp != 125)) { in ftp_get()
831 if ((data = data_accept(data, ftp TSRMLS_CC)) == NULL) { in ftp_get()
836 while ((rcvd = my_recv(ftp, data->fd, data->buf, FTP_BUFSIZE))) { in ftp_get()
872 ftp->data = data = data_close(ftp, data); in ftp_get()
874 if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) { in ftp_get()
880 ftp->data = data_close(ftp, data); in ftp_get()
888 ftp_put(ftpbuf_t *ftp, const char *path, php_stream *instream, ftptype_t type, long startpos TSRMLS… in ftp_put() argument
896 if (ftp == NULL) { in ftp_put()
899 if (!ftp_type(ftp, type)) { in ftp_put()
902 if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { in ftp_put()
905 ftp->data = data; in ftp_put()
909 if (!ftp_putcmd(ftp, "REST", arg)) { in ftp_put()
912 if (!ftp_getresp(ftp) || (ftp->resp != 350)) { in ftp_put()
917 if (!ftp_putcmd(ftp, "STOR", path)) { in ftp_put()
920 if (!ftp_getresp(ftp) || (ftp->resp != 150 && ftp->resp != 125)) { in ftp_put()
923 if ((data = data_accept(data, ftp TSRMLS_CC)) == NULL) { in ftp_put()
932 if (my_send(ftp, data->fd, data->buf, size) != size) { in ftp_put()
948 if (size && my_send(ftp, data->fd, data->buf, size) != size) { in ftp_put()
951 ftp->data = data = data_close(ftp, data); in ftp_put()
953 if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250 && ftp->resp != 200)) { in ftp_put()
958 ftp->data = data_close(ftp, data); in ftp_put()
966 ftp_size(ftpbuf_t *ftp, const char *path) in ftp_size() argument
968 if (ftp == NULL) { in ftp_size()
971 if (!ftp_type(ftp, FTPTYPE_IMAGE)) { in ftp_size()
974 if (!ftp_putcmd(ftp, "SIZE", path)) { in ftp_size()
977 if (!ftp_getresp(ftp) || ftp->resp != 213) { in ftp_size()
980 return atol(ftp->inbuf); in ftp_size()
987 ftp_mdtm(ftpbuf_t *ftp, const char *path) in ftp_mdtm() argument
995 if (ftp == NULL) { in ftp_mdtm()
998 if (!ftp_putcmd(ftp, "MDTM", path)) { in ftp_mdtm()
1001 if (!ftp_getresp(ftp) || ftp->resp != 213) { in ftp_mdtm()
1005 for (ptr = ftp->inbuf; *ptr && !isdigit(*ptr); ptr++); in ftp_mdtm()
1035 ftp_delete(ftpbuf_t *ftp, const char *path) in ftp_delete() argument
1037 if (ftp == NULL) { in ftp_delete()
1040 if (!ftp_putcmd(ftp, "DELE", path)) { in ftp_delete()
1043 if (!ftp_getresp(ftp) || ftp->resp != 250) { in ftp_delete()
1054 ftp_rename(ftpbuf_t *ftp, const char *src, const char *dest) in ftp_rename() argument
1056 if (ftp == NULL) { in ftp_rename()
1059 if (!ftp_putcmd(ftp, "RNFR", src)) { in ftp_rename()
1062 if (!ftp_getresp(ftp) || ftp->resp != 350) { in ftp_rename()
1065 if (!ftp_putcmd(ftp, "RNTO", dest)) { in ftp_rename()
1068 if (!ftp_getresp(ftp) || ftp->resp != 250) { in ftp_rename()
1078 ftp_site(ftpbuf_t *ftp, const char *cmd) in ftp_site() argument
1080 if (ftp == NULL) { in ftp_site()
1083 if (!ftp_putcmd(ftp, "SITE", cmd)) { in ftp_site()
1086 if (!ftp_getresp(ftp) || ftp->resp < 200 || ftp->resp >= 300) { in ftp_site()
1099 ftp_putcmd(ftpbuf_t *ftp, const char *cmd, const char *args) in ftp_putcmd() argument
1116 size = slprintf(ftp->outbuf, sizeof(ftp->outbuf), "%s %s\r\n", cmd, args); in ftp_putcmd()
1122 size = slprintf(ftp->outbuf, sizeof(ftp->outbuf), "%s\r\n", cmd); in ftp_putcmd()
1125 data = ftp->outbuf; in ftp_putcmd()
1128 ftp->extra = NULL; in ftp_putcmd()
1130 if (my_send(ftp, ftp->fd, data, size) != size) { in ftp_putcmd()
1140 ftp_readline(ftpbuf_t *ftp) in ftp_readline() argument
1148 if (ftp->extra) { in ftp_readline()
1149 memmove(ftp->inbuf, ftp->extra, ftp->extralen); in ftp_readline()
1150 rcvd = ftp->extralen; in ftp_readline()
1153 data = ftp->inbuf; in ftp_readline()
1160 ftp->extra = eol + 1; in ftp_readline()
1162 ftp->extra++; in ftp_readline()
1165 if ((ftp->extralen = --rcvd) == 0) { in ftp_readline()
1166 ftp->extra = NULL; in ftp_readline()
1171 ftp->extra = eol + 1; in ftp_readline()
1172 if ((ftp->extralen = --rcvd) == 0) { in ftp_readline()
1173 ftp->extra = NULL; in ftp_readline()
1180 if ((rcvd = my_recv(ftp, ftp->fd, data, size)) < 1) { in ftp_readline()
1192 ftp_getresp(ftpbuf_t *ftp) in ftp_getresp() argument
1196 if (ftp == NULL) { in ftp_getresp()
1199 buf = ftp->inbuf; in ftp_getresp()
1200 ftp->resp = 0; in ftp_getresp()
1204 if (!ftp_readline(ftp)) { in ftp_getresp()
1209 …if (isdigit(ftp->inbuf[0]) && isdigit(ftp->inbuf[1]) && isdigit(ftp->inbuf[2]) && ftp->inbuf[3] ==… in ftp_getresp()
1215 if (!isdigit(ftp->inbuf[0]) || !isdigit(ftp->inbuf[1]) || !isdigit(ftp->inbuf[2])) { in ftp_getresp()
1219 ftp->resp = 100 * (ftp->inbuf[0] - '0') + 10 * (ftp->inbuf[1] - '0') + (ftp->inbuf[2] - '0'); in ftp_getresp()
1221 memmove(ftp->inbuf, ftp->inbuf + 4, FTP_BUFSIZE - 4); in ftp_getresp()
1223 if (ftp->extra) { in ftp_getresp()
1224 ftp->extra -= 4; in ftp_getresp()
1233 my_send(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len) in my_send() argument
1240 n = php_pollfd_for_ms(s, POLLOUT, ftp->timeout_sec * 1000); in my_send()
1253 if (ftp->use_ssl && ftp->fd == s && ftp->ssl_active) { in my_send()
1254 sent = SSL_write(ftp->ssl_handle, buf, size); in my_send()
1255 } else if (ftp->use_ssl && ftp->fd != s && ftp->use_ssl_for_data && ftp->data->ssl_active) { in my_send()
1256 sent = SSL_write(ftp->data->ssl_handle, buf, size); in my_send()
1278 my_recv(ftpbuf_t *ftp, php_socket_t s, void *buf, size_t len) in my_recv() argument
1282 n = php_pollfd_for_ms(s, PHP_POLLREADABLE, ftp->timeout_sec * 1000); in my_recv()
1293 if (ftp->use_ssl && ftp->fd == s && ftp->ssl_active) { in my_recv()
1294 nr_bytes = SSL_read(ftp->ssl_handle, buf, len); in my_recv()
1295 } else if (ftp->use_ssl && ftp->fd != s && ftp->use_ssl_for_data && ftp->data->ssl_active) { in my_recv()
1296 nr_bytes = SSL_read(ftp->data->ssl_handle, buf, len); in my_recv()
1310 data_available(ftpbuf_t *ftp, php_socket_t s) in data_available() argument
1330 data_writeable(ftpbuf_t *ftp, php_socket_t s) in data_writeable() argument
1351 my_accept(ftpbuf_t *ftp, php_socket_t s, struct sockaddr *addr, socklen_t *addrlen) in my_accept() argument
1355 n = php_pollfd_for_ms(s, PHP_POLLREADABLE, ftp->timeout_sec * 1000); in my_accept()
1372 ftp_getdata(ftpbuf_t *ftp TSRMLS_DC) in ftp_getdata()
1385 if (ftp->pasv && !ftp_pasv(ftp, 1)) { in ftp_getdata()
1392 data->type = ftp->type; in ftp_getdata()
1394 sa = (struct sockaddr *) &ftp->localaddr; in ftp_getdata()
1402 if (ftp->pasv) { in ftp_getdata()
1404 ftp->pasv = 1; in ftp_getdata()
1408 size = php_sockaddr_size(&ftp->pasvaddr); in ftp_getdata()
1409 tv.tv_sec = ftp->timeout_sec; in ftp_getdata()
1411 if (php_connect_nonb(fd, (struct sockaddr*) &ftp->pasvaddr, size, &tv) == -1) { in ftp_getdata()
1418 ftp->data = data; in ftp_getdata()
1454 if (!ftp_putcmd(ftp, "EPRT", eprtarg)) { in ftp_getdata()
1458 if (!ftp_getresp(ftp) || ftp->resp != 200) { in ftp_getdata()
1462 ftp->data = data; in ftp_getdata()
1472 if (!ftp_putcmd(ftp, "PORT", arg)) { in ftp_getdata()
1475 if (!ftp_getresp(ftp) || ftp->resp != 200) { in ftp_getdata()
1479 ftp->data = data; in ftp_getdata()
1494 data_accept(databuf_t *data, ftpbuf_t *ftp TSRMLS_DC) in data_accept()
1508 data->fd = my_accept(ftp, data->listener, (struct sockaddr*) &addr, &size); in data_accept()
1521 if (ftp->use_ssl && ftp->use_ssl_for_data) { in data_accept()
1543 if (ftp->old_ssl) { in data_accept()
1544 SSL_copy_session_id(data->ssl_handle, ftp->ssl_handle); in data_accept()
1566 data_close(ftpbuf_t *ftp, databuf_t *data) in data_close() argument
1601 if (ftp) { in data_close()
1602 ftp->data = NULL; in data_close()
1612 ftp_genlist(ftpbuf_t *ftp, const char *cmd, const char *path TSRMLS_DC) in ftp_genlist() argument
1630 if (!ftp_type(ftp, FTPTYPE_ASCII)) { in ftp_genlist()
1634 if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { in ftp_genlist()
1637 ftp->data = data; in ftp_genlist()
1639 if (!ftp_putcmd(ftp, cmd, path)) { in ftp_genlist()
1642 if (!ftp_getresp(ftp) || (ftp->resp != 150 && ftp->resp != 125 && ftp->resp != 226)) { in ftp_genlist()
1647 if (ftp->resp == 226) { in ftp_genlist()
1648 ftp->data = data_close(ftp, data); in ftp_genlist()
1654 if ((data = data_accept(data, ftp TSRMLS_CC)) == NULL) { in ftp_genlist()
1660 while ((rcvd = my_recv(ftp, data->fd, data->buf, FTP_BUFSIZE))) { in ftp_genlist()
1676 ftp->data = data_close(ftp, data); in ftp_genlist()
1699 if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) { in ftp_genlist()
1706 ftp->data = data_close(ftp, data); in ftp_genlist()
1717 ftp_nb_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, ftptype_t type, long resumepos T… in ftp_nb_get() argument
1722 if (ftp == NULL) { in ftp_nb_get()
1726 if (!ftp_type(ftp, type)) { in ftp_nb_get()
1730 if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { in ftp_nb_get()
1736 if (!ftp_putcmd(ftp, "REST", arg)) { in ftp_nb_get()
1739 if (!ftp_getresp(ftp) || (ftp->resp != 350)) { in ftp_nb_get()
1744 if (!ftp_putcmd(ftp, "RETR", path)) { in ftp_nb_get()
1747 if (!ftp_getresp(ftp) || (ftp->resp != 150 && ftp->resp != 125)) { in ftp_nb_get()
1751 if ((data = data_accept(data, ftp TSRMLS_CC)) == NULL) { in ftp_nb_get()
1755 ftp->data = data; in ftp_nb_get()
1756 ftp->stream = outstream; in ftp_nb_get()
1757 ftp->lastch = 0; in ftp_nb_get()
1758 ftp->nb = 1; in ftp_nb_get()
1760 return (ftp_nb_continue_read(ftp TSRMLS_CC)); in ftp_nb_get()
1763 ftp->data = data_close(ftp, data); in ftp_nb_get()
1771 ftp_nb_continue_read(ftpbuf_t *ftp TSRMLS_DC) in ftp_nb_continue_read()
1779 data = ftp->data; in ftp_nb_continue_read()
1782 if (!data_available(ftp, data->fd)) { in ftp_nb_continue_read()
1786 type = ftp->type; in ftp_nb_continue_read()
1788 lastch = ftp->lastch; in ftp_nb_continue_read()
1789 if ((rcvd = my_recv(ftp, data->fd, data->buf, FTP_BUFSIZE))) { in ftp_nb_continue_read()
1797 php_stream_putc(ftp->stream, '\r'); in ftp_nb_continue_read()
1800 php_stream_putc(ftp->stream, *ptr); in ftp_nb_continue_read()
1804 } else if (rcvd != php_stream_write(ftp->stream, data->buf, rcvd)) { in ftp_nb_continue_read()
1808 ftp->lastch = lastch; in ftp_nb_continue_read()
1813 php_stream_putc(ftp->stream, '\r'); in ftp_nb_continue_read()
1816 ftp->data = data = data_close(ftp, data); in ftp_nb_continue_read()
1818 if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) { in ftp_nb_continue_read()
1822 ftp->nb = 0; in ftp_nb_continue_read()
1825 ftp->nb = 0; in ftp_nb_continue_read()
1826 ftp->data = data_close(ftp, data); in ftp_nb_continue_read()
1834 ftp_nb_put(ftpbuf_t *ftp, const char *path, php_stream *instream, ftptype_t type, long startpos TSR… in ftp_nb_put() argument
1839 if (ftp == NULL) { in ftp_nb_put()
1842 if (!ftp_type(ftp, type)) { in ftp_nb_put()
1845 if ((data = ftp_getdata(ftp TSRMLS_CC)) == NULL) { in ftp_nb_put()
1850 if (!ftp_putcmd(ftp, "REST", arg)) { in ftp_nb_put()
1853 if (!ftp_getresp(ftp) || (ftp->resp != 350)) { in ftp_nb_put()
1858 if (!ftp_putcmd(ftp, "STOR", path)) { in ftp_nb_put()
1861 if (!ftp_getresp(ftp) || (ftp->resp != 150 && ftp->resp != 125)) { in ftp_nb_put()
1864 if ((data = data_accept(data, ftp TSRMLS_CC)) == NULL) { in ftp_nb_put()
1867 ftp->data = data; in ftp_nb_put()
1868 ftp->stream = instream; in ftp_nb_put()
1869 ftp->lastch = 0; in ftp_nb_put()
1870 ftp->nb = 1; in ftp_nb_put()
1872 return (ftp_nb_continue_write(ftp TSRMLS_CC)); in ftp_nb_put()
1875 ftp->data = data_close(ftp, data); in ftp_nb_put()
1884 ftp_nb_continue_write(ftpbuf_t *ftp TSRMLS_DC) in ftp_nb_continue_write()
1891 if (!data_writeable(ftp, ftp->data->fd)) { in ftp_nb_continue_write()
1896 ptr = ftp->data->buf; in ftp_nb_continue_write()
1897 while (!php_stream_eof(ftp->stream) && (ch = php_stream_getc(ftp->stream)) != EOF) { in ftp_nb_continue_write()
1899 if (ch == '\n' && ftp->type == FTPTYPE_ASCII) { in ftp_nb_continue_write()
1909 if (my_send(ftp, ftp->data->fd, ftp->data->buf, size) != size) { in ftp_nb_continue_write()
1916 if (size && my_send(ftp, ftp->data->fd, ftp->data->buf, size) != size) { in ftp_nb_continue_write()
1919 ftp->data = data_close(ftp, ftp->data); in ftp_nb_continue_write()
1921 if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) { in ftp_nb_continue_write()
1924 ftp->nb = 0; in ftp_nb_continue_write()
1927 ftp->data = data_close(ftp, ftp->data); in ftp_nb_continue_write()
1928 ftp->nb = 0; in ftp_nb_continue_write()