From: Jarkko Hietaniemi Date: Wed, 10 Oct 2001 11:28:44 +0000 (+0000) Subject: Unix and VMS agree on "*" as a "match any number of any chars" X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a3987cb85d43c4b5e6f04382a9391c4ec5aa26ad;p=p5sagit%2Fp5-mst-13.2.git Unix and VMS agree on "*" as a "match any number of any chars" wildcards, but differ ("?" vs. "%") for their "match any single char" wildcard. This patch changes "?" chars to "%" before doing a VMS glob...at no loss of functionality, since "?" isn't a valid filename char on VMS. From Charles Lane. p4raw-id: //depot/perl@12388 --- diff --git a/doio.c b/doio.c index 0309e2a..ebcd071 100644 --- a/doio.c +++ b/doio.c @@ -2195,6 +2195,8 @@ Perl_start_glob (pTHX_ SV *tmpglob, IO *io) ok = ((wilddsc.dsc$a_pointer = tovmspath(SvPVX(tmpglob),vmsspec)) != NULL); else ok = ((wilddsc.dsc$a_pointer = tovmsspec(SvPVX(tmpglob),vmsspec)) != NULL); if (ok) wilddsc.dsc$w_length = (unsigned short int) strlen(wilddsc.dsc$a_pointer); + for (cp=wilddsc.dsc$a_pointer; ok && cp && *cp; cp++) + if (*cp == '?') *cp = '%'; /* VMS style single-char wildcard */ while (ok && ((sts = lib$find_file(&wilddsc,&rsdsc,&cxt, &dfltdsc,NULL,NULL,NULL))&1)) { end = rstr + (unsigned long int) *rslt;