В новых версиях libgphoto2 в файле libgphoto2/gphoto2-list.h жестко прописано максимальное количество файлов в папке как #define MAX_ENTRIES 1024. Из-за этого ограничения получить доступ к папкам, в которых больше чем 1024 файла, невозможно - выдается ошибка ptp2(2): file_list_func(/store_00010001/DCIM/100CANON) gphoto2-list(0): gp_list_append: Tried to add more than 1024 entries to the list, reporting error. gphoto2-camera(2): Operation failed! *** Error (-8: 'Fixed limit exceeded') *** При исправлении этого числа на 8192 (или 16384, к примеру) и пересборке библиотеки количество доступных файлов значительно увеличивается. Хотелось бы увидеть это изменение в наших сборках, так как более чем 1024 файла в папке при современных объемах карт памяти скорее правило, чем исключение. Обсуждение на sf.net http://sourceforge.net/tracker/index.php?func=detail&aid=1515453&group_id=8874&atid=108874 Обсуждение на launchpad.net https://bugs.launchpad.net/ubuntu/+source/libgphoto2/+bug/144585
А у кого-нибудь из вендоров это сделано? Если да, дайте, пожалуйста, линк. Если нет, лично я не вижу смысла бежать впереди апстрима, перетаскивая фикс из нестабильной ветки разработки в стабильную, поскольку это потенциальный источник проблем. Повесил стикер на монитор, подумаю на досуге.
(В ответ на комментарий №1) > А у кого-нибудь из вендоров это сделано? > Если да, дайте, пожалуйста, линк. Да похоже у многих сделано В Федоре https://bugzilla.redhat.com/show_bug.cgi?id=454245 В Debian http://patch-tracking.debian.net/package/libgphoto2/2.4.5-1 http://patch-tracking.debian.net/patch/series/view/libgphoto2/2.4.1-3/70_increase_max_entries В Ubuntu https://launchpad.net/ubuntu/hardy/+source/libgphoto2/2.4.0-8ubuntu1
Если я правильно понял код, то MAX_ENTRIES используется в двух местах 1. Определение структуры CameraList struct _CameraList { <------>int count; <------>struct { <------><------>char name [MAX_LIST_STRING_LENGTH]; <------><------>char value [MAX_LIST_STRING_LENGTH]; <------>} entry [MAX_ENTRIES]; <------>int ref_count; }; где он собственно определяет максимальное количество элементов структуры 2. В обработчике ошибок if (list->count == MAX_ENTRIES) { gp_log (GP_LOG_ERROR, "gphoto2-list", "gp_list_append: " "Tried to add more than %d entries to the list, reporting error.", MAX_ENTRIES); return (GP_ERROR_FIXED_LIMIT_EXCEEDED); } Поэтому, как мне кажется, от увеличения размера этой структуры никому хуже стать не должно.
gphoto2-2.4.5-alt2 -> sisyphus: * Sun May 10 2009 Dmitriy Khanzhin <jinn@altlinux> 2.4.5-alt2 - increased max number of entries in the camera list (ALT #19752)
А также 2.4.5-alt1.M50.1 для бранча 5.0.