Ho un'applicazione costruita con l'MinGW compilatore C++ che funziona qualcosa come grep - acommand simile a questa:Globbing con MinGW su Windows
myapp -e '.*' *.txt
dove la cosa che viene dopo lo switch -e è un'espressione regolare e la cosa dopo è il pattern del nome del file. Sembra che MinGW espanda automaticamente (glob in termini UNIX) la riga di comando in modo che la mia regex venga alterata. Ho potuto disattivare questo comportamento, ho scoperto, impostando la variabile globale _CRT_glob
a zero. Questo andrà bene per gli utenti di shell bash e altri sensibili, in quanto la shell espanderà il pattern del file. Per gli utenti di MS cmd.exe
, tuttavia, sembra che dovrò espandere il modello di file da solo.
Quindi la mia domanda: qualcuno sa di una biblioteca (o di una struttura in MinGW) per fare l'espansione della riga di comando parziale parziale? Sono a conoscenza della funzionalità _setargv di Windows CRT, ma che espande l'intera riga di comando. Si prega di notare che ho visto this question, ma in realtà non affronta l'espansione parziale.
Ho finito con la compilazione condizionale per scrivere il mio codice globbing per la versione Windows della mia app. Questo è stato abbastanza facile in quanto ho la mia classe CommandLine che incapsula argc e argv da main(). Tuttavia, sarei interessato a conoscere altre soluzioni.
Strano, mettere le virgolette attorno alla tua espressione regolare dovrebbe impedire il comportamento di globbing. –
@Brian Impedisce il globbing del guscio (ad esempio bash), ma bash rimuove le virgolette e passa alla mia app che poi fa un altro giro di globbing. –
Credo di non seguirmi allora. Se la tua app ottiene '. *' In argc/argv, qual è il problema? –