return -1;
}
+static void __wait_smack_labeling(char *usb_node)
+{
+ int check_count = 0;
+
+ do {
+ char label[256] = {0,};
+ getxattr(usb_node, "security.SMACK64", label, 256);
+
+ MTP_LOGI("check_count: %d, label: %s", check_count, label);
+
+ if (label[0] == NULL)
+ continue;
+ else if (!strcmp(label, "*"))
+ break;
+
+ usleep(50*1000); /* 50ms */
+ } while (check_count++ < 50);
+}
+
static int __parsing_usb_busno(const char *devpath)
{
int busno = -1;
LIBMTP_Detect_Raw_Devices(&raw_devices, &num_of_devices);
for (slot = 0; slot < num_of_devices; slot++) {
if (bus_no == raw_devices[slot].bus_location) {
- MTP_LOGI("connected bus_no: %d", bus_no);
int empty_slot = 0;
+ char usb_node[256] = {0,};
+
+ MTP_LOGI("connected bus_no: %d", bus_no);
+
+ snprintf(usb_node, sizeof(usb_node), "/dev/bus/usb/%03d/%03d",
+ raw_devices[slot].bus_location, raw_devices[slot].devnum);
+
+ MTP_LOGI("usb_node : %s", usb_node);
+
+ __wait_smack_labeling(usb_node);
device = LIBMTP_Open_Raw_Device_Uncached(&raw_devices[slot]);
if (device == NULL) {
- MTP_LOGE("Unable to open raw device[%d]", slot);
+ MTP_LOGE("Unable to open raw device: %d", slot);
continue;
}
device_info->model_name = LIBMTP_Get_Modelname(device);
empty_slot = __search_empty_slot(mtp_ctx);
+ if (empty_slot < 0)
+ continue;
mtp_ctx->device_list->device_info_list[empty_slot] = device_info;
mtp_ctx->device_list->device_num++;
LIBMTP_mtpdevice_t *device;
mtp_device_info *device_info;
int empty_slot;
+ char usb_node[256] = {0,};
+
+ snprintf(usb_node, sizeof(usb_node), "/dev/bus/usb/%03d/%03d",
+ rawdevices[device_index].bus_location, rawdevices[device_index].devnum);
+
+ MTP_LOGI("usb_node : %s", usb_node);
+
+ __wait_smack_labeling(usb_node);
device = LIBMTP_Open_Raw_Device_Uncached(&rawdevices[device_index]);
if (device == NULL) {
MTP_LOGI("Device: %s, Bus: %d", device_info->model_name, device_info->bus_location);
empty_slot = __search_empty_slot(mtp_ctx);
+ if (empty_slot < 0)
+ continue;
mtp_ctx->device_list->device_info_list[empty_slot] = device_info;
mtp_ctx->device_list->device_num++;
/* variable definition */
mtp_param *param = (mtp_param *)user_data;
mtp_error_e result = MTP_ERROR_NONE;
- LIBMTP_mtpdevice_t *device;
+ LIBMTP_mtpdevice_t *device = NULL;
char *name = NULL;
mtp_device_info *device_info;
int device_id;
/* variable definition */
mtp_param *param = (mtp_param *)user_data;
mtp_error_e result = MTP_ERROR_NONE;
- LIBMTP_mtpdevice_t *device;
+ LIBMTP_mtpdevice_t *device = NULL;
char *name = NULL;
mtp_device_info *device_info;
int device_id;
{
mtp_param *param = (mtp_param *)user_data;
mtp_error_e result = MTP_ERROR_NONE;
- LIBMTP_mtpdevice_t *device;
+ LIBMTP_mtpdevice_t *device = NULL;
char *number = NULL;
mtp_device_info *device_info;
int device_id;
{
mtp_param *param = (mtp_param *)user_data;
mtp_error_e result = MTP_ERROR_NONE;
- LIBMTP_mtpdevice_t *device;
+ LIBMTP_mtpdevice_t *device = NULL;
char *version = NULL;
mtp_device_info *device_info;
int device_id;
{
mtp_param *param = (mtp_param *)user_data;
mtp_error_e result = MTP_ERROR_NONE;
- LIBMTP_mtpdevice_t *device_handle;
- mtp_device_info *device_info;
+ LIBMTP_mtpdevice_t *device_handle = NULL;
+ mtp_device_info *device_info = NULL;
int device_id;
int object_handle;
mtp_property_e property;
int property_value = 0;
- MTPObjectInfo *object_info;
+ MTPObjectInfo *object_info = NULL;
g_assert(param != NULL);
g_assert(param->object != NULL);
{
mtp_param *param = (mtp_param *)user_data;
mtp_error_e result = MTP_ERROR_NONE;
- LIBMTP_mtpdevice_t *device_handle;
- mtp_device_info *device_info;
+ LIBMTP_mtpdevice_t *device_handle = NULL;
+ mtp_device_info *device_info = NULL;
int device_id;
int object_handle;
mtp_property_e property;
char *property_value = NULL;
- MTPObjectInfo *object_info;
+ MTPObjectInfo *object_info = NULL;
g_assert(param != NULL);
g_assert(param->object != NULL);
mtp_error_e result = MTP_ERROR_NONE;
int device_id;
int storage_id;
- LIBMTP_mtpdevice_t *device;
- LIBMTP_devicestorage_t *storage;
- mtp_device_info *device_info;
+ LIBMTP_mtpdevice_t *device = NULL;
+ LIBMTP_devicestorage_t *storage = NULL;
+ mtp_device_info *device_info = NULL;
char *name = NULL;
g_assert(param != NULL);
if (storage)
name = storage->StorageDescription;
+
+ MTP_LOGI("StorageDescription: %s, storage handle: %p", name, storage);
} else {
MTP_LOGE("!!! no MTP device");
- name = strdup("No Device");
result = MTP_ERROR_NO_DEVICE;
}
- MTP_LOGI("StorageDescription: %s, storage handle: %p", name, storage);
-
mtp_gdbuslib_storageinfo_complete_get_description(param->object,
param->invocation, name, result);
mtp_error_e result = MTP_ERROR_NONE;
int device_id;
int storage_id;
- LIBMTP_mtpdevice_t *device;
- LIBMTP_devicestorage_t *storage;
- mtp_device_info *device_info;
+ LIBMTP_mtpdevice_t *device = NULL;
+ LIBMTP_devicestorage_t *storage = NULL;
+ mtp_device_info *device_info = NULL;
guint64 value = 0;
g_assert(param != NULL);
if (storage)
value = storage->FreeSpaceInBytes;
+
+ MTP_LOGI("FreeSpaceInBytes: %llu, storage handle: %p", value, storage);
} else {
MTP_LOGE("!!! no MTP device");
result = MTP_ERROR_NO_DEVICE;
}
- MTP_LOGI("FreeSpaceInBytes: %llu, storage handle: %p", value, storage);
-
mtp_gdbuslib_storageinfo_complete_get_free_space(param->object,
param->invocation, value, result);
mtp_error_e result = MTP_ERROR_NONE;
int device_id;
int storage_id;
- LIBMTP_mtpdevice_t *device;
- LIBMTP_devicestorage_t *storage;
- mtp_device_info *device_info;
+ LIBMTP_mtpdevice_t *device = NULL;
+ LIBMTP_devicestorage_t *storage = NULL;
+ mtp_device_info *device_info = NULL;
guint64 value = 0;
g_assert(param != NULL);
if (storage)
value = storage->MaxCapacity;
+
+ MTP_LOGI("MaxCapacity: %llu, storage handle: %p", value, storage);
} else {
MTP_LOGE("!!! no MTP device");
result = MTP_ERROR_NO_DEVICE;
}
- MTP_LOGI("MaxCapacity: %llu, storage handle: %p", value, storage);
-
mtp_gdbuslib_storageinfo_complete_get_max_capacity(param->object,
param->invocation, value, result);
mtp_error_e result = MTP_ERROR_NONE;
int device_id;
int storage_id;
- LIBMTP_mtpdevice_t *device;
- LIBMTP_devicestorage_t *storage;
- mtp_device_info *device_info;
+ LIBMTP_mtpdevice_t *device = NULL;
+ LIBMTP_devicestorage_t *storage = NULL;
+ mtp_device_info *device_info = NULL;
int value = 0;
g_assert(param != NULL);
if (storage)
value = storage->StorageType;
+
+ MTP_LOGI("StorageType: %d, storage handle: %p", value, storage);
} else {
MTP_LOGE("!!! no MTP device");
result = MTP_ERROR_NO_DEVICE;
}
- MTP_LOGI("StorageType: %d, storage handle: %p", value, storage);
-
mtp_gdbuslib_storageinfo_complete_get_storage_type(param->object,
param->invocation, value, result);
mtp_error_e result = MTP_ERROR_NONE;
int device_id;
int storage_id;
- LIBMTP_mtpdevice_t *device;
- LIBMTP_devicestorage_t *storage;
- mtp_device_info *device_info;
+ LIBMTP_mtpdevice_t *device = NULL;
+ LIBMTP_devicestorage_t *storage = NULL;
+ mtp_device_info *device_info = NULL;
char *name = NULL;
g_assert(param != NULL);
if (storage)
name = storage->VolumeIdentifier;
+
+ MTP_LOGI("VolumeIdentifier: %s, storage handle: %p", name, storage);
} else {
MTP_LOGE("!!! no MTP device");
- name = strdup("No Device");
result = MTP_ERROR_NO_DEVICE;
}
- MTP_LOGI("VolumeIdentifier: %s, storage handle: %p", name, storage);
-
mtp_gdbuslib_storageinfo_complete_get_volume_identifier(param->object,
param->invocation, name, result);