summaryrefslogtreecommitdiff
path: root/libftpconn
diff options
context:
space:
mode:
Diffstat (limited to 'libftpconn')
-rw-r--r--libftpconn/ftpconn.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/libftpconn/ftpconn.h b/libftpconn/ftpconn.h
index 5af41ee3..445f5b38 100644
--- a/libftpconn/ftpconn.h
+++ b/libftpconn/ftpconn.h
@@ -157,6 +157,7 @@ struct ftp_conn
const struct ftp_conn_hooks *hooks; /* Customization hooks. */
struct ftp_conn_syshooks syshooks; /* host-dependent hook functions */
+ int syshooks_valid; /* True if the system type has been determined. */
int control; /* fd for ftp control connection */
@@ -229,6 +230,18 @@ error_t ftp_conn_open (struct ftp_conn *conn);
void ftp_conn_close (struct ftp_conn *conn);
+/* Makes sure that CONN's syshooks are set according to the remote system
+ type. */
+static inline error_t
+ftp_conn_validate_syshooks (struct ftp_conn *conn)
+{
+ if (conn->syshooks_valid)
+ return 0;
+ else
+ /* Opening the connection should set the syshooks. */
+ return ftp_conn_open (conn);
+}
+
/* Create a new ftp connection as specified by PARAMS, and return it in CONN;
HOOKS contains customization hooks used by the connection. Neither PARAMS
nor HOOKS is copied, so a copy of it should be made if necessary before