When translating a filespec starting with an extended character,
say C<+foo>, from Unix to VMS format, we were inadvertently
skipping over the first character and thus not translating it to
C<^+foo> with the caret escape prepended to the plus sign as we
should have been.
This fixes a fairly new test failure in ExtUtils::Manifest where
a filename starts with a single quote.
[...] unixify .../ ^
__lyrics_:[__are_.__very_^.__sappy_]__but_^.__rhymes_^.__are_.__true_ unixify /__lyrics_/__are_/__very_.__sappy_/__but_.__rhymes_.__are_.__true_ ^
[.$(macro)] unixify $(macro)/ ^
+^+foo.tmp unixify +foo.tmp ^
# and back again
/__some_/__where_/__over_/__the_.__rainbow_ vmsify __some_:[__where_.__over_]__the_.__rainbow_ ^
./$(m+ vmsify []$^(m^+ ^
foo-bar-0^.01/ vmsify [.foo-bar-0_01] [.foo-bar-0^.01]
\ foo.tmp vmsify ^_foo.tmp ^
++foo.tmp vmsify ^+foo.tmp ^
# Fileifying directory specs
__down_:[__the_.__garden_.__path_] fileify __down_:[__the_.__garden_]__path_.dir;1 ^
[.__down_.__the_.__garden_.__path_] fileify [.__down_.__the_.__garden_]__path_.dir;1 ^
case '|':
case '<':
case '>':
- if (cp2 > path && *(cp2-1) != '^') /* not previously escaped */
+ if (cp2 >= path && *(cp2-1) != '^') /* not previously escaped */
*(cp1++) = '^';
*(cp1++) = *(cp2++);
break;