aboutsummaryrefslogtreecommitdiff
path: root/src/libmtp.c
diff options
context:
space:
mode:
authorIgnacio Martinez <ignacio.martinez.rivera@gmail.com>2012-03-22 21:59:22 +0100
committerLinus Walleij <triad@df.lth.se>2012-03-22 22:02:04 +0100
commit5ab67476d2a5af47e321a42762367cc612b100f0 (patch)
treea139c44aa9df1900bddeec8bb445f89fb7ce7dd2 /src/libmtp.c
parentcf9c8a3c42574de6a110e5a8a4378e8264155126 (diff)
downloadlibmtp-5ab67476d2a5af47e321a42762367cc612b100f0.tar.gz
Implement sent object list for folder creation.
Signed-off-by: Ignacio Martinez <ignacio.martinez.rivera@gmail.com>
Diffstat (limited to 'src/libmtp.c')
-rw-r--r--src/libmtp.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/libmtp.c b/src/libmtp.c
index 83fc256..3554cd3 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -7139,8 +7139,25 @@ uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t *device, char *name,
new_folder.StorageID = store;
// Create the object
- // FIXME: use send list here if available.
- ret = ptp_sendobjectinfo(params, &store, &parenthandle, &new_id, &new_folder);
+ if (!(params->device_flags & DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST) &&
+ ptp_operation_issupported(params,PTP_OC_MTP_SendObjectPropList)) {
+ MTPProperties *props = (MTPProperties*)calloc(2,sizeof(MTPProperties));
+
+ props[0].property = PTP_OPC_ObjectFileName;
+ props[0].datatype = PTP_DTC_STR;
+ props[0].propval.str = name;
+
+ props[1].property = PTP_OPC_Name;
+ props[1].datatype = PTP_DTC_STR;
+ props[1].propval.str = name;
+
+ ret = ptp_mtp_sendobjectproplist(params, &store, &parenthandle, &new_id, PTP_OFC_Association,
+ 0, props, 1);
+ free(props);
+ } else {
+ ret = ptp_sendobjectinfo(params, &store, &parenthandle, &new_id, &new_folder);
+ }
+
if (ret != PTP_RC_OK) {
add_ptp_error_to_errorstack(device, ret, "LIBMTP_Create_Folder: Could not send object info.");
if (ret == PTP_RC_AccessDenied) {