Lines Matching full:o

383     MTPObject *o = g_new0(MTPObject, 1);  in usb_mtp_object_alloc()  local
389 o->watchid = -1; in usb_mtp_object_alloc()
390 o->handle = handle; in usb_mtp_object_alloc()
391 o->parent = parent; in usb_mtp_object_alloc()
392 o->name = g_strdup(name); in usb_mtp_object_alloc()
394 o->path = g_strdup(name); in usb_mtp_object_alloc()
396 o->path = g_strdup_printf("%s/%s", parent->path, name); in usb_mtp_object_alloc()
399 if (lstat(o->path, &o->stat) != 0) { in usb_mtp_object_alloc()
402 if (S_ISREG(o->stat.st_mode)) { in usb_mtp_object_alloc()
403 o->format = FMT_UNDEFINED_OBJECT; in usb_mtp_object_alloc()
404 } else if (S_ISDIR(o->stat.st_mode)) { in usb_mtp_object_alloc()
405 o->format = FMT_ASSOCIATION; in usb_mtp_object_alloc()
410 if (access(o->path, R_OK) != 0) { in usb_mtp_object_alloc()
414 trace_usb_mtp_object_alloc(s->dev.addr, o->handle, o->path); in usb_mtp_object_alloc()
416 QTAILQ_INSERT_TAIL(&s->objects, o, next); in usb_mtp_object_alloc()
417 return o; in usb_mtp_object_alloc()
420 g_free(o->name); in usb_mtp_object_alloc()
421 g_free(o->path); in usb_mtp_object_alloc()
422 g_free(o); in usb_mtp_object_alloc()
426 static void usb_mtp_object_free(MTPState *s, MTPObject *o) in usb_mtp_object_free() argument
430 if (!o) { in usb_mtp_object_free()
434 trace_usb_mtp_object_free(s->dev.addr, o->handle, o->path); in usb_mtp_object_free()
436 if (o->watchid != -1 && s->file_monitor) { in usb_mtp_object_free()
437 qemu_file_monitor_remove_watch(s->file_monitor, o->path, o->watchid); in usb_mtp_object_free()
440 QTAILQ_REMOVE(&s->objects, o, next); in usb_mtp_object_free()
441 if (o->parent) { in usb_mtp_object_free()
442 QLIST_REMOVE(o, list); in usb_mtp_object_free()
443 o->parent->nchildren--; in usb_mtp_object_free()
446 while (!QLIST_EMPTY(&o->children)) { in usb_mtp_object_free()
447 iter = QLIST_FIRST(&o->children); in usb_mtp_object_free()
450 g_free(o->name); in usb_mtp_object_free()
451 g_free(o->path); in usb_mtp_object_free()
452 g_free(o); in usb_mtp_object_free()
457 MTPObject *o; in usb_mtp_object_lookup() local
459 QTAILQ_FOREACH(o, &s->objects, next) { in usb_mtp_object_lookup()
460 if (o->handle == handle) { in usb_mtp_object_lookup()
461 return o; in usb_mtp_object_lookup()
467 static MTPObject *usb_mtp_add_child(MTPState *s, MTPObject *o, in usb_mtp_add_child() argument
471 usb_mtp_object_alloc(s, s->next_handle++, o, name); in usb_mtp_add_child()
475 QLIST_INSERT_HEAD(&o->children, child, list); in usb_mtp_add_child()
476 o->nchildren++; in usb_mtp_add_child()
525 MTPObject *o; in file_monitor_event() local
540 o = usb_mtp_add_child(s, parent, name); in file_monitor_event()
541 if (!o) { in file_monitor_event()
555 o = usb_mtp_object_lookup_name(parent, name, -1); in file_monitor_event()
556 if (!o) { in file_monitor_event()
560 entry->handle = o->handle; in file_monitor_event()
562 trace_usb_mtp_file_monitor_event(s->dev.addr, o->path, "Obj Deleted"); in file_monitor_event()
563 usb_mtp_object_free(s, o); in file_monitor_event()
567 o = usb_mtp_object_lookup_name(parent, name, -1); in file_monitor_event()
568 if (!o) { in file_monitor_event()
572 entry->handle = o->handle; in file_monitor_event()
574 trace_usb_mtp_file_monitor_event(s->dev.addr, o->path, "Obj Modified"); in file_monitor_event()
608 static void usb_mtp_object_readdir(MTPState *s, MTPObject *o) in usb_mtp_object_readdir() argument
615 if (o->have_children) { in usb_mtp_object_readdir()
618 o->have_children = true; in usb_mtp_object_readdir()
620 fd = open(o->path, O_DIRECTORY | O_CLOEXEC | O_NOFOLLOW); in usb_mtp_object_readdir()
631 int64_t id = qemu_file_monitor_add_watch(s->file_monitor, o->path, NULL, in usb_mtp_object_readdir()
636 o->path); in usb_mtp_object_readdir()
638 trace_usb_mtp_file_monitor_event(s->dev.addr, o->path, in usb_mtp_object_readdir()
640 o->watchid = id; in usb_mtp_object_readdir()
645 usb_mtp_add_child(s, o, entry->d_name); in usb_mtp_object_readdir()
903 MTPObject *o) in usb_mtp_get_object_handles() argument
907 g_autofree uint32_t *handles = g_new(uint32_t, o->nchildren); in usb_mtp_get_object_handles()
910 trace_usb_mtp_op_get_object_handles(s->dev.addr, o->handle, o->path); in usb_mtp_get_object_handles()
912 QLIST_FOREACH(iter, &o->children, list) { in usb_mtp_get_object_handles()
915 assert(i == o->nchildren); in usb_mtp_get_object_handles()
916 usb_mtp_add_u32_array(d, o->nchildren, handles); in usb_mtp_get_object_handles()
922 MTPObject *o) in usb_mtp_get_object_info() argument
926 trace_usb_mtp_op_get_object_info(s->dev.addr, o->handle, o->path); in usb_mtp_get_object_info()
929 usb_mtp_add_u16(d, o->format); in usb_mtp_get_object_info()
932 if (o->stat.st_size > 0xFFFFFFFF) { in usb_mtp_get_object_info()
935 usb_mtp_add_u32(d, o->stat.st_size); in usb_mtp_get_object_info()
946 if (o->parent) { in usb_mtp_get_object_info()
947 usb_mtp_add_u32(d, o->parent->handle); in usb_mtp_get_object_info()
951 if (o->format == FMT_ASSOCIATION) { in usb_mtp_get_object_info()
961 usb_mtp_add_str(d, o->name); in usb_mtp_get_object_info()
962 usb_mtp_add_time(d, o->stat.st_ctime); in usb_mtp_get_object_info()
963 usb_mtp_add_time(d, o->stat.st_mtime); in usb_mtp_get_object_info()
970 MTPObject *o) in usb_mtp_get_object() argument
974 trace_usb_mtp_op_get_object(s->dev.addr, o->handle, o->path); in usb_mtp_get_object()
976 d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW); in usb_mtp_get_object()
981 d->length = o->stat.st_size; in usb_mtp_get_object()
988 MTPObject *o) in usb_mtp_get_partial_object() argument
996 trace_usb_mtp_op_get_partial_object(s->dev.addr, o->handle, o->path, in usb_mtp_get_partial_object()
1000 d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW); in usb_mtp_get_partial_object()
1007 if (offset > o->stat.st_size) { in usb_mtp_get_partial_object()
1008 offset = o->stat.st_size; in usb_mtp_get_partial_object()
1016 if (d->length > o->stat.st_size - offset) { in usb_mtp_get_partial_object()
1017 d->length = o->stat.st_size - offset; in usb_mtp_get_partial_object()
1101 MTPObject *o) in usb_mtp_get_object_prop_value() argument
1109 usb_mtp_add_u16(d, o->format); in usb_mtp_get_object_prop_value()
1112 usb_mtp_add_u64(d, o->stat.st_size); in usb_mtp_get_object_prop_value()
1115 if (o->parent == NULL) { in usb_mtp_get_object_prop_value()
1118 usb_mtp_add_u32(d, o->parent->handle); in usb_mtp_get_object_prop_value()
1126 usb_mtp_add_u64(d, o->handle); in usb_mtp_get_object_prop_value()
1129 usb_mtp_add_str(d, o->name); in usb_mtp_get_object_prop_value()
1140 * Return values when object @o is deleted.
1154 static int usb_mtp_deletefn(MTPState *s, MTPObject *o, uint32_t trans) in usb_mtp_deletefn() argument
1163 QLIST_FOREACH(iter, &o->children, list) { in usb_mtp_deletefn()
1171 if (o->format == FMT_UNDEFINED_OBJECT) { in usb_mtp_deletefn()
1172 if (remove(o->path)) { in usb_mtp_deletefn()
1175 usb_mtp_object_free(s, o); in usb_mtp_deletefn()
1178 } else if (o->format == FMT_ASSOCIATION) { in usb_mtp_deletefn()
1179 if (rmdir(o->path)) { in usb_mtp_deletefn()
1182 usb_mtp_object_free(s, o); in usb_mtp_deletefn()
1193 MTPObject *o; in usb_mtp_object_delete() local
1210 o = QTAILQ_FIRST(&s->objects); in usb_mtp_object_delete()
1212 o = usb_mtp_object_lookup(s, handle); in usb_mtp_object_delete()
1214 if (o == NULL) { in usb_mtp_object_delete()
1220 ret = usb_mtp_deletefn(s, o, trans); in usb_mtp_object_delete()
1242 MTPObject *o = NULL; in usb_mtp_command() local
1316 o = QTAILQ_FIRST(&s->objects); in usb_mtp_command()
1318 o = usb_mtp_object_lookup(s, c->argv[2]); in usb_mtp_command()
1320 if (o == NULL) { in usb_mtp_command()
1325 if (o->format != FMT_ASSOCIATION) { in usb_mtp_command()
1330 usb_mtp_object_readdir(s, o); in usb_mtp_command()
1332 trace_usb_mtp_op_get_num_objects(s->dev.addr, o->handle, o->path); in usb_mtp_command()
1334 res0 = o->nchildren; in usb_mtp_command()
1336 data_in = usb_mtp_get_object_handles(s, c, o); in usb_mtp_command()
1340 o = usb_mtp_object_lookup(s, c->argv[0]); in usb_mtp_command()
1341 if (o == NULL) { in usb_mtp_command()
1346 data_in = usb_mtp_get_object_info(s, c, o); in usb_mtp_command()
1349 o = usb_mtp_object_lookup(s, c->argv[0]); in usb_mtp_command()
1350 if (o == NULL) { in usb_mtp_command()
1355 if (o->format == FMT_ASSOCIATION) { in usb_mtp_command()
1360 data_in = usb_mtp_get_object(s, c, o); in usb_mtp_command()
1371 o = usb_mtp_object_lookup(s, c->argv[0]); in usb_mtp_command()
1372 if (o == NULL) { in usb_mtp_command()
1377 if (o->format == FMT_ASSOCIATION) { in usb_mtp_command()
1382 data_in = usb_mtp_get_partial_object(s, c, o); in usb_mtp_command()
1408 o = QTAILQ_FIRST(&s->objects); in usb_mtp_command()
1410 o = usb_mtp_object_lookup(s, handle); in usb_mtp_command()
1412 if (o == NULL) { in usb_mtp_command()
1415 } else if (o->format != FMT_ASSOCIATION) { in usb_mtp_command()
1420 if (o) { in usb_mtp_command()
1421 s->dataset.parent_handle = o->handle; in usb_mtp_command()
1462 o = usb_mtp_object_lookup(s, c->argv[0]); in usb_mtp_command()
1463 if (o == NULL) { in usb_mtp_command()
1468 data_in = usb_mtp_get_object_prop_value(s, c, o); in usb_mtp_command()
1590 MTPObject *o = in usb_mtp_update_object() local
1593 if (o) { in usb_mtp_update_object()
1594 ret = lstat(o->path, &o->stat); in usb_mtp_update_object()
1705 MTPObject *o; in usb_mtp_write_metadata() local
1730 o = usb_mtp_object_lookup_name(p, filename, -1); in usb_mtp_write_metadata()
1731 if (o != NULL) { in usb_mtp_write_metadata()
1732 next_handle = o->handle; in usb_mtp_write_metadata()