summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/ftplib/ftplib.c (renamed from noncore/net/opieftp/ftplib.c)60
-rw-r--r--noncore/net/ftplib/ftplib.control9
-rw-r--r--noncore/net/ftplib/ftplib.h (renamed from noncore/net/opieftp/ftplib.h)0
-rw-r--r--noncore/net/ftplib/ftplib.pro6
-rw-r--r--noncore/net/opieftp/opieftp.control2
-rw-r--r--noncore/net/opieftp/opieftp.cpp6
-rw-r--r--noncore/net/opieftp/opieftp.h2
-rw-r--r--noncore/net/opieftp/opieftp.pro4
8 files changed, 81 insertions, 8 deletions
diff --git a/noncore/net/opieftp/ftplib.c b/noncore/net/ftplib/ftplib.c
index 5116170..421f855 100644
--- a/noncore/net/opieftp/ftplib.c
+++ b/noncore/net/ftplib/ftplib.c
@@ -19,33 +19,45 @@
19/* Boston, MA 02111-1307, USA. */ 19/* Boston, MA 02111-1307, USA. */
20/* */ 20/* */
21/***************************************************************************/ 21/***************************************************************************/
22 22// changes made by Lorn Potter <llornkcor@handhelds.org>
23//
23#if defined(__unix__) || defined(__VMS) 24#if defined(__unix__) || defined(__VMS)
24#include <unistd.h> 25#include <unistd.h>
25#endif 26#endif
26#if defined(_WIN32) 27#if defined(_WIN32)
27#include <windows.h> 28#include <windows.h>
28#endif 29#endif
30
29#include <stdio.h> 31#include <stdio.h>
30#include <stdlib.h> 32#include <stdlib.h>
31#include <string.h> 33#include <string.h>
32#include <errno.h> 34#include <errno.h>
33#include <ctype.h> 35#include <ctype.h>
36
34#if defined(__unix__) 37#if defined(__unix__)
38
39#include <sys/types.h>
40#include <unistd.h>
41#include <fcntl.h>
35#include <sys/time.h> 42#include <sys/time.h>
36#include <sys/types.h> 43#include <sys/types.h>
37#include <sys/socket.h> 44#include <sys/socket.h>
38#include <netinet/in.h> 45#include <netinet/in.h>
39#include <netdb.h> 46#include <netdb.h>
40#include <arpa/inet.h> 47#include <arpa/inet.h>
48
41#elif defined(VMS) 49#elif defined(VMS)
50
42#include <types.h> 51#include <types.h>
43#include <socket.h> 52#include <socket.h>
44#include <in.h> 53#include <in.h>
45#include <netdb.h> 54#include <netdb.h>
46#include <inet.h> 55#include <inet.h>
56
47#elif defined(_WIN32) 57#elif defined(_WIN32)
58
48#include <winsock.h> 59#include <winsock.h>
60
49#endif 61#endif
50 62
51#define BUILDING_LIBRARY 63#define BUILDING_LIBRARY
@@ -58,7 +70,7 @@
58#endif 70#endif
59 71
60#define FTPLIB_BUFSIZ 8192 72#define FTPLIB_BUFSIZ 8192
61#define ACCEPT_TIMEOUT 15 73#define ACCEPT_TIMEOUT 10
62 74
63#define FTPLIB_CONTROL 0 75#define FTPLIB_CONTROL 0
64#define FTPLIB_READ 1 76#define FTPLIB_READ 1
@@ -382,7 +394,7 @@ GLOBALDEF char *FtpLastResponse(netbuf *nControl)
382 */ 394 */
383GLOBALDEF int FtpConnect(const char *host, netbuf **nControl) 395GLOBALDEF int FtpConnect(const char *host, netbuf **nControl)
384{ 396{
385 int sControl; 397 int sControl, stat, flags, oldflags;
386 struct sockaddr_in sin; 398 struct sockaddr_in sin;
387 struct hostent *phe; 399 struct hostent *phe;
388 struct servent *pse; 400 struct servent *pse;
@@ -390,6 +402,8 @@ GLOBALDEF int FtpConnect(const char *host, netbuf **nControl)
390 netbuf *ctrl; 402 netbuf *ctrl;
391 char *lhost; 403 char *lhost;
392 char *pnum; 404 char *pnum;
405 struct timeval tv;
406 fd_set wr;
393 407
394 memset(&sin,0,sizeof(sin)); 408 memset(&sin,0,sizeof(sin));
395 sin.sin_family = AF_INET; 409 sin.sin_family = AF_INET;
@@ -426,15 +440,19 @@ GLOBALDEF int FtpConnect(const char *host, netbuf **nControl)
426 perror("gethostbyname"); 440 perror("gethostbyname");
427 return 0; 441 return 0;
428 } 442 }
443
429 memcpy((char *)&sin.sin_addr, phe->h_addr, phe->h_length); 444 memcpy((char *)&sin.sin_addr, phe->h_addr, phe->h_length);
445
430 } 446 }
431 free(lhost); 447 free(lhost);
448
432 sControl = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); 449 sControl = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
433 if (sControl == -1) 450 if (sControl == -1)
434 { 451 {
435 perror("socket"); 452 perror("socket");
436 return 0; 453 return 0;
437 } 454 }
455
438 if (setsockopt(sControl,SOL_SOCKET,SO_REUSEADDR, 456 if (setsockopt(sControl,SOL_SOCKET,SO_REUSEADDR,
439 SETSOCKOPT_OPTVAL_TYPE &on, sizeof(on)) == -1) 457 SETSOCKOPT_OPTVAL_TYPE &on, sizeof(on)) == -1)
440 { 458 {
@@ -442,12 +460,45 @@ GLOBALDEF int FtpConnect(const char *host, netbuf **nControl)
442 net_close(sControl); 460 net_close(sControl);
443 return 0; 461 return 0;
444 } 462 }
445 if (connect(sControl, (struct sockaddr *)&sin, sizeof(sin)) == -1) 463
464 //set nonblocking for connection timeout
465 flags = fcntl( sControl, F_GETFL,0);
466 oldflags=flags;
467 fcntl( sControl, F_SETFL, O_NONBLOCK|flags);
468
469 stat=connect( sControl, (struct sockaddr *)&sin, sizeof(sin));
470 if (stat < 0)
471 {
472 if (errno != EWOULDBLOCK && errno != EINPROGRESS)
446 { 473 {
447 perror("connect"); 474 perror("connect");
448 net_close(sControl); 475 net_close(sControl);
449 return 0; 476 return 0;
450 } 477 }
478 }
479
480 FD_ZERO(&wr);
481 FD_SET( sControl, &wr);
482
483 tv.tv_sec = ACCEPT_TIMEOUT;
484 tv.tv_usec = 0;
485
486 stat = select(sControl+1, 0, &wr, 0, &tv);
487
488 if (stat < 1)
489 {
490 // time out has expired,
491 // or an error has ocurred
492 perror("timeout");
493 net_close(sControl);
494 return 0;
495 }
496
497 printf("connected\n");
498
499 //set original flags
500 fcntl( sControl, F_SETFL, oldflags);
501
451 ctrl = calloc(1,sizeof(netbuf)); 502 ctrl = calloc(1,sizeof(netbuf));
452 if (ctrl == NULL) 503 if (ctrl == NULL)
453 { 504 {
@@ -737,6 +788,7 @@ static int FtpAcceptConnection(netbuf *nData, netbuf *nControl)
737 FD_SET(nData->handle, &mask); 788 FD_SET(nData->handle, &mask);
738 tv.tv_usec = 0; 789 tv.tv_usec = 0;
739 tv.tv_sec = ACCEPT_TIMEOUT; 790 tv.tv_sec = ACCEPT_TIMEOUT;
791 printf("<<<<<<<<<<<<<<<<%d\n",ACCEPT_TIMEOUT);
740 i = nControl->handle; 792 i = nControl->handle;
741 if (i < nData->handle) 793 if (i < nData->handle)
742 i = nData->handle; 794 i = nData->handle;
diff --git a/noncore/net/ftplib/ftplib.control b/noncore/net/ftplib/ftplib.control
new file mode 100644
index 0000000..67765ad
--- a/dev/null
+++ b/noncore/net/ftplib/ftplib.control
@@ -0,0 +1,9 @@
1Files: $QTDIR/lib/libftplib.*
2Priority: optional
3Section: Communications
4Maintainer: L.J. Potter <ljp@llornkcor.com>
5Architecture: arm
6Version: $QPE_VERSION-$SUB_VERSION
7Depends: opie-base ($QPE_VERSION)
8Description: Libftp
9 The ftp library for the Opie environment.
diff --git a/noncore/net/opieftp/ftplib.h b/noncore/net/ftplib/ftplib.h
index 75a90ae..75a90ae 100644
--- a/noncore/net/opieftp/ftplib.h
+++ b/noncore/net/ftplib/ftplib.h
diff --git a/noncore/net/ftplib/ftplib.pro b/noncore/net/ftplib/ftplib.pro
new file mode 100644
index 0000000..9ee3605
--- a/dev/null
+++ b/noncore/net/ftplib/ftplib.pro
@@ -0,0 +1,6 @@
1TEMPLATE = lib
2CONFIG = qt warn_on release
3HEADERS = ftplib.h
4SOURCES = ftplib.c
5DESTDIR = $(QTDIR)/lib$(PROJMAK)
6INTERFACES =
diff --git a/noncore/net/opieftp/opieftp.control b/noncore/net/opieftp/opieftp.control
index 18ec80f..42590bd 100644
--- a/noncore/net/opieftp/opieftp.control
+++ b/noncore/net/opieftp/opieftp.control
@@ -4,6 +4,6 @@ Section: Communications
4Maintainer: L.J. Potter <ljp@llornkcor.com> 4Maintainer: L.J. Potter <ljp@llornkcor.com>
5Architecture: arm 5Architecture: arm
6Version: $QPE_VERSION-$SUB_VERSION 6Version: $QPE_VERSION-$SUB_VERSION
7Depends: opie-base ($QPE_VERSION) 7Depends: opie-base ($QPE_VERSION), ftplib
8Description: OpieFtp 8Description: OpieFtp
9 The ftp client for the Opie environment. 9 The ftp client for the Opie environment.
diff --git a/noncore/net/opieftp/opieftp.cpp b/noncore/net/opieftp/opieftp.cpp
index 292cc9d..7c83223 100644
--- a/noncore/net/opieftp/opieftp.cpp
+++ b/noncore/net/opieftp/opieftp.cpp
@@ -14,7 +14,7 @@
14#include "opieftp.h" 14#include "opieftp.h"
15 15
16extern "C" { 16extern "C" {
17#include "ftplib.h" 17#include "../ftplib/ftplib.h"
18} 18}
19 19
20#include "inputDialog.h" 20#include "inputDialog.h"
@@ -1510,3 +1510,7 @@ void OpieFtp::serverListClicked( const QString &item) {
1510 serverComboSelected(i-1); 1510 serverComboSelected(i-1);
1511 } 1511 }
1512} 1512}
1513
1514void OpieFtp::timerOut() {
1515
1516}
diff --git a/noncore/net/opieftp/opieftp.h b/noncore/net/opieftp/opieftp.h
index 2aa691a..109b5f8 100644
--- a/noncore/net/opieftp/opieftp.h
+++ b/noncore/net/opieftp/opieftp.h
@@ -39,6 +39,7 @@ class QPushButton;
39class QToolButton; 39class QToolButton;
40class QStringList; 40class QStringList;
41class QListBox; 41class QListBox;
42class QTimer;
42 43
43class OpieFtp : public QMainWindow 44class OpieFtp : public QMainWindow
44{ 45{
@@ -67,6 +68,7 @@ public:
67 bool b; 68 bool b;
68 int currentServerConfig; 69 int currentServerConfig;
69protected slots: 70protected slots:
71 void timerOut();
70 void upDir(); 72 void upDir();
71 void homeButtonPushed(); 73 void homeButtonPushed();
72 void docButtonPushed(); 74 void docButtonPushed();
diff --git a/noncore/net/opieftp/opieftp.pro b/noncore/net/opieftp/opieftp.pro
index 6d88530..ae72ff3 100644
--- a/noncore/net/opieftp/opieftp.pro
+++ b/noncore/net/opieftp/opieftp.pro
@@ -1,12 +1,12 @@
1TEMPLATE = app 1TEMPLATE = app
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3HEADERS = opieftp.h inputDialog.h ftplib.h 3HEADERS = opieftp.h inputDialog.h ftplib.h
4SOURCES = opieftp.cpp inputDialog.cpp ftplib.c main.cpp 4SOURCES = opieftp.cpp inputDialog.cpp main.cpp
5TARGET = opieftp 5TARGET = opieftp
6DESTDIR = $(OPIEDIR)/bin 6DESTDIR = $(OPIEDIR)/bin
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe -lftplib
10 10
11TRANSLATIONS = ../../../i18n/de/opieftp.ts \ 11TRANSLATIONS = ../../../i18n/de/opieftp.ts \
12 ../../../i18n/en/opieftp.ts \ 12 ../../../i18n/en/opieftp.ts \