diff --git a/source/clients/ftpclient.cpp b/source/clients/ftpclient.cpp index 9f19da7..a7f58eb 100644 --- a/source/clients/ftpclient.cpp +++ b/source/clients/ftpclient.cpp @@ -125,7 +125,7 @@ int FtpClient::Connect(const std::string &url, const std::string &user, const st } mp_ftphandle->handle = sControl; - if (ReadResponse('2', mp_ftphandle) == 0) + if (ReadResponse("2", mp_ftphandle) == 0) { close(mp_ftphandle->handle); mp_ftphandle->handle = 0; @@ -142,7 +142,7 @@ int FtpClient::Connect(const std::string &url, const std::string &user, const st cmd = "USER anonymous"; } - if (!FtpSendCmd(cmd, '3', mp_ftphandle)) + if (!FtpSendCmd(cmd, "3", mp_ftphandle)) { if (mp_ftphandle->ctrl != NULL) return 1; @@ -161,7 +161,7 @@ int FtpClient::Connect(const std::string &url, const std::string &user, const st cmd = "PASS " + pass; int ret; - if ((ret = FtpSendCmd(cmd, '2', mp_ftphandle))) + if ((ret = FtpSendCmd(cmd, "2", mp_ftphandle))) { mp_ftphandle->is_connected = true; } @@ -179,7 +179,7 @@ int FtpClient::Connect(const std::string &url, const std::string &user, const st * * return 1 if proper response received, 0 otherwise */ -int FtpClient::FtpSendCmd(const std::string &cmd, char expected_resp, ftphandle *nControl) +int FtpClient::FtpSendCmd(const std::string &cmd, const std::string &expected_resp, ftphandle *nControl) { char buf[512]; int x; @@ -205,7 +205,7 @@ int FtpClient::FtpSendCmd(const std::string &cmd, char expected_resp, ftphandle * return 0 if first char doesn't match * return 1 if first char matches */ -int FtpClient::ReadResponse(char c, ftphandle *nControl) +int FtpClient::ReadResponse(const std::string &c, ftphandle *nControl) { char match[5]; @@ -228,7 +228,7 @@ int FtpClient::ReadResponse(char c, ftphandle *nControl) } while (strncmp(nControl->response, match, 4)); } - if (nControl->response[0] == c) + if (c.find(nControl->response[0]) != std::string::npos) return 1; return 0; } @@ -368,7 +368,7 @@ int FtpClient::FtpAccess(const std::string &path, accesstype type, transfermode return 0; } sprintf(buf, "TYPE %c", mode); - if (!FtpSendCmd(buf, '2', nControl)) + if (!FtpSendCmd(buf, "2", nControl)) return 0; switch (type) @@ -477,7 +477,7 @@ int FtpClient::FtpAcceptConnection(ftphandle *nData, ftphandle *nControl) { close(nData->handle); nData->handle = 0; - ReadResponse('2', nControl); + ReadResponse("2", nControl); rv = 0; } @@ -521,7 +521,7 @@ int FtpClient::FtpOpenPasv(ftphandle *nControl, ftphandle **nData, transfermode memset(&sin, 0, l); sin.in.sin_family = AF_INET; - if (!FtpSendCmd("PASV", '2', nControl)) + if (!FtpSendCmd("PASV", "2", nControl)) return -1; cp = strchr(nControl->response, '('); if (cp == NULL) @@ -542,7 +542,7 @@ int FtpClient::FtpOpenPasv(ftphandle *nControl, ftphandle **nData, transfermode { char buf[512]; sprintf(buf, "REST %lld", mp_ftphandle->offset); - if (!FtpSendCmd(buf, '3', nControl)) + if (!FtpSendCmd(buf, "3", nControl)) return 0; } @@ -592,7 +592,7 @@ int FtpClient::FtpOpenPasv(ftphandle *nControl, ftphandle **nData, transfermode return -1; } - if (!ReadResponse('1', nControl)) + if (!ReadResponse("1", nControl)) { close(sData); return -1; @@ -717,7 +717,7 @@ int FtpClient::FtpOpenPort(ftphandle *nControl, ftphandle **nData, transfermode (unsigned char)sin.sa.sa_data[5], (unsigned char)sin.sa.sa_data[0], (unsigned char)sin.sa.sa_data[1]); - if (!FtpSendCmd(buf, '2', nControl)) + if (!FtpSendCmd(buf, "2", nControl)) { close(sData); return -1; @@ -727,7 +727,7 @@ int FtpClient::FtpOpenPort(ftphandle *nControl, ftphandle **nData, transfermode { char buf[512]; sprintf(buf, "REST %lld", mp_ftphandle->offset); - if (!FtpSendCmd(buf, '3', nControl)) + if (!FtpSendCmd(buf, "3", nControl)) { close(sData); return 0; @@ -747,7 +747,7 @@ int FtpClient::FtpOpenPort(ftphandle *nControl, ftphandle **nData, transfermode return -1; } - if (!FtpSendCmd(cmd, '1', nControl)) + if (!FtpSendCmd(cmd, "1", nControl)) { FtpClose(*nData); *nData = NULL; @@ -1045,7 +1045,7 @@ int FtpClient::FtpClose(ftphandle *nData) ctrl = nData->ctrl; free(nData); if (ctrl) - return ReadResponse('2', ctrl); + return ReadResponse("2", ctrl); return 1; } @@ -1061,7 +1061,7 @@ int FtpClient::Quit() strcpy(mp_ftphandle->response, "error: no anwser from server\n"); return 0; } - FtpSendCmd("QUIT", '2', mp_ftphandle); + FtpSendCmd("QUIT", "2", mp_ftphandle); shutdown(mp_ftphandle->handle, SHUT_WR); struct linger lng = {1, 0}; setsockopt(mp_ftphandle->handle, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng)); @@ -1105,7 +1105,7 @@ int FtpClient::RawRead(void *buf, int max, ftphandle *handle) int FtpClient::Site(const std::string &cmd) { std::string tmp = "SITE " + cmd; - if (!FtpSendCmd(tmp, '2', mp_ftphandle)) + if (!FtpSendCmd(tmp, "2", mp_ftphandle)) return 0; return 1; } @@ -1118,7 +1118,7 @@ int FtpClient::Site(const std::string &cmd) int FtpClient::Raw(const std::string &cmd) { - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) return 0; return 1; } @@ -1137,7 +1137,7 @@ int FtpClient::SysType(char *buf, int max) int l = max; char *b = buf; char *s; - if (!FtpSendCmd("SYST", '2', mp_ftphandle)) + if (!FtpSendCmd("SYST", "2", mp_ftphandle)) return 0; s = &mp_ftphandle->response[4]; while ((--l) && (*s != ' ')) @@ -1154,7 +1154,7 @@ int FtpClient::SysType(char *buf, int max) int FtpClient::Mkdir(const std::string &path) { std::string cmd = "MKD " + path; - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) return 0; return 1; } @@ -1167,7 +1167,7 @@ int FtpClient::Mkdir(const std::string &path) int FtpClient::Chdir(const std::string &path) { std::string cmd = "CWD " + path; - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) return 0; return 1; } @@ -1179,7 +1179,7 @@ int FtpClient::Chdir(const std::string &path) */ int FtpClient::Cdup() { - if (!FtpSendCmd("CDUP", '2', mp_ftphandle)) + if (!FtpSendCmd("CDUP", "2", mp_ftphandle)) return 0; return 1; } @@ -1191,7 +1191,7 @@ int FtpClient::Cdup() */ bool FtpClient::Noop() { - if (!FtpSendCmd("NOOP", '2', mp_ftphandle)) + if (!FtpSendCmd("NOOP", "25", mp_ftphandle)) return 0; return 1; } @@ -1209,7 +1209,7 @@ bool FtpClient::Ping() int FtpClient::Rmdir(const std::string &path) { std::string cmd = "RMD " + path; - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) return 0; return 1; } @@ -1272,11 +1272,11 @@ int FtpClient::Size(const std::string &path, int64_t *size) return 0; sprintf(cmd, "TYPE %c", FtpClient::transfermode::image); - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) return 0; sprintf(cmd, "SIZE %s", path.c_str()); - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) rv = 0; else { @@ -1408,10 +1408,10 @@ int FtpClient::Put(const std::string &inputfile, const std::string &path, uint64 int FtpClient::Rename(const std::string &src, const std::string &dst) { std::string cmd = "RNFR " + src; - if (!FtpSendCmd(cmd, '3', mp_ftphandle)) + if (!FtpSendCmd(cmd, "3", mp_ftphandle)) return 0; cmd = "RNTO " + dst; - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) return 0; return 1; @@ -1420,7 +1420,7 @@ int FtpClient::Rename(const std::string &src, const std::string &dst) int FtpClient::Delete(const std::string &path) { std::string cmd = "DELE " + path; - if (!FtpSendCmd(cmd, '2', mp_ftphandle)) + if (!FtpSendCmd(cmd, "2", mp_ftphandle)) return 0; return 1; } diff --git a/source/clients/ftpclient.h b/source/clients/ftpclient.h index 43ad859..58c6b01 100644 --- a/source/clients/ftpclient.h +++ b/source/clients/ftpclient.h @@ -114,12 +114,12 @@ private: char server[128]; int server_port; - int FtpSendCmd(const std::string &cmd, char expected_resp, ftphandle *nControl); + int FtpSendCmd(const std::string &cmd, const std::string &expected_resp, ftphandle *nControl); ftphandle *RawOpen(const std::string &path, accesstype type, transfermode mode); int RawClose(ftphandle *handle); int RawWrite(void *buf, int len, ftphandle *handle); int RawRead(void *buf, int max, ftphandle *handle); - int ReadResponse(char c, ftphandle *nControl); + int ReadResponse(const std::string &c, ftphandle *nControl); int Readline(char *buf, int max, ftphandle *nControl); int Writeline(char *buf, int len, ftphandle *nData); void ClearHandle();