2012-04-01 2 views
3

Есть ли какая-либо библиотека с открытым исходным кодом с открытым исходным кодом, которая поддерживает все следующие?Лонг-и многоформатная библиотека манипулирования путями?

  • Неограниченная длина пути (т.е. единственное ограничение должно быть в пределах от size_t, не произвольных ограничений, такие как 256 символов)

  • Основные манипуляция, как канонизации, эквивалент basename, dirname, получая расширение файла, получение корня и т. д.

  • Все действительные пути и имена файлов в стиле Windows, такие как в \Rooted, Dir/, C:\Dir/foo, File, \\Computer\Dir/File, \\.\C:, Foo\./.\Bar:ADS или \\?\C:\Dir\Escaped:ADS:$DATA

    • Я считаю, что это должно также охватывать пути POSIX-стиле, но если нет, то те должны работать слишком

Я бы предпочел C++, но C тоже отлично.

+0

Ну, определенно * не * boost.filesystem. Он работает на очень синтаксическом уровне и предполагает, что синтаксис пути близок к POSIX (например, расширение от последней точки до конца строки) ... – ybungalobill

+0

@ybungalobill: Действительно, Boost не работает. Но для вашего конкретного примера: * Не * расширение от последней точки до конца строки? Или вы имеете в виду, что это не потому, что он не учитывает пути, такие как '\ .foo'? – Mehrdad

+3

Я думаю, что вы слишком много просите, если не хотите, чтобы он был специфичным для Windows. Например, в большинстве систем слишком длинные пути не используются непосредственно, период. Для достижения целевого файла вам нужно вручную 'chdir' или использовать' openat' несколько раз. Поэтому, даже если библиотека не имела ограничений, пути, которые она вернула, малопригодны. Кроме того, в системах, отличных от Windows, файлы не имеют канонических имен (POSIX имеет жесткие ссылки) ... –

ответ