Make Perl_vms_start_glob return the input pattern when there are
Craig A. Berry [Sat, 31 Mar 2007 19:40:43 +0000 (19:40 +0000)]
no matches.

p4raw-id: //depot/perl@30813

vms/vms.c

index f8f79f1..650db58 100644 (file)
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -11961,6 +11961,7 @@ Perl_vms_start_glob
        }
     }
     if ((tmpfp = PerlIO_tmpfile()) != NULL) {
+       int found = 0;
        Stat_t st;
        int stat_sts;
        stat_sts = PerlLIO_stat(SvPVX_const(tmpglob),&st);
@@ -11991,6 +11992,8 @@ Perl_vms_start_glob
            if (!$VMS_STATUS_SUCCESS(sts))
                break;
 
+           found++;
+
            /* with varying string, 1st word of buffer contains result length */
            rstr[rslt->length] = '\0';
 
@@ -12038,6 +12041,14 @@ Perl_vms_start_glob
            ok = (PerlIO_puts(tmpfp,begin) != EOF);
        }
        if (cxt) (void)lib$find_file_end(&cxt);
+
+       if (!found) {
+           /* Be POSIXish: return the input pattern when no matches */
+           begin = SvPVX(tmpglob);
+           strcat(begin,"\n");
+           ok = (PerlIO_puts(tmpfp,begin) != EOF);
+       }
+
        if (ok && sts != RMS$_NMF &&
            sts != RMS$_DNF && sts != RMS_FNF) ok = 0;
        if (!ok) {