Глобинг с MinGW на Windows - PullRequest
10 голосов
/ 01 июня 2010

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

myapp -e '.*' *.txt

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

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

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

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

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

0 голосов
/ 19 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...