diff options
author | Ignacio Martinez <ignacio.martinez.rivera@gmail.com> | 2012-03-22 21:59:22 +0100 |
---|---|---|
committer | Linus Walleij <triad@df.lth.se> | 2012-03-22 22:02:04 +0100 |
commit | 5ab67476d2a5af47e321a42762367cc612b100f0 (patch) | |
tree | a139c44aa9df1900bddeec8bb445f89fb7ce7dd2 /src/libmtp.c | |
parent | cf9c8a3c42574de6a110e5a8a4378e8264155126 (diff) | |
download | libmtp-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.c | 21 |
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) { |