yop,

Quand on fait un programme en ligne de commande, et qu'on le veut portable (principalement nux et win, quoi), comment on fait pour gérer les wildcards ?

En fait, l'expansion de nux me convient très bien.
Par contre, pour Windows, on se tape tout le travail à la main, comment font les programmes ? Il y a une lib pour ça ?
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Il y a des APIs pour obtenir les fichiers correspondant à un wildcard, par exemple : https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx

Ça ne m'étonnerait pas qu'il existe aussi des libs open-source déjà faites pour ça.
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
Evidemment, ce n'est pas portable, mais ça a le mérite d'exister. smile
Donc le problème peut se résoudre avec de la compilation conditionnelle, ou une lib comme tu dis.
Merci beaucoup. smile
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Tu veux vraiment gérer l'expansion dans ton programme, quand ça n'est pas fourni par le shell ? Certes c'est un peu la solution de facilité, mais * & co sont des fonctionnalités proposées par le shell, et perso je ne m'attends pas à les avoir quand je suis sous Windows (ou alors si c'est ça que je veux, j'utilise un shell sous Windows par exemple Cygwin ou bien un portage natif).

En fait ça me semble même presque dangereux que le programme prenne la décision, parce qu'il tourne sous Windows, de faire une expansion. Si j'exécute le programme via Cygwin et que je fais ./programme '*' alors c'est que je veux lui passer en argument le caractère *, et je ne veux surtout pas qu'il tente de le transformer en pensant que c'est la bonne chose à faire.
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Ça dépend du genre de programme, je dirais.

Si c'est un programme pour lequel il est habituel de traiter plusieurs fichiers d'un coup (exemple : un utilitaire de conversion de format), pour moi c'est souhaitable de gérer les wildcards ; et en tant qu'utilisateur Windows, j'irais pas installer Cygwin juste pour ça.

Quant à ton exemple de '*', vu que sous Windows les caractères de wildcard ne sont pas valides dans les noms de fichiers, ça me semble normal qu'ils soient toujours interprétés comme des wildcards (ou rejetés si le programme ne gère pas l'expansion). En fait ça ne pose problème que si le programme accepte indifféremment des noms de fichiers et autre chose comme argument.
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo
./5: Installe mobaxterm ( http://mobaxterm.mobatek.net/ ) . C'est bien plus rapide à installer que cygwin (et peut être utilisé sans install).
Merci bien pour le lien. smile
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
sick C'est du crippleware:
Max. 12 sessions
Max. 2 SSH tunnels
Max. 4 macrosMax. 360 seconds for Tftp, Nfs and Cron
(et une version payante illimitée), et en gros ils revendent le travail d'autrui.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Kevin Kofler (./8) :
sick C'est du crippleware:
Max. 12 sessions
Max. 2 SSH tunnels
Max. 4 macrosMax. 360 seconds for Tftp, Nfs and Cron
(et une version payante illimitée), et en gros ils revendent le travail d'autrui.

Et RHEL c'est pas un peu payant?
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Mais CentOS n'est pas un crippleware de ce style.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité