This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: example needed pls: `cygpath -c <HANDLE>'

Soren A wrote:

> I am trying to finish a test script that uses ActivePerl to call `cygpath`
> from itself (a system call, by open()-ing a pipe to capture the output of
> the tool ...
>   {... stuff ...}
>   open(CTH, '-|', "C:/cygwin/bin/cygpath $MS_path_filename")
>     or die "Could not open() call to 'cygpath', what is up?";
>   $cygstyle_path = <CTH>;
>   chomp $cygstyle_path;
>   {... stuff ...}

If $MS_path_filename is indeed a regular Windows filename (with
backslashes) you will need to either use quotemeta() or s!\\!/!g because
singular backslashes will be removed during interpolation.

my $foo = quotemeta($MS_path_filename);
chomp (my $cygpath = chomp `cygpath -u $foo`);
# now $cygpath should be usable

Here's a little thing I cooked up that I find very useful, I call it
dodos.  It lets you run any DOS/Windows program and call it with unix
arguments.  For example, you could type "dodos notepad /etc/aliases" or
"dodos notepad /etc/hosts.*" and you'd get what you expect.

#!/usr/bin/perl -w

my @newargs = $ARGV[0];

foreach my $arg (@ARGV[1..$#ARGV]) {
        my $foo = quotemeta($arg);
        $foo = `cygpath -wsa $foo 2>/dev/null`;
        chomp $foo;
        push @newargs, $foo;

exec @newargs;


Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]