mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 03:52:49 -05:00
First phase of SFTP re-engineering. Each base-level fxp_* function
has been split into a send half and a receive half, so that callers can set several requests in motion at a time and deal with the responses in whatever order they arrive. [originally from svn r3318]
This commit is contained in:
62
sftp.h
62
sftp.h
@ -92,6 +92,9 @@ struct fxp_names {
|
||||
struct fxp_name *names;
|
||||
};
|
||||
|
||||
struct sftp_request;
|
||||
struct sftp_packet;
|
||||
|
||||
const char *fxp_error(void);
|
||||
int fxp_error_type(void);
|
||||
|
||||
@ -104,71 +107,87 @@ int fxp_init(void);
|
||||
* Canonify a pathname. Concatenate the two given path elements
|
||||
* with a separating slash, unless the second is NULL.
|
||||
*/
|
||||
char *fxp_realpath(char *path);
|
||||
struct sftp_request *fxp_realpath_send(char *path);
|
||||
char *fxp_realpath_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Open a file.
|
||||
*/
|
||||
struct fxp_handle *fxp_open(char *path, int type);
|
||||
struct sftp_request *fxp_open_send(char *path, int type);
|
||||
struct fxp_handle *fxp_open_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Open a directory.
|
||||
*/
|
||||
struct fxp_handle *fxp_opendir(char *path);
|
||||
struct sftp_request *fxp_opendir_send(char *path);
|
||||
struct fxp_handle *fxp_opendir_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Close a file/dir.
|
||||
*/
|
||||
void fxp_close(struct fxp_handle *handle);
|
||||
struct sftp_request *fxp_close_send(struct fxp_handle *handle);
|
||||
void fxp_close_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Make a directory.
|
||||
*/
|
||||
int fxp_mkdir(char *path);
|
||||
struct sftp_request *fxp_mkdir_send(char *path);
|
||||
int fxp_mkdir_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Remove a directory.
|
||||
*/
|
||||
int fxp_rmdir(char *path);
|
||||
struct sftp_request *fxp_rmdir_send(char *path);
|
||||
int fxp_rmdir_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Remove a file.
|
||||
*/
|
||||
int fxp_remove(char *fname);
|
||||
struct sftp_request *fxp_remove_send(char *fname);
|
||||
int fxp_remove_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Rename a file.
|
||||
*/
|
||||
int fxp_rename(char *srcfname, char *dstfname);
|
||||
struct sftp_request *fxp_rename_send(char *srcfname, char *dstfname);
|
||||
int fxp_rename_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Return file attributes.
|
||||
*/
|
||||
int fxp_stat(char *fname, struct fxp_attrs *attrs);
|
||||
int fxp_fstat(struct fxp_handle *handle, struct fxp_attrs *attrs);
|
||||
struct sftp_request *fxp_stat_send(char *fname);
|
||||
int fxp_stat_recv(struct sftp_packet *pktin, struct fxp_attrs *attrs);
|
||||
struct sftp_request *fxp_fstat_send(struct fxp_handle *handle);
|
||||
int fxp_fstat_recv(struct sftp_packet *pktin, struct fxp_attrs *attrs);
|
||||
|
||||
/*
|
||||
* Set file attributes.
|
||||
*/
|
||||
int fxp_setstat(char *fname, struct fxp_attrs attrs);
|
||||
int fxp_fsetstat(struct fxp_handle *handle, struct fxp_attrs attrs);
|
||||
struct sftp_request *fxp_setstat_send(char *fname, struct fxp_attrs attrs);
|
||||
int fxp_setstat_recv(struct sftp_packet *pktin);
|
||||
struct sftp_request *fxp_fsetstat_send(struct fxp_handle *handle,
|
||||
struct fxp_attrs attrs);
|
||||
int fxp_fsetstat_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Read from a file.
|
||||
*/
|
||||
int fxp_read(struct fxp_handle *handle, char *buffer, uint64 offset,
|
||||
int len);
|
||||
struct sftp_request *fxp_read_send(struct fxp_handle *handle,
|
||||
uint64 offset, int len);
|
||||
int fxp_read_recv(struct sftp_packet *pktin, char *buffer, int len);
|
||||
|
||||
/*
|
||||
* Write to a file. Returns 0 on error, 1 on OK.
|
||||
*/
|
||||
int fxp_write(struct fxp_handle *handle, char *buffer, uint64 offset,
|
||||
int len);
|
||||
struct sftp_request *fxp_write_send(struct fxp_handle *handle,
|
||||
char *buffer, uint64 offset, int len);
|
||||
int fxp_write_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Read from a directory.
|
||||
*/
|
||||
struct fxp_names *fxp_readdir(struct fxp_handle *handle);
|
||||
struct sftp_request *fxp_readdir_send(struct fxp_handle *handle);
|
||||
struct fxp_names *fxp_readdir_recv(struct sftp_packet *pktin);
|
||||
|
||||
/*
|
||||
* Free up an fxp_names structure.
|
||||
@ -180,3 +199,12 @@ void fxp_free_names(struct fxp_names *names);
|
||||
*/
|
||||
struct fxp_name *fxp_dup_name(struct fxp_name *name);
|
||||
void fxp_free_name(struct fxp_name *name);
|
||||
|
||||
/*
|
||||
* These functions might well be temporary placeholders to be
|
||||
* replaced with more useful similar functions later. They form the
|
||||
* main dispatch loop for processing incoming SFTP responses.
|
||||
*/
|
||||
void sftp_register(struct sftp_request *req);
|
||||
struct sftp_request *sftp_find_request(struct sftp_packet *pktin);
|
||||
struct sftp_packet *sftp_recv(void);
|
||||
|
Reference in New Issue
Block a user