The patch below was proposed by Jon Davies here: http://lists.infradead.org/pipermail/get_iplayer/2011-February/000803.html
I tested on Windows and determined that - as Jon suggested - File::Spec->rel2abs() would work on all platforms for sanitising the output directory path, so I have changed his code accordingly. It also appears that Cwd::abs_path() (used on Linux/OSX for sanitising) behaves slightly differently on Windows, so it seems like a good idea to rationalise here. The credit for this is Jon's, but if it breaks on your machine, the blame is mine. Updated get_iplayer script is here: https://github.com/dinkypumpkin/get_iplayer/raw/patched/get_iplayer Commit history here: https://github.com/dinkypumpkin/get_iplayer/commits/patched/ Patch follows - get_iplayer uses Cwd::abs_path() to sanitise the output directory, but this returns undef if the path doesn't exist. This patch substitutes Cwd::abs_path() with File::Spec->rel2abs(), which does something similar, but successfully returns a path even if it doesn't exist yet. File::Spec->rel2abs() works in Windows, so there is no longer a need for OS-specific sanitising of the output directory. --- get_iplayer | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) diff --git a/get_iplayer b/get_iplayer index 311ddaf..81d6dea 100755 --- a/get_iplayer +++ b/get_iplayer @@ -54,6 +54,7 @@ use Fcntl; use File::Copy; use File::Path; use File::stat; +use File::Spec; use Getopt::Long; use HTML::Entities; use HTTP::Cookies; @@ -4584,11 +4585,7 @@ sub generate_filenames { } # Determine direcotry and find it's absolute path - if ( $^O !~ /^MSWin32$/ ) { - $prog->{dir} = abs_path( $opt->{ 'output'.$prog->{type} } || $opt->{output} || $ENV{IPLAYER_OUTDIR} || '.' ); - } else { - $prog->{dir} = $opt->{ 'output'.$prog->{type} } || $opt->{output} || $ENV{IPLAYER_OUTDIR} || '.'; - } + $prog->{dir} = File::Spec->rel2abs( $opt->{ 'output'.$prog->{type} } || $opt->{output} || $ENV{IPLAYER_OUTDIR} || '.' ); # Add modename to default format string if multimode option is used $format .= ' <mode>' if $opt->{multimode}; -- 1.7.4.3 _______________________________________________ get_iplayer mailing list [email protected] http://lists.infradead.org/mailman/listinfo/get_iplayer

