blob: 2338fefe562c2eab4faa9e13891916dd2d0de42c [file] [log] [blame]
Index: src/libmtp.c
===================================================================
--- src/libmtp.c (revision 148597)
+++ src/libmtp.c (working copy)
@@ -1144,6 +1144,9 @@
int supported = 0;
uint16_t ptp_prop = map_libmtp_property_to_ptp_property(property);
+ if (!ptp_operation_issupported(device->params, PTP_OC_MTP_GetObjectPropsSupported))
+ return 0;
+
ret = ptp_mtp_getobjectpropssupported(device->params, map_libmtp_type_to_ptp_type(filetype), &propcnt, &props);
if (ret != PTP_RC_OK) {
add_ptp_error_to_errorstack(device, ret, "LIBMTP_Is_Property_Supported(): could not get properties supported.");
@@ -1974,40 +1977,42 @@
}
/* Determine if the object size supported is 32 or 64 bit wide */
- for (i=0;i<current_params->deviceinfo.ImageFormats_len;i++) {
- PTPObjectPropDesc opd;
+ if (ptp_operation_issupported(current_params,PTP_OC_MTP_GetObjectPropsSupported)) {
+ for (i=0;i<current_params->deviceinfo.ImageFormats_len;i++) {
+ PTPObjectPropDesc opd;
- if (ptp_mtp_getobjectpropdesc(current_params,
- PTP_OPC_ObjectSize,
- current_params->deviceinfo.ImageFormats[i],
- &opd) != PTP_RC_OK) {
- LIBMTP_ERROR("LIBMTP PANIC: "
- "could not inspect object property descriptions!\n");
- } else {
- if (opd.DataType == PTP_DTC_UINT32) {
- if (bs == 0) {
- bs = 32;
- } else if (bs != 32) {
- LIBMTP_ERROR("LIBMTP PANIC: "
- "different objects support different object sizes!\n");
- bs = 0;
- break;
- }
- } else if (opd.DataType == PTP_DTC_UINT64) {
- if (bs == 0) {
- bs = 64;
- } else if (bs != 64) {
- LIBMTP_ERROR("LIBMTP PANIC: "
- "different objects support different object sizes!\n");
- bs = 0;
- break;
- }
+ if (ptp_mtp_getobjectpropdesc(current_params,
+ PTP_OPC_ObjectSize,
+ current_params->deviceinfo.ImageFormats[i],
+ &opd) != PTP_RC_OK) {
+ LIBMTP_ERROR("LIBMTP PANIC: "
+ "could not inspect object property descriptions!\n");
} else {
- // Ignore if other size.
- LIBMTP_ERROR("LIBMTP PANIC: "
- "awkward object size data type: %04x\n", opd.DataType);
- bs = 0;
- break;
+ if (opd.DataType == PTP_DTC_UINT32) {
+ if (bs == 0) {
+ bs = 32;
+ } else if (bs != 32) {
+ LIBMTP_ERROR("LIBMTP PANIC: "
+ "different objects support different object sizes!\n");
+ bs = 0;
+ break;
+ }
+ } else if (opd.DataType == PTP_DTC_UINT64) {
+ if (bs == 0) {
+ bs = 64;
+ } else if (bs != 64) {
+ LIBMTP_ERROR("LIBMTP PANIC: "
+ "different objects support different object sizes!\n");
+ bs = 0;
+ break;
+ }
+ } else {
+ // Ignore if other size.
+ LIBMTP_ERROR("LIBMTP PANIC: "
+ "awkward object size data type: %04x\n", opd.DataType);
+ bs = 0;
+ break;
+ }
}
}
}
@@ -4107,7 +4112,7 @@
break;
}
}
- } else {
+ } else if (ptp_operation_issupported(params,PTP_OC_MTP_GetObjectPropsSupported)) {
uint16_t *props = NULL;
uint32_t propcnt = 0;
int ret;