Lines Matching refs:handle
175 /* handle handles */
177 typedef struct Handle Handle;
178 struct Handle {
193 Handle *handles = NULL;
213 handles = xrealloc(handles, num_handles, sizeof(Handle));
236 handle_to_string(int handle, char **stringp, int *hlenp)
241 put_u32(*stringp, handle);
247 handle_from_string(const char *handle, u_int hlen)
253 val = get_u32(handle);
261 handle_to_name(int handle)
263 if (handle_is_ok(handle, HANDLE_DIR)||
264 handle_is_ok(handle, HANDLE_FILE))
265 return handles[handle].name;
270 handle_to_dir(int handle)
272 if (handle_is_ok(handle, HANDLE_DIR))
273 return handles[handle].dirp;
278 handle_to_fd(int handle)
280 if (handle_is_ok(handle, HANDLE_FILE))
281 return handles[handle].fd;
286 handle_update_read(int handle, ssize_t bytes)
288 if (handle_is_ok(handle, HANDLE_FILE) && bytes > 0)
289 handles[handle].bytes_read += bytes;
293 handle_update_write(int handle, ssize_t bytes)
295 if (handle_is_ok(handle, HANDLE_FILE) && bytes > 0)
296 handles[handle].bytes_write += bytes;
300 handle_bytes_read(int handle)
302 if (handle_is_ok(handle, HANDLE_FILE))
303 return (handles[handle].bytes_read);
308 handle_bytes_write(int handle)
310 if (handle_is_ok(handle, HANDLE_FILE))
311 return (handles[handle].bytes_write);
316 handle_close(int handle)
320 if (handle_is_ok(handle, HANDLE_FILE)) {
321 ret = close(handles[handle].fd);
322 xfree(handles[handle].name);
323 handle_unused(handle);
324 } else if (handle_is_ok(handle, HANDLE_DIR)) {
325 ret = closedir(handles[handle].dirp);
326 xfree(handles[handle].name);
327 handle_unused(handle);
335 handle_log_close(int handle, char *emsg)
337 if (handle_is_ok(handle, HANDLE_FILE)) {
340 handle_to_name(handle),
341 (unsigned long long)handle_bytes_read(handle),
342 (unsigned long long)handle_bytes_write(handle));
346 handle_to_name(handle));
363 char *handle;
367 handle = get_string(&hlen);
369 val = handle_from_string(handle, hlen);
370 xfree(handle);
445 send_handle(u_int32_t id, int handle)
450 handle_to_string(handle, &string, &hlen);
451 debug("request %u: sent handle handle %d", id, handle);
551 int handle, fd, flags, mode, status = SSH2_FX_FAILURE;
570 handle = handle_new(HANDLE_FILE, name, fd, NULL);
571 if (handle < 0) {
574 send_handle(id, handle);
588 int handle, ret, status = SSH2_FX_FAILURE;
591 handle = get_handle();
592 debug3("request %u: close handle %u", id, handle);
593 handle_log_close(handle, NULL);
594 ret = handle_close(handle);
604 int handle, fd, ret, status = SSH2_FX_FAILURE;
608 handle = get_handle();
612 debug("request %u: read \"%s\" (handle %d) off %llu len %d",
613 id, handle_to_name(handle), handle, (unsigned long long)off, len);
618 fd = handle_to_fd(handle);
632 handle_update_read(handle, ret);
646 int handle, fd, ret, status;
650 handle = get_handle();
654 debug("request %u: write \"%s\" (handle %d) off %llu len %d",
655 id, handle_to_name(handle), handle, (unsigned long long)off, len);
656 fd = handle_to_fd(handle);
674 handle_update_write(handle, ret);
729 int fd, ret, handle, status = SSH2_FX_FAILURE;
732 handle = get_handle();
733 debug("request %u: fstat \"%s\" (handle %u)",
734 id, handle_to_name(handle), handle);
735 fd = handle_to_fd(handle);
818 int handle, fd, ret;
822 handle = get_handle();
824 debug("request %u: fsetstat handle %d", id, handle);
825 fd = handle_to_fd(handle);
831 char *name = handle_to_name(handle);
885 int handle, status = SSH2_FX_FAILURE;
896 handle = handle_new(HANDLE_DIR, path, 0, dirp);
897 if (handle < 0) {
900 send_handle(id, handle);
916 int handle;
920 handle = get_handle();
921 debug("request %u: readdir \"%s\" (handle %d)", id,
922 handle_to_name(handle), handle);
923 dirp = handle_to_dir(handle);
924 path = handle_to_name(handle);
1212 int handle, fd;
1215 handle = get_handle();
1216 debug("request %u: fstatvfs \"%s\" (handle %u)",
1217 id, handle_to_name(handle), handle);
1218 if ((fd = handle_to_fd(handle)) < 0) {
1497 * Ensure that we can read a full buffer and handle