version 1.80, 2008/01/21 19:20:17 |
version 1.81, 2008/03/23 12:54:01 |
|
|
u_int num_requests; |
u_int num_requests; |
u_int version; |
u_int version; |
u_int msg_id; |
u_int msg_id; |
|
#define SFTP_EXT_POSIX_RENAME 1 |
|
u_int exts; |
}; |
}; |
|
|
static void |
static void |
|
|
struct sftp_conn * |
struct sftp_conn * |
do_init(int fd_in, int fd_out, u_int transfer_buflen, u_int num_requests) |
do_init(int fd_in, int fd_out, u_int transfer_buflen, u_int num_requests) |
{ |
{ |
u_int type; |
u_int type, exts = 0; |
int version; |
int version; |
Buffer msg; |
Buffer msg; |
struct sftp_conn *ret; |
struct sftp_conn *ret; |
|
|
char *value = buffer_get_string(&msg, NULL); |
char *value = buffer_get_string(&msg, NULL); |
|
|
debug2("Init extension: \"%s\"", name); |
debug2("Init extension: \"%s\"", name); |
|
if (strcmp(name, "posix-rename@openssh.com") == 0) |
|
exts |= SFTP_EXT_POSIX_RENAME; |
xfree(name); |
xfree(name); |
xfree(value); |
xfree(value); |
} |
} |
|
|
ret->num_requests = num_requests; |
ret->num_requests = num_requests; |
ret->version = version; |
ret->version = version; |
ret->msg_id = 1; |
ret->msg_id = 1; |
|
ret->exts = exts; |
|
|
/* Some filexfer v.0 servers don't support large packets */ |
/* Some filexfer v.0 servers don't support large packets */ |
if (version == 0) |
if (version == 0) |
|
|
|
|
/* Send rename request */ |
/* Send rename request */ |
id = conn->msg_id++; |
id = conn->msg_id++; |
buffer_put_char(&msg, SSH2_FXP_RENAME); |
if ((conn->exts & SFTP_EXT_POSIX_RENAME)) { |
buffer_put_int(&msg, id); |
buffer_put_char(&msg, SSH2_FXP_EXTENDED); |
|
buffer_put_int(&msg, id); |
|
buffer_put_cstring(&msg, "posix-rename@openssh.com"); |
|
} else { |
|
buffer_put_char(&msg, SSH2_FXP_RENAME); |
|
buffer_put_int(&msg, id); |
|
} |
buffer_put_cstring(&msg, oldpath); |
buffer_put_cstring(&msg, oldpath); |
buffer_put_cstring(&msg, newpath); |
buffer_put_cstring(&msg, newpath); |
send_msg(conn->fd_out, &msg); |
send_msg(conn->fd_out, &msg); |
debug3("Sent message SSH2_FXP_RENAME \"%s\" -> \"%s\"", oldpath, |
debug3("Sent message %s \"%s\" -> \"%s\"", |
newpath); |
(conn->exts & SFTP_EXT_POSIX_RENAME) ? "posix-rename@openssh.com" : |
|
"SSH2_FXP_RENAME", oldpath, newpath); |
buffer_free(&msg); |
buffer_free(&msg); |
|
|
status = get_status(conn->fd_in, id); |
status = get_status(conn->fd_in, id); |