Lines Matching full:handle
274 /* handle handles */
276 typedef struct Handle Handle;
277 struct Handle {
293 Handle *handles = NULL;
313 handles = xrealloc(handles, num_handles, sizeof(Handle));
337 handle_to_string(int handle, u_char **stringp, int *hlenp)
342 put_u32(*stringp, handle);
348 handle_from_string(const u_char *handle, u_int hlen)
354 val = get_u32(handle);
362 handle_to_name(int handle)
364 if (handle_is_ok(handle, HANDLE_DIR)||
365 handle_is_ok(handle, HANDLE_FILE))
366 return handles[handle].name;
371 handle_to_dir(int handle)
373 if (handle_is_ok(handle, HANDLE_DIR))
374 return handles[handle].dirp;
379 handle_to_fd(int handle)
381 if (handle_is_ok(handle, HANDLE_FILE))
382 return handles[handle].fd;
387 handle_to_flags(int handle)
389 if (handle_is_ok(handle, HANDLE_FILE))
390 return handles[handle].flags;
395 handle_update_read(int handle, ssize_t bytes)
397 if (handle_is_ok(handle, HANDLE_FILE) && bytes > 0)
398 handles[handle].bytes_read += bytes;
402 handle_update_write(int handle, ssize_t bytes)
404 if (handle_is_ok(handle, HANDLE_FILE) && bytes > 0)
405 handles[handle].bytes_write += bytes;
409 handle_bytes_read(int handle)
411 if (handle_is_ok(handle, HANDLE_FILE))
412 return (handles[handle].bytes_read);
417 handle_bytes_write(int handle)
419 if (handle_is_ok(handle, HANDLE_FILE))
420 return (handles[handle].bytes_write);
425 handle_close(int handle)
429 if (handle_is_ok(handle, HANDLE_FILE)) {
430 ret = close(handles[handle].fd);
431 free(handles[handle].name);
432 handle_unused(handle);
433 } else if (handle_is_ok(handle, HANDLE_DIR)) {
434 ret = closedir(handles[handle].dirp);
435 free(handles[handle].name);
436 handle_unused(handle);
444 handle_log_close(int handle, char *emsg)
446 if (handle_is_ok(handle, HANDLE_FILE)) {
449 handle_to_name(handle),
450 (unsigned long long)handle_bytes_read(handle),
451 (unsigned long long)handle_bytes_write(handle));
455 handle_to_name(handle));
472 u_char *handle;
477 if ((r = sshbuf_get_string(queue, &handle, &hlen)) != 0)
480 *hp = handle_from_string(handle, hlen);
481 free(handle);
564 send_handle(u_int32_t id, int handle)
569 handle_to_string(handle, &string, &hlen);
570 debug("request %u: sent handle handle %d", id, handle);
686 int r, handle, fd, flags, mode, status = SSH2_FX_FAILURE;
708 handle = handle_new(HANDLE_FILE, name, fd, flags, NULL);
709 if (handle < 0) {
712 send_handle(id, handle);
725 int r, handle, ret, status = SSH2_FX_FAILURE;
727 if ((r = get_handle(iqueue, &handle)) != 0)
730 debug3("request %u: close handle %u", id, handle);
731 handle_log_close(handle, NULL);
732 ret = handle_close(handle);
742 int r, handle, fd, ret, status = SSH2_FX_FAILURE;
745 if ((r = get_handle(iqueue, &handle)) != 0 ||
750 debug("request %u: read \"%s\" (handle %d) off %llu len %d",
751 id, handle_to_name(handle), handle, (unsigned long long)off, len);
756 fd = handle_to_fd(handle);
770 handle_update_read(handle, ret);
783 int r, handle, fd, ret, status;
786 if ((r = get_handle(iqueue, &handle)) != 0 ||
791 debug("request %u: write \"%s\" (handle %d) off %llu len %zu",
792 id, handle_to_name(handle), handle, (unsigned long long)off, len);
793 fd = handle_to_fd(handle);
798 if (!(handle_to_flags(handle) & O_APPEND) &&
810 handle_update_write(handle, ret);
864 int fd, r, handle, status = SSH2_FX_FAILURE;
866 if ((r = get_handle(iqueue, &handle)) != 0)
868 debug("request %u: fstat \"%s\" (handle %u)",
869 id, handle_to_name(handle), handle);
870 fd = handle_to_fd(handle);
948 int handle, fd, r;
951 if ((r = get_handle(iqueue, &handle)) != 0 ||
955 debug("request %u: fsetstat handle %d", id, handle);
956 fd = handle_to_fd(handle);
960 char *name = handle_to_name(handle);
1014 int r, handle, status = SSH2_FX_FAILURE;
1025 handle = handle_new(HANDLE_DIR, path, 0, 0, dirp);
1026 if (handle < 0) {
1029 send_handle(id, handle);
1045 int r, handle;
1047 if ((r = get_handle(iqueue, &handle)) != 0)
1050 debug("request %u: readdir \"%s\" (handle %d)", id,
1051 handle_to_name(handle), handle);
1052 dirp = handle_to_dir(handle);
1053 path = handle_to_name(handle);
1323 int r, handle, fd;
1326 if ((r = get_handle(iqueue, &handle)) != 0)
1328 debug("request %u: fstatvfs \"%s\" (handle %u)",
1329 id, handle_to_name(handle), handle);
1330 if ((fd = handle_to_fd(handle)) < 0) {
1362 int handle, fd, r, status = SSH2_FX_OP_UNSUPPORTED;
1364 if ((r = get_handle(iqueue, &handle)) != 0)
1366 debug3("request %u: fsync (handle %u)", id, handle);
1367 verbose("fsync \"%s\"", handle_to_name(handle));
1368 if ((fd = handle_to_fd(handle)) < 0)
1370 else if (handle_is_ok(handle, HANDLE_FILE)) {
1651 * Ensure that we can read a full buffer and handle