Mercurial > gftp.yaz
diff lib/gftp.h @ 58:c01d91c10f6c
2002-11-20 Brian Masney <masneyb@gftp.org>
* lib/protocols.c lib/gftp.h - added gftp_get_line(), gftp_read(),
gftp_write(), gftp_writefmt(), and gftp_set_sockblocking() functions.
Added struct_gftp_getline_buffer for gftp_get_line function()
* lib/cache.c lib/gftp.h lib/local.c lib/misc.c lib/protocols.c
lib/rfc2068.c lib/rfc959.c lib/ssh.c lib/sshv2.c - *_get_file() returns
off_t instead of long. *_{get,put}_next_file_chunk returns ssize_t
instead of size_t. Added *_set_config_options function to gftp_request
structure and protocol files. Use the new network functions
documented above. Convert usage of ANSI C IO (FILE *) to standard BSD
sockets so that I can use timeouts properly with select
* lib/misc.c (ssh_start_login_sequence) - use gftp_set_sockblock(),
gftp_read() and gftp_write() functions
* lib/protocols.c - move some protocol specific code to the protocol
specific files
* lib/local.c - log succesful messages to gftp_logging_misc instead
of gftp_logging_error
* lib/cache.c - log some more error conditions to the user
* lib/rfc959.c - added rfc959_getcwd(). In,
rfc959_accept_active_connection(), set set socket to blocking mode
before calling accept()
* src/text/gftk-text.c - If we get no files in gftp_text_ls(),
return instead of segfaulting
* src/gtk/gftp-gtk.c - expand the port field in the toolbar to be 45
pixels wide
* src/text/gftp-text.c src/gtk/misc-gtk.c src/gtk/transfer.c
src/gtk/view_dialog.c - changes for conversion of request->{sock,data}
from ANSI C IO (FILE *) to standard BSD sockets
author | masneyb |
---|---|
date | Thu, 21 Nov 2002 00:33:51 +0000 |
parents | a12bcbc2fce4 |
children | 41b71c4e5076 |
line wrap: on
line diff
--- a/lib/gftp.h Tue Nov 12 00:04:44 2002 +0000 +++ b/lib/gftp.h Thu Nov 21 00:33:51 2002 +0000 @@ -165,7 +165,7 @@ is_fd : 1; /* Is this a file descriptor? */ char transfer_action; /* See the GFTP_TRANS_ACTION_* vars above */ void *node; /* Pointer to the node for the gui */ - FILE * fd; + int fd; }; @@ -202,10 +202,9 @@ unsigned int port, /* Port of remote site */ proxy_port; /* Port of the proxy server */ - FILE *sockfd, /* Control connection (read) */ - *sockfd_write, /* Control connection (write) */ - *datafd, /* Data connection */ - *cachefd; /* For the directory cache */ + int sockfd, /* Control connection (read) */ + datafd, /* Data connection */ + cachefd; /* For the directory cache */ int wakeup_main_thread[2]; /* FD that gets written to by the threads to wakeup the parent */ @@ -239,13 +238,13 @@ void (*destroy) ( gftp_request * request ); int (*connect) ( gftp_request * request ); void (*disconnect) ( gftp_request * request ); - long (*get_file) ( gftp_request * request, + off_t (*get_file) ( gftp_request * request, const char *filename, - FILE * fd, + int fd, off_t startsize ); int (*put_file) ( gftp_request * request, const char *filename, - FILE * fd, + int fd, off_t startsize, off_t totalsize ); long (*transfer_file) ( gftp_request * fromreq, @@ -254,10 +253,10 @@ gftp_request * toreq, const char *tofile, off_t tosize ); - size_t (*get_next_file_chunk) ( gftp_request * request, + ssize_t (*get_next_file_chunk) ( gftp_request * request, char *buf, size_t size ); - size_t (*put_next_file_chunk) ( gftp_request * request, + ssize_t (*put_next_file_chunk) ( gftp_request * request, char *buf, size_t size ); int (*end_transfer) ( gftp_request * request ); @@ -265,7 +264,7 @@ int (*list_files) ( gftp_request * request ); int (*get_next_file) ( gftp_request * request, gftp_file *fle, - FILE *fd ); + int fd ); int (*set_data_type) ( gftp_request * request, int data_type ); off_t (*get_file_size) ( gftp_request * request, @@ -291,6 +290,7 @@ const char *filename ); int (*parse_url) ( gftp_request * request, const char *url ); + void (*set_config_options) ( gftp_request * request ); /* Options */ gftp_transfer_type transfer_type; /* Passive or non-passive (FTP only) */ @@ -451,6 +451,14 @@ #define GFTP_CUSTOM_PROXY_NUM 8 +typedef struct gftp_getline_buffer_tag +{ + char *buffer, + *curpos; + size_t max_bufsize, + cur_bufsize; +} gftp_getline_buffer; + /* Global config options */ extern supported_gftp_protocols gftp_protocols[]; extern char version[], *emailaddr, *edit_program, *view_program, @@ -488,9 +496,9 @@ extern gftp_color send_color, recv_color, error_color, misc_color; /* cache.c */ -FILE * gftp_new_cache_entry ( gftp_request * request ); +int gftp_new_cache_entry ( gftp_request * request ); -FILE * gftp_find_cache_entry ( gftp_request * request ); +int gftp_find_cache_entry ( gftp_request * request ); void gftp_clear_cache_files ( void ); @@ -589,7 +597,6 @@ int asds ); /* protocols.c */ -#define GFTP_CONNECTED(request) (request->sockfd != NULL) #define GFTP_GET_HOSTNAME(request) (request->hostname) #define GFTP_GET_USERNAME(request) (request->username) #define GFTP_GET_PASSWORD(request) (request->password) @@ -624,15 +631,16 @@ #define GFTP_TYPE_BINARY 1 #define GFTP_TYPE_ASCII 2 #define GFTP_IS_CONNECTED(request) ((request) != NULL && \ - ((request)->sockfd != NULL || \ - (request)->cached)) + ((request)->sockfd > 0 || \ + (request)->cached || \ + (request)->always_connected)) void rfc959_init ( gftp_request * request ); int rfc959_get_next_file ( gftp_request * request, gftp_file *fle, - FILE *fd ); + int fd ); void rfc2068_init ( gftp_request * request ); @@ -654,31 +662,31 @@ void gftp_disconnect ( gftp_request * request ); -size_t gftp_get_file ( gftp_request * request, +off_t gftp_get_file ( gftp_request * request, const char *filename, - FILE * fd, + int fd, size_t startsize ); int gftp_put_file ( gftp_request * request, const char *filename, - FILE * fd, + int fd, size_t startsize, size_t totalsize ); long gftp_transfer_file ( gftp_request *fromreq, const char *fromfile, - FILE * fromfd, + int fromfd, size_t fromsize, gftp_request *toreq, const char *tofile, - FILE * tofd, + int tofd, size_t tosize ); -size_t gftp_get_next_file_chunk ( gftp_request * request, +ssize_t gftp_get_next_file_chunk ( gftp_request * request, char *buf, size_t size ); -size_t gftp_put_next_file_chunk ( gftp_request * request, +ssize_t gftp_put_next_file_chunk ( gftp_request * request, char *buf, size_t size ); @@ -760,7 +768,7 @@ void gftp_set_proxy_config ( gftp_request * request, const char *proxy_config ); -long gftp_get_file_size ( gftp_request * request, +off_t gftp_get_file_size ( gftp_request * request, const char *filename ); int gftp_need_proxy ( gftp_request * request, @@ -809,15 +817,30 @@ void print_file_list ( GList * list ); -char *gftp_fgets ( gftp_request * request, +ssize_t gftp_get_line ( gftp_request * request, + gftp_getline_buffer ** rbuf, char * str, size_t len, - FILE * fd ); + int fd ); + +ssize_t gftp_read ( gftp_request * request, + void *ptr, + size_t size, + int fd ); -size_t gftp_fwrite ( gftp_request * request, - const void *ptr, +ssize_t gftp_write ( gftp_request * request, + const char *ptr, size_t size, - FILE * fd ); + int fd ); + +ssize_t gftp_writefmt ( gftp_request * request, + int fd, + const char *fmt, + ... ); + +int gftp_set_sockblocking ( gftp_request * request, + int fd, + int non_blocking ); #endif