Re: [PATCH v3] send-email: recognize absolute path on Windows
On Tue, Apr 22, 2014 at 6:50 PM, Junio C Hamano gits...@pobox.com wrote: Erik Faye-Lund kusmab...@gmail.com writes: Shouldn't the latter also be anchored at the beginning of the string with a leading ^? +} + +require File::Spec::Functions; +return File::Spec::Functions::file_name_is_absolute($path); We already use File::Spec qw(something else) at the beginning, no? Why not throw file_name_is_absolute into that qw() instead? Ahh, OK, if you did so, you won't have any place to hook the only on msys do this trick into. It somehow feels somewhat confusing that we define a sub with the same name as the system one, while not overriding it entirely but delegate back to the system one. I am debating myself if it is more obvious if it is done this way: use File::Spec::Functions qw(file_name_is_absolute); if ($^O eq 'msys') { sub file_name_is_absolute { return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i; } } In this case, we end up requiring that module even when we end up using it, no? Also somebody earlier mentioned that we would be redefining, which has a different kind of ugliness, so I'd agree with the code structure of what you sent out (which has been queued on 'pu'). My earlier question don't we want to make sure 'C:' is at the betginning of the string? still stands, though. I do not think I futzed with your regexp in the version I queued on 'pu'. Ah, yes of course. Thanks for spotting that. I also like the other clean-ups you did to the regex (above). -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3] send-email: recognize absolute path on Windows
On Wed, Apr 16, 2014 at 7:19 PM, Junio C Hamano gits...@pobox.com wrote: Junio C Hamano gits...@pobox.com writes: Erik Faye-Lund kusmab...@gmail.com writes: So let's manually check for these in that case, and fall back to the File::Spec-helper on other platforms (e.g Win32 with native Perl) ... +sub file_name_is_absolute { +my ($path) = @_; + +# msys does not grok DOS drive-prefixes +if ($^O eq 'msys') { +return ($path =~ m#^/# || $path =~ m#[a-zA-Z]\:#) Shouldn't the latter also be anchored at the beginning of the string with a leading ^? +} + +require File::Spec::Functions; +return File::Spec::Functions::file_name_is_absolute($path); We already use File::Spec qw(something else) at the beginning, no? Why not throw file_name_is_absolute into that qw() instead? Ahh, OK, if you did so, you won't have any place to hook the only on msys do this trick into. It somehow feels somewhat confusing that we define a sub with the same name as the system one, while not overriding it entirely but delegate back to the system one. I am debating myself if it is more obvious if it is done this way: use File::Spec::Functions qw(file_name_is_absolute); if ($^O eq 'msys') { sub file_name_is_absolute { return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i; } } In this case, we end up requiring that module even when we end up using it, no? Not that I have very strong objections for doing just that, after all, it appears to be built-in. (As you might understand from this message, my perl-fu is really lacking :-P) -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3] send-email: recognize absolute path on Windows
Erik Faye-Lund kusmab...@gmail.com writes: Shouldn't the latter also be anchored at the beginning of the string with a leading ^? +} + +require File::Spec::Functions; +return File::Spec::Functions::file_name_is_absolute($path); We already use File::Spec qw(something else) at the beginning, no? Why not throw file_name_is_absolute into that qw() instead? Ahh, OK, if you did so, you won't have any place to hook the only on msys do this trick into. It somehow feels somewhat confusing that we define a sub with the same name as the system one, while not overriding it entirely but delegate back to the system one. I am debating myself if it is more obvious if it is done this way: use File::Spec::Functions qw(file_name_is_absolute); if ($^O eq 'msys') { sub file_name_is_absolute { return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i; } } In this case, we end up requiring that module even when we end up using it, no? Also somebody earlier mentioned that we would be redefining, which has a different kind of ugliness, so I'd agree with the code structure of what you sent out (which has been queued on 'pu'). My earlier question don't we want to make sure 'C:' is at the betginning of the string? still stands, though. I do not think I futzed with your regexp in the version I queued on 'pu'. Thanks. -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v3] send-email: recognize absolute path on Windows
From: Erik Faye-Lund kusmab...@googlemail.com On Windows, absolute paths might start with a DOS drive prefix, which these two checks failed to recognize. Unfortunately, we cannot simply use the file_name_is_absolute helper in File::Spec::Functions, because Git for Windows has an MSYS-based Perl, where this helper doesn't grok DOS drive-prefixes. So let's manually check for these in that case, and fall back to the File::Spec-helper on other platforms (e.g Win32 with native Perl) Signed-off-by: Erik Faye-Lund kusmab...@gmail.com --- So here's a version that does the old and long-time tested approach without requiring breaking changes to msysGit's perl. git-send-email.perl | 16 ++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/git-send-email.perl b/git-send-email.perl index fdb0029..8f5f986 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1113,6 +1113,18 @@ sub ssl_verify_params { } } +sub file_name_is_absolute { + my ($path) = @_; + + # msys does not grok DOS drive-prefixes + if ($^O eq 'msys') { + return ($path =~ m#^/# || $path =~ m#[a-zA-Z]\:#) + } + + require File::Spec::Functions; + return File::Spec::Functions::file_name_is_absolute($path); +} + # Returns 1 if the message was sent, and 0 otherwise. # In actuality, the whole program dies when there # is an error sending a message. @@ -1197,7 +1209,7 @@ X-Mailer: git-send-email $gitversion if ($dry_run) { # We don't want to send the email. - } elsif ($smtp_server =~ m#^/#) { + } elsif (file_name_is_absolute($smtp_server)) { my $pid = open my $sm, '|-'; defined $pid or die $!; if (!$pid) { @@ -1271,7 +1283,7 @@ X-Mailer: git-send-email $gitversion printf (($dry_run ? Dry- : ).Sent %s\n, $subject); } else { print (($dry_run ? Dry- : ).OK. Log says:\n); - if ($smtp_server !~ m#^/#) { + if (!file_name_is_absolute($smtp_server)) { print Server: $smtp_server\n; print MAIL FROM:$raw_from\n; foreach my $entry (@recipients) { -- 1.9.0.msysgit.0 -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3] send-email: recognize absolute path on Windows
On Wed, Apr 16, 2014 at 10:19:54AM -0700, Junio C Hamano wrote: Ahh, OK, if you did so, you won't have any place to hook the only on msys do this trick into. It somehow feels somewhat confusing that we define a sub with the same name as the system one, while not overriding it entirely but delegate back to the system one. I am debating myself if it is more obvious if it is done this way: use File::Spec::Functions qw(file_name_is_absolute); if ($^O eq 'msys') { You would probably want a no warnings 'redefine' here as well. sub file_name_is_absolute { return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i; } } -- brian m. carlson / brian with sandals: Houston, Texas, US +1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187 signature.asc Description: Digital signature