[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 2/2] ftp: nur nach einem passwort fragen wenn eins gefordert wird



+ ftp.c: response/request geben jetzt den status code zurück
+ ftp.c: nur wenn der Server danach verlangt wird ein
  Passwort abgefragt

Signed-off-by: Andreas Freimuth <m.nemo@xxxxxxx>
---
 src/modules/c/ftp/ftp.c |   27 ++++++++++++++++-----------
 src/modules/c/ftp/ftp.h |    4 ++--
 2 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/src/modules/c/ftp/ftp.c b/src/modules/c/ftp/ftp.c
index 824b389..da5dc23 100644
--- a/src/modules/c/ftp/ftp.c
+++ b/src/modules/c/ftp/ftp.c
@@ -72,21 +72,24 @@ char* parser(char* string)
  * sendet einen Befehl an den FTP-Server und gibt den Request aus
  *
  * @param command enthaelt den Befehl für den FTP-Server
+ * @return Statuscode
  */
-void request(const char* command)
+int request(const char* command)
 {
 
     fprintf(handle, "%s\r\n", command);
     fflush(handle);
 
-    response();
+    return response();
 }
 
 
 /**
  * gibt den Requeststring auf dem Bildschirm aus
+ *
+ * @return Statuscode
  */
-void response(void)
+int response(void)
 {
     char code[5];
 
@@ -120,6 +123,7 @@ void response(void)
             break;
     }
 
+    return atoi(code);
 }
 
 
@@ -162,17 +166,18 @@ void ftp_connect(char* hostname)
 
     fprintf(handle, "USER %s\r\n", input);
     fflush(handle);
-    response();
+    if (response() == 331) {
 
-    input = readline("\033[1;37mPasswort: \033[0m");
+        input = readline("\033[1;37mPasswort: \033[0m");
 
-    for (; isspace(*input); input++);
-    for (c = input; !isspace(*c) && *c; c++);
-    *c = '\0';
+        for (; isspace(*input); input++);
+        for (c = input; !isspace(*c) && *c; c++);
+        *c = '\0';
 
-    fprintf(handle, "PASS %s\r\n", input);
-    fflush(handle);
-    response();
+        fprintf(handle, "PASS %s\r\n", input);
+        fflush(handle);
+           response();
+    }
 
     request("TYPE A");
 }
diff --git a/src/modules/c/ftp/ftp.h b/src/modules/c/ftp/ftp.h
index 3725768..bfed48e 100644
--- a/src/modules/c/ftp/ftp.h
+++ b/src/modules/c/ftp/ftp.h
@@ -40,8 +40,8 @@ extern FILE* ftp_data_connect(void);
 extern char* parser(char*);
 extern void ftp_connect(char*);
 extern void ftp_disconnect(void);
-extern void request(const char*);
-extern void response(void);
+extern int request(const char*);
+extern int response(void);
 
 extern FILE* handle;
 extern char* host;
-- 
1.7.4.2