return 0;
}
-int ftpOpen(char * host, char * name, char * password) {
+int ftpOpen(char * host, char * name, char * password, char * proxy) {
static int sock;
/*static char * lastHost = NULL;*/
struct in_addr serverAddress;
struct sockaddr_in destPort;
struct passwd * pw;
+ char * buf;
int rc;
+ if (!name)
+ name = "anonymous";
+
+ if (!password) {
+ pw = getpwuid(getuid());
+ password = alloca(strlen(pw->pw_name) + 2);
+ strcpy(password, pw->pw_name);
+ strcat(password, "@");
+ }
+
+ if (proxy) {
+ buf = alloca(strlen(name) + strlen(host) + 5);
+ sprintf(buf, "%s@%s", name, host);
+ name = buf;
+ host = proxy;
+ }
+
if ((rc = getHostAddress(host, &serverAddress))) return rc;
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
return rc;
}
- if (!name)
- name = "anonymous";
-
- if (!password) {
- pw = getpwuid(getuid());
- password = alloca(strlen(pw->pw_name) + 2);
- strcpy(password, pw->pw_name);
- strcat(password, "@");
- }
-
if ((rc = ftpCommand(sock, "USER", name, NULL))) {
close(sock);
return rc;
#define FTPERR_FAILED_DATA_CONNECT -9
#define FTPERR_UNKNOWN -100
-int ftpOpen(char * host, char * name, char * password);
+int ftpOpen(char * host, char * name, char * password, char * proxy);
int ftpGetFile(int sock, char * remotename, int dest);
void ftpClose(int sock);