Lines Matching refs:ctxt
301 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
307 if (ctxt->protocol != NULL) {
308 xmlFree(ctxt->protocol);
309 ctxt->protocol = NULL;
311 if (ctxt->hostname != NULL) {
312 xmlFree(ctxt->hostname);
313 ctxt->hostname = NULL;
315 if (ctxt->path != NULL) {
316 xmlFree(ctxt->path);
317 ctxt->path = NULL;
330 ctxt->protocol = xmlMemStrdup(uri->scheme);
331 ctxt->hostname = xmlMemStrdup(uri->server);
333 ctxt->path = xmlMemStrdup(uri->path);
335 ctxt->path = xmlMemStrdup("/");
337 ctxt->port = uri->port;
342 ctxt->user = xmlMemStrdup(uri->user);
344 ctxt->user = (char *)xmlStrndup((xmlChar *)uri->user,
346 ctxt->passwd = xmlMemStrdup(cptr+1);
370 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
375 if (ctxt == NULL)
377 if (ctxt->protocol == NULL)
379 if (ctxt->hostname == NULL)
390 if ((strcmp(ctxt->protocol, uri->scheme)) ||
391 (strcmp(ctxt->hostname, uri->server)) ||
392 ((uri->port != 0) && (ctxt->port != uri->port))) {
398 ctxt->port = uri->port;
400 if (ctxt->path != NULL) {
401 xmlFree(ctxt->path);
402 ctxt->path = NULL;
406 ctxt->path = xmlMemStrdup("/");
408 ctxt->path = xmlMemStrdup(uri->path);
508 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
509 if (ctxt == NULL) return;
510 if (ctxt->hostname != NULL) xmlFree(ctxt->hostname);
511 if (ctxt->protocol != NULL) xmlFree(ctxt->protocol);
512 if (ctxt->path != NULL) xmlFree(ctxt->path);
513 ctxt->passive = 1;
514 if (ctxt->controlFd >= 0) closesocket(ctxt->controlFd);
515 ctxt->controlFd = -1;
516 ctxt->controlBufIndex = -1;
517 ctxt->controlBufUsed = -1;
518 xmlFree(ctxt);
566 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
570 if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
572 if ((ctxt->controlBufIndex < 0) || (ctxt->controlBufIndex > FTP_BUF_SIZE)) {
576 ctxt->controlBufIndex);
581 if ((ctxt->controlBufUsed < 0) || (ctxt->controlBufUsed > FTP_BUF_SIZE)) {
585 ctxt->controlBufUsed);
589 if (ctxt->controlBufIndex > ctxt->controlBufUsed) {
593 ctxt->controlBufIndex, ctxt->controlBufUsed);
601 if (ctxt->controlBufIndex > 0) {
602 memmove(&ctxt->controlBuf[0], &ctxt->controlBuf[ctxt->controlBufIndex],
603 ctxt->controlBufUsed - ctxt->controlBufIndex);
604 ctxt->controlBufUsed -= ctxt->controlBufIndex;
605 ctxt->controlBufIndex = 0;
607 size = FTP_BUF_SIZE - ctxt->controlBufUsed;
611 "xmlNanoFTPGetMore : buffer full %d \n", ctxt->controlBufUsed);
619 if ((len = recv(ctxt->controlFd, &ctxt->controlBuf[ctxt->controlBufIndex],
622 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
623 ctxt->controlFd = -1;
629 ctxt->controlBufUsed, ctxt->controlBufUsed + len);
631 ctxt->controlBufUsed += len;
632 ctxt->controlBuf[ctxt->controlBufUsed] = 0;
646 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
651 if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
662 if ((ctxt->controlBufUsed == 0) && (len == 0)) {
665 ptr = &ctxt->controlBuf[ctxt->controlBufIndex];
666 end = &ctxt->controlBuf[ctxt->controlBufUsed];
682 ctxt->controlBufAnswer = ptr - ctxt->controlBuf;
690 ctxt->controlBufIndex = ctxt->controlBufUsed;
697 ctxt->controlBufIndex = ptr - ctxt->controlBuf;
699 ptr = &ctxt->controlBuf[ctxt->controlBufIndex];
736 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
740 if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
744 FD_SET(ctxt->controlFd, &rfd);
745 switch(select(ctxt->controlFd + 1, &rfd, NULL, NULL, &tv)) {
763 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
768 if (ctxt->user == NULL)
771 snprintf(buf, sizeof(buf), "USER %s\r\n", ctxt->user);
777 res = send(ctxt->controlFd, buf, len, 0);
791 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
796 if (ctxt->passwd == NULL)
799 snprintf(buf, sizeof(buf), "PASS %s\r\n", ctxt->passwd);
805 res = send(ctxt->controlFd, buf, len, 0);
825 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
829 if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
836 res = send(ctxt->controlFd, buf, len, 0);
855 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
861 if (ctxt == NULL)
863 if (ctxt->hostname == NULL)
872 port = ctxt->port;
877 memset (&ctxt->ftpAddr, 0, sizeof(ctxt->ftpAddr));
894 if (getaddrinfo (ctxt->hostname, NULL, &hints, &result) != 0) {
909 if (tmp->ai_addrlen > sizeof(ctxt->ftpAddr)) {
914 memcpy (&ctxt->ftpAddr, tmp->ai_addr, tmp->ai_addrlen);
915 ((struct sockaddr_in6 *) &ctxt->ftpAddr)->sin6_port = htons (port);
916 ctxt->controlFd = socket (AF_INET6, SOCK_STREAM, 0);
919 memcpy (&ctxt->ftpAddr, tmp->ai_addr, tmp->ai_addrlen);
920 ((struct sockaddr_in *) &ctxt->ftpAddr)->sin_port = htons (port);
921 ctxt->controlFd = socket (AF_INET, SOCK_STREAM, 0);
932 hp = gethostbyname (ctxt->hostname);
938 sizeof(((struct sockaddr_in *)&ctxt->ftpAddr)->sin_addr)) {
946 ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_family = AF_INET;
947 memcpy (&((struct sockaddr_in *)&ctxt->ftpAddr)->sin_addr,
949 ((struct sockaddr_in *)&ctxt->ftpAddr)->sin_port = (u_short)htons ((unsigned short)port);
950 ctxt->controlFd = socket (AF_INET, SOCK_STREAM, 0);
954 if (ctxt->controlFd < 0) {
962 if (connect(ctxt->controlFd, (struct sockaddr *) &ctxt->ftpAddr,
965 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
966 ctxt->controlFd = -1;
973 res = xmlNanoFTPGetResponse(ctxt);
975 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
976 ctxt->controlFd = -1;
1029 res = send(ctxt->controlFd, buf, len, 0);
1032 closesocket(ctxt->controlFd);
1033 ctxt->controlFd = -1;
1036 res = xmlNanoFTPGetResponse(ctxt);
1051 res = send(ctxt->controlFd, buf, len, 0);
1054 closesocket(ctxt->controlFd);
1055 ctxt->controlFd = -1;
1058 res = xmlNanoFTPGetResponse(ctxt);
1060 closesocket(ctxt->controlFd);
1061 ctxt->controlFd = -1;
1071 closesocket(ctxt->controlFd);
1072 ctxt->controlFd = -1;
1086 snprintf(buf, sizeof(buf), "SITE %s\r\n", ctxt->hostname);
1092 res = send(ctxt->controlFd, buf, len, 0);
1095 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1096 ctxt->controlFd = -1;
1099 res = xmlNanoFTPGetResponse(ctxt);
1106 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1107 ctxt->controlFd = -1;
1112 if (ctxt->user == NULL)
1114 ctxt->hostname);
1117 ctxt->user, ctxt->hostname);
1123 res = send(ctxt->controlFd, buf, len, 0);
1126 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1127 ctxt->controlFd = -1;
1130 res = xmlNanoFTPGetResponse(ctxt);
1136 if (ctxt->passwd == NULL)
1139 snprintf(buf, sizeof(buf), "PASS %s\r\n", ctxt->passwd);
1145 res = send(ctxt->controlFd, buf, len, 0);
1148 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1149 ctxt->controlFd = -1;
1152 res = xmlNanoFTPGetResponse(ctxt);
1159 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1160 ctxt->controlFd = -1;
1169 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1170 ctxt->controlFd = -1;
1177 res = xmlNanoFTPSendUser(ctxt);
1179 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1180 ctxt->controlFd = -1;
1183 res = xmlNanoFTPGetResponse(ctxt);
1194 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1195 ctxt->controlFd = -1;
1198 res = xmlNanoFTPSendPasswd(ctxt);
1200 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1201 ctxt->controlFd = -1;
1204 res = xmlNanoFTPGetResponse(ctxt);
1216 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1217 ctxt->controlFd = -1;
1236 xmlNanoFTPCtxtPtr ctxt;
1244 ctxt = (xmlNanoFTPCtxtPtr) xmlNanoFTPNewCtxt(NULL);
1245 ctxt->hostname = xmlMemStrdup(server);
1247 ctxt->port = port;
1248 res = xmlNanoFTPConnect(ctxt);
1250 xmlNanoFTPFreeCtxt(ctxt);
1253 return(ctxt);
1268 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1273 if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
1289 res = send(ctxt->controlFd, buf, len, 0);
1294 res = xmlNanoFTPGetResponse(ctxt);
1317 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1322 if ((ctxt == NULL) || (ctxt->controlFd < 0) || (file == NULL)) return(-1);
1340 res = send(ctxt->controlFd, buf, len, 0);
1345 res = xmlNanoFTPGetResponse(ctxt);
1367 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1380 if (ctxt == NULL) return(-1);
1384 if ((ctxt->ftpAddr).ss_family == AF_INET6) {
1385 ctxt->dataFd = socket (AF_INET6, SOCK_STREAM, IPPROTO_TCP);
1391 ctxt->dataFd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
1396 if (ctxt->dataFd < 0) {
1401 if (ctxt->passive) {
1403 if ((ctxt->ftpAddr).ss_family == AF_INET6)
1412 res = send(ctxt->controlFd, buf, len, 0);
1415 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1421 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1427 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1428 ctxt->passive = 0;
1431 cur = &ctxt->controlBuf[ctxt->controlBufAnswer];
1434 if ((ctxt->ftpAddr).ss_family == AF_INET6) {
1438 if (ctxt->dataFd != -1) {
1439 closesocket (ctxt->dataFd); ctxt->dataFd = -1;
1443 memcpy (&((struct sockaddr_in6 *)&dataAddr)->sin6_addr, &((struct sockaddr_in6 *)&ctxt->ftpAddr)->sin6_addr, sizeof(struct in6_addr));
1453 if (ctxt->dataFd != -1) {
1454 closesocket (ctxt->dataFd); ctxt->dataFd = -1;
1463 if (connect(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) {
1465 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1469 getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen);
1471 if ((ctxt->ftpAddr).ss_family == AF_INET6)
1477 if (bind(ctxt->dataFd, (struct sockaddr *) &dataAddr, dataAddrLen) < 0) {
1479 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1482 getsockname(ctxt->dataFd, (struct sockaddr *) &dataAddr, &dataAddrLen);
1484 if (listen(ctxt->dataFd, 1) < 0) {
1486 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1490 if ((ctxt->ftpAddr).ss_family == AF_INET6) {
1513 res = send(ctxt->controlFd, buf, len, 0);
1516 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1519 res = xmlNanoFTPGetResponse(ctxt);
1521 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1525 return(ctxt->dataFd);
1540 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1545 if ((ctxt == NULL) || (ctxt->controlFd < 0)) return(-1);
1547 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1551 FD_SET(ctxt->controlFd, &rfd);
1553 FD_SET(ctxt->controlFd, &efd);
1554 res = select(ctxt->controlFd + 1, &rfd, NULL, &efd, &tv);
1559 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1567 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1569 res = xmlNanoFTPGetResponse(ctxt);
1571 closesocket(ctxt->controlFd); ctxt->controlFd = -1;
1720 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1727 if (ctxt == NULL) return (-1);
1729 if (xmlNanoFTPCwd(ctxt, ctxt->path) < 1)
1731 ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
1732 if (ctxt->dataFd == -1)
1737 if (xmlNanoFTPCwd(ctxt, ctxt->path) < 1)
1740 ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
1741 if (ctxt->dataFd == -1)
1750 res = send(ctxt->controlFd, buf, len, 0);
1753 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1756 res = xmlNanoFTPReadResponse(ctxt);
1758 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1766 FD_SET(ctxt->dataFd, &rfd);
1768 FD_SET(ctxt->dataFd, &efd);
1769 res = select(ctxt->dataFd + 1, &rfd, NULL, &efd, &tv);
1774 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1778 res = xmlNanoFTPCheckResponse(ctxt);
1780 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1781 ctxt->dataFd = -1;
1785 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1792 if ((len = recv(ctxt->dataFd, &buf[indx], sizeof(buf) - (indx + 1), 0)) < 0) {
1794 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1795 ctxt->dataFd = -1;
1812 xmlNanoFTPCloseConnection(ctxt);
1829 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1834 if ((filename == NULL) && (ctxt->path == NULL))
1836 ctxt->dataFd = xmlNanoFTPGetConnection(ctxt);
1837 if (ctxt->dataFd == -1)
1845 res = send(ctxt->controlFd, buf, len, 0);
1848 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1851 res = xmlNanoFTPReadResponse(ctxt);
1853 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1857 snprintf(buf, sizeof(buf), "RETR %s\r\n", ctxt->path);
1865 res = send(ctxt->controlFd, buf, len, 0);
1868 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1871 res = xmlNanoFTPReadResponse(ctxt);
1873 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1876 return(ctxt->dataFd);
1895 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1901 if (ctxt == NULL) return(-1);
1902 if ((filename == NULL) && (ctxt->path == NULL))
1906 if (xmlNanoFTPGetSocket(ctxt, filename) < 0)
1913 FD_SET(ctxt->dataFd, &rfd);
1914 res = select(ctxt->dataFd + 1, &rfd, NULL, NULL, &tv);
1919 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1923 res = xmlNanoFTPCheckResponse(ctxt);
1925 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1926 ctxt->dataFd = -1;
1930 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1936 if ((len = recv(ctxt->dataFd, buf, sizeof(buf), 0)) < 0) {
1939 closesocket(ctxt->dataFd); ctxt->dataFd = -1;
1945 return(xmlNanoFTPCloseConnection(ctxt));
1962 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
1965 if (ctxt->dataFd < 0) return(0);
1969 len = recv(ctxt->dataFd, dest, len, 0);
1973 xmlNanoFTPCloseConnection(ctxt);
1992 xmlNanoFTPCtxtPtr ctxt;
1999 ctxt = (xmlNanoFTPCtxtPtr) xmlNanoFTPNewCtxt(URL);
2000 if (ctxt == NULL) return(NULL);
2001 if (xmlNanoFTPConnect(ctxt) < 0) {
2002 xmlNanoFTPFreeCtxt(ctxt);
2005 sock = xmlNanoFTPGetSocket(ctxt, ctxt->path);
2007 xmlNanoFTPFreeCtxt(ctxt);
2010 return(ctxt);
2024 xmlNanoFTPCtxtPtr ctxt = (xmlNanoFTPCtxtPtr) ctx;
2026 if (ctxt == NULL)
2029 if (ctxt->dataFd >= 0) {
2030 closesocket(ctxt->dataFd);
2031 ctxt->dataFd = -1;
2033 if (ctxt->controlFd >= 0) {
2034 xmlNanoFTPQuit(ctxt);
2035 closesocket(ctxt->controlFd);
2036 ctxt->controlFd = -1;
2038 xmlNanoFTPFreeCtxt(ctxt);
2066 void *ctxt;
2072 ctxt = xmlNanoFTPNewCtxt(argv[1]);
2073 if (xmlNanoFTPConnect(ctxt) < 0) {
2081 ctxt = xmlNanoFTPConnectTo("localhost", 0);
2082 if (ctxt == NULL) {
2087 xmlNanoFTPList(ctxt, ftpList, NULL, tstfile);
2090 if (xmlNanoFTPGet(ctxt, ftpData, (void *) output, tstfile) < 0)
2095 xmlNanoFTPClose(ctxt);