Глобус с MinGW в Windows

У меня есть приложение, созданное с помощью компилятора MinGW С++, который работает как grep-acommand, выглядит примерно так:

myapp -e '.*' *.txt

где вещь, которая приходит после ключа -e, представляет собой регулярное выражение, а после этого - шаблон имени файла. Кажется, что MinGW автоматически расширяет (globs в терминах UNIX) командную строку, поэтому мое регулярное выражение получает искалеченное. Я могу отключить это поведение, установив глобальную переменную _CRT_glob равной нулю. Это будет хорошо для bash и других разумных пользователей оболочки, так как оболочка расширит шаблон файла. Тем не менее, для пользователей MS cmd.exe мне кажется, что мне придется сам развернуть шаблон файла.

Итак, мой вопрос: кто-нибудь знает библиотеку globbing (или средство в MinGW) для расширения командной строки partial? Я знаю о функции _setargv для Windows CRT, но это расширяет полную командную строку. Обратите внимание, что я видел этот вопрос, но на самом деле это не касается частичного расширения.

Я закончил использование условной компиляции, чтобы написать свой собственный код подстановки для Windows-версии моего приложения. Это было довольно легко, так как у меня есть собственный класс CommandLine, который инкапсулирует argc и argv из main(). Тем не менее, мне было бы интересно узнать о других решениях.

Ответ 1

<glob.h> имеет glob и globfree и много флагов для glob.

Ответ 2

Я не уверен, что я полностью понимаю вашу проблему здесь, но в Windows вы сможете глотать функции FindFirstFile/FindNextFile из WIN32 API. Честно говоря, я не знаю, сопоставимы ли их возможности глобализации с glob(), но вы можете попробовать попробовать.