version 1.4, 2000/09/04 19:10:08 |
version 1.5, 2000/09/05 19:20:49 |
|
|
{ |
{ |
static Attrib a; |
static Attrib a; |
attrib_clear(&a); |
attrib_clear(&a); |
a.flags = get_int(); |
a.flags = buffer_get_int(b); |
if (a.flags & SSH_FXA_HAVE_SIZE) { |
if (a.flags & SSH_FXA_HAVE_SIZE) { |
a.size_high = get_int(); |
a.size_high = buffer_get_int(b); |
a.size_low = get_int(); |
a.size_low = buffer_get_int(b); |
a.size = (((u_int64_t) a.size_high) << 32) + a.size_low; |
a.size = (((u_int64_t) a.size_high) << 32) + a.size_low; |
} |
} |
if (a.flags & SSH_FXA_HAVE_UGID) { |
if (a.flags & SSH_FXA_HAVE_UGID) { |
a.uid = get_int(); |
a.uid = buffer_get_int(b); |
a.gid = get_int(); |
a.gid = buffer_get_int(b); |
} |
} |
if (a.flags & SSH_FXA_HAVE_PERM) { |
if (a.flags & SSH_FXA_HAVE_PERM) { |
a.perm = get_int(); |
a.perm = buffer_get_int(b); |
} |
} |
if (a.flags & SSH_FXA_HAVE_TIME) { |
if (a.flags & SSH_FXA_HAVE_TIME) { |
a.atime = get_int(); |
a.atime = buffer_get_int(b); |
a.mtime = get_int(); |
a.mtime = buffer_get_int(b); |
} |
} |
return &a; |
return &a; |
} |
} |
|
|
} |
} |
|
|
int |
int |
handle_from_string(char *handle, int hlen) |
handle_from_string(char *handle, u_int hlen) |
{ |
{ |
/* XXX OVERFLOW ? */ |
/* XXX OVERFLOW ? */ |
char *ep; |
char *ep; |
|
|
get_handle(void) |
get_handle(void) |
{ |
{ |
char *handle; |
char *handle; |
int hlen, val; |
int val; |
|
u_int hlen; |
handle = get_string(&hlen); |
handle = get_string(&hlen); |
val = handle_from_string(handle, hlen); |
val = handle_from_string(handle, hlen); |
xfree(handle); |
xfree(handle); |
|
|
{ |
{ |
u_int32_t id, off_high, off_low; |
u_int32_t id, off_high, off_low; |
u_int64_t off; |
u_int64_t off; |
int len; |
u_int len; |
int handle, fd, ret, status = SSH_FX_FAILURE; |
int handle, fd, ret, status = SSH_FX_FAILURE; |
char *data; |
char *data; |
|
|
|
|
{ |
{ |
fd_set rset, wset; |
fd_set rset, wset; |
int in, out, max; |
int in, out, max; |
size_t len, olen; |
ssize_t len, olen; |
|
|
handle_init(); |
handle_init(); |
|
|