Не ответ, но слишком длинный для комментария.
Здесь возникает ошибка:
mdb->f->filename = (char *) mdb_find_file(filename);
if (!mdb->f->filename) {.
fprintf(stderr, "Can't alloc filename\n");
Итак, посмотрим, что делает mdb_find_file ...
Увидев начало функции, это, вероятно, то, что не удается:
while (dir[i]) {
if (!strlen(dir[i])) continue;
tmpfname = g_strconcat(dir[i++], "/", file_name, NULL);
if (!stat(tmpfname, &status)) {
g_strfreev(dir);
return tmpfname;
}
g_free(tmpfname);
}
g_strfreev(dir);
return NULL;
Функция возвращает NULL, поэтому сбой позже.
It похоже, что он говорит нам, что он не может найти имя файла.
Вы пытались использовать полный путь? Вы пытались использовать UNC-путь? Вы пытались использовать путь smb://?