mirror of
https://github.com/curl/curl.git
synced 2026-08-25 18:23:44 +03:00
David McCreedy added CURLINFO_FTP_ENTRY_PATH to export the FTP entry path
This commit is contained in:
parent
83367f67de
commit
598ffeea89
9 changed files with 70 additions and 11 deletions
|
|
@ -2530,6 +2530,8 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
|
|||
}
|
||||
ftp->entrypath =dir; /* remember this */
|
||||
infof(data, "Entry path is '%s'\n", ftp->entrypath);
|
||||
/* also save it where getinfo can access it: */
|
||||
data->state.most_recent_ftp_entrypath = ftp->entrypath;
|
||||
}
|
||||
else {
|
||||
/* couldn't get the path */
|
||||
|
|
@ -3423,8 +3425,12 @@ CURLcode Curl_ftp_disconnect(struct connectdata *conn)
|
|||
if(ftp) {
|
||||
(void)ftp_quit(conn); /* ignore errors on the QUIT */
|
||||
|
||||
if(ftp->entrypath)
|
||||
if(ftp->entrypath) {
|
||||
struct SessionHandle *data = conn->data;
|
||||
data->state.most_recent_ftp_entrypath = NULL;
|
||||
free(ftp->entrypath);
|
||||
ftp->entrypath = NULL;
|
||||
}
|
||||
if(ftp->cache) {
|
||||
free(ftp->cache);
|
||||
ftp->cache = NULL;
|
||||
|
|
|
|||
|
|
@ -187,6 +187,14 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
|
|||
case CURLINFO_COOKIELIST:
|
||||
*param_slistp = Curl_cookie_list(data);
|
||||
break;
|
||||
case CURLINFO_FTP_ENTRY_PATH:
|
||||
/* Return the entrypath string from the most recent connection.
|
||||
This pointer was copied from the connectdata structure by FTP.
|
||||
The actual string may be free()ed by subsequent libcurl calls so
|
||||
it must be copied to a safer area before the next libcurl call.
|
||||
Callers must never free it themselves. */
|
||||
*param_charp = data->state.most_recent_ftp_entrypath;
|
||||
break;
|
||||
case CURLINFO_LASTSOCKET:
|
||||
if((data->state.lastconnect != -1) &&
|
||||
(data->state.connects[data->state.lastconnect] != NULL))
|
||||
|
|
|
|||
|
|
@ -833,7 +833,7 @@ typedef enum {
|
|||
|
||||
/*
|
||||
* Values that are generated, temporary or calculated internally for a
|
||||
* "session handle" must be defined within the 'struct urlstate'. This struct
|
||||
* "session handle" must be defined within the 'struct UrlState'. This struct
|
||||
* will be used within the SessionHandle struct. When the 'SessionHandle'
|
||||
* struct is cloned, this data MUST NOT be copied.
|
||||
*
|
||||
|
|
@ -921,6 +921,10 @@ struct UrlState {
|
|||
#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
|
||||
ENGINE *engine;
|
||||
#endif /* USE_SSLEAY */
|
||||
|
||||
/* a place to store the most recenlty set FTP entrypath */
|
||||
char *most_recent_ftp_entrypath;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -950,7 +954,7 @@ struct DynamicStatic {
|
|||
* This 'UserDefined' struct must only contain data that is set once to go
|
||||
* for many (perhaps) independent connections. Values that are generated or
|
||||
* calculated internally for the "session handle" MUST be defined within the
|
||||
* 'struct urlstate' instead. The only exceptions MUST note the changes in
|
||||
* 'struct UrlState' instead. The only exceptions MUST note the changes in
|
||||
* the 'DynamicStatic' struct.
|
||||
*/
|
||||
|
||||
|
|
@ -964,7 +968,7 @@ struct UserDefined {
|
|||
this. */
|
||||
void *out; /* the fetched file goes here */
|
||||
void *in; /* the uploaded file is read from here */
|
||||
void *writeheader; /* write the header to this is non-NULL */
|
||||
void *writeheader; /* write the header to this if non-NULL */
|
||||
char *set_url; /* what original URL to work on */
|
||||
char *set_proxy; /* proxy to use */
|
||||
long use_port; /* which port to use (when not using default) */
|
||||
|
|
@ -1111,7 +1115,7 @@ struct UserDefined {
|
|||
* From now on, the 'SessionHandle' must only contain data that is set once to
|
||||
* go for many (perhaps) independent connections. Values that are generated or
|
||||
* calculated internally for the "session handle" must be defined within the
|
||||
* 'struct urlstate' instead. */
|
||||
* 'struct UrlState' instead. */
|
||||
|
||||
struct SessionHandle {
|
||||
struct curl_hash *hostcache;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue