Что limits.h? В разных файловых системах максимальная длина пути разная. Ты монтируешь в /media/ какую-то файловую систему, где длина пути не ограничена и твоя программа не работает.
Вот пусть подмонтированая система и возвращает ошибку - это ее прямая обязанность проверять валидность пути. А твоей программе должно быть фиолетово, какая длина пути и файла.
linux/limits.h:#define PATH_MAX 4096 /* # chars in a path name including nul */
Я про то, что нам, пользователям, нужно самоограничиться! А то вдруг придёт сосед с кассетой с ФС DECTape, а мы ему фильм не можем скопировать, т.к. у файла имя длиннее 6 символов.